From: Adam Liwo Date: Mon, 18 Jun 2012 14:08:46 +0000 (-0400) Subject: Merge branch 'devel' of mmka.chem.univ.gda.pl:unres into devel X-Git-Tag: v.3.2~80^2~10 X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=commitdiff_plain;h=52187c9365594597457799445140ea830f1141a3;hp=951f0fe4ce7a66542c398754524d8ae3d9b5dc5a;p=unres.git Merge branch 'devel' of mmka.chem.univ.gda.pl:unres into devel merge adam->devel (2nd attempt) Conflicts: .gitignore bin/unres/MD/unres_ifort_MPICH_GAB.exe examples/unres/MD/ff_gab/1L2Y_minim.inp source/cluster/wham/src/DIMENSIONS.COMPAR source/cluster/wham/src/include_unres/COMMON.INTERACT source/cluster/wham/src/include_unres/COMMON.SBRIDGE source/cluster/wham/src/include_unres/COMMON.TORSION source/unres/src_MD/cinfo.f source/unres/src_MIN/Makefile source/xdrfpdb/src-M/xdrf source/xdrfpdb/src/xdrf source/xdrfpdb/src/xdrf2ang.f source/xdrfpdb/src/xdrf2pdb-m.F --- diff --git a/.gitignore b/.gitignore index 45bb905..4c3f4f2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,24 @@ +<<<<<<< HEAD *.[oa] *~ *.swp *.[eo][0-9][0-9][0-9][0-9]* +======= +# ignore compiled stuff +*.[oa] + +# ignore texteditors +*.swp +*~ + + +# ignore build dir +build/ + +# ignored dirs form adasko +gradcheck/ +mapcheck/ +run/ +sympcheck/ + +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 631ddb6..5180752 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,29 +2,189 @@ # CMake project file for UNRES # cmake_minimum_required(VERSION 2.8) + +project(UNRESPACK Fortran C) -project(unrespack C Fortran) set(UNRES_MAJOR 3) set(UNRES_MINOR 1) set(UNRES_PATCH 0) -set(UNRES_VERSION ${SIMPLE_MAJOR}.${SIMPLE_MINOR}.${SIMPLE_PATCH}) +set(UNRES_VERSION ${UNRES_MAJOR}.${UNRES_MINOR}.${UNRES_PATCH}) + +#====================================== +# CTest stuff +#====================================== + +include(CTest) +enable_testing() + +# Set makefile verbose on +set( CMAKE_VERBOSE_MAKEFILE 1 ) -enable_language (Fortran) +#====================================== +# Fortran compilers stuff +#====================================== +# Get the compiler name +get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME) +# Altough cmake enables you to set some compiler definitions it seems by default they are ignored. +# This is a workaround to pass compiler definitions (preprocesor flags) to fortran compilers like ifort +SET(CMAKE_Fortran_COMPILE_OBJECT " ${CMAKE_START_TEMP_FILE} -c -o ${CMAKE_END_TEMP_FILE}") +#set(CPPFLAGS "-DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +#add_definitions( ${CPPFLAGS} ) + + # make sure that the default is a RELEASE if (NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE RELEASE CACHE STRING - "Choose the type of build, options are: None Debug Release." - FORCE) + set (CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: None Debug Release." FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "None" "Debug" "Release" ) endif (NOT CMAKE_BUILD_TYPE) + +#======================================= +# Set the varous build variables +#======================================= - -# Set the force field +# Set force field if (NOT UNRES_FF) - set(UNRES_FF "GAB" "E0LL2Y" CACHE STRING "Choose the force field, options are: GAB E0LL2Y " ) - #message ( "Please set the Force field (UNRES_FF) to : GAB, 0ELE" ) + set(UNRES_MD_FF "GAB" CACHE STRING "Choose the force field, options are: GAB E0LL2Y" ) + set_property(CACHE UNRES_MD_FF PROPERTY STRINGS "GAB" "E0LL2Y") endif (NOT UNRES_FF) -add_subdirectory(source) - +# Set CSA version force field +if (NOT UNRES_CSA_FF) + set(UNRES_CSA_FF "4P" CACHE STRING "Choose the CSA version force field, options are: CASP3 ALPHA BETA ALPHABETA CASP5 3P 4P" ) + set_property(CACHE UNRES_CSA_FF PROPERTY STRINGS "CASP3" "ALPHA" "BETA" "ALPHABETA" "CASP5" "3P" "4P" ) +endif (NOT UNRES_CSA_FF) + +# Use of MPI library (default ON) +option(UNRES_WITH_MPI "Choose whether or not to use MPI library" ON ) + + +# Piasek cluster devel stuff +option(UNRES_NA_MMCE "Kompilujemy na mmmce?" OFF ) + + +#================================= +# MPI stuff +#================================= + +# Note for the future - use finde package to get MPI +find_package(MPI) + +#if(MPI_LIBRARY) + +#MPI_INCLUDE_PATH + + +if(MPIF_LOCAL_DIR) + find_library(MPIF_LIBRARY NAMES libmpich.a NO_DEFAULT_PATH PATHS ${MPIF_LOCAL_DIR}/lib) + find_path( MPIF_INCLUDE_DIRECTORIES NAMES mpif.h NO_DEFAULT_PATH PATHS ${MPIF_LOCAL_DIR}/include ) +else(MPIF_LOCAL_DIR) + find_library(MPIF_LIBRARY NAMES mpi mpich PATHS + ${MPI_LIBRARY} + ${MPI_EXTRA_LIBRARY} + /users/local/mpi64/mpich-1.2.7p1/lib + /usr/lib + /usr/local/lib + /usr/local/mpi/lib + ) + find_path( MPIF_INCLUDE_DIRECTORIES NAMES mpif.h PATHS + ${MPI_INCLUDE_PATH} + /users/local/mpi64/mpich-1.2.7p1/include + /usr/include + /usr/local/include + /usr/include/mpi + /usr/local/mpi/include + ) +endif(MPIF_LOCAL_DIR) + +set( MPIF_LIBRARIES ${MPIF_LIBRARY}) + +if ( MPIF_INCLUDE_DIRECTORIES ) + set( MPIF_FOUND TRUE ) + message("MPI found") +else ( MPIF_INCLUDE_DIRECTORIES ) + set( MPIF_FOUND FALSE ) + message("MPI not found - disabling MPI compile flags ") + set ( UNRES_WITH_MPI "OFF") +endif ( MPIF_INCLUDE_DIRECTORIES ) + +if (MPIF_FOUND) + message("MPIF_LIBRARIES=${MPIF_LIBRARY}") + message("MPIF_INCLUDE_DIRECTORIES=${MPIF_INCLUDE_DIRECTORIES}" ) +endif(MPIF_FOUND) + + + +#====================================== +# Detect system architecture +#======================================= + +if( CMAKE_SIZEOF_VOID_P EQUAL 4 ) + set(architektura "32") +else (CMAKE_SIZEOF_VOID_P EQUAL 4) + set(architektura "64") +endif( CMAKE_SIZEOF_VOID_P EQUAL 4 ) + +message("Detected ${architektura}-bit architecture") + +#======================================= +# Find other libraries +#======================================= + +# used by unres/src_MIN +find_package (Threads) + + + +#======================================= +# Create diractories for build targets +#======================================= +#execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/bin/unres/MD ) + +#======================================= +# Add source files +#======================================= + + +add_subdirectory(source/lib/xdrf) + + +if(UNRES_NA_MMCE) + + if(UNRES_WITH_MPI) + # Brak MPI dla gfortrana, wiec tylko na ifort sie skompiluje + if (Fortran_COMPILER_NAME STREQUAL "ifort") + add_subdirectory(source/unres/src_MD) + add_subdirectory(source/unres/src_MD-M) + add_subdirectory(source/unres/src_CSA) + add_subdirectory(source/cluster/wham/src) + add_subdirectory(source/cluster/wham/src-M) + endif (Fortran_COMPILER_NAME STREQUAL "ifort") + else() + add_subdirectory(source/unres/src_MD) + # src_MD-M doesn't work yet witout MPI + # add_subdirectory(source/unres/src_MD-M) + endif() + add_subdirectory(source/unres/src_MIN) + add_subdirectory(source/cluster/unres/src) + add_subdirectory(source/xdrfpdb/src) + add_subdirectory(source/xdrfpdb/src-M) + +else() + + add_subdirectory(source/unres/src_MD) + if(UNRES_WITH_MPI) + add_subdirectory(source/unres/src_MD-M) + add_subdirectory(source/unres/src_CSA) + add_subdirectory(source/wham/src) + add_subdirectory(source/wham/src-M) + add_subdirectory(source/cluster/wham/src) + add_subdirectory(source/cluster/wham/src-M) + endif(UNRES_WITH_MPI) + add_subdirectory(source/unres/src_MIN) + add_subdirectory(source/cluster/unres/src) + add_subdirectory(source/xdrfpdb/src) + add_subdirectory(source/xdrfpdb/src-M) + +endif(UNRES_NA_MMCE) diff --git a/PARAM/1igd.cart~ b/PARAM/1igd.cart~ deleted file mode 100644 index 62f815b..0000000 --- a/PARAM/1igd.cart~ +++ /dev/null @@ -1,61 +0,0 @@ -ATOM 2 CA MET 1 1.504 3.440 5.674 1.00 9.28 1IGD 119 -ATOM 10 CA THR 2 0.874 7.070 6.635 1.00 12.11 1IGD 127 -ATOM 17 CA PRO 3 4.095 8.990 7.462 1.00 10.61 1IGD 134 -ATOM 24 CA ALA 4 5.217 9.211 11.085 1.00 11.96 1IGD 141 -ATOM 29 CA VAL 5 4.507 12.752 12.313 1.00 12.02 1IGD 146 -ATOM 36 CA THR 6 6.073 14.501 15.282 1.00 9.37 1IGD 153 -ATOM 43 CA THR 7 4.600 17.292 17.383 1.00 7.26 1IGD 160 -ATOM 50 CA TYR 8 7.006 20.232 17.534 1.00 5.67 1IGD 167 -ATOM 62 CA LYS 9 6.690 23.052 20.037 1.00 5.25 1IGD 179 -ATOM 71 CA LEU 10 7.444 26.753 19.641 1.00 4.92 1IGD 188 -ATOM 79 CA VAL 11 8.253 28.823 22.735 1.00 4.74 1IGD 196 -ATOM 86 CA ILE 12 7.702 32.483 21.877 1.00 6.55 1IGD 203 -ATOM 94 CA ASN 13 9.277 35.307 23.868 1.00 11.08 1IGD 211 -ATOM 102 CA GLY 14 8.171 38.243 21.680 1.00 10.70 1IGD 219 -ATOM 106 CA LYS 15 7.722 41.895 22.494 1.00 13.87 1IGD 223 -ATOM 115 CA THR 16 3.965 41.592 22.218 1.00 10.83 1IGD 232 -ATOM 122 CA LEU 17 3.298 37.895 21.552 1.00 7.46 1IGD 239 -ATOM 130 CA LYS 18 4.253 35.392 24.224 1.00 6.02 1IGD 247 -ATOM 139 CA GLY 19 3.525 31.772 25.017 1.00 5.14 1IGD 256 -ATOM 143 CA GLU 20 3.687 28.508 23.161 1.00 4.57 1IGD 260 -ATOM 152 CA THR 21 2.162 26.919 20.099 1.00 5.79 1IGD 269 -ATOM 159 CA THR 22 2.646 23.609 18.294 1.00 5.73 1IGD 276 -ATOM 166 CA THR 23 2.651 22.082 14.854 1.00 6.63 1IGD 283 -ATOM 173 CA LYS 24 2.813 18.533 13.499 1.00 8.78 1IGD 290 -ATOM 182 CA ALA 25 5.323 17.635 10.791 1.00 8.12 1IGD 299 -ATOM 187 CA VAL 26 7.228 14.757 9.285 1.00 9.17 1IGD 304 -ATOM 194 CA ASP 27 10.610 16.449 9.979 1.00 8.29 1IGD 311 -ATOM 202 CA ALA 28 12.101 19.437 11.758 1.00 7.92 1IGD 319 -ATOM 207 CA GLU 29 12.698 21.484 8.624 1.00 8.29 1IGD 324 -ATOM 216 CA THR 30 8.984 21.368 7.765 1.00 8.62 1IGD 333 -ATOM 223 CA ALA 31 8.081 22.391 11.323 1.00 7.76 1IGD 340 -ATOM 228 CA GLU 32 10.660 25.207 11.172 1.00 7.49 1IGD 345 -ATOM 237 CA LYS 33 9.109 26.607 7.993 1.00 8.72 1IGD 354 -ATOM 246 CA ALA 34 5.619 26.568 9.590 1.00 8.52 1IGD 363 -ATOM 251 CA PHE 35 6.902 28.312 12.731 1.00 5.83 1IGD 368 -ATOM 262 CA LYS 36 8.924 30.912 10.795 1.00 8.04 1IGD 379 -ATOM 271 CA GLN 37 5.761 31.631 8.723 1.00 8.49 1IGD 388 -ATOM 280 CA TYR 38 3.715 31.964 11.939 1.00 6.97 1IGD 397 -ATOM 292 CA ALA 39 6.302 34.348 13.425 1.00 7.52 1IGD 409 -ATOM 297 CA ASN 40 6.334 36.406 10.194 1.00 10.58 1IGD 414 -ATOM 305 CA ASP 41 2.518 36.467 10.103 1.00 10.70 1IGD 422 -ATOM 313 CA ASN 42 2.509 37.865 13.676 1.00 8.19 1IGD 430 -ATOM 321 CA GLY 43 5.294 40.417 13.141 1.00 12.66 1IGD 438 -ATOM 325 CA VAL 44 7.868 38.587 15.321 1.00 10.80 1IGD 442 -ATOM 332 CA ASP 45 11.491 39.241 14.239 1.00 13.78 1IGD 449 -ATOM 340 CA GLY 46 13.803 37.441 16.684 1.00 10.92 1IGD 457 -ATOM 344 CA VAL 47 16.613 34.921 17.021 1.00 6.35 1IGD 461 -ATOM 351 CA TRP 48 15.962 31.210 17.099 1.00 5.23 1IGD 468 -ATOM 365 CA THR 49 17.087 27.992 18.645 1.00 5.24 1IGD 482 -ATOM 372 CA TYR 50 16.092 24.419 17.890 1.00 5.26 1IGD 489 -ATOM 384 CA ASP 51 16.668 21.546 20.354 1.00 6.92 1IGD 501 -ATOM 392 CA ASP 52 16.351 18.192 18.597 1.00 8.34 1IGD 509 -ATOM 400 CA ALA 53 16.176 16.397 21.979 1.00 14.44 1IGD 517 -ATOM 405 CA THR 54 12.898 18.078 22.954 1.00 8.53 1IGD 522 -ATOM 412 CA LYS 55 11.639 18.921 19.437 1.00 7.33 1IGD 529 -ATOM 421 CA THR 56 11.328 22.535 20.573 1.00 5.13 1IGD 538 -ATOM 428 CA PHE 57 12.045 25.743 18.732 1.00 4.37 1IGD 545 -ATOM 439 CA THR 58 12.395 28.995 20.670 1.00 5.03 1IGD 556 -ATOM 446 CA VAL 59 12.220 32.534 19.296 1.00 5.94 1IGD 563 -ATOM 453 CA THR 60 13.100 35.625 21.294 1.00 6.83 1IGD 570 -ATOM 460 CA GLU 61 12.905 39.298 20.415 1.00 9.61 1IGD 577 diff --git a/PARAM/sccor_pdb_shelly.dat b/PARAM/sccor_pdb_shelly.dat new file mode 100644 index 0000000..39aae2c --- /dev/null +++ b/PARAM/sccor_pdb_shelly.dat @@ -0,0 +1,527 @@ +5 *** Parameters derived by pdb statistical analysis by Shelly Rackovsky *** +4 4 4 4 4 4 4 4 3 1 3 3 3 2 3 2 3 3 3 5 +6 0 *********** SCCC-Gly-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCC-Gly-Asp + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCC-Gly-Ala + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCC-Gly-Cys + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCC-Gly-Pro + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCC-Asp-Gly + 1 -2.33674E-01 -5.31358E-01 + 2 -4.88897E-01 -6.34765E-01 + 3 -2.68667E-01 5.10088E-02 + 4 -2.48344E-01 -2.04530E-01 + 5 7.81149E-02 -9.89275E-04 + 6 -5.25209E-02 -8.74971E-02 +6 0 *********** SCCC-Asp-Asp + 1 -3.67689E-03 -5.55082E-03 + 2 -4.88763E-01 -4.13346E-01 + 3 6.74458E-02 -8.94516E-02 + 4 -1.48843E-01 3.05053E-02 + 5 -2.32411E-03 6.93140E-02 + 6 -3.65344E-02 1.18049E-01 +6 0 *********** SCCC-Asp-Ala + 1 -1.22253E-01 4.26719E-02 + 2 -3.75906E-01 -4.76591E-01 + 3 1.54140E-01 -1.50381E-01 + 4 -2.79743E-02 3.45637E-02 + 5 3.70630E-02 -1.80596E-02 + 6 1.16381E-02 1.31634E-02 +6 0 *********** SCCC-Asp-Cys + 1 -3.85111E-01 3.52424E-01 + 2 -4.08034E-01 -3.49952E-01 + 3 6.35540E-03 -1.12671E-01 + 4 -1.02048E-01 7.07537E-02 + 5 -8.28533E-02 -6.45643E-02 + 6 7.03106E-02 1.65406E-02 +6 0 *********** SCCC-Asp-Pro + 1 -1.50829E+00 -5.79772E-01 + 2 1.03224E-01 -9.28513E-01 + 3 -2.17808E-01 1.96654E-01 + 4 -9.97970E-03 -1.86116E-01 + 5 9.68333E-02 -3.40002E-04 + 6 6.76090E-02 -1.60409E-02 +6 0 *********** SCCC-Ala-Gly + 1 1.08671E-01 -1.61916E-01 + 2 -6.75374E-01 -4.41016E-01 + 3 7.72515E-02 2.21794E-02 + 4 -1.33440E-01 -3.52702E-02 + 5 4.07103E-02 -8.30674E-03 + 6 -3.38734E-02 -2.91658E-02 +6 0 *********** SCCC-Ala-Asp + 1 3.30143E-01 -2.37859E-01 + 2 -5.58337E-01 -5.48182E-01 + 3 1.59867E-01 -3.10240E-02 + 4 -4.71581E-02 9.18808E-02 + 5 7.58630E-03 1.36081E-02 + 6 -5.18337E-02 1.67623E-02 +6 0 *********** SCCC-Ala-Ala + 1 3.01325E-02 -2.05463E-01 + 2 -4.29621E-01 -4.94204E-01 + 3 1.48297E-01 -2.46345E-02 + 4 -6.66014E-02 7.33216E-02 + 5 -4.61338E-03 9.99319E-03 + 6 -1.72753E-02 -1.22783E-02 +6 0 *********** SCCC-Ala-Cys + 1 -1.89551E-01 -5.29036E-02 + 2 -4.70536E-01 -5.46659E-01 + 3 1.24188E-01 -4.54771E-02 + 4 -9.01686E-02 7.87782E-02 + 5 4.38317E-02 -1.50550E-02 + 6 -1.40100E-02 4.48399E-03 +6 0 *********** SCCC-Ala-Pro + 1 -1.05516E+00 -8.27122E-01 + 2 4.04216E-01 -6.30736E-01 + 3 -5.65139E-02 1.31356E-01 + 4 8.86212E-02 -1.93137E-02 + 5 8.30847E-02 7.84107E-02 + 6 1.09275E-03 -6.69432E-02 +6 0 *********** SCCC-Cys-Gly + 1 2.81717E-02 -9.16432E-02 + 2 -5.80065E-01 -5.41676E-01 + 3 8.35896E-02 2.32087E-02 + 4 -2.52554E-02 -1.99537E-02 + 5 -2.13136E-02 1.36707E-02 + 6 5.82876E-02 -3.17349E-02 +6 0 *********** SCCC-Cys-Asp + 1 -1.56463E-01 -2.26207E-01 + 2 -5.27000E-01 -6.19820E-01 + 3 1.91887E-01 6.70580E-03 + 4 -3.98226E-02 5.89435E-02 + 5 -3.16575E-02 -1.15483E-02 + 6 -2.96986E-02 -2.19490E-02 +6 0 *********** SCCC-Cys-Ala + 1 -3.36091E-01 -1.76255E-01 + 2 -4.69818E-01 -5.33704E-01 + 3 8.61098E-02 7.14942E-02 + 4 -8.83260E-02 9.91528E-02 + 5 3.34156E-02 8.38345E-03 + 6 5.24593E-03 -3.06572E-02 +6 0 *********** SCCC-Cys-Cys + 1 -1.22127E-01 -1.71478E-01 + 2 -6.74690E-01 -6.10165E-01 + 3 1.73527E-01 -4.21592E-03 + 4 -3.70829E-02 9.30684E-02 + 5 -1.00968E-02 -6.23981E-02 + 6 -8.89396E-03 -3.14081E-02 +6 0 *********** SCCC-Cys-Pro + 1 -1.17342E+00 -7.27036E-01 + 2 6.83690E-01 -1.00092E+00 + 3 -4.76000E-02 3.72246E-01 + 4 -2.26563E-02 -1.70297E-01 + 5 -2.22742E-02 1.16548E-01 + 6 7.14525E-03 -4.24250E-02 +6 0 *********** SCCC-Pro-Gly + 1 4.02585E-01 -3.94531E-01 + 2 -3.03503E-01 1.01518E+00 + 3 -4.38168E-01 -3.04473E-01 + 4 1.31142E-01 -9.95205E-02 + 5 -3.80295E-02 8.15597E-02 + 6 1.26077E-01 -2.53458E-02 +6 0 *********** SCCC-Pro-Asp + 1 2.49283E-03 -5.49089E-01 + 2 -7.83933E-01 9.23601E-01 + 3 -3.39174E-01 -3.82848E-01 + 4 1.00026E-01 -1.82055E-01 + 5 -1.75659E-01 -5.49745E-02 + 6 8.55600E-02 -1.16096E-01 +6 0 *********** SCCC-Pro-Ala + 1 -4.15518E-01 -2.91572E-01 + 2 -6.52264E-01 7.09750E-01 + 3 -1.64167E-01 -4.41575E-01 + 4 1.18955E-01 -3.95590E-02 + 5 -7.92580E-02 -5.98595E-02 + 6 9.27982E-02 -2.38264E-02 +6 0 *********** SCCC-Pro-Cys + 1 -3.26560E-01 4.41125E-02 + 2 -6.99614E-01 7.59093E-01 + 3 -2.81678E-01 -3.28174E-01 + 4 1.31668E-01 -1.75615E-01 + 5 7.10756E-03 5.43733E-02 + 6 4.46549E-02 -1.44439E-02 +6 0 *********** SCCC-Pro-Pro + 1 -1.28703E+00 3.46321E-01 + 2 -1.01267E+00 -8.23419E-01 + 3 -1.57933E-01 -4.68436E-01 + 4 8.11040E-02 2.82701E-01 + 5 -9.53347E-02 -1.21811E-01 + 6 2.61441E-01 9.39812E-02 +6 0 *********** CCCS-Gly-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** CCCS-Gly-Asp + 1 -6.31253E-02 2.38427E-01 + 2 -1.11407E-01 5.53671E-01 + 3 7.24875E-02 2.23541E-01 + 4 6.83969E-03 4.24431E-02 + 5 1.24417E-02 6.08425E-02 + 6 6.11012E-02 7.83368E-02 +6 0 *********** CCCS-Gly-Ala + 1 -4.37385E-01 1.91403E-01 + 2 -3.23631E-01 4.02741E-01 + 3 5.64025E-02 4.08058E-03 + 4 -5.74258E-02 -7.02841E-02 + 5 -4.70532E-02 -5.70242E-02 + 6 -9.28053E-03 4.39361E-02 +6 0 *********** CCCS-Gly-Cys + 1 -4.13393E-01 1.65041E-01 + 2 -1.88107E-01 5.62683E-01 + 3 5.60016E-02 7.38731E-02 + 4 -5.95757E-03 -4.64401E-02 + 5 1.01336E-02 5.56109E-02 + 6 -2.35731E-03 -3.15908E-02 +6 0 *********** CCCS-Gly-Pro + 1 1.76496E+00 1.61351E-02 + 2 -4.47793E-02 8.85324E-02 + 3 5.63354E-01 2.17411E-01 + 4 2.19564E-01 8.87204E-02 + 5 -5.19152E-02 3.72129E-02 + 6 -5.31883E-02 1.01306E-01 +6 0 *********** CCCS-Asp-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** CCCS-Asp-Asp + 1 -2.19269E-01 8.49318E-02 + 2 3.49016E-01 1.09227E-01 + 3 -1.97832E-02 7.72399E-02 + 4 5.58331E-02 -3.06730E-02 + 5 1.18306E-01 -2.23422E-02 + 6 -4.37173E-03 4.71024E-02 +6 0 *********** CCCS-Asp-Ala + 1 -4.41640E-01 -5.72041E-03 + 2 2.73360E-01 1.76355E-01 + 3 -1.81199E-02 -4.96490E-03 + 4 -5.22381E-02 2.83445E-02 + 5 4.75320E-02 3.90300E-02 + 6 -1.17571E-02 -2.22279E-02 +6 0 *********** CCCS-Asp-Cys + 1 -1.04268E+00 -6.40980E-02 + 2 4.07555E-01 -8.57275E-02 + 3 -9.99096E-02 -5.20481E-02 + 4 6.49643E-03 -2.47447E-02 + 5 -4.98284E-02 -8.55654E-03 + 6 9.24429E-02 -3.30342E-02 +6 0 *********** CCCS-Asp-Pro + 1 5.12065E-01 -1.44224E+00 + 2 1.29415E+00 5.67146E-01 + 3 -7.38956E-02 -3.66674E-01 + 4 -1.18527E-01 4.00056E-01 + 5 1.03674E-01 1.46075E-01 + 6 9.06869E-02 -1.14085E-01 +6 0 *********** CCCS-Ala-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** CCCS-Ala-Asp + 1 -1.18903E-01 1.83145E-01 + 2 5.83533E-01 1.08640E-01 + 3 -6.66729E-02 1.76102E-01 + 4 4.89076E-02 5.31612E-02 + 5 5.39967E-02 9.45165E-02 + 6 8.03064E-02 -4.08910E-03 +6 0 *********** CCCS-Ala-Ala + 1 -2.92868E-01 -8.19322E-02 + 2 4.63252E-01 1.35090E-01 + 3 -9.30834E-02 -6.42975E-02 + 4 6.48082E-02 5.29183E-02 + 5 -1.88075E-02 -1.92230E-02 + 6 -1.51650E-03 2.44986E-02 +6 0 *********** CCCS-Ala-Cys + 1 -5.81015E-01 -1.68223E-01 + 2 6.20247E-01 -2.12253E-01 + 3 -1.35184E-01 -6.88396E-02 + 4 6.16762E-02 -2.05756E-02 + 5 -3.94035E-02 -1.52101E-02 + 6 2.08621E-02 3.07917E-03 +6 0 *********** CCCS-Ala-Pro + 1 9.10026E-01 -1.25074E+00 + 2 1.42419E+00 1.07825E+00 + 3 2.96946E-01 -4.44096E-01 + 4 1.60238E-01 3.80481E-01 + 5 3.09317E-02 1.68846E-01 + 6 -1.77411E-01 -1.00691E-01 +6 0 *********** CCCS-Cys-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** CCCS-Cys-Asp + 1 -5.26562E-01 -3.09456E-01 + 2 5.49368E-01 -1.44823E-01 + 3 -7.22982E-02 9.84671E-02 + 4 6.66287E-02 -9.44212E-03 + 5 1.68578E-03 6.74414E-02 + 6 3.89759E-02 1.95437E-02 +6 0 *********** CCCS-Cys-Ala + 1 -6.56521E-01 -4.61287E-01 + 2 4.26599E-01 -4.27295E-02 + 3 -5.80619E-02 -6.82714E-02 + 4 7.55769E-02 -3.73619E-02 + 5 -1.25281E-02 -9.43991E-03 + 6 -2.08379E-02 -1.07485E-02 +6 0 *********** CCCS-Cys-Cys + 1 -5.58656E-01 -6.37550E-02 + 2 6.60644E-01 -4.81978E-01 + 3 -1.23335E-01 -1.07436E-01 + 4 9.65717E-02 -4.24652E-02 + 5 -2.48253E-02 -5.11826E-02 + 6 6.85820E-05 1.76573E-02 +6 0 *********** CCCS-Cys-Pro + 1 4.90723E-01 -1.35625E+00 + 2 1.67813E+00 1.18718E+00 + 3 5.22746E-02 -5.00301E-01 + 4 1.68735E-01 3.93464E-01 + 5 4.28409E-02 8.91823E-02 + 6 -1.62951E-02 -2.16810E-02 +6 0 *********** CCCS-Pro-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** CCCS-Pro-Asp + 1 -6.52828E-03 3.66128E-01 + 2 8.72926E-01 2.83756E-01 + 3 -6.39242E-02 4.15019E-01 + 4 5.22042E-02 1.13759E-01 + 5 3.15281E-02 1.19297E-01 + 6 2.29414E-01 1.65320E-02 +6 0 *********** CCCS-Pro-Ala + 1 -1.92755E-01 -2.59299E-01 + 2 6.27259E-01 3.23210E-01 + 3 5.09623E-03 -5.98610E-02 + 4 2.63549E-01 5.54537E-02 + 5 1.07979E-02 1.42709E-02 + 6 3.58365E-02 -1.09028E-02 +6 0 *********** CCCS-Pro-Cys + 1 -4.65856E-01 -2.86718E-01 + 2 8.65762E-01 -1.35677E-01 + 3 -1.54115E-01 -3.55263E-02 + 4 8.94026E-02 1.99514E-02 + 5 -4.23955E-02 6.54068E-02 + 6 1.37749E-01 3.27344E-04 +6 0 *********** CCCS-Pro-Pro + 1 1.04077E+00 -4.87596E-01 + 2 7.01383E-01 2.48642E+00 + 3 1.47959E-01 -3.84847E-01 + 4 1.09403E-02 -6.08211E-02 + 5 -4.12137E-02 8.77603E-02 + 6 5.29644E-02 1.44612E-02 +6 0 *********** SCCS-Gly-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Gly-Asp + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Gly-Ala + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Gly-Cys + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Gly-Pro + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Asp-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Asp-Asp + 1 -1.29367E-01 5.31310E-02 + 2 2.52177E-01 -4.38233E-01 + 3 2.89042E-02 -2.12699E-03 + 4 -5.58810E-02 -1.26169E-01 + 5 -1.35209E-02 -9.71544E-04 + 6 -5.55150E-02 1.66374E-02 +6 0 *********** SCCS-Asp-Ala + 1 -6.19935E-02 1.46335E-02 + 2 2.40900E-01 -1.77547E-01 + 3 2.51822E-02 -5.24041E-02 + 4 -1.68369E-03 -1.26395E-01 + 5 -5.14003E-02 -3.09970E-02 + 6 3.06234E-03 -8.67938E-03 +6 0 *********** SCCS-Asp-Cys + 1 4.64551E-01 -1.71287E-01 + 2 -2.64537E-03 -4.16687E-01 + 3 -4.88145E-02 -9.31462E-02 + 4 -5.30998E-02 -6.70922E-02 + 5 8.75378E-03 1.48263E-02 + 6 2.66145E-02 -3.62959E-02 +6 0 *********** SCCS-Asp-Pro + 1 4.95445E-01 1.54011E+00 + 2 1.12587E+00 5.33051E-01 + 3 1.16352E-01 3.06477E-01 + 4 -1.69937E-01 -8.91254E-02 + 5 2.99610E-02 -1.99747E-01 + 6 3.14083E-01 -9.27615E-02 +6 0 *********** SCCS-Ala-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Ala-Asp + 1 -3.03491E-01 -3.20195E-03 + 2 1.87577E-01 -5.35195E-01 + 3 -9.22075E-02 -2.45286E-02 + 4 -5.52959E-02 -7.94812E-02 + 5 2.30392E-02 -6.72315E-02 + 6 1.13747E-02 1.06330E-02 +6 0 *********** SCCS-Ala-Ala + 1 -1.13071E-01 1.14720E-01 + 2 1.77018E-01 -3.52529E-01 + 3 2.53076E-02 -3.20530E-02 + 4 -5.13892E-02 -8.88139E-02 + 5 3.40895E-03 -1.14563E-02 + 6 -3.36404E-02 -4.87838E-03 +6 0 *********** SCCS-Ala-Cys + 1 1.87671E-01 8.41887E-02 + 2 -2.58899E-02 -5.91412E-01 + 3 -6.02484E-02 -6.83110E-02 + 4 -6.01972E-02 -7.62475E-02 + 5 1.66086E-02 1.13310E-02 + 6 -1.52069E-02 2.08523E-02 +6 0 *********** SCCS-Ala-Pro + 1 2.97957E-01 1.43349E+00 + 2 8.50101E-01 6.28525E-01 + 3 1.37592E-01 3.21604E-01 + 4 -1.65330E-01 3.97088E-02 + 5 -5.87512E-02 1.95385E-01 + 6 4.59752E-02 5.96600E-02 +6 0 *********** SCCS-Cys-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Cys-Asp + 1 1.54696E-01 2.74801E-01 + 2 1.75668E-01 -6.02466E-01 + 3 -3.71949E-02 2.85682E-02 + 4 -2.23575E-02 -7.93697E-02 + 5 3.18670E-02 -3.26104E-02 + 6 3.42890E-03 9.99826E-03 +6 0 *********** SCCS-Cys-Ala + 1 3.12256E-01 2.89927E-01 + 2 1.38469E-01 -4.21609E-01 + 3 4.30847E-02 8.17844E-03 + 4 -6.30056E-02 -7.43044E-02 + 5 -2.42299E-02 -1.05221E-02 + 6 -2.32065E-02 1.07005E-02 +6 0 *********** SCCS-Cys-Cys + 1 5.42115E-02 1.91060E-01 + 2 -1.45695E-01 -7.74412E-01 + 3 -2.74454E-02 -6.31361E-03 + 4 -6.08427E-02 -5.15224E-02 + 5 -2.37106E-02 3.55272E-02 + 6 2.34366E-04 1.57237E-02 +6 0 *********** SCCS-Cys-Pro + 1 5.25532E-01 1.45831E+00 + 2 1.23695E+00 9.22229E-01 + 3 2.26554E-01 3.11519E-01 + 4 8.04527E-03 1.20234E-01 + 5 1.10145E-01 -3.76652E-02 + 6 1.20059E-01 3.98373E-02 +6 0 *********** SCCS-Pro-Gly + 1 0.00000E+00 0.00000E+00 + 2 0.00000E+00 0.00000E+00 + 3 0.00000E+00 0.00000E+00 + 4 0.00000E+00 0.00000E+00 + 5 0.00000E+00 0.00000E+00 + 6 0.00000E+00 0.00000E+00 +6 0 *********** SCCS-Pro-Asp + 1 -4.75566E-01 4.02839E-01 + 2 -9.91621E-01 -5.27652E-01 + 3 1.01043E-01 1.27747E-01 + 4 2.21600E-01 9.83514E-02 + 5 9.14873E-02 2.88332E-01 + 6 -8.89657E-02 6.69934E-02 +6 0 *********** SCCS-Pro-Ala + 1 9.73371E-02 2.90189E-01 + 2 -5.61755E-01 -4.03787E-01 + 3 -1.18288E-01 -1.57214E-01 + 4 1.33916E-01 1.47170E-01 + 5 9.77810E-02 6.01187E-02 + 6 -5.20456E-02 -7.13409E-02 +6 0 *********** SCCS-Pro-Cys + 1 2.37390E-01 5.34492E-02 + 2 -7.98945E-01 -9.34123E-02 + 3 -2.65067E-02 1.77660E-01 + 4 9.11318E-02 8.22393E-02 + 5 5.66528E-02 3.50986E-02 + 6 -3.68829E-02 1.55213E-02 +6 0 *********** SCCS-Pro-Pro + 1 1.33315E+00 3.64948E-01 + 2 9.40733E-01 -1.29363E+00 + 3 -8.51267E-01 -3.39368E-01 + 4 2.81813E-01 -1.68113E-01 + 5 2.73587E-01 1.92177E-01 + 6 3.48452E-02 -4.05145E-01 diff --git a/bin/unres/MIN/unres_min_gfortran.exe b/bin/unres/MIN/unres_min_gfortran.exe new file mode 100755 index 0000000..8059828 Binary files /dev/null and b/bin/unres/MIN/unres_min_gfortran.exe differ diff --git a/ctest/1LE1_mremd_MD000.cx b/ctest/1LE1_mremd_MD000.cx new file mode 100644 index 0000000..4cabd92 Binary files /dev/null and b/ctest/1LE1_mremd_MD000.cx differ diff --git a/ctest/ala10MD.cx b/ctest/ala10MD.cx new file mode 100644 index 0000000..fe65c85 Binary files /dev/null and b/ctest/ala10MD.cx differ diff --git a/examples/unres/MD/ff_gab/1L2Y_minim.inp b/examples/unres/MD/ff_gab/1L2Y_minim.inp index 2830886..a770a21 100644 --- a/examples/unres/MD/ff_gab/1L2Y_minim.inp +++ b/examples/unres/MD/ff_gab/1L2Y_minim.inp @@ -1,6 +1,11 @@ 1L2Y +<<<<<<< HEAD SEED=-3059743 REFSTR PDBREF MINIMIZE +======= +SEED=-3059743 PDBREF ENE +maxmin=1000 +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873 & WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000 & WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000 & diff --git a/examples/unres/MD/ff_gab/fort.28 b/examples/unres/MD/ff_gab/fort.28 deleted file mode 100644 index e69de29..0000000 diff --git a/examples/unres/MD/ff_gab/unres.pbs b/examples/unres/MD/ff_gab/unres.pbs index 367e87f..f983fb9 100755 --- a/examples/unres/MD/ff_gab/unres.pbs +++ b/examples/unres/MD/ff_gab/unres.pbs @@ -1,7 +1,7 @@ #!/bin/sh #PBS -N PGA #PBS -q dque -#PBS -l nodes=58:ppn=2 +#PBS -l nodes=1:ppn=1 #PBS -l walltime=24:00:00 #----------------------------------------------------------------------------- export POT=GB diff --git a/examples/unres/MIN/1L2Y.pdb b/examples/unres/MIN/1L2Y.pdb new file mode 100644 index 0000000..3186b8f --- /dev/null +++ b/examples/unres/MIN/1L2Y.pdb @@ -0,0 +1,11777 @@ +HEADER DE NOVO PROTEIN 25-FEB-02 1L2Y +TITLE NMR STRUCTURE OF TRP-CAGE MINIPROTEIN CONSTRUCT TC5B +COMPND MOL_ID: 1; +COMPND 2 MOLECULE: TC5B; +COMPND 3 CHAIN: A; +COMPND 4 ENGINEERED: YES +SOURCE MOL_ID: 1; +SOURCE 2 SYNTHETIC: YES; +SOURCE 3 OTHER_DETAILS: THE PROTEIN WAS SYNTHESIZED USING STANDARD +SOURCE 4 FMOC SOLID-PHASE SYNTHESIS METHODS ON AN APPLIED +SOURCE 5 BIOSYSTEMS 433A PEPTIDE SYNTHESIZER. +KEYWDS MINIPROTEIN, TWO-STATE FOLDING, TRP-CAGE +EXPDTA NMR, 38 STRUCTURES +AUTHOR J.W.NEIDIGH,R.M.FESINMEYER,N.H.ANDERSEN +REVDAT 1 29-MAY-02 1L2Y 0 +JRNL AUTH J.W.NEIDIGH,R.M.FESINMEYER,N.H.ANDERSEN +JRNL TITL DESIGNING A 20-RESIDUE PROTEIN +JRNL REF NAT.STRUCT.BIOL. V. 9 425 2002 +JRNL REFN ASTM NSBIEW US ISSN 1072-8368 +REMARK 1 +REMARK 2 +REMARK 2 RESOLUTION. NOT APPLICABLE. +REMARK 3 +REMARK 3 REFINEMENT. +REMARK 3 PROGRAM : NULL +REMARK 3 AUTHORS : NULL +REMARK 3 +REMARK 3 OTHER REFINEMENT REMARKS: 169 NOE DISTANCE CONSTRAINTS WERE +REMARK 3 EMPLOYED. CNS WAS EMPLOYED FOR S.A., FOLLOWED BY MINIMIZATION +REMARK 3 USING THE SANDER MODULE OF AMBER. +REMARK 4 +REMARK 4 1L2Y COMPLIES WITH FORMAT V. 2.3, 09-JULY-1998 +REMARK 100 +REMARK 100 THIS ENTRY HAS BEEN PROCESSED BY RCSB ON 28-FEB-2002. +REMARK 100 THE RCSB ID CODE IS RCSB015598. +REMARK 210 +REMARK 210 EXPERIMENTAL DETAILS +REMARK 210 EXPERIMENT TYPE : NMR +REMARK 210 TEMPERATURE (KELVIN) : 282 +REMARK 210 PH : 7 +REMARK 210 IONIC STRENGTH : NULL +REMARK 210 PRESSURE : AMBIENT +REMARK 210 SAMPLE CONTENTS : 1.0-1.8 MM TC5B +REMARK 210 +REMARK 210 NMR EXPERIMENTS CONDUCTED : 2D NOESY +REMARK 210 SPECTROMETER FIELD STRENGTH : 500 MHZ +REMARK 210 SPECTROMETER MODEL : DRX +REMARK 210 SPECTROMETER MANUFACTURER : BRUKER +REMARK 210 +REMARK 210 STRUCTURE DETERMINATION. +REMARK 210 SOFTWARE USED : XWINNMR 2.6, FELIX 95, CNS +REMARK 210 1.0, AMBER 6.0 +REMARK 210 METHOD USED : SIMULATED ANNEALING FROM +REMARK 210 RANDOM STRUCTURES FOLLOWED BY +REMARK 210 STEEPEST DESCENT MINIMIZATION +REMARK 210 +REMARK 210 CONFORMERS, NUMBER CALCULATED : 50 +REMARK 210 CONFORMERS, NUMBER SUBMITTED : 38 +REMARK 210 CONFORMERS, SELECTION CRITERIA : STRUCTURES WITH ACCEPTABLE +REMARK 210 COVALENT GEOMETRY, STRUCTURES +REMARK 210 WITH THE LEAST RESTRAINT +REMARK 210 VIOLATIONS +REMARK 210 +REMARK 210 BEST REPRESENTATIVE CONFORMER IN THIS ENSEMBLE : NULL +REMARK 210 +REMARK 210 REMARK: THIS STRUCTURE WAS DETERMINED USING STANDARD 2D +REMARK 210 HOMONUCLEAR TECHNIQUES. +REMARK 215 +REMARK 215 NMR STUDY +REMARK 215 THE COORDINATES IN THIS ENTRY WERE GENERATED FROM SOLUTION +REMARK 215 NMR DATA. PROTEIN DATA BANK CONVENTIONS REQUIRE THAT +REMARK 215 CRYST1 AND SCALE RECORDS BE INCLUDED, BUT THE VALUES ON +REMARK 215 THESE RECORDS ARE MEANINGLESS. +REMARK 500 +REMARK 500 GEOMETRY AND STEREOCHEMISTRY +REMARK 500 SUBTOPIC: TORSION ANGLES +REMARK 500 +REMARK 500 TORSION ANGLES OUTSIDE THE EXPECTED RAMACHANDRAN REGIONS: +REMARK 500 (M=MODEL NUMBER; RES=RESIDUE NAME; C=CHAIN IDENTIFIER; +REMARK 500 SSEQ=SEQUENCE NUMBER; I=INSERTION CODE). +REMARK 500 +REMARK 500 STANDARD TABLE: +REMARK 500 FORMAT:(10X,I3,1X,A3,1X,A1,I4,A1,4X,F7.2,3X,F7.2) +REMARK 500 +REMARK 500 M RES CSSEQI PSI PHI +REMARK 500 5 LEU A 2 -34.83 72.95 +REMARK 500 6 LEU A 2 -33.93 63.45 +REMARK 500 13 LEU A 2 -33.72 66.32 +REMARK 500 20 LEU A 2 -32.96 68.39 +REMARK 500 23 LEU A 2 -47.12 63.92 +REMARK 500 29 LEU A 2 -42.02 66.43 +REMARK 900 +REMARK 900 RELATED ENTRIES +REMARK 900 RELATED ID: 5292 RELATED DB: BMRB +REMARK 900 BMRB 5292 IS CHEMICAL SHIFTS FOR TC5B IN BUFFER AND BUFFER +REMARK 900 CONTAINING 30 VOL-% TFE. +REMARK 900 RELATED ID: 1JRJ RELATED DB: PDB +REMARK 900 1JRJ IS AN ANALAGOUS C-TERMINAL STRUCTURE. +SEQRES 1 A 20 ASN LEU TYR ILE GLN TRP LEU LYS ASP GLY GLY PRO SER +SEQRES 2 A 20 SER GLY ARG PRO PRO PRO SER +HELIX 1 1 ASN A 1 ASP A 9 1 9 +HELIX 2 2 GLY A 10 GLY A 15 5 6 +CRYST1 1.000 1.000 1.000 90.00 90.00 90.00 P 1 1 +ORIGX1 1.000000 0.000000 0.000000 0.00000 +ORIGX2 0.000000 1.000000 0.000000 0.00000 +ORIGX3 0.000000 0.000000 1.000000 0.00000 +SCALE1 1.000000 0.000000 0.000000 0.00000 +SCALE2 0.000000 1.000000 0.000000 0.00000 +SCALE3 0.000000 0.000000 1.000000 0.00000 +MODEL 1 +ATOM 1 N ASN A 1 -8.901 4.127 -0.555 0.00 0.00 N +ATOM 2 CA ASN A 1 -8.608 3.135 -1.618 0.00 0.00 C +ATOM 3 C ASN A 1 -7.117 2.964 -1.897 0.00 0.00 C +ATOM 4 O ASN A 1 -6.634 1.849 -1.758 0.00 0.00 O +ATOM 5 CB ASN A 1 -9.437 3.396 -2.889 0.00 0.00 C +ATOM 6 CG ASN A 1 -10.915 3.130 -2.611 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -11.269 2.700 -1.524 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -11.806 3.406 -3.543 0.00 0.00 N +ATOM 9 1H ASN A 1 -8.330 3.957 0.261 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.740 5.068 -0.889 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.877 4.041 -0.293 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.930 2.162 -1.239 0.00 0.00 H +ATOM 13 1HB ASN A 1 -9.310 4.417 -3.193 0.00 0.00 H +ATOM 14 2HB ASN A 1 -9.108 2.719 -3.679 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -11.572 3.791 -4.444 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -12.757 3.183 -3.294 0.00 0.00 H +ATOM 17 N LEU A 2 -6.379 4.031 -2.228 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.923 4.002 -2.452 0.00 0.00 C +ATOM 19 C LEU A 2 -4.136 3.187 -1.404 0.00 0.00 C +ATOM 20 O LEU A 2 -3.391 2.274 -1.760 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.411 5.450 -2.619 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.795 6.450 -1.495 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.612 6.803 -0.599 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -5.351 7.748 -2.084 0.00 0.00 C +ATOM 25 H LEU A 2 -6.821 4.923 -2.394 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.750 3.494 -3.403 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.340 5.414 -2.672 0.00 0.00 H +ATOM 28 2HB LEU A 2 -4.813 5.817 -3.564 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.568 6.022 -0.858 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -3.207 5.905 -0.146 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.841 7.304 -1.183 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.929 7.477 0.197 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -4.607 8.209 -2.736 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -6.255 7.544 -2.657 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -5.592 8.445 -1.281 0.00 0.00 H +ATOM 36 N TYR A 3 -4.354 3.455 -0.111 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.690 2.738 0.981 0.00 0.00 C +ATOM 38 C TYR A 3 -4.102 1.256 1.074 0.00 0.00 C +ATOM 39 O TYR A 3 -3.291 0.409 1.442 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.964 3.472 2.302 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.824 3.339 3.290 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.820 4.326 3.332 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.746 2.217 4.138 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.725 4.185 4.205 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.657 2.076 5.018 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.639 3.053 5.043 0.00 0.00 C +ATOM 47 OH TYR A 3 0.433 2.881 5.861 0.00 0.00 O +ATOM 48 H TYR A 3 -4.934 4.245 0.120 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.615 2.768 0.796 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.117 4.513 2.091 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.886 3.096 2.750 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.877 5.200 2.695 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.513 1.456 4.101 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.033 4.952 4.233 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.576 1.221 5.669 0.00 0.00 H +ATOM 56 HH TYR A 3 1.187 3.395 5.567 0.00 0.00 H +ATOM 57 N ILE A 4 -5.342 0.925 0.689 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.857 -0.449 0.613 0.00 0.00 C +ATOM 59 C ILE A 4 -5.089 -1.221 -0.470 0.00 0.00 C +ATOM 60 O ILE A 4 -4.621 -2.334 -0.226 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.386 -0.466 0.343 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.197 0.540 1.197 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.959 -1.884 0.501 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.019 0.412 2.715 0.00 0.00 C +ATOM 65 H ILE A 4 -5.906 1.656 0.283 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.670 -0.941 1.568 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.554 -0.192 -0.697 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -7.900 1.531 0.912 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -9.257 0.424 0.964 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.509 -2.555 -0.232 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.759 -2.271 1.501 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.036 -1.871 0.332 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -8.306 -0.585 3.049 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -6.983 0.606 2.995 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.656 1.144 3.213 0.00 0.00 H +ATOM 76 N GLN A 5 -4.907 -0.601 -1.645 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.122 -1.167 -2.743 0.00 0.00 C +ATOM 78 C GLN A 5 -2.629 -1.321 -2.390 0.00 0.00 C +ATOM 79 O GLN A 5 -1.986 -2.240 -2.884 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.292 -0.313 -4.013 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.244 -1.171 -5.290 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.576 -1.860 -5.585 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.769 -3.044 -5.335 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.532 -1.146 -6.152 0.00 0.00 N +ATOM 85 H GLN A 5 -5.327 0.318 -1.763 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.517 -2.162 -2.940 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.238 0.191 -3.969 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.492 0.429 -4.053 0.00 0.00 H +ATOM 89 1HG GLN A 5 -3.993 -0.539 -6.120 0.00 0.00 H +ATOM 90 2HG GLN A 5 -3.458 -1.923 -5.205 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -6.389 -0.184 -6.408 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -7.392 -1.635 -6.335 0.00 0.00 H +ATOM 93 N TRP A 6 -2.074 -0.459 -1.528 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.716 -0.631 -0.993 0.00 0.00 C +ATOM 95 C TRP A 6 -0.631 -1.766 0.044 0.00 0.00 C +ATOM 96 O TRP A 6 0.295 -2.579 -0.004 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.221 0.703 -0.417 0.00 0.00 C +ATOM 98 CG TRP A 6 1.148 0.652 0.194 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.319 0.664 -0.482 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.508 0.564 1.606 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.371 0.560 0.411 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.928 0.515 1.710 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.779 0.524 2.812 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.599 0.445 2.938 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.439 0.433 4.053 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.842 0.407 4.120 0.00 0.00 C +ATOM 107 H TRP A 6 -2.624 0.343 -1.242 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.052 -0.908 -1.813 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.206 1.425 -1.211 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.921 1.044 0.344 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.412 0.733 -1.558 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.360 0.536 0.156 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.299 0.571 2.773 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.679 0.418 2.961 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 0.862 0.400 4.966 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.334 0.360 5.081 0.00 0.00 H +ATOM 117 N LEU A 7 -1.600 -1.860 0.967 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.641 -2.932 1.963 0.00 0.00 C +ATOM 119 C LEU A 7 -1.847 -4.319 1.342 0.00 0.00 C +ATOM 120 O LEU A 7 -1.144 -5.248 1.742 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.710 -2.645 3.033 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.301 -1.579 4.069 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.475 -1.323 5.018 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.093 -2.007 4.914 0.00 0.00 C +ATOM 125 H LEU A 7 -2.316 -1.137 0.994 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.666 -2.978 2.445 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.600 -2.308 2.537 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.921 -3.571 3.572 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.061 -0.649 3.560 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.343 -0.992 4.449 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.725 -2.237 5.560 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.211 -0.549 5.739 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.270 -2.989 5.354 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.195 -2.045 4.300 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.922 -1.286 5.712 0.00 0.00 H +ATOM 136 N LYS A 8 -2.753 -4.481 0.360 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.024 -5.791 -0.269 0.00 0.00 C +ATOM 138 C LYS A 8 -1.796 -6.427 -0.937 0.00 0.00 C +ATOM 139 O LYS A 8 -1.719 -7.648 -1.030 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.224 -5.697 -1.232 0.00 0.00 C +ATOM 141 CG LYS A 8 -3.930 -5.009 -2.577 0.00 0.00 C +ATOM 142 CD LYS A 8 -3.682 -5.986 -3.736 0.00 0.00 C +ATOM 143 CE LYS A 8 -3.494 -5.199 -5.039 0.00 0.00 C +ATOM 144 NZ LYS A 8 -4.563 -5.483 -6.023 0.00 0.00 N +ATOM 145 H LYS A 8 -3.321 -3.675 0.097 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.309 -6.478 0.529 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.565 -6.694 -1.436 0.00 0.00 H +ATOM 148 2HB LYS A 8 -5.019 -5.143 -0.731 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.769 -4.390 -2.830 0.00 0.00 H +ATOM 150 2HG LYS A 8 -3.062 -4.368 -2.469 0.00 0.00 H +ATOM 151 1HD LYS A 8 -2.799 -6.562 -3.536 0.00 0.00 H +ATOM 152 2HD LYS A 8 -4.524 -6.674 -3.818 0.00 0.00 H +ATOM 153 1HE LYS A 8 -3.502 -4.150 -4.813 0.00 0.00 H +ATOM 154 2HE LYS A 8 -2.511 -5.439 -5.457 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -4.621 -6.474 -6.211 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -5.442 -5.124 -5.657 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -4.382 -4.983 -6.881 0.00 0.00 H +ATOM 158 N ASP A 9 -0.828 -5.607 -1.355 0.00 0.00 N +ATOM 159 CA ASP A 9 0.466 -6.016 -1.905 0.00 0.00 C +ATOM 160 C ASP A 9 1.481 -6.464 -0.832 0.00 0.00 C +ATOM 161 O ASP A 9 2.545 -6.971 -1.194 0.00 0.00 O +ATOM 162 CB ASP A 9 1.033 -4.839 -2.724 0.00 0.00 C +ATOM 163 CG ASP A 9 0.672 -4.906 -4.210 0.00 0.00 C +ATOM 164 OD1 ASP A 9 -0.532 -5.051 -4.522 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.627 -4.815 -5.017 0.00 0.00 O +ATOM 166 H ASP A 9 -1.010 -4.616 -1.291 0.00 0.00 H +ATOM 167 HA ASP A 9 0.319 -6.867 -2.574 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.644 -3.924 -2.320 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.116 -4.837 -2.650 0.00 0.00 H +ATOM 170 N GLY A 10 1.185 -6.278 0.464 0.00 0.00 N +ATOM 171 CA GLY A 10 2.060 -6.618 1.593 0.00 0.00 C +ATOM 172 C GLY A 10 2.628 -5.412 2.353 0.00 0.00 C +ATOM 173 O GLY A 10 3.496 -5.594 3.208 0.00 0.00 O +ATOM 174 H GLY A 10 0.265 -5.908 0.693 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.486 -7.214 2.304 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.897 -7.228 1.252 0.00 0.00 H +ATOM 177 N GLY A 11 2.172 -4.187 2.055 0.00 0.00 N +ATOM 178 CA GLY A 11 2.626 -2.967 2.723 0.00 0.00 C +ATOM 179 C GLY A 11 4.157 -2.802 2.654 0.00 0.00 C +ATOM 180 O GLY A 11 4.710 -2.829 1.551 0.00 0.00 O +ATOM 181 H GLY A 11 1.481 -4.089 1.319 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.164 -2.109 2.237 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.280 -2.997 3.753 0.00 0.00 H +ATOM 184 N PRO A 12 4.871 -2.651 3.794 0.00 0.00 N +ATOM 185 CA PRO A 12 6.333 -2.533 3.806 0.00 0.00 C +ATOM 186 C PRO A 12 7.058 -3.729 3.165 0.00 0.00 C +ATOM 187 O PRO A 12 8.139 -3.562 2.601 0.00 0.00 O +ATOM 188 CB PRO A 12 6.740 -2.387 5.279 0.00 0.00 C +ATOM 189 CG PRO A 12 5.460 -1.952 5.987 0.00 0.00 C +ATOM 190 CD PRO A 12 4.362 -2.615 5.160 0.00 0.00 C +ATOM 191 HA PRO A 12 6.611 -1.626 3.267 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.091 -3.323 5.670 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.531 -1.647 5.403 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.443 -2.302 7.001 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.358 -0.867 5.929 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.173 -3.609 5.516 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.440 -2.042 5.246 0.00 0.00 H +ATOM 198 N SER A 13 6.463 -4.929 3.205 0.00 0.00 N +ATOM 199 CA SER A 13 7.049 -6.179 2.704 0.00 0.00 C +ATOM 200 C SER A 13 6.897 -6.369 1.185 0.00 0.00 C +ATOM 201 O SER A 13 7.025 -7.488 0.697 0.00 0.00 O +ATOM 202 CB SER A 13 6.458 -7.371 3.472 0.00 0.00 C +ATOM 203 OG SER A 13 6.763 -7.264 4.850 0.00 0.00 O +ATOM 204 H SER A 13 5.535 -4.999 3.613 0.00 0.00 H +ATOM 205 HA SER A 13 8.121 -6.159 2.903 0.00 0.00 H +ATOM 206 1HB SER A 13 5.393 -7.382 3.344 0.00 0.00 H +ATOM 207 2HB SER A 13 6.880 -8.302 3.093 0.00 0.00 H +ATOM 208 HG SER A 13 7.707 -7.394 4.970 0.00 0.00 H +ATOM 209 N SER A 14 6.637 -5.290 0.434 0.00 0.00 N +ATOM 210 CA SER A 14 6.389 -5.315 -1.015 0.00 0.00 C +ATOM 211 C SER A 14 7.332 -4.405 -1.823 0.00 0.00 C +ATOM 212 O SER A 14 7.082 -4.123 -2.993 0.00 0.00 O +ATOM 213 CB SER A 14 4.914 -4.993 -1.265 0.00 0.00 C +ATOM 214 OG SER A 14 4.431 -5.743 -2.358 0.00 0.00 O +ATOM 215 H SER A 14 6.509 -4.415 0.930 0.00 0.00 H +ATOM 216 HA SER A 14 6.562 -6.329 -1.378 0.00 0.00 H +ATOM 217 1HB SER A 14 4.344 -5.236 -0.389 0.00 0.00 H +ATOM 218 2HB SER A 14 4.778 -3.934 -1.457 0.00 0.00 H +ATOM 219 HG SER A 14 3.714 -6.324 -1.987 0.00 0.00 H +ATOM 220 N GLY A 15 8.419 -3.920 -1.202 0.00 0.00 N +ATOM 221 CA GLY A 15 9.451 -3.116 -1.870 0.00 0.00 C +ATOM 222 C GLY A 15 8.984 -1.725 -2.316 0.00 0.00 C +ATOM 223 O GLY A 15 9.539 -1.177 -3.267 0.00 0.00 O +ATOM 224 H GLY A 15 8.573 -4.210 -0.246 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.297 -2.987 -1.194 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.805 -3.652 -2.752 0.00 0.00 H +ATOM 227 N ARG A 16 7.956 -1.164 -1.660 0.00 0.00 N +ATOM 228 CA ARG A 16 7.289 0.084 -2.054 0.00 0.00 C +ATOM 229 C ARG A 16 6.855 0.916 -0.829 0.00 0.00 C +ATOM 230 O ARG A 16 6.222 0.366 0.076 0.00 0.00 O +ATOM 231 CB ARG A 16 6.110 -0.243 -2.994 0.00 0.00 C +ATOM 232 CG ARG A 16 5.046 -1.171 -2.378 0.00 0.00 C +ATOM 233 CD ARG A 16 3.923 -1.592 -3.338 0.00 0.00 C +ATOM 234 NE ARG A 16 4.251 -2.811 -4.100 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.859 -2.914 -5.274 0.00 0.00 C +ATOM 236 NH1 ARG A 16 5.289 -1.864 -5.937 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.035 -4.095 -5.809 0.00 0.00 N +ATOM 238 H ARG A 16 7.579 -1.676 -0.874 0.00 0.00 H +ATOM 239 HA ARG A 16 8.009 0.663 -2.630 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.634 0.678 -3.269 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.524 -0.720 -3.880 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.538 -2.059 -2.031 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.579 -0.652 -1.549 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.033 -1.774 -2.766 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.669 -0.765 -4.003 0.00 0.00 H +ATOM 246 HE ARG A 16 3.963 -3.694 -3.698 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 5.150 -0.962 -5.521 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 5.761 -1.962 -6.815 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.649 -4.894 -5.327 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 5.508 -4.205 -6.684 0.00 0.00 H +ATOM 251 N PRO A 17 7.156 2.230 -0.780 0.00 0.00 N +ATOM 252 CA PRO A 17 6.782 3.088 0.345 0.00 0.00 C +ATOM 253 C PRO A 17 5.261 3.331 0.395 0.00 0.00 C +ATOM 254 O PRO A 17 4.586 3.165 -0.624 0.00 0.00 O +ATOM 255 CB PRO A 17 7.554 4.394 0.119 0.00 0.00 C +ATOM 256 CG PRO A 17 7.677 4.474 -1.401 0.00 0.00 C +ATOM 257 CD PRO A 17 7.820 3.010 -1.816 0.00 0.00 C +ATOM 258 HA PRO A 17 7.107 2.628 1.279 0.00 0.00 H +ATOM 259 1HB PRO A 17 7.009 5.234 0.505 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.548 4.308 0.561 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.800 4.914 -1.836 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.540 5.066 -1.707 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.349 2.844 -2.766 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.876 2.739 -1.855 0.00 0.00 H +ATOM 265 N PRO A 18 4.710 3.739 1.555 0.00 0.00 N +ATOM 266 CA PRO A 18 3.287 4.031 1.686 0.00 0.00 C +ATOM 267 C PRO A 18 2.901 5.305 0.913 0.00 0.00 C +ATOM 268 O PRO A 18 3.684 6.256 0.871 0.00 0.00 O +ATOM 269 CB PRO A 18 3.035 4.190 3.187 0.00 0.00 C +ATOM 270 CG PRO A 18 4.385 4.655 3.729 0.00 0.00 C +ATOM 271 CD PRO A 18 5.393 3.949 2.823 0.00 0.00 C +ATOM 272 HA PRO A 18 2.719 3.181 1.316 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.274 4.924 3.372 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.781 3.223 3.618 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.482 5.721 3.654 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.518 4.377 4.775 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.262 4.562 2.682 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.662 2.983 3.253 0.00 0.00 H +ATOM 279 N PRO A 19 1.688 5.360 0.336 0.00 0.00 N +ATOM 280 CA PRO A 19 1.185 6.543 -0.353 0.00 0.00 C +ATOM 281 C PRO A 19 0.715 7.607 0.655 0.00 0.00 C +ATOM 282 O PRO A 19 -0.124 7.324 1.513 0.00 0.00 O +ATOM 283 CB PRO A 19 0.048 6.014 -1.229 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.519 4.852 -0.412 0.00 0.00 C +ATOM 285 CD PRO A 19 0.716 4.275 0.272 0.00 0.00 C +ATOM 286 HA PRO A 19 1.961 6.966 -0.991 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.697 6.770 -1.389 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.463 5.630 -2.162 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.232 5.201 0.310 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.019 4.114 -1.041 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.470 3.937 1.260 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.121 3.461 -0.329 0.00 0.00 H +ATOM 293 N SER A 20 1.271 8.822 0.549 0.00 0.00 N +ATOM 294 CA SER A 20 0.852 10.027 1.285 0.00 0.00 C +ATOM 295 C SER A 20 -0.406 10.657 0.683 0.00 0.00 C +ATOM 296 O SER A 20 -0.387 10.916 -0.540 0.00 0.00 O +ATOM 297 CB SER A 20 1.972 11.071 1.284 0.00 0.00 C +ATOM 298 OG SER A 20 3.120 10.541 1.911 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.341 10.903 1.473 0.00 0.00 O +ATOM 300 H SER A 20 1.969 8.961 -0.165 0.00 0.00 H +ATOM 301 HA SER A 20 0.601 9.760 2.310 0.00 0.00 H +ATOM 302 1HB SER A 20 2.210 11.338 0.272 0.00 0.00 H +ATOM 303 2HB SER A 20 1.636 11.959 1.824 0.00 0.00 H +ATOM 304 HG SER A 20 2.831 10.040 2.676 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 2 +ATOM 1 N ASN A 1 -6.919 6.901 0.917 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.682 6.025 -0.010 0.00 0.00 C +ATOM 3 C ASN A 1 -6.840 4.889 -0.589 0.00 0.00 C +ATOM 4 O ASN A 1 -7.106 3.741 -0.253 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.428 6.847 -1.072 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.504 7.659 -0.362 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -9.180 8.568 0.382 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.768 7.290 -0.468 0.00 0.00 N +ATOM 9 1H ASN A 1 -6.513 6.358 1.667 0.00 0.00 H +ATOM 10 2H ASN A 1 -6.191 7.398 0.422 0.00 0.00 H +ATOM 11 3H ASN A 1 -7.553 7.592 1.308 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.451 5.523 0.581 0.00 0.00 H +ATOM 13 1HB ASN A 1 -7.743 7.506 -1.571 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.886 6.189 -1.811 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -11.078 6.519 -1.037 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -11.417 7.848 0.064 0.00 0.00 H +ATOM 17 N LEU A 2 -5.819 5.175 -1.412 0.00 0.00 N +ATOM 18 CA LEU A 2 -5.020 4.162 -2.130 0.00 0.00 C +ATOM 19 C LEU A 2 -4.244 3.179 -1.224 0.00 0.00 C +ATOM 20 O LEU A 2 -3.761 2.148 -1.693 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.073 4.863 -3.128 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.831 5.608 -4.250 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -5.010 7.109 -3.963 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -4.110 5.465 -5.592 0.00 0.00 C +ATOM 25 H LEU A 2 -5.631 6.133 -1.665 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.709 3.545 -2.710 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.472 5.572 -2.591 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.451 4.089 -3.583 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.820 5.160 -4.359 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.173 7.303 -2.907 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -4.124 7.663 -4.273 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -5.867 7.480 -4.526 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -3.114 5.904 -5.535 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -4.023 4.410 -5.855 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.683 5.969 -6.371 0.00 0.00 H +ATOM 36 N TYR A 3 -4.181 3.456 0.082 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.537 2.636 1.105 0.00 0.00 C +ATOM 38 C TYR A 3 -4.038 1.181 1.139 0.00 0.00 C +ATOM 39 O TYR A 3 -3.259 0.273 1.413 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.727 3.313 2.471 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.520 3.154 3.365 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.514 4.139 3.357 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.382 2.007 4.169 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.365 3.977 4.149 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.233 1.840 4.963 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.218 2.820 4.947 0.00 0.00 C +ATOM 47 OH TYR A 3 0.909 2.639 5.687 0.00 0.00 O +ATOM 48 H TYR A 3 -4.618 4.309 0.378 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.470 2.610 0.881 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.905 4.360 2.315 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.610 2.907 2.968 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.614 5.025 2.743 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.154 1.253 4.165 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.390 4.746 4.148 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.110 0.964 5.579 0.00 0.00 H +ATOM 56 HH TYR A 3 1.602 3.248 5.433 0.00 0.00 H +ATOM 57 N ILE A 4 -5.316 0.947 0.804 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.914 -0.393 0.686 0.00 0.00 C +ATOM 59 C ILE A 4 -5.157 -1.200 -0.382 0.00 0.00 C +ATOM 60 O ILE A 4 -4.755 -2.338 -0.140 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.421 -0.283 0.330 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.214 0.632 1.300 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.099 -1.670 0.270 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.489 1.191 0.662 0.00 0.00 C +ATOM 65 H ILE A 4 -5.889 1.753 0.580 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.814 -0.911 1.639 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.477 0.157 -0.667 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.484 0.062 2.168 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.616 1.489 1.603 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.421 -2.428 -0.112 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -8.432 -1.979 1.263 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.967 -1.620 -0.389 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -9.235 1.742 -0.245 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -10.180 0.385 0.416 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.973 1.875 1.360 0.00 0.00 H +ATOM 76 N GLN A 5 -4.948 -0.605 -1.564 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.253 -1.225 -2.692 0.00 0.00 C +ATOM 78 C GLN A 5 -2.763 -1.444 -2.393 0.00 0.00 C +ATOM 79 O GLN A 5 -2.186 -2.435 -2.832 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.443 -0.345 -3.944 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.608 -1.157 -5.242 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.950 -0.859 -5.909 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -6.138 0.164 -6.544 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.941 -1.718 -5.770 0.00 0.00 N +ATOM 85 H GLN A 5 -5.217 0.365 -1.657 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.707 -2.201 -2.864 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.320 0.258 -3.806 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.591 0.328 -4.050 0.00 0.00 H +ATOM 89 1HG GLN A 5 -3.816 -0.901 -5.919 0.00 0.00 H +ATOM 90 2HG GLN A 5 -4.525 -2.228 -5.051 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -6.847 -2.590 -5.280 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -7.781 -1.439 -6.247 0.00 0.00 H +ATOM 93 N TRP A 6 -2.145 -0.549 -1.610 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.791 -0.749 -1.090 0.00 0.00 C +ATOM 95 C TRP A 6 -0.713 -1.909 -0.084 0.00 0.00 C +ATOM 96 O TRP A 6 0.161 -2.766 -0.210 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.266 0.564 -0.501 0.00 0.00 C +ATOM 98 CG TRP A 6 1.149 0.501 -0.014 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.254 0.539 -0.795 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.637 0.388 1.358 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.382 0.433 -0.006 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.062 0.366 1.327 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.023 0.313 2.627 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.844 0.308 2.487 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.800 0.231 3.799 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.205 0.246 3.733 0.00 0.00 C +ATOM 107 H TRP A 6 -2.669 0.277 -1.341 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.144 -1.024 -1.920 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.327 1.320 -1.260 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.903 0.868 0.329 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.260 0.636 -1.868 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.347 0.425 -0.348 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.055 0.327 2.692 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.922 0.297 2.403 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.315 0.170 4.763 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.791 0.201 4.639 0.00 0.00 H +ATOM 117 N LEU A 7 -1.646 -1.992 0.877 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.701 -3.105 1.831 0.00 0.00 C +ATOM 119 C LEU A 7 -1.917 -4.465 1.152 0.00 0.00 C +ATOM 120 O LEU A 7 -1.290 -5.437 1.570 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.777 -2.856 2.905 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.370 -1.808 3.958 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.595 -1.444 4.805 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.255 -2.296 4.897 0.00 0.00 C +ATOM 125 H LEU A 7 -2.325 -1.238 0.964 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.726 -3.167 2.315 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.670 -2.517 2.417 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.988 -3.793 3.422 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.023 -0.911 3.448 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.368 -1.013 4.171 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.990 -2.337 5.292 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.314 -0.721 5.570 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.674 -2.706 5.816 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.651 -3.072 4.431 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.606 -1.459 5.148 0.00 0.00 H +ATOM 136 N LYS A 8 -2.727 -4.538 0.081 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.916 -5.759 -0.732 0.00 0.00 C +ATOM 138 C LYS A 8 -1.597 -6.366 -1.231 0.00 0.00 C +ATOM 139 O LYS A 8 -1.499 -7.582 -1.342 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.803 -5.459 -1.952 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.289 -5.218 -1.653 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.117 -6.512 -1.588 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.591 -6.248 -1.927 0.00 0.00 C +ATOM 144 NZ LYS A 8 -8.242 -5.337 -0.956 0.00 0.00 N +ATOM 145 H LYS A 8 -3.244 -3.695 -0.159 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.390 -6.527 -0.119 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.417 -4.581 -2.432 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.718 -6.282 -2.665 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.369 -4.715 -0.708 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.682 -4.593 -2.456 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.718 -7.218 -2.290 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.028 -6.959 -0.595 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.646 -5.806 -2.903 0.00 0.00 H +ATOM 154 2HE LYS A 8 -8.119 -7.204 -1.955 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.219 -5.741 -0.030 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.756 -4.452 -0.934 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -9.207 -5.176 -1.217 0.00 0.00 H +ATOM 158 N ASP A 9 -0.598 -5.528 -1.520 0.00 0.00 N +ATOM 159 CA ASP A 9 0.739 -5.926 -1.971 0.00 0.00 C +ATOM 160 C ASP A 9 1.608 -6.494 -0.823 0.00 0.00 C +ATOM 161 O ASP A 9 2.705 -7.002 -1.069 0.00 0.00 O +ATOM 162 CB ASP A 9 1.387 -4.675 -2.604 0.00 0.00 C +ATOM 163 CG ASP A 9 2.379 -4.929 -3.745 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.947 -6.037 -3.844 0.00 0.00 O +ATOM 165 OD2 ASP A 9 2.565 -3.967 -4.523 0.00 0.00 O +ATOM 166 H ASP A 9 -0.766 -4.537 -1.399 0.00 0.00 H +ATOM 167 HA ASP A 9 0.643 -6.697 -2.737 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.598 -4.057 -2.988 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.882 -4.089 -1.828 0.00 0.00 H +ATOM 170 N GLY A 10 1.186 -6.365 0.446 0.00 0.00 N +ATOM 171 CA GLY A 10 1.973 -6.740 1.632 0.00 0.00 C +ATOM 172 C GLY A 10 2.532 -5.564 2.451 0.00 0.00 C +ATOM 173 O GLY A 10 3.354 -5.783 3.347 0.00 0.00 O +ATOM 174 H GLY A 10 0.256 -5.985 0.605 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.333 -7.328 2.291 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.812 -7.373 1.342 0.00 0.00 H +ATOM 177 N GLY A 11 2.105 -4.325 2.171 0.00 0.00 N +ATOM 178 CA GLY A 11 2.505 -3.133 2.918 0.00 0.00 C +ATOM 179 C GLY A 11 4.031 -2.908 2.926 0.00 0.00 C +ATOM 180 O GLY A 11 4.638 -2.849 1.855 0.00 0.00 O +ATOM 181 H GLY A 11 1.516 -4.204 1.357 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.038 -2.263 2.459 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.123 -3.226 3.932 0.00 0.00 H +ATOM 184 N PRO A 12 4.693 -2.777 4.097 0.00 0.00 N +ATOM 185 CA PRO A 12 6.148 -2.595 4.163 0.00 0.00 C +ATOM 186 C PRO A 12 6.957 -3.724 3.506 0.00 0.00 C +ATOM 187 O PRO A 12 8.099 -3.504 3.110 0.00 0.00 O +ATOM 188 CB PRO A 12 6.499 -2.497 5.652 0.00 0.00 C +ATOM 189 CG PRO A 12 5.185 -2.111 6.326 0.00 0.00 C +ATOM 190 CD PRO A 12 4.127 -2.769 5.441 0.00 0.00 C +ATOM 191 HA PRO A 12 6.400 -1.655 3.673 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.853 -3.440 6.022 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.273 -1.749 5.829 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.140 -2.494 7.327 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.066 -1.027 6.297 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.932 -3.771 5.772 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.200 -2.199 5.491 0.00 0.00 H +ATOM 198 N SER A 13 6.381 -4.927 3.375 0.00 0.00 N +ATOM 199 CA SER A 13 7.056 -6.106 2.818 0.00 0.00 C +ATOM 200 C SER A 13 7.017 -6.159 1.275 0.00 0.00 C +ATOM 201 O SER A 13 7.448 -7.142 0.680 0.00 0.00 O +ATOM 202 CB SER A 13 6.474 -7.366 3.479 0.00 0.00 C +ATOM 203 OG SER A 13 7.471 -8.354 3.649 0.00 0.00 O +ATOM 204 H SER A 13 5.406 -5.030 3.647 0.00 0.00 H +ATOM 205 HA SER A 13 8.108 -6.044 3.095 0.00 0.00 H +ATOM 206 1HB SER A 13 6.071 -7.105 4.439 0.00 0.00 H +ATOM 207 2HB SER A 13 5.651 -7.761 2.885 0.00 0.00 H +ATOM 208 HG SER A 13 8.161 -8.011 4.225 0.00 0.00 H +ATOM 209 N SER A 14 6.529 -5.095 0.619 0.00 0.00 N +ATOM 210 CA SER A 14 6.302 -5.007 -0.834 0.00 0.00 C +ATOM 211 C SER A 14 7.350 -4.180 -1.591 0.00 0.00 C +ATOM 212 O SER A 14 7.202 -3.947 -2.792 0.00 0.00 O +ATOM 213 CB SER A 14 4.935 -4.369 -1.091 0.00 0.00 C +ATOM 214 OG SER A 14 3.965 -4.957 -0.265 0.00 0.00 O +ATOM 215 H SER A 14 6.105 -4.361 1.178 0.00 0.00 H +ATOM 216 HA SER A 14 6.289 -6.011 -1.260 0.00 0.00 H +ATOM 217 1HB SER A 14 4.989 -3.318 -0.882 0.00 0.00 H +ATOM 218 2HB SER A 14 4.656 -4.489 -2.138 0.00 0.00 H +ATOM 219 HG SER A 14 3.647 -5.806 -0.666 0.00 0.00 H +ATOM 220 N GLY A 15 8.373 -3.654 -0.908 0.00 0.00 N +ATOM 221 CA GLY A 15 9.445 -2.839 -1.497 0.00 0.00 C +ATOM 222 C GLY A 15 9.049 -1.393 -1.840 0.00 0.00 C +ATOM 223 O GLY A 15 9.855 -0.483 -1.659 0.00 0.00 O +ATOM 224 H GLY A 15 8.407 -3.857 0.081 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.287 -2.809 -0.807 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.786 -3.320 -2.417 0.00 0.00 H +ATOM 227 N ARG A 16 7.819 -1.163 -2.323 0.00 0.00 N +ATOM 228 CA ARG A 16 7.267 0.167 -2.623 0.00 0.00 C +ATOM 229 C ARG A 16 6.861 0.912 -1.332 0.00 0.00 C +ATOM 230 O ARG A 16 6.127 0.334 -0.526 0.00 0.00 O +ATOM 231 CB ARG A 16 6.068 -0.003 -3.571 0.00 0.00 C +ATOM 232 CG ARG A 16 5.414 1.333 -3.977 0.00 0.00 C +ATOM 233 CD ARG A 16 4.325 1.183 -5.049 0.00 0.00 C +ATOM 234 NE ARG A 16 3.153 0.425 -4.574 0.00 0.00 N +ATOM 235 CZ ARG A 16 2.950 -0.885 -4.652 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.781 -1.719 -5.224 0.00 0.00 N +ATOM 237 NH2 ARG A 16 1.882 -1.432 -4.137 0.00 0.00 N +ATOM 238 H ARG A 16 7.253 -1.991 -2.486 0.00 0.00 H +ATOM 239 HA ARG A 16 8.044 0.730 -3.139 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.405 -0.501 -4.460 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.323 -0.632 -3.081 0.00 0.00 H +ATOM 242 1HG ARG A 16 4.972 1.774 -3.104 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.184 1.994 -4.374 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.002 2.161 -5.348 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.750 0.718 -5.940 0.00 0.00 H +ATOM 246 HE ARG A 16 2.420 0.960 -4.143 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.628 -1.423 -5.666 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.523 -2.718 -5.142 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 1.142 -0.941 -3.681 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 1.880 -2.460 -4.219 0.00 0.00 H +ATOM 251 N PRO A 17 7.251 2.191 -1.139 0.00 0.00 N +ATOM 252 CA PRO A 17 6.871 2.981 0.038 0.00 0.00 C +ATOM 253 C PRO A 17 5.351 3.255 0.119 0.00 0.00 C +ATOM 254 O PRO A 17 4.652 3.132 -0.890 0.00 0.00 O +ATOM 255 CB PRO A 17 7.673 4.286 -0.077 0.00 0.00 C +ATOM 256 CG PRO A 17 7.906 4.435 -1.577 0.00 0.00 C +ATOM 257 CD PRO A 17 8.086 2.989 -2.028 0.00 0.00 C +ATOM 258 HA PRO A 17 7.180 2.447 0.936 0.00 0.00 H +ATOM 259 1HB PRO A 17 7.111 5.116 0.307 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.633 4.169 0.430 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.061 4.889 -2.058 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.783 5.042 -1.795 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.767 2.872 -3.046 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.129 2.692 -1.905 0.00 0.00 H +ATOM 265 N PRO A 18 4.829 3.643 1.300 0.00 0.00 N +ATOM 266 CA PRO A 18 3.403 3.904 1.495 0.00 0.00 C +ATOM 267 C PRO A 18 2.923 5.149 0.722 0.00 0.00 C +ATOM 268 O PRO A 18 3.644 6.147 0.672 0.00 0.00 O +ATOM 269 CB PRO A 18 3.222 4.081 3.006 0.00 0.00 C +ATOM 270 CG PRO A 18 4.595 4.541 3.490 0.00 0.00 C +ATOM 271 CD PRO A 18 5.551 3.810 2.554 0.00 0.00 C +ATOM 272 HA PRO A 18 2.843 3.030 1.174 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.475 4.822 3.217 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.979 3.120 3.459 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.701 5.605 3.396 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.768 4.278 4.535 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.440 4.391 2.399 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.790 2.828 2.968 0.00 0.00 H +ATOM 279 N PRO A 19 1.700 5.129 0.152 0.00 0.00 N +ATOM 280 CA PRO A 19 1.125 6.268 -0.557 0.00 0.00 C +ATOM 281 C PRO A 19 0.575 7.306 0.435 0.00 0.00 C +ATOM 282 O PRO A 19 -0.344 7.009 1.205 0.00 0.00 O +ATOM 283 CB PRO A 19 0.028 5.669 -1.440 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.475 4.478 -0.625 0.00 0.00 C +ATOM 285 CD PRO A 19 0.782 3.998 0.106 0.00 0.00 C +ATOM 286 HA PRO A 19 1.879 6.738 -1.190 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.759 6.379 -1.608 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.474 5.307 -2.369 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.233 4.781 0.071 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.891 3.701 -1.265 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.533 3.683 1.101 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.245 3.191 -0.461 0.00 0.00 H +ATOM 293 N SER A 20 1.145 8.513 0.410 0.00 0.00 N +ATOM 294 CA SER A 20 0.696 9.699 1.148 0.00 0.00 C +ATOM 295 C SER A 20 -0.231 10.590 0.317 0.00 0.00 C +ATOM 296 O SER A 20 -1.174 11.122 0.943 0.00 0.00 O +ATOM 297 CB SER A 20 1.911 10.475 1.671 0.00 0.00 C +ATOM 298 OG SER A 20 2.908 10.615 0.673 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.010 10.716 -0.908 0.00 0.00 O +ATOM 300 H SER A 20 1.907 8.704 -0.228 0.00 0.00 H +ATOM 301 HA SER A 20 0.105 9.384 2.006 0.00 0.00 H +ATOM 302 1HB SER A 20 1.593 11.450 1.985 0.00 0.00 H +ATOM 303 2HB SER A 20 2.334 9.927 2.515 0.00 0.00 H +ATOM 304 HG SER A 20 3.569 11.243 0.968 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 3 +ATOM 1 N ASN A 1 -6.589 7.754 -0.571 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.389 6.514 -0.405 0.00 0.00 C +ATOM 3 C ASN A 1 -6.780 5.255 -1.052 0.00 0.00 C +ATOM 4 O ASN A 1 -7.487 4.266 -1.200 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.845 6.767 -0.857 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.521 7.797 0.047 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -8.922 8.257 1.009 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.737 8.213 -0.242 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.686 7.665 -0.127 0.00 0.00 H +ATOM 10 2H ASN A 1 -6.476 7.977 -1.550 0.00 0.00 H +ATOM 11 3H ASN A 1 -7.086 8.512 -0.117 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.439 6.298 0.664 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.842 7.132 -1.866 0.00 0.00 H +ATOM 14 2HB ASN A 1 -9.424 5.843 -0.797 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -11.261 7.891 -1.039 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -11.125 8.874 0.414 0.00 0.00 H +ATOM 17 N LEU A 2 -5.480 5.231 -1.392 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.832 4.056 -2.001 0.00 0.00 C +ATOM 19 C LEU A 2 -4.184 3.091 -0.988 0.00 0.00 C +ATOM 20 O LEU A 2 -3.640 2.061 -1.389 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.822 4.536 -3.062 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.511 4.943 -4.385 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.400 6.448 -4.640 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.900 4.181 -5.563 0.00 0.00 C +ATOM 25 H LEU A 2 -4.873 6.022 -1.250 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.585 3.455 -2.516 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.291 5.384 -2.674 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.120 3.726 -3.266 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.571 4.692 -4.345 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.890 6.998 -3.839 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.352 6.744 -4.701 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.890 6.694 -5.582 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.824 4.351 -5.605 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -4.093 3.114 -5.443 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.353 4.513 -6.498 0.00 0.00 H +ATOM 36 N TYR A 3 -4.252 3.387 0.316 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.584 2.609 1.367 0.00 0.00 C +ATOM 38 C TYR A 3 -4.003 1.131 1.375 0.00 0.00 C +ATOM 39 O TYR A 3 -3.167 0.257 1.584 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.828 3.261 2.737 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.625 3.147 3.649 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.668 4.180 3.663 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.431 2.000 4.441 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.512 4.070 4.456 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.274 1.880 5.234 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.306 2.910 5.235 0.00 0.00 C +ATOM 47 OH TYR A 3 0.828 2.769 5.969 0.00 0.00 O +ATOM 48 H TYR A 3 -4.725 4.233 0.586 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.512 2.640 1.167 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.053 4.300 2.590 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.698 2.806 3.217 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.819 5.061 3.058 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.165 1.208 4.426 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.213 4.873 4.463 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.103 1.003 5.839 0.00 0.00 H +ATOM 56 HH TYR A 3 1.448 3.481 5.798 0.00 0.00 H +ATOM 57 N ILE A 4 -5.279 0.849 1.085 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.832 -0.507 0.951 0.00 0.00 C +ATOM 59 C ILE A 4 -5.162 -1.250 -0.218 0.00 0.00 C +ATOM 60 O ILE A 4 -4.774 -2.406 -0.080 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.364 -0.433 0.749 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.090 0.338 1.884 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.975 -1.842 0.631 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.163 1.282 1.326 0.00 0.00 C +ATOM 65 H ILE A 4 -5.896 1.633 0.934 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.625 -1.065 1.865 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.545 0.087 -0.194 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.556 -0.369 2.543 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.392 0.938 2.466 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.611 -2.347 -0.263 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.710 -2.438 1.506 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.061 -1.773 0.565 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -8.695 2.037 0.690 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.891 0.720 0.741 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.673 1.781 2.148 0.00 0.00 H +ATOM 76 N GLN A 5 -5.009 -0.575 -1.365 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.335 -1.103 -2.553 0.00 0.00 C +ATOM 78 C GLN A 5 -2.863 -1.419 -2.249 0.00 0.00 C +ATOM 79 O GLN A 5 -2.395 -2.511 -2.553 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.497 -0.107 -3.724 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.929 -0.785 -5.036 0.00 0.00 C +ATOM 82 CD GLN A 5 -3.943 -1.843 -5.517 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.193 -3.032 -5.373 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -2.824 -1.457 -6.094 0.00 0.00 N +ATOM 85 H GLN A 5 -5.260 0.403 -1.368 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.818 -2.043 -2.816 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.239 0.620 -3.454 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.566 0.435 -3.888 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.882 -1.252 -4.881 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.049 -0.026 -5.809 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -2.586 -0.491 -6.238 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -2.170 -2.206 -6.277 0.00 0.00 H +ATOM 93 N TRP A 6 -2.154 -0.497 -1.588 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.771 -0.717 -1.152 0.00 0.00 C +ATOM 95 C TRP A 6 -0.632 -1.844 -0.111 0.00 0.00 C +ATOM 96 O TRP A 6 0.256 -2.687 -0.229 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.212 0.604 -0.620 0.00 0.00 C +ATOM 98 CG TRP A 6 1.197 0.514 -0.129 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.296 0.452 -0.915 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.679 0.425 1.247 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.420 0.332 -0.121 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.101 0.324 1.215 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.066 0.422 2.519 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.882 0.249 2.375 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.839 0.334 3.694 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.243 0.260 3.625 0.00 0.00 C +ATOM 107 H TRP A 6 -2.607 0.391 -1.386 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.178 -1.016 -2.020 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.248 1.329 -1.411 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.841 0.958 0.197 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.289 0.483 -1.998 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.387 0.296 -0.451 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.010 0.498 2.586 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.957 0.179 2.290 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.352 0.341 4.659 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.829 0.212 4.531 0.00 0.00 H +ATOM 117 N LEU A 7 -1.520 -1.904 0.893 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.537 -3.007 1.858 0.00 0.00 C +ATOM 119 C LEU A 7 -1.844 -4.359 1.198 0.00 0.00 C +ATOM 120 O LEU A 7 -1.228 -5.350 1.586 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.520 -2.723 3.008 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.010 -1.728 4.070 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.122 -1.497 5.096 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.775 -2.236 4.826 0.00 0.00 C +ATOM 125 H LEU A 7 -2.201 -1.155 0.992 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.534 -3.107 2.271 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.422 -2.325 2.584 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.740 -3.665 3.514 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.763 -0.780 3.597 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.006 -1.098 4.599 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.380 -2.437 5.585 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.791 -0.787 5.854 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -0.973 -3.222 5.249 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 0.080 -2.296 4.155 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.521 -1.546 5.630 0.00 0.00 H +ATOM 136 N LYS A 8 -2.716 -4.413 0.176 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.930 -5.631 -0.629 0.00 0.00 C +ATOM 138 C LYS A 8 -1.639 -6.169 -1.261 0.00 0.00 C +ATOM 139 O LYS A 8 -1.492 -7.384 -1.349 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.989 -5.413 -1.725 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.424 -5.638 -1.230 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.411 -5.713 -2.404 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.685 -4.341 -3.038 0.00 0.00 C +ATOM 144 NZ LYS A 8 -6.352 -4.311 -4.482 0.00 0.00 N +ATOM 145 H LYS A 8 -3.241 -3.572 -0.051 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.274 -6.422 0.036 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.906 -4.405 -2.084 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.797 -6.130 -2.525 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.464 -6.558 -0.680 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.719 -4.846 -0.542 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.003 -6.362 -3.154 0.00 0.00 H +ATOM 152 2HD LYS A 8 -7.356 -6.108 -2.033 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.726 -4.108 -2.919 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.117 -3.577 -2.500 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -5.352 -4.135 -4.636 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -6.602 -5.176 -4.938 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -6.827 -3.549 -4.942 0.00 0.00 H +ATOM 158 N ASP A 9 -0.694 -5.301 -1.644 0.00 0.00 N +ATOM 159 CA ASP A 9 0.627 -5.715 -2.141 0.00 0.00 C +ATOM 160 C ASP A 9 1.545 -6.280 -1.027 0.00 0.00 C +ATOM 161 O ASP A 9 2.653 -6.733 -1.322 0.00 0.00 O +ATOM 162 CB ASP A 9 1.362 -4.545 -2.833 0.00 0.00 C +ATOM 163 CG ASP A 9 0.631 -3.826 -3.974 0.00 0.00 C +ATOM 164 OD1 ASP A 9 0.959 -2.631 -4.185 0.00 0.00 O +ATOM 165 OD2 ASP A 9 -0.157 -4.486 -4.688 0.00 0.00 O +ATOM 166 H ASP A 9 -0.905 -4.313 -1.586 0.00 0.00 H +ATOM 167 HA ASP A 9 0.482 -6.505 -2.880 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.582 -3.813 -2.080 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.279 -4.946 -3.266 0.00 0.00 H +ATOM 170 N GLY A 10 1.135 -6.232 0.250 0.00 0.00 N +ATOM 171 CA GLY A 10 1.917 -6.656 1.417 0.00 0.00 C +ATOM 172 C GLY A 10 2.414 -5.500 2.294 0.00 0.00 C +ATOM 173 O GLY A 10 3.054 -5.736 3.320 0.00 0.00 O +ATOM 174 H GLY A 10 0.200 -5.879 0.438 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.298 -7.304 2.035 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.784 -7.233 1.096 0.00 0.00 H +ATOM 177 N GLY A 11 2.142 -4.244 1.916 0.00 0.00 N +ATOM 178 CA GLY A 11 2.643 -3.083 2.643 0.00 0.00 C +ATOM 179 C GLY A 11 4.182 -3.056 2.660 0.00 0.00 C +ATOM 180 O GLY A 11 4.791 -3.197 1.594 0.00 0.00 O +ATOM 181 H GLY A 11 1.623 -4.089 1.059 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.286 -2.178 2.156 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.244 -3.115 3.654 0.00 0.00 H +ATOM 184 N PRO A 12 4.842 -2.900 3.832 0.00 0.00 N +ATOM 185 CA PRO A 12 6.302 -2.829 3.917 0.00 0.00 C +ATOM 186 C PRO A 12 7.030 -4.020 3.276 0.00 0.00 C +ATOM 187 O PRO A 12 8.132 -3.843 2.757 0.00 0.00 O +ATOM 188 CB PRO A 12 6.642 -2.717 5.411 0.00 0.00 C +ATOM 189 CG PRO A 12 5.352 -2.223 6.059 0.00 0.00 C +ATOM 190 CD PRO A 12 4.260 -2.809 5.166 0.00 0.00 C +ATOM 191 HA PRO A 12 6.628 -1.916 3.416 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.925 -3.673 5.809 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.463 -2.016 5.581 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.263 -2.588 7.064 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.314 -1.133 6.017 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.974 -3.782 5.516 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.381 -2.165 5.191 0.00 0.00 H +ATOM 198 N SER A 13 6.424 -5.220 3.257 0.00 0.00 N +ATOM 199 CA SER A 13 7.055 -6.413 2.675 0.00 0.00 C +ATOM 200 C SER A 13 7.230 -6.327 1.155 0.00 0.00 C +ATOM 201 O SER A 13 8.109 -6.992 0.615 0.00 0.00 O +ATOM 202 CB SER A 13 6.276 -7.683 3.042 0.00 0.00 C +ATOM 203 OG SER A 13 5.083 -7.810 2.296 0.00 0.00 O +ATOM 204 H SER A 13 5.479 -5.307 3.613 0.00 0.00 H +ATOM 205 HA SER A 13 8.051 -6.506 3.109 0.00 0.00 H +ATOM 206 1HB SER A 13 6.897 -8.537 2.850 0.00 0.00 H +ATOM 207 2HB SER A 13 6.031 -7.660 4.105 0.00 0.00 H +ATOM 208 HG SER A 13 5.284 -8.181 1.431 0.00 0.00 H +ATOM 209 N SER A 14 6.424 -5.506 0.464 0.00 0.00 N +ATOM 210 CA SER A 14 6.562 -5.254 -0.977 0.00 0.00 C +ATOM 211 C SER A 14 7.683 -4.260 -1.316 0.00 0.00 C +ATOM 212 O SER A 14 7.958 -4.028 -2.492 0.00 0.00 O +ATOM 213 CB SER A 14 5.232 -4.754 -1.561 0.00 0.00 C +ATOM 214 OG SER A 14 4.689 -5.759 -2.390 0.00 0.00 O +ATOM 215 H SER A 14 5.730 -4.974 0.980 0.00 0.00 H +ATOM 216 HA SER A 14 6.816 -6.193 -1.471 0.00 0.00 H +ATOM 217 1HB SER A 14 4.548 -4.536 -0.764 0.00 0.00 H +ATOM 218 2HB SER A 14 5.400 -3.866 -2.170 0.00 0.00 H +ATOM 219 HG SER A 14 3.898 -6.171 -1.941 0.00 0.00 H +ATOM 220 N GLY A 15 8.320 -3.632 -0.318 0.00 0.00 N +ATOM 221 CA GLY A 15 9.452 -2.715 -0.493 0.00 0.00 C +ATOM 222 C GLY A 15 9.088 -1.324 -1.031 0.00 0.00 C +ATOM 223 O GLY A 15 9.745 -0.349 -0.674 0.00 0.00 O +ATOM 224 H GLY A 15 8.043 -3.844 0.636 0.00 0.00 H +ATOM 225 1HA GLY A 15 9.948 -2.591 0.468 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.165 -3.167 -1.183 0.00 0.00 H +ATOM 227 N ARG A 16 8.043 -1.206 -1.866 0.00 0.00 N +ATOM 228 CA ARG A 16 7.509 0.078 -2.349 0.00 0.00 C +ATOM 229 C ARG A 16 6.942 0.905 -1.177 0.00 0.00 C +ATOM 230 O ARG A 16 6.183 0.348 -0.380 0.00 0.00 O +ATOM 231 CB ARG A 16 6.426 -0.188 -3.413 0.00 0.00 C +ATOM 232 CG ARG A 16 5.953 1.107 -4.102 0.00 0.00 C +ATOM 233 CD ARG A 16 4.797 0.884 -5.083 0.00 0.00 C +ATOM 234 NE ARG A 16 5.176 -0.019 -6.186 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.649 -1.200 -6.493 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.626 -1.720 -5.848 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.165 -1.891 -7.482 0.00 0.00 N +ATOM 238 H ARG A 16 7.615 -2.078 -2.159 0.00 0.00 H +ATOM 239 HA ARG A 16 8.337 0.615 -2.807 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.828 -0.848 -4.157 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.573 -0.680 -2.944 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.630 1.797 -3.346 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.793 1.555 -4.637 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.970 0.454 -4.552 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.515 1.851 -5.503 0.00 0.00 H +ATOM 246 HE ARG A 16 5.943 0.289 -6.761 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 3.180 -1.223 -5.093 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.231 -2.612 -6.088 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.951 -1.541 -8.001 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.778 -2.789 -7.706 0.00 0.00 H +ATOM 251 N PRO A 17 7.224 2.222 -1.082 0.00 0.00 N +ATOM 252 CA PRO A 17 6.670 3.081 -0.030 0.00 0.00 C +ATOM 253 C PRO A 17 5.138 3.240 -0.131 0.00 0.00 C +ATOM 254 O PRO A 17 4.571 3.021 -1.206 0.00 0.00 O +ATOM 255 CB PRO A 17 7.384 4.430 -0.195 0.00 0.00 C +ATOM 256 CG PRO A 17 7.755 4.460 -1.675 0.00 0.00 C +ATOM 257 CD PRO A 17 8.084 2.998 -1.964 0.00 0.00 C +ATOM 258 HA PRO A 17 6.923 2.656 0.942 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.729 5.243 0.053 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.293 4.437 0.408 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.932 4.798 -2.274 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.607 5.114 -1.870 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.877 2.763 -2.990 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.127 2.798 -1.720 0.00 0.00 H +ATOM 265 N PRO A 18 4.461 3.639 0.965 0.00 0.00 N +ATOM 266 CA PRO A 18 3.015 3.863 0.981 0.00 0.00 C +ATOM 267 C PRO A 18 2.598 5.121 0.193 0.00 0.00 C +ATOM 268 O PRO A 18 3.428 5.993 -0.068 0.00 0.00 O +ATOM 269 CB PRO A 18 2.645 3.981 2.465 0.00 0.00 C +ATOM 270 CG PRO A 18 3.916 4.525 3.112 0.00 0.00 C +ATOM 271 CD PRO A 18 5.026 3.878 2.287 0.00 0.00 C +ATOM 272 HA PRO A 18 2.518 2.995 0.551 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.825 4.659 2.602 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.430 2.993 2.869 0.00 0.00 H +ATOM 275 1HG PRO A 18 3.957 5.595 3.042 0.00 0.00 H +ATOM 276 2HG PRO A 18 3.983 4.249 4.165 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.870 4.536 2.218 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.309 2.925 2.736 0.00 0.00 H +ATOM 279 N PRO A 19 1.304 5.247 -0.167 0.00 0.00 N +ATOM 280 CA PRO A 19 0.774 6.401 -0.902 0.00 0.00 C +ATOM 281 C PRO A 19 0.569 7.659 -0.043 0.00 0.00 C +ATOM 282 O PRO A 19 0.515 8.755 -0.597 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.568 5.927 -1.467 0.00 0.00 C +ATOM 284 CG PRO A 19 -1.027 4.877 -0.459 0.00 0.00 C +ATOM 285 CD PRO A 19 0.279 4.224 -0.018 0.00 0.00 C +ATOM 286 HA PRO A 19 1.443 6.655 -1.727 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.269 6.738 -1.523 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.411 5.458 -2.438 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.528 5.334 0.372 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.691 4.148 -0.918 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.212 3.908 1.005 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.512 3.395 -0.684 0.00 0.00 H +ATOM 293 N SER A 20 0.445 7.509 1.283 0.00 0.00 N +ATOM 294 CA SER A 20 0.349 8.586 2.279 0.00 0.00 C +ATOM 295 C SER A 20 1.387 8.402 3.380 0.00 0.00 C +ATOM 296 O SER A 20 1.887 9.446 3.847 0.00 0.00 O +ATOM 297 CB SER A 20 -1.064 8.699 2.867 0.00 0.00 C +ATOM 298 OG SER A 20 -1.468 7.515 3.527 0.00 0.00 O +ATOM 299 OXT SER A 20 1.609 7.229 3.761 0.00 0.00 O +ATOM 300 H SER A 20 0.533 6.584 1.677 0.00 0.00 H +ATOM 301 HA SER A 20 0.581 9.535 1.797 0.00 0.00 H +ATOM 302 1HB SER A 20 -1.081 9.509 3.570 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.771 8.923 2.068 0.00 0.00 H +ATOM 304 HG SER A 20 -0.877 7.386 4.279 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 4 +ATOM 1 N ASN A 1 -7.996 5.298 -0.779 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.990 4.067 -1.611 0.00 0.00 C +ATOM 3 C ASN A 1 -6.595 3.515 -1.890 0.00 0.00 C +ATOM 4 O ASN A 1 -6.409 2.326 -1.667 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.817 4.236 -2.891 0.00 0.00 C +ATOM 6 CG ASN A 1 -10.260 4.485 -2.482 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.595 5.590 -2.090 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -11.097 3.465 -2.420 0.00 0.00 N +ATOM 9 1H ASN A 1 -7.499 5.145 0.089 0.00 0.00 H +ATOM 10 2H ASN A 1 -7.580 6.071 -1.279 0.00 0.00 H +ATOM 11 3H ASN A 1 -8.957 5.549 -0.571 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.483 3.285 -1.032 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.449 5.070 -3.456 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.756 3.334 -3.502 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -10.855 2.524 -2.688 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -12.028 3.700 -2.110 0.00 0.00 H +ATOM 17 N LEU A 2 -5.616 4.322 -2.330 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.255 3.853 -2.649 0.00 0.00 C +ATOM 19 C LEU A 2 -3.609 2.984 -1.550 0.00 0.00 C +ATOM 20 O LEU A 2 -2.969 1.976 -1.846 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.364 5.074 -2.976 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.035 5.287 -4.464 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -2.298 4.086 -5.067 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -4.283 5.609 -5.288 0.00 0.00 C +ATOM 25 H LEU A 2 -5.808 5.284 -2.567 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.324 3.212 -3.525 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.868 5.953 -2.622 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.413 4.965 -2.461 0.00 0.00 H +ATOM 29 HG LEU A 2 -2.366 6.146 -4.524 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -1.513 3.750 -4.388 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.985 3.262 -5.255 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -1.840 4.380 -6.010 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -4.988 4.779 -5.260 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -4.758 6.509 -4.897 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.993 5.793 -6.323 0.00 0.00 H +ATOM 36 N TYR A 3 -3.829 3.342 -0.280 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.352 2.587 0.881 0.00 0.00 C +ATOM 38 C TYR A 3 -3.885 1.142 0.933 0.00 0.00 C +ATOM 39 O TYR A 3 -3.182 0.255 1.410 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.714 3.350 2.166 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.571 3.426 3.153 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.826 4.614 3.277 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.238 2.307 3.939 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.758 4.692 4.190 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.172 2.377 4.854 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.434 3.573 4.988 0.00 0.00 C +ATOM 47 OH TYR A 3 0.564 3.651 5.909 0.00 0.00 O +ATOM 48 H TYR A 3 -4.312 4.211 -0.115 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.266 2.531 0.815 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.003 4.349 1.900 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.571 2.877 2.649 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.070 5.479 2.676 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -2.810 1.398 3.838 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.198 5.613 4.266 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -0.916 1.531 5.472 0.00 0.00 H +ATOM 56 HH TYR A 3 0.792 4.562 6.104 0.00 0.00 H +ATOM 57 N ILE A 4 -5.099 0.891 0.414 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.705 -0.444 0.348 0.00 0.00 C +ATOM 59 C ILE A 4 -4.882 -1.332 -0.589 0.00 0.00 C +ATOM 60 O ILE A 4 -4.466 -2.411 -0.181 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.191 -0.380 -0.086 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.038 0.622 0.737 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.836 -1.778 -0.048 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.051 0.390 2.254 0.00 0.00 C +ATOM 65 H ILE A 4 -5.574 1.642 -0.074 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.657 -0.892 1.341 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.230 -0.049 -1.125 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -7.652 1.607 0.557 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -9.066 0.590 0.375 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.351 -2.438 -0.767 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.744 -2.214 0.948 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.891 -1.708 -0.312 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -8.463 -0.592 2.485 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -7.043 0.470 2.659 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.674 1.150 2.725 0.00 0.00 H +ATOM 76 N GLN A 5 -4.600 -0.857 -1.811 0.00 0.00 N +ATOM 77 CA GLN A 5 -3.712 -1.519 -2.775 0.00 0.00 C +ATOM 78 C GLN A 5 -2.314 -1.759 -2.183 0.00 0.00 C +ATOM 79 O GLN A 5 -1.803 -2.878 -2.255 0.00 0.00 O +ATOM 80 CB GLN A 5 -3.634 -0.674 -4.062 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.792 -0.953 -5.031 0.00 0.00 C +ATOM 82 CD GLN A 5 -4.542 -2.214 -5.853 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.848 -3.320 -5.436 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -3.968 -2.093 -7.036 0.00 0.00 N +ATOM 85 H GLN A 5 -4.948 0.063 -2.038 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.122 -2.500 -3.019 0.00 0.00 H +ATOM 87 1HB GLN A 5 -3.656 0.364 -3.792 0.00 0.00 H +ATOM 88 2HB GLN A 5 -2.694 -0.880 -4.579 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.696 -1.078 -4.467 0.00 0.00 H +ATOM 90 2HG GLN A 5 -4.898 -0.106 -5.710 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -3.693 -1.205 -7.419 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -3.810 -2.965 -7.512 0.00 0.00 H +ATOM 93 N TRP A 6 -1.713 -0.734 -1.561 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.400 -0.841 -0.917 0.00 0.00 C +ATOM 95 C TRP A 6 -0.353 -1.931 0.171 0.00 0.00 C +ATOM 96 O TRP A 6 0.567 -2.757 0.175 0.00 0.00 O +ATOM 97 CB TRP A 6 0.005 0.531 -0.361 0.00 0.00 C +ATOM 98 CG TRP A 6 1.372 0.565 0.247 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.532 0.625 -0.442 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.747 0.483 1.657 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.594 0.565 0.438 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.169 0.480 1.743 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.032 0.393 2.872 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.853 0.395 2.965 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.707 0.293 4.104 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.112 0.296 4.154 0.00 0.00 C +ATOM 107 H TRP A 6 -2.186 0.167 -1.566 0.00 0.00 H +ATOM 108 HA TRP A 6 0.329 -1.126 -1.676 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.024 1.242 -1.164 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.716 0.838 0.395 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.616 0.684 -1.518 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.579 0.565 0.164 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.046 0.398 2.841 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.933 0.389 2.975 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.142 0.218 5.022 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.621 0.223 5.106 0.00 0.00 H +ATOM 117 N LEU A 7 -1.360 -1.961 1.060 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.529 -3.019 2.059 0.00 0.00 C +ATOM 119 C LEU A 7 -1.819 -4.386 1.425 0.00 0.00 C +ATOM 120 O LEU A 7 -1.263 -5.376 1.896 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.645 -2.652 3.058 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.265 -1.546 4.060 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.504 -1.129 4.860 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.186 -1.989 5.054 0.00 0.00 C +ATOM 125 H LEU A 7 -2.062 -1.224 1.020 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.594 -3.131 2.603 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.499 -2.320 2.500 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.915 -3.543 3.627 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.898 -0.680 3.518 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.273 -0.762 4.181 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.892 -1.977 5.422 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.243 -0.331 5.557 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.516 -2.875 5.597 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.258 -2.212 4.531 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.990 -1.188 5.767 0.00 0.00 H +ATOM 136 N LYS A 8 -2.636 -4.457 0.360 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.000 -5.710 -0.323 0.00 0.00 C +ATOM 138 C LYS A 8 -1.774 -6.506 -0.772 0.00 0.00 C +ATOM 139 O LYS A 8 -1.764 -7.728 -0.650 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.907 -5.437 -1.541 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.842 -6.624 -1.830 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.265 -6.337 -1.328 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.114 -7.612 -1.287 0.00 0.00 C +ATOM 144 NZ LYS A 8 -6.875 -8.381 -0.042 0.00 0.00 N +ATOM 145 H LYS A 8 -3.089 -3.595 0.056 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.534 -6.330 0.396 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.501 -4.566 -1.344 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.287 -5.248 -2.418 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.871 -6.798 -2.888 0.00 0.00 H +ATOM 150 2HG LYS A 8 -4.454 -7.529 -1.364 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.209 -5.923 -0.340 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.730 -5.625 -2.013 0.00 0.00 H +ATOM 153 1HE LYS A 8 -8.151 -7.343 -1.337 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.877 -8.220 -2.164 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -5.889 -8.591 0.053 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.168 -7.840 0.762 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -7.394 -9.248 -0.055 0.00 0.00 H +ATOM 158 N ASP A 9 -0.756 -5.802 -1.272 0.00 0.00 N +ATOM 159 CA ASP A 9 0.519 -6.369 -1.719 0.00 0.00 C +ATOM 160 C ASP A 9 1.466 -6.750 -0.552 0.00 0.00 C +ATOM 161 O ASP A 9 2.432 -7.481 -0.764 0.00 0.00 O +ATOM 162 CB ASP A 9 1.147 -5.356 -2.691 0.00 0.00 C +ATOM 163 CG ASP A 9 2.157 -5.999 -3.643 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.367 -5.733 -3.478 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.687 -6.708 -4.559 0.00 0.00 O +ATOM 166 H ASP A 9 -0.906 -4.806 -1.394 0.00 0.00 H +ATOM 167 HA ASP A 9 0.309 -7.281 -2.280 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.365 -4.908 -3.272 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.602 -4.539 -2.136 0.00 0.00 H +ATOM 170 N GLY A 10 1.166 -6.322 0.686 0.00 0.00 N +ATOM 171 CA GLY A 10 1.940 -6.628 1.899 0.00 0.00 C +ATOM 172 C GLY A 10 2.455 -5.411 2.687 0.00 0.00 C +ATOM 173 O GLY A 10 3.258 -5.576 3.605 0.00 0.00 O +ATOM 174 H GLY A 10 0.283 -5.838 0.808 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.308 -7.208 2.569 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.799 -7.243 1.641 0.00 0.00 H +ATOM 177 N GLY A 11 2.025 -4.190 2.349 0.00 0.00 N +ATOM 178 CA GLY A 11 2.501 -2.933 2.929 0.00 0.00 C +ATOM 179 C GLY A 11 4.035 -2.809 2.947 0.00 0.00 C +ATOM 180 O GLY A 11 4.636 -2.640 1.883 0.00 0.00 O +ATOM 181 H GLY A 11 1.426 -4.116 1.535 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.113 -2.118 2.323 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.088 -2.828 3.930 0.00 0.00 H +ATOM 184 N PRO A 12 4.714 -2.887 4.112 0.00 0.00 N +ATOM 185 CA PRO A 12 6.177 -2.830 4.177 0.00 0.00 C +ATOM 186 C PRO A 12 6.894 -3.885 3.322 0.00 0.00 C +ATOM 187 O PRO A 12 8.009 -3.632 2.870 0.00 0.00 O +ATOM 188 CB PRO A 12 6.543 -2.996 5.656 0.00 0.00 C +ATOM 189 CG PRO A 12 5.275 -2.581 6.397 0.00 0.00 C +ATOM 190 CD PRO A 12 4.158 -3.015 5.451 0.00 0.00 C +ATOM 191 HA PRO A 12 6.493 -1.842 3.843 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.796 -4.015 5.874 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.390 -2.365 5.930 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.198 -3.086 7.340 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.255 -1.495 6.510 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.876 -4.032 5.645 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.286 -2.377 5.597 0.00 0.00 H +ATOM 198 N SER A 13 6.272 -5.048 3.067 0.00 0.00 N +ATOM 199 CA SER A 13 6.859 -6.106 2.234 0.00 0.00 C +ATOM 200 C SER A 13 6.522 -5.983 0.737 0.00 0.00 C +ATOM 201 O SER A 13 6.868 -6.883 -0.022 0.00 0.00 O +ATOM 202 CB SER A 13 6.517 -7.490 2.809 0.00 0.00 C +ATOM 203 OG SER A 13 5.152 -7.809 2.665 0.00 0.00 O +ATOM 204 H SER A 13 5.336 -5.211 3.432 0.00 0.00 H +ATOM 205 HA SER A 13 7.945 -6.021 2.301 0.00 0.00 H +ATOM 206 1HB SER A 13 7.100 -8.230 2.296 0.00 0.00 H +ATOM 207 2HB SER A 13 6.776 -7.504 3.869 0.00 0.00 H +ATOM 208 HG SER A 13 4.960 -7.945 1.731 0.00 0.00 H +ATOM 209 N SER A 14 5.879 -4.888 0.300 0.00 0.00 N +ATOM 210 CA SER A 14 5.483 -4.641 -1.100 0.00 0.00 C +ATOM 211 C SER A 14 6.594 -4.035 -1.979 0.00 0.00 C +ATOM 212 O SER A 14 6.388 -3.818 -3.171 0.00 0.00 O +ATOM 213 CB SER A 14 4.291 -3.674 -1.143 0.00 0.00 C +ATOM 214 OG SER A 14 3.244 -4.095 -0.294 0.00 0.00 O +ATOM 215 H SER A 14 5.551 -4.209 0.982 0.00 0.00 H +ATOM 216 HA SER A 14 5.168 -5.582 -1.554 0.00 0.00 H +ATOM 217 1HB SER A 14 4.621 -2.702 -0.832 0.00 0.00 H +ATOM 218 2HB SER A 14 3.920 -3.612 -2.167 0.00 0.00 H +ATOM 219 HG SER A 14 2.497 -3.486 -0.373 0.00 0.00 H +ATOM 220 N GLY A 15 7.760 -3.685 -1.413 0.00 0.00 N +ATOM 221 CA GLY A 15 8.865 -3.074 -2.168 0.00 0.00 C +ATOM 222 C GLY A 15 8.636 -1.615 -2.597 0.00 0.00 C +ATOM 223 O GLY A 15 9.329 -1.131 -3.490 0.00 0.00 O +ATOM 224 H GLY A 15 7.882 -3.900 -0.435 0.00 0.00 H +ATOM 225 1HA GLY A 15 9.772 -3.108 -1.566 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.044 -3.662 -3.070 0.00 0.00 H +ATOM 227 N ARG A 16 7.674 -0.910 -1.982 0.00 0.00 N +ATOM 228 CA ARG A 16 7.291 0.476 -2.303 0.00 0.00 C +ATOM 229 C ARG A 16 6.926 1.243 -1.019 0.00 0.00 C +ATOM 230 O ARG A 16 6.299 0.641 -0.143 0.00 0.00 O +ATOM 231 CB ARG A 16 6.095 0.409 -3.275 0.00 0.00 C +ATOM 232 CG ARG A 16 5.718 1.773 -3.872 0.00 0.00 C +ATOM 233 CD ARG A 16 4.496 1.668 -4.787 0.00 0.00 C +ATOM 234 NE ARG A 16 4.170 2.979 -5.381 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.620 3.482 -6.525 0.00 0.00 C +ATOM 236 NH1 ARG A 16 5.433 2.811 -7.310 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.260 4.687 -6.902 0.00 0.00 N +ATOM 238 H ARG A 16 7.165 -1.374 -1.242 0.00 0.00 H +ATOM 239 HA ARG A 16 8.134 0.962 -2.796 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.346 -0.256 -4.078 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.232 -0.006 -2.753 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.497 2.454 -3.073 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.563 2.153 -4.447 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.704 0.968 -5.573 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.644 1.325 -4.197 0.00 0.00 H +ATOM 246 HE ARG A 16 3.562 3.570 -4.839 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 5.714 1.890 -7.023 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 5.768 3.197 -8.173 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 3.648 5.240 -6.327 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.602 5.065 -7.766 0.00 0.00 H +ATOM 251 N PRO A 17 7.244 2.550 -0.887 0.00 0.00 N +ATOM 252 CA PRO A 17 6.834 3.351 0.272 0.00 0.00 C +ATOM 253 C PRO A 17 5.302 3.529 0.364 0.00 0.00 C +ATOM 254 O PRO A 17 4.613 3.423 -0.657 0.00 0.00 O +ATOM 255 CB PRO A 17 7.546 4.701 0.109 0.00 0.00 C +ATOM 256 CG PRO A 17 7.773 4.807 -1.398 0.00 0.00 C +ATOM 257 CD PRO A 17 8.043 3.359 -1.797 0.00 0.00 C +ATOM 258 HA PRO A 17 7.191 2.864 1.180 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.929 5.505 0.461 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.509 4.667 0.619 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.902 5.190 -1.895 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.614 5.459 -1.638 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.743 3.188 -2.813 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.099 3.130 -1.650 0.00 0.00 H +ATOM 265 N PRO A 18 4.761 3.830 1.562 0.00 0.00 N +ATOM 266 CA PRO A 18 3.330 4.041 1.763 0.00 0.00 C +ATOM 267 C PRO A 18 2.857 5.363 1.124 0.00 0.00 C +ATOM 268 O PRO A 18 3.561 6.372 1.215 0.00 0.00 O +ATOM 269 CB PRO A 18 3.122 4.052 3.280 0.00 0.00 C +ATOM 270 CG PRO A 18 4.467 4.528 3.826 0.00 0.00 C +ATOM 271 CD PRO A 18 5.475 3.963 2.826 0.00 0.00 C +ATOM 272 HA PRO A 18 2.789 3.199 1.338 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.336 4.730 3.554 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.928 3.039 3.629 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.513 5.600 3.853 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.649 4.156 4.834 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.306 4.633 2.716 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.808 2.979 3.157 0.00 0.00 H +ATOM 279 N PRO A 19 1.664 5.391 0.501 0.00 0.00 N +ATOM 280 CA PRO A 19 1.089 6.605 -0.071 0.00 0.00 C +ATOM 281 C PRO A 19 0.480 7.494 1.027 0.00 0.00 C +ATOM 282 O PRO A 19 -0.248 6.998 1.889 0.00 0.00 O +ATOM 283 CB PRO A 19 0.030 6.099 -1.056 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.452 4.787 -0.431 0.00 0.00 C +ATOM 285 CD PRO A 19 0.776 4.254 0.301 0.00 0.00 C +ATOM 286 HA PRO A 19 1.850 7.167 -0.612 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.777 6.800 -1.143 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.507 5.887 -2.015 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.258 4.965 0.255 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.783 4.076 -1.188 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.491 3.835 1.247 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.276 3.508 -0.318 0.00 0.00 H +ATOM 293 N SER A 20 0.773 8.801 0.994 0.00 0.00 N +ATOM 294 CA SER A 20 0.156 9.787 1.896 0.00 0.00 C +ATOM 295 C SER A 20 -1.215 10.283 1.430 0.00 0.00 C +ATOM 296 O SER A 20 -1.579 10.082 0.257 0.00 0.00 O +ATOM 297 CB SER A 20 1.058 11.002 2.110 0.00 0.00 C +ATOM 298 OG SER A 20 0.393 11.759 3.099 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.809 10.968 2.306 0.00 0.00 O +ATOM 300 H SER A 20 1.346 9.144 0.240 0.00 0.00 H +ATOM 301 HA SER A 20 -0.001 9.315 2.867 0.00 0.00 H +ATOM 302 1HB SER A 20 2.029 10.699 2.452 0.00 0.00 H +ATOM 303 2HB SER A 20 1.131 11.580 1.186 0.00 0.00 H +ATOM 304 HG SER A 20 -0.584 11.562 2.923 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 5 +ATOM 1 N ASN A 1 -8.175 6.595 -1.658 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.203 6.342 -0.567 0.00 0.00 C +ATOM 3 C ASN A 1 -5.868 5.761 -1.012 0.00 0.00 C +ATOM 4 O ASN A 1 -4.867 6.207 -0.471 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.789 5.475 0.551 0.00 0.00 C +ATOM 6 CG ASN A 1 -8.492 6.367 1.553 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -9.561 6.874 1.264 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -7.884 6.637 2.695 0.00 0.00 N +ATOM 9 1H ASN A 1 -7.762 7.177 -2.374 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.486 5.725 -2.069 0.00 0.00 H +ATOM 11 3H ASN A 1 -8.985 7.069 -1.275 0.00 0.00 H +ATOM 12 HA ASN A 1 -6.948 7.307 -0.124 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.491 4.779 0.135 0.00 0.00 H +ATOM 14 2HB ASN A 1 -6.995 4.925 1.061 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -6.974 6.276 2.941 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -8.390 7.244 3.321 0.00 0.00 H +ATOM 17 N LEU A 2 -5.828 4.741 -1.887 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.612 4.045 -2.368 0.00 0.00 C +ATOM 19 C LEU A 2 -3.979 3.125 -1.303 0.00 0.00 C +ATOM 20 O LEU A 2 -3.517 2.035 -1.641 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.580 5.040 -2.959 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.147 5.962 -4.067 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.532 7.367 -4.057 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.954 5.329 -5.447 0.00 0.00 C +ATOM 25 H LEU A 2 -6.690 4.354 -2.239 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.915 3.389 -3.185 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.214 5.658 -2.162 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.734 4.477 -3.358 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.216 6.098 -3.915 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -3.212 7.650 -3.053 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.676 7.423 -4.729 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.283 8.087 -4.385 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.891 5.203 -5.654 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -4.442 4.355 -5.483 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.390 5.972 -6.210 0.00 0.00 H +ATOM 36 N TYR A 3 -4.034 3.507 -0.022 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.488 2.754 1.113 0.00 0.00 C +ATOM 38 C TYR A 3 -3.999 1.304 1.197 0.00 0.00 C +ATOM 39 O TYR A 3 -3.219 0.398 1.481 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.764 3.518 2.421 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.555 3.588 3.333 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.776 4.762 3.370 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.195 2.479 4.123 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.643 4.831 4.199 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.050 2.538 4.942 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.268 3.716 4.975 0.00 0.00 C +ATOM 47 OH TYR A 3 0.867 3.769 5.724 0.00 0.00 O +ATOM 48 H TYR A 3 -4.320 4.468 0.138 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.408 2.707 0.979 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.066 4.518 2.176 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.590 3.050 2.959 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.027 5.621 2.759 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -2.793 1.578 4.096 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.044 5.734 4.228 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -0.776 1.690 5.552 0.00 0.00 H +ATOM 56 HH TYR A 3 1.327 2.931 5.742 0.00 0.00 H +ATOM 57 N ILE A 4 -5.288 1.067 0.907 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.894 -0.275 0.884 0.00 0.00 C +ATOM 59 C ILE A 4 -5.214 -1.162 -0.172 0.00 0.00 C +ATOM 60 O ILE A 4 -4.782 -2.273 0.130 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.430 -0.201 0.663 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.116 0.772 1.655 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.062 -1.596 0.813 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.454 2.122 1.015 0.00 0.00 C +ATOM 65 H ILE A 4 -5.869 1.867 0.710 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.718 -0.740 1.855 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.627 0.135 -0.357 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.024 0.321 2.007 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.470 0.935 2.519 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.644 -2.289 0.083 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.885 -1.983 1.817 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.137 -1.535 0.640 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.676 2.427 0.316 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.403 2.047 0.483 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.550 2.876 1.798 0.00 0.00 H +ATOM 76 N GLN A 5 -5.080 -0.655 -1.404 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.405 -1.359 -2.496 0.00 0.00 C +ATOM 78 C GLN A 5 -2.908 -1.559 -2.203 0.00 0.00 C +ATOM 79 O GLN A 5 -2.368 -2.623 -2.496 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.637 -0.594 -3.811 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.176 -1.352 -5.070 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.080 -2.517 -5.485 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.806 -3.119 -4.707 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -5.067 -2.886 -6.751 0.00 0.00 N +ATOM 85 H GLN A 5 -5.392 0.289 -1.566 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.856 -2.348 -2.581 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.687 -0.394 -3.904 0.00 0.00 H +ATOM 88 2HB GLN A 5 -4.096 0.353 -3.763 0.00 0.00 H +ATOM 89 1HG GLN A 5 -4.136 -0.654 -5.884 0.00 0.00 H +ATOM 90 2HG GLN A 5 -3.160 -1.723 -4.932 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.471 -2.439 -7.427 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -5.746 -3.581 -7.000 0.00 0.00 H +ATOM 93 N TRP A 6 -2.243 -0.575 -1.581 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.858 -0.716 -1.118 0.00 0.00 C +ATOM 95 C TRP A 6 -0.699 -1.828 -0.069 0.00 0.00 C +ATOM 96 O TRP A 6 0.195 -2.668 -0.194 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.351 0.624 -0.585 0.00 0.00 C +ATOM 98 CG TRP A 6 1.048 0.578 -0.054 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.171 0.607 -0.807 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.497 0.476 1.333 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.277 0.517 0.018 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.921 0.430 1.339 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.854 0.427 2.590 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.676 0.352 2.517 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.600 0.338 3.783 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.006 0.310 3.748 0.00 0.00 C +ATOM 107 H TRP A 6 -2.729 0.304 -1.422 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.238 -0.999 -1.969 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.385 1.340 -1.384 0.00 0.00 H +ATOM 110 2HB TRP A 6 -1.007 0.967 0.214 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.193 0.693 -1.885 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.245 0.568 -0.288 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.224 0.468 2.624 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.754 0.329 2.457 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.091 0.294 4.733 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.573 0.259 4.666 0.00 0.00 H +ATOM 117 N LEU A 7 -1.582 -1.882 0.939 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.603 -2.983 1.905 0.00 0.00 C +ATOM 119 C LEU A 7 -1.840 -4.339 1.225 0.00 0.00 C +ATOM 120 O LEU A 7 -1.195 -5.312 1.611 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.648 -2.725 3.008 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.246 -1.632 4.018 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.417 -1.351 4.965 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.033 -2.033 4.868 0.00 0.00 C +ATOM 125 H LEU A 7 -2.278 -1.141 1.019 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.618 -3.051 2.362 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.566 -2.428 2.539 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.811 -3.653 3.557 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.009 -0.713 3.490 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.299 -1.072 4.387 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.642 -2.240 5.555 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.161 -0.532 5.635 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.219 -2.989 5.358 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.146 -2.116 4.244 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.847 -1.273 5.626 0.00 0.00 H +ATOM 136 N LYS A 8 -2.685 -4.402 0.182 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.936 -5.625 -0.601 0.00 0.00 C +ATOM 138 C LYS A 8 -1.667 -6.232 -1.217 0.00 0.00 C +ATOM 139 O LYS A 8 -1.582 -7.450 -1.336 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.985 -5.346 -1.693 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.692 -6.641 -2.114 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.718 -6.428 -3.232 0.00 0.00 C +ATOM 143 CE LYS A 8 -5.032 -6.294 -4.599 0.00 0.00 C +ATOM 144 NZ LYS A 8 -5.771 -7.040 -5.645 0.00 0.00 N +ATOM 145 H LYS A 8 -3.211 -3.559 -0.040 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.336 -6.373 0.084 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.713 -4.655 -1.313 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.500 -4.897 -2.560 0.00 0.00 H +ATOM 149 1HG LYS A 8 -3.952 -7.338 -2.457 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.210 -7.046 -1.244 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.387 -7.266 -3.257 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.315 -5.536 -3.029 0.00 0.00 H +ATOM 153 1HE LYS A 8 -4.993 -5.257 -4.871 0.00 0.00 H +ATOM 154 2HE LYS A 8 -4.012 -6.679 -4.526 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -5.793 -8.024 -5.407 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -6.721 -6.700 -5.709 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -5.316 -6.938 -6.542 0.00 0.00 H +ATOM 158 N ASP A 9 -0.684 -5.400 -1.577 0.00 0.00 N +ATOM 159 CA ASP A 9 0.625 -5.836 -2.086 0.00 0.00 C +ATOM 160 C ASP A 9 1.499 -6.498 -0.998 0.00 0.00 C +ATOM 161 O ASP A 9 2.414 -7.249 -1.327 0.00 0.00 O +ATOM 162 CB ASP A 9 1.344 -4.617 -2.703 0.00 0.00 C +ATOM 163 CG ASP A 9 2.032 -4.934 -4.036 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.293 -5.094 -5.034 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.282 -4.935 -4.072 0.00 0.00 O +ATOM 166 H ASP A 9 -0.848 -4.407 -1.477 0.00 0.00 H +ATOM 167 HA ASP A 9 0.459 -6.576 -2.871 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.621 -3.842 -2.868 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.073 -4.222 -1.993 0.00 0.00 H +ATOM 170 N GLY A 10 1.197 -6.249 0.290 0.00 0.00 N +ATOM 171 CA GLY A 10 1.964 -6.697 1.458 0.00 0.00 C +ATOM 172 C GLY A 10 2.454 -5.562 2.375 0.00 0.00 C +ATOM 173 O GLY A 10 3.219 -5.821 3.307 0.00 0.00 O +ATOM 174 H GLY A 10 0.340 -5.733 0.471 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.338 -7.359 2.052 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.839 -7.260 1.131 0.00 0.00 H +ATOM 177 N GLY A 11 2.062 -4.303 2.120 0.00 0.00 N +ATOM 178 CA GLY A 11 2.530 -3.141 2.879 0.00 0.00 C +ATOM 179 C GLY A 11 4.060 -2.973 2.802 0.00 0.00 C +ATOM 180 O GLY A 11 4.611 -3.075 1.699 0.00 0.00 O +ATOM 181 H GLY A 11 1.492 -4.143 1.300 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.070 -2.244 2.466 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.200 -3.255 3.909 0.00 0.00 H +ATOM 184 N PRO A 12 4.771 -2.727 3.926 0.00 0.00 N +ATOM 185 CA PRO A 12 6.226 -2.519 3.940 0.00 0.00 C +ATOM 186 C PRO A 12 7.037 -3.646 3.278 0.00 0.00 C +ATOM 187 O PRO A 12 8.097 -3.395 2.709 0.00 0.00 O +ATOM 188 CB PRO A 12 6.621 -2.378 5.418 0.00 0.00 C +ATOM 189 CG PRO A 12 5.327 -1.974 6.119 0.00 0.00 C +ATOM 190 CD PRO A 12 4.247 -2.658 5.284 0.00 0.00 C +ATOM 191 HA PRO A 12 6.447 -1.585 3.423 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.987 -3.310 5.804 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.399 -1.626 5.554 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.312 -2.328 7.132 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.205 -0.892 6.065 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.054 -3.644 5.660 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.323 -2.082 5.337 0.00 0.00 H +ATOM 198 N SER A 13 6.521 -4.880 3.304 0.00 0.00 N +ATOM 199 CA SER A 13 7.176 -6.096 2.804 0.00 0.00 C +ATOM 200 C SER A 13 7.053 -6.286 1.281 0.00 0.00 C +ATOM 201 O SER A 13 7.203 -7.401 0.787 0.00 0.00 O +ATOM 202 CB SER A 13 6.621 -7.302 3.574 0.00 0.00 C +ATOM 203 OG SER A 13 6.881 -7.134 4.956 0.00 0.00 O +ATOM 204 H SER A 13 5.621 -5.007 3.748 0.00 0.00 H +ATOM 205 HA SER A 13 8.242 -6.031 3.029 0.00 0.00 H +ATOM 206 1HB SER A 13 5.562 -7.373 3.414 0.00 0.00 H +ATOM 207 2HB SER A 13 7.106 -8.216 3.229 0.00 0.00 H +ATOM 208 HG SER A 13 6.464 -7.849 5.442 0.00 0.00 H +ATOM 209 N SER A 14 6.792 -5.202 0.538 0.00 0.00 N +ATOM 210 CA SER A 14 6.428 -5.207 -0.894 0.00 0.00 C +ATOM 211 C SER A 14 7.386 -4.379 -1.769 0.00 0.00 C +ATOM 212 O SER A 14 7.101 -4.123 -2.941 0.00 0.00 O +ATOM 213 CB SER A 14 4.978 -4.731 -1.093 0.00 0.00 C +ATOM 214 OG SER A 14 4.172 -4.953 0.037 0.00 0.00 O +ATOM 215 H SER A 14 6.675 -4.342 1.057 0.00 0.00 H +ATOM 216 HA SER A 14 6.470 -6.235 -1.257 0.00 0.00 H +ATOM 217 1HB SER A 14 4.988 -3.679 -1.305 0.00 0.00 H +ATOM 218 2HB SER A 14 4.551 -5.239 -1.956 0.00 0.00 H +ATOM 219 HG SER A 14 4.342 -4.220 0.679 0.00 0.00 H +ATOM 220 N GLY A 15 8.502 -3.913 -1.182 0.00 0.00 N +ATOM 221 CA GLY A 15 9.546 -3.129 -1.849 0.00 0.00 C +ATOM 222 C GLY A 15 9.114 -1.724 -2.287 0.00 0.00 C +ATOM 223 O GLY A 15 9.680 -1.186 -3.235 0.00 0.00 O +ATOM 224 H GLY A 15 8.649 -4.194 -0.222 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.391 -3.019 -1.170 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.893 -3.670 -2.730 0.00 0.00 H +ATOM 227 N ARG A 16 8.100 -1.139 -1.630 0.00 0.00 N +ATOM 228 CA ARG A 16 7.450 0.119 -2.030 0.00 0.00 C +ATOM 229 C ARG A 16 6.928 0.911 -0.816 0.00 0.00 C +ATOM 230 O ARG A 16 6.269 0.321 0.044 0.00 0.00 O +ATOM 231 CB ARG A 16 6.317 -0.179 -3.034 0.00 0.00 C +ATOM 232 CG ARG A 16 5.288 -1.191 -2.504 0.00 0.00 C +ATOM 233 CD ARG A 16 4.285 -1.659 -3.553 0.00 0.00 C +ATOM 234 NE ARG A 16 4.933 -2.527 -4.549 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.527 -2.735 -5.794 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.493 -2.100 -6.302 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.167 -3.578 -6.566 0.00 0.00 N +ATOM 238 H ARG A 16 7.708 -1.640 -0.844 0.00 0.00 H +ATOM 239 HA ARG A 16 8.196 0.717 -2.550 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.809 0.739 -3.257 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.768 -0.575 -3.945 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.817 -2.049 -2.135 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.734 -0.757 -1.678 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.499 -2.206 -3.068 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.837 -0.783 -4.024 0.00 0.00 H +ATOM 246 HE ARG A 16 5.648 -3.155 -4.195 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 2.947 -1.544 -5.671 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.153 -2.320 -7.218 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.883 -4.149 -6.152 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.831 -3.768 -7.490 0.00 0.00 H +ATOM 251 N PRO A 17 7.167 2.235 -0.738 0.00 0.00 N +ATOM 252 CA PRO A 17 6.698 3.071 0.368 0.00 0.00 C +ATOM 253 C PRO A 17 5.171 3.287 0.323 0.00 0.00 C +ATOM 254 O PRO A 17 4.562 3.090 -0.732 0.00 0.00 O +ATOM 255 CB PRO A 17 7.457 4.393 0.202 0.00 0.00 C +ATOM 256 CG PRO A 17 7.658 4.498 -1.308 0.00 0.00 C +ATOM 257 CD PRO A 17 7.864 3.045 -1.729 0.00 0.00 C +ATOM 258 HA PRO A 17 6.972 2.607 1.317 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.878 5.217 0.571 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.428 4.317 0.695 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.793 4.919 -1.784 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.520 5.115 -1.561 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.450 2.878 -2.705 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.927 2.802 -1.714 0.00 0.00 H +ATOM 265 N PRO A 18 4.543 3.703 1.441 0.00 0.00 N +ATOM 266 CA PRO A 18 3.105 3.956 1.499 0.00 0.00 C +ATOM 267 C PRO A 18 2.686 5.190 0.673 0.00 0.00 C +ATOM 268 O PRO A 18 3.440 6.163 0.597 0.00 0.00 O +ATOM 269 CB PRO A 18 2.777 4.132 2.983 0.00 0.00 C +ATOM 270 CG PRO A 18 4.091 4.608 3.598 0.00 0.00 C +ATOM 271 CD PRO A 18 5.149 3.902 2.752 0.00 0.00 C +ATOM 272 HA PRO A 18 2.585 3.075 1.131 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.005 4.865 3.119 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.506 3.167 3.411 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.187 5.674 3.523 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.169 4.334 4.651 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.028 4.511 2.668 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.384 2.932 3.191 0.00 0.00 H +ATOM 279 N PRO A 19 1.485 5.179 0.063 0.00 0.00 N +ATOM 280 CA PRO A 19 0.959 6.296 -0.711 0.00 0.00 C +ATOM 281 C PRO A 19 0.308 7.346 0.205 0.00 0.00 C +ATOM 282 O PRO A 19 -0.866 7.217 0.563 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.038 5.662 -1.685 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.611 4.494 -0.880 0.00 0.00 C +ATOM 285 CD PRO A 19 0.571 4.046 -0.020 0.00 0.00 C +ATOM 286 HA PRO A 19 1.758 6.771 -1.284 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.808 6.358 -1.956 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.500 5.276 -2.551 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.432 4.815 -0.268 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.960 3.695 -1.533 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.232 3.772 0.961 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.080 3.221 -0.514 0.00 0.00 H +ATOM 293 N SER A 20 1.081 8.389 0.531 0.00 0.00 N +ATOM 294 CA SER A 20 0.712 9.526 1.401 0.00 0.00 C +ATOM 295 C SER A 20 0.588 9.160 2.890 0.00 0.00 C +ATOM 296 O SER A 20 0.262 10.095 3.652 0.00 0.00 O +ATOM 297 CB SER A 20 -0.566 10.221 0.907 0.00 0.00 C +ATOM 298 OG SER A 20 -0.448 10.583 -0.457 0.00 0.00 O +ATOM 299 OXT SER A 20 0.841 7.989 3.253 0.00 0.00 O +ATOM 300 H SER A 20 2.044 8.336 0.235 0.00 0.00 H +ATOM 301 HA SER A 20 1.510 10.263 1.347 0.00 0.00 H +ATOM 302 1HB SER A 20 -1.397 9.552 1.023 0.00 0.00 H +ATOM 303 2HB SER A 20 -0.739 11.118 1.507 0.00 0.00 H +ATOM 304 HG SER A 20 -1.325 10.595 -0.845 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 6 +ATOM 1 N ASN A 1 -8.386 5.528 0.323 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.252 6.475 0.201 0.00 0.00 C +ATOM 3 C ASN A 1 -5.976 5.793 -0.320 0.00 0.00 C +ATOM 4 O ASN A 1 -4.928 5.981 0.279 0.00 0.00 O +ATOM 5 CB ASN A 1 -6.989 7.168 1.563 0.00 0.00 C +ATOM 6 CG ASN A 1 -8.182 7.971 2.069 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -9.321 7.671 1.737 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -7.956 8.989 2.877 0.00 0.00 N +ATOM 9 1H ASN A 1 -8.680 5.191 -0.583 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.133 4.750 0.917 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.162 6.024 0.757 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.519 7.256 -0.513 0.00 0.00 H +ATOM 13 1HB ASN A 1 -6.753 6.414 2.289 0.00 0.00 H +ATOM 14 2HB ASN A 1 -6.141 7.847 1.464 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -7.025 9.245 3.168 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -8.768 9.497 3.186 0.00 0.00 H +ATOM 17 N LEU A 2 -6.033 4.992 -1.399 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.893 4.279 -2.026 0.00 0.00 C +ATOM 19 C LEU A 2 -4.189 3.209 -1.150 0.00 0.00 C +ATOM 20 O LEU A 2 -3.787 2.161 -1.653 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.898 5.323 -2.592 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.403 5.048 -4.026 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.520 5.284 -5.049 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.245 5.991 -4.373 0.00 0.00 C +ATOM 25 H LEU A 2 -6.896 4.918 -1.915 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.303 3.724 -2.868 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.382 6.281 -2.586 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.041 5.381 -1.923 0.00 0.00 H +ATOM 29 HG LEU A 2 -3.055 4.018 -4.106 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.356 4.614 -4.868 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -4.864 6.318 -4.993 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.141 5.093 -6.053 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.447 7.000 -4.006 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -1.330 5.621 -3.919 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -2.089 6.031 -5.450 0.00 0.00 H +ATOM 36 N TYR A 3 -4.112 3.429 0.165 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.496 2.595 1.193 0.00 0.00 C +ATOM 38 C TYR A 3 -4.014 1.148 1.203 0.00 0.00 C +ATOM 39 O TYR A 3 -3.249 0.231 1.485 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.710 3.279 2.555 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.553 3.084 3.510 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.561 4.078 3.620 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.456 1.903 4.268 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.454 3.878 4.467 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.355 1.701 5.120 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.345 2.682 5.210 0.00 0.00 C +ATOM 47 OH TYR A 3 0.737 2.459 6.003 0.00 0.00 O +ATOM 48 H TYR A 3 -4.356 4.372 0.451 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.424 2.563 0.995 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.843 4.331 2.391 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.629 2.908 3.015 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.654 5.000 3.056 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.225 1.149 4.184 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.299 4.646 4.556 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.263 0.796 5.701 0.00 0.00 H +ATOM 56 HH TYR A 3 1.435 3.096 5.844 0.00 0.00 H +ATOM 57 N ILE A 4 -5.288 0.927 0.844 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.882 -0.413 0.700 0.00 0.00 C +ATOM 59 C ILE A 4 -5.155 -1.216 -0.392 0.00 0.00 C +ATOM 60 O ILE A 4 -4.783 -2.368 -0.166 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.403 -0.333 0.415 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.165 0.597 1.397 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.025 -1.739 0.474 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.569 1.925 0.742 0.00 0.00 C +ATOM 65 H ILE A 4 -5.849 1.736 0.639 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.742 -0.945 1.643 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.545 0.041 -0.602 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.051 0.094 1.733 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.558 0.797 2.280 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.561 -2.398 -0.261 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.892 -2.168 1.469 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.091 -1.683 0.250 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.690 2.447 0.367 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.256 1.730 -0.083 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.076 2.550 1.478 0.00 0.00 H +ATOM 76 N GLN A 5 -4.919 -0.602 -1.563 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.148 -1.213 -2.650 0.00 0.00 C +ATOM 78 C GLN A 5 -2.698 -1.477 -2.220 0.00 0.00 C +ATOM 79 O GLN A 5 -2.176 -2.563 -2.456 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.189 -0.338 -3.923 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.048 -0.952 -5.043 0.00 0.00 C +ATOM 82 CD GLN A 5 -4.557 -0.530 -6.426 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -3.843 -1.254 -7.098 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -4.900 0.648 -6.907 0.00 0.00 N +ATOM 85 H GLN A 5 -5.147 0.379 -1.642 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.590 -2.184 -2.870 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.595 0.621 -3.666 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.171 -0.226 -4.301 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.003 -2.022 -4.969 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.090 -0.657 -4.912 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -5.491 1.299 -6.420 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -4.516 0.824 -7.820 0.00 0.00 H +ATOM 93 N TRP A 6 -2.058 -0.514 -1.548 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.698 -0.699 -1.033 0.00 0.00 C +ATOM 95 C TRP A 6 -0.598 -1.819 0.024 0.00 0.00 C +ATOM 96 O TRP A 6 0.351 -2.603 0.007 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.182 0.633 -0.487 0.00 0.00 C +ATOM 98 CG TRP A 6 1.208 0.559 0.054 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.340 0.584 -0.684 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.636 0.399 1.441 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.434 0.426 0.145 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.060 0.338 1.464 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.968 0.306 2.680 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.793 0.231 2.652 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.692 0.176 3.881 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.098 0.160 3.871 0.00 0.00 C +ATOM 107 H TRP A 6 -2.537 0.370 -1.411 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.056 -0.999 -1.865 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.199 1.355 -1.281 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.845 0.977 0.306 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.372 0.691 -1.760 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.406 0.397 -0.171 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.111 0.343 2.699 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.871 0.201 2.617 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.165 0.101 4.820 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.644 0.086 4.800 0.00 0.00 H +ATOM 117 N LEU A 7 -1.583 -1.947 0.921 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.656 -3.076 1.851 0.00 0.00 C +ATOM 119 C LEU A 7 -1.870 -4.413 1.124 0.00 0.00 C +ATOM 120 O LEU A 7 -1.239 -5.396 1.507 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.744 -2.838 2.914 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.336 -1.840 4.014 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.558 -1.525 4.882 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.236 -2.386 4.934 0.00 0.00 C +ATOM 125 H LEU A 7 -2.308 -1.232 0.953 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.691 -3.164 2.348 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.619 -2.459 2.422 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.984 -3.790 3.391 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.981 -0.918 3.559 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.336 -1.072 4.269 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.942 -2.440 5.333 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.281 -0.829 5.675 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.580 -3.296 5.429 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.333 -2.606 4.369 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.987 -1.645 5.691 0.00 0.00 H +ATOM 136 N LYS A 8 -2.686 -4.452 0.056 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.868 -5.634 -0.809 0.00 0.00 C +ATOM 138 C LYS A 8 -1.553 -6.182 -1.385 0.00 0.00 C +ATOM 139 O LYS A 8 -1.446 -7.398 -1.524 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.855 -5.315 -1.947 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.312 -5.718 -1.691 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.595 -7.194 -2.011 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.083 -7.358 -2.351 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.467 -8.781 -2.499 0.00 0.00 N +ATOM 145 H LYS A 8 -3.201 -3.604 -0.166 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.277 -6.443 -0.202 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.830 -4.256 -2.119 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.518 -5.782 -2.874 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.538 -5.544 -0.657 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.933 -5.099 -2.340 0.00 0.00 H +ATOM 151 1HD LYS A 8 -4.999 -7.501 -2.849 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.322 -7.812 -1.153 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.668 -6.922 -1.564 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.274 -6.823 -3.286 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -6.831 -9.251 -3.130 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.436 -9.244 -1.601 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -8.406 -8.854 -2.869 0.00 0.00 H +ATOM 158 N ASP A 9 -0.560 -5.331 -1.687 0.00 0.00 N +ATOM 159 CA ASP A 9 0.784 -5.780 -2.096 0.00 0.00 C +ATOM 160 C ASP A 9 1.568 -6.488 -0.965 0.00 0.00 C +ATOM 161 O ASP A 9 2.503 -7.234 -1.258 0.00 0.00 O +ATOM 162 CB ASP A 9 1.632 -4.594 -2.600 0.00 0.00 C +ATOM 163 CG ASP A 9 1.231 -4.011 -3.959 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.430 -4.722 -4.969 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.856 -2.815 -4.003 0.00 0.00 O +ATOM 166 H ASP A 9 -0.747 -4.339 -1.618 0.00 0.00 H +ATOM 167 HA ASP A 9 0.686 -6.498 -2.912 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.563 -3.808 -1.872 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.656 -4.948 -2.713 0.00 0.00 H +ATOM 170 N GLY A 10 1.199 -6.278 0.311 0.00 0.00 N +ATOM 171 CA GLY A 10 1.937 -6.750 1.490 0.00 0.00 C +ATOM 172 C GLY A 10 2.431 -5.639 2.432 0.00 0.00 C +ATOM 173 O GLY A 10 3.200 -5.926 3.352 0.00 0.00 O +ATOM 174 H GLY A 10 0.336 -5.769 0.474 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.286 -7.408 2.066 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.807 -7.329 1.179 0.00 0.00 H +ATOM 177 N GLY A 11 2.031 -4.376 2.219 0.00 0.00 N +ATOM 178 CA GLY A 11 2.470 -3.241 3.034 0.00 0.00 C +ATOM 179 C GLY A 11 4.000 -3.062 3.006 0.00 0.00 C +ATOM 180 O GLY A 11 4.575 -3.113 1.914 0.00 0.00 O +ATOM 181 H GLY A 11 1.469 -4.186 1.397 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.015 -2.334 2.636 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.114 -3.391 4.051 0.00 0.00 H +ATOM 184 N PRO A 12 4.686 -2.853 4.152 0.00 0.00 N +ATOM 185 CA PRO A 12 6.138 -2.627 4.199 0.00 0.00 C +ATOM 186 C PRO A 12 6.979 -3.705 3.499 0.00 0.00 C +ATOM 187 O PRO A 12 8.023 -3.398 2.928 0.00 0.00 O +ATOM 188 CB PRO A 12 6.504 -2.546 5.686 0.00 0.00 C +ATOM 189 CG PRO A 12 5.198 -2.156 6.370 0.00 0.00 C +ATOM 190 CD PRO A 12 4.133 -2.817 5.498 0.00 0.00 C +ATOM 191 HA PRO A 12 6.351 -1.666 3.730 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.853 -3.495 6.045 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.286 -1.807 5.866 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.162 -2.534 7.374 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.079 -1.073 6.340 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.931 -3.812 5.845 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.207 -2.241 5.544 0.00 0.00 H +ATOM 198 N SER A 13 6.508 -4.958 3.493 0.00 0.00 N +ATOM 199 CA SER A 13 7.189 -6.103 2.872 0.00 0.00 C +ATOM 200 C SER A 13 7.058 -6.147 1.336 0.00 0.00 C +ATOM 201 O SER A 13 7.435 -7.142 0.722 0.00 0.00 O +ATOM 202 CB SER A 13 6.693 -7.403 3.522 0.00 0.00 C +ATOM 203 OG SER A 13 7.056 -7.403 4.891 0.00 0.00 O +ATOM 204 H SER A 13 5.629 -5.143 3.955 0.00 0.00 H +ATOM 205 HA SER A 13 8.255 -6.026 3.087 0.00 0.00 H +ATOM 206 1HB SER A 13 5.625 -7.465 3.433 0.00 0.00 H +ATOM 207 2HB SER A 13 7.159 -8.260 3.034 0.00 0.00 H +ATOM 208 HG SER A 13 6.918 -8.284 5.253 0.00 0.00 H +ATOM 209 N SER A 14 6.545 -5.077 0.709 0.00 0.00 N +ATOM 210 CA SER A 14 6.283 -4.978 -0.737 0.00 0.00 C +ATOM 211 C SER A 14 7.371 -4.237 -1.526 0.00 0.00 C +ATOM 212 O SER A 14 7.218 -4.034 -2.732 0.00 0.00 O +ATOM 213 CB SER A 14 4.974 -4.222 -0.999 0.00 0.00 C +ATOM 214 OG SER A 14 3.964 -4.544 -0.082 0.00 0.00 O +ATOM 215 H SER A 14 6.237 -4.313 1.299 0.00 0.00 H +ATOM 216 HA SER A 14 6.178 -5.981 -1.151 0.00 0.00 H +ATOM 217 1HB SER A 14 5.169 -3.169 -0.937 0.00 0.00 H +ATOM 218 2HB SER A 14 4.638 -4.447 -2.011 0.00 0.00 H +ATOM 219 HG SER A 14 4.139 -4.000 0.726 0.00 0.00 H +ATOM 220 N GLY A 15 8.414 -3.725 -0.859 0.00 0.00 N +ATOM 221 CA GLY A 15 9.471 -2.894 -1.454 0.00 0.00 C +ATOM 222 C GLY A 15 9.041 -1.455 -1.795 0.00 0.00 C +ATOM 223 O GLY A 15 9.819 -0.525 -1.599 0.00 0.00 O +ATOM 224 H GLY A 15 8.450 -3.903 0.136 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.311 -2.842 -0.764 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.822 -3.367 -2.372 0.00 0.00 H +ATOM 227 N ARG A 16 7.814 -1.262 -2.297 0.00 0.00 N +ATOM 228 CA ARG A 16 7.226 0.051 -2.611 0.00 0.00 C +ATOM 229 C ARG A 16 6.816 0.830 -1.338 0.00 0.00 C +ATOM 230 O ARG A 16 6.195 0.243 -0.447 0.00 0.00 O +ATOM 231 CB ARG A 16 6.050 -0.120 -3.595 0.00 0.00 C +ATOM 232 CG ARG A 16 4.880 -0.960 -3.052 0.00 0.00 C +ATOM 233 CD ARG A 16 3.737 -1.115 -4.058 0.00 0.00 C +ATOM 234 NE ARG A 16 4.012 -2.181 -5.038 0.00 0.00 N +ATOM 235 CZ ARG A 16 3.322 -2.423 -6.147 0.00 0.00 C +ATOM 236 NH1 ARG A 16 2.338 -1.649 -6.533 0.00 0.00 N +ATOM 237 NH2 ARG A 16 3.618 -3.461 -6.892 0.00 0.00 N +ATOM 238 H ARG A 16 7.281 -2.107 -2.474 0.00 0.00 H +ATOM 239 HA ARG A 16 8.002 0.620 -3.123 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.676 0.855 -3.843 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.426 -0.587 -4.506 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.248 -1.936 -2.800 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.474 -0.469 -2.174 0.00 0.00 H +ATOM 244 1HD ARG A 16 2.836 -1.356 -3.526 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.570 -0.162 -4.563 0.00 0.00 H +ATOM 246 HE ARG A 16 4.727 -2.848 -4.801 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 1.964 -1.052 -5.816 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 1.772 -1.893 -7.322 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.226 -4.165 -6.517 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 3.002 -3.699 -7.645 0.00 0.00 H +ATOM 251 N PRO A 17 7.097 2.147 -1.240 0.00 0.00 N +ATOM 252 CA PRO A 17 6.733 2.965 -0.077 0.00 0.00 C +ATOM 253 C PRO A 17 5.211 3.205 0.012 0.00 0.00 C +ATOM 254 O PRO A 17 4.514 3.057 -0.995 0.00 0.00 O +ATOM 255 CB PRO A 17 7.499 4.279 -0.266 0.00 0.00 C +ATOM 256 CG PRO A 17 7.601 4.413 -1.783 0.00 0.00 C +ATOM 257 CD PRO A 17 7.764 2.966 -2.245 0.00 0.00 C +ATOM 258 HA PRO A 17 7.073 2.472 0.834 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.958 5.103 0.157 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.500 4.183 0.158 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.711 4.851 -2.192 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.451 5.031 -2.080 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.305 2.827 -3.205 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.823 2.707 -2.277 0.00 0.00 H +ATOM 265 N PRO A 18 4.682 3.595 1.190 0.00 0.00 N +ATOM 266 CA PRO A 18 3.257 3.860 1.368 0.00 0.00 C +ATOM 267 C PRO A 18 2.815 5.129 0.616 0.00 0.00 C +ATOM 268 O PRO A 18 3.586 6.086 0.526 0.00 0.00 O +ATOM 269 CB PRO A 18 3.049 4.007 2.879 0.00 0.00 C +ATOM 270 CG PRO A 18 4.407 4.496 3.377 0.00 0.00 C +ATOM 271 CD PRO A 18 5.393 3.792 2.447 0.00 0.00 C +ATOM 272 HA PRO A 18 2.691 3.004 1.010 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.280 4.725 3.093 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.830 3.031 3.313 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.488 5.562 3.288 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.575 4.231 4.423 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.262 4.402 2.293 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.666 2.823 2.864 0.00 0.00 H +ATOM 279 N PRO A 19 1.564 5.179 0.116 0.00 0.00 N +ATOM 280 CA PRO A 19 1.048 6.326 -0.630 0.00 0.00 C +ATOM 281 C PRO A 19 0.603 7.495 0.262 0.00 0.00 C +ATOM 282 O PRO A 19 0.510 8.619 -0.227 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.136 5.763 -1.415 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.683 4.666 -0.501 0.00 0.00 C +ATOM 285 CD PRO A 19 0.585 4.100 0.134 0.00 0.00 C +ATOM 286 HA PRO A 19 1.801 6.695 -1.328 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.875 6.521 -1.589 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.239 5.311 -2.333 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.340 5.073 0.243 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.221 3.904 -1.064 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.390 3.791 1.143 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.959 3.279 -0.477 0.00 0.00 H +ATOM 293 N SER A 20 0.367 7.228 1.556 0.00 0.00 N +ATOM 294 CA SER A 20 -0.233 8.139 2.544 0.00 0.00 C +ATOM 295 C SER A 20 -1.656 8.585 2.160 0.00 0.00 C +ATOM 296 O SER A 20 -2.384 7.708 1.628 0.00 0.00 O +ATOM 297 CB SER A 20 0.737 9.297 2.810 0.00 0.00 C +ATOM 298 OG SER A 20 0.750 9.605 4.190 0.00 0.00 O +ATOM 299 OXT SER A 20 -2.026 9.739 2.451 0.00 0.00 O +ATOM 300 H SER A 20 0.453 6.262 1.817 0.00 0.00 H +ATOM 301 HA SER A 20 -0.350 7.592 3.476 0.00 0.00 H +ATOM 302 1HB SER A 20 1.724 9.013 2.499 0.00 0.00 H +ATOM 303 2HB SER A 20 0.448 10.165 2.214 0.00 0.00 H +ATOM 304 HG SER A 20 0.692 10.559 4.282 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 7 +ATOM 1 N ASN A 1 -8.903 5.528 -0.196 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.549 5.998 -0.581 0.00 0.00 C +ATOM 3 C ASN A 1 -6.760 4.831 -1.189 0.00 0.00 C +ATOM 4 O ASN A 1 -7.247 3.705 -1.144 0.00 0.00 O +ATOM 5 CB ASN A 1 -6.831 6.647 0.620 0.00 0.00 C +ATOM 6 CG ASN A 1 -5.684 7.538 0.154 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -4.583 7.063 -0.078 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -5.924 8.815 -0.078 0.00 0.00 N +ATOM 9 1H ASN A 1 -9.364 5.129 -1.005 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.821 4.800 0.502 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.457 6.290 0.168 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.661 6.757 -1.358 0.00 0.00 H +ATOM 13 1HB ASN A 1 -7.535 7.240 1.171 0.00 0.00 H +ATOM 14 2HB ASN A 1 -6.437 5.876 1.282 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -6.803 9.269 0.111 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -5.123 9.345 -0.388 0.00 0.00 H +ATOM 17 N LEU A 2 -5.566 5.065 -1.745 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.705 4.017 -2.308 0.00 0.00 C +ATOM 19 C LEU A 2 -4.063 3.108 -1.244 0.00 0.00 C +ATOM 20 O LEU A 2 -3.570 2.036 -1.587 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.636 4.665 -3.218 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.984 4.537 -4.715 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.137 5.490 -5.557 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.737 3.110 -5.216 0.00 0.00 C +ATOM 25 H LEU A 2 -5.153 5.991 -1.653 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.332 3.363 -2.913 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.557 5.706 -2.970 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.666 4.195 -3.051 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.035 4.787 -4.864 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -3.377 6.522 -5.297 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.077 5.308 -5.382 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.356 5.339 -6.615 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.687 2.842 -5.096 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -4.350 2.412 -4.658 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.007 3.032 -6.270 0.00 0.00 H +ATOM 36 N TYR A 3 -4.102 3.487 0.042 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.503 2.730 1.149 0.00 0.00 C +ATOM 38 C TYR A 3 -3.977 1.265 1.216 0.00 0.00 C +ATOM 39 O TYR A 3 -3.168 0.369 1.448 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.768 3.466 2.474 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.672 3.279 3.509 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.783 4.339 3.784 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.536 2.057 4.196 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.765 4.177 4.741 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.523 1.895 5.162 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.640 2.961 5.441 0.00 0.00 C +ATOM 47 OH TYR A 3 0.309 2.837 6.407 0.00 0.00 O +ATOM 48 H TYR A 3 -4.453 4.414 0.232 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.424 2.713 0.990 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.861 4.514 2.266 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.720 3.136 2.894 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.890 5.287 3.275 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.211 1.241 3.988 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.083 4.982 4.975 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.418 0.959 5.689 0.00 0.00 H +ATOM 56 HH TYR A 3 0.037 2.243 7.107 0.00 0.00 H +ATOM 57 N ILE A 4 -5.269 1.004 0.959 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.833 -0.356 0.888 0.00 0.00 C +ATOM 59 C ILE A 4 -5.161 -1.164 -0.238 0.00 0.00 C +ATOM 60 O ILE A 4 -4.772 -2.318 -0.049 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.371 -0.313 0.696 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.110 0.552 1.752 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.954 -1.737 0.753 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.509 1.938 1.232 0.00 0.00 C +ATOM 65 H ILE A 4 -5.872 1.790 0.762 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.619 -0.864 1.831 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.587 0.085 -0.297 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.999 0.033 2.055 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.496 0.664 2.647 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.517 -2.368 -0.021 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.761 -2.183 1.729 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.031 -1.704 0.581 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.626 2.563 1.121 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.024 1.846 0.274 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.188 2.410 1.945 0.00 0.00 H +ATOM 76 N GLN A 5 -5.003 -0.544 -1.411 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.375 -1.125 -2.597 0.00 0.00 C +ATOM 78 C GLN A 5 -2.869 -1.353 -2.405 0.00 0.00 C +ATOM 79 O GLN A 5 -2.354 -2.357 -2.886 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.661 -0.216 -3.809 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.379 -0.927 -4.966 0.00 0.00 C +ATOM 82 CD GLN A 5 -4.417 -1.485 -6.011 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.226 -0.906 -7.068 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -3.781 -2.614 -5.772 0.00 0.00 N +ATOM 85 H GLN A 5 -5.256 0.433 -1.455 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.826 -2.102 -2.768 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.275 0.600 -3.481 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.731 0.222 -4.174 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.955 -1.738 -4.564 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.017 -0.197 -5.466 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -3.799 -3.091 -4.886 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -3.166 -2.885 -6.520 0.00 0.00 H +ATOM 93 N TRP A 6 -2.181 -0.471 -1.666 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.803 -0.688 -1.216 0.00 0.00 C +ATOM 95 C TRP A 6 -0.702 -1.871 -0.236 0.00 0.00 C +ATOM 96 O TRP A 6 0.137 -2.753 -0.420 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.253 0.612 -0.609 0.00 0.00 C +ATOM 98 CG TRP A 6 1.148 0.524 -0.079 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.275 0.502 -0.828 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.590 0.428 1.311 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.377 0.391 0.000 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.013 0.346 1.324 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.937 0.410 2.563 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.756 0.265 2.509 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.672 0.321 3.762 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.077 0.254 3.738 0.00 0.00 C +ATOM 107 H TRP A 6 -2.666 0.378 -1.389 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.189 -0.942 -2.080 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.274 1.369 -1.369 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.902 0.932 0.205 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.303 0.552 -1.909 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.354 0.366 -0.301 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.141 0.482 2.594 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.833 0.212 2.461 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.154 0.320 4.711 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.633 0.202 4.663 0.00 0.00 H +ATOM 117 N LEU A 7 -1.584 -1.939 0.773 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.618 -3.061 1.719 0.00 0.00 C +ATOM 119 C LEU A 7 -1.896 -4.418 1.055 0.00 0.00 C +ATOM 120 O LEU A 7 -1.383 -5.420 1.551 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.638 -2.803 2.843 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.158 -1.828 3.935 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.332 -1.509 4.865 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.029 -2.411 4.793 0.00 0.00 C +ATOM 125 H LEU A 7 -2.238 -1.169 0.902 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.625 -3.152 2.159 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.528 -2.398 2.401 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.875 -3.753 3.326 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.813 -0.903 3.475 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.138 -1.046 4.295 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.701 -2.424 5.328 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.014 -0.822 5.647 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.366 -3.322 5.290 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.162 -2.644 4.181 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.726 -1.685 5.547 0.00 0.00 H +ATOM 136 N LYS A 8 -2.649 -4.469 -0.060 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.926 -5.712 -0.805 0.00 0.00 C +ATOM 138 C LYS A 8 -1.673 -6.493 -1.213 0.00 0.00 C +ATOM 139 O LYS A 8 -1.747 -7.718 -1.261 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.745 -5.435 -2.077 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.245 -5.187 -1.834 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.112 -6.160 -2.652 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.013 -7.607 -2.144 0.00 0.00 C +ATOM 144 NZ LYS A 8 -6.775 -7.803 -0.889 0.00 0.00 N +ATOM 145 H LYS A 8 -3.091 -3.603 -0.351 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.486 -6.385 -0.157 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.336 -4.566 -2.556 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.629 -6.287 -2.748 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.457 -5.322 -0.791 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.483 -4.171 -2.145 0.00 0.00 H +ATOM 151 1HD LYS A 8 -7.135 -5.843 -2.591 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.787 -6.129 -3.694 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.405 -8.266 -2.895 0.00 0.00 H +ATOM 154 2HE LYS A 8 -4.957 -7.857 -1.989 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -6.431 -7.175 -0.174 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.755 -7.610 -1.046 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -6.676 -8.755 -0.564 0.00 0.00 H +ATOM 158 N ASP A 9 -0.575 -5.806 -1.542 0.00 0.00 N +ATOM 159 CA ASP A 9 0.679 -6.439 -1.960 0.00 0.00 C +ATOM 160 C ASP A 9 1.407 -7.073 -0.759 0.00 0.00 C +ATOM 161 O ASP A 9 1.771 -8.246 -0.798 0.00 0.00 O +ATOM 162 CB ASP A 9 1.529 -5.384 -2.684 0.00 0.00 C +ATOM 163 CG ASP A 9 2.629 -6.016 -3.539 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.415 -6.083 -4.770 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.661 -6.415 -2.960 0.00 0.00 O +ATOM 166 H ASP A 9 -0.608 -4.796 -1.483 0.00 0.00 H +ATOM 167 HA ASP A 9 0.451 -7.236 -2.670 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.890 -4.801 -3.319 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.960 -4.694 -1.962 0.00 0.00 H +ATOM 170 N GLY A 10 1.538 -6.316 0.338 0.00 0.00 N +ATOM 171 CA GLY A 10 2.154 -6.771 1.590 0.00 0.00 C +ATOM 172 C GLY A 10 2.656 -5.655 2.516 0.00 0.00 C +ATOM 173 O GLY A 10 3.600 -5.875 3.278 0.00 0.00 O +ATOM 174 H GLY A 10 1.219 -5.364 0.236 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.421 -7.360 2.140 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.998 -7.420 1.354 0.00 0.00 H +ATOM 177 N GLY A 11 2.069 -4.451 2.456 0.00 0.00 N +ATOM 178 CA GLY A 11 2.511 -3.295 3.240 0.00 0.00 C +ATOM 179 C GLY A 11 4.009 -2.997 3.049 0.00 0.00 C +ATOM 180 O GLY A 11 4.473 -2.994 1.904 0.00 0.00 O +ATOM 181 H GLY A 11 1.299 -4.330 1.814 0.00 0.00 H +ATOM 182 1HA GLY A 11 1.950 -2.415 2.922 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.285 -3.490 4.287 0.00 0.00 H +ATOM 184 N PRO A 12 4.798 -2.757 4.119 0.00 0.00 N +ATOM 185 CA PRO A 12 6.237 -2.490 4.008 0.00 0.00 C +ATOM 186 C PRO A 12 7.033 -3.579 3.271 0.00 0.00 C +ATOM 187 O PRO A 12 8.035 -3.275 2.626 0.00 0.00 O +ATOM 188 CB PRO A 12 6.745 -2.333 5.447 0.00 0.00 C +ATOM 189 CG PRO A 12 5.496 -1.973 6.248 0.00 0.00 C +ATOM 190 CD PRO A 12 4.382 -2.715 5.512 0.00 0.00 C +ATOM 191 HA PRO A 12 6.371 -1.546 3.479 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.173 -3.251 5.802 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.505 -1.553 5.517 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.579 -2.312 7.263 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.320 -0.898 6.189 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.273 -3.709 5.901 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.437 -2.188 5.641 0.00 0.00 H +ATOM 198 N SER A 13 6.580 -4.841 3.318 0.00 0.00 N +ATOM 199 CA SER A 13 7.226 -5.980 2.655 0.00 0.00 C +ATOM 200 C SER A 13 6.995 -6.022 1.132 0.00 0.00 C +ATOM 201 O SER A 13 7.473 -6.945 0.480 0.00 0.00 O +ATOM 202 CB SER A 13 6.775 -7.286 3.323 0.00 0.00 C +ATOM 203 OG SER A 13 7.214 -7.315 4.671 0.00 0.00 O +ATOM 204 H SER A 13 5.719 -5.035 3.818 0.00 0.00 H +ATOM 205 HA SER A 13 8.303 -5.894 2.797 0.00 0.00 H +ATOM 206 1HB SER A 13 5.704 -7.348 3.296 0.00 0.00 H +ATOM 207 2HB SER A 13 7.200 -8.143 2.797 0.00 0.00 H +ATOM 208 HG SER A 13 8.172 -7.390 4.683 0.00 0.00 H +ATOM 209 N SER A 14 6.312 -5.020 0.559 0.00 0.00 N +ATOM 210 CA SER A 14 6.003 -4.909 -0.880 0.00 0.00 C +ATOM 211 C SER A 14 7.153 -4.342 -1.729 0.00 0.00 C +ATOM 212 O SER A 14 7.036 -4.271 -2.950 0.00 0.00 O +ATOM 213 CB SER A 14 4.797 -3.981 -1.103 0.00 0.00 C +ATOM 214 OG SER A 14 3.761 -4.194 -0.169 0.00 0.00 O +ATOM 215 H SER A 14 5.943 -4.308 1.175 0.00 0.00 H +ATOM 216 HA SER A 14 5.743 -5.896 -1.266 0.00 0.00 H +ATOM 217 1HB SER A 14 5.128 -2.964 -1.021 0.00 0.00 H +ATOM 218 2HB SER A 14 4.414 -4.137 -2.112 0.00 0.00 H +ATOM 219 HG SER A 14 4.006 -3.709 0.659 0.00 0.00 H +ATOM 220 N GLY A 15 8.240 -3.857 -1.110 0.00 0.00 N +ATOM 221 CA GLY A 15 9.347 -3.207 -1.825 0.00 0.00 C +ATOM 222 C GLY A 15 9.072 -1.761 -2.273 0.00 0.00 C +ATOM 223 O GLY A 15 9.838 -1.222 -3.067 0.00 0.00 O +ATOM 224 H GLY A 15 8.290 -3.959 -0.106 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.231 -3.198 -1.187 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.588 -3.789 -2.715 0.00 0.00 H +ATOM 227 N ARG A 16 7.994 -1.127 -1.781 0.00 0.00 N +ATOM 228 CA ARG A 16 7.572 0.231 -2.153 0.00 0.00 C +ATOM 229 C ARG A 16 6.983 0.981 -0.944 0.00 0.00 C +ATOM 230 O ARG A 16 6.181 0.382 -0.224 0.00 0.00 O +ATOM 231 CB ARG A 16 6.533 0.117 -3.285 0.00 0.00 C +ATOM 232 CG ARG A 16 6.200 1.481 -3.901 0.00 0.00 C +ATOM 233 CD ARG A 16 5.147 1.363 -5.008 0.00 0.00 C +ATOM 234 NE ARG A 16 5.045 2.615 -5.780 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.495 3.765 -5.404 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.939 3.937 -4.225 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.510 4.784 -6.232 0.00 0.00 N +ATOM 238 H ARG A 16 7.425 -1.634 -1.117 0.00 0.00 H +ATOM 239 HA ARG A 16 8.445 0.765 -2.527 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.925 -0.523 -4.052 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.621 -0.343 -2.899 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.824 2.127 -3.131 0.00 0.00 H +ATOM 243 2HG ARG A 16 7.111 1.904 -4.324 0.00 0.00 H +ATOM 244 1HD ARG A 16 5.422 0.565 -5.670 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.180 1.105 -4.573 0.00 0.00 H +ATOM 246 HE ARG A 16 5.452 2.594 -6.699 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 3.987 3.199 -3.541 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.537 4.819 -3.965 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.943 4.701 -7.136 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.103 5.659 -5.956 0.00 0.00 H +ATOM 251 N PRO A 17 7.298 2.279 -0.734 0.00 0.00 N +ATOM 252 CA PRO A 17 6.723 3.073 0.357 0.00 0.00 C +ATOM 253 C PRO A 17 5.203 3.301 0.202 0.00 0.00 C +ATOM 254 O PRO A 17 4.670 3.166 -0.908 0.00 0.00 O +ATOM 255 CB PRO A 17 7.497 4.399 0.343 0.00 0.00 C +ATOM 256 CG PRO A 17 7.943 4.539 -1.109 0.00 0.00 C +ATOM 257 CD PRO A 17 8.231 3.093 -1.505 0.00 0.00 C +ATOM 258 HA PRO A 17 6.912 2.560 1.300 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.863 5.216 0.629 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.374 4.317 0.985 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.164 4.960 -1.715 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.827 5.172 -1.206 0.00 0.00 H +ATOM 263 1HD PRO A 17 8.069 2.954 -2.556 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.253 2.834 -1.225 0.00 0.00 H +ATOM 265 N PRO A 18 4.505 3.662 1.301 0.00 0.00 N +ATOM 266 CA PRO A 18 3.065 3.925 1.293 0.00 0.00 C +ATOM 267 C PRO A 18 2.700 5.218 0.535 0.00 0.00 C +ATOM 268 O PRO A 18 3.563 6.066 0.303 0.00 0.00 O +ATOM 269 CB PRO A 18 2.661 4.003 2.774 0.00 0.00 C +ATOM 270 CG PRO A 18 3.933 4.476 3.472 0.00 0.00 C +ATOM 271 CD PRO A 18 5.039 3.819 2.649 0.00 0.00 C +ATOM 272 HA PRO A 18 2.557 3.083 0.827 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.863 4.706 2.916 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.402 3.008 3.132 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.014 5.546 3.443 0.00 0.00 H +ATOM 276 2HG PRO A 18 3.962 4.161 4.516 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.912 4.443 2.633 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.271 2.838 3.065 0.00 0.00 H +ATOM 279 N PRO A 19 1.420 5.389 0.147 0.00 0.00 N +ATOM 280 CA PRO A 19 0.934 6.590 -0.541 0.00 0.00 C +ATOM 281 C PRO A 19 0.630 7.773 0.396 0.00 0.00 C +ATOM 282 O PRO A 19 0.546 8.904 -0.075 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.347 6.136 -1.247 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.893 5.051 -0.317 0.00 0.00 C +ATOM 285 CD PRO A 19 0.371 4.378 0.209 0.00 0.00 C +ATOM 286 HA PRO A 19 1.659 6.921 -1.282 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.043 6.948 -1.342 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.093 5.696 -2.212 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.462 5.481 0.484 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.521 4.344 -0.854 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.226 4.052 1.221 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.641 3.547 -0.443 0.00 0.00 H +ATOM 293 N SER A 20 0.436 7.512 1.697 0.00 0.00 N +ATOM 294 CA SER A 20 0.332 8.504 2.776 0.00 0.00 C +ATOM 295 C SER A 20 1.687 8.700 3.451 0.00 0.00 C +ATOM 296 O SER A 20 2.070 9.878 3.606 0.00 0.00 O +ATOM 297 CB SER A 20 -0.673 8.043 3.830 0.00 0.00 C +ATOM 298 OG SER A 20 -1.935 7.948 3.212 0.00 0.00 O +ATOM 299 OXT SER A 20 2.277 7.664 3.828 0.00 0.00 O +ATOM 300 H SER A 20 0.578 6.559 1.993 0.00 0.00 H +ATOM 301 HA SER A 20 0.032 9.475 2.381 0.00 0.00 H +ATOM 302 1HB SER A 20 -0.383 7.085 4.216 0.00 0.00 H +ATOM 303 2HB SER A 20 -0.705 8.762 4.652 0.00 0.00 H +ATOM 304 HG SER A 20 -1.800 8.230 2.302 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 8 +ATOM 1 N ASN A 1 -8.769 4.941 0.058 0.00 0.00 N +ATOM 2 CA ASN A 1 -8.628 3.743 -0.810 0.00 0.00 C +ATOM 3 C ASN A 1 -7.194 3.417 -1.223 0.00 0.00 C +ATOM 4 O ASN A 1 -6.825 2.255 -1.104 0.00 0.00 O +ATOM 5 CB ASN A 1 -9.576 3.798 -2.012 0.00 0.00 C +ATOM 6 CG ASN A 1 -10.980 3.563 -1.485 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -11.581 4.475 -0.943 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -11.465 2.335 -1.495 0.00 0.00 N +ATOM 9 1H ASN A 1 -8.177 4.864 0.873 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.539 5.782 -0.450 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.736 5.016 0.359 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.940 2.881 -0.218 0.00 0.00 H +ATOM 13 1HB ASN A 1 -9.516 4.760 -2.484 0.00 0.00 H +ATOM 14 2HB ASN A 1 -9.322 3.021 -2.735 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -10.980 1.548 -1.895 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -12.387 2.236 -1.101 0.00 0.00 H +ATOM 17 N LEU A 2 -6.386 4.385 -1.677 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.979 4.182 -2.071 0.00 0.00 C +ATOM 19 C LEU A 2 -4.170 3.301 -1.091 0.00 0.00 C +ATOM 20 O LEU A 2 -3.510 2.351 -1.513 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.298 5.547 -2.330 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.562 6.652 -1.277 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.311 7.480 -1.001 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -5.661 7.624 -1.728 0.00 0.00 C +ATOM 25 H LEU A 2 -6.742 5.314 -1.830 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.973 3.640 -3.018 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.239 5.382 -2.373 0.00 0.00 H +ATOM 28 2HB LEU A 2 -4.613 5.914 -3.308 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.870 6.194 -0.336 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -2.556 6.855 -0.534 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.907 7.891 -1.928 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.544 8.302 -0.323 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -5.277 8.270 -2.519 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -6.532 7.099 -2.108 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -5.957 8.251 -0.887 0.00 0.00 H +ATOM 36 N TYR A 3 -4.272 3.566 0.214 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.591 2.791 1.257 0.00 0.00 C +ATOM 38 C TYR A 3 -4.035 1.316 1.320 0.00 0.00 C +ATOM 39 O TYR A 3 -3.216 0.439 1.587 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.809 3.489 2.607 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.680 3.265 3.592 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.676 4.243 3.732 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.635 2.094 4.373 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.650 4.078 4.679 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.601 1.916 5.312 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.618 2.916 5.478 0.00 0.00 C +ATOM 47 OH TYR A 3 0.344 2.765 6.428 0.00 0.00 O +ATOM 48 H TYR A 3 -4.793 4.381 0.493 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.522 2.805 1.039 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.904 4.544 2.433 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.748 3.153 3.047 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.691 5.139 3.130 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.397 1.337 4.260 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.099 4.851 4.791 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.558 1.031 5.929 0.00 0.00 H +ATOM 56 HH TYR A 3 0.794 3.595 6.593 0.00 0.00 H +ATOM 57 N ILE A 4 -5.312 1.025 1.029 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.855 -0.341 0.979 0.00 0.00 C +ATOM 59 C ILE A 4 -5.188 -1.123 -0.163 0.00 0.00 C +ATOM 60 O ILE A 4 -4.740 -2.254 0.031 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.398 -0.328 0.820 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.143 0.621 1.794 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.976 -1.749 0.938 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -7.792 0.462 3.281 0.00 0.00 C +ATOM 65 H ILE A 4 -5.901 1.775 0.693 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.609 -0.846 1.915 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.635 0.015 -0.186 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -7.917 1.630 1.508 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -9.215 0.465 1.676 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.579 -2.387 0.147 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.724 -2.190 1.903 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.062 -1.721 0.834 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.711 -0.590 3.551 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -6.848 0.965 3.496 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.578 0.918 3.885 0.00 0.00 H +ATOM 76 N GLN A 5 -5.075 -0.498 -1.343 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.362 -1.071 -2.489 0.00 0.00 C +ATOM 78 C GLN A 5 -2.867 -1.283 -2.198 0.00 0.00 C +ATOM 79 O GLN A 5 -2.320 -2.311 -2.590 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.555 -0.198 -3.737 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.995 -0.248 -4.266 0.00 0.00 C +ATOM 82 CD GLN A 5 -6.126 0.517 -5.579 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.978 -0.031 -6.658 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.401 1.806 -5.540 0.00 0.00 N +ATOM 85 H GLN A 5 -5.445 0.441 -1.413 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.782 -2.057 -2.696 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.314 0.818 -3.488 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.891 -0.565 -4.522 0.00 0.00 H +ATOM 89 1HG GLN A 5 -6.273 -1.272 -4.428 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.680 0.175 -3.530 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -6.520 2.309 -4.682 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -6.457 2.229 -6.452 0.00 0.00 H +ATOM 93 N TRP A 6 -2.207 -0.362 -1.483 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.824 -0.567 -1.033 0.00 0.00 C +ATOM 95 C TRP A 6 -0.685 -1.753 -0.064 0.00 0.00 C +ATOM 96 O TRP A 6 0.203 -2.588 -0.244 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.276 0.722 -0.418 0.00 0.00 C +ATOM 98 CG TRP A 6 1.118 0.612 0.126 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.254 0.594 -0.609 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.544 0.501 1.519 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.347 0.461 0.227 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.967 0.413 1.548 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.878 0.488 2.764 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.697 0.331 2.741 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.600 0.402 3.971 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.004 0.331 3.961 0.00 0.00 C +ATOM 107 H TRP A 6 -2.689 0.503 -1.249 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.214 -0.807 -1.905 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.281 1.482 -1.175 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.933 1.043 0.389 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.293 0.681 -1.686 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.326 0.458 -0.069 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.200 0.564 2.787 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.776 0.281 2.705 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.071 0.411 4.914 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.548 0.291 4.893 0.00 0.00 H +ATOM 117 N LEU A 7 -1.580 -1.874 0.927 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.599 -3.031 1.829 0.00 0.00 C +ATOM 119 C LEU A 7 -1.786 -4.356 1.073 0.00 0.00 C +ATOM 120 O LEU A 7 -1.124 -5.333 1.422 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.674 -2.852 2.916 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.324 -1.798 3.986 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.552 -1.544 4.867 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.168 -2.243 4.890 0.00 0.00 C +ATOM 125 H LEU A 7 -2.270 -1.136 1.054 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.625 -3.099 2.308 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.588 -2.556 2.439 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.827 -3.808 3.419 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.045 -0.863 3.506 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.374 -1.176 4.252 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.856 -2.467 5.361 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.318 -0.796 5.624 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.414 -3.187 5.378 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.257 -2.363 4.309 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.985 -1.485 5.652 0.00 0.00 H +ATOM 136 N LYS A 8 -2.609 -4.385 0.009 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.835 -5.565 -0.847 0.00 0.00 C +ATOM 138 C LYS A 8 -1.558 -6.137 -1.482 0.00 0.00 C +ATOM 139 O LYS A 8 -1.510 -7.335 -1.746 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.872 -5.210 -1.927 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.472 -6.419 -2.672 0.00 0.00 C +ATOM 142 CD LYS A 8 -3.967 -6.562 -4.118 0.00 0.00 C +ATOM 143 CE LYS A 8 -4.912 -7.488 -4.895 0.00 0.00 C +ATOM 144 NZ LYS A 8 -4.381 -7.814 -6.240 0.00 0.00 N +ATOM 145 H LYS A 8 -3.146 -3.541 -0.174 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.247 -6.357 -0.218 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.675 -4.677 -1.456 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.417 -4.531 -2.647 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.216 -7.311 -2.133 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.554 -6.284 -2.697 0.00 0.00 H +ATOM 151 1HD LYS A 8 -3.944 -5.597 -4.587 0.00 0.00 H +ATOM 152 2HD LYS A 8 -2.954 -6.968 -4.111 0.00 0.00 H +ATOM 153 1HE LYS A 8 -5.039 -8.398 -4.342 0.00 0.00 H +ATOM 154 2HE LYS A 8 -5.879 -6.986 -4.990 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -4.156 -6.967 -6.745 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -3.540 -8.372 -6.153 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -5.066 -8.339 -6.770 0.00 0.00 H +ATOM 158 N ASP A 9 -0.531 -5.310 -1.709 0.00 0.00 N +ATOM 159 CA ASP A 9 0.782 -5.753 -2.199 0.00 0.00 C +ATOM 160 C ASP A 9 1.608 -6.478 -1.111 0.00 0.00 C +ATOM 161 O ASP A 9 2.514 -7.238 -1.445 0.00 0.00 O +ATOM 162 CB ASP A 9 1.552 -4.536 -2.756 0.00 0.00 C +ATOM 163 CG ASP A 9 2.243 -4.819 -4.098 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.496 -4.834 -4.151 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.520 -4.894 -5.114 0.00 0.00 O +ATOM 166 H ASP A 9 -0.652 -4.327 -1.493 0.00 0.00 H +ATOM 167 HA ASP A 9 0.624 -6.460 -3.016 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.860 -3.728 -2.893 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.281 -4.194 -2.021 0.00 0.00 H +ATOM 170 N GLY A 10 1.277 -6.270 0.176 0.00 0.00 N +ATOM 171 CA GLY A 10 2.025 -6.755 1.345 0.00 0.00 C +ATOM 172 C GLY A 10 2.511 -5.652 2.302 0.00 0.00 C +ATOM 173 O GLY A 10 3.330 -5.927 3.184 0.00 0.00 O +ATOM 174 H GLY A 10 0.421 -5.751 0.355 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.382 -7.428 1.912 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.898 -7.318 1.016 0.00 0.00 H +ATOM 177 N GLY A 11 2.061 -4.397 2.131 0.00 0.00 N +ATOM 178 CA GLY A 11 2.503 -3.261 2.946 0.00 0.00 C +ATOM 179 C GLY A 11 4.031 -3.074 2.887 0.00 0.00 C +ATOM 180 O GLY A 11 4.595 -3.162 1.791 0.00 0.00 O +ATOM 181 H GLY A 11 1.442 -4.219 1.351 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.030 -2.351 2.579 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.173 -3.433 3.969 0.00 0.00 H +ATOM 184 N PRO A 12 4.729 -2.844 4.022 0.00 0.00 N +ATOM 185 CA PRO A 12 6.186 -2.657 4.057 0.00 0.00 C +ATOM 186 C PRO A 12 7.000 -3.804 3.440 0.00 0.00 C +ATOM 187 O PRO A 12 8.098 -3.571 2.938 0.00 0.00 O +ATOM 188 CB PRO A 12 6.560 -2.503 5.537 0.00 0.00 C +ATOM 189 CG PRO A 12 5.258 -2.091 6.219 0.00 0.00 C +ATOM 190 CD PRO A 12 4.187 -2.773 5.373 0.00 0.00 C +ATOM 191 HA PRO A 12 6.428 -1.733 3.531 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.920 -3.432 5.936 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.339 -1.752 5.678 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.228 -2.441 7.233 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.143 -1.008 6.161 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.987 -3.759 5.747 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.262 -2.198 5.412 0.00 0.00 H +ATOM 198 N SER A 13 6.470 -5.035 3.441 0.00 0.00 N +ATOM 199 CA SER A 13 7.162 -6.235 2.936 0.00 0.00 C +ATOM 200 C SER A 13 7.153 -6.352 1.402 0.00 0.00 C +ATOM 201 O SER A 13 7.495 -7.398 0.861 0.00 0.00 O +ATOM 202 CB SER A 13 6.574 -7.490 3.595 0.00 0.00 C +ATOM 203 OG SER A 13 6.813 -7.451 4.988 0.00 0.00 O +ATOM 204 H SER A 13 5.505 -5.137 3.737 0.00 0.00 H +ATOM 205 HA SER A 13 8.211 -6.179 3.232 0.00 0.00 H +ATOM 206 1HB SER A 13 5.517 -7.526 3.415 0.00 0.00 H +ATOM 207 2HB SER A 13 7.054 -8.380 3.187 0.00 0.00 H +ATOM 208 HG SER A 13 6.443 -6.640 5.343 0.00 0.00 H +ATOM 209 N SER A 14 6.767 -5.279 0.701 0.00 0.00 N +ATOM 210 CA SER A 14 6.504 -5.245 -0.744 0.00 0.00 C +ATOM 211 C SER A 14 7.583 -4.513 -1.556 0.00 0.00 C +ATOM 212 O SER A 14 7.477 -4.434 -2.776 0.00 0.00 O +ATOM 213 CB SER A 14 5.171 -4.534 -0.999 0.00 0.00 C +ATOM 214 OG SER A 14 4.177 -4.877 -0.070 0.00 0.00 O +ATOM 215 H SER A 14 6.484 -4.475 1.245 0.00 0.00 H +ATOM 216 HA SER A 14 6.420 -6.264 -1.123 0.00 0.00 H +ATOM 217 1HB SER A 14 5.334 -3.475 -0.949 0.00 0.00 H +ATOM 218 2HB SER A 14 4.831 -4.746 -2.011 0.00 0.00 H +ATOM 219 HG SER A 14 4.259 -4.235 0.675 0.00 0.00 H +ATOM 220 N GLY A 15 8.589 -3.916 -0.899 0.00 0.00 N +ATOM 221 CA GLY A 15 9.628 -3.120 -1.568 0.00 0.00 C +ATOM 222 C GLY A 15 9.147 -1.769 -2.127 0.00 0.00 C +ATOM 223 O GLY A 15 9.811 -1.210 -2.995 0.00 0.00 O +ATOM 224 H GLY A 15 8.637 -4.053 0.102 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.434 -2.923 -0.862 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.042 -3.698 -2.394 0.00 0.00 H +ATOM 227 N ARG A 16 8.006 -1.245 -1.647 0.00 0.00 N +ATOM 228 CA ARG A 16 7.372 -0.003 -2.121 0.00 0.00 C +ATOM 229 C ARG A 16 6.899 0.883 -0.950 0.00 0.00 C +ATOM 230 O ARG A 16 6.250 0.369 -0.033 0.00 0.00 O +ATOM 231 CB ARG A 16 6.209 -0.320 -3.084 0.00 0.00 C +ATOM 232 CG ARG A 16 5.215 -1.352 -2.526 0.00 0.00 C +ATOM 233 CD ARG A 16 3.904 -1.443 -3.304 0.00 0.00 C +ATOM 234 NE ARG A 16 4.061 -2.274 -4.499 0.00 0.00 N +ATOM 235 CZ ARG A 16 3.904 -1.985 -5.776 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.635 -0.767 -6.189 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.003 -2.954 -6.651 0.00 0.00 N +ATOM 238 H ARG A 16 7.548 -1.757 -0.908 0.00 0.00 H +ATOM 239 HA ARG A 16 8.120 0.548 -2.691 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.677 0.590 -3.285 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.620 -0.712 -4.017 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.685 -2.316 -2.545 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.960 -1.114 -1.497 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.151 -1.874 -2.673 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.536 -0.446 -3.542 0.00 0.00 H +ATOM 246 HE ARG A 16 4.127 -3.284 -4.320 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 3.507 -0.060 -5.490 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.473 -0.577 -7.160 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.040 -3.895 -6.271 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 3.899 -2.795 -7.633 0.00 0.00 H +ATOM 251 N PRO A 17 7.166 2.205 -0.969 0.00 0.00 N +ATOM 252 CA PRO A 17 6.727 3.117 0.088 0.00 0.00 C +ATOM 253 C PRO A 17 5.195 3.304 0.088 0.00 0.00 C +ATOM 254 O PRO A 17 4.551 3.043 -0.934 0.00 0.00 O +ATOM 255 CB PRO A 17 7.460 4.433 -0.196 0.00 0.00 C +ATOM 256 CG PRO A 17 7.647 4.418 -1.712 0.00 0.00 C +ATOM 257 CD PRO A 17 7.865 2.938 -2.017 0.00 0.00 C +ATOM 258 HA PRO A 17 7.042 2.728 1.057 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.869 5.275 0.109 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.437 4.415 0.288 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.774 4.790 -2.212 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.499 5.023 -2.023 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.459 2.692 -2.979 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.930 2.705 -1.974 0.00 0.00 H +ATOM 265 N PRO A 18 4.598 3.763 1.206 0.00 0.00 N +ATOM 266 CA PRO A 18 3.160 4.002 1.296 0.00 0.00 C +ATOM 267 C PRO A 18 2.723 5.223 0.459 0.00 0.00 C +ATOM 268 O PRO A 18 3.486 6.180 0.323 0.00 0.00 O +ATOM 269 CB PRO A 18 2.870 4.209 2.786 0.00 0.00 C +ATOM 270 CG PRO A 18 4.187 4.765 3.327 0.00 0.00 C +ATOM 271 CD PRO A 18 5.239 4.048 2.482 0.00 0.00 C +ATOM 272 HA PRO A 18 2.639 3.111 0.954 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.070 4.910 2.928 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.665 3.246 3.253 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.242 5.828 3.190 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.310 4.556 4.389 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.095 4.679 2.337 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.518 3.109 2.962 0.00 0.00 H +ATOM 279 N PRO A 19 1.487 5.223 -0.081 0.00 0.00 N +ATOM 280 CA PRO A 19 0.954 6.306 -0.911 0.00 0.00 C +ATOM 281 C PRO A 19 0.318 7.463 -0.116 0.00 0.00 C +ATOM 282 O PRO A 19 -0.042 8.473 -0.718 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.097 5.617 -1.786 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.667 4.552 -0.849 0.00 0.00 C +ATOM 285 CD PRO A 19 0.572 4.092 -0.088 0.00 0.00 C +ATOM 286 HA PRO A 19 1.738 6.719 -1.548 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.857 6.308 -2.094 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.396 5.133 -2.632 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.398 4.970 -0.184 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.129 3.736 -1.404 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.311 3.818 0.916 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.042 3.271 -0.628 0.00 0.00 H +ATOM 293 N SER A 20 0.154 7.315 1.206 0.00 0.00 N +ATOM 294 CA SER A 20 -0.381 8.320 2.134 0.00 0.00 C +ATOM 295 C SER A 20 0.429 8.296 3.426 0.00 0.00 C +ATOM 296 O SER A 20 0.669 7.163 3.906 0.00 0.00 O +ATOM 297 CB SER A 20 -1.858 8.039 2.425 0.00 0.00 C +ATOM 298 OG SER A 20 -2.535 9.236 2.730 0.00 0.00 O +ATOM 299 OXT SER A 20 0.789 9.398 3.882 0.00 0.00 O +ATOM 300 H SER A 20 0.527 6.490 1.654 0.00 0.00 H +ATOM 301 HA SER A 20 -0.263 9.307 1.688 0.00 0.00 H +ATOM 302 1HB SER A 20 -2.309 7.588 1.562 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.945 7.348 3.266 0.00 0.00 H +ATOM 304 HG SER A 20 -1.973 9.971 2.469 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 9 +ATOM 1 N ASN A 1 -6.355 7.914 0.576 0.00 0.00 N +ATOM 2 CA ASN A 1 -6.778 6.858 -0.378 0.00 0.00 C +ATOM 3 C ASN A 1 -5.549 6.028 -0.782 0.00 0.00 C +ATOM 4 O ASN A 1 -4.530 6.178 -0.119 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.563 7.460 -1.562 0.00 0.00 C +ATOM 6 CG ASN A 1 -8.448 6.400 -2.211 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -8.022 5.688 -3.104 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -9.658 6.188 -1.730 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.830 7.486 1.328 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.742 8.573 0.115 0.00 0.00 H +ATOM 11 3H ASN A 1 -7.157 8.399 0.955 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.452 6.182 0.150 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.178 8.264 -1.206 0.00 0.00 H +ATOM 14 2HB ASN A 1 -6.872 7.865 -2.304 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -10.087 6.731 -1.001 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -10.166 5.465 -2.217 0.00 0.00 H +ATOM 17 N LEU A 2 -5.630 5.135 -1.783 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.587 4.213 -2.289 0.00 0.00 C +ATOM 19 C LEU A 2 -3.962 3.229 -1.269 0.00 0.00 C +ATOM 20 O LEU A 2 -3.407 2.204 -1.668 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.510 5.015 -3.058 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.772 5.277 -4.555 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.748 3.980 -5.372 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -5.076 6.028 -4.834 0.00 0.00 C +ATOM 25 H LEU A 2 -6.497 5.119 -2.318 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.078 3.561 -3.012 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.409 5.968 -2.575 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.567 4.475 -3.000 0.00 0.00 H +ATOM 29 HG LEU A 2 -2.952 5.903 -4.913 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -2.862 3.397 -5.120 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -4.638 3.385 -5.182 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.712 4.225 -6.435 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -5.932 5.392 -4.613 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.123 6.933 -4.230 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -5.117 6.307 -5.887 0.00 0.00 H +ATOM 36 N TYR A 3 -4.092 3.484 0.034 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.507 2.707 1.123 0.00 0.00 C +ATOM 38 C TYR A 3 -3.985 1.247 1.144 0.00 0.00 C +ATOM 39 O TYR A 3 -3.180 0.347 1.372 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.807 3.419 2.451 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.696 3.269 3.468 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.753 4.303 3.625 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.590 2.095 4.240 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.711 4.172 4.561 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.550 1.959 5.180 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.611 3.005 5.344 0.00 0.00 C +ATOM 47 OH TYR A 3 0.374 2.911 6.276 0.00 0.00 O +ATOM 48 H TYR A 3 -4.425 4.414 0.259 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.425 2.700 0.981 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.951 4.464 2.254 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.742 3.045 2.871 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.821 5.207 3.034 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.308 1.299 4.106 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.006 4.966 4.698 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.462 1.059 5.769 0.00 0.00 H +ATOM 56 HH TYR A 3 0.027 2.663 7.133 0.00 0.00 H +ATOM 57 N ILE A 4 -5.271 0.998 0.853 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.839 -0.354 0.750 0.00 0.00 C +ATOM 59 C ILE A 4 -5.129 -1.160 -0.354 0.00 0.00 C +ATOM 60 O ILE A 4 -4.715 -2.294 -0.121 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.375 -0.317 0.526 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.137 0.556 1.557 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.940 -1.748 0.590 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.425 1.981 1.063 0.00 0.00 C +ATOM 65 H ILE A 4 -5.872 1.793 0.698 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.651 -0.867 1.695 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.576 0.069 -0.474 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.072 0.079 1.780 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.585 0.601 2.497 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.504 -2.371 -0.192 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.727 -2.194 1.563 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.020 -1.731 0.437 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.512 2.575 1.038 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -8.867 1.949 0.066 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.137 2.458 1.739 0.00 0.00 H +ATOM 76 N GLN A 5 -4.949 -0.564 -1.544 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.210 -1.179 -2.650 0.00 0.00 C +ATOM 78 C GLN A 5 -2.730 -1.412 -2.309 0.00 0.00 C +ATOM 79 O GLN A 5 -2.180 -2.447 -2.679 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.326 -0.333 -3.929 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.654 -0.555 -4.672 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.597 0.001 -6.097 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.724 -0.323 -6.881 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.527 0.846 -6.499 0.00 0.00 N +ATOM 85 H GLN A 5 -5.256 0.391 -1.646 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.639 -2.162 -2.849 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.251 0.704 -3.662 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.512 -0.622 -4.596 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.858 -1.608 -4.716 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.466 -0.086 -4.117 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.297 1.142 -5.929 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -6.409 1.126 -7.459 0.00 0.00 H +ATOM 93 N TRP A 6 -2.081 -0.492 -1.584 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.717 -0.712 -1.094 0.00 0.00 C +ATOM 95 C TRP A 6 -0.634 -1.871 -0.083 0.00 0.00 C +ATOM 96 O TRP A 6 0.235 -2.738 -0.203 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.168 0.595 -0.511 0.00 0.00 C +ATOM 98 CG TRP A 6 1.222 0.490 0.032 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.356 0.444 -0.705 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.648 0.375 1.425 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.446 0.307 0.129 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.068 0.266 1.450 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.980 0.360 2.668 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.796 0.163 2.643 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.699 0.248 3.874 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.103 0.153 3.864 0.00 0.00 C +ATOM 107 H TRP A 6 -2.567 0.373 -1.361 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.089 -0.993 -1.940 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.171 1.336 -1.287 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.824 0.933 0.292 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.407 0.492 -1.782 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.421 0.258 -0.183 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.097 0.448 2.689 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.873 0.086 2.605 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.170 0.248 4.818 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.648 0.079 4.793 0.00 0.00 H +ATOM 117 N LEU A 7 -1.559 -1.927 0.884 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.650 -3.030 1.843 0.00 0.00 C +ATOM 119 C LEU A 7 -1.902 -4.384 1.166 0.00 0.00 C +ATOM 120 O LEU A 7 -1.269 -5.361 1.560 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.733 -2.741 2.896 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.320 -1.710 3.964 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.516 -1.453 4.886 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.139 -2.196 4.813 0.00 0.00 C +ATOM 125 H LEU A 7 -2.231 -1.165 0.952 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.687 -3.126 2.344 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.603 -2.370 2.390 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.981 -3.673 3.405 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.041 -0.773 3.487 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.353 -1.069 4.302 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.815 -2.379 5.378 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.251 -0.717 5.645 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.303 -3.225 5.133 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.219 -2.141 4.234 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -1.022 -1.564 5.694 0.00 0.00 H +ATOM 136 N LYS A 8 -2.764 -4.435 0.137 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.064 -5.639 -0.660 0.00 0.00 C +ATOM 138 C LYS A 8 -1.824 -6.358 -1.202 0.00 0.00 C +ATOM 139 O LYS A 8 -1.858 -7.580 -1.310 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.983 -5.265 -1.837 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.484 -5.361 -1.533 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.970 -6.821 -1.519 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.373 -6.934 -2.133 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.546 -8.214 -2.860 0.00 0.00 N +ATOM 145 H LYS A 8 -3.276 -3.581 -0.075 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.567 -6.365 -0.022 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.764 -4.255 -2.124 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.765 -5.907 -2.694 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.673 -4.922 -0.572 0.00 0.00 H +ATOM 150 2HG LYS A 8 -6.001 -4.816 -2.323 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.288 -7.424 -2.086 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.982 -7.196 -0.493 0.00 0.00 H +ATOM 153 1HE LYS A 8 -8.103 -6.877 -1.348 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.516 -6.106 -2.833 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -6.850 -8.287 -3.593 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.431 -8.996 -2.230 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -8.463 -8.259 -3.283 0.00 0.00 H +ATOM 158 N ASP A 9 -0.763 -5.623 -1.552 0.00 0.00 N +ATOM 159 CA ASP A 9 0.496 -6.197 -2.043 0.00 0.00 C +ATOM 160 C ASP A 9 1.282 -6.902 -0.920 0.00 0.00 C +ATOM 161 O ASP A 9 1.817 -7.991 -1.121 0.00 0.00 O +ATOM 162 CB ASP A 9 1.321 -5.072 -2.691 0.00 0.00 C +ATOM 163 CG ASP A 9 2.292 -5.605 -3.748 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.441 -5.927 -3.382 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.868 -5.659 -4.923 0.00 0.00 O +ATOM 166 H ASP A 9 -0.837 -4.618 -1.476 0.00 0.00 H +ATOM 167 HA ASP A 9 0.265 -6.940 -2.810 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.651 -4.376 -3.157 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.866 -4.522 -1.921 0.00 0.00 H +ATOM 170 N GLY A 10 1.295 -6.304 0.280 0.00 0.00 N +ATOM 171 CA GLY A 10 2.040 -6.794 1.445 0.00 0.00 C +ATOM 172 C GLY A 10 2.489 -5.723 2.455 0.00 0.00 C +ATOM 173 O GLY A 10 3.314 -6.013 3.317 0.00 0.00 O +ATOM 174 H GLY A 10 0.707 -5.487 0.357 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.418 -7.514 1.975 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.937 -7.314 1.102 0.00 0.00 H +ATOM 177 N GLY A 11 1.982 -4.483 2.376 0.00 0.00 N +ATOM 178 CA GLY A 11 2.428 -3.400 3.257 0.00 0.00 C +ATOM 179 C GLY A 11 3.939 -3.116 3.122 0.00 0.00 C +ATOM 180 O GLY A 11 4.431 -3.017 1.996 0.00 0.00 O +ATOM 181 H GLY A 11 1.270 -4.287 1.690 0.00 0.00 H +ATOM 182 1HA GLY A 11 1.885 -2.490 3.006 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.184 -3.679 4.281 0.00 0.00 H +ATOM 184 N PRO A 12 4.698 -2.946 4.226 0.00 0.00 N +ATOM 185 CA PRO A 12 6.130 -2.631 4.172 0.00 0.00 C +ATOM 186 C PRO A 12 7.010 -3.666 3.454 0.00 0.00 C +ATOM 187 O PRO A 12 8.063 -3.297 2.936 0.00 0.00 O +ATOM 188 CB PRO A 12 6.588 -2.475 5.628 0.00 0.00 C +ATOM 189 CG PRO A 12 5.303 -2.191 6.399 0.00 0.00 C +ATOM 190 CD PRO A 12 4.243 -2.957 5.611 0.00 0.00 C +ATOM 191 HA PRO A 12 6.248 -1.673 3.664 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.051 -3.377 5.980 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.305 -1.661 5.732 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.371 -2.555 7.406 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.086 -1.123 6.366 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.164 -3.965 5.971 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.275 -2.469 5.727 0.00 0.00 H +ATOM 198 N SER A 13 6.616 -4.948 3.398 0.00 0.00 N +ATOM 199 CA SER A 13 7.425 -6.010 2.779 0.00 0.00 C +ATOM 200 C SER A 13 7.282 -6.083 1.247 0.00 0.00 C +ATOM 201 O SER A 13 7.825 -6.993 0.624 0.00 0.00 O +ATOM 202 CB SER A 13 7.160 -7.358 3.464 0.00 0.00 C +ATOM 203 OG SER A 13 5.803 -7.725 3.370 0.00 0.00 O +ATOM 204 H SER A 13 5.705 -5.222 3.755 0.00 0.00 H +ATOM 205 HA SER A 13 8.474 -5.782 2.964 0.00 0.00 H +ATOM 206 1HB SER A 13 7.759 -8.113 2.992 0.00 0.00 H +ATOM 207 2HB SER A 13 7.430 -7.277 4.519 0.00 0.00 H +ATOM 208 HG SER A 13 5.735 -8.681 3.298 0.00 0.00 H +ATOM 209 N SER A 14 6.606 -5.101 0.635 0.00 0.00 N +ATOM 210 CA SER A 14 6.348 -4.975 -0.808 0.00 0.00 C +ATOM 211 C SER A 14 7.404 -4.162 -1.577 0.00 0.00 C +ATOM 212 O SER A 14 7.289 -3.990 -2.790 0.00 0.00 O +ATOM 213 CB SER A 14 5.008 -4.262 -1.007 0.00 0.00 C +ATOM 214 OG SER A 14 4.002 -4.863 -0.226 0.00 0.00 O +ATOM 215 H SER A 14 6.121 -4.441 1.233 0.00 0.00 H +ATOM 216 HA SER A 14 6.278 -5.969 -1.254 0.00 0.00 H +ATOM 217 1HB SER A 14 5.110 -3.234 -0.719 0.00 0.00 H +ATOM 218 2HB SER A 14 4.727 -4.291 -2.059 0.00 0.00 H +ATOM 219 HG SER A 14 3.353 -4.187 -0.015 0.00 0.00 H +ATOM 220 N GLY A 15 8.395 -3.574 -0.897 0.00 0.00 N +ATOM 221 CA GLY A 15 9.449 -2.750 -1.509 0.00 0.00 C +ATOM 222 C GLY A 15 9.021 -1.317 -1.874 0.00 0.00 C +ATOM 223 O GLY A 15 9.808 -0.389 -1.697 0.00 0.00 O +ATOM 224 H GLY A 15 8.410 -3.718 0.104 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.294 -2.689 -0.823 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.796 -3.237 -2.420 0.00 0.00 H +ATOM 227 N ARG A 16 7.790 -1.115 -2.367 0.00 0.00 N +ATOM 228 CA ARG A 16 7.218 0.212 -2.656 0.00 0.00 C +ATOM 229 C ARG A 16 6.821 0.946 -1.353 0.00 0.00 C +ATOM 230 O ARG A 16 6.154 0.335 -0.515 0.00 0.00 O +ATOM 231 CB ARG A 16 6.002 0.046 -3.589 0.00 0.00 C +ATOM 232 CG ARG A 16 5.399 1.393 -4.024 0.00 0.00 C +ATOM 233 CD ARG A 16 4.125 1.223 -4.857 0.00 0.00 C +ATOM 234 NE ARG A 16 3.497 2.535 -5.114 0.00 0.00 N +ATOM 235 CZ ARG A 16 2.320 2.983 -4.685 0.00 0.00 C +ATOM 236 NH1 ARG A 16 1.482 2.226 -4.014 0.00 0.00 N +ATOM 237 NH2 ARG A 16 1.953 4.216 -4.940 0.00 0.00 N +ATOM 238 H ARG A 16 7.238 -1.952 -2.530 0.00 0.00 H +ATOM 239 HA ARG A 16 7.984 0.787 -3.176 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.312 -0.490 -4.465 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.238 -0.540 -3.076 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.163 1.964 -3.147 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.135 1.947 -4.608 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.374 0.761 -5.793 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.445 0.561 -4.322 0.00 0.00 H +ATOM 246 HE ARG A 16 4.053 3.192 -5.635 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 1.728 1.264 -3.884 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 0.601 2.578 -3.692 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 2.560 4.835 -5.449 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 1.060 4.549 -4.627 0.00 0.00 H +ATOM 251 N PRO A 17 7.132 2.251 -1.190 0.00 0.00 N +ATOM 252 CA PRO A 17 6.721 3.035 -0.016 0.00 0.00 C +ATOM 253 C PRO A 17 5.194 3.259 0.062 0.00 0.00 C +ATOM 254 O PRO A 17 4.507 3.162 -0.959 0.00 0.00 O +ATOM 255 CB PRO A 17 7.473 4.368 -0.143 0.00 0.00 C +ATOM 256 CG PRO A 17 7.674 4.523 -1.648 0.00 0.00 C +ATOM 257 CD PRO A 17 7.904 3.085 -2.103 0.00 0.00 C +ATOM 258 HA PRO A 17 7.053 2.520 0.885 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.889 5.177 0.251 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.446 4.287 0.346 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.803 4.942 -2.114 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.524 5.165 -1.882 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.561 2.953 -3.111 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.962 2.836 -2.011 0.00 0.00 H +ATOM 265 N PRO A 18 4.651 3.589 1.252 0.00 0.00 N +ATOM 266 CA PRO A 18 3.222 3.833 1.437 0.00 0.00 C +ATOM 267 C PRO A 18 2.772 5.142 0.759 0.00 0.00 C +ATOM 268 O PRO A 18 3.480 6.148 0.843 0.00 0.00 O +ATOM 269 CB PRO A 18 3.004 3.890 2.953 0.00 0.00 C +ATOM 270 CG PRO A 18 4.356 4.348 3.494 0.00 0.00 C +ATOM 271 CD PRO A 18 5.355 3.724 2.520 0.00 0.00 C +ATOM 272 HA PRO A 18 2.669 2.988 1.034 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.233 4.593 3.203 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.784 2.892 3.327 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.430 5.418 3.487 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.520 4.003 4.516 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.211 4.361 2.405 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.649 2.736 2.877 0.00 0.00 H +ATOM 279 N PRO A 19 1.591 5.165 0.108 0.00 0.00 N +ATOM 280 CA PRO A 19 1.031 6.371 -0.488 0.00 0.00 C +ATOM 281 C PRO A 19 0.380 7.262 0.584 0.00 0.00 C +ATOM 282 O PRO A 19 -0.321 6.767 1.470 0.00 0.00 O +ATOM 283 CB PRO A 19 0.009 5.859 -1.504 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.512 4.571 -0.862 0.00 0.00 C +ATOM 285 CD PRO A 19 0.696 4.034 -0.095 0.00 0.00 C +ATOM 286 HA PRO A 19 1.809 6.936 -1.005 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.784 6.568 -1.642 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.521 5.617 -2.437 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.327 4.778 -0.196 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.847 3.854 -1.611 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.386 3.632 0.850 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.206 3.279 -0.693 0.00 0.00 H +ATOM 293 N SER A 20 0.592 8.578 0.472 0.00 0.00 N +ATOM 294 CA SER A 20 0.019 9.620 1.329 0.00 0.00 C +ATOM 295 C SER A 20 -0.235 10.875 0.498 0.00 0.00 C +ATOM 296 O SER A 20 0.745 11.327 -0.137 0.00 0.00 O +ATOM 297 CB SER A 20 0.977 9.898 2.490 0.00 0.00 C +ATOM 298 OG SER A 20 0.308 10.641 3.489 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.409 11.298 0.440 0.00 0.00 O +ATOM 300 H SER A 20 1.168 8.935 -0.278 0.00 0.00 H +ATOM 301 HA SER A 20 -0.939 9.293 1.731 0.00 0.00 H +ATOM 302 1HB SER A 20 1.316 8.968 2.904 0.00 0.00 H +ATOM 303 2HB SER A 20 1.845 10.449 2.120 0.00 0.00 H +ATOM 304 HG SER A 20 0.955 10.989 4.106 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 10 +ATOM 1 N ASN A 1 -6.943 6.963 0.951 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.689 6.240 -0.107 0.00 0.00 C +ATOM 3 C ASN A 1 -6.888 5.124 -0.770 0.00 0.00 C +ATOM 4 O ASN A 1 -7.377 4.006 -0.773 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.340 7.202 -1.116 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.413 8.048 -0.430 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -9.573 7.981 0.781 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.146 8.872 -1.153 0.00 0.00 N +ATOM 9 1H ASN A 1 -6.551 6.315 1.619 0.00 0.00 H +ATOM 10 2H ASN A 1 -6.210 7.532 0.552 0.00 0.00 H +ATOM 11 3H ASN A 1 -7.600 7.571 1.435 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.514 5.723 0.389 0.00 0.00 H +ATOM 13 1HB ASN A 1 -7.587 7.849 -1.524 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.816 6.622 -1.909 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -10.039 8.989 -2.148 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -10.843 9.380 -0.632 0.00 0.00 H +ATOM 17 N LEU A 2 -5.683 5.360 -1.308 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.939 4.305 -2.022 0.00 0.00 C +ATOM 19 C LEU A 2 -4.268 3.260 -1.097 0.00 0.00 C +ATOM 20 O LEU A 2 -3.716 2.270 -1.573 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.943 4.985 -2.983 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.510 4.134 -4.197 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.689 3.815 -5.127 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.467 4.910 -5.004 0.00 0.00 C +ATOM 25 H LEU A 2 -5.289 6.289 -1.343 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.665 3.756 -2.620 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.400 5.882 -3.353 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.059 5.272 -2.417 0.00 0.00 H +ATOM 29 HG LEU A 2 -3.055 3.203 -3.864 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.375 3.120 -4.648 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -5.221 4.730 -5.390 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.321 3.345 -6.040 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.887 5.852 -5.359 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -1.596 5.115 -4.384 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -2.147 4.317 -5.861 0.00 0.00 H +ATOM 36 N TYR A 3 -4.340 3.443 0.228 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.683 2.595 1.228 0.00 0.00 C +ATOM 38 C TYR A 3 -4.096 1.115 1.160 0.00 0.00 C +ATOM 39 O TYR A 3 -3.266 0.248 1.427 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.925 3.179 2.630 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.760 2.970 3.580 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.680 3.874 3.561 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.753 1.884 4.475 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.588 3.691 4.430 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.662 1.698 5.348 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.577 2.599 5.325 0.00 0.00 C +ATOM 47 OH TYR A 3 0.476 2.408 6.162 0.00 0.00 O +ATOM 48 H TYR A 3 -4.813 4.268 0.548 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.609 2.637 1.035 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.100 4.233 2.534 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.832 2.746 3.057 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.686 4.718 2.886 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.582 1.193 4.494 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.229 4.396 4.422 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.639 0.873 6.042 0.00 0.00 H +ATOM 56 HH TYR A 3 1.215 2.981 5.950 0.00 0.00 H +ATOM 57 N ILE A 4 -5.333 0.810 0.732 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.790 -0.565 0.464 0.00 0.00 C +ATOM 59 C ILE A 4 -4.909 -1.223 -0.610 0.00 0.00 C +ATOM 60 O ILE A 4 -4.439 -2.342 -0.417 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.285 -0.604 0.049 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.234 0.069 1.074 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.764 -2.056 -0.139 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.662 1.477 0.657 0.00 0.00 C +ATOM 65 H ILE A 4 -5.959 1.576 0.529 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.679 -1.148 1.381 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.388 -0.102 -0.916 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.112 -0.539 1.177 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.760 0.113 2.055 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.127 -2.599 -0.836 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.772 -2.577 0.819 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.776 -2.054 -0.550 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.813 2.149 0.745 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.034 1.472 -0.368 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.458 1.827 1.316 0.00 0.00 H +ATOM 76 N GLN A 5 -4.664 -0.521 -1.727 0.00 0.00 N +ATOM 77 CA GLN A 5 -3.843 -0.981 -2.852 0.00 0.00 C +ATOM 78 C GLN A 5 -2.374 -1.203 -2.455 0.00 0.00 C +ATOM 79 O GLN A 5 -1.735 -2.102 -2.996 0.00 0.00 O +ATOM 80 CB GLN A 5 -3.966 0.016 -4.026 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.731 -0.540 -5.248 0.00 0.00 C +ATOM 82 CD GLN A 5 -3.839 -0.991 -6.408 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -2.801 -0.426 -6.704 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -4.226 -2.006 -7.158 0.00 0.00 N +ATOM 85 H GLN A 5 -4.986 0.437 -1.755 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.229 -1.945 -3.174 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.481 0.889 -3.674 0.00 0.00 H +ATOM 88 2HB GLN A 5 -2.974 0.357 -4.328 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.311 -1.383 -4.925 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.374 0.252 -5.631 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -5.133 -2.431 -7.060 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -3.683 -2.060 -8.004 0.00 0.00 H +ATOM 93 N TRP A 6 -1.859 -0.430 -1.488 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.534 -0.641 -0.897 0.00 0.00 C +ATOM 95 C TRP A 6 -0.505 -1.815 0.100 0.00 0.00 C +ATOM 96 O TRP A 6 0.412 -2.635 0.060 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.068 0.666 -0.245 0.00 0.00 C +ATOM 98 CG TRP A 6 1.303 0.611 0.356 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.468 0.703 -0.325 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.674 0.434 1.758 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.528 0.564 0.550 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.097 0.425 1.849 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.953 0.284 2.960 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.775 0.299 3.069 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.622 0.134 4.190 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.026 0.159 4.250 0.00 0.00 C +ATOM 107 H TRP A 6 -2.448 0.312 -1.131 0.00 0.00 H +ATOM 108 HA TRP A 6 0.169 -0.885 -1.694 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.074 1.434 -0.994 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.776 0.954 0.532 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.556 0.855 -1.394 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.512 0.575 0.270 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.126 0.291 2.931 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.854 0.309 3.090 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.050 0.016 5.100 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.527 0.067 5.203 0.00 0.00 H +ATOM 117 N LEU A 7 -1.510 -1.935 0.978 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.599 -3.048 1.926 0.00 0.00 C +ATOM 119 C LEU A 7 -1.809 -4.403 1.239 0.00 0.00 C +ATOM 120 O LEU A 7 -1.124 -5.355 1.613 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.699 -2.798 2.974 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.286 -1.852 4.119 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.491 -1.640 5.038 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.140 -2.415 4.972 0.00 0.00 C +ATOM 125 H LEU A 7 -2.224 -1.210 1.007 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.640 -3.131 2.434 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.547 -2.370 2.475 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.977 -3.755 3.419 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.983 -0.891 3.707 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.312 -1.199 4.473 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.814 -2.592 5.458 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.224 -0.969 5.855 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.389 -3.418 5.318 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.217 -2.452 4.397 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.968 -1.773 5.834 0.00 0.00 H +ATOM 136 N LYS A 8 -2.697 -4.510 0.235 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.957 -5.783 -0.469 0.00 0.00 C +ATOM 138 C LYS A 8 -1.729 -6.374 -1.170 0.00 0.00 C +ATOM 139 O LYS A 8 -1.710 -7.566 -1.460 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.168 -5.663 -1.419 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.006 -4.746 -2.644 0.00 0.00 C +ATOM 142 CD LYS A 8 -3.193 -5.323 -3.812 0.00 0.00 C +ATOM 143 CE LYS A 8 -3.386 -4.457 -5.061 0.00 0.00 C +ATOM 144 NZ LYS A 8 -2.231 -4.566 -5.977 0.00 0.00 N +ATOM 145 H LYS A 8 -3.247 -3.686 -0.007 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.228 -6.519 0.290 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.396 -6.648 -1.779 0.00 0.00 H +ATOM 148 2HB LYS A 8 -5.007 -5.283 -0.833 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.987 -4.511 -3.011 0.00 0.00 H +ATOM 150 2HG LYS A 8 -3.534 -3.825 -2.321 0.00 0.00 H +ATOM 151 1HD LYS A 8 -2.153 -5.339 -3.548 0.00 0.00 H +ATOM 152 2HD LYS A 8 -3.497 -6.350 -4.023 0.00 0.00 H +ATOM 153 1HE LYS A 8 -4.271 -4.779 -5.575 0.00 0.00 H +ATOM 154 2HE LYS A 8 -3.483 -3.417 -4.746 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -1.362 -4.377 -5.451 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -2.123 -5.504 -6.333 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -2.292 -3.898 -6.731 0.00 0.00 H +ATOM 158 N ASP A 9 -0.707 -5.552 -1.426 0.00 0.00 N +ATOM 159 CA ASP A 9 0.589 -5.960 -1.966 0.00 0.00 C +ATOM 160 C ASP A 9 1.516 -6.588 -0.906 0.00 0.00 C +ATOM 161 O ASP A 9 2.485 -7.250 -1.274 0.00 0.00 O +ATOM 162 CB ASP A 9 1.253 -4.722 -2.594 0.00 0.00 C +ATOM 163 CG ASP A 9 1.159 -4.718 -4.115 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.240 -4.782 -4.738 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.038 -4.607 -4.656 0.00 0.00 O +ATOM 166 H ASP A 9 -0.829 -4.576 -1.196 0.00 0.00 H +ATOM 167 HA ASP A 9 0.438 -6.713 -2.742 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.768 -3.843 -2.217 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.307 -4.701 -2.323 0.00 0.00 H +ATOM 170 N GLY A 10 1.212 -6.406 0.389 0.00 0.00 N +ATOM 171 CA GLY A 10 2.037 -6.837 1.523 0.00 0.00 C +ATOM 172 C GLY A 10 2.524 -5.698 2.431 0.00 0.00 C +ATOM 173 O GLY A 10 3.335 -5.946 3.326 0.00 0.00 O +ATOM 174 H GLY A 10 0.334 -5.944 0.606 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.452 -7.525 2.133 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.916 -7.372 1.161 0.00 0.00 H +ATOM 177 N GLY A 11 2.079 -4.450 2.212 0.00 0.00 N +ATOM 178 CA GLY A 11 2.527 -3.280 2.968 0.00 0.00 C +ATOM 179 C GLY A 11 4.060 -3.125 2.939 0.00 0.00 C +ATOM 180 O GLY A 11 4.630 -3.169 1.842 0.00 0.00 O +ATOM 181 H GLY A 11 1.473 -4.294 1.414 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.088 -2.385 2.527 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.161 -3.373 3.989 0.00 0.00 H +ATOM 184 N PRO A 12 4.753 -2.971 4.089 0.00 0.00 N +ATOM 185 CA PRO A 12 6.211 -2.791 4.140 0.00 0.00 C +ATOM 186 C PRO A 12 7.014 -3.874 3.403 0.00 0.00 C +ATOM 187 O PRO A 12 8.041 -3.574 2.797 0.00 0.00 O +ATOM 188 CB PRO A 12 6.582 -2.768 5.628 0.00 0.00 C +ATOM 189 CG PRO A 12 5.287 -2.370 6.329 0.00 0.00 C +ATOM 190 CD PRO A 12 4.205 -2.974 5.438 0.00 0.00 C +ATOM 191 HA PRO A 12 6.452 -1.822 3.699 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.909 -3.736 5.954 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.381 -2.053 5.830 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.244 -2.782 7.319 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.193 -1.282 6.336 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.982 -3.977 5.748 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.295 -2.381 5.511 0.00 0.00 H +ATOM 198 N SER A 13 6.533 -5.123 3.409 0.00 0.00 N +ATOM 199 CA SER A 13 7.187 -6.275 2.772 0.00 0.00 C +ATOM 200 C SER A 13 7.064 -6.297 1.237 0.00 0.00 C +ATOM 201 O SER A 13 7.472 -7.272 0.612 0.00 0.00 O +ATOM 202 CB SER A 13 6.637 -7.571 3.386 0.00 0.00 C +ATOM 203 OG SER A 13 6.985 -7.634 4.757 0.00 0.00 O +ATOM 204 H SER A 13 5.655 -5.302 3.884 0.00 0.00 H +ATOM 205 HA SER A 13 8.253 -6.230 2.991 0.00 0.00 H +ATOM 206 1HB SER A 13 5.569 -7.587 3.288 0.00 0.00 H +ATOM 207 2HB SER A 13 7.058 -8.437 2.875 0.00 0.00 H +ATOM 208 HG SER A 13 7.938 -7.738 4.830 0.00 0.00 H +ATOM 209 N SER A 14 6.524 -5.234 0.624 0.00 0.00 N +ATOM 210 CA SER A 14 6.244 -5.155 -0.818 0.00 0.00 C +ATOM 211 C SER A 14 7.352 -4.486 -1.642 0.00 0.00 C +ATOM 212 O SER A 14 7.292 -4.512 -2.869 0.00 0.00 O +ATOM 213 CB SER A 14 4.956 -4.361 -1.069 0.00 0.00 C +ATOM 214 OG SER A 14 3.953 -4.634 -0.126 0.00 0.00 O +ATOM 215 H SER A 14 6.200 -4.481 1.217 0.00 0.00 H +ATOM 216 HA SER A 14 6.093 -6.164 -1.206 0.00 0.00 H +ATOM 217 1HB SER A 14 5.186 -3.314 -1.030 0.00 0.00 H +ATOM 218 2HB SER A 14 4.589 -4.586 -2.070 0.00 0.00 H +ATOM 219 HG SER A 14 4.150 -4.078 0.666 0.00 0.00 H +ATOM 220 N GLY A 15 8.336 -3.840 -0.998 0.00 0.00 N +ATOM 221 CA GLY A 15 9.395 -3.094 -1.693 0.00 0.00 C +ATOM 222 C GLY A 15 8.943 -1.756 -2.301 0.00 0.00 C +ATOM 223 O GLY A 15 9.512 -1.327 -3.303 0.00 0.00 O +ATOM 224 H GLY A 15 8.352 -3.897 0.012 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.206 -2.893 -0.996 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.795 -3.712 -2.500 0.00 0.00 H +ATOM 227 N ARG A 16 7.916 -1.105 -1.732 0.00 0.00 N +ATOM 228 CA ARG A 16 7.364 0.181 -2.198 0.00 0.00 C +ATOM 229 C ARG A 16 6.867 1.046 -1.024 0.00 0.00 C +ATOM 230 O ARG A 16 6.262 0.497 -0.098 0.00 0.00 O +ATOM 231 CB ARG A 16 6.251 -0.057 -3.241 0.00 0.00 C +ATOM 232 CG ARG A 16 5.161 -1.058 -2.811 0.00 0.00 C +ATOM 233 CD ARG A 16 4.134 -1.346 -3.924 0.00 0.00 C +ATOM 234 NE ARG A 16 4.103 -2.766 -4.336 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.054 -3.492 -4.909 0.00 0.00 C +ATOM 236 NH1 ARG A 16 6.220 -2.996 -5.246 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.821 -4.753 -5.163 0.00 0.00 N +ATOM 238 H ARG A 16 7.511 -1.511 -0.898 0.00 0.00 H +ATOM 239 HA ARG A 16 8.172 0.718 -2.695 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.778 0.884 -3.444 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.725 -0.430 -4.149 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.634 -1.981 -2.535 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.637 -0.670 -1.938 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.159 -1.073 -3.568 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.340 -0.723 -4.795 0.00 0.00 H +ATOM 246 HE ARG A 16 3.238 -3.299 -4.232 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 6.407 -2.037 -5.038 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 6.943 -3.615 -5.560 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 3.839 -5.043 -5.009 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 5.505 -5.381 -5.529 0.00 0.00 H +ATOM 251 N PRO A 17 7.083 2.378 -1.045 0.00 0.00 N +ATOM 252 CA PRO A 17 6.638 3.277 0.023 0.00 0.00 C +ATOM 253 C PRO A 17 5.104 3.442 0.035 0.00 0.00 C +ATOM 254 O PRO A 17 4.455 3.170 -0.978 0.00 0.00 O +ATOM 255 CB PRO A 17 7.343 4.610 -0.260 0.00 0.00 C +ATOM 256 CG PRO A 17 7.496 4.611 -1.779 0.00 0.00 C +ATOM 257 CD PRO A 17 7.741 3.138 -2.101 0.00 0.00 C +ATOM 258 HA PRO A 17 6.968 2.888 0.986 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.744 5.438 0.067 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.332 4.604 0.204 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.603 4.967 -2.256 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.328 5.240 -2.103 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.319 2.890 -3.056 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.812 2.932 -2.083 0.00 0.00 H +ATOM 265 N PRO A 18 4.512 3.890 1.161 0.00 0.00 N +ATOM 266 CA PRO A 18 3.074 4.111 1.260 0.00 0.00 C +ATOM 267 C PRO A 18 2.616 5.335 0.440 0.00 0.00 C +ATOM 268 O PRO A 18 3.395 6.265 0.230 0.00 0.00 O +ATOM 269 CB PRO A 18 2.796 4.301 2.754 0.00 0.00 C +ATOM 270 CG PRO A 18 4.105 4.879 3.287 0.00 0.00 C +ATOM 271 CD PRO A 18 5.162 4.183 2.431 0.00 0.00 C +ATOM 272 HA PRO A 18 2.556 3.220 0.910 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.983 4.984 2.910 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.610 3.329 3.214 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.140 5.943 3.153 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.240 4.666 4.348 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.005 4.829 2.279 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.463 3.249 2.906 0.00 0.00 H +ATOM 279 N PRO A 19 1.341 5.370 0.004 0.00 0.00 N +ATOM 280 CA PRO A 19 0.777 6.481 -0.754 0.00 0.00 C +ATOM 281 C PRO A 19 0.447 7.673 0.157 0.00 0.00 C +ATOM 282 O PRO A 19 -0.482 7.605 0.965 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.466 5.904 -1.437 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.933 4.811 -0.475 0.00 0.00 C +ATOM 285 CD PRO A 19 0.371 4.292 0.127 0.00 0.00 C +ATOM 286 HA PRO A 19 1.481 6.804 -1.523 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.221 6.657 -1.557 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.172 5.448 -2.384 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.573 5.216 0.285 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.468 4.019 -0.996 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.227 4.038 1.160 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.725 3.441 -0.450 0.00 0.00 H +ATOM 293 N SER A 20 1.209 8.762 0.004 0.00 0.00 N +ATOM 294 CA SER A 20 1.059 10.038 0.716 0.00 0.00 C +ATOM 295 C SER A 20 1.217 11.216 -0.248 0.00 0.00 C +ATOM 296 O SER A 20 2.389 11.403 -0.664 0.00 0.00 O +ATOM 297 CB SER A 20 2.098 10.115 1.845 0.00 0.00 C +ATOM 298 OG SER A 20 3.359 10.263 1.230 0.00 0.00 O +ATOM 299 OXT SER A 20 0.202 11.886 -0.520 0.00 0.00 O +ATOM 300 H SER A 20 1.991 8.709 -0.634 0.00 0.00 H +ATOM 301 HA SER A 20 0.060 10.107 1.146 0.00 0.00 H +ATOM 302 1HB SER A 20 1.894 10.958 2.477 0.00 0.00 H +ATOM 303 2HB SER A 20 2.070 9.211 2.456 0.00 0.00 H +ATOM 304 HG SER A 20 3.120 10.769 0.374 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 11 +ATOM 1 N ASN A 1 -6.688 7.436 -0.473 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.529 6.238 -0.712 0.00 0.00 C +ATOM 3 C ASN A 1 -6.749 5.006 -1.210 0.00 0.00 C +ATOM 4 O ASN A 1 -7.279 3.906 -1.158 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.713 6.573 -1.639 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.880 5.632 -1.366 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.413 5.629 -0.269 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.300 4.816 -2.315 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.936 7.221 0.168 0.00 0.00 H +ATOM 10 2H ASN A 1 -6.305 7.780 -1.344 0.00 0.00 H +ATOM 11 3H ASN A 1 -7.252 8.169 -0.065 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.963 5.944 0.246 0.00 0.00 H +ATOM 13 1HB ASN A 1 -9.025 7.584 -1.463 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.412 6.523 -2.686 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -9.869 4.743 -3.220 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -11.067 4.224 -2.039 0.00 0.00 H +ATOM 17 N LEU A 2 -5.494 5.147 -1.665 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.691 4.051 -2.237 0.00 0.00 C +ATOM 19 C LEU A 2 -4.046 3.125 -1.181 0.00 0.00 C +ATOM 20 O LEU A 2 -3.429 2.120 -1.531 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.615 4.692 -3.131 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.196 5.327 -4.413 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.432 6.605 -4.768 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -4.134 4.351 -5.589 0.00 0.00 C +ATOM 25 H LEU A 2 -5.038 6.044 -1.695 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.328 3.419 -2.859 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.113 5.455 -2.568 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.872 3.942 -3.409 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.238 5.607 -4.254 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -3.529 7.331 -3.961 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.377 6.382 -4.926 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.850 7.041 -5.676 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -3.107 4.029 -5.760 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -4.756 3.481 -5.378 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.508 4.834 -6.491 0.00 0.00 H +ATOM 36 N TYR A 3 -4.195 3.445 0.111 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.594 2.700 1.221 0.00 0.00 C +ATOM 38 C TYR A 3 -4.029 1.227 1.239 0.00 0.00 C +ATOM 39 O TYR A 3 -3.224 0.352 1.545 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.934 3.395 2.550 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.766 3.426 3.514 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.987 4.594 3.643 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.442 2.278 4.260 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.891 4.614 4.527 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.344 2.291 5.138 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.566 3.461 5.272 0.00 0.00 C +ATOM 47 OH TYR A 3 0.481 3.472 6.138 0.00 0.00 O +ATOM 48 H TYR A 3 -4.719 4.274 0.329 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.512 2.721 1.090 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.233 4.404 2.342 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.777 2.889 3.026 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.219 5.478 3.065 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.039 1.385 4.148 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.292 5.509 4.627 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.086 1.416 5.715 0.00 0.00 H +ATOM 56 HH TYR A 3 0.250 3.913 6.958 0.00 0.00 H +ATOM 57 N ILE A 4 -5.286 0.955 0.858 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.847 -0.393 0.739 0.00 0.00 C +ATOM 59 C ILE A 4 -5.076 -1.179 -0.327 0.00 0.00 C +ATOM 60 O ILE A 4 -4.596 -2.269 -0.040 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.361 -0.341 0.420 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.160 0.545 1.415 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.962 -1.760 0.413 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.201 1.423 0.710 0.00 0.00 C +ATOM 65 H ILE A 4 -5.875 1.740 0.624 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.714 -0.910 1.692 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.471 0.071 -0.583 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.664 -0.092 2.116 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.498 1.210 1.968 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.462 -2.390 -0.323 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.853 -2.219 1.398 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.022 -1.713 0.159 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -8.755 1.914 -0.157 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -10.046 0.816 0.386 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.552 2.192 1.399 0.00 0.00 H +ATOM 76 N GLN A 5 -4.908 -0.611 -1.532 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.116 -1.188 -2.627 0.00 0.00 C +ATOM 78 C GLN A 5 -2.676 -1.485 -2.194 0.00 0.00 C +ATOM 79 O GLN A 5 -2.183 -2.586 -2.432 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.133 -0.239 -3.843 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.217 -0.612 -4.859 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.369 0.472 -5.923 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -6.272 1.289 -5.876 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -4.484 0.535 -6.899 0.00 0.00 N +ATOM 85 H GLN A 5 -5.264 0.324 -1.655 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.559 -2.141 -2.917 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.314 0.761 -3.498 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.168 -0.273 -4.350 0.00 0.00 H +ATOM 89 1HG GLN A 5 -4.948 -1.535 -5.335 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.173 -0.735 -4.347 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -3.716 -0.109 -6.984 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -4.657 1.272 -7.562 0.00 0.00 H +ATOM 93 N TRP A 6 -2.015 -0.526 -1.535 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.661 -0.714 -1.009 0.00 0.00 C +ATOM 95 C TRP A 6 -0.581 -1.833 0.042 0.00 0.00 C +ATOM 96 O TRP A 6 0.287 -2.706 -0.046 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.147 0.614 -0.453 0.00 0.00 C +ATOM 98 CG TRP A 6 1.240 0.540 0.100 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.369 0.426 -0.635 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.668 0.524 1.498 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.457 0.329 0.207 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.087 0.401 1.528 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.008 0.607 2.744 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.824 0.375 2.719 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.737 0.578 3.950 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.140 0.468 3.941 0.00 0.00 C +ATOM 107 H TRP A 6 -2.482 0.369 -1.404 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.009 -1.011 -1.832 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.158 1.339 -1.244 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.819 0.959 0.333 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.409 0.399 -1.716 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.432 0.245 -0.091 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.065 0.714 2.764 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.901 0.285 2.682 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.222 0.668 4.895 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.687 0.462 4.872 0.00 0.00 H +ATOM 117 N LEU A 7 -1.500 -1.852 1.018 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.566 -2.933 2.003 0.00 0.00 C +ATOM 119 C LEU A 7 -1.887 -4.289 1.365 0.00 0.00 C +ATOM 120 O LEU A 7 -1.341 -5.295 1.810 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.578 -2.606 3.117 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.079 -1.558 4.127 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.224 -1.188 5.075 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.891 -2.038 4.980 0.00 0.00 C +ATOM 125 H LEU A 7 -2.182 -1.096 1.068 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.574 -3.041 2.436 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.475 -2.234 2.660 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.812 -3.520 3.665 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.776 -0.664 3.583 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.066 -0.795 4.505 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.553 -2.070 5.626 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.889 -0.433 5.787 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.235 -2.453 5.927 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.314 -2.808 4.473 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.234 -1.196 5.184 0.00 0.00 H +ATOM 136 N LYS A 8 -2.711 -4.325 0.308 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.090 -5.545 -0.417 0.00 0.00 C +ATOM 138 C LYS A 8 -1.889 -6.299 -0.992 0.00 0.00 C +ATOM 139 O LYS A 8 -1.885 -7.526 -0.985 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.077 -5.189 -1.537 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.961 -6.377 -1.915 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.092 -5.927 -2.853 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.345 -6.989 -3.925 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.706 -6.871 -4.496 0.00 0.00 N +ATOM 145 H LYS A 8 -3.163 -3.451 0.044 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.576 -6.217 0.293 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.702 -4.383 -1.205 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.527 -4.857 -2.421 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.364 -7.118 -2.411 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.410 -6.796 -1.012 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.988 -5.780 -2.282 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.831 -4.988 -3.347 0.00 0.00 H +ATOM 153 1HE LYS A 8 -5.625 -6.869 -4.712 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.210 -7.979 -3.483 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.393 -7.094 -3.788 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.869 -5.930 -4.825 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -7.818 -7.515 -5.269 0.00 0.00 H +ATOM 158 N ASP A 9 -0.879 -5.565 -1.461 0.00 0.00 N +ATOM 159 CA ASP A 9 0.388 -6.124 -1.938 0.00 0.00 C +ATOM 160 C ASP A 9 1.241 -6.707 -0.792 0.00 0.00 C +ATOM 161 O ASP A 9 2.087 -7.564 -1.026 0.00 0.00 O +ATOM 162 CB ASP A 9 1.146 -5.019 -2.691 0.00 0.00 C +ATOM 163 CG ASP A 9 2.006 -5.586 -3.819 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.181 -5.908 -3.534 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.487 -5.664 -4.954 0.00 0.00 O +ATOM 166 H ASP A 9 -0.992 -4.558 -1.468 0.00 0.00 H +ATOM 167 HA ASP A 9 0.170 -6.935 -2.635 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.435 -4.333 -3.108 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.772 -4.458 -1.992 0.00 0.00 H +ATOM 170 N GLY A 10 0.985 -6.274 0.450 0.00 0.00 N +ATOM 171 CA GLY A 10 1.737 -6.639 1.646 0.00 0.00 C +ATOM 172 C GLY A 10 2.495 -5.468 2.278 0.00 0.00 C +ATOM 173 O GLY A 10 3.461 -5.715 3.003 0.00 0.00 O +ATOM 174 H GLY A 10 0.165 -5.692 0.580 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.039 -7.025 2.389 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.442 -7.433 1.411 0.00 0.00 H +ATOM 177 N GLY A 11 2.110 -4.213 1.995 0.00 0.00 N +ATOM 178 CA GLY A 11 2.673 -3.013 2.615 0.00 0.00 C +ATOM 179 C GLY A 11 4.207 -2.948 2.501 0.00 0.00 C +ATOM 180 O GLY A 11 4.725 -3.042 1.386 0.00 0.00 O +ATOM 181 H GLY A 11 1.398 -4.072 1.288 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.258 -2.139 2.116 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.357 -2.986 3.655 0.00 0.00 H +ATOM 184 N PRO A 12 4.960 -2.809 3.616 0.00 0.00 N +ATOM 185 CA PRO A 12 6.424 -2.779 3.578 0.00 0.00 C +ATOM 186 C PRO A 12 7.069 -4.028 2.960 0.00 0.00 C +ATOM 187 O PRO A 12 8.189 -3.932 2.461 0.00 0.00 O +ATOM 188 CB PRO A 12 6.890 -2.607 5.031 0.00 0.00 C +ATOM 189 CG PRO A 12 5.663 -2.077 5.767 0.00 0.00 C +ATOM 190 CD PRO A 12 4.496 -2.685 4.991 0.00 0.00 C +ATOM 191 HA PRO A 12 6.736 -1.908 3.002 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.202 -3.547 5.443 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.726 -1.910 5.099 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.657 -2.404 6.789 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.630 -0.990 5.687 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.243 -3.649 5.389 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.623 -2.038 5.075 0.00 0.00 H +ATOM 198 N SER A 13 6.387 -5.186 2.959 0.00 0.00 N +ATOM 199 CA SER A 13 6.949 -6.443 2.439 0.00 0.00 C +ATOM 200 C SER A 13 7.314 -6.364 0.949 0.00 0.00 C +ATOM 201 O SER A 13 8.295 -6.974 0.530 0.00 0.00 O +ATOM 202 CB SER A 13 6.004 -7.621 2.705 0.00 0.00 C +ATOM 203 OG SER A 13 4.930 -7.624 1.798 0.00 0.00 O +ATOM 204 H SER A 13 5.432 -5.191 3.307 0.00 0.00 H +ATOM 205 HA SER A 13 7.871 -6.641 2.985 0.00 0.00 H +ATOM 206 1HB SER A 13 6.551 -8.539 2.604 0.00 0.00 H +ATOM 207 2HB SER A 13 5.606 -7.556 3.718 0.00 0.00 H +ATOM 208 HG SER A 13 4.348 -6.883 2.036 0.00 0.00 H +ATOM 209 N SER A 14 6.579 -5.561 0.169 0.00 0.00 N +ATOM 210 CA SER A 14 6.820 -5.327 -1.256 0.00 0.00 C +ATOM 211 C SER A 14 7.922 -4.294 -1.522 0.00 0.00 C +ATOM 212 O SER A 14 8.242 -4.017 -2.677 0.00 0.00 O +ATOM 213 CB SER A 14 5.537 -4.831 -1.928 0.00 0.00 C +ATOM 214 OG SER A 14 4.441 -5.626 -1.548 0.00 0.00 O +ATOM 215 H SER A 14 5.746 -5.132 0.560 0.00 0.00 H +ATOM 216 HA SER A 14 7.104 -6.271 -1.725 0.00 0.00 H +ATOM 217 1HB SER A 14 5.355 -3.815 -1.634 0.00 0.00 H +ATOM 218 2HB SER A 14 5.656 -4.884 -3.011 0.00 0.00 H +ATOM 219 HG SER A 14 3.881 -5.799 -2.406 0.00 0.00 H +ATOM 220 N GLY A 15 8.461 -3.653 -0.477 0.00 0.00 N +ATOM 221 CA GLY A 15 9.520 -2.646 -0.549 0.00 0.00 C +ATOM 222 C GLY A 15 9.063 -1.246 -0.987 0.00 0.00 C +ATOM 223 O GLY A 15 9.688 -0.260 -0.601 0.00 0.00 O +ATOM 224 H GLY A 15 8.144 -3.918 0.453 0.00 0.00 H +ATOM 225 1HA GLY A 15 9.982 -2.562 0.434 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.282 -2.988 -1.252 0.00 0.00 H +ATOM 227 N ARG A 16 7.983 -1.136 -1.775 0.00 0.00 N +ATOM 228 CA ARG A 16 7.407 0.144 -2.217 0.00 0.00 C +ATOM 229 C ARG A 16 6.873 0.959 -1.017 0.00 0.00 C +ATOM 230 O ARG A 16 6.188 0.381 -0.171 0.00 0.00 O +ATOM 231 CB ARG A 16 6.295 -0.134 -3.247 0.00 0.00 C +ATOM 232 CG ARG A 16 5.773 1.159 -3.895 0.00 0.00 C +ATOM 233 CD ARG A 16 4.638 0.926 -4.896 0.00 0.00 C +ATOM 234 NE ARG A 16 5.119 0.301 -6.142 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.470 0.248 -7.298 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.270 0.763 -7.440 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.020 -0.326 -8.342 0.00 0.00 N +ATOM 238 H ARG A 16 7.569 -2.007 -2.081 0.00 0.00 H +ATOM 239 HA ARG A 16 8.207 0.703 -2.701 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.686 -0.773 -4.015 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.468 -0.652 -2.755 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.414 1.807 -3.119 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.591 1.664 -4.410 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.906 0.283 -4.446 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.201 1.899 -5.127 0.00 0.00 H +ATOM 246 HE ARG A 16 6.032 -0.122 -6.114 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 2.845 1.192 -6.637 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 2.779 0.716 -8.314 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.933 -0.740 -8.273 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.520 -0.368 -9.211 0.00 0.00 H +ATOM 251 N PRO A 17 7.105 2.288 -0.945 0.00 0.00 N +ATOM 252 CA PRO A 17 6.592 3.134 0.139 0.00 0.00 C +ATOM 253 C PRO A 17 5.058 3.310 0.093 0.00 0.00 C +ATOM 254 O PRO A 17 4.451 3.102 -0.962 0.00 0.00 O +ATOM 255 CB PRO A 17 7.309 4.480 -0.034 0.00 0.00 C +ATOM 256 CG PRO A 17 7.588 4.545 -1.531 0.00 0.00 C +ATOM 257 CD PRO A 17 7.889 3.089 -1.878 0.00 0.00 C +ATOM 258 HA PRO A 17 6.871 2.694 1.095 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.679 5.292 0.274 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.253 4.460 0.511 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.731 4.902 -2.069 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.431 5.198 -1.763 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.597 2.878 -2.889 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.949 2.883 -1.728 0.00 0.00 H +ATOM 265 N PRO A 18 4.425 3.724 1.211 0.00 0.00 N +ATOM 266 CA PRO A 18 2.983 3.945 1.275 0.00 0.00 C +ATOM 267 C PRO A 18 2.554 5.198 0.492 0.00 0.00 C +ATOM 268 O PRO A 18 3.293 6.183 0.449 0.00 0.00 O +ATOM 269 CB PRO A 18 2.654 4.089 2.764 0.00 0.00 C +ATOM 270 CG PRO A 18 3.948 4.624 3.370 0.00 0.00 C +ATOM 271 CD PRO A 18 5.036 3.983 2.507 0.00 0.00 C +ATOM 272 HA PRO A 18 2.476 3.068 0.878 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.847 4.781 2.913 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.438 3.109 3.186 0.00 0.00 H +ATOM 275 1HG PRO A 18 3.988 5.694 3.306 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.049 4.343 4.419 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.868 4.652 2.399 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.351 3.039 2.955 0.00 0.00 H +ATOM 279 N PRO A 19 1.342 5.203 -0.093 0.00 0.00 N +ATOM 280 CA PRO A 19 0.805 6.357 -0.803 0.00 0.00 C +ATOM 281 C PRO A 19 0.320 7.423 0.190 0.00 0.00 C +ATOM 282 O PRO A 19 -0.257 7.100 1.229 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.339 5.795 -1.648 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.864 4.631 -0.807 0.00 0.00 C +ATOM 285 CD PRO A 19 0.380 4.112 -0.089 0.00 0.00 C +ATOM 286 HA PRO A 19 1.566 6.787 -1.457 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.102 6.533 -1.800 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.063 5.409 -2.586 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.599 4.969 -0.102 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.304 3.856 -1.430 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.138 3.834 0.919 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.800 3.273 -0.642 0.00 0.00 H +ATOM 293 N SER A 20 0.540 8.696 -0.154 0.00 0.00 N +ATOM 294 CA SER A 20 0.107 9.883 0.597 0.00 0.00 C +ATOM 295 C SER A 20 -0.517 10.892 -0.359 0.00 0.00 C +ATOM 296 O SER A 20 0.173 11.221 -1.351 0.00 0.00 O +ATOM 297 CB SER A 20 1.287 10.518 1.338 0.00 0.00 C +ATOM 298 OG SER A 20 1.823 9.586 2.254 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.676 11.275 -0.100 0.00 0.00 O +ATOM 300 H SER A 20 0.976 8.906 -1.042 0.00 0.00 H +ATOM 301 HA SER A 20 -0.660 9.612 1.323 0.00 0.00 H +ATOM 302 1HB SER A 20 2.043 10.801 0.631 0.00 0.00 H +ATOM 303 2HB SER A 20 0.947 11.404 1.878 0.00 0.00 H +ATOM 304 HG SER A 20 1.894 8.744 1.792 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 12 +ATOM 1 N ASN A 1 -4.775 8.349 0.978 0.00 0.00 N +ATOM 2 CA ASN A 1 -5.666 7.501 0.145 0.00 0.00 C +ATOM 3 C ASN A 1 -4.883 6.315 -0.422 0.00 0.00 C +ATOM 4 O ASN A 1 -3.710 6.189 -0.099 0.00 0.00 O +ATOM 5 CB ASN A 1 -6.368 8.312 -0.963 0.00 0.00 C +ATOM 6 CG ASN A 1 -7.731 7.695 -1.245 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -8.561 7.621 -0.357 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -7.984 7.161 -2.427 0.00 0.00 N +ATOM 9 1H ASN A 1 -4.291 7.782 1.665 0.00 0.00 H +ATOM 10 2H ASN A 1 -4.059 8.774 0.407 0.00 0.00 H +ATOM 11 3H ASN A 1 -5.305 9.067 1.452 0.00 0.00 H +ATOM 12 HA ASN A 1 -6.445 7.096 0.797 0.00 0.00 H +ATOM 13 1HB ASN A 1 -6.493 9.328 -0.640 0.00 0.00 H +ATOM 14 2HB ASN A 1 -5.758 8.337 -1.869 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -7.370 7.224 -3.224 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -8.930 6.818 -2.517 0.00 0.00 H +ATOM 17 N LEU A 2 -5.505 5.439 -1.230 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.870 4.301 -1.933 0.00 0.00 C +ATOM 19 C LEU A 2 -4.253 3.217 -1.013 0.00 0.00 C +ATOM 20 O LEU A 2 -3.725 2.212 -1.488 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.879 4.858 -2.987 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.862 4.103 -4.338 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.942 5.102 -5.500 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.594 3.266 -4.529 0.00 0.00 C +ATOM 25 H LEU A 2 -6.484 5.595 -1.443 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.671 3.797 -2.474 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.141 5.880 -3.181 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.875 4.881 -2.566 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.728 3.445 -4.407 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.863 5.680 -5.430 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.088 5.780 -5.472 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.942 4.567 -6.450 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -1.714 3.909 -4.532 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -2.501 2.537 -3.726 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -2.650 2.733 -5.479 0.00 0.00 H +ATOM 36 N TYR A 3 -4.358 3.387 0.311 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.724 2.561 1.334 0.00 0.00 C +ATOM 38 C TYR A 3 -4.131 1.084 1.243 0.00 0.00 C +ATOM 39 O TYR A 3 -3.272 0.213 1.349 0.00 0.00 O +ATOM 40 CB TYR A 3 -4.034 3.171 2.713 0.00 0.00 C +ATOM 41 CG TYR A 3 -3.135 2.703 3.842 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.737 2.851 3.727 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -3.685 2.171 5.024 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.891 2.412 4.759 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -2.842 1.741 6.067 0.00 0.00 C +ATOM 46 CZ TYR A 3 -1.438 1.829 5.920 0.00 0.00 C +ATOM 47 OH TYR A 3 -0.611 1.332 6.879 0.00 0.00 O +ATOM 48 H TYR A 3 -4.748 4.266 0.609 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.648 2.608 1.169 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.940 4.237 2.633 0.00 0.00 H +ATOM 51 2HB TYR A 3 -5.076 2.964 2.965 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.301 3.304 2.848 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -4.757 2.089 5.139 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.181 2.515 4.674 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -3.268 1.331 6.971 0.00 0.00 H +ATOM 56 HH TYR A 3 -1.077 0.804 7.527 0.00 0.00 H +ATOM 57 N ILE A 4 -5.411 0.798 0.958 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.929 -0.561 0.735 0.00 0.00 C +ATOM 59 C ILE A 4 -5.151 -1.265 -0.392 0.00 0.00 C +ATOM 60 O ILE A 4 -4.770 -2.424 -0.234 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.448 -0.558 0.412 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.318 0.310 1.355 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.010 -2.000 0.433 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.502 1.763 0.894 0.00 0.00 C +ATOM 65 H ILE A 4 -6.043 1.576 0.880 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.774 -1.132 1.651 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.573 -0.182 -0.605 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.288 -0.144 1.429 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.900 0.296 2.364 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.241 -2.738 0.216 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -8.427 -2.236 1.414 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.799 -2.084 -0.315 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.575 2.327 0.979 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -8.846 1.782 -0.141 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.256 2.242 1.519 0.00 0.00 H +ATOM 76 N GLN A 5 -4.901 -0.573 -1.513 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.125 -1.106 -2.634 0.00 0.00 C +ATOM 78 C GLN A 5 -2.693 -1.437 -2.204 0.00 0.00 C +ATOM 79 O GLN A 5 -2.251 -2.565 -2.402 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.128 -0.128 -3.830 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.010 -0.590 -5.001 0.00 0.00 C +ATOM 82 CD GLN A 5 -4.334 -0.299 -6.339 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.559 0.724 -6.965 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -3.468 -1.181 -6.803 0.00 0.00 N +ATOM 85 H GLN A 5 -5.142 0.409 -1.535 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.578 -2.049 -2.940 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.488 0.824 -3.489 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.103 -0.020 -4.191 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.182 -1.646 -4.916 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.966 -0.069 -4.961 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -3.220 -2.017 -6.300 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -3.046 -0.932 -7.681 0.00 0.00 H +ATOM 93 N TRP A 6 -1.990 -0.483 -1.580 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.617 -0.690 -1.102 0.00 0.00 C +ATOM 95 C TRP A 6 -0.505 -1.806 -0.047 0.00 0.00 C +ATOM 96 O TRP A 6 0.434 -2.605 -0.072 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.075 0.634 -0.556 0.00 0.00 C +ATOM 98 CG TRP A 6 1.309 0.540 0.003 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.446 0.522 -0.728 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.725 0.405 1.396 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.531 0.366 0.112 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.148 0.312 1.431 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.050 0.354 2.636 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.871 0.207 2.626 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.766 0.241 3.845 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.172 0.180 3.843 0.00 0.00 C +ATOM 107 H TRP A 6 -2.436 0.418 -1.445 0.00 0.00 H +ATOM 108 HA TRP A 6 0.001 -0.996 -1.948 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.069 1.351 -1.354 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.741 0.996 0.231 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.490 0.606 -1.806 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.506 0.317 -0.195 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.028 0.413 2.652 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.948 0.144 2.596 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.233 0.211 4.786 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.712 0.109 4.775 0.00 0.00 H +ATOM 117 N LEU A 7 -1.478 -1.903 0.868 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.565 -3.023 1.803 0.00 0.00 C +ATOM 119 C LEU A 7 -1.788 -4.359 1.077 0.00 0.00 C +ATOM 120 O LEU A 7 -1.184 -5.351 1.478 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.659 -2.772 2.854 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.323 -1.690 3.899 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.521 -1.550 4.842 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.085 -2.027 4.739 0.00 0.00 C +ATOM 125 H LEU A 7 -2.200 -1.184 0.892 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.606 -3.120 2.310 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.552 -2.472 2.340 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.840 -3.707 3.385 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.150 -0.733 3.410 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.397 -1.228 4.278 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.729 -2.502 5.330 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.305 -0.807 5.605 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.199 -3.007 5.202 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.194 -2.019 4.114 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.952 -1.273 5.515 0.00 0.00 H +ATOM 136 N LYS A 8 -2.578 -4.390 -0.010 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.803 -5.590 -0.835 0.00 0.00 C +ATOM 138 C LYS A 8 -1.523 -6.177 -1.436 0.00 0.00 C +ATOM 139 O LYS A 8 -1.444 -7.395 -1.565 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.841 -5.306 -1.943 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.102 -6.183 -1.820 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.388 -5.360 -1.964 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.575 -6.172 -1.439 0.00 0.00 C +ATOM 144 NZ LYS A 8 -8.803 -5.348 -1.365 0.00 0.00 N +ATOM 145 H LYS A 8 -3.058 -3.531 -0.269 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.176 -6.367 -0.170 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.133 -4.275 -1.883 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.394 -5.473 -2.925 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.081 -6.931 -2.589 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.122 -6.674 -0.847 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.297 -4.453 -1.399 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.539 -5.092 -3.010 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.750 -7.001 -2.098 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.320 -6.540 -0.441 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.641 -4.541 -0.776 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -9.066 -5.030 -2.289 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -9.564 -5.888 -0.973 0.00 0.00 H +ATOM 158 N ASP A 9 -0.517 -5.351 -1.751 0.00 0.00 N +ATOM 159 CA ASP A 9 0.810 -5.841 -2.151 0.00 0.00 C +ATOM 160 C ASP A 9 1.554 -6.575 -1.011 0.00 0.00 C +ATOM 161 O ASP A 9 2.438 -7.380 -1.298 0.00 0.00 O +ATOM 162 CB ASP A 9 1.696 -4.676 -2.632 0.00 0.00 C +ATOM 163 CG ASP A 9 1.245 -3.986 -3.921 0.00 0.00 C +ATOM 164 OD1 ASP A 9 0.666 -2.883 -3.811 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.597 -4.502 -5.006 0.00 0.00 O +ATOM 166 H ASP A 9 -0.685 -4.351 -1.702 0.00 0.00 H +ATOM 167 HA ASP A 9 0.696 -6.548 -2.974 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.720 -3.937 -1.854 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.698 -5.068 -2.815 0.00 0.00 H +ATOM 170 N GLY A 10 1.225 -6.295 0.263 0.00 0.00 N +ATOM 171 CA GLY A 10 1.982 -6.737 1.446 0.00 0.00 C +ATOM 172 C GLY A 10 2.507 -5.606 2.352 0.00 0.00 C +ATOM 173 O GLY A 10 3.317 -5.867 3.245 0.00 0.00 O +ATOM 174 H GLY A 10 0.375 -5.762 0.424 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.336 -7.376 2.049 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.840 -7.334 1.133 0.00 0.00 H +ATOM 177 N GLY A 11 2.078 -4.353 2.136 0.00 0.00 N +ATOM 178 CA GLY A 11 2.489 -3.194 2.933 0.00 0.00 C +ATOM 179 C GLY A 11 4.018 -3.015 3.017 0.00 0.00 C +ATOM 180 O GLY A 11 4.676 -2.975 1.975 0.00 0.00 O +ATOM 181 H GLY A 11 1.434 -4.188 1.373 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.070 -2.296 2.478 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.056 -3.301 3.926 0.00 0.00 H +ATOM 184 N PRO A 12 4.624 -2.897 4.222 0.00 0.00 N +ATOM 185 CA PRO A 12 6.074 -2.717 4.372 0.00 0.00 C +ATOM 186 C PRO A 12 6.928 -3.824 3.735 0.00 0.00 C +ATOM 187 O PRO A 12 8.086 -3.582 3.404 0.00 0.00 O +ATOM 188 CB PRO A 12 6.342 -2.659 5.880 0.00 0.00 C +ATOM 189 CG PRO A 12 4.997 -2.271 6.487 0.00 0.00 C +ATOM 190 CD PRO A 12 3.985 -2.895 5.530 0.00 0.00 C +ATOM 191 HA PRO A 12 6.352 -1.763 3.924 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.663 -3.615 6.246 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.115 -1.929 6.121 0.00 0.00 H +ATOM 194 1HG PRO A 12 4.891 -2.675 7.475 0.00 0.00 H +ATOM 195 2HG PRO A 12 4.893 -1.186 6.477 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.753 -3.898 5.834 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.065 -2.308 5.536 0.00 0.00 H +ATOM 198 N SER A 13 6.371 -5.030 3.550 0.00 0.00 N +ATOM 199 CA SER A 13 7.084 -6.170 2.958 0.00 0.00 C +ATOM 200 C SER A 13 7.083 -6.156 1.418 0.00 0.00 C +ATOM 201 O SER A 13 7.625 -7.072 0.804 0.00 0.00 O +ATOM 202 CB SER A 13 6.515 -7.484 3.508 0.00 0.00 C +ATOM 203 OG SER A 13 6.707 -7.539 4.910 0.00 0.00 O +ATOM 204 H SER A 13 5.380 -5.139 3.743 0.00 0.00 H +ATOM 205 HA SER A 13 8.130 -6.125 3.264 0.00 0.00 H +ATOM 206 1HB SER A 13 5.466 -7.537 3.290 0.00 0.00 H +ATOM 207 2HB SER A 13 7.033 -8.329 3.054 0.00 0.00 H +ATOM 208 HG SER A 13 6.297 -6.766 5.305 0.00 0.00 H +ATOM 209 N SER A 14 6.505 -5.124 0.784 0.00 0.00 N +ATOM 210 CA SER A 14 6.326 -5.021 -0.674 0.00 0.00 C +ATOM 211 C SER A 14 7.445 -4.276 -1.413 0.00 0.00 C +ATOM 212 O SER A 14 7.363 -4.116 -2.632 0.00 0.00 O +ATOM 213 CB SER A 14 5.029 -4.263 -0.971 0.00 0.00 C +ATOM 214 OG SER A 14 3.953 -4.822 -0.267 0.00 0.00 O +ATOM 215 H SER A 14 6.012 -4.435 1.345 0.00 0.00 H +ATOM 216 HA SER A 14 6.241 -6.022 -1.098 0.00 0.00 H +ATOM 217 1HB SER A 14 5.146 -3.237 -0.678 0.00 0.00 H +ATOM 218 2HB SER A 14 4.818 -4.312 -2.040 0.00 0.00 H +ATOM 219 HG SER A 14 3.220 -4.203 -0.295 0.00 0.00 H +ATOM 220 N GLY A 15 8.438 -3.724 -0.707 0.00 0.00 N +ATOM 221 CA GLY A 15 9.507 -2.889 -1.274 0.00 0.00 C +ATOM 222 C GLY A 15 9.063 -1.480 -1.708 0.00 0.00 C +ATOM 223 O GLY A 15 9.798 -0.518 -1.489 0.00 0.00 O +ATOM 224 H GLY A 15 8.430 -3.884 0.291 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.304 -2.784 -0.538 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.927 -3.393 -2.147 0.00 0.00 H +ATOM 227 N ARG A 16 7.872 -1.340 -2.309 0.00 0.00 N +ATOM 228 CA ARG A 16 7.271 -0.051 -2.694 0.00 0.00 C +ATOM 229 C ARG A 16 6.858 0.790 -1.462 0.00 0.00 C +ATOM 230 O ARG A 16 6.260 0.241 -0.533 0.00 0.00 O +ATOM 231 CB ARG A 16 6.089 -0.273 -3.662 0.00 0.00 C +ATOM 232 CG ARG A 16 4.953 -1.164 -3.120 0.00 0.00 C +ATOM 233 CD ARG A 16 3.733 -1.249 -4.050 0.00 0.00 C +ATOM 234 NE ARG A 16 4.008 -2.020 -5.278 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.304 -1.553 -6.487 0.00 0.00 C +ATOM 236 NH1 ARG A 16 4.332 -0.266 -6.751 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.584 -2.382 -7.463 0.00 0.00 N +ATOM 238 H ARG A 16 7.380 -2.207 -2.502 0.00 0.00 H +ATOM 239 HA ARG A 16 8.042 0.496 -3.233 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.672 0.686 -3.902 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.479 -0.726 -4.575 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.339 -2.155 -2.977 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.607 -0.763 -2.173 0.00 0.00 H +ATOM 244 1HD ARG A 16 2.929 -1.722 -3.520 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.380 -0.245 -4.284 0.00 0.00 H +ATOM 246 HE ARG A 16 3.860 -3.017 -5.208 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.070 0.367 -6.019 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 4.528 0.072 -7.675 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.555 -3.374 -7.290 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.810 -2.036 -8.376 0.00 0.00 H +ATOM 251 N PRO A 17 7.111 2.116 -1.447 0.00 0.00 N +ATOM 252 CA PRO A 17 6.730 2.992 -0.332 0.00 0.00 C +ATOM 253 C PRO A 17 5.203 3.215 -0.255 0.00 0.00 C +ATOM 254 O PRO A 17 4.512 3.033 -1.262 0.00 0.00 O +ATOM 255 CB PRO A 17 7.472 4.309 -0.592 0.00 0.00 C +ATOM 256 CG PRO A 17 7.586 4.354 -2.114 0.00 0.00 C +ATOM 257 CD PRO A 17 7.780 2.885 -2.487 0.00 0.00 C +ATOM 258 HA PRO A 17 7.081 2.557 0.604 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.910 5.146 -0.224 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.471 4.256 -0.155 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.692 4.750 -2.556 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.426 4.969 -2.440 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.339 2.682 -3.444 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.845 2.645 -2.487 0.00 0.00 H +ATOM 265 N PRO A 18 4.666 3.621 0.914 0.00 0.00 N +ATOM 266 CA PRO A 18 3.235 3.860 1.094 0.00 0.00 C +ATOM 267 C PRO A 18 2.748 5.165 0.425 0.00 0.00 C +ATOM 268 O PRO A 18 3.529 6.100 0.248 0.00 0.00 O +ATOM 269 CB PRO A 18 3.024 3.899 2.612 0.00 0.00 C +ATOM 270 CG PRO A 18 4.361 4.406 3.146 0.00 0.00 C +ATOM 271 CD PRO A 18 5.372 3.796 2.177 0.00 0.00 C +ATOM 272 HA PRO A 18 2.688 3.015 0.682 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.228 4.570 2.871 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.846 2.890 2.983 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.404 5.478 3.124 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.538 4.078 4.171 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.209 4.455 2.048 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.693 2.821 2.549 0.00 0.00 H +ATOM 279 N PRO A 19 1.443 5.263 0.091 0.00 0.00 N +ATOM 280 CA PRO A 19 0.813 6.446 -0.514 0.00 0.00 C +ATOM 281 C PRO A 19 0.366 7.514 0.505 0.00 0.00 C +ATOM 282 O PRO A 19 -0.168 8.563 0.135 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.418 5.883 -1.228 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.852 4.754 -0.291 0.00 0.00 C +ATOM 285 CD PRO A 19 0.481 4.171 0.160 0.00 0.00 C +ATOM 286 HA PRO A 19 1.483 6.910 -1.240 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.186 6.626 -1.322 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.127 5.468 -2.194 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.411 5.134 0.542 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.463 4.012 -0.801 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.406 3.804 1.165 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.786 3.388 -0.533 0.00 0.00 H +ATOM 293 N SER A 20 0.475 7.235 1.804 0.00 0.00 N +ATOM 294 CA SER A 20 0.117 8.121 2.917 0.00 0.00 C +ATOM 295 C SER A 20 0.951 7.740 4.134 0.00 0.00 C +ATOM 296 O SER A 20 1.145 6.518 4.316 0.00 0.00 O +ATOM 297 CB SER A 20 -1.376 8.004 3.229 0.00 0.00 C +ATOM 298 OG SER A 20 -2.078 8.526 2.113 0.00 0.00 O +ATOM 299 OXT SER A 20 1.384 8.682 4.830 0.00 0.00 O +ATOM 300 H SER A 20 0.881 6.355 2.097 0.00 0.00 H +ATOM 301 HA SER A 20 0.361 9.155 2.677 0.00 0.00 H +ATOM 302 1HB SER A 20 -1.640 6.975 3.382 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.610 8.576 4.131 0.00 0.00 H +ATOM 304 HG SER A 20 -1.383 8.683 1.436 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 13 +ATOM 1 N ASN A 1 -7.908 6.785 -1.311 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.019 6.327 -0.216 0.00 0.00 C +ATOM 3 C ASN A 1 -5.683 5.747 -0.661 0.00 0.00 C +ATOM 4 O ASN A 1 -4.708 6.050 0.013 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.728 5.352 0.732 0.00 0.00 C +ATOM 6 CG ASN A 1 -8.620 6.137 1.676 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -9.560 6.770 1.223 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -8.313 6.173 2.959 0.00 0.00 N +ATOM 9 1H ASN A 1 -7.434 7.466 -1.890 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.205 6.004 -1.879 0.00 0.00 H +ATOM 11 3H ASN A 1 -8.733 7.210 -0.902 0.00 0.00 H +ATOM 12 HA ASN A 1 -6.754 7.204 0.378 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.324 4.666 0.162 0.00 0.00 H +ATOM 14 2HB ASN A 1 -6.996 4.787 1.311 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -7.513 5.701 3.351 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -8.923 6.730 3.536 0.00 0.00 H +ATOM 17 N LEU A 2 -5.615 4.880 -1.688 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.406 4.163 -2.156 0.00 0.00 C +ATOM 19 C LEU A 2 -3.837 3.130 -1.158 0.00 0.00 C +ATOM 20 O LEU A 2 -3.364 2.071 -1.568 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.322 5.161 -2.622 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.769 6.069 -3.790 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.562 7.551 -3.463 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.001 5.730 -5.068 0.00 0.00 C +ATOM 25 H LEU A 2 -6.452 4.624 -2.189 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.692 3.585 -3.037 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.057 5.785 -1.790 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.440 4.595 -2.923 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.830 5.921 -3.991 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.099 7.813 -2.552 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.502 7.762 -3.318 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.938 8.167 -4.281 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -1.934 5.911 -4.924 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -3.157 4.681 -5.323 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.359 6.350 -5.889 0.00 0.00 H +ATOM 36 N TYR A 3 -3.941 3.391 0.150 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.446 2.538 1.230 0.00 0.00 C +ATOM 38 C TYR A 3 -4.000 1.103 1.182 0.00 0.00 C +ATOM 39 O TYR A 3 -3.277 0.167 1.508 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.738 3.210 2.583 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.672 2.927 3.623 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.567 3.795 3.740 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.765 1.788 4.444 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.550 3.520 4.672 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.751 1.512 5.382 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.641 2.375 5.495 0.00 0.00 C +ATOM 47 OH TYR A 3 0.344 2.091 6.389 0.00 0.00 O +ATOM 48 H TYR A 3 -4.221 4.340 0.385 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.363 2.475 1.122 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.797 4.271 2.433 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.711 2.883 2.955 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.493 4.677 3.117 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.607 1.120 4.349 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.291 4.191 4.755 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.801 0.643 6.018 0.00 0.00 H +ATOM 56 HH TYR A 3 1.086 2.690 6.302 0.00 0.00 H +ATOM 57 N ILE A 4 -5.249 0.909 0.731 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.862 -0.418 0.547 0.00 0.00 C +ATOM 59 C ILE A 4 -5.108 -1.223 -0.524 0.00 0.00 C +ATOM 60 O ILE A 4 -4.705 -2.359 -0.275 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.371 -0.307 0.207 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.145 0.575 1.218 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.018 -1.702 0.164 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.506 1.935 0.617 0.00 0.00 C +ATOM 65 H ILE A 4 -5.779 1.731 0.489 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.769 -0.964 1.487 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.472 0.126 -0.790 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.048 0.069 1.502 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.554 0.726 2.123 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.562 -2.315 -0.613 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.904 -2.200 1.127 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.081 -1.610 -0.065 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.611 2.423 0.233 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.219 1.799 -0.198 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.963 2.563 1.384 0.00 0.00 H +ATOM 76 N GLN A 5 -4.883 -0.627 -1.705 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.097 -1.237 -2.779 0.00 0.00 C +ATOM 78 C GLN A 5 -2.654 -1.511 -2.339 0.00 0.00 C +ATOM 79 O GLN A 5 -2.134 -2.592 -2.614 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.124 -0.349 -4.035 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.446 -0.464 -4.826 0.00 0.00 C +ATOM 82 CD GLN A 5 -6.302 0.803 -4.886 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.896 1.911 -4.564 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -7.545 0.678 -5.313 0.00 0.00 N +ATOM 85 H GLN A 5 -5.163 0.337 -1.814 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.533 -2.207 -3.026 0.00 0.00 H +ATOM 87 1HB GLN A 5 -3.993 0.673 -3.735 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.318 -0.674 -4.696 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.203 -0.745 -5.833 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.054 -1.268 -4.411 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.934 -0.208 -5.587 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -8.048 1.544 -5.402 0.00 0.00 H +ATOM 93 N TRP A 6 -2.027 -0.572 -1.618 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.693 -0.764 -1.047 0.00 0.00 C +ATOM 95 C TRP A 6 -0.644 -1.917 -0.026 0.00 0.00 C +ATOM 96 O TRP A 6 0.231 -2.778 -0.111 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.213 0.557 -0.443 0.00 0.00 C +ATOM 98 CG TRP A 6 1.169 0.505 0.124 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.314 0.542 -0.597 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.577 0.373 1.518 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.396 0.430 0.252 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.001 0.346 1.569 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.887 0.268 2.747 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.712 0.258 2.772 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.592 0.150 3.960 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.998 0.165 3.978 0.00 0.00 C +ATOM 107 H TRP A 6 -2.505 0.316 -1.478 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.010 -1.033 -1.856 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.234 1.306 -1.211 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.898 0.860 0.348 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.368 0.630 -1.674 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.370 0.409 -0.063 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.194 0.280 2.749 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.792 0.247 2.758 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.046 0.055 4.888 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.527 0.092 4.916 0.00 0.00 H +ATOM 117 N LEU A 7 -1.605 -2.000 0.907 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.710 -3.134 1.832 0.00 0.00 C +ATOM 119 C LEU A 7 -1.929 -4.466 1.106 0.00 0.00 C +ATOM 120 O LEU A 7 -1.324 -5.461 1.502 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.824 -2.903 2.868 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.460 -1.924 4.000 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.711 -1.690 4.853 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.353 -2.460 4.918 0.00 0.00 C +ATOM 125 H LEU A 7 -2.291 -1.251 0.973 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.757 -3.234 2.349 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.682 -2.515 2.354 0.00 0.00 H +ATOM 128 2HB LEU A 7 -3.076 -3.862 3.324 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.134 -0.976 3.579 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.496 -1.248 4.240 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -4.067 -2.637 5.262 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.483 -1.016 5.677 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.664 -3.401 5.371 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.433 -2.614 4.360 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -1.147 -1.735 5.706 0.00 0.00 H +ATOM 136 N LYS A 8 -2.718 -4.492 0.018 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.894 -5.686 -0.829 0.00 0.00 C +ATOM 138 C LYS A 8 -1.564 -6.220 -1.379 0.00 0.00 C +ATOM 139 O LYS A 8 -1.459 -7.409 -1.665 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.864 -5.370 -1.980 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.388 -6.622 -2.718 0.00 0.00 C +ATOM 142 CD LYS A 8 -4.505 -6.437 -4.242 0.00 0.00 C +ATOM 143 CE LYS A 8 -3.209 -6.745 -5.018 0.00 0.00 C +ATOM 144 NZ LYS A 8 -2.118 -5.779 -4.739 0.00 0.00 N +ATOM 145 H LYS A 8 -3.231 -3.643 -0.211 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.325 -6.477 -0.214 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.705 -4.839 -1.577 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.360 -4.716 -2.685 0.00 0.00 H +ATOM 149 1HG LYS A 8 -3.715 -7.435 -2.526 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.377 -6.849 -2.317 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.276 -7.091 -4.602 0.00 0.00 H +ATOM 152 2HD LYS A 8 -4.855 -5.430 -4.471 0.00 0.00 H +ATOM 153 1HE LYS A 8 -2.873 -7.727 -4.745 0.00 0.00 H +ATOM 154 2HE LYS A 8 -3.446 -6.733 -6.086 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -2.396 -4.819 -4.880 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -1.774 -5.854 -3.793 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -1.282 -5.906 -5.304 0.00 0.00 H +ATOM 158 N ASP A 9 -0.551 -5.368 -1.570 0.00 0.00 N +ATOM 159 CA ASP A 9 0.787 -5.808 -1.980 0.00 0.00 C +ATOM 160 C ASP A 9 1.595 -6.452 -0.830 0.00 0.00 C +ATOM 161 O ASP A 9 2.685 -6.970 -1.090 0.00 0.00 O +ATOM 162 CB ASP A 9 1.594 -4.630 -2.566 0.00 0.00 C +ATOM 163 CG ASP A 9 0.973 -3.926 -3.776 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.306 -2.727 -3.970 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.255 -4.603 -4.551 0.00 0.00 O +ATOM 166 H ASP A 9 -0.687 -4.388 -1.343 0.00 0.00 H +ATOM 167 HA ASP A 9 0.689 -6.562 -2.762 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.719 -3.900 -1.790 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.559 -5.017 -2.894 0.00 0.00 H +ATOM 170 N GLY A 10 1.155 -6.367 0.440 0.00 0.00 N +ATOM 171 CA GLY A 10 1.920 -6.800 1.627 0.00 0.00 C +ATOM 172 C GLY A 10 2.495 -5.666 2.504 0.00 0.00 C +ATOM 173 O GLY A 10 3.323 -5.931 3.387 0.00 0.00 O +ATOM 174 H GLY A 10 0.231 -5.972 0.604 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.260 -7.399 2.254 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.750 -7.439 1.326 0.00 0.00 H +ATOM 177 N GLY A 11 2.078 -4.413 2.271 0.00 0.00 N +ATOM 178 CA GLY A 11 2.452 -3.248 3.072 0.00 0.00 C +ATOM 179 C GLY A 11 3.971 -2.986 3.103 0.00 0.00 C +ATOM 180 O GLY A 11 4.593 -2.901 2.043 0.00 0.00 O +ATOM 181 H GLY A 11 1.509 -4.255 1.448 0.00 0.00 H +ATOM 182 1HA GLY A 11 1.968 -2.368 2.650 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.064 -3.396 4.078 0.00 0.00 H +ATOM 184 N PRO A 12 4.608 -2.840 4.289 0.00 0.00 N +ATOM 185 CA PRO A 12 6.049 -2.569 4.388 0.00 0.00 C +ATOM 186 C PRO A 12 6.947 -3.622 3.719 0.00 0.00 C +ATOM 187 O PRO A 12 8.100 -3.334 3.404 0.00 0.00 O +ATOM 188 CB PRO A 12 6.365 -2.497 5.887 0.00 0.00 C +ATOM 189 CG PRO A 12 5.019 -2.212 6.546 0.00 0.00 C +ATOM 190 CD PRO A 12 4.017 -2.897 5.618 0.00 0.00 C +ATOM 191 HA PRO A 12 6.252 -1.600 3.932 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.768 -3.428 6.235 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.091 -1.712 6.104 0.00 0.00 H +ATOM 194 1HG PRO A 12 4.978 -2.632 7.532 0.00 0.00 H +ATOM 195 2HG PRO A 12 4.836 -1.136 6.553 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.866 -3.916 5.917 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.061 -2.377 5.665 0.00 0.00 H +ATOM 198 N SER A 13 6.430 -4.838 3.502 0.00 0.00 N +ATOM 199 CA SER A 13 7.167 -5.968 2.930 0.00 0.00 C +ATOM 200 C SER A 13 7.113 -6.043 1.392 0.00 0.00 C +ATOM 201 O SER A 13 7.652 -6.980 0.805 0.00 0.00 O +ATOM 202 CB SER A 13 6.723 -7.269 3.614 0.00 0.00 C +ATOM 203 OG SER A 13 5.376 -7.634 3.349 0.00 0.00 O +ATOM 204 H SER A 13 5.454 -4.968 3.734 0.00 0.00 H +ATOM 205 HA SER A 13 8.222 -5.839 3.177 0.00 0.00 H +ATOM 206 1HB SER A 13 7.360 -8.063 3.274 0.00 0.00 H +ATOM 207 2HB SER A 13 6.865 -7.162 4.691 0.00 0.00 H +ATOM 208 HG SER A 13 4.737 -6.918 3.537 0.00 0.00 H +ATOM 209 N SER A 14 6.508 -5.047 0.733 0.00 0.00 N +ATOM 210 CA SER A 14 6.226 -5.028 -0.713 0.00 0.00 C +ATOM 211 C SER A 14 7.223 -4.235 -1.564 0.00 0.00 C +ATOM 212 O SER A 14 7.035 -4.116 -2.774 0.00 0.00 O +ATOM 213 CB SER A 14 4.854 -4.397 -0.935 0.00 0.00 C +ATOM 214 OG SER A 14 3.928 -5.006 -0.081 0.00 0.00 O +ATOM 215 H SER A 14 6.017 -4.350 1.287 0.00 0.00 H +ATOM 216 HA SER A 14 6.196 -6.052 -1.088 0.00 0.00 H +ATOM 217 1HB SER A 14 4.903 -3.346 -0.722 0.00 0.00 H +ATOM 218 2HB SER A 14 4.546 -4.527 -1.971 0.00 0.00 H +ATOM 219 HG SER A 14 3.589 -5.837 -0.501 0.00 0.00 H +ATOM 220 N GLY A 15 8.236 -3.613 -0.954 0.00 0.00 N +ATOM 221 CA GLY A 15 9.241 -2.785 -1.634 0.00 0.00 C +ATOM 222 C GLY A 15 8.755 -1.388 -2.056 0.00 0.00 C +ATOM 223 O GLY A 15 9.534 -0.439 -2.013 0.00 0.00 O +ATOM 224 H GLY A 15 8.306 -3.739 0.046 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.102 -2.664 -0.978 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.576 -3.308 -2.531 0.00 0.00 H +ATOM 227 N ARG A 16 7.484 -1.243 -2.458 0.00 0.00 N +ATOM 228 CA ARG A 16 6.866 0.043 -2.822 0.00 0.00 C +ATOM 229 C ARG A 16 6.607 0.907 -1.567 0.00 0.00 C +ATOM 230 O ARG A 16 6.048 0.385 -0.598 0.00 0.00 O +ATOM 231 CB ARG A 16 5.566 -0.231 -3.600 0.00 0.00 C +ATOM 232 CG ARG A 16 5.057 1.011 -4.351 0.00 0.00 C +ATOM 233 CD ARG A 16 3.793 0.732 -5.180 0.00 0.00 C +ATOM 234 NE ARG A 16 4.079 -0.101 -6.363 0.00 0.00 N +ATOM 235 CZ ARG A 16 3.877 -1.406 -6.533 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.266 -2.191 -5.676 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.308 -1.979 -7.632 0.00 0.00 N +ATOM 238 H ARG A 16 6.937 -2.095 -2.518 0.00 0.00 H +ATOM 239 HA ARG A 16 7.569 0.558 -3.476 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.749 -1.013 -4.312 0.00 0.00 H +ATOM 241 2HB ARG A 16 4.793 -0.580 -2.914 0.00 0.00 H +ATOM 242 1HG ARG A 16 4.834 1.777 -3.634 0.00 0.00 H +ATOM 243 2HG ARG A 16 5.843 1.374 -5.018 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.079 0.222 -4.562 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.407 1.693 -5.529 0.00 0.00 H +ATOM 246 HE ARG A 16 4.530 0.371 -7.128 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 2.673 -1.883 -4.893 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.162 -3.167 -5.861 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.765 -1.448 -8.350 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.157 -2.963 -7.759 0.00 0.00 H +ATOM 251 N PRO A 17 6.947 2.213 -1.560 0.00 0.00 N +ATOM 252 CA PRO A 17 6.730 3.085 -0.400 0.00 0.00 C +ATOM 253 C PRO A 17 5.232 3.312 -0.095 0.00 0.00 C +ATOM 254 O PRO A 17 4.400 3.172 -0.996 0.00 0.00 O +ATOM 255 CB PRO A 17 7.438 4.403 -0.744 0.00 0.00 C +ATOM 256 CG PRO A 17 7.414 4.433 -2.270 0.00 0.00 C +ATOM 257 CD PRO A 17 7.583 2.961 -2.635 0.00 0.00 C +ATOM 258 HA PRO A 17 7.208 2.638 0.471 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.907 5.241 -0.336 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.472 4.360 -0.399 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.481 4.818 -2.635 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.216 5.048 -2.679 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.104 2.750 -3.572 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.643 2.709 -2.673 0.00 0.00 H +ATOM 265 N PRO A 18 4.878 3.687 1.151 0.00 0.00 N +ATOM 266 CA PRO A 18 3.495 3.929 1.554 0.00 0.00 C +ATOM 267 C PRO A 18 2.938 5.209 0.903 0.00 0.00 C +ATOM 268 O PRO A 18 3.617 6.239 0.913 0.00 0.00 O +ATOM 269 CB PRO A 18 3.524 4.048 3.081 0.00 0.00 C +ATOM 270 CG PRO A 18 4.937 4.549 3.376 0.00 0.00 C +ATOM 271 CD PRO A 18 5.775 3.886 2.283 0.00 0.00 C +ATOM 272 HA PRO A 18 2.889 3.069 1.280 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.789 4.750 3.425 0.00 0.00 H +ATOM 274 2HB PRO A 18 3.390 3.061 3.527 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.989 5.618 3.306 0.00 0.00 H +ATOM 276 2HG PRO A 18 5.272 4.261 4.373 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.593 4.522 2.003 0.00 0.00 H +ATOM 278 2HD PRO A 18 6.135 2.918 2.635 0.00 0.00 H +ATOM 279 N PRO A 19 1.706 5.185 0.359 0.00 0.00 N +ATOM 280 CA PRO A 19 1.071 6.373 -0.198 0.00 0.00 C +ATOM 281 C PRO A 19 0.534 7.279 0.922 0.00 0.00 C +ATOM 282 O PRO A 19 0.005 6.793 1.925 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.043 5.831 -1.093 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.475 4.546 -0.383 0.00 0.00 C +ATOM 285 CD PRO A 19 0.817 4.036 0.254 0.00 0.00 C +ATOM 286 HA PRO A 19 1.785 6.932 -0.806 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.857 6.527 -1.157 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.371 5.580 -2.071 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.216 4.752 0.365 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.885 3.819 -1.084 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.616 3.632 1.228 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.276 3.286 -0.389 0.00 0.00 H +ATOM 293 N SER A 20 0.660 8.597 0.722 0.00 0.00 N +ATOM 294 CA SER A 20 0.150 9.654 1.607 0.00 0.00 C +ATOM 295 C SER A 20 -1.110 10.284 1.016 0.00 0.00 C +ATOM 296 O SER A 20 -2.094 10.380 1.786 0.00 0.00 O +ATOM 297 CB SER A 20 1.248 10.701 1.823 0.00 0.00 C +ATOM 298 OG SER A 20 0.910 11.534 2.908 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.067 10.639 -0.179 0.00 0.00 O +ATOM 300 H SER A 20 1.051 8.910 -0.152 0.00 0.00 H +ATOM 301 HA SER A 20 -0.125 9.214 2.563 0.00 0.00 H +ATOM 302 1HB SER A 20 2.177 10.205 2.031 0.00 0.00 H +ATOM 303 2HB SER A 20 1.371 11.300 0.918 0.00 0.00 H +ATOM 304 HG SER A 20 0.272 11.069 3.455 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 14 +ATOM 1 N ASN A 1 -6.401 7.662 -1.132 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.275 6.470 -1.269 0.00 0.00 C +ATOM 3 C ASN A 1 -6.573 5.259 -1.924 0.00 0.00 C +ATOM 4 O ASN A 1 -7.244 4.408 -2.495 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.588 6.852 -1.993 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.793 6.163 -1.354 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -9.671 5.136 -0.706 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.977 6.741 -1.450 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.636 7.473 -0.499 0.00 0.00 H +ATOM 10 2H ASN A 1 -6.040 7.938 -2.035 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.938 8.429 -0.749 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.560 6.149 -0.264 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.722 7.915 -1.937 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.537 6.586 -3.050 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -11.144 7.601 -1.945 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -11.719 6.237 -0.991 0.00 0.00 H +ATOM 17 N LEU A 2 -5.236 5.147 -1.843 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.460 4.057 -2.472 0.00 0.00 C +ATOM 19 C LEU A 2 -3.853 3.067 -1.460 0.00 0.00 C +ATOM 20 O LEU A 2 -3.274 2.048 -1.840 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.389 4.680 -3.399 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.705 4.592 -4.905 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.639 3.147 -5.409 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -5.061 5.208 -5.270 0.00 0.00 C +ATOM 25 H LEU A 2 -4.672 5.849 -1.391 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.127 3.449 -3.079 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.286 5.716 -3.140 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.429 4.188 -3.232 0.00 0.00 H +ATOM 29 HG LEU A 2 -2.935 5.159 -5.430 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -2.666 2.717 -5.172 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -4.417 2.537 -4.955 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.774 3.127 -6.492 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -5.877 4.592 -4.894 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.138 6.211 -4.856 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -5.148 5.268 -6.356 0.00 0.00 H +ATOM 36 N TYR A 3 -4.027 3.341 -0.163 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.458 2.567 0.937 0.00 0.00 C +ATOM 38 C TYR A 3 -3.944 1.109 0.964 0.00 0.00 C +ATOM 39 O TYR A 3 -3.174 0.216 1.296 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.759 3.287 2.260 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.564 3.330 3.186 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.713 4.454 3.196 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.297 2.234 4.021 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.605 4.489 4.064 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.182 2.255 4.876 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.339 3.386 4.907 0.00 0.00 C +ATOM 47 OH TYR A 3 0.697 3.407 5.788 0.00 0.00 O +ATOM 48 H TYR A 3 -4.543 4.171 0.073 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.375 2.545 0.801 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.061 4.293 2.042 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.593 2.797 2.766 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.904 5.298 2.546 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -2.954 1.378 4.007 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.032 5.362 4.078 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -0.969 1.423 5.532 0.00 0.00 H +ATOM 56 HH TYR A 3 0.695 4.212 6.308 0.00 0.00 H +ATOM 57 N ILE A 4 -5.199 0.862 0.556 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.795 -0.478 0.440 0.00 0.00 C +ATOM 59 C ILE A 4 -4.969 -1.337 -0.529 0.00 0.00 C +ATOM 60 O ILE A 4 -4.571 -2.450 -0.193 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.277 -0.384 -0.008 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.120 0.501 0.945 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.894 -1.795 -0.096 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.475 0.918 0.356 0.00 0.00 C +ATOM 65 H ILE A 4 -5.761 1.657 0.298 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.759 -0.960 1.418 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.306 0.064 -1.002 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.297 -0.048 1.850 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.586 1.423 1.167 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.385 -2.392 -0.852 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.817 -2.302 0.867 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.945 -1.739 -0.379 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -9.330 1.364 -0.631 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -10.141 0.060 0.274 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.939 1.657 1.008 0.00 0.00 H +ATOM 76 N GLN A 5 -4.685 -0.803 -1.722 0.00 0.00 N +ATOM 77 CA GLN A 5 -3.904 -1.463 -2.769 0.00 0.00 C +ATOM 78 C GLN A 5 -2.453 -1.702 -2.326 0.00 0.00 C +ATOM 79 O GLN A 5 -1.920 -2.790 -2.539 0.00 0.00 O +ATOM 80 CB GLN A 5 -3.995 -0.617 -4.058 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.421 -1.431 -5.294 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.350 -0.621 -6.194 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.942 0.305 -6.876 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.636 -0.921 -6.208 0.00 0.00 N +ATOM 85 H GLN A 5 -4.991 0.144 -1.894 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.348 -2.442 -2.942 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.713 0.165 -3.902 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.039 -0.132 -4.264 0.00 0.00 H +ATOM 89 1HG GLN A 5 -3.546 -1.706 -5.851 0.00 0.00 H +ATOM 90 2HG GLN A 5 -4.941 -2.342 -4.994 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.025 -1.675 -5.669 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -7.188 -0.340 -6.815 0.00 0.00 H +ATOM 93 N TRP A 6 -1.834 -0.719 -1.658 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.498 -0.859 -1.070 0.00 0.00 C +ATOM 95 C TRP A 6 -0.433 -1.932 0.032 0.00 0.00 C +ATOM 96 O TRP A 6 0.497 -2.744 0.055 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.042 0.505 -0.544 0.00 0.00 C +ATOM 98 CG TRP A 6 1.340 0.516 0.026 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.480 0.543 -0.699 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.754 0.502 1.428 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.565 0.518 0.155 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.179 0.507 1.471 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.081 0.494 2.669 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.905 0.515 2.669 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.798 0.487 3.882 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.205 0.501 3.885 0.00 0.00 C +ATOM 107 H TRP A 6 -2.329 0.162 -1.554 0.00 0.00 H +ATOM 108 HA TRP A 6 0.193 -1.170 -1.855 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.076 1.206 -1.355 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.737 0.847 0.222 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.524 0.581 -1.779 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.549 0.548 -0.121 0.00 0.00 H +ATOM 113 HE3 TRP A 6 0.001 0.500 2.681 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.985 0.520 2.640 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.267 0.489 4.823 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.747 0.509 4.821 0.00 0.00 H +ATOM 117 N LEU A 7 -1.429 -1.970 0.928 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.563 -3.019 1.940 0.00 0.00 C +ATOM 119 C LEU A 7 -1.832 -4.398 1.325 0.00 0.00 C +ATOM 120 O LEU A 7 -1.302 -5.380 1.840 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.671 -2.661 2.946 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.287 -1.567 3.960 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.511 -1.233 4.821 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.148 -1.999 4.892 0.00 0.00 C +ATOM 125 H LEU A 7 -2.136 -1.238 0.898 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.618 -3.107 2.473 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.527 -2.321 2.395 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.940 -3.558 3.506 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.976 -0.668 3.433 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.316 -0.864 4.185 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.850 -2.123 5.351 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.257 -0.464 5.550 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.377 -2.965 5.340 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.217 -2.069 4.334 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -1.013 -1.260 5.680 0.00 0.00 H +ATOM 136 N LYS A 8 -2.599 -4.488 0.226 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.976 -5.755 -0.427 0.00 0.00 C +ATOM 138 C LYS A 8 -1.777 -6.638 -0.783 0.00 0.00 C +ATOM 139 O LYS A 8 -1.856 -7.858 -0.664 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.803 -5.465 -1.696 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.622 -6.677 -2.165 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.863 -6.886 -1.280 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.602 -8.185 -1.607 0.00 0.00 C +ATOM 144 NZ LYS A 8 -5.801 -9.379 -1.240 0.00 0.00 N +ATOM 145 H LYS A 8 -3.048 -3.631 -0.094 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.571 -6.320 0.286 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.477 -4.656 -1.488 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.125 -5.174 -2.502 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.937 -6.516 -3.178 0.00 0.00 H +ATOM 150 2HG LYS A 8 -3.995 -7.568 -2.162 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.553 -6.915 -0.253 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.542 -6.046 -1.435 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.527 -8.206 -1.063 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.842 -8.200 -2.674 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -4.958 -9.420 -1.800 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -5.526 -9.332 -0.267 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -6.335 -10.225 -1.388 0.00 0.00 H +ATOM 158 N ASP A 9 -0.693 -6.000 -1.216 0.00 0.00 N +ATOM 159 CA ASP A 9 0.577 -6.608 -1.609 0.00 0.00 C +ATOM 160 C ASP A 9 1.501 -6.893 -0.404 0.00 0.00 C +ATOM 161 O ASP A 9 2.502 -7.590 -0.554 0.00 0.00 O +ATOM 162 CB ASP A 9 1.191 -5.620 -2.609 0.00 0.00 C +ATOM 163 CG ASP A 9 2.246 -6.195 -3.544 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.842 -6.848 -4.529 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.401 -5.726 -3.445 0.00 0.00 O +ATOM 166 H ASP A 9 -0.773 -4.997 -1.309 0.00 0.00 H +ATOM 167 HA ASP A 9 0.386 -7.552 -2.122 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.396 -5.225 -3.212 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.601 -4.770 -2.070 0.00 0.00 H +ATOM 170 N GLY A 10 1.138 -6.413 0.799 0.00 0.00 N +ATOM 171 CA GLY A 10 1.851 -6.634 2.059 0.00 0.00 C +ATOM 172 C GLY A 10 2.515 -5.385 2.659 0.00 0.00 C +ATOM 173 O GLY A 10 3.469 -5.523 3.433 0.00 0.00 O +ATOM 174 H GLY A 10 0.235 -5.953 0.859 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.135 -7.004 2.792 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.606 -7.406 1.922 0.00 0.00 H +ATOM 177 N GLY A 11 2.037 -4.182 2.311 0.00 0.00 N +ATOM 178 CA GLY A 11 2.491 -2.882 2.819 0.00 0.00 C +ATOM 179 C GLY A 11 4.020 -2.705 2.788 0.00 0.00 C +ATOM 180 O GLY A 11 4.574 -2.593 1.694 0.00 0.00 O +ATOM 181 H GLY A 11 1.318 -4.166 1.598 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.060 -2.105 2.191 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.102 -2.739 3.824 0.00 0.00 H +ATOM 184 N PRO A 12 4.730 -2.700 3.937 0.00 0.00 N +ATOM 185 CA PRO A 12 6.196 -2.624 3.971 0.00 0.00 C +ATOM 186 C PRO A 12 6.905 -3.715 3.153 0.00 0.00 C +ATOM 187 O PRO A 12 8.004 -3.490 2.653 0.00 0.00 O +ATOM 188 CB PRO A 12 6.587 -2.742 5.450 0.00 0.00 C +ATOM 189 CG PRO A 12 5.333 -2.306 6.202 0.00 0.00 C +ATOM 190 CD PRO A 12 4.199 -2.770 5.292 0.00 0.00 C +ATOM 191 HA PRO A 12 6.504 -1.647 3.594 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.846 -3.754 5.696 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.442 -2.107 5.689 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.275 -2.782 7.162 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.315 -1.219 6.283 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.915 -3.777 5.531 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.335 -2.119 5.426 0.00 0.00 H +ATOM 198 N SER A 13 6.277 -4.888 3.002 0.00 0.00 N +ATOM 199 CA SER A 13 6.825 -6.021 2.248 0.00 0.00 C +ATOM 200 C SER A 13 6.595 -5.934 0.728 0.00 0.00 C +ATOM 201 O SER A 13 7.075 -6.791 -0.007 0.00 0.00 O +ATOM 202 CB SER A 13 6.342 -7.350 2.853 0.00 0.00 C +ATOM 203 OG SER A 13 4.946 -7.537 2.785 0.00 0.00 O +ATOM 204 H SER A 13 5.343 -4.969 3.391 0.00 0.00 H +ATOM 205 HA SER A 13 7.908 -6.013 2.377 0.00 0.00 H +ATOM 206 1HB SER A 13 6.816 -8.154 2.324 0.00 0.00 H +ATOM 207 2HB SER A 13 6.647 -7.388 3.900 0.00 0.00 H +ATOM 208 HG SER A 13 4.461 -6.757 3.136 0.00 0.00 H +ATOM 209 N SER A 14 5.937 -4.870 0.241 0.00 0.00 N +ATOM 210 CA SER A 14 5.582 -4.659 -1.171 0.00 0.00 C +ATOM 211 C SER A 14 6.709 -4.075 -2.046 0.00 0.00 C +ATOM 212 O SER A 14 6.506 -3.867 -3.240 0.00 0.00 O +ATOM 213 CB SER A 14 4.394 -3.697 -1.249 0.00 0.00 C +ATOM 214 OG SER A 14 3.342 -4.095 -0.399 0.00 0.00 O +ATOM 215 H SER A 14 5.543 -4.204 0.899 0.00 0.00 H +ATOM 216 HA SER A 14 5.276 -5.613 -1.607 0.00 0.00 H +ATOM 217 1HB SER A 14 4.721 -2.717 -0.961 0.00 0.00 H +ATOM 218 2HB SER A 14 4.025 -3.661 -2.271 0.00 0.00 H +ATOM 219 HG SER A 14 2.975 -3.313 0.029 0.00 0.00 H +ATOM 220 N GLY A 15 7.873 -3.737 -1.470 0.00 0.00 N +ATOM 221 CA GLY A 15 8.999 -3.132 -2.201 0.00 0.00 C +ATOM 222 C GLY A 15 8.848 -1.633 -2.516 0.00 0.00 C +ATOM 223 O GLY A 15 9.535 -1.130 -3.401 0.00 0.00 O +ATOM 224 H GLY A 15 7.986 -3.973 -0.495 0.00 0.00 H +ATOM 225 1HA GLY A 15 9.912 -3.262 -1.623 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.130 -3.657 -3.149 0.00 0.00 H +ATOM 227 N ARG A 16 7.939 -0.924 -1.830 0.00 0.00 N +ATOM 228 CA ARG A 16 7.559 0.475 -2.105 0.00 0.00 C +ATOM 229 C ARG A 16 7.032 1.175 -0.838 0.00 0.00 C +ATOM 230 O ARG A 16 6.351 0.518 -0.047 0.00 0.00 O +ATOM 231 CB ARG A 16 6.517 0.515 -3.247 0.00 0.00 C +ATOM 232 CG ARG A 16 5.357 -0.489 -3.097 0.00 0.00 C +ATOM 233 CD ARG A 16 4.496 -0.583 -4.360 0.00 0.00 C +ATOM 234 NE ARG A 16 3.700 -1.826 -4.349 0.00 0.00 N +ATOM 235 CZ ARG A 16 3.398 -2.606 -5.380 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.636 -2.252 -6.620 0.00 0.00 N +ATOM 237 NH2 ARG A 16 2.850 -3.774 -5.180 0.00 0.00 N +ATOM 238 H ARG A 16 7.441 -1.405 -1.093 0.00 0.00 H +ATOM 239 HA ARG A 16 8.452 1.000 -2.443 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.101 1.503 -3.285 0.00 0.00 H +ATOM 241 2HB ARG A 16 7.040 0.296 -4.178 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.766 -1.458 -2.886 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.736 -0.217 -2.247 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.834 0.260 -4.400 0.00 0.00 H +ATOM 245 2HD ARG A 16 5.162 -0.588 -5.225 0.00 0.00 H +ATOM 246 HE ARG A 16 3.410 -2.188 -3.456 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.099 -1.379 -6.787 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.425 -2.883 -7.370 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 3.013 -4.274 -4.292 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 2.589 -4.386 -5.930 0.00 0.00 H +ATOM 251 N PRO A 17 7.296 2.484 -0.642 0.00 0.00 N +ATOM 252 CA PRO A 17 6.862 3.230 0.546 0.00 0.00 C +ATOM 253 C PRO A 17 5.336 3.464 0.578 0.00 0.00 C +ATOM 254 O PRO A 17 4.676 3.310 -0.454 0.00 0.00 O +ATOM 255 CB PRO A 17 7.636 4.555 0.478 0.00 0.00 C +ATOM 256 CG PRO A 17 7.830 4.776 -1.020 0.00 0.00 C +ATOM 257 CD PRO A 17 8.034 3.357 -1.545 0.00 0.00 C +ATOM 258 HA PRO A 17 7.157 2.685 1.444 0.00 0.00 H +ATOM 259 1HB PRO A 17 7.068 5.354 0.914 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.609 4.434 0.956 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.963 5.230 -1.460 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.689 5.414 -1.228 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.651 3.270 -2.543 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.094 3.104 -1.509 0.00 0.00 H +ATOM 265 N PRO A 18 4.762 3.851 1.737 0.00 0.00 N +ATOM 266 CA PRO A 18 3.324 4.085 1.879 0.00 0.00 C +ATOM 267 C PRO A 18 2.832 5.288 1.045 0.00 0.00 C +ATOM 268 O PRO A 18 3.507 6.319 1.003 0.00 0.00 O +ATOM 269 CB PRO A 18 3.085 4.299 3.378 0.00 0.00 C +ATOM 270 CG PRO A 18 4.437 4.766 3.908 0.00 0.00 C +ATOM 271 CD PRO A 18 5.429 4.018 3.023 0.00 0.00 C +ATOM 272 HA PRO A 18 2.803 3.182 1.576 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.333 5.047 3.541 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.823 3.348 3.843 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.548 5.828 3.800 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.568 4.519 4.962 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.330 4.589 2.906 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.634 3.036 3.452 0.00 0.00 H +ATOM 279 N PRO A 19 1.660 5.185 0.385 0.00 0.00 N +ATOM 280 CA PRO A 19 1.102 6.250 -0.443 0.00 0.00 C +ATOM 281 C PRO A 19 0.321 7.283 0.390 0.00 0.00 C +ATOM 282 O PRO A 19 -0.811 7.023 0.804 0.00 0.00 O +ATOM 283 CB PRO A 19 0.206 5.530 -1.455 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.321 4.332 -0.664 0.00 0.00 C +ATOM 285 CD PRO A 19 0.850 3.979 0.253 0.00 0.00 C +ATOM 286 HA PRO A 19 1.900 6.759 -0.984 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.598 6.163 -1.776 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.818 5.174 -2.286 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.190 4.599 -0.094 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.584 3.506 -1.323 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.487 3.671 1.214 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.451 3.202 -0.216 0.00 0.00 H +ATOM 293 N SER A 20 0.922 8.471 0.555 0.00 0.00 N +ATOM 294 CA SER A 20 0.386 9.673 1.224 0.00 0.00 C +ATOM 295 C SER A 20 0.416 9.627 2.763 0.00 0.00 C +ATOM 296 O SER A 20 1.001 8.684 3.339 0.00 0.00 O +ATOM 297 CB SER A 20 -1.018 10.026 0.706 0.00 0.00 C +ATOM 298 OG SER A 20 -1.373 11.233 1.334 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.165 10.594 3.315 0.00 0.00 O +ATOM 300 H SER A 20 1.888 8.511 0.265 0.00 0.00 H +ATOM 301 HA SER A 20 1.034 10.508 0.958 0.00 0.00 H +ATOM 302 1HB SER A 20 -1.001 10.151 -0.360 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.730 9.255 1.002 0.00 0.00 H +ATOM 304 HG SER A 20 -0.935 11.116 2.254 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 15 +ATOM 1 N ASN A 1 -5.555 8.004 -1.532 0.00 0.00 N +ATOM 2 CA ASN A 1 -6.571 6.932 -1.361 0.00 0.00 C +ATOM 3 C ASN A 1 -6.105 5.544 -1.850 0.00 0.00 C +ATOM 4 O ASN A 1 -6.936 4.715 -2.200 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.897 7.340 -2.038 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.071 6.615 -1.385 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -9.297 6.771 -0.197 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -9.821 5.802 -2.107 0.00 0.00 N +ATOM 9 1H ASN A 1 -4.747 7.831 -0.949 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.271 8.069 -2.500 0.00 0.00 H +ATOM 11 3H ASN A 1 -5.951 8.893 -1.252 0.00 0.00 H +ATOM 12 HA ASN A 1 -6.784 6.837 -0.294 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.035 8.399 -1.937 0.00 0.00 H +ATOM 14 2HB ASN A 1 -7.861 7.128 -3.108 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -9.603 5.565 -3.060 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -10.562 5.348 -1.598 0.00 0.00 H +ATOM 17 N LEU A 2 -4.794 5.254 -1.881 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.259 3.990 -2.422 0.00 0.00 C +ATOM 19 C LEU A 2 -3.783 3.017 -1.328 0.00 0.00 C +ATOM 20 O LEU A 2 -3.304 1.928 -1.638 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.148 4.316 -3.442 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.647 5.049 -4.702 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -2.468 5.586 -5.520 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -4.488 4.133 -5.599 0.00 0.00 C +ATOM 25 H LEU A 2 -4.097 5.917 -1.583 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.044 3.453 -2.954 0.00 0.00 H +ATOM 27 1HB LEU A 2 -2.418 4.936 -2.958 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.649 3.395 -3.748 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.253 5.904 -4.403 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -1.705 6.004 -4.864 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.024 4.789 -6.119 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -2.821 6.376 -6.183 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -3.921 3.235 -5.845 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.413 3.854 -5.094 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.743 4.655 -6.521 0.00 0.00 H +ATOM 36 N TYR A 3 -3.936 3.389 -0.051 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.430 2.642 1.105 0.00 0.00 C +ATOM 38 C TYR A 3 -3.954 1.198 1.152 0.00 0.00 C +ATOM 39 O TYR A 3 -3.201 0.279 1.464 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.762 3.414 2.395 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.656 3.341 3.430 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.845 4.468 3.678 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.409 2.135 4.112 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.773 4.382 4.586 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.337 2.043 5.019 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.505 3.158 5.243 0.00 0.00 C +ATOM 47 OH TYR A 3 0.567 3.040 6.071 0.00 0.00 O +ATOM 48 H TYR A 3 -4.366 4.282 0.125 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.345 2.592 1.013 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.928 4.444 2.144 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.687 3.030 2.829 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.028 5.403 3.166 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.032 1.273 3.926 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.160 5.252 4.768 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.128 1.119 5.535 0.00 0.00 H +ATOM 56 HH TYR A 3 1.163 3.787 5.994 0.00 0.00 H +ATOM 57 N ILE A 4 -5.227 0.988 0.788 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.849 -0.340 0.711 0.00 0.00 C +ATOM 59 C ILE A 4 -5.125 -1.216 -0.325 0.00 0.00 C +ATOM 60 O ILE A 4 -4.736 -2.340 -0.013 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.369 -0.238 0.414 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.095 0.818 1.288 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.031 -1.608 0.641 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.378 2.119 0.526 0.00 0.00 C +ATOM 65 H ILE A 4 -5.784 1.799 0.563 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.728 -0.819 1.684 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.507 0.023 -0.637 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.027 0.405 1.622 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.505 1.038 2.179 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.517 -2.377 0.069 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.986 -1.872 1.699 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.075 -1.566 0.331 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.483 2.471 0.011 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.168 1.948 -0.207 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.711 2.887 1.226 0.00 0.00 H +ATOM 76 N GLN A 5 -4.916 -0.702 -1.546 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.150 -1.391 -2.590 0.00 0.00 C +ATOM 78 C GLN A 5 -2.691 -1.624 -2.173 0.00 0.00 C +ATOM 79 O GLN A 5 -2.176 -2.721 -2.360 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.230 -0.639 -3.931 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.625 -0.733 -4.579 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.546 -0.884 -6.097 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.814 -1.942 -6.641 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -5.189 0.150 -6.835 0.00 0.00 N +ATOM 85 H GLN A 5 -5.185 0.257 -1.709 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.580 -2.380 -2.738 0.00 0.00 H +ATOM 87 1HB GLN A 5 -3.999 0.395 -3.760 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.503 -1.090 -4.608 0.00 0.00 H +ATOM 89 1HG GLN A 5 -6.138 -1.583 -4.173 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.209 0.153 -4.330 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.962 1.049 -6.453 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -5.143 -0.061 -7.818 0.00 0.00 H +ATOM 93 N TRP A 6 -2.038 -0.638 -1.550 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.680 -0.802 -1.023 0.00 0.00 C +ATOM 95 C TRP A 6 -0.581 -1.902 0.052 0.00 0.00 C +ATOM 96 O TRP A 6 0.370 -2.683 0.054 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.182 0.548 -0.505 0.00 0.00 C +ATOM 98 CG TRP A 6 1.217 0.527 0.021 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.341 0.528 -0.734 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.664 0.460 1.409 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.445 0.460 0.092 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.088 0.426 1.419 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.014 0.427 2.664 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.837 0.383 2.600 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.756 0.370 3.860 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.163 0.355 3.831 0.00 0.00 C +ATOM 107 H TRP A 6 -2.505 0.261 -1.452 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.030 -1.112 -1.845 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.227 1.255 -1.311 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.844 0.890 0.290 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.361 0.562 -1.814 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.420 0.464 -0.212 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.065 0.453 2.696 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.916 0.365 2.548 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.242 0.352 4.811 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.723 0.327 4.755 0.00 0.00 H +ATOM 117 N LEU A 7 -1.576 -2.011 0.945 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.649 -3.105 1.914 0.00 0.00 C +ATOM 119 C LEU A 7 -1.882 -4.474 1.254 0.00 0.00 C +ATOM 120 O LEU A 7 -1.265 -5.442 1.698 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.712 -2.809 2.985 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.272 -1.754 4.020 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.470 -1.358 4.888 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.166 -2.267 4.955 0.00 0.00 C +ATOM 125 H LEU A 7 -2.302 -1.297 0.951 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.678 -3.182 2.402 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.598 -2.454 2.494 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.946 -3.732 3.519 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.907 -0.864 3.508 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.258 -0.942 4.261 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.855 -2.232 5.416 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.169 -0.607 5.619 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.504 -3.160 5.481 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.268 -2.501 4.389 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.914 -1.496 5.684 0.00 0.00 H +ATOM 136 N LYS A 8 -2.698 -4.571 0.188 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.920 -5.824 -0.568 0.00 0.00 C +ATOM 138 C LYS A 8 -1.620 -6.483 -1.050 0.00 0.00 C +ATOM 139 O LYS A 8 -1.511 -7.703 -0.966 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.867 -5.590 -1.762 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.354 -5.831 -1.453 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.249 -4.698 -1.982 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.691 -5.177 -2.180 0.00 0.00 C +ATOM 144 NZ LYS A 8 -8.665 -4.079 -1.976 0.00 0.00 N +ATOM 145 H LYS A 8 -3.180 -3.726 -0.103 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.374 -6.556 0.102 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.752 -4.574 -2.087 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.594 -6.271 -2.572 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.657 -6.753 -1.911 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.512 -5.922 -0.377 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.243 -3.889 -1.277 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.872 -4.334 -2.938 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.798 -5.556 -3.178 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.897 -5.991 -1.480 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.685 -3.817 -0.999 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -8.405 -3.272 -2.528 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -9.592 -4.377 -2.248 0.00 0.00 H +ATOM 158 N ASP A 9 -0.639 -5.703 -1.510 0.00 0.00 N +ATOM 159 CA ASP A 9 0.688 -6.202 -1.905 0.00 0.00 C +ATOM 160 C ASP A 9 1.568 -6.674 -0.725 0.00 0.00 C +ATOM 161 O ASP A 9 2.581 -7.332 -0.959 0.00 0.00 O +ATOM 162 CB ASP A 9 1.424 -5.117 -2.708 0.00 0.00 C +ATOM 163 CG ASP A 9 1.030 -5.128 -4.186 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.768 -5.764 -4.970 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.004 -4.494 -4.518 0.00 0.00 O +ATOM 166 H ASP A 9 -0.835 -4.715 -1.632 0.00 0.00 H +ATOM 167 HA ASP A 9 0.559 -7.070 -2.554 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.184 -4.157 -2.293 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.495 -5.299 -2.651 0.00 0.00 H +ATOM 170 N GLY A 10 1.193 -6.382 0.530 0.00 0.00 N +ATOM 171 CA GLY A 10 1.971 -6.722 1.726 0.00 0.00 C +ATOM 172 C GLY A 10 2.536 -5.512 2.484 0.00 0.00 C +ATOM 173 O GLY A 10 3.434 -5.686 3.319 0.00 0.00 O +ATOM 174 H GLY A 10 0.285 -5.945 0.663 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.329 -7.276 2.410 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.805 -7.370 1.457 0.00 0.00 H +ATOM 177 N GLY A 11 2.052 -4.294 2.195 0.00 0.00 N +ATOM 178 CA GLY A 11 2.478 -3.045 2.826 0.00 0.00 C +ATOM 179 C GLY A 11 4.005 -2.879 2.813 0.00 0.00 C +ATOM 180 O GLY A 11 4.582 -2.906 1.721 0.00 0.00 O +ATOM 181 H GLY A 11 1.402 -4.219 1.418 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.046 -2.213 2.270 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.084 -3.016 3.839 0.00 0.00 H +ATOM 184 N PRO A 12 4.692 -2.759 3.973 0.00 0.00 N +ATOM 185 CA PRO A 12 6.152 -2.629 4.039 0.00 0.00 C +ATOM 186 C PRO A 12 6.923 -3.746 3.321 0.00 0.00 C +ATOM 187 O PRO A 12 8.027 -3.514 2.831 0.00 0.00 O +ATOM 188 CB PRO A 12 6.510 -2.622 5.531 0.00 0.00 C +ATOM 189 CG PRO A 12 5.218 -2.200 6.225 0.00 0.00 C +ATOM 190 CD PRO A 12 4.129 -2.762 5.317 0.00 0.00 C +ATOM 191 HA PRO A 12 6.435 -1.671 3.598 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.814 -3.599 5.854 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.322 -1.925 5.744 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.154 -2.624 7.209 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.152 -1.112 6.247 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.874 -3.761 5.613 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.237 -2.141 5.389 0.00 0.00 H +ATOM 198 N SER A 13 6.342 -4.949 3.227 0.00 0.00 N +ATOM 199 CA SER A 13 6.953 -6.108 2.565 0.00 0.00 C +ATOM 200 C SER A 13 6.835 -6.089 1.028 0.00 0.00 C +ATOM 201 O SER A 13 7.310 -7.013 0.372 0.00 0.00 O +ATOM 202 CB SER A 13 6.418 -7.407 3.189 0.00 0.00 C +ATOM 203 OG SER A 13 5.049 -7.646 2.925 0.00 0.00 O +ATOM 204 H SER A 13 5.398 -5.042 3.586 0.00 0.00 H +ATOM 205 HA SER A 13 8.021 -6.087 2.780 0.00 0.00 H +ATOM 206 1HB SER A 13 6.986 -8.229 2.798 0.00 0.00 H +ATOM 207 2HB SER A 13 6.570 -7.367 4.269 0.00 0.00 H +ATOM 208 HG SER A 13 4.491 -6.875 3.179 0.00 0.00 H +ATOM 209 N SER A 14 6.261 -5.024 0.445 0.00 0.00 N +ATOM 210 CA SER A 14 5.991 -4.891 -1.000 0.00 0.00 C +ATOM 211 C SER A 14 7.137 -4.279 -1.817 0.00 0.00 C +ATOM 212 O SER A 14 7.039 -4.212 -3.040 0.00 0.00 O +ATOM 213 CB SER A 14 4.767 -3.997 -1.251 0.00 0.00 C +ATOM 214 OG SER A 14 3.740 -4.198 -0.309 0.00 0.00 O +ATOM 215 H SER A 14 5.896 -4.305 1.059 0.00 0.00 H +ATOM 216 HA SER A 14 5.772 -5.881 -1.404 0.00 0.00 H +ATOM 217 1HB SER A 14 5.077 -2.971 -1.206 0.00 0.00 H +ATOM 218 2HB SER A 14 4.387 -4.198 -2.253 0.00 0.00 H +ATOM 219 HG SER A 14 3.989 -3.688 0.498 0.00 0.00 H +ATOM 220 N GLY A 15 8.190 -3.753 -1.173 0.00 0.00 N +ATOM 221 CA GLY A 15 9.278 -3.048 -1.864 0.00 0.00 C +ATOM 222 C GLY A 15 8.923 -1.636 -2.363 0.00 0.00 C +ATOM 223 O GLY A 15 9.597 -1.125 -3.256 0.00 0.00 O +ATOM 224 H GLY A 15 8.230 -3.874 -0.169 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.132 -2.963 -1.193 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.593 -3.638 -2.728 0.00 0.00 H +ATOM 227 N ARG A 16 7.874 -1.002 -1.812 0.00 0.00 N +ATOM 228 CA ARG A 16 7.382 0.330 -2.201 0.00 0.00 C +ATOM 229 C ARG A 16 6.915 1.120 -0.964 0.00 0.00 C +ATOM 230 O ARG A 16 6.231 0.524 -0.128 0.00 0.00 O +ATOM 231 CB ARG A 16 6.224 0.134 -3.199 0.00 0.00 C +ATOM 232 CG ARG A 16 5.717 1.452 -3.807 0.00 0.00 C +ATOM 233 CD ARG A 16 4.513 1.235 -4.737 0.00 0.00 C +ATOM 234 NE ARG A 16 4.760 1.773 -6.087 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.414 1.176 -7.078 0.00 0.00 C +ATOM 236 NH1 ARG A 16 5.904 -0.036 -6.958 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.592 1.801 -8.218 0.00 0.00 N +ATOM 238 H ARG A 16 7.386 -1.480 -1.068 0.00 0.00 H +ATOM 239 HA ARG A 16 8.193 0.866 -2.695 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.564 -0.500 -3.995 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.397 -0.368 -2.693 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.425 2.110 -3.011 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.533 1.921 -4.356 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.318 0.183 -4.813 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.650 1.750 -4.307 0.00 0.00 H +ATOM 246 HE ARG A 16 4.417 2.701 -6.269 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 5.763 -0.524 -6.091 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 6.395 -0.483 -7.711 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.241 2.733 -8.353 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 6.087 1.345 -8.963 0.00 0.00 H +ATOM 251 N PRO A 17 7.201 2.434 -0.845 0.00 0.00 N +ATOM 252 CA PRO A 17 6.709 3.260 0.266 0.00 0.00 C +ATOM 253 C PRO A 17 5.174 3.417 0.252 0.00 0.00 C +ATOM 254 O PRO A 17 4.553 3.245 -0.801 0.00 0.00 O +ATOM 255 CB PRO A 17 7.409 4.616 0.102 0.00 0.00 C +ATOM 256 CG PRO A 17 7.686 4.697 -1.397 0.00 0.00 C +ATOM 257 CD PRO A 17 7.996 3.247 -1.757 0.00 0.00 C +ATOM 258 HA PRO A 17 7.014 2.807 1.209 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.770 5.418 0.418 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.355 4.606 0.646 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.826 5.053 -1.931 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.523 5.360 -1.621 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.719 3.047 -2.774 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.056 3.045 -1.589 0.00 0.00 H +ATOM 265 N PRO A 18 4.551 3.769 1.395 0.00 0.00 N +ATOM 266 CA PRO A 18 3.107 3.972 1.479 0.00 0.00 C +ATOM 267 C PRO A 18 2.667 5.246 0.736 0.00 0.00 C +ATOM 268 O PRO A 18 3.406 6.231 0.715 0.00 0.00 O +ATOM 269 CB PRO A 18 2.790 4.070 2.975 0.00 0.00 C +ATOM 270 CG PRO A 18 4.088 4.608 3.577 0.00 0.00 C +ATOM 271 CD PRO A 18 5.169 3.986 2.696 0.00 0.00 C +ATOM 272 HA PRO A 18 2.605 3.104 1.061 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.976 4.746 3.152 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.591 3.076 3.371 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.120 5.679 3.526 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.200 4.315 4.621 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.005 4.652 2.605 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.478 3.028 3.113 0.00 0.00 H +ATOM 279 N PRO A 19 1.453 5.261 0.157 0.00 0.00 N +ATOM 280 CA PRO A 19 0.895 6.437 -0.497 0.00 0.00 C +ATOM 281 C PRO A 19 0.313 7.426 0.527 0.00 0.00 C +ATOM 282 O PRO A 19 -0.289 7.024 1.526 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.191 5.879 -1.419 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.709 4.662 -0.648 0.00 0.00 C +ATOM 285 CD PRO A 19 0.528 4.140 0.072 0.00 0.00 C +ATOM 286 HA PRO A 19 1.661 6.937 -1.093 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.972 6.598 -1.574 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.264 5.549 -2.354 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.469 4.948 0.054 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.113 3.904 -1.316 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.269 3.796 1.055 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.983 3.342 -0.516 0.00 0.00 H +ATOM 293 N SER A 20 0.435 8.721 0.221 0.00 0.00 N +ATOM 294 CA SER A 20 -0.096 9.858 0.986 0.00 0.00 C +ATOM 295 C SER A 20 -0.738 10.863 0.030 0.00 0.00 C +ATOM 296 O SER A 20 0.078 11.508 -0.677 0.00 0.00 O +ATOM 297 CB SER A 20 1.036 10.515 1.790 0.00 0.00 C +ATOM 298 OG SER A 20 1.921 11.080 0.848 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.985 10.935 0.010 0.00 0.00 O +ATOM 300 H SER A 20 0.966 8.976 -0.599 0.00 0.00 H +ATOM 301 HA SER A 20 -0.871 9.518 1.672 0.00 0.00 H +ATOM 302 1HB SER A 20 0.640 11.279 2.431 0.00 0.00 H +ATOM 303 2HB SER A 20 1.548 9.780 2.415 0.00 0.00 H +ATOM 304 HG SER A 20 1.284 11.357 0.104 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 16 +ATOM 1 N ASN A 1 -8.985 3.821 -0.843 0.00 0.00 N +ATOM 2 CA ASN A 1 -8.461 2.997 -1.957 0.00 0.00 C +ATOM 3 C ASN A 1 -6.942 2.892 -1.960 0.00 0.00 C +ATOM 4 O ASN A 1 -6.453 1.798 -1.714 0.00 0.00 O +ATOM 5 CB ASN A 1 -9.056 3.439 -3.298 0.00 0.00 C +ATOM 6 CG ASN A 1 -10.516 3.025 -3.296 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -11.303 3.596 -2.558 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.879 1.968 -3.997 0.00 0.00 N +ATOM 9 1H ASN A 1 -8.630 3.491 0.044 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.733 4.791 -0.971 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.999 3.760 -0.843 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.800 1.972 -1.795 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.975 4.504 -3.404 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.543 2.956 -4.125 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -10.234 1.458 -4.583 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -11.851 1.711 -3.928 0.00 0.00 H +ATOM 17 N LEU A 2 -6.201 3.988 -2.170 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.729 4.023 -2.199 0.00 0.00 C +ATOM 19 C LEU A 2 -4.037 3.168 -1.116 0.00 0.00 C +ATOM 20 O LEU A 2 -3.314 2.226 -1.445 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.249 5.491 -2.208 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.830 6.411 -1.102 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.744 6.981 -0.191 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -5.610 7.577 -1.716 0.00 0.00 C +ATOM 25 H LEU A 2 -6.656 4.854 -2.419 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.416 3.587 -3.149 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.181 5.487 -2.102 0.00 0.00 H +ATOM 28 2HB LEU A 2 -4.495 5.911 -3.186 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.519 5.848 -0.473 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -3.233 6.180 0.339 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.013 7.542 -0.773 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.187 7.648 0.549 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -4.940 8.203 -2.305 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -6.406 7.203 -2.358 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -6.050 8.182 -0.924 0.00 0.00 H +ATOM 36 N TYR A 3 -4.276 3.462 0.168 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.662 2.734 1.282 0.00 0.00 C +ATOM 38 C TYR A 3 -4.055 1.248 1.304 0.00 0.00 C +ATOM 39 O TYR A 3 -3.199 0.393 1.521 0.00 0.00 O +ATOM 40 CB TYR A 3 -4.017 3.443 2.599 0.00 0.00 C +ATOM 41 CG TYR A 3 -3.241 2.974 3.819 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.832 2.899 3.785 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -3.928 2.662 5.010 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -1.115 2.469 4.918 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -3.214 2.261 6.153 0.00 0.00 C +ATOM 46 CZ TYR A 3 -1.810 2.142 6.104 0.00 0.00 C +ATOM 47 OH TYR A 3 -1.150 1.670 7.197 0.00 0.00 O +ATOM 48 H TYR A 3 -4.837 4.272 0.378 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.581 2.779 1.145 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.831 4.492 2.471 0.00 0.00 H +ATOM 51 2HB TYR A 3 -5.087 3.318 2.784 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.288 3.179 2.895 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -5.005 2.735 5.060 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.037 2.418 4.887 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -3.725 2.015 7.071 0.00 0.00 H +ATOM 56 HH TYR A 3 -0.473 1.035 6.968 0.00 0.00 H +ATOM 57 N ILE A 4 -5.324 0.935 1.003 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.835 -0.433 0.848 0.00 0.00 C +ATOM 59 C ILE A 4 -5.070 -1.165 -0.259 0.00 0.00 C +ATOM 60 O ILE A 4 -4.556 -2.249 -0.010 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.373 -0.454 0.628 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.119 0.069 1.882 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.865 -1.878 0.304 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.406 1.577 1.860 0.00 0.00 C +ATOM 65 H ILE A 4 -5.933 1.699 0.766 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.626 -0.976 1.772 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.639 0.170 -0.222 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.055 -0.451 1.958 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.537 -0.172 2.773 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.467 -2.211 -0.654 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.552 -2.574 1.084 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.953 -1.892 0.229 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.613 2.129 1.361 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.347 1.759 1.338 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.496 1.941 2.884 0.00 0.00 H +ATOM 76 N GLN A 5 -4.953 -0.577 -1.456 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.193 -1.137 -2.578 0.00 0.00 C +ATOM 78 C GLN A 5 -2.737 -1.444 -2.205 0.00 0.00 C +ATOM 79 O GLN A 5 -2.269 -2.544 -2.502 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.275 -0.188 -3.786 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.565 -0.416 -4.589 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.973 0.808 -5.398 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -7.023 1.388 -5.178 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -5.173 1.247 -6.352 0.00 0.00 N +ATOM 85 H GLN A 5 -5.394 0.332 -1.576 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.644 -2.090 -2.855 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.256 0.826 -3.436 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.423 -0.354 -4.446 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.411 -1.237 -5.262 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.383 -0.657 -3.908 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.298 0.808 -6.577 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -5.526 2.044 -6.855 0.00 0.00 H +ATOM 93 N TRP A 6 -2.045 -0.512 -1.537 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.676 -0.717 -1.051 0.00 0.00 C +ATOM 95 C TRP A 6 -0.574 -1.823 0.011 0.00 0.00 C +ATOM 96 O TRP A 6 0.277 -2.708 -0.097 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.129 0.610 -0.523 0.00 0.00 C +ATOM 98 CG TRP A 6 1.281 0.547 -0.017 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.388 0.529 -0.785 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.751 0.483 1.369 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.510 0.450 0.021 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.175 0.431 1.351 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.129 0.466 2.636 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.949 0.390 2.518 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.894 0.408 3.818 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.300 0.384 3.763 0.00 0.00 C +ATOM 107 H TRP A 6 -2.501 0.381 -1.357 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.053 -1.031 -1.891 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.167 1.328 -1.319 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.772 0.969 0.281 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.399 0.570 -1.868 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.480 0.455 -0.290 0.00 0.00 H +ATOM 113 HE3 TRP A 6 0.051 0.501 2.690 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 5.027 0.361 2.446 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.403 0.391 4.779 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.881 0.356 4.673 0.00 0.00 H +ATOM 117 N LEU A 7 -1.457 -1.813 1.020 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.515 -2.880 2.022 0.00 0.00 C +ATOM 119 C LEU A 7 -1.825 -4.246 1.392 0.00 0.00 C +ATOM 120 O LEU A 7 -1.201 -5.233 1.781 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.540 -2.533 3.116 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.096 -1.425 4.093 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.250 -1.130 5.052 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.870 -1.826 4.923 0.00 0.00 C +ATOM 125 H LEU A 7 -2.129 -1.050 1.079 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.530 -2.978 2.476 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.444 -2.212 2.636 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.739 -3.435 3.698 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.858 -0.515 3.546 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.089 -0.709 4.497 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.566 -2.044 5.557 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.934 -0.410 5.803 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.062 -2.759 5.451 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 0.000 -1.946 4.281 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.647 -1.045 5.648 0.00 0.00 H +ATOM 136 N LYS A 8 -2.718 -4.307 0.394 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.085 -5.532 -0.333 0.00 0.00 C +ATOM 138 C LYS A 8 -1.882 -6.223 -0.984 0.00 0.00 C +ATOM 139 O LYS A 8 -1.848 -7.448 -1.047 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.149 -5.208 -1.398 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.972 -6.445 -1.780 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.913 -6.206 -2.971 0.00 0.00 C +ATOM 143 CE LYS A 8 -5.170 -6.233 -4.317 0.00 0.00 C +ATOM 144 NZ LYS A 8 -4.735 -4.890 -4.767 0.00 0.00 N +ATOM 145 H LYS A 8 -3.216 -3.446 0.170 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.506 -6.236 0.387 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.811 -4.457 -1.010 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.649 -4.799 -2.275 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.296 -7.239 -2.034 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.577 -6.724 -0.915 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.664 -6.972 -2.976 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.467 -5.274 -2.843 0.00 0.00 H +ATOM 153 1HE LYS A 8 -4.303 -6.857 -4.216 0.00 0.00 H +ATOM 154 2HE LYS A 8 -5.841 -6.664 -5.066 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -5.540 -4.295 -4.905 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -4.116 -4.470 -4.084 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -4.232 -4.964 -5.642 0.00 0.00 H +ATOM 158 N ASP A 9 -0.902 -5.444 -1.456 0.00 0.00 N +ATOM 159 CA ASP A 9 0.348 -5.945 -2.038 0.00 0.00 C +ATOM 160 C ASP A 9 1.310 -6.525 -0.977 0.00 0.00 C +ATOM 161 O ASP A 9 2.208 -7.294 -1.310 0.00 0.00 O +ATOM 162 CB ASP A 9 1.013 -4.797 -2.817 0.00 0.00 C +ATOM 163 CG ASP A 9 1.703 -5.285 -4.093 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.951 -5.273 -4.135 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.950 -5.620 -5.038 0.00 0.00 O +ATOM 166 H ASP A 9 -1.024 -4.442 -1.395 0.00 0.00 H +ATOM 167 HA ASP A 9 0.107 -6.748 -2.738 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.261 -4.080 -3.084 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.722 -4.274 -2.176 0.00 0.00 H +ATOM 170 N GLY A 10 1.095 -6.194 0.306 0.00 0.00 N +ATOM 171 CA GLY A 10 1.925 -6.595 1.444 0.00 0.00 C +ATOM 172 C GLY A 10 2.500 -5.422 2.247 0.00 0.00 C +ATOM 173 O GLY A 10 3.312 -5.648 3.146 0.00 0.00 O +ATOM 174 H GLY A 10 0.256 -5.661 0.510 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.317 -7.196 2.118 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.758 -7.207 1.101 0.00 0.00 H +ATOM 177 N GLY A 11 2.118 -4.173 1.938 0.00 0.00 N +ATOM 178 CA GLY A 11 2.643 -2.980 2.600 0.00 0.00 C +ATOM 179 C GLY A 11 4.177 -2.920 2.520 0.00 0.00 C +ATOM 180 O GLY A 11 4.704 -2.996 1.404 0.00 0.00 O +ATOM 181 H GLY A 11 1.494 -4.036 1.148 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.239 -2.102 2.100 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.298 -2.976 3.632 0.00 0.00 H +ATOM 184 N PRO A 12 4.917 -2.819 3.647 0.00 0.00 N +ATOM 185 CA PRO A 12 6.382 -2.799 3.646 0.00 0.00 C +ATOM 186 C PRO A 12 7.030 -4.001 2.943 0.00 0.00 C +ATOM 187 O PRO A 12 8.063 -3.835 2.294 0.00 0.00 O +ATOM 188 CB PRO A 12 6.809 -2.746 5.118 0.00 0.00 C +ATOM 189 CG PRO A 12 5.582 -2.203 5.844 0.00 0.00 C +ATOM 190 CD PRO A 12 4.419 -2.739 5.012 0.00 0.00 C +ATOM 191 HA PRO A 12 6.713 -1.886 3.148 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.061 -3.725 5.477 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.675 -2.096 5.258 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.537 -2.571 6.851 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.587 -1.112 5.807 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.125 -3.710 5.361 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.565 -2.068 5.100 0.00 0.00 H +ATOM 198 N SER A 13 6.415 -5.193 3.014 0.00 0.00 N +ATOM 199 CA SER A 13 6.932 -6.420 2.383 0.00 0.00 C +ATOM 200 C SER A 13 7.055 -6.302 0.860 0.00 0.00 C +ATOM 201 O SER A 13 7.865 -6.999 0.255 0.00 0.00 O +ATOM 202 CB SER A 13 6.032 -7.613 2.710 0.00 0.00 C +ATOM 203 OG SER A 13 5.997 -7.832 4.106 0.00 0.00 O +ATOM 204 H SER A 13 5.544 -5.278 3.527 0.00 0.00 H +ATOM 205 HA SER A 13 7.927 -6.625 2.782 0.00 0.00 H +ATOM 206 1HB SER A 13 5.038 -7.414 2.358 0.00 0.00 H +ATOM 207 2HB SER A 13 6.424 -8.504 2.218 0.00 0.00 H +ATOM 208 HG SER A 13 5.429 -8.585 4.283 0.00 0.00 H +ATOM 209 N SER A 14 6.287 -5.390 0.254 0.00 0.00 N +ATOM 210 CA SER A 14 6.322 -5.050 -1.172 0.00 0.00 C +ATOM 211 C SER A 14 7.593 -4.289 -1.582 0.00 0.00 C +ATOM 212 O SER A 14 7.834 -4.108 -2.773 0.00 0.00 O +ATOM 213 CB SER A 14 5.101 -4.192 -1.567 0.00 0.00 C +ATOM 214 OG SER A 14 4.017 -4.292 -0.662 0.00 0.00 O +ATOM 215 H SER A 14 5.633 -4.881 0.831 0.00 0.00 H +ATOM 216 HA SER A 14 6.280 -5.977 -1.745 0.00 0.00 H +ATOM 217 1HB SER A 14 5.409 -3.165 -1.614 0.00 0.00 H +ATOM 218 2HB SER A 14 4.775 -4.489 -2.563 0.00 0.00 H +ATOM 219 HG SER A 14 4.222 -3.726 0.121 0.00 0.00 H +ATOM 220 N GLY A 15 8.386 -3.785 -0.622 0.00 0.00 N +ATOM 221 CA GLY A 15 9.603 -3.011 -0.885 0.00 0.00 C +ATOM 222 C GLY A 15 9.362 -1.593 -1.427 0.00 0.00 C +ATOM 223 O GLY A 15 10.306 -0.952 -1.881 0.00 0.00 O +ATOM 224 H GLY A 15 8.154 -3.973 0.353 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.169 -2.923 0.042 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.220 -3.549 -1.606 0.00 0.00 H +ATOM 227 N ARG A 16 8.117 -1.096 -1.381 0.00 0.00 N +ATOM 228 CA ARG A 16 7.691 0.212 -1.899 0.00 0.00 C +ATOM 229 C ARG A 16 7.091 1.060 -0.764 0.00 0.00 C +ATOM 230 O ARG A 16 6.300 0.516 0.009 0.00 0.00 O +ATOM 231 CB ARG A 16 6.671 -0.025 -3.030 0.00 0.00 C +ATOM 232 CG ARG A 16 6.236 1.275 -3.721 0.00 0.00 C +ATOM 233 CD ARG A 16 5.149 1.034 -4.770 0.00 0.00 C +ATOM 234 NE ARG A 16 4.730 2.310 -5.382 0.00 0.00 N +ATOM 235 CZ ARG A 16 3.684 2.515 -6.172 0.00 0.00 C +ATOM 236 NH1 ARG A 16 2.874 1.539 -6.511 0.00 0.00 N +ATOM 237 NH2 ARG A 16 3.433 3.717 -6.637 0.00 0.00 N +ATOM 238 H ARG A 16 7.418 -1.684 -0.950 0.00 0.00 H +ATOM 239 HA ARG A 16 8.564 0.718 -2.312 0.00 0.00 H +ATOM 240 1HB ARG A 16 7.115 -0.671 -3.763 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.791 -0.523 -2.617 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.857 1.951 -2.979 0.00 0.00 H +ATOM 243 2HG ARG A 16 7.100 1.731 -4.204 0.00 0.00 H +ATOM 244 1HD ARG A 16 5.533 0.385 -5.534 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.293 0.562 -4.283 0.00 0.00 H +ATOM 246 HE ARG A 16 5.293 3.114 -5.162 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 3.073 0.618 -6.161 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 2.086 1.696 -7.110 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.029 4.490 -6.397 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 2.642 3.867 -7.235 0.00 0.00 H +ATOM 251 N PRO A 17 7.386 2.375 -0.671 0.00 0.00 N +ATOM 252 CA PRO A 17 6.796 3.253 0.346 0.00 0.00 C +ATOM 253 C PRO A 17 5.267 3.389 0.203 0.00 0.00 C +ATOM 254 O PRO A 17 4.733 3.160 -0.887 0.00 0.00 O +ATOM 255 CB PRO A 17 7.495 4.609 0.170 0.00 0.00 C +ATOM 256 CG PRO A 17 7.932 4.600 -1.293 0.00 0.00 C +ATOM 257 CD PRO A 17 8.291 3.135 -1.522 0.00 0.00 C +ATOM 258 HA PRO A 17 7.029 2.854 1.334 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.817 5.418 0.362 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.375 4.651 0.813 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.132 4.909 -1.938 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.783 5.259 -1.469 0.00 0.00 H +ATOM 263 1HD PRO A 17 8.148 2.870 -2.552 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.319 2.954 -1.207 0.00 0.00 H +ATOM 265 N PRO A 18 4.555 3.783 1.280 0.00 0.00 N +ATOM 266 CA PRO A 18 3.107 3.955 1.251 0.00 0.00 C +ATOM 267 C PRO A 18 2.677 5.165 0.399 0.00 0.00 C +ATOM 268 O PRO A 18 3.440 6.118 0.240 0.00 0.00 O +ATOM 269 CB PRO A 18 2.682 4.114 2.714 0.00 0.00 C +ATOM 270 CG PRO A 18 3.920 4.702 3.385 0.00 0.00 C +ATOM 271 CD PRO A 18 5.071 4.058 2.612 0.00 0.00 C +ATOM 272 HA PRO A 18 2.660 3.050 0.846 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.846 4.781 2.800 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.472 3.133 3.140 0.00 0.00 H +ATOM 275 1HG PRO A 18 3.940 5.770 3.288 0.00 0.00 H +ATOM 276 2HG PRO A 18 3.960 4.460 4.446 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.906 4.730 2.557 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.353 3.118 3.092 0.00 0.00 H +ATOM 279 N PRO A 19 1.446 5.145 -0.145 0.00 0.00 N +ATOM 280 CA PRO A 19 0.886 6.247 -0.912 0.00 0.00 C +ATOM 281 C PRO A 19 0.347 7.353 0.009 0.00 0.00 C +ATOM 282 O PRO A 19 -0.657 7.156 0.691 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.216 5.613 -1.764 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.713 4.453 -0.902 0.00 0.00 C +ATOM 285 CD PRO A 19 0.539 4.007 -0.154 0.00 0.00 C +ATOM 286 HA PRO A 19 1.645 6.666 -1.575 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.005 6.315 -1.954 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.222 5.216 -2.681 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.473 4.780 -0.218 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.118 3.650 -1.516 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.289 3.725 0.851 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.012 3.193 -0.700 0.00 0.00 H +ATOM 293 N SER A 20 0.994 8.526 -0.049 0.00 0.00 N +ATOM 294 CA SER A 20 0.653 9.774 0.659 0.00 0.00 C +ATOM 295 C SER A 20 0.918 9.764 2.177 0.00 0.00 C +ATOM 296 O SER A 20 0.442 10.754 2.789 0.00 0.00 O +ATOM 297 CB SER A 20 -0.786 10.208 0.336 0.00 0.00 C +ATOM 298 OG SER A 20 -0.959 11.455 0.965 0.00 0.00 O +ATOM 299 OXT SER A 20 1.603 8.846 2.675 0.00 0.00 O +ATOM 300 H SER A 20 1.867 8.518 -0.553 0.00 0.00 H +ATOM 301 HA SER A 20 1.307 10.553 0.271 0.00 0.00 H +ATOM 302 1HB SER A 20 -0.919 10.302 -0.725 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.495 9.494 0.758 0.00 0.00 H +ATOM 304 HG SER A 20 -0.420 11.315 1.824 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 17 +ATOM 1 N ASN A 1 -8.598 5.262 -0.292 0.00 0.00 N +ATOM 2 CA ASN A 1 -8.658 3.999 -1.068 0.00 0.00 C +ATOM 3 C ASN A 1 -7.282 3.479 -1.479 0.00 0.00 C +ATOM 4 O ASN A 1 -7.038 2.293 -1.290 0.00 0.00 O +ATOM 5 CB ASN A 1 -9.633 4.090 -2.256 0.00 0.00 C +ATOM 6 CG ASN A 1 -11.034 3.705 -1.797 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -11.203 2.706 -1.121 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -12.056 4.485 -2.091 0.00 0.00 N +ATOM 9 1H ASN A 1 -7.871 5.210 0.409 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.409 6.043 -0.906 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.483 5.425 0.171 0.00 0.00 H +ATOM 12 HA ASN A 1 -9.048 3.224 -0.405 0.00 0.00 H +ATOM 13 1HB ASN A 1 -9.644 5.095 -2.633 0.00 0.00 H +ATOM 14 2HB ASN A 1 -9.339 3.378 -3.028 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -11.996 5.318 -2.653 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -12.946 4.132 -1.770 0.00 0.00 H +ATOM 17 N LEU A 2 -6.367 4.322 -1.982 0.00 0.00 N +ATOM 18 CA LEU A 2 -5.025 3.900 -2.419 0.00 0.00 C +ATOM 19 C LEU A 2 -4.243 3.096 -1.364 0.00 0.00 C +ATOM 20 O LEU A 2 -3.570 2.120 -1.698 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.224 5.145 -2.840 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.672 5.767 -4.178 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.897 7.063 -4.418 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -4.426 4.814 -5.354 0.00 0.00 C +ATOM 25 H LEU A 2 -6.595 5.288 -2.162 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.133 3.236 -3.278 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.329 5.887 -2.073 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.170 4.876 -2.925 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.734 6.008 -4.131 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.056 7.754 -3.588 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.832 6.853 -4.509 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.248 7.538 -5.334 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -3.421 4.393 -5.292 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.156 4.005 -5.345 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.526 5.349 -6.297 0.00 0.00 H +ATOM 36 N TYR A 3 -4.383 3.462 -0.084 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.757 2.758 1.034 0.00 0.00 C +ATOM 38 C TYR A 3 -4.175 1.279 1.120 0.00 0.00 C +ATOM 39 O TYR A 3 -3.350 0.425 1.441 0.00 0.00 O +ATOM 40 CB TYR A 3 -4.083 3.494 2.342 0.00 0.00 C +ATOM 41 CG TYR A 3 -3.021 3.296 3.403 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.860 4.092 3.363 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -3.175 2.317 4.405 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.846 3.906 4.317 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -2.162 2.132 5.366 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.992 2.923 5.318 0.00 0.00 C +ATOM 47 OH TYR A 3 0.011 2.729 6.217 0.00 0.00 O +ATOM 48 H TYR A 3 -4.910 4.298 0.109 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.678 2.791 0.884 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.169 4.543 2.134 0.00 0.00 H +ATOM 51 2HB TYR A 3 -5.054 3.166 2.719 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.741 4.850 2.600 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -4.067 1.705 4.436 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.050 4.506 4.296 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -2.281 1.396 6.145 0.00 0.00 H +ATOM 56 HH TYR A 3 -0.092 1.913 6.709 0.00 0.00 H +ATOM 57 N ILE A 4 -5.434 0.963 0.782 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.959 -0.407 0.754 0.00 0.00 C +ATOM 59 C ILE A 4 -5.234 -1.224 -0.323 0.00 0.00 C +ATOM 60 O ILE A 4 -4.791 -2.341 -0.056 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.489 -0.415 0.505 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.287 0.574 1.386 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.084 -1.834 0.645 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -7.998 0.474 2.893 0.00 0.00 C +ATOM 65 H ILE A 4 -6.027 1.699 0.419 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.758 -0.874 1.720 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.652 -0.114 -0.531 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.051 1.571 1.066 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -9.351 0.403 1.219 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.310 -2.600 0.624 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -8.633 -1.940 1.582 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.777 -2.015 -0.176 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.679 -0.532 3.164 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -7.214 1.179 3.165 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.902 0.718 3.451 0.00 0.00 H +ATOM 76 N GLN A 5 -5.082 -0.658 -1.529 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.322 -1.281 -2.612 0.00 0.00 C +ATOM 78 C GLN A 5 -2.862 -1.527 -2.213 0.00 0.00 C +ATOM 79 O GLN A 5 -2.351 -2.625 -2.425 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.396 -0.435 -3.898 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.293 -1.073 -4.971 0.00 0.00 C +ATOM 82 CD GLN A 5 -4.805 -0.728 -6.375 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.736 0.424 -6.768 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -4.436 -1.716 -7.169 0.00 0.00 N +ATOM 85 H GLN A 5 -5.436 0.282 -1.657 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.757 -2.263 -2.799 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.789 0.532 -3.651 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.390 -0.336 -4.310 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.281 -2.139 -4.848 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.316 -0.718 -4.849 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.461 -2.680 -6.883 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -4.101 -1.424 -8.072 0.00 0.00 H +ATOM 93 N TRP A 6 -2.207 -0.530 -1.604 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.837 -0.672 -1.104 0.00 0.00 C +ATOM 95 C TRP A 6 -0.705 -1.777 -0.043 0.00 0.00 C +ATOM 96 O TRP A 6 0.217 -2.593 -0.114 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.347 0.675 -0.564 0.00 0.00 C +ATOM 98 CG TRP A 6 1.007 0.616 0.072 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.190 0.555 -0.580 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.332 0.576 1.493 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.222 0.465 0.337 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.749 0.489 1.629 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.572 0.607 2.680 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.387 0.464 2.876 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.201 0.554 3.937 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.602 0.496 4.040 0.00 0.00 C +ATOM 107 H TRP A 6 -2.687 0.361 -1.494 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.192 -0.960 -1.936 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.308 1.372 -1.379 0.00 0.00 H +ATOM 110 2HB TRP A 6 -1.057 1.038 0.178 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.302 0.568 -1.656 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.213 0.428 0.099 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.505 0.677 2.615 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.464 0.415 2.929 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 0.600 0.564 4.832 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.067 0.481 5.014 0.00 0.00 H +ATOM 117 N LEU A 7 -1.635 -1.843 0.921 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.657 -2.918 1.915 0.00 0.00 C +ATOM 119 C LEU A 7 -1.850 -4.300 1.279 0.00 0.00 C +ATOM 120 O LEU A 7 -1.189 -5.245 1.705 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.734 -2.654 2.978 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.362 -1.573 4.010 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.534 -1.401 4.981 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.117 -1.940 4.827 0.00 0.00 C +ATOM 125 H LEU A 7 -2.351 -1.119 0.959 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.679 -2.957 2.392 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.631 -2.344 2.477 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.923 -3.583 3.518 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.187 -0.627 3.506 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.451 -1.204 4.427 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.657 -2.303 5.579 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.341 -0.562 5.647 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.237 -2.927 5.274 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.232 -1.942 4.191 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.962 -1.204 5.615 0.00 0.00 H +ATOM 136 N LYS A 8 -2.693 -4.415 0.243 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.927 -5.668 -0.497 0.00 0.00 C +ATOM 138 C LYS A 8 -1.653 -6.277 -1.088 0.00 0.00 C +ATOM 139 O LYS A 8 -1.528 -7.496 -1.107 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.973 -5.432 -1.602 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.211 -6.326 -1.434 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.475 -5.580 -1.872 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.711 -6.420 -1.540 0.00 0.00 C +ATOM 144 NZ LYS A 8 -8.949 -5.755 -2.006 0.00 0.00 N +ATOM 145 H LYS A 8 -3.216 -3.585 -0.025 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.295 -6.407 0.215 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.282 -4.405 -1.571 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.535 -5.617 -2.585 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.095 -7.207 -2.035 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.330 -6.615 -0.390 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.532 -4.641 -1.355 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.425 -5.375 -2.942 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.625 -7.376 -2.020 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.744 -6.556 -0.456 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.883 -4.758 -1.855 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -9.086 -5.926 -2.995 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -9.750 -6.109 -1.500 0.00 0.00 H +ATOM 158 N ASP A 9 -0.716 -5.437 -1.534 0.00 0.00 N +ATOM 159 CA ASP A 9 0.596 -5.859 -2.042 0.00 0.00 C +ATOM 160 C ASP A 9 1.481 -6.488 -0.941 0.00 0.00 C +ATOM 161 O ASP A 9 2.363 -7.284 -1.255 0.00 0.00 O +ATOM 162 CB ASP A 9 1.292 -4.644 -2.692 0.00 0.00 C +ATOM 163 CG ASP A 9 2.005 -4.972 -4.012 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.245 -4.797 -4.077 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.283 -5.311 -4.975 0.00 0.00 O +ATOM 166 H ASP A 9 -0.933 -4.447 -1.525 0.00 0.00 H +ATOM 167 HA ASP A 9 0.434 -6.621 -2.808 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.551 -3.893 -2.885 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.002 -4.208 -1.987 0.00 0.00 H +ATOM 170 N GLY A 10 1.219 -6.165 0.339 0.00 0.00 N +ATOM 171 CA GLY A 10 2.000 -6.593 1.510 0.00 0.00 C +ATOM 172 C GLY A 10 2.552 -5.441 2.368 0.00 0.00 C +ATOM 173 O GLY A 10 3.421 -5.669 3.222 0.00 0.00 O +ATOM 174 H GLY A 10 0.387 -5.611 0.509 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.359 -7.205 2.144 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.843 -7.202 1.190 0.00 0.00 H +ATOM 177 N GLY A 11 2.100 -4.200 2.127 0.00 0.00 N +ATOM 178 CA GLY A 11 2.565 -3.016 2.844 0.00 0.00 C +ATOM 179 C GLY A 11 4.085 -2.823 2.696 0.00 0.00 C +ATOM 180 O GLY A 11 4.601 -2.976 1.581 0.00 0.00 O +ATOM 181 H GLY A 11 1.469 -4.062 1.347 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.060 -2.134 2.448 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.283 -3.131 3.889 0.00 0.00 H +ATOM 184 N PRO A 12 4.824 -2.520 3.787 0.00 0.00 N +ATOM 185 CA PRO A 12 6.277 -2.307 3.754 0.00 0.00 C +ATOM 186 C PRO A 12 7.081 -3.495 3.201 0.00 0.00 C +ATOM 187 O PRO A 12 8.203 -3.312 2.737 0.00 0.00 O +ATOM 188 CB PRO A 12 6.699 -2.018 5.204 0.00 0.00 C +ATOM 189 CG PRO A 12 5.406 -1.656 5.929 0.00 0.00 C +ATOM 190 CD PRO A 12 4.342 -2.429 5.160 0.00 0.00 C +ATOM 191 HA PRO A 12 6.486 -1.429 3.142 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.148 -2.886 5.646 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.420 -1.199 5.254 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.441 -1.968 6.955 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.218 -0.586 5.838 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.219 -3.410 5.578 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.387 -1.911 5.231 0.00 0.00 H +ATOM 198 N SER A 13 6.509 -4.707 3.214 0.00 0.00 N +ATOM 199 CA SER A 13 7.159 -5.950 2.773 0.00 0.00 C +ATOM 200 C SER A 13 7.030 -6.225 1.263 0.00 0.00 C +ATOM 201 O SER A 13 7.213 -7.355 0.818 0.00 0.00 O +ATOM 202 CB SER A 13 6.698 -7.124 3.649 0.00 0.00 C +ATOM 203 OG SER A 13 5.331 -7.475 3.506 0.00 0.00 O +ATOM 204 H SER A 13 5.551 -4.762 3.529 0.00 0.00 H +ATOM 205 HA SER A 13 8.229 -5.841 2.949 0.00 0.00 H +ATOM 206 1HB SER A 13 7.291 -7.982 3.396 0.00 0.00 H +ATOM 207 2HB SER A 13 6.899 -6.873 4.691 0.00 0.00 H +ATOM 208 HG SER A 13 4.725 -6.704 3.495 0.00 0.00 H +ATOM 209 N SER A 14 6.763 -5.177 0.472 0.00 0.00 N +ATOM 210 CA SER A 14 6.427 -5.256 -0.961 0.00 0.00 C +ATOM 211 C SER A 14 7.393 -4.454 -1.849 0.00 0.00 C +ATOM 212 O SER A 14 7.103 -4.203 -3.018 0.00 0.00 O +ATOM 213 CB SER A 14 4.966 -4.835 -1.209 0.00 0.00 C +ATOM 214 OG SER A 14 4.155 -4.935 -0.060 0.00 0.00 O +ATOM 215 H SER A 14 6.628 -4.294 0.943 0.00 0.00 H +ATOM 216 HA SER A 14 6.505 -6.297 -1.276 0.00 0.00 H +ATOM 217 1HB SER A 14 4.957 -3.816 -1.545 0.00 0.00 H +ATOM 218 2HB SER A 14 4.553 -5.447 -2.010 0.00 0.00 H +ATOM 219 HG SER A 14 4.335 -4.165 0.528 0.00 0.00 H +ATOM 220 N GLY A 15 8.524 -3.999 -1.288 0.00 0.00 N +ATOM 221 CA GLY A 15 9.526 -3.183 -1.983 0.00 0.00 C +ATOM 222 C GLY A 15 9.030 -1.786 -2.384 0.00 0.00 C +ATOM 223 O GLY A 15 9.571 -1.198 -3.319 0.00 0.00 O +ATOM 224 H GLY A 15 8.702 -4.280 -0.334 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.392 -3.054 -1.335 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.855 -3.702 -2.884 0.00 0.00 H +ATOM 227 N ARG A 16 7.999 -1.262 -1.701 0.00 0.00 N +ATOM 228 CA ARG A 16 7.349 0.019 -2.007 0.00 0.00 C +ATOM 229 C ARG A 16 6.893 0.760 -0.731 0.00 0.00 C +ATOM 230 O ARG A 16 6.219 0.163 0.112 0.00 0.00 O +ATOM 231 CB ARG A 16 6.178 -0.191 -2.987 0.00 0.00 C +ATOM 232 CG ARG A 16 5.135 -1.203 -2.490 0.00 0.00 C +ATOM 233 CD ARG A 16 3.984 -1.428 -3.468 0.00 0.00 C +ATOM 234 NE ARG A 16 4.422 -2.198 -4.644 0.00 0.00 N +ATOM 235 CZ ARG A 16 3.985 -2.079 -5.889 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.095 -1.174 -6.226 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.443 -2.867 -6.829 0.00 0.00 N +ATOM 238 H ARG A 16 7.637 -1.808 -0.931 0.00 0.00 H +ATOM 239 HA ARG A 16 8.087 0.627 -2.526 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.690 0.752 -3.140 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.587 -0.548 -3.935 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.627 -2.142 -2.323 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.707 -0.869 -1.550 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.202 -1.967 -2.969 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.580 -0.460 -3.754 0.00 0.00 H +ATOM 246 HE ARG A 16 4.950 -3.039 -4.447 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 2.699 -0.623 -5.487 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 2.736 -1.119 -7.160 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.052 -3.623 -6.563 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.097 -2.799 -7.766 0.00 0.00 H +ATOM 251 N PRO A 17 7.222 2.058 -0.583 0.00 0.00 N +ATOM 252 CA PRO A 17 6.818 2.862 0.570 0.00 0.00 C +ATOM 253 C PRO A 17 5.308 3.175 0.566 0.00 0.00 C +ATOM 254 O PRO A 17 4.649 2.986 -0.461 0.00 0.00 O +ATOM 255 CB PRO A 17 7.668 4.136 0.467 0.00 0.00 C +ATOM 256 CG PRO A 17 7.903 4.302 -1.030 0.00 0.00 C +ATOM 257 CD PRO A 17 7.972 2.866 -1.536 0.00 0.00 C +ATOM 258 HA PRO A 17 7.067 2.330 1.490 0.00 0.00 H +ATOM 259 1HB PRO A 17 7.140 4.980 0.866 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.622 3.973 0.971 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.092 4.833 -1.490 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.828 4.841 -1.235 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.531 2.795 -2.511 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.009 2.530 -1.559 0.00 0.00 H +ATOM 265 N PRO A 18 4.746 3.667 1.690 0.00 0.00 N +ATOM 266 CA PRO A 18 3.331 4.024 1.786 0.00 0.00 C +ATOM 267 C PRO A 18 2.969 5.219 0.879 0.00 0.00 C +ATOM 268 O PRO A 18 3.752 6.167 0.773 0.00 0.00 O +ATOM 269 CB PRO A 18 3.081 4.342 3.265 0.00 0.00 C +ATOM 270 CG PRO A 18 4.457 4.738 3.793 0.00 0.00 C +ATOM 271 CD PRO A 18 5.409 3.874 2.971 0.00 0.00 C +ATOM 272 HA PRO A 18 2.737 3.158 1.511 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.385 5.152 3.369 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.740 3.441 3.778 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.646 5.781 3.629 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.557 4.542 4.860 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.346 4.379 2.831 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.554 2.911 3.463 0.00 0.00 H +ATOM 279 N PRO A 19 1.774 5.216 0.253 0.00 0.00 N +ATOM 280 CA PRO A 19 1.314 6.299 -0.608 0.00 0.00 C +ATOM 281 C PRO A 19 0.874 7.500 0.242 0.00 0.00 C +ATOM 282 O PRO A 19 -0.165 7.445 0.901 0.00 0.00 O +ATOM 283 CB PRO A 19 0.174 5.693 -1.433 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.436 4.648 -0.498 0.00 0.00 C +ATOM 285 CD PRO A 19 0.761 4.170 0.330 0.00 0.00 C +ATOM 286 HA PRO A 19 2.114 6.607 -1.283 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.549 6.442 -1.694 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.591 5.191 -2.307 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.187 5.087 0.130 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.891 3.829 -1.053 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.466 4.016 1.350 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.161 3.257 -0.105 0.00 0.00 H +ATOM 293 N SER A 20 1.692 8.561 0.244 0.00 0.00 N +ATOM 294 CA SER A 20 1.395 9.850 0.892 0.00 0.00 C +ATOM 295 C SER A 20 0.641 10.781 -0.057 0.00 0.00 C +ATOM 296 O SER A 20 1.191 11.035 -1.153 0.00 0.00 O +ATOM 297 CB SER A 20 2.675 10.542 1.362 0.00 0.00 C +ATOM 298 OG SER A 20 3.385 9.705 2.254 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.453 11.237 0.341 0.00 0.00 O +ATOM 300 H SER A 20 2.495 8.530 -0.365 0.00 0.00 H +ATOM 301 HA SER A 20 0.748 9.687 1.754 0.00 0.00 H +ATOM 302 1HB SER A 20 3.293 10.759 0.512 0.00 0.00 H +ATOM 303 2HB SER A 20 2.412 11.474 1.867 0.00 0.00 H +ATOM 304 HG SER A 20 3.522 8.859 1.817 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 18 +ATOM 1 N ASN A 1 -4.790 8.442 0.249 0.00 0.00 N +ATOM 2 CA ASN A 1 -5.686 7.485 -0.453 0.00 0.00 C +ATOM 3 C ASN A 1 -4.849 6.300 -0.965 0.00 0.00 C +ATOM 4 O ASN A 1 -3.693 6.208 -0.570 0.00 0.00 O +ATOM 5 CB ASN A 1 -6.519 8.196 -1.544 0.00 0.00 C +ATOM 6 CG ASN A 1 -7.833 7.461 -1.812 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -7.853 6.422 -2.450 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -8.951 7.930 -1.294 0.00 0.00 N +ATOM 9 1H ASN A 1 -4.244 7.939 0.938 0.00 0.00 H +ATOM 10 2H ASN A 1 -4.142 8.858 -0.406 0.00 0.00 H +ATOM 11 3H ASN A 1 -5.325 9.168 0.704 0.00 0.00 H +ATOM 12 HA ASN A 1 -6.383 7.080 0.282 0.00 0.00 H +ATOM 13 1HB ASN A 1 -6.738 9.195 -1.220 0.00 0.00 H +ATOM 14 2HB ASN A 1 -5.944 8.259 -2.469 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -9.019 8.786 -0.768 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -9.770 7.389 -1.524 0.00 0.00 H +ATOM 17 N LEU A 2 -5.405 5.376 -1.765 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.751 4.202 -2.378 0.00 0.00 C +ATOM 19 C LEU A 2 -4.144 3.169 -1.390 0.00 0.00 C +ATOM 20 O LEU A 2 -3.662 2.112 -1.794 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.724 4.701 -3.418 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.530 3.738 -4.610 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.310 4.230 -5.834 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.051 3.617 -4.978 0.00 0.00 C +ATOM 25 H LEU A 2 -6.367 5.541 -2.065 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.530 3.669 -2.924 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.059 5.647 -3.798 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.776 4.864 -2.910 0.00 0.00 H +ATOM 29 HG LEU A 2 -3.896 2.747 -4.351 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.363 4.348 -5.581 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.911 5.184 -6.179 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.230 3.497 -6.639 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -1.642 4.598 -5.223 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -1.504 3.192 -4.138 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -1.942 2.955 -5.838 0.00 0.00 H +ATOM 36 N TYR A 3 -4.199 3.443 -0.085 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.520 2.704 0.978 0.00 0.00 C +ATOM 38 C TYR A 3 -3.955 1.233 1.067 0.00 0.00 C +ATOM 39 O TYR A 3 -3.129 0.359 1.321 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.753 3.449 2.303 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.583 3.372 3.262 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.718 4.476 3.408 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.356 2.199 4.004 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.634 4.408 4.303 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.265 2.121 4.888 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.399 3.225 5.036 0.00 0.00 C +ATOM 47 OH TYR A 3 0.654 3.151 5.892 0.00 0.00 O +ATOM 48 H TYR A 3 -4.531 4.367 0.144 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.450 2.720 0.763 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.942 4.482 2.082 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.647 3.061 2.792 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.875 5.381 2.835 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.021 1.359 3.886 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.025 5.255 4.425 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.080 1.223 5.456 0.00 0.00 H +ATOM 56 HH TYR A 3 0.402 3.418 6.779 0.00 0.00 H +ATOM 57 N ILE A 4 -5.239 0.944 0.809 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.793 -0.418 0.803 0.00 0.00 C +ATOM 59 C ILE A 4 -5.137 -1.278 -0.294 0.00 0.00 C +ATOM 60 O ILE A 4 -4.777 -2.429 -0.051 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.337 -0.377 0.654 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.002 0.564 1.695 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.933 -1.789 0.786 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.600 1.821 1.047 0.00 0.00 C +ATOM 65 H ILE A 4 -5.855 1.722 0.628 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.561 -0.884 1.762 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.578 -0.019 -0.348 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.786 0.027 2.194 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.278 0.868 2.451 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.587 -2.427 -0.028 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.641 -2.235 1.738 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.023 -1.740 0.735 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.889 2.268 0.350 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.514 1.556 0.511 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.845 2.548 1.821 0.00 0.00 H +ATOM 76 N GLN A 5 -4.930 -0.702 -1.487 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.240 -1.358 -2.602 0.00 0.00 C +ATOM 78 C GLN A 5 -2.757 -1.594 -2.286 0.00 0.00 C +ATOM 79 O GLN A 5 -2.238 -2.664 -2.596 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.402 -0.514 -3.877 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.825 -0.583 -4.457 0.00 0.00 C +ATOM 82 CD GLN A 5 -6.299 0.780 -4.949 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.987 1.219 -6.043 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -7.068 1.504 -4.156 0.00 0.00 N +ATOM 85 H GLN A 5 -5.142 0.280 -1.577 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.690 -2.336 -2.774 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.176 0.508 -3.643 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.702 -0.864 -4.637 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.832 -1.272 -5.280 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.527 -0.953 -3.709 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.405 1.166 -3.274 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -7.384 2.362 -4.578 0.00 0.00 H +ATOM 93 N TRP A 6 -2.087 -0.635 -1.631 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.718 -0.822 -1.137 0.00 0.00 C +ATOM 95 C TRP A 6 -0.625 -1.935 -0.078 0.00 0.00 C +ATOM 96 O TRP A 6 0.234 -2.811 -0.181 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.169 0.510 -0.615 0.00 0.00 C +ATOM 98 CG TRP A 6 1.231 0.448 -0.086 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.357 0.390 -0.836 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.678 0.412 1.305 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.461 0.324 -0.009 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.102 0.345 1.317 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.032 0.434 2.562 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.852 0.322 2.500 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.773 0.390 3.759 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.179 0.343 3.732 0.00 0.00 C +ATOM 107 H TRP A 6 -2.569 0.238 -1.442 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.091 -1.137 -1.973 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.191 1.219 -1.420 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.817 0.881 0.178 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.382 0.389 -1.919 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.439 0.289 -0.304 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.045 0.494 2.594 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.931 0.270 2.447 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.262 0.416 4.711 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.741 0.324 4.655 0.00 0.00 H +ATOM 117 N LEU A 7 -1.535 -1.954 0.908 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.599 -3.028 1.905 0.00 0.00 C +ATOM 119 C LEU A 7 -1.859 -4.404 1.277 0.00 0.00 C +ATOM 120 O LEU A 7 -1.246 -5.374 1.719 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.653 -2.718 2.982 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.238 -1.612 3.971 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.451 -1.213 4.816 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.124 -2.058 4.928 0.00 0.00 C +ATOM 125 H LEU A 7 -2.199 -1.184 0.968 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.619 -3.101 2.378 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.556 -2.409 2.491 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.850 -3.627 3.553 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.894 -0.741 3.419 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.238 -0.826 4.169 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.830 -2.080 5.360 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.169 -0.442 5.533 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.484 -2.855 5.579 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.258 -2.415 4.373 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.808 -1.215 5.538 0.00 0.00 H +ATOM 136 N LYS A 8 -2.699 -4.500 0.231 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.961 -5.760 -0.490 0.00 0.00 C +ATOM 138 C LYS A 8 -1.682 -6.440 -0.992 0.00 0.00 C +ATOM 139 O LYS A 8 -1.618 -7.666 -1.015 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.959 -5.521 -1.641 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.419 -6.827 -2.322 0.00 0.00 C +ATOM 142 CD LYS A 8 -3.630 -7.226 -3.585 0.00 0.00 C +ATOM 143 CE LYS A 8 -4.103 -6.440 -4.814 0.00 0.00 C +ATOM 144 NZ LYS A 8 -3.568 -7.025 -6.066 0.00 0.00 N +ATOM 145 H LYS A 8 -3.215 -3.664 -0.036 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.413 -6.457 0.217 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.821 -5.019 -1.247 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.524 -4.853 -2.384 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.327 -7.623 -1.608 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.470 -6.727 -2.593 0.00 0.00 H +ATOM 151 1HD LYS A 8 -2.588 -7.026 -3.423 0.00 0.00 H +ATOM 152 2HD LYS A 8 -3.798 -8.290 -3.759 0.00 0.00 H +ATOM 153 1HE LYS A 8 -5.175 -6.459 -4.850 0.00 0.00 H +ATOM 154 2HE LYS A 8 -3.782 -5.399 -4.713 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -2.555 -6.986 -6.067 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -3.851 -7.992 -6.145 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -3.914 -6.519 -6.870 0.00 0.00 H +ATOM 158 N ASP A 9 -0.674 -5.659 -1.382 0.00 0.00 N +ATOM 159 CA ASP A 9 0.615 -6.165 -1.853 0.00 0.00 C +ATOM 160 C ASP A 9 1.571 -6.567 -0.705 0.00 0.00 C +ATOM 161 O ASP A 9 2.686 -7.014 -0.969 0.00 0.00 O +ATOM 162 CB ASP A 9 1.231 -5.098 -2.777 0.00 0.00 C +ATOM 163 CG ASP A 9 2.189 -5.711 -3.799 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.663 -6.222 -4.813 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.416 -5.646 -3.568 0.00 0.00 O +ATOM 166 H ASP A 9 -0.796 -4.654 -1.332 0.00 0.00 H +ATOM 167 HA ASP A 9 0.438 -7.059 -2.454 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.441 -4.595 -3.301 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.736 -4.335 -2.183 0.00 0.00 H +ATOM 170 N GLY A 10 1.188 -6.375 0.570 0.00 0.00 N +ATOM 171 CA GLY A 10 2.022 -6.675 1.745 0.00 0.00 C +ATOM 172 C GLY A 10 2.601 -5.455 2.475 0.00 0.00 C +ATOM 173 O GLY A 10 3.441 -5.624 3.363 0.00 0.00 O +ATOM 174 H GLY A 10 0.253 -6.015 0.741 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.412 -7.227 2.460 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.853 -7.319 1.458 0.00 0.00 H +ATOM 177 N GLY A 11 2.171 -4.233 2.128 0.00 0.00 N +ATOM 178 CA GLY A 11 2.595 -2.981 2.757 0.00 0.00 C +ATOM 179 C GLY A 11 4.126 -2.821 2.820 0.00 0.00 C +ATOM 180 O GLY A 11 4.764 -2.728 1.772 0.00 0.00 O +ATOM 181 H GLY A 11 1.579 -4.166 1.309 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.194 -2.157 2.171 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.155 -2.927 3.750 0.00 0.00 H +ATOM 184 N PRO A 12 4.762 -2.798 4.014 0.00 0.00 N +ATOM 185 CA PRO A 12 6.222 -2.711 4.128 0.00 0.00 C +ATOM 186 C PRO A 12 6.985 -3.820 3.384 0.00 0.00 C +ATOM 187 O PRO A 12 8.141 -3.624 3.019 0.00 0.00 O +ATOM 188 CB PRO A 12 6.536 -2.771 5.628 0.00 0.00 C +ATOM 189 CG PRO A 12 5.232 -2.347 6.300 0.00 0.00 C +ATOM 190 CD PRO A 12 4.159 -2.854 5.339 0.00 0.00 C +ATOM 191 HA PRO A 12 6.541 -1.745 3.735 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.809 -3.767 5.920 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.357 -2.104 5.890 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.131 -2.805 7.265 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.189 -1.259 6.357 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.884 -3.862 5.583 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.274 -2.223 5.414 0.00 0.00 H +ATOM 198 N SER A 13 6.349 -4.977 3.147 0.00 0.00 N +ATOM 199 CA SER A 13 6.954 -6.124 2.463 0.00 0.00 C +ATOM 200 C SER A 13 6.833 -6.062 0.928 0.00 0.00 C +ATOM 201 O SER A 13 7.261 -6.986 0.242 0.00 0.00 O +ATOM 202 CB SER A 13 6.368 -7.420 3.048 0.00 0.00 C +ATOM 203 OG SER A 13 7.404 -8.335 3.350 0.00 0.00 O +ATOM 204 H SER A 13 5.372 -5.058 3.425 0.00 0.00 H +ATOM 205 HA SER A 13 8.023 -6.116 2.682 0.00 0.00 H +ATOM 206 1HB SER A 13 5.826 -7.190 3.945 0.00 0.00 H +ATOM 207 2HB SER A 13 5.665 -7.873 2.347 0.00 0.00 H +ATOM 208 HG SER A 13 7.993 -7.938 3.997 0.00 0.00 H +ATOM 209 N SER A 14 6.285 -4.971 0.375 0.00 0.00 N +ATOM 210 CA SER A 14 5.996 -4.784 -1.057 0.00 0.00 C +ATOM 211 C SER A 14 7.108 -4.082 -1.850 0.00 0.00 C +ATOM 212 O SER A 14 6.920 -3.757 -3.019 0.00 0.00 O +ATOM 213 CB SER A 14 4.711 -3.968 -1.193 0.00 0.00 C +ATOM 214 OG SER A 14 3.682 -4.612 -0.483 0.00 0.00 O +ATOM 215 H SER A 14 5.894 -4.268 0.998 0.00 0.00 H +ATOM 216 HA SER A 14 5.825 -5.757 -1.521 0.00 0.00 H +ATOM 217 1HB SER A 14 4.865 -2.985 -0.791 0.00 0.00 H +ATOM 218 2HB SER A 14 4.431 -3.871 -2.241 0.00 0.00 H +ATOM 219 HG SER A 14 3.520 -5.494 -0.884 0.00 0.00 H +ATOM 220 N GLY A 15 8.256 -3.783 -1.226 0.00 0.00 N +ATOM 221 CA GLY A 15 9.384 -3.115 -1.892 0.00 0.00 C +ATOM 222 C GLY A 15 9.136 -1.644 -2.261 0.00 0.00 C +ATOM 223 O GLY A 15 9.906 -1.080 -3.037 0.00 0.00 O +ATOM 224 H GLY A 15 8.354 -4.097 -0.270 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.260 -3.161 -1.246 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.616 -3.654 -2.812 0.00 0.00 H +ATOM 227 N ARG A 16 8.071 -1.022 -1.733 0.00 0.00 N +ATOM 228 CA ARG A 16 7.620 0.333 -2.073 0.00 0.00 C +ATOM 229 C ARG A 16 7.039 1.042 -0.836 0.00 0.00 C +ATOM 230 O ARG A 16 6.265 0.407 -0.118 0.00 0.00 O +ATOM 231 CB ARG A 16 6.558 0.205 -3.182 0.00 0.00 C +ATOM 232 CG ARG A 16 6.146 1.562 -3.766 0.00 0.00 C +ATOM 233 CD ARG A 16 5.085 1.404 -4.861 0.00 0.00 C +ATOM 234 NE ARG A 16 5.279 2.408 -5.922 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.427 2.749 -6.879 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.214 2.253 -6.941 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.794 3.604 -7.805 0.00 0.00 N +ATOM 238 H ARG A 16 7.498 -1.558 -1.093 0.00 0.00 H +ATOM 239 HA ARG A 16 8.474 0.889 -2.457 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.958 -0.402 -3.972 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.678 -0.308 -2.787 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.747 2.173 -2.980 0.00 0.00 H +ATOM 243 2HG ARG A 16 7.035 2.033 -4.183 0.00 0.00 H +ATOM 244 1HD ARG A 16 5.162 0.422 -5.287 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.099 1.511 -4.406 0.00 0.00 H +ATOM 246 HE ARG A 16 6.183 2.845 -5.952 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 2.943 1.589 -6.236 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 2.578 2.515 -7.670 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.722 3.990 -7.801 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.153 3.860 -8.532 0.00 0.00 H +ATOM 251 N PRO A 17 7.339 2.336 -0.597 0.00 0.00 N +ATOM 252 CA PRO A 17 6.761 3.096 0.517 0.00 0.00 C +ATOM 253 C PRO A 17 5.236 3.291 0.376 0.00 0.00 C +ATOM 254 O PRO A 17 4.700 3.157 -0.728 0.00 0.00 O +ATOM 255 CB PRO A 17 7.502 4.441 0.515 0.00 0.00 C +ATOM 256 CG PRO A 17 7.925 4.615 -0.941 0.00 0.00 C +ATOM 257 CD PRO A 17 8.240 3.185 -1.367 0.00 0.00 C +ATOM 258 HA PRO A 17 6.966 2.571 1.450 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.852 5.237 0.823 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.390 4.367 1.144 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.129 5.028 -1.529 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.791 5.270 -1.039 0.00 0.00 H +ATOM 263 1HD PRO A 17 8.064 3.060 -2.418 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.272 2.943 -1.108 0.00 0.00 H +ATOM 265 N PRO A 18 4.530 3.634 1.472 0.00 0.00 N +ATOM 266 CA PRO A 18 3.086 3.848 1.449 0.00 0.00 C +ATOM 267 C PRO A 18 2.698 5.104 0.650 0.00 0.00 C +ATOM 268 O PRO A 18 3.420 6.101 0.687 0.00 0.00 O +ATOM 269 CB PRO A 18 2.662 3.983 2.913 0.00 0.00 C +ATOM 270 CG PRO A 18 3.925 4.461 3.623 0.00 0.00 C +ATOM 271 CD PRO A 18 5.046 3.799 2.825 0.00 0.00 C +ATOM 272 HA PRO A 18 2.610 2.974 1.015 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.872 4.701 3.016 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.373 3.010 3.303 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.006 5.530 3.586 0.00 0.00 H +ATOM 276 2HG PRO A 18 3.940 4.157 4.670 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.918 4.424 2.818 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.270 2.821 3.248 0.00 0.00 H +ATOM 279 N PRO A 19 1.537 5.098 -0.033 0.00 0.00 N +ATOM 280 CA PRO A 19 1.010 6.280 -0.696 0.00 0.00 C +ATOM 281 C PRO A 19 0.436 7.257 0.342 0.00 0.00 C +ATOM 282 O PRO A 19 -0.227 6.870 1.309 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.043 5.743 -1.671 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.579 4.494 -0.969 0.00 0.00 C +ATOM 285 CD PRO A 19 0.631 3.970 -0.196 0.00 0.00 C +ATOM 286 HA PRO A 19 1.802 6.778 -1.258 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.825 6.462 -1.825 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.453 5.447 -2.598 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.381 4.744 -0.302 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.944 3.756 -1.684 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.326 3.598 0.763 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.130 3.194 -0.777 0.00 0.00 H +ATOM 293 N SER A 20 0.706 8.552 0.169 0.00 0.00 N +ATOM 294 CA SER A 20 0.162 9.640 0.988 0.00 0.00 C +ATOM 295 C SER A 20 -0.066 10.872 0.126 0.00 0.00 C +ATOM 296 O SER A 20 0.918 11.303 -0.513 0.00 0.00 O +ATOM 297 CB SER A 20 1.092 9.931 2.166 0.00 0.00 C +ATOM 298 OG SER A 20 1.001 8.805 3.014 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.239 11.304 0.086 0.00 0.00 O +ATOM 300 H SER A 20 1.318 8.846 -0.582 0.00 0.00 H +ATOM 301 HA SER A 20 -0.816 9.367 1.381 0.00 0.00 H +ATOM 302 1HB SER A 20 2.100 10.060 1.823 0.00 0.00 H +ATOM 303 2HB SER A 20 0.767 10.828 2.696 0.00 0.00 H +ATOM 304 HG SER A 20 0.609 8.093 2.479 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 19 +ATOM 1 N ASN A 1 -4.711 8.428 -0.250 0.00 0.00 N +ATOM 2 CA ASN A 1 -5.482 7.459 -1.069 0.00 0.00 C +ATOM 3 C ASN A 1 -4.637 6.216 -1.384 0.00 0.00 C +ATOM 4 O ASN A 1 -3.508 6.151 -0.914 0.00 0.00 O +ATOM 5 CB ASN A 1 -6.058 8.123 -2.332 0.00 0.00 C +ATOM 6 CG ASN A 1 -7.308 7.368 -2.763 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -8.229 7.219 -1.982 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -7.347 6.788 -3.948 0.00 0.00 N +ATOM 9 1H ASN A 1 -4.276 7.945 0.525 0.00 0.00 H +ATOM 10 2H ASN A 1 -3.969 8.859 -0.792 0.00 0.00 H +ATOM 11 3H ASN A 1 -5.313 9.159 0.105 0.00 0.00 H +ATOM 12 HA ASN A 1 -6.326 7.121 -0.463 0.00 0.00 H +ATOM 13 1HB ASN A 1 -6.310 9.144 -2.119 0.00 0.00 H +ATOM 14 2HB ASN A 1 -5.314 8.139 -3.131 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -6.635 6.892 -4.653 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -8.230 6.344 -4.151 0.00 0.00 H +ATOM 17 N LEU A 2 -5.165 5.225 -2.127 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.498 3.973 -2.561 0.00 0.00 C +ATOM 19 C LEU A 2 -3.959 3.039 -1.451 0.00 0.00 C +ATOM 20 O LEU A 2 -3.474 1.944 -1.745 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.435 4.298 -3.639 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.002 4.275 -5.079 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.796 5.613 -5.794 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.342 3.164 -5.900 0.00 0.00 C +ATOM 25 H LEU A 2 -6.111 5.349 -2.465 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.264 3.362 -3.041 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.039 5.276 -3.444 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.623 3.573 -3.570 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.074 4.082 -5.054 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.302 6.407 -5.250 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.731 5.843 -5.862 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.209 5.556 -6.802 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.271 3.350 -5.990 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -3.499 2.202 -5.413 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.782 3.126 -6.897 0.00 0.00 H +ATOM 36 N TYR A 3 -4.101 3.418 -0.179 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.547 2.721 0.982 0.00 0.00 C +ATOM 38 C TYR A 3 -4.035 1.268 1.120 0.00 0.00 C +ATOM 39 O TYR A 3 -3.246 0.381 1.446 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.866 3.547 2.234 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.864 3.337 3.348 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.722 4.158 3.414 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -3.059 2.315 4.297 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.764 3.952 4.424 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -2.106 2.111 5.311 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.953 2.921 5.370 0.00 0.00 C +ATOM 47 OH TYR A 3 -0.015 2.685 6.326 0.00 0.00 O +ATOM 48 H TYR A 3 -4.435 4.356 -0.036 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.464 2.693 0.862 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.869 4.586 1.967 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.870 3.311 2.589 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.570 4.949 2.689 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.934 1.680 4.247 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.103 4.591 4.475 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -2.233 1.337 6.051 0.00 0.00 H +ATOM 56 HH TYR A 3 0.804 3.144 6.139 0.00 0.00 H +ATOM 57 N ILE A 4 -5.316 1.007 0.820 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.898 -0.342 0.812 0.00 0.00 C +ATOM 59 C ILE A 4 -5.161 -1.235 -0.200 0.00 0.00 C +ATOM 60 O ILE A 4 -4.707 -2.324 0.147 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.424 -0.311 0.536 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.202 0.658 1.464 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.008 -1.726 0.703 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.481 2.022 0.816 0.00 0.00 C +ATOM 65 H ILE A 4 -5.901 1.792 0.575 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.743 -0.778 1.800 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.593 -0.010 -0.501 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.140 0.204 1.722 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.659 0.801 2.399 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.552 -2.414 -0.005 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.831 -2.089 1.719 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.082 -1.713 0.513 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.555 2.566 0.645 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.003 1.881 -0.131 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.118 2.609 1.477 0.00 0.00 H +ATOM 76 N GLN A 5 -5.005 -0.767 -1.445 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.266 -1.471 -2.496 0.00 0.00 C +ATOM 78 C GLN A 5 -2.794 -1.703 -2.131 0.00 0.00 C +ATOM 79 O GLN A 5 -2.290 -2.798 -2.375 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.404 -0.714 -3.831 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.577 -1.242 -4.674 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.172 -2.342 -5.657 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.444 -2.266 -6.841 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -4.511 -3.407 -5.235 0.00 0.00 N +ATOM 85 H GLN A 5 -5.339 0.164 -1.640 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.705 -2.459 -2.606 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.567 0.326 -3.624 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.485 -0.802 -4.412 0.00 0.00 H +ATOM 89 1HG GLN A 5 -6.322 -1.636 -4.010 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.980 -0.410 -5.253 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.079 -3.463 -4.327 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -4.196 -3.952 -6.023 0.00 0.00 H +ATOM 93 N TRP A 6 -2.131 -0.715 -1.517 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.771 -0.866 -0.989 0.00 0.00 C +ATOM 95 C TRP A 6 -0.676 -1.954 0.096 0.00 0.00 C +ATOM 96 O TRP A 6 0.217 -2.804 0.034 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.278 0.492 -0.481 0.00 0.00 C +ATOM 98 CG TRP A 6 1.076 0.483 0.156 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.258 0.449 -0.500 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.409 0.516 1.577 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.295 0.438 0.415 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.830 0.499 1.706 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.660 0.554 2.771 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.479 0.537 2.947 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.299 0.565 4.026 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.703 0.571 4.116 0.00 0.00 C +ATOM 107 H TRP A 6 -2.609 0.176 -1.403 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.117 -1.181 -1.802 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.248 1.167 -1.315 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.989 0.883 0.245 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.367 0.437 -1.575 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.290 0.412 0.180 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.419 0.574 2.716 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.558 0.526 2.988 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 0.705 0.572 4.929 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.181 0.592 5.084 0.00 0.00 H +ATOM 117 N LEU A 7 -1.612 -1.982 1.056 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.688 -3.061 2.044 0.00 0.00 C +ATOM 119 C LEU A 7 -1.950 -4.430 1.398 0.00 0.00 C +ATOM 120 O LEU A 7 -1.263 -5.384 1.758 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.739 -2.752 3.125 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.322 -1.677 4.150 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.497 -1.435 5.104 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.106 -2.095 4.988 0.00 0.00 C +ATOM 125 H LEU A 7 -2.302 -1.233 1.088 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.712 -3.148 2.521 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.632 -2.416 2.635 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.947 -3.672 3.673 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.094 -0.746 3.637 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.353 -1.060 4.542 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.770 -2.364 5.605 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.222 -0.700 5.856 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.285 -3.061 5.457 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.217 -2.154 4.362 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.919 -1.351 5.762 0.00 0.00 H +ATOM 136 N LYS A 8 -2.879 -4.534 0.430 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.176 -5.792 -0.293 0.00 0.00 C +ATOM 138 C LYS A 8 -1.940 -6.427 -0.932 0.00 0.00 C +ATOM 139 O LYS A 8 -1.861 -7.649 -0.988 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.234 -5.580 -1.389 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.650 -5.363 -0.841 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.641 -4.855 -1.906 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.271 -5.959 -2.767 0.00 0.00 C +ATOM 144 NZ LYS A 8 -6.386 -6.423 -3.863 0.00 0.00 N +ATOM 145 H LYS A 8 -3.427 -3.700 0.224 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.550 -6.525 0.424 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.957 -4.718 -1.966 0.00 0.00 H +ATOM 148 2HB LYS A 8 -4.252 -6.467 -2.023 0.00 0.00 H +ATOM 149 1HG LYS A 8 -6.013 -6.296 -0.455 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.609 -4.626 -0.042 0.00 0.00 H +ATOM 151 1HD LYS A 8 -7.431 -4.329 -1.405 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.171 -4.105 -2.541 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.499 -6.796 -2.135 0.00 0.00 H +ATOM 154 2HE LYS A 8 -8.193 -5.560 -3.199 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -6.162 -5.656 -4.484 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -5.528 -6.807 -3.488 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -6.850 -7.145 -4.401 0.00 0.00 H +ATOM 158 N ASP A 9 -1.006 -5.612 -1.428 0.00 0.00 N +ATOM 159 CA ASP A 9 0.249 -6.089 -2.012 0.00 0.00 C +ATOM 160 C ASP A 9 1.195 -6.700 -0.957 0.00 0.00 C +ATOM 161 O ASP A 9 1.906 -7.655 -1.257 0.00 0.00 O +ATOM 162 CB ASP A 9 0.908 -4.913 -2.751 0.00 0.00 C +ATOM 163 CG ASP A 9 1.926 -5.376 -3.792 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.079 -5.637 -3.380 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.557 -5.417 -4.986 0.00 0.00 O +ATOM 166 H ASP A 9 -1.181 -4.614 -1.403 0.00 0.00 H +ATOM 167 HA ASP A 9 0.021 -6.868 -2.743 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.144 -4.345 -3.245 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.399 -4.255 -2.030 0.00 0.00 H +ATOM 170 N GLY A 10 1.167 -6.180 0.281 0.00 0.00 N +ATOM 171 CA GLY A 10 2.093 -6.534 1.364 0.00 0.00 C +ATOM 172 C GLY A 10 2.641 -5.339 2.162 0.00 0.00 C +ATOM 173 O GLY A 10 3.484 -5.529 3.044 0.00 0.00 O +ATOM 174 H GLY A 10 0.409 -5.539 0.486 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.576 -7.194 2.060 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.946 -7.076 0.955 0.00 0.00 H +ATOM 177 N GLY A 11 2.182 -4.110 1.882 0.00 0.00 N +ATOM 178 CA GLY A 11 2.599 -2.906 2.599 0.00 0.00 C +ATOM 179 C GLY A 11 4.124 -2.698 2.547 0.00 0.00 C +ATOM 180 O GLY A 11 4.696 -2.700 1.453 0.00 0.00 O +ATOM 181 H GLY A 11 1.532 -3.983 1.113 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.116 -2.047 2.140 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.249 -2.984 3.627 0.00 0.00 H +ATOM 184 N PRO A 12 4.822 -2.540 3.693 0.00 0.00 N +ATOM 185 CA PRO A 12 6.282 -2.419 3.719 0.00 0.00 C +ATOM 186 C PRO A 12 7.024 -3.621 3.110 0.00 0.00 C +ATOM 187 O PRO A 12 8.145 -3.463 2.631 0.00 0.00 O +ATOM 188 CB PRO A 12 6.668 -2.252 5.194 0.00 0.00 C +ATOM 189 CG PRO A 12 5.381 -1.788 5.872 0.00 0.00 C +ATOM 190 CD PRO A 12 4.292 -2.472 5.049 0.00 0.00 C +ATOM 191 HA PRO A 12 6.564 -1.518 3.171 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.000 -3.185 5.608 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.469 -1.522 5.318 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.348 -2.107 6.896 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.287 -0.705 5.777 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.098 -3.457 5.427 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.371 -1.895 5.104 0.00 0.00 H +ATOM 198 N SER A 13 6.411 -4.816 3.098 0.00 0.00 N +ATOM 199 CA SER A 13 7.038 -6.057 2.614 0.00 0.00 C +ATOM 200 C SER A 13 7.028 -6.197 1.080 0.00 0.00 C +ATOM 201 O SER A 13 7.416 -7.241 0.562 0.00 0.00 O +ATOM 202 CB SER A 13 6.390 -7.277 3.283 0.00 0.00 C +ATOM 203 OG SER A 13 6.567 -7.211 4.686 0.00 0.00 O +ATOM 204 H SER A 13 5.434 -4.862 3.375 0.00 0.00 H +ATOM 205 HA SER A 13 8.085 -6.051 2.913 0.00 0.00 H +ATOM 206 1HB SER A 13 5.341 -7.291 3.057 0.00 0.00 H +ATOM 207 2HB SER A 13 6.867 -8.188 2.919 0.00 0.00 H +ATOM 208 HG SER A 13 6.098 -6.440 5.015 0.00 0.00 H +ATOM 209 N SER A 14 6.620 -5.147 0.358 0.00 0.00 N +ATOM 210 CA SER A 14 6.465 -5.116 -1.104 0.00 0.00 C +ATOM 211 C SER A 14 7.520 -4.277 -1.839 0.00 0.00 C +ATOM 212 O SER A 14 7.383 -4.035 -3.039 0.00 0.00 O +ATOM 213 CB SER A 14 5.072 -4.582 -1.431 0.00 0.00 C +ATOM 214 OG SER A 14 4.112 -5.580 -1.231 0.00 0.00 O +ATOM 215 H SER A 14 6.276 -4.349 0.876 0.00 0.00 H +ATOM 216 HA SER A 14 6.531 -6.130 -1.502 0.00 0.00 H +ATOM 217 1HB SER A 14 4.854 -3.747 -0.793 0.00 0.00 H +ATOM 218 2HB SER A 14 5.022 -4.287 -2.477 0.00 0.00 H +ATOM 219 HG SER A 14 3.651 -5.690 -2.148 0.00 0.00 H +ATOM 220 N GLY A 15 8.549 -3.780 -1.139 0.00 0.00 N +ATOM 221 CA GLY A 15 9.587 -2.933 -1.741 0.00 0.00 C +ATOM 222 C GLY A 15 9.096 -1.536 -2.151 0.00 0.00 C +ATOM 223 O GLY A 15 9.726 -0.894 -2.987 0.00 0.00 O +ATOM 224 H GLY A 15 8.618 -4.033 -0.161 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.410 -2.813 -1.039 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.975 -3.426 -2.634 0.00 0.00 H +ATOM 227 N ARG A 16 7.969 -1.073 -1.587 0.00 0.00 N +ATOM 228 CA ARG A 16 7.285 0.177 -1.944 0.00 0.00 C +ATOM 229 C ARG A 16 6.807 0.935 -0.691 0.00 0.00 C +ATOM 230 O ARG A 16 6.125 0.336 0.145 0.00 0.00 O +ATOM 231 CB ARG A 16 6.131 -0.110 -2.930 0.00 0.00 C +ATOM 232 CG ARG A 16 5.136 -1.187 -2.454 0.00 0.00 C +ATOM 233 CD ARG A 16 3.995 -1.438 -3.443 0.00 0.00 C +ATOM 234 NE ARG A 16 4.473 -2.075 -4.685 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.016 -1.881 -5.916 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.041 -1.038 -6.174 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.543 -2.530 -6.926 0.00 0.00 N +ATOM 238 H ARG A 16 7.539 -1.660 -0.885 0.00 0.00 H +ATOM 239 HA ARG A 16 8.004 0.797 -2.475 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.588 0.802 -3.085 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.569 -0.435 -3.874 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.671 -2.106 -2.312 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.696 -0.891 -1.507 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.270 -2.080 -2.981 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.510 -0.485 -3.654 0.00 0.00 H +ATOM 246 HE ARG A 16 5.199 -2.769 -4.574 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 2.612 -0.568 -5.400 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 2.697 -0.911 -7.106 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.261 -3.213 -6.759 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.184 -2.398 -7.852 0.00 0.00 H +ATOM 251 N PRO A 17 7.131 2.235 -0.537 0.00 0.00 N +ATOM 252 CA PRO A 17 6.706 3.032 0.616 0.00 0.00 C +ATOM 253 C PRO A 17 5.183 3.290 0.607 0.00 0.00 C +ATOM 254 O PRO A 17 4.540 3.099 -0.429 0.00 0.00 O +ATOM 255 CB PRO A 17 7.514 4.332 0.509 0.00 0.00 C +ATOM 256 CG PRO A 17 7.726 4.499 -0.992 0.00 0.00 C +ATOM 257 CD PRO A 17 7.879 3.059 -1.478 0.00 0.00 C +ATOM 258 HA PRO A 17 6.972 2.511 1.537 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.963 5.160 0.913 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.479 4.197 1.000 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.880 4.973 -1.451 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.611 5.095 -1.213 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.476 2.955 -2.467 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.931 2.771 -1.454 0.00 0.00 H +ATOM 265 N PRO A 18 4.594 3.738 1.736 0.00 0.00 N +ATOM 266 CA PRO A 18 3.165 4.041 1.816 0.00 0.00 C +ATOM 267 C PRO A 18 2.783 5.192 0.871 0.00 0.00 C +ATOM 268 O PRO A 18 3.492 6.199 0.824 0.00 0.00 O +ATOM 269 CB PRO A 18 2.894 4.397 3.281 0.00 0.00 C +ATOM 270 CG PRO A 18 4.254 4.847 3.808 0.00 0.00 C +ATOM 271 CD PRO A 18 5.233 3.978 3.023 0.00 0.00 C +ATOM 272 HA PRO A 18 2.603 3.146 1.565 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.175 5.190 3.354 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.571 3.506 3.818 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.419 5.889 3.610 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.347 4.691 4.883 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.166 4.491 2.889 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.375 3.027 3.537 0.00 0.00 H +ATOM 279 N PRO A 19 1.669 5.075 0.121 0.00 0.00 N +ATOM 280 CA PRO A 19 1.193 6.145 -0.742 0.00 0.00 C +ATOM 281 C PRO A 19 0.412 7.189 0.066 0.00 0.00 C +ATOM 282 O PRO A 19 -0.366 6.839 0.959 0.00 0.00 O +ATOM 283 CB PRO A 19 0.286 5.445 -1.758 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.334 4.311 -0.945 0.00 0.00 C +ATOM 285 CD PRO A 19 0.787 3.922 0.021 0.00 0.00 C +ATOM 286 HA PRO A 19 2.027 6.623 -1.257 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.469 6.113 -2.125 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.899 5.024 -2.558 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.202 4.649 -0.412 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.632 3.479 -1.581 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.379 3.683 0.984 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.349 3.085 -0.391 0.00 0.00 H +ATOM 293 N SER A 20 0.545 8.452 -0.361 0.00 0.00 N +ATOM 294 CA SER A 20 -0.267 9.613 0.032 0.00 0.00 C +ATOM 295 C SER A 20 0.099 10.270 1.361 0.00 0.00 C +ATOM 296 O SER A 20 1.001 9.777 2.071 0.00 0.00 O +ATOM 297 CB SER A 20 -1.745 9.233 0.059 0.00 0.00 C +ATOM 298 OG SER A 20 -2.498 10.392 -0.203 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.596 11.284 1.612 0.00 0.00 O +ATOM 300 H SER A 20 1.265 8.618 -1.047 0.00 0.00 H +ATOM 301 HA SER A 20 -0.121 10.385 -0.723 0.00 0.00 H +ATOM 302 1HB SER A 20 -1.944 8.492 -0.691 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.994 8.859 1.055 0.00 0.00 H +ATOM 304 HG SER A 20 -2.028 11.083 0.314 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 20 +ATOM 1 N ASN A 1 -8.559 6.374 -1.226 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.539 6.170 -0.168 0.00 0.00 C +ATOM 3 C ASN A 1 -6.191 5.649 -0.655 0.00 0.00 C +ATOM 4 O ASN A 1 -5.194 6.053 -0.072 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.062 5.285 0.966 0.00 0.00 C +ATOM 6 CG ASN A 1 -8.992 6.102 1.840 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.159 6.243 1.517 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -8.488 6.730 2.886 0.00 0.00 N +ATOM 9 1H ASN A 1 -8.207 6.992 -1.945 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.827 5.491 -1.639 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.389 6.786 -0.814 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.316 7.145 0.269 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.596 4.450 0.554 0.00 0.00 H +ATOM 14 2HB ASN A 1 -7.238 4.906 1.572 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -7.518 6.672 3.157 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -9.151 7.262 3.426 0.00 0.00 H +ATOM 17 N LEU A 2 -6.126 4.735 -1.642 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.891 4.125 -2.180 0.00 0.00 C +ATOM 19 C LEU A 2 -4.153 3.176 -1.204 0.00 0.00 C +ATOM 20 O LEU A 2 -3.597 2.164 -1.636 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.962 5.228 -2.759 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.563 5.018 -4.237 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.974 6.221 -5.092 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.055 4.808 -4.389 0.00 0.00 C +ATOM 25 H LEU A 2 -6.972 4.387 -2.062 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.209 3.487 -3.002 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.470 6.170 -2.679 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.068 5.296 -2.140 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.066 4.139 -4.638 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.024 6.461 -4.923 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.363 7.091 -4.843 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.839 5.983 -6.147 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -1.524 5.712 -4.089 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -1.743 3.967 -3.772 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -1.820 4.596 -5.432 0.00 0.00 H +ATOM 36 N TYR A 3 -4.202 3.452 0.106 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.575 2.669 1.174 0.00 0.00 C +ATOM 38 C TYR A 3 -4.020 1.200 1.203 0.00 0.00 C +ATOM 39 O TYR A 3 -3.195 0.322 1.447 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.843 3.340 2.530 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.673 3.212 3.480 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.689 4.217 3.496 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.543 2.088 4.320 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.574 4.112 4.346 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.427 1.974 5.172 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.438 2.983 5.184 0.00 0.00 C +ATOM 47 OH TYR A 3 0.646 2.858 5.993 0.00 0.00 O +ATOM 48 H TYR A 3 -4.568 4.369 0.345 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.498 2.677 1.000 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.041 4.382 2.366 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.737 2.911 2.988 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.794 5.082 2.856 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.296 1.314 4.305 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.166 4.899 4.359 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.307 1.120 5.821 0.00 0.00 H +ATOM 56 HH TYR A 3 1.278 3.565 5.851 0.00 0.00 H +ATOM 57 N ILE A 4 -5.303 0.928 0.911 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.843 -0.436 0.816 0.00 0.00 C +ATOM 59 C ILE A 4 -5.054 -1.237 -0.220 0.00 0.00 C +ATOM 60 O ILE A 4 -4.584 -2.327 0.084 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.357 -0.449 0.483 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.184 0.429 1.452 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.909 -1.886 0.515 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.655 1.719 0.779 0.00 0.00 C +ATOM 65 H ILE A 4 -5.915 1.709 0.742 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.704 -0.925 1.782 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.493 -0.077 -0.536 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.042 -0.126 1.779 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.595 0.676 2.336 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.390 -2.519 -0.204 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.795 -2.311 1.514 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.968 -1.881 0.251 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.807 2.246 0.343 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.375 1.482 -0.007 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.141 2.352 1.521 0.00 0.00 H +ATOM 76 N GLN A 5 -4.882 -0.682 -1.427 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.187 -1.318 -2.543 0.00 0.00 C +ATOM 78 C GLN A 5 -2.715 -1.599 -2.195 0.00 0.00 C +ATOM 79 O GLN A 5 -2.236 -2.714 -2.401 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.359 -0.428 -3.793 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.481 -1.221 -5.109 0.00 0.00 C +ATOM 82 CD GLN A 5 -3.302 -1.006 -6.054 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -2.144 -1.029 -5.666 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -3.557 -0.777 -7.329 0.00 0.00 N +ATOM 85 H GLN A 5 -5.224 0.258 -1.562 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.671 -2.279 -2.721 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.247 0.161 -3.669 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.541 0.293 -3.855 0.00 0.00 H +ATOM 89 1HG GLN A 5 -4.542 -2.266 -4.873 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.394 -0.897 -5.613 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.491 -0.741 -7.700 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -2.737 -0.694 -7.906 0.00 0.00 H +ATOM 93 N TRP A 6 -2.029 -0.624 -1.578 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.665 -0.788 -1.058 0.00 0.00 C +ATOM 95 C TRP A 6 -0.556 -1.893 0.011 0.00 0.00 C +ATOM 96 O TRP A 6 0.331 -2.745 -0.077 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.159 0.559 -0.523 0.00 0.00 C +ATOM 98 CG TRP A 6 1.225 0.523 0.051 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.372 0.435 -0.663 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.630 0.513 1.454 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.451 0.386 0.196 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.054 0.444 1.511 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.945 0.537 2.688 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.767 0.433 2.717 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.648 0.497 3.907 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.054 0.465 3.925 0.00 0.00 C +ATOM 107 H TRP A 6 -2.509 0.259 -1.436 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.018 -1.090 -1.882 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.168 1.265 -1.331 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.840 0.912 0.252 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.432 0.386 -1.739 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.433 0.309 -0.087 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.135 0.584 2.691 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.847 0.386 2.702 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.107 0.502 4.843 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.581 0.457 4.869 0.00 0.00 H +ATOM 117 N LEU A 7 -1.463 -1.916 0.999 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.525 -3.000 1.984 0.00 0.00 C +ATOM 119 C LEU A 7 -1.822 -4.357 1.333 0.00 0.00 C +ATOM 120 O LEU A 7 -1.178 -5.338 1.700 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.557 -2.691 3.086 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.097 -1.666 4.139 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.252 -1.407 5.113 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.893 -2.152 4.958 0.00 0.00 C +ATOM 125 H LEU A 7 -2.157 -1.171 1.046 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.541 -3.101 2.440 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.443 -2.310 2.615 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.794 -3.620 3.606 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.835 -0.730 3.648 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.113 -1.019 4.569 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.533 -2.334 5.614 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.951 -0.680 5.866 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.114 -3.120 5.409 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.012 -2.241 4.326 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.668 -1.436 5.747 0.00 0.00 H +ATOM 136 N LYS A 8 -2.738 -4.419 0.353 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.104 -5.647 -0.376 0.00 0.00 C +ATOM 138 C LYS A 8 -1.891 -6.322 -1.027 0.00 0.00 C +ATOM 139 O LYS A 8 -1.817 -7.547 -1.040 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.205 -5.340 -1.415 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.335 -6.380 -1.451 0.00 0.00 C +ATOM 142 CD LYS A 8 -4.972 -7.663 -2.207 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.125 -8.664 -2.114 0.00 0.00 C +ATOM 144 NZ LYS A 8 -5.771 -9.943 -2.773 0.00 0.00 N +ATOM 145 H LYS A 8 -3.250 -3.563 0.145 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.490 -6.354 0.358 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.633 -4.384 -1.181 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.770 -5.224 -2.411 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.586 -6.642 -0.441 0.00 0.00 H +ATOM 150 2HG LYS A 8 -6.197 -5.928 -1.944 0.00 0.00 H +ATOM 151 1HD LYS A 8 -4.786 -7.429 -3.237 0.00 0.00 H +ATOM 152 2HD LYS A 8 -4.085 -8.111 -1.765 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.345 -8.851 -1.081 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.012 -8.228 -2.581 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -5.589 -9.789 -3.756 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -4.937 -10.327 -2.348 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -6.525 -10.610 -2.677 0.00 0.00 H +ATOM 158 N ASP A 9 -0.939 -5.531 -1.526 0.00 0.00 N +ATOM 159 CA ASP A 9 0.321 -6.020 -2.093 0.00 0.00 C +ATOM 160 C ASP A 9 1.283 -6.607 -1.037 0.00 0.00 C +ATOM 161 O ASP A 9 2.139 -7.419 -1.377 0.00 0.00 O +ATOM 162 CB ASP A 9 0.989 -4.858 -2.850 0.00 0.00 C +ATOM 163 CG ASP A 9 1.796 -5.335 -4.057 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.019 -5.073 -4.070 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.163 -5.904 -4.975 0.00 0.00 O +ATOM 166 H ASP A 9 -1.118 -4.533 -1.538 0.00 0.00 H +ATOM 167 HA ASP A 9 0.090 -6.813 -2.809 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.226 -4.185 -3.190 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.629 -4.297 -2.165 0.00 0.00 H +ATOM 170 N GLY A 10 1.133 -6.217 0.240 0.00 0.00 N +ATOM 171 CA GLY A 10 2.010 -6.592 1.355 0.00 0.00 C +ATOM 172 C GLY A 10 2.573 -5.411 2.161 0.00 0.00 C +ATOM 173 O GLY A 10 3.398 -5.625 3.054 0.00 0.00 O +ATOM 174 H GLY A 10 0.303 -5.675 0.461 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.445 -7.224 2.039 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.855 -7.173 0.983 0.00 0.00 H +ATOM 177 N GLY A 11 2.155 -4.169 1.875 0.00 0.00 N +ATOM 178 CA GLY A 11 2.637 -2.966 2.554 0.00 0.00 C +ATOM 179 C GLY A 11 4.173 -2.844 2.510 0.00 0.00 C +ATOM 180 O GLY A 11 4.743 -2.864 1.419 0.00 0.00 O +ATOM 181 H GLY A 11 1.499 -4.036 1.112 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.212 -2.097 2.057 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.276 -2.984 3.579 0.00 0.00 H +ATOM 184 N PRO A 12 4.876 -2.729 3.659 0.00 0.00 N +ATOM 185 CA PRO A 12 6.341 -2.693 3.687 0.00 0.00 C +ATOM 186 C PRO A 12 7.005 -3.929 3.062 0.00 0.00 C +ATOM 187 O PRO A 12 8.095 -3.815 2.504 0.00 0.00 O +ATOM 188 CB PRO A 12 6.736 -2.568 5.165 0.00 0.00 C +ATOM 189 CG PRO A 12 5.479 -2.037 5.847 0.00 0.00 C +ATOM 190 CD PRO A 12 4.350 -2.640 5.013 0.00 0.00 C +ATOM 191 HA PRO A 12 6.678 -1.805 3.152 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.012 -3.524 5.567 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.579 -1.889 5.296 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.424 -2.369 6.866 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.453 -0.949 5.767 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.091 -3.614 5.380 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.468 -2.003 5.070 0.00 0.00 H +ATOM 198 N SER A 13 6.350 -5.101 3.114 0.00 0.00 N +ATOM 199 CA SER A 13 6.894 -6.348 2.558 0.00 0.00 C +ATOM 200 C SER A 13 7.064 -6.302 1.037 0.00 0.00 C +ATOM 201 O SER A 13 7.806 -7.118 0.493 0.00 0.00 O +ATOM 202 CB SER A 13 5.994 -7.536 2.906 0.00 0.00 C +ATOM 203 OG SER A 13 6.670 -8.733 2.580 0.00 0.00 O +ATOM 204 H SER A 13 5.406 -5.120 3.489 0.00 0.00 H +ATOM 205 HA SER A 13 7.875 -6.522 3.002 0.00 0.00 H +ATOM 206 1HB SER A 13 5.770 -7.523 3.955 0.00 0.00 H +ATOM 207 2HB SER A 13 5.068 -7.474 2.335 0.00 0.00 H +ATOM 208 HG SER A 13 7.095 -8.611 1.716 0.00 0.00 H +ATOM 209 N SER A 14 6.380 -5.370 0.366 0.00 0.00 N +ATOM 210 CA SER A 14 6.436 -5.119 -1.073 0.00 0.00 C +ATOM 211 C SER A 14 7.612 -4.213 -1.472 0.00 0.00 C +ATOM 212 O SER A 14 7.787 -3.922 -2.655 0.00 0.00 O +ATOM 213 CB SER A 14 5.135 -4.433 -1.522 0.00 0.00 C +ATOM 214 OG SER A 14 4.021 -4.846 -0.754 0.00 0.00 O +ATOM 215 H SER A 14 5.700 -4.806 0.866 0.00 0.00 H +ATOM 216 HA SER A 14 6.525 -6.070 -1.599 0.00 0.00 H +ATOM 217 1HB SER A 14 5.251 -3.371 -1.420 0.00 0.00 H +ATOM 218 2HB SER A 14 4.963 -4.657 -2.575 0.00 0.00 H +ATOM 219 HG SER A 14 3.267 -4.316 -1.024 0.00 0.00 H +ATOM 220 N GLY A 15 8.377 -3.685 -0.506 0.00 0.00 N +ATOM 221 CA GLY A 15 9.506 -2.771 -0.715 0.00 0.00 C +ATOM 222 C GLY A 15 9.108 -1.335 -1.091 0.00 0.00 C +ATOM 223 O GLY A 15 9.766 -0.389 -0.660 0.00 0.00 O +ATOM 224 H GLY A 15 8.157 -3.928 0.457 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.096 -2.732 0.199 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.140 -3.166 -1.510 0.00 0.00 H +ATOM 227 N ARG A 16 8.034 -1.153 -1.871 0.00 0.00 N +ATOM 228 CA ARG A 16 7.469 0.154 -2.234 0.00 0.00 C +ATOM 229 C ARG A 16 6.973 0.913 -0.978 0.00 0.00 C +ATOM 230 O ARG A 16 6.211 0.332 -0.200 0.00 0.00 O +ATOM 231 CB ARG A 16 6.320 -0.061 -3.236 0.00 0.00 C +ATOM 232 CG ARG A 16 5.701 1.259 -3.728 0.00 0.00 C +ATOM 233 CD ARG A 16 4.282 1.081 -4.280 0.00 0.00 C +ATOM 234 NE ARG A 16 3.436 2.223 -3.888 0.00 0.00 N +ATOM 235 CZ ARG A 16 2.113 2.270 -3.848 0.00 0.00 C +ATOM 236 NH1 ARG A 16 1.365 1.261 -4.236 0.00 0.00 N +ATOM 237 NH2 ARG A 16 1.519 3.348 -3.396 0.00 0.00 N +ATOM 238 H ARG A 16 7.609 -2.003 -2.232 0.00 0.00 H +ATOM 239 HA ARG A 16 8.260 0.723 -2.719 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.701 -0.598 -4.084 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.552 -0.663 -2.744 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.665 1.948 -2.906 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.342 1.711 -4.487 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.323 1.021 -5.351 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.851 0.165 -3.875 0.00 0.00 H +ATOM 246 HE ARG A 16 3.920 3.015 -3.494 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 1.821 0.446 -4.608 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 0.362 1.295 -4.201 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 2.072 4.122 -3.070 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 0.518 3.399 -3.384 0.00 0.00 H +ATOM 251 N PRO A 17 7.293 2.215 -0.808 0.00 0.00 N +ATOM 252 CA PRO A 17 6.771 3.037 0.288 0.00 0.00 C +ATOM 253 C PRO A 17 5.246 3.279 0.193 0.00 0.00 C +ATOM 254 O PRO A 17 4.657 3.102 -0.882 0.00 0.00 O +ATOM 255 CB PRO A 17 7.554 4.355 0.201 0.00 0.00 C +ATOM 256 CG PRO A 17 7.898 4.468 -1.280 0.00 0.00 C +ATOM 257 CD PRO A 17 8.151 3.015 -1.674 0.00 0.00 C +ATOM 258 HA PRO A 17 6.993 2.548 1.239 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.949 5.182 0.518 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.473 4.272 0.782 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.081 4.884 -1.837 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.774 5.093 -1.450 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.895 2.857 -2.704 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.194 2.757 -1.486 0.00 0.00 H +ATOM 265 N PRO A 18 4.597 3.714 1.294 0.00 0.00 N +ATOM 266 CA PRO A 18 3.162 3.983 1.317 0.00 0.00 C +ATOM 267 C PRO A 18 2.768 5.182 0.431 0.00 0.00 C +ATOM 268 O PRO A 18 3.608 6.024 0.114 0.00 0.00 O +ATOM 269 CB PRO A 18 2.811 4.228 2.790 0.00 0.00 C +ATOM 270 CG PRO A 18 4.117 4.740 3.389 0.00 0.00 C +ATOM 271 CD PRO A 18 5.176 3.963 2.610 0.00 0.00 C +ATOM 272 HA PRO A 18 2.635 3.096 0.970 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.034 4.962 2.882 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.539 3.285 3.264 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.224 5.797 3.237 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.178 4.547 4.461 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.074 4.543 2.520 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.373 3.011 3.105 0.00 0.00 H +ATOM 279 N PRO A 19 1.485 5.278 0.026 0.00 0.00 N +ATOM 280 CA PRO A 19 0.982 6.372 -0.808 0.00 0.00 C +ATOM 281 C PRO A 19 0.682 7.673 -0.045 0.00 0.00 C +ATOM 282 O PRO A 19 0.626 8.727 -0.675 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.302 5.824 -1.426 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.825 4.851 -0.371 0.00 0.00 C +ATOM 285 CD PRO A 19 0.452 4.272 0.229 0.00 0.00 C +ATOM 286 HA PRO A 19 1.699 6.601 -1.599 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.008 6.612 -1.603 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.052 5.278 -2.333 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.402 5.364 0.374 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.440 4.069 -0.815 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.318 4.081 1.276 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.728 3.363 -0.309 0.00 0.00 H +ATOM 293 N SER A 20 0.482 7.598 1.276 0.00 0.00 N +ATOM 294 CA SER A 20 0.266 8.724 2.196 0.00 0.00 C +ATOM 295 C SER A 20 1.329 8.752 3.288 0.00 0.00 C +ATOM 296 O SER A 20 1.742 7.644 3.706 0.00 0.00 O +ATOM 297 CB SER A 20 -1.141 8.690 2.805 0.00 0.00 C +ATOM 298 OG SER A 20 -1.374 7.496 3.524 0.00 0.00 O +ATOM 299 OXT SER A 20 1.652 9.878 3.716 0.00 0.00 O +ATOM 300 H SER A 20 0.581 6.704 1.731 0.00 0.00 H +ATOM 301 HA SER A 20 0.368 9.660 1.645 0.00 0.00 H +ATOM 302 1HB SER A 20 -1.251 9.524 3.471 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.884 8.784 2.011 0.00 0.00 H +ATOM 304 HG SER A 20 -0.759 7.480 4.268 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 21 +ATOM 1 N ASN A 1 -8.205 5.399 0.404 0.00 0.00 N +ATOM 2 CA ASN A 1 -8.421 4.425 -0.695 0.00 0.00 C +ATOM 3 C ASN A 1 -7.126 3.775 -1.163 0.00 0.00 C +ATOM 4 O ASN A 1 -6.987 2.568 -1.004 0.00 0.00 O +ATOM 5 CB ASN A 1 -9.214 5.043 -1.856 0.00 0.00 C +ATOM 6 CG ASN A 1 -10.664 5.161 -1.424 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.997 6.047 -0.655 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -11.516 4.226 -1.803 0.00 0.00 N +ATOM 9 1H ASN A 1 -7.624 4.992 1.125 0.00 0.00 H +ATOM 10 2H ASN A 1 -7.759 6.235 0.050 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.098 5.664 0.802 0.00 0.00 H +ATOM 12 HA ASN A 1 -9.021 3.603 -0.300 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.823 6.015 -2.087 0.00 0.00 H +ATOM 14 2HB ASN A 1 -9.147 4.412 -2.743 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -11.263 3.457 -2.402 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -12.463 4.349 -1.476 0.00 0.00 H +ATOM 17 N LEU A 2 -6.172 4.549 -1.692 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.889 4.051 -2.203 0.00 0.00 C +ATOM 19 C LEU A 2 -4.114 3.184 -1.190 0.00 0.00 C +ATOM 20 O LEU A 2 -3.509 2.181 -1.570 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.073 5.277 -2.655 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.033 5.475 -4.183 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.073 6.965 -4.529 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.762 4.845 -4.764 0.00 0.00 C +ATOM 25 H LEU A 2 -6.330 5.538 -1.816 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.081 3.408 -3.065 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.507 6.153 -2.213 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.055 5.173 -2.305 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.900 4.998 -4.643 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.100 7.324 -4.467 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.450 7.536 -3.839 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.711 7.128 -5.545 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -1.884 5.386 -4.413 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -2.688 3.801 -4.461 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -2.792 4.898 -5.853 0.00 0.00 H +ATOM 36 N TYR A 3 -4.187 3.525 0.103 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.556 2.775 1.192 0.00 0.00 C +ATOM 38 C TYR A 3 -4.000 1.305 1.250 0.00 0.00 C +ATOM 39 O TYR A 3 -3.195 0.429 1.563 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.840 3.474 2.532 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.641 3.483 3.456 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.834 4.634 3.549 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.318 2.335 4.203 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.712 4.643 4.398 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.190 2.334 5.043 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.385 3.488 5.143 0.00 0.00 C +ATOM 47 OH TYR A 3 0.689 3.483 5.975 0.00 0.00 O +ATOM 48 H TYR A 3 -4.659 4.384 0.331 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.477 2.787 1.022 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.128 4.489 2.335 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.675 2.981 3.036 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.071 5.516 2.968 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -2.934 1.451 4.126 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.096 5.527 4.474 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -0.931 1.461 5.624 0.00 0.00 H +ATOM 56 HH TYR A 3 0.536 4.026 6.750 0.00 0.00 H +ATOM 57 N ILE A 4 -5.268 1.027 0.907 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.809 -0.333 0.842 0.00 0.00 C +ATOM 59 C ILE A 4 -5.065 -1.132 -0.228 0.00 0.00 C +ATOM 60 O ILE A 4 -4.619 -2.244 0.044 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.333 -0.322 0.572 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.130 0.602 1.523 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.912 -1.748 0.626 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -7.837 0.419 3.019 0.00 0.00 C +ATOM 65 H ILE A 4 -5.853 1.783 0.573 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.628 -0.825 1.798 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.498 0.045 -0.442 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -7.904 1.618 1.263 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -9.195 0.439 1.352 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.438 -2.382 -0.123 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.755 -2.190 1.610 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.983 -1.721 0.418 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.575 -0.614 3.246 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -7.012 1.067 3.316 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.722 0.689 3.595 0.00 0.00 H +ATOM 76 N GLN A 5 -4.894 -0.554 -1.425 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.180 -1.182 -2.538 0.00 0.00 C +ATOM 78 C GLN A 5 -2.711 -1.453 -2.172 0.00 0.00 C +ATOM 79 O GLN A 5 -2.211 -2.547 -2.418 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.321 -0.301 -3.794 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.173 -1.098 -5.104 0.00 0.00 C +ATOM 82 CD GLN A 5 -2.956 -0.675 -5.920 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -1.933 -1.333 -5.943 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -3.020 0.437 -6.629 0.00 0.00 N +ATOM 85 H GLN A 5 -5.218 0.396 -1.539 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.656 -2.143 -2.729 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.289 0.161 -3.782 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.593 0.512 -3.762 0.00 0.00 H +ATOM 89 1HG GLN A 5 -4.079 -2.139 -4.863 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.066 -0.948 -5.712 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -3.834 1.023 -6.661 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -2.179 0.616 -7.149 0.00 0.00 H +ATOM 93 N TRP A 6 -2.050 -0.491 -1.510 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.682 -0.649 -1.004 0.00 0.00 C +ATOM 95 C TRP A 6 -0.552 -1.777 0.033 0.00 0.00 C +ATOM 96 O TRP A 6 0.343 -2.619 -0.074 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.195 0.683 -0.426 0.00 0.00 C +ATOM 98 CG TRP A 6 1.199 0.640 0.118 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.328 0.641 -0.626 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.638 0.542 1.510 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.424 0.533 0.208 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.060 0.471 1.527 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.987 0.512 2.761 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.807 0.373 2.709 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.723 0.410 3.959 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.128 0.343 3.936 0.00 0.00 C +ATOM 107 H TRP A 6 -2.536 0.387 -1.350 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.035 -0.916 -1.840 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.231 1.421 -1.204 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.865 0.995 0.375 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.362 0.708 -1.706 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.401 0.535 -0.078 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.088 0.583 2.787 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.885 0.322 2.660 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.210 0.395 4.909 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.683 0.276 4.862 0.00 0.00 H +ATOM 117 N LEU A 7 -1.451 -1.826 1.027 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.482 -2.920 2.000 0.00 0.00 C +ATOM 119 C LEU A 7 -1.770 -4.274 1.337 0.00 0.00 C +ATOM 120 O LEU A 7 -1.172 -5.271 1.735 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.494 -2.616 3.120 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.022 -1.536 4.111 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.153 -1.196 5.086 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.804 -1.981 4.934 0.00 0.00 C +ATOM 125 H LEU A 7 -2.149 -1.086 1.092 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.489 -3.014 2.435 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.409 -2.283 2.668 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.686 -3.532 3.681 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.764 -0.633 3.565 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.027 -0.854 4.530 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.418 -2.076 5.672 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.833 -0.402 5.761 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.025 -2.912 5.456 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 0.060 -2.128 4.287 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.552 -1.214 5.664 0.00 0.00 H +ATOM 136 N LYS A 8 -2.622 -4.312 0.302 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.964 -5.533 -0.446 0.00 0.00 C +ATOM 138 C LYS A 8 -1.748 -6.215 -1.087 0.00 0.00 C +ATOM 139 O LYS A 8 -1.680 -7.440 -1.095 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.040 -5.202 -1.495 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.019 -6.365 -1.703 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.311 -5.884 -2.382 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.429 -6.917 -2.201 0.00 0.00 C +ATOM 144 NZ LYS A 8 -8.063 -6.804 -0.863 0.00 0.00 N +ATOM 145 H LYS A 8 -3.107 -3.448 0.065 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.372 -6.243 0.275 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.590 -4.341 -1.167 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.577 -4.927 -2.444 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.554 -7.109 -2.321 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.268 -6.792 -0.732 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.615 -4.953 -1.943 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.116 -5.737 -3.446 0.00 0.00 H +ATOM 153 1HE LYS A 8 -8.176 -6.759 -2.955 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.998 -7.914 -2.334 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -7.353 -6.774 -0.143 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -8.612 -5.957 -0.808 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -8.670 -7.595 -0.691 0.00 0.00 H +ATOM 158 N ASP A 9 -0.774 -5.426 -1.557 0.00 0.00 N +ATOM 159 CA ASP A 9 0.530 -5.873 -2.078 0.00 0.00 C +ATOM 160 C ASP A 9 1.485 -6.399 -0.981 0.00 0.00 C +ATOM 161 O ASP A 9 2.573 -6.882 -1.301 0.00 0.00 O +ATOM 162 CB ASP A 9 1.212 -4.694 -2.814 0.00 0.00 C +ATOM 163 CG ASP A 9 1.583 -4.991 -4.272 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.782 -4.809 -4.612 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.662 -5.343 -5.038 0.00 0.00 O +ATOM 166 H ASP A 9 -0.962 -4.430 -1.556 0.00 0.00 H +ATOM 167 HA ASP A 9 0.358 -6.689 -2.785 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.541 -3.857 -2.802 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.121 -4.414 -2.279 0.00 0.00 H +ATOM 170 N GLY A 10 1.125 -6.270 0.304 0.00 0.00 N +ATOM 171 CA GLY A 10 1.936 -6.685 1.451 0.00 0.00 C +ATOM 172 C GLY A 10 2.565 -5.530 2.237 0.00 0.00 C +ATOM 173 O GLY A 10 3.424 -5.778 3.084 0.00 0.00 O +ATOM 174 H GLY A 10 0.211 -5.877 0.508 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.298 -7.243 2.136 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.735 -7.352 1.125 0.00 0.00 H +ATOM 177 N GLY A 11 2.184 -4.272 1.973 0.00 0.00 N +ATOM 178 CA GLY A 11 2.732 -3.116 2.683 0.00 0.00 C +ATOM 179 C GLY A 11 4.265 -3.035 2.545 0.00 0.00 C +ATOM 180 O GLY A 11 4.771 -3.134 1.422 0.00 0.00 O +ATOM 181 H GLY A 11 1.507 -4.103 1.237 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.296 -2.204 2.279 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.443 -3.201 3.729 0.00 0.00 H +ATOM 184 N PRO A 12 5.029 -2.881 3.651 0.00 0.00 N +ATOM 185 CA PRO A 12 6.491 -2.829 3.600 0.00 0.00 C +ATOM 186 C PRO A 12 7.138 -4.072 2.966 0.00 0.00 C +ATOM 187 O PRO A 12 8.211 -3.949 2.375 0.00 0.00 O +ATOM 188 CB PRO A 12 6.970 -2.642 5.048 0.00 0.00 C +ATOM 189 CG PRO A 12 5.734 -2.162 5.806 0.00 0.00 C +ATOM 190 CD PRO A 12 4.578 -2.795 5.033 0.00 0.00 C +ATOM 191 HA PRO A 12 6.783 -1.953 3.019 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.325 -3.570 5.452 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.775 -1.907 5.107 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.750 -2.505 6.823 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.663 -1.077 5.744 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.362 -3.773 5.418 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.684 -2.179 5.140 0.00 0.00 H +ATOM 198 N SER A 13 6.492 -5.249 3.030 0.00 0.00 N +ATOM 199 CA SER A 13 7.032 -6.510 2.502 0.00 0.00 C +ATOM 200 C SER A 13 7.252 -6.475 0.991 0.00 0.00 C +ATOM 201 O SER A 13 8.198 -7.085 0.501 0.00 0.00 O +ATOM 202 CB SER A 13 6.085 -7.675 2.806 0.00 0.00 C +ATOM 203 OG SER A 13 5.872 -7.807 4.197 0.00 0.00 O +ATOM 204 H SER A 13 5.578 -5.299 3.472 0.00 0.00 H +ATOM 205 HA SER A 13 7.994 -6.707 2.977 0.00 0.00 H +ATOM 206 1HB SER A 13 5.144 -7.497 2.322 0.00 0.00 H +ATOM 207 2HB SER A 13 6.513 -8.600 2.417 0.00 0.00 H +ATOM 208 HG SER A 13 6.506 -8.436 4.551 0.00 0.00 H +ATOM 209 N SER A 14 6.398 -5.751 0.257 0.00 0.00 N +ATOM 210 CA SER A 14 6.540 -5.569 -1.189 0.00 0.00 C +ATOM 211 C SER A 14 7.723 -4.673 -1.582 0.00 0.00 C +ATOM 212 O SER A 14 8.110 -4.660 -2.750 0.00 0.00 O +ATOM 213 CB SER A 14 5.248 -4.986 -1.771 0.00 0.00 C +ATOM 214 OG SER A 14 4.583 -5.979 -2.515 0.00 0.00 O +ATOM 215 H SER A 14 5.654 -5.262 0.743 0.00 0.00 H +ATOM 216 HA SER A 14 6.710 -6.543 -1.651 0.00 0.00 H +ATOM 217 1HB SER A 14 4.614 -4.652 -0.972 0.00 0.00 H +ATOM 218 2HB SER A 14 5.507 -4.180 -2.451 0.00 0.00 H +ATOM 219 HG SER A 14 3.809 -6.342 -2.003 0.00 0.00 H +ATOM 220 N GLY A 15 8.298 -3.917 -0.635 0.00 0.00 N +ATOM 221 CA GLY A 15 9.467 -3.068 -0.877 0.00 0.00 C +ATOM 222 C GLY A 15 9.130 -1.720 -1.522 0.00 0.00 C +ATOM 223 O GLY A 15 9.898 -1.231 -2.349 0.00 0.00 O +ATOM 224 H GLY A 15 7.970 -4.008 0.322 0.00 0.00 H +ATOM 225 1HA GLY A 15 9.963 -2.879 0.074 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.166 -3.596 -1.527 0.00 0.00 H +ATOM 227 N ARG A 16 7.986 -1.120 -1.164 0.00 0.00 N +ATOM 228 CA ARG A 16 7.493 0.155 -1.712 0.00 0.00 C +ATOM 229 C ARG A 16 6.893 1.052 -0.617 0.00 0.00 C +ATOM 230 O ARG A 16 6.228 0.526 0.276 0.00 0.00 O +ATOM 231 CB ARG A 16 6.486 -0.108 -2.852 0.00 0.00 C +ATOM 232 CG ARG A 16 5.371 -1.121 -2.515 0.00 0.00 C +ATOM 233 CD ARG A 16 4.390 -1.352 -3.682 0.00 0.00 C +ATOM 234 NE ARG A 16 4.505 -2.695 -4.282 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.417 -3.159 -5.117 0.00 0.00 C +ATOM 236 NH1 ARG A 16 6.381 -2.403 -5.595 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.336 -4.410 -5.482 0.00 0.00 N +ATOM 238 H ARG A 16 7.428 -1.572 -0.451 0.00 0.00 H +ATOM 239 HA ARG A 16 8.348 0.677 -2.139 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.022 0.825 -3.109 0.00 0.00 H +ATOM 241 2HB ARG A 16 7.046 -0.475 -3.709 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.827 -2.059 -2.261 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.805 -0.751 -1.666 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.389 -1.227 -3.316 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.531 -0.590 -4.449 0.00 0.00 H +ATOM 246 HE ARG A 16 3.776 -3.394 -4.104 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 6.393 -1.440 -5.320 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 7.062 -2.775 -6.231 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.489 -4.903 -5.147 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 6.023 -4.858 -6.055 0.00 0.00 H +ATOM 251 N PRO A 17 7.075 2.387 -0.684 0.00 0.00 N +ATOM 252 CA PRO A 17 6.538 3.322 0.308 0.00 0.00 C +ATOM 253 C PRO A 17 5.011 3.481 0.186 0.00 0.00 C +ATOM 254 O PRO A 17 4.452 3.191 -0.874 0.00 0.00 O +ATOM 255 CB PRO A 17 7.258 4.647 0.031 0.00 0.00 C +ATOM 256 CG PRO A 17 7.545 4.595 -1.468 0.00 0.00 C +ATOM 257 CD PRO A 17 7.782 3.109 -1.733 0.00 0.00 C +ATOM 258 HA PRO A 17 6.789 2.972 1.310 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.629 5.482 0.272 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.199 4.671 0.582 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.707 4.957 -2.032 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.418 5.192 -1.732 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.395 2.837 -2.696 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.849 2.890 -1.670 0.00 0.00 H +ATOM 265 N PRO A 18 4.330 3.962 1.245 0.00 0.00 N +ATOM 266 CA PRO A 18 2.890 4.179 1.221 0.00 0.00 C +ATOM 267 C PRO A 18 2.501 5.385 0.341 0.00 0.00 C +ATOM 268 O PRO A 18 3.270 6.342 0.211 0.00 0.00 O +ATOM 269 CB PRO A 18 2.483 4.404 2.680 0.00 0.00 C +ATOM 270 CG PRO A 18 3.743 4.989 3.313 0.00 0.00 C +ATOM 271 CD PRO A 18 4.873 4.294 2.554 0.00 0.00 C +ATOM 272 HA PRO A 18 2.410 3.277 0.849 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.664 5.093 2.748 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.248 3.446 3.144 0.00 0.00 H +ATOM 275 1HG PRO A 18 3.784 6.052 3.175 0.00 0.00 H +ATOM 276 2HG PRO A 18 3.788 4.783 4.383 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.715 4.952 2.453 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.153 3.376 3.072 0.00 0.00 H +ATOM 279 N PRO A 19 1.280 5.377 -0.223 0.00 0.00 N +ATOM 280 CA PRO A 19 0.762 6.450 -1.060 0.00 0.00 C +ATOM 281 C PRO A 19 0.382 7.663 -0.198 0.00 0.00 C +ATOM 282 O PRO A 19 -0.624 7.631 0.512 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.435 5.840 -1.790 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.951 4.783 -0.812 0.00 0.00 C +ATOM 285 CD PRO A 19 0.299 4.311 -0.088 0.00 0.00 C +ATOM 286 HA PRO A 19 1.508 6.751 -1.796 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.185 6.582 -1.983 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.088 5.348 -2.699 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.652 5.211 -0.122 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.423 3.952 -1.333 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.083 4.134 0.948 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.683 3.414 -0.572 0.00 0.00 H +ATOM 293 N SER A 20 1.217 8.708 -0.251 0.00 0.00 N +ATOM 294 CA SER A 20 0.998 10.004 0.410 0.00 0.00 C +ATOM 295 C SER A 20 0.315 10.992 -0.534 0.00 0.00 C +ATOM 296 O SER A 20 0.887 11.215 -1.624 0.00 0.00 O +ATOM 297 CB SER A 20 2.322 10.595 0.894 0.00 0.00 C +ATOM 298 OG SER A 20 2.966 9.680 1.760 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.750 11.510 -0.139 0.00 0.00 O +ATOM 300 H SER A 20 1.987 8.656 -0.900 0.00 0.00 H +ATOM 301 HA SER A 20 0.337 9.875 1.267 0.00 0.00 H +ATOM 302 1HB SER A 20 2.954 10.792 0.050 0.00 0.00 H +ATOM 303 2HB SER A 20 2.127 11.529 1.425 0.00 0.00 H +ATOM 304 HG SER A 20 3.007 8.832 1.306 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 22 +ATOM 1 N ASN A 1 -7.147 6.420 -0.321 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.735 5.239 -1.002 0.00 0.00 C +ATOM 3 C ASN A 1 -6.654 4.233 -1.423 0.00 0.00 C +ATOM 4 O ASN A 1 -6.828 3.043 -1.189 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.631 5.670 -2.180 0.00 0.00 C +ATOM 6 CG ASN A 1 -7.791 6.178 -3.342 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -6.938 7.030 -3.134 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -7.925 5.610 -4.527 0.00 0.00 N +ATOM 9 1H ASN A 1 -6.444 6.132 0.344 0.00 0.00 H +ATOM 10 2H ASN A 1 -6.730 7.032 -1.016 0.00 0.00 H +ATOM 11 3H ASN A 1 -7.869 6.934 0.166 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.365 4.712 -0.285 0.00 0.00 H +ATOM 13 1HB ASN A 1 -9.211 4.828 -2.507 0.00 0.00 H +ATOM 14 2HB ASN A 1 -9.301 6.470 -1.860 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -8.593 4.875 -4.704 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -7.334 5.964 -5.263 0.00 0.00 H +ATOM 17 N LEU A 2 -5.522 4.698 -1.980 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.409 3.863 -2.457 0.00 0.00 C +ATOM 19 C LEU A 2 -3.793 2.972 -1.363 0.00 0.00 C +ATOM 20 O LEU A 2 -3.233 1.920 -1.669 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.326 4.784 -3.046 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.749 5.553 -4.315 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -2.850 6.776 -4.507 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.680 4.665 -5.559 0.00 0.00 C +ATOM 25 H LEU A 2 -5.460 5.679 -2.226 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.775 3.199 -3.243 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.054 5.502 -2.296 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.440 4.192 -3.280 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.770 5.913 -4.203 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -2.889 7.409 -3.621 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -1.821 6.467 -4.687 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.206 7.360 -5.357 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.700 4.193 -5.633 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -4.449 3.893 -5.510 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.847 5.268 -6.452 0.00 0.00 H +ATOM 36 N TYR A 3 -3.931 3.366 -0.089 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.447 2.623 1.074 0.00 0.00 C +ATOM 38 C TYR A 3 -3.964 1.180 1.109 0.00 0.00 C +ATOM 39 O TYR A 3 -3.229 0.272 1.491 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.837 3.358 2.368 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.695 3.445 3.358 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.990 4.653 3.499 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.319 2.321 4.114 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.914 4.751 4.400 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.242 2.408 5.016 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.539 3.622 5.162 0.00 0.00 C +ATOM 47 OH TYR A 3 0.485 3.702 6.054 0.00 0.00 O +ATOM 48 H TYR A 3 -4.371 4.256 0.070 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.359 2.584 1.015 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.150 4.353 2.117 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.678 2.850 2.844 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.289 5.504 2.906 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -2.858 1.392 4.001 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.364 5.678 4.516 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -0.942 1.554 5.604 0.00 0.00 H +ATOM 56 HH TYR A 3 0.190 4.071 6.890 0.00 0.00 H +ATOM 57 N ILE A 4 -5.213 0.963 0.670 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.823 -0.366 0.587 0.00 0.00 C +ATOM 59 C ILE A 4 -5.035 -1.235 -0.401 0.00 0.00 C +ATOM 60 O ILE A 4 -4.639 -2.349 -0.066 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.315 -0.267 0.189 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.131 0.588 1.186 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.906 -1.688 0.098 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.426 1.134 0.567 0.00 0.00 C +ATOM 65 H ILE A 4 -5.742 1.753 0.322 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.754 -0.841 1.568 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.380 0.200 -0.796 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.384 -0.019 2.034 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.554 1.453 1.513 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.613 -2.155 -0.842 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.546 -2.302 0.925 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.995 -1.665 0.139 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -9.186 1.834 -0.233 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -10.035 0.325 0.163 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -10.000 1.657 1.332 0.00 0.00 H +ATOM 76 N GLN A 5 -4.770 -0.707 -1.602 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.004 -1.401 -2.634 0.00 0.00 C +ATOM 78 C GLN A 5 -2.557 -1.659 -2.193 0.00 0.00 C +ATOM 79 O GLN A 5 -2.034 -2.749 -2.416 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.064 -0.600 -3.951 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.101 -1.517 -5.182 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.437 -2.250 -5.294 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -6.433 -1.708 -5.744 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -5.519 -3.495 -4.863 0.00 0.00 N +ATOM 85 H GLN A 5 -5.062 0.244 -1.779 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.475 -2.372 -2.776 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.948 0.009 -3.946 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.195 0.059 -4.019 0.00 0.00 H +ATOM 89 1HG GLN A 5 -3.954 -0.923 -6.064 0.00 0.00 H +ATOM 90 2HG GLN A 5 -3.280 -2.234 -5.138 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.727 -3.993 -4.495 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -6.432 -3.902 -4.971 0.00 0.00 H +ATOM 93 N TRP A 6 -1.937 -0.681 -1.518 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.600 -0.811 -0.937 0.00 0.00 C +ATOM 95 C TRP A 6 -0.532 -1.917 0.130 0.00 0.00 C +ATOM 96 O TRP A 6 0.363 -2.764 0.091 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.164 0.545 -0.369 0.00 0.00 C +ATOM 98 CG TRP A 6 1.216 0.547 0.205 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.366 0.594 -0.508 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.619 0.456 1.606 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.444 0.504 0.353 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.043 0.441 1.664 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.931 0.375 2.834 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.753 0.369 2.869 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.631 0.287 4.054 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.038 0.291 4.074 0.00 0.00 C +ATOM 107 H TRP A 6 -2.437 0.199 -1.406 0.00 0.00 H +ATOM 108 HA TRP A 6 0.095 -1.089 -1.730 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.202 1.270 -1.159 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.861 0.845 0.413 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.421 0.666 -1.584 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.427 0.496 0.079 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.148 0.387 2.825 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.834 0.356 2.853 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.088 0.221 4.984 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.566 0.226 5.014 0.00 0.00 H +ATOM 117 N LEU A 7 -1.493 -1.950 1.062 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.591 -3.020 2.054 0.00 0.00 C +ATOM 119 C LEU A 7 -1.887 -4.379 1.416 0.00 0.00 C +ATOM 120 O LEU A 7 -1.332 -5.379 1.867 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.648 -2.680 3.119 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.204 -1.596 4.116 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.353 -1.276 5.075 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.992 -2.019 4.955 0.00 0.00 C +ATOM 125 H LEU A 7 -2.199 -1.215 1.063 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.619 -3.132 2.532 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.533 -2.337 2.619 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.884 -3.585 3.682 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.950 -0.690 3.572 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.247 -1.017 4.508 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.565 -2.140 5.705 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.079 -0.432 5.708 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.200 -2.960 5.466 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.115 -2.141 4.324 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.770 -1.251 5.695 0.00 0.00 H +ATOM 136 N LYS A 8 -2.704 -4.425 0.351 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.024 -5.667 -0.363 0.00 0.00 C +ATOM 138 C LYS A 8 -1.783 -6.379 -0.902 0.00 0.00 C +ATOM 139 O LYS A 8 -1.714 -7.603 -0.824 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.029 -5.384 -1.498 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.718 -6.666 -1.991 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.727 -7.192 -0.954 0.00 0.00 C +ATOM 143 CE LYS A 8 -5.697 -8.722 -0.865 0.00 0.00 C +ATOM 144 NZ LYS A 8 -6.010 -9.184 0.509 0.00 0.00 N +ATOM 145 H LYS A 8 -3.166 -3.563 0.071 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.461 -6.347 0.365 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.778 -4.706 -1.137 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.501 -4.924 -2.335 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.236 -6.455 -2.907 0.00 0.00 H +ATOM 150 2HG LYS A 8 -3.961 -7.422 -2.206 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.484 -6.782 0.007 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.729 -6.861 -1.233 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.422 -9.127 -1.544 0.00 0.00 H +ATOM 154 2HE LYS A 8 -4.703 -9.081 -1.147 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -5.172 -9.166 1.076 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -6.699 -8.578 0.933 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -6.369 -10.130 0.493 0.00 0.00 H +ATOM 158 N ASP A 9 -0.814 -5.616 -1.411 0.00 0.00 N +ATOM 159 CA ASP A 9 0.466 -6.130 -1.902 0.00 0.00 C +ATOM 160 C ASP A 9 1.395 -6.627 -0.772 0.00 0.00 C +ATOM 161 O ASP A 9 2.377 -7.317 -1.041 0.00 0.00 O +ATOM 162 CB ASP A 9 1.145 -5.018 -2.722 0.00 0.00 C +ATOM 163 CG ASP A 9 2.033 -5.572 -3.840 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.516 -5.670 -4.975 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.217 -5.858 -3.563 0.00 0.00 O +ATOM 166 H ASP A 9 -0.985 -4.619 -1.475 0.00 0.00 H +ATOM 167 HA ASP A 9 0.267 -6.973 -2.567 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.385 -4.401 -3.160 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.730 -4.377 -2.062 0.00 0.00 H +ATOM 170 N GLY A 10 1.124 -6.267 0.493 0.00 0.00 N +ATOM 171 CA GLY A 10 1.948 -6.626 1.656 0.00 0.00 C +ATOM 172 C GLY A 10 2.533 -5.439 2.437 0.00 0.00 C +ATOM 173 O GLY A 10 3.358 -5.653 3.329 0.00 0.00 O +ATOM 174 H GLY A 10 0.279 -5.730 0.656 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.331 -7.206 2.341 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.781 -7.257 1.345 0.00 0.00 H +ATOM 177 N GLY A 11 2.128 -4.200 2.126 0.00 0.00 N +ATOM 178 CA GLY A 11 2.561 -2.998 2.829 0.00 0.00 C +ATOM 179 C GLY A 11 4.092 -2.817 2.806 0.00 0.00 C +ATOM 180 O GLY A 11 4.667 -2.692 1.724 0.00 0.00 O +ATOM 181 H GLY A 11 1.538 -4.070 1.311 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.108 -2.134 2.348 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.187 -3.048 3.848 0.00 0.00 H +ATOM 184 N PRO A 12 4.785 -2.805 3.967 0.00 0.00 N +ATOM 185 CA PRO A 12 6.246 -2.706 4.011 0.00 0.00 C +ATOM 186 C PRO A 12 6.976 -3.836 3.263 0.00 0.00 C +ATOM 187 O PRO A 12 8.113 -3.645 2.838 0.00 0.00 O +ATOM 188 CB PRO A 12 6.631 -2.710 5.496 0.00 0.00 C +ATOM 189 CG PRO A 12 5.341 -2.359 6.233 0.00 0.00 C +ATOM 190 CD PRO A 12 4.243 -2.888 5.316 0.00 0.00 C +ATOM 191 HA PRO A 12 6.540 -1.751 3.570 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.984 -3.679 5.793 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.415 -1.982 5.705 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.305 -2.841 7.191 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.252 -1.274 6.318 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.007 -3.905 5.563 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.346 -2.281 5.435 0.00 0.00 H +ATOM 198 N SER A 13 6.332 -4.997 3.071 0.00 0.00 N +ATOM 199 CA SER A 13 6.911 -6.174 2.405 0.00 0.00 C +ATOM 200 C SER A 13 6.618 -6.217 0.896 0.00 0.00 C +ATOM 201 O SER A 13 6.579 -7.294 0.305 0.00 0.00 O +ATOM 202 CB SER A 13 6.458 -7.466 3.098 0.00 0.00 C +ATOM 203 OG SER A 13 6.899 -7.491 4.441 0.00 0.00 O +ATOM 204 H SER A 13 5.358 -5.057 3.358 0.00 0.00 H +ATOM 205 HA SER A 13 7.997 -6.129 2.500 0.00 0.00 H +ATOM 206 1HB SER A 13 5.387 -7.520 3.078 0.00 0.00 H +ATOM 207 2HB SER A 13 6.893 -8.322 2.581 0.00 0.00 H +ATOM 208 HG SER A 13 6.357 -6.887 4.951 0.00 0.00 H +ATOM 209 N SER A 14 6.432 -5.052 0.265 0.00 0.00 N +ATOM 210 CA SER A 14 6.076 -4.919 -1.157 0.00 0.00 C +ATOM 211 C SER A 14 7.132 -4.174 -1.984 0.00 0.00 C +ATOM 212 O SER A 14 6.929 -3.921 -3.169 0.00 0.00 O +ATOM 213 CB SER A 14 4.715 -4.232 -1.266 0.00 0.00 C +ATOM 214 OG SER A 14 3.775 -4.945 -0.496 0.00 0.00 O +ATOM 215 H SER A 14 6.365 -4.227 0.848 0.00 0.00 H +ATOM 216 HA SER A 14 5.970 -5.909 -1.604 0.00 0.00 H +ATOM 217 1HB SER A 14 4.790 -3.226 -0.900 0.00 0.00 H +ATOM 218 2HB SER A 14 4.396 -4.200 -2.306 0.00 0.00 H +ATOM 219 HG SER A 14 3.597 -5.804 -0.924 0.00 0.00 H +ATOM 220 N GLY A 15 8.259 -3.794 -1.363 0.00 0.00 N +ATOM 221 CA GLY A 15 9.337 -3.046 -2.017 0.00 0.00 C +ATOM 222 C GLY A 15 8.945 -1.615 -2.403 0.00 0.00 C +ATOM 223 O GLY A 15 9.471 -1.083 -3.379 0.00 0.00 O +ATOM 224 H GLY A 15 8.370 -4.078 -0.400 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.194 -2.991 -1.346 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.646 -3.574 -2.921 0.00 0.00 H +ATOM 227 N ARG A 16 8.005 -1.001 -1.666 0.00 0.00 N +ATOM 228 CA ARG A 16 7.468 0.335 -1.947 0.00 0.00 C +ATOM 229 C ARG A 16 6.939 1.037 -0.683 0.00 0.00 C +ATOM 230 O ARG A 16 6.297 0.382 0.141 0.00 0.00 O +ATOM 231 CB ARG A 16 6.363 0.241 -3.014 0.00 0.00 C +ATOM 232 CG ARG A 16 5.268 -0.802 -2.713 0.00 0.00 C +ATOM 233 CD ARG A 16 4.161 -0.846 -3.770 0.00 0.00 C +ATOM 234 NE ARG A 16 4.681 -1.237 -5.095 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.016 -0.436 -6.099 0.00 0.00 C +ATOM 236 NH1 ARG A 16 4.910 0.871 -6.014 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.479 -0.936 -7.220 0.00 0.00 N +ATOM 238 H ARG A 16 7.638 -1.499 -0.867 0.00 0.00 H +ATOM 239 HA ARG A 16 8.282 0.927 -2.362 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.895 1.203 -3.097 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.844 -0.019 -3.959 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.727 -1.771 -2.660 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.810 -0.587 -1.750 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.418 -1.558 -3.465 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.662 0.123 -3.814 0.00 0.00 H +ATOM 246 HE ARG A 16 4.831 -2.228 -5.227 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.571 1.257 -5.151 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 5.171 1.470 -6.773 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.580 -1.932 -7.319 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 5.740 -0.329 -7.975 0.00 0.00 H +ATOM 251 N PRO A 17 7.146 2.361 -0.541 0.00 0.00 N +ATOM 252 CA PRO A 17 6.642 3.137 0.592 0.00 0.00 C +ATOM 253 C PRO A 17 5.117 3.361 0.511 0.00 0.00 C +ATOM 254 O PRO A 17 4.532 3.158 -0.557 0.00 0.00 O +ATOM 255 CB PRO A 17 7.416 4.460 0.520 0.00 0.00 C +ATOM 256 CG PRO A 17 7.671 4.652 -0.972 0.00 0.00 C +ATOM 257 CD PRO A 17 7.829 3.228 -1.493 0.00 0.00 C +ATOM 258 HA PRO A 17 6.878 2.623 1.524 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.830 5.268 0.915 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.368 4.346 1.042 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.841 5.143 -1.443 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.569 5.244 -1.152 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.382 3.137 -2.464 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.886 2.963 -1.532 0.00 0.00 H +ATOM 265 N PRO A 18 4.468 3.790 1.613 0.00 0.00 N +ATOM 266 CA PRO A 18 3.035 4.076 1.629 0.00 0.00 C +ATOM 267 C PRO A 18 2.678 5.275 0.730 0.00 0.00 C +ATOM 268 O PRO A 18 3.501 6.177 0.557 0.00 0.00 O +ATOM 269 CB PRO A 18 2.681 4.342 3.098 0.00 0.00 C +ATOM 270 CG PRO A 18 3.998 4.812 3.711 0.00 0.00 C +ATOM 271 CD PRO A 18 5.049 4.030 2.928 0.00 0.00 C +ATOM 272 HA PRO A 18 2.502 3.188 1.294 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.929 5.103 3.178 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.369 3.411 3.573 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.128 5.869 3.579 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.048 4.597 4.778 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.952 4.603 2.839 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.240 3.074 3.417 0.00 0.00 H +ATOM 279 N PRO A 19 1.456 5.312 0.158 0.00 0.00 N +ATOM 280 CA PRO A 19 1.020 6.389 -0.730 0.00 0.00 C +ATOM 281 C PRO A 19 0.573 7.658 0.014 0.00 0.00 C +ATOM 282 O PRO A 19 0.781 8.756 -0.501 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.147 5.799 -1.525 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.739 4.750 -0.582 0.00 0.00 C +ATOM 285 CD PRO A 19 0.461 4.252 0.217 0.00 0.00 C +ATOM 286 HA PRO A 19 1.824 6.660 -1.417 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.871 6.555 -1.758 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.235 5.311 -2.422 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.472 5.190 0.066 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.196 3.933 -1.136 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.178 4.064 1.235 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.863 3.356 -0.255 0.00 0.00 H +ATOM 293 N SER A 20 -0.071 7.506 1.180 0.00 0.00 N +ATOM 294 CA SER A 20 -0.495 8.598 2.070 0.00 0.00 C +ATOM 295 C SER A 20 0.609 8.944 3.064 0.00 0.00 C +ATOM 296 O SER A 20 0.894 10.155 3.181 0.00 0.00 O +ATOM 297 CB SER A 20 -1.736 8.215 2.879 0.00 0.00 C +ATOM 298 OG SER A 20 -2.830 7.879 2.044 0.00 0.00 O +ATOM 299 OXT SER A 20 1.084 7.996 3.730 0.00 0.00 O +ATOM 300 H SER A 20 -0.157 6.569 1.538 0.00 0.00 H +ATOM 301 HA SER A 20 -0.699 9.493 1.486 0.00 0.00 H +ATOM 302 1HB SER A 20 -1.500 7.370 3.497 0.00 0.00 H +ATOM 303 2HB SER A 20 -2.011 9.052 3.523 0.00 0.00 H +ATOM 304 HG SER A 20 -3.169 8.700 1.678 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 23 +ATOM 1 N ASN A 1 -8.995 5.512 -1.807 0.00 0.00 N +ATOM 2 CA ASN A 1 -8.139 5.500 -0.596 0.00 0.00 C +ATOM 3 C ASN A 1 -6.657 5.213 -0.847 0.00 0.00 C +ATOM 4 O ASN A 1 -5.857 5.704 -0.062 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.684 4.564 0.498 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.123 5.373 1.709 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.305 5.507 1.971 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -8.201 5.977 2.436 0.00 0.00 N +ATOM 9 1H ASN A 1 -8.610 6.132 -2.507 0.00 0.00 H +ATOM 10 2H ASN A 1 -9.086 4.582 -2.189 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.920 5.841 -1.561 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.157 6.511 -0.184 0.00 0.00 H +ATOM 13 1HB ASN A 1 -9.524 4.019 0.112 0.00 0.00 H +ATOM 14 2HB ASN A 1 -7.920 3.855 0.818 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -7.210 5.924 2.252 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -8.568 6.492 3.222 0.00 0.00 H +ATOM 17 N LEU A 2 -6.287 4.419 -1.870 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.918 3.992 -2.233 0.00 0.00 C +ATOM 19 C LEU A 2 -4.198 3.117 -1.189 0.00 0.00 C +ATOM 20 O LEU A 2 -3.649 2.074 -1.544 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.033 5.181 -2.661 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.577 5.992 -3.859 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -5.182 7.328 -3.410 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.464 6.283 -4.867 0.00 0.00 C +ATOM 25 H LEU A 2 -6.993 4.011 -2.461 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.014 3.355 -3.115 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.937 5.845 -1.824 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.061 4.766 -2.935 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.348 5.414 -4.371 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -6.031 7.162 -2.754 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -4.432 7.916 -2.879 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -5.517 7.893 -4.282 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.669 6.860 -4.395 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -3.056 5.346 -5.245 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.867 6.848 -5.709 0.00 0.00 H +ATOM 36 N TYR A 3 -4.220 3.498 0.091 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.550 2.790 1.185 0.00 0.00 C +ATOM 38 C TYR A 3 -3.980 1.315 1.283 0.00 0.00 C +ATOM 39 O TYR A 3 -3.150 0.440 1.515 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.809 3.544 2.496 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.752 3.301 3.554 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.653 4.178 3.655 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.869 2.215 4.443 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.683 3.985 4.655 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.899 2.018 5.443 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.812 2.911 5.561 0.00 0.00 C +ATOM 47 OH TYR A 3 0.085 2.742 6.568 0.00 0.00 O +ATOM 48 H TYR A 3 -4.660 4.395 0.286 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.478 2.809 0.991 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.840 4.595 2.283 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.790 3.270 2.890 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.555 5.018 2.982 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.710 1.538 4.369 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.149 4.672 4.736 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.977 1.210 6.151 0.00 0.00 H +ATOM 56 HH TYR A 3 0.563 3.552 6.750 0.00 0.00 H +ATOM 57 N ILE A 4 -5.264 1.030 1.024 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.827 -0.326 0.952 0.00 0.00 C +ATOM 59 C ILE A 4 -5.114 -1.151 -0.131 0.00 0.00 C +ATOM 60 O ILE A 4 -4.658 -2.257 0.147 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.356 -0.272 0.705 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.110 0.581 1.757 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.947 -1.695 0.687 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.451 1.106 1.228 0.00 0.00 C +ATOM 65 H ILE A 4 -5.870 1.816 0.855 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.652 -0.820 1.909 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.515 0.178 -0.278 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.294 -0.024 2.624 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.523 1.453 2.040 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.530 -2.276 -0.135 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.726 -2.202 1.628 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.028 -1.659 0.555 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -9.295 1.636 0.288 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -10.147 0.285 1.062 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.883 1.794 1.955 0.00 0.00 H +ATOM 76 N GLN A 5 -4.980 -0.613 -1.354 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.248 -1.254 -2.452 0.00 0.00 C +ATOM 78 C GLN A 5 -2.764 -1.451 -2.115 0.00 0.00 C +ATOM 79 O GLN A 5 -2.210 -2.510 -2.406 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.397 -0.444 -3.752 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.780 -0.585 -4.421 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.677 -1.049 -5.874 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.908 -0.532 -6.667 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.453 -2.034 -6.287 0.00 0.00 N +ATOM 85 H GLN A 5 -5.284 0.340 -1.486 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.665 -2.247 -2.623 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.235 0.592 -3.525 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.627 -0.786 -4.446 0.00 0.00 H +ATOM 89 1HG GLN A 5 -6.358 -1.301 -3.870 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.280 0.383 -4.410 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.135 -2.486 -5.703 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -6.309 -2.278 -7.253 0.00 0.00 H +ATOM 93 N TRP A 6 -2.122 -0.471 -1.467 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.752 -0.626 -0.970 0.00 0.00 C +ATOM 95 C TRP A 6 -0.626 -1.773 0.051 0.00 0.00 C +ATOM 96 O TRP A 6 0.275 -2.606 -0.073 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.246 0.708 -0.409 0.00 0.00 C +ATOM 98 CG TRP A 6 1.122 0.638 0.187 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.283 0.580 -0.505 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.498 0.590 1.599 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.337 0.446 0.374 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.919 0.485 1.681 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.791 0.638 2.820 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.609 0.442 2.898 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.472 0.592 4.050 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.875 0.504 4.093 0.00 0.00 C +ATOM 107 H TRP A 6 -2.627 0.394 -1.292 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.116 -0.900 -1.810 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.230 1.425 -1.207 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.932 1.060 0.358 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.377 0.619 -1.579 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.319 0.364 0.099 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.286 0.722 2.803 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.686 0.366 2.903 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 0.916 0.637 4.976 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.385 0.485 5.046 0.00 0.00 H +ATOM 117 N LEU A 7 -1.546 -1.866 1.019 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.600 -2.993 1.954 0.00 0.00 C +ATOM 119 C LEU A 7 -1.891 -4.331 1.257 0.00 0.00 C +ATOM 120 O LEU A 7 -1.258 -5.322 1.617 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.629 -2.736 3.069 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.255 -1.624 4.066 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.410 -1.464 5.059 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.975 -1.930 4.852 0.00 0.00 C +ATOM 125 H LEU A 7 -2.238 -1.124 1.101 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.616 -3.103 2.408 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.559 -2.467 2.606 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.758 -3.662 3.632 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.117 -0.684 3.539 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.330 -1.232 4.522 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.546 -2.384 5.627 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.198 -0.653 5.753 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.059 -2.897 5.349 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.117 -1.940 4.182 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.809 -1.154 5.600 0.00 0.00 H +ATOM 136 N LYS A 8 -2.780 -4.375 0.246 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.068 -5.596 -0.534 0.00 0.00 C +ATOM 138 C LYS A 8 -1.816 -6.219 -1.151 0.00 0.00 C +ATOM 139 O LYS A 8 -1.740 -7.439 -1.237 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.081 -5.335 -1.662 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.498 -4.986 -1.175 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.576 -5.917 -1.747 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.443 -7.334 -1.176 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.563 -8.199 -1.611 0.00 0.00 N +ATOM 145 H LYS A 8 -3.304 -3.525 0.051 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.475 -6.350 0.141 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.719 -4.518 -2.256 0.00 0.00 H +ATOM 148 2HB LYS A 8 -4.124 -6.228 -2.289 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.519 -5.056 -0.105 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.730 -3.973 -1.499 0.00 0.00 H +ATOM 151 1HD LYS A 8 -7.544 -5.528 -1.496 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.493 -5.943 -2.836 0.00 0.00 H +ATOM 153 1HE LYS A 8 -5.519 -7.762 -1.515 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.423 -7.269 -0.084 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.442 -7.832 -1.266 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.603 -8.242 -2.621 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -7.442 -9.138 -1.253 0.00 0.00 H +ATOM 158 N ASP A 9 -0.849 -5.393 -1.556 0.00 0.00 N +ATOM 159 CA ASP A 9 0.436 -5.853 -2.083 0.00 0.00 C +ATOM 160 C ASP A 9 1.332 -6.506 -1.009 0.00 0.00 C +ATOM 161 O ASP A 9 2.223 -7.275 -1.345 0.00 0.00 O +ATOM 162 CB ASP A 9 1.145 -4.662 -2.744 0.00 0.00 C +ATOM 163 CG ASP A 9 2.097 -5.123 -3.846 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.661 -5.116 -5.015 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.259 -5.441 -3.507 0.00 0.00 O +ATOM 166 H ASP A 9 -1.027 -4.396 -1.508 0.00 0.00 H +ATOM 167 HA ASP A 9 0.243 -6.603 -2.852 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.408 -4.009 -3.170 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.699 -4.094 -1.991 0.00 0.00 H +ATOM 170 N GLY A 10 1.085 -6.233 0.280 0.00 0.00 N +ATOM 171 CA GLY A 10 1.935 -6.630 1.406 0.00 0.00 C +ATOM 172 C GLY A 10 2.538 -5.448 2.178 0.00 0.00 C +ATOM 173 O GLY A 10 3.381 -5.658 3.052 0.00 0.00 O +ATOM 174 H GLY A 10 0.224 -5.740 0.500 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.338 -7.217 2.103 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.755 -7.257 1.056 0.00 0.00 H +ATOM 177 N GLY A 11 2.139 -4.205 1.865 0.00 0.00 N +ATOM 178 CA GLY A 11 2.660 -3.003 2.510 0.00 0.00 C +ATOM 179 C GLY A 11 4.193 -2.919 2.402 0.00 0.00 C +ATOM 180 O GLY A 11 4.722 -3.051 1.294 0.00 0.00 O +ATOM 181 H GLY A 11 1.481 -4.078 1.104 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.230 -2.129 2.025 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.339 -3.009 3.550 0.00 0.00 H +ATOM 184 N PRO A 12 4.936 -2.732 3.516 0.00 0.00 N +ATOM 185 CA PRO A 12 6.401 -2.697 3.498 0.00 0.00 C +ATOM 186 C PRO A 12 7.057 -3.980 2.962 0.00 0.00 C +ATOM 187 O PRO A 12 8.194 -3.921 2.498 0.00 0.00 O +ATOM 188 CB PRO A 12 6.843 -2.444 4.945 0.00 0.00 C +ATOM 189 CG PRO A 12 5.600 -1.887 5.633 0.00 0.00 C +ATOM 190 CD PRO A 12 4.459 -2.571 4.884 0.00 0.00 C +ATOM 191 HA PRO A 12 6.718 -1.858 2.877 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.157 -3.358 5.411 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.673 -1.736 4.990 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.587 -2.145 6.675 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.548 -0.809 5.478 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.243 -3.527 5.321 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.561 -1.958 4.940 0.00 0.00 H +ATOM 198 N SER A 13 6.364 -5.132 2.996 0.00 0.00 N +ATOM 199 CA SER A 13 6.922 -6.427 2.577 0.00 0.00 C +ATOM 200 C SER A 13 7.348 -6.452 1.106 0.00 0.00 C +ATOM 201 O SER A 13 8.273 -7.185 0.760 0.00 0.00 O +ATOM 202 CB SER A 13 5.902 -7.544 2.812 0.00 0.00 C +ATOM 203 OG SER A 13 6.513 -8.805 2.628 0.00 0.00 O +ATOM 204 H SER A 13 5.404 -5.115 3.326 0.00 0.00 H +ATOM 205 HA SER A 13 7.802 -6.636 3.185 0.00 0.00 H +ATOM 206 1HB SER A 13 5.525 -7.475 3.814 0.00 0.00 H +ATOM 207 2HB SER A 13 5.073 -7.436 2.110 0.00 0.00 H +ATOM 208 HG SER A 13 6.978 -8.809 1.779 0.00 0.00 H +ATOM 209 N SER A 14 6.688 -5.663 0.253 0.00 0.00 N +ATOM 210 CA SER A 14 7.033 -5.491 -1.164 0.00 0.00 C +ATOM 211 C SER A 14 8.036 -4.355 -1.407 0.00 0.00 C +ATOM 212 O SER A 14 8.270 -3.979 -2.556 0.00 0.00 O +ATOM 213 CB SER A 14 5.763 -5.217 -1.973 0.00 0.00 C +ATOM 214 OG SER A 14 4.936 -6.345 -2.040 0.00 0.00 O +ATOM 215 H SER A 14 5.903 -5.135 0.612 0.00 0.00 H +ATOM 216 HA SER A 14 7.475 -6.413 -1.545 0.00 0.00 H +ATOM 217 1HB SER A 14 5.221 -4.416 -1.508 0.00 0.00 H +ATOM 218 2HB SER A 14 6.026 -4.948 -2.995 0.00 0.00 H +ATOM 219 HG SER A 14 4.164 -6.059 -2.655 0.00 0.00 H +ATOM 220 N GLY A 15 8.590 -3.733 -0.358 0.00 0.00 N +ATOM 221 CA GLY A 15 9.577 -2.650 -0.433 0.00 0.00 C +ATOM 222 C GLY A 15 9.029 -1.291 -0.893 0.00 0.00 C +ATOM 223 O GLY A 15 9.565 -0.255 -0.498 0.00 0.00 O +ATOM 224 H GLY A 15 8.346 -4.054 0.578 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.022 -2.519 0.554 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.370 -2.944 -1.121 0.00 0.00 H +ATOM 227 N ARG A 16 7.961 -1.275 -1.702 0.00 0.00 N +ATOM 228 CA ARG A 16 7.253 -0.068 -2.152 0.00 0.00 C +ATOM 229 C ARG A 16 6.758 0.782 -0.961 0.00 0.00 C +ATOM 230 O ARG A 16 6.062 0.249 -0.094 0.00 0.00 O +ATOM 231 CB ARG A 16 6.114 -0.429 -3.128 0.00 0.00 C +ATOM 232 CG ARG A 16 5.073 -1.437 -2.599 0.00 0.00 C +ATOM 233 CD ARG A 16 4.058 -1.882 -3.667 0.00 0.00 C +ATOM 234 NE ARG A 16 2.925 -0.944 -3.816 0.00 0.00 N +ATOM 235 CZ ARG A 16 2.827 0.118 -4.610 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.797 0.480 -5.418 0.00 0.00 N +ATOM 237 NH2 ARG A 16 1.736 0.848 -4.603 0.00 0.00 N +ATOM 238 H ARG A 16 7.673 -2.184 -2.046 0.00 0.00 H +ATOM 239 HA ARG A 16 7.981 0.515 -2.712 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.597 0.477 -3.381 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.567 -0.849 -4.028 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.592 -2.305 -2.239 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.537 -1.022 -1.749 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.565 -1.958 -4.610 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.649 -2.842 -3.350 0.00 0.00 H +ATOM 246 HE ARG A 16 2.106 -1.187 -3.286 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.617 -0.096 -5.446 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.713 1.284 -6.011 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 0.947 0.584 -4.042 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 1.678 1.660 -5.191 0.00 0.00 H +ATOM 251 N PRO A 17 7.067 2.094 -0.905 0.00 0.00 N +ATOM 252 CA PRO A 17 6.620 2.967 0.182 0.00 0.00 C +ATOM 253 C PRO A 17 5.099 3.227 0.122 0.00 0.00 C +ATOM 254 O PRO A 17 4.486 3.009 -0.928 0.00 0.00 O +ATOM 255 CB PRO A 17 7.427 4.260 0.005 0.00 0.00 C +ATOM 256 CG PRO A 17 7.667 4.322 -1.501 0.00 0.00 C +ATOM 257 CD PRO A 17 7.835 2.854 -1.882 0.00 0.00 C +ATOM 258 HA PRO A 17 6.870 2.512 1.140 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.867 5.112 0.340 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.385 4.162 0.519 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.828 4.758 -2.008 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.552 4.908 -1.749 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.456 2.680 -2.871 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.888 2.571 -1.812 0.00 0.00 H +ATOM 265 N PRO A 18 4.480 3.698 1.223 0.00 0.00 N +ATOM 266 CA PRO A 18 3.051 4.007 1.257 0.00 0.00 C +ATOM 267 C PRO A 18 2.699 5.236 0.396 0.00 0.00 C +ATOM 268 O PRO A 18 3.570 6.059 0.111 0.00 0.00 O +ATOM 269 CB PRO A 18 2.722 4.232 2.738 0.00 0.00 C +ATOM 270 CG PRO A 18 4.041 4.721 3.329 0.00 0.00 C +ATOM 271 CD PRO A 18 5.086 3.950 2.524 0.00 0.00 C +ATOM 272 HA PRO A 18 2.496 3.146 0.892 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.954 4.972 2.852 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.449 3.284 3.200 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.155 5.779 3.195 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.113 4.505 4.395 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.979 4.535 2.413 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.300 2.999 3.013 0.00 0.00 H +ATOM 279 N PRO A 19 1.420 5.393 -0.004 0.00 0.00 N +ATOM 280 CA PRO A 19 0.957 6.533 -0.802 0.00 0.00 C +ATOM 281 C PRO A 19 0.749 7.823 0.014 0.00 0.00 C +ATOM 282 O PRO A 19 0.677 8.899 -0.575 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.367 6.064 -1.415 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.913 5.086 -0.375 0.00 0.00 C +ATOM 285 CD PRO A 19 0.348 4.422 0.169 0.00 0.00 C +ATOM 286 HA PRO A 19 1.669 6.748 -1.599 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.038 6.889 -1.556 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.164 5.530 -2.346 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.441 5.605 0.402 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.584 4.357 -0.825 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.225 4.183 1.208 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.576 3.535 -0.421 0.00 0.00 H +ATOM 293 N SER A 20 0.622 7.704 1.342 0.00 0.00 N +ATOM 294 CA SER A 20 0.537 8.783 2.335 0.00 0.00 C +ATOM 295 C SER A 20 1.931 9.218 2.798 0.00 0.00 C +ATOM 296 O SER A 20 2.563 8.335 3.437 0.00 0.00 O +ATOM 297 CB SER A 20 -0.247 8.262 3.545 0.00 0.00 C +ATOM 298 OG SER A 20 0.531 7.207 4.069 0.00 0.00 O +ATOM 299 OXT SER A 20 2.277 10.398 2.599 0.00 0.00 O +ATOM 300 H SER A 20 0.701 6.779 1.733 0.00 0.00 H +ATOM 301 HA SER A 20 0.039 9.654 1.908 0.00 0.00 H +ATOM 302 1HB SER A 20 -0.369 9.038 4.276 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.237 7.911 3.252 0.00 0.00 H +ATOM 304 HG SER A 20 1.480 7.561 3.895 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 24 +ATOM 1 N ASN A 1 -6.292 7.385 1.128 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.232 6.863 0.107 0.00 0.00 C +ATOM 3 C ASN A 1 -6.739 5.538 -0.485 0.00 0.00 C +ATOM 4 O ASN A 1 -7.431 4.543 -0.336 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.545 7.923 -0.975 0.00 0.00 C +ATOM 6 CG ASN A 1 -6.313 8.297 -1.796 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -5.208 8.306 -1.270 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -6.440 8.526 -3.087 0.00 0.00 N +ATOM 9 1H ASN A 1 -6.040 6.659 1.782 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.460 7.735 0.662 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.719 8.150 1.634 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.173 6.624 0.607 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.294 7.530 -1.636 0.00 0.00 H +ATOM 14 2HB ASN A 1 -7.929 8.825 -0.499 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -7.324 8.491 -3.570 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -5.584 8.752 -3.571 0.00 0.00 H +ATOM 17 N LEU A 2 -5.556 5.496 -1.115 0.00 0.00 N +ATOM 18 CA LEU A 2 -5.032 4.330 -1.843 0.00 0.00 C +ATOM 19 C LEU A 2 -4.313 3.290 -0.955 0.00 0.00 C +ATOM 20 O LEU A 2 -3.853 2.259 -1.446 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.138 4.841 -3.003 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.722 4.651 -4.418 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.894 3.173 -4.766 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -6.050 5.386 -4.636 0.00 0.00 C +ATOM 25 H LEU A 2 -5.044 6.368 -1.237 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.880 3.796 -2.268 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.967 5.890 -2.853 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.179 4.327 -2.975 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.002 5.061 -5.126 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -3.966 2.642 -4.555 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -5.713 2.736 -4.196 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -5.117 3.069 -5.827 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -6.733 5.221 -3.804 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.855 6.450 -4.745 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -6.526 5.028 -5.550 0.00 0.00 H +ATOM 36 N TYR A 3 -4.243 3.530 0.360 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.536 2.698 1.337 0.00 0.00 C +ATOM 38 C TYR A 3 -3.999 1.230 1.340 0.00 0.00 C +ATOM 39 O TYR A 3 -3.180 0.335 1.524 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.688 3.329 2.730 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.527 3.057 3.667 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.478 3.993 3.769 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.504 1.888 4.455 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.422 3.773 4.671 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.449 1.665 5.360 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.410 2.617 5.478 0.00 0.00 C +ATOM 47 OH TYR A 3 0.592 2.435 6.380 0.00 0.00 O +ATOM 48 H TYR A 3 -4.647 4.393 0.678 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.476 2.708 1.078 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.781 4.391 2.610 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.613 2.981 3.190 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.485 4.893 3.169 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.302 1.165 4.368 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.377 4.493 4.774 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.435 0.773 5.967 0.00 0.00 H +ATOM 56 HH TYR A 3 0.371 1.780 7.044 0.00 0.00 H +ATOM 57 N ILE A 4 -5.291 0.971 1.083 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.855 -0.385 0.970 0.00 0.00 C +ATOM 59 C ILE A 4 -5.185 -1.167 -0.172 0.00 0.00 C +ATOM 60 O ILE A 4 -4.825 -2.331 0.000 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.390 -0.331 0.775 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.107 0.494 1.877 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.991 -1.748 0.746 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.694 1.795 1.319 0.00 0.00 C +ATOM 65 H ILE A 4 -5.903 1.762 0.942 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.647 -0.919 1.898 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.594 0.123 -0.197 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.901 -0.096 2.292 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.417 0.733 2.687 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.583 -2.322 -0.085 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.771 -2.267 1.681 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.072 -1.688 0.616 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.897 2.395 0.886 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.436 1.569 0.553 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.171 2.357 2.121 0.00 0.00 H +ATOM 76 N GLN A 5 -4.990 -0.524 -1.331 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.287 -1.099 -2.478 0.00 0.00 C +ATOM 78 C GLN A 5 -2.828 -1.408 -2.125 0.00 0.00 C +ATOM 79 O GLN A 5 -2.375 -2.526 -2.353 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.383 -0.141 -3.683 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.134 -0.729 -4.885 0.00 0.00 C +ATOM 82 CD GLN A 5 -6.640 -0.793 -4.645 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -7.380 0.135 -4.919 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -7.150 -1.887 -4.116 0.00 0.00 N +ATOM 85 H GLN A 5 -5.215 0.461 -1.367 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.756 -2.048 -2.731 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.893 0.749 -3.368 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.380 0.134 -4.013 0.00 0.00 H +ATOM 89 1HG GLN A 5 -4.946 -0.115 -5.745 0.00 0.00 H +ATOM 90 2HG GLN A 5 -4.744 -1.721 -5.116 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -6.566 -2.656 -3.852 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -8.148 -1.839 -3.996 0.00 0.00 H +ATOM 93 N TRP A 6 -2.121 -0.454 -1.511 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.744 -0.663 -1.057 0.00 0.00 C +ATOM 95 C TRP A 6 -0.613 -1.790 -0.020 0.00 0.00 C +ATOM 96 O TRP A 6 0.331 -2.579 -0.067 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.201 0.655 -0.509 0.00 0.00 C +ATOM 98 CG TRP A 6 1.191 0.564 0.027 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.317 0.549 -0.722 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.627 0.427 1.415 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.412 0.401 0.105 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.049 0.343 1.428 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.972 0.368 2.666 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.794 0.234 2.609 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.709 0.249 3.860 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.114 0.197 3.837 0.00 0.00 C +ATOM 107 H TRP A 6 -2.569 0.443 -1.359 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.136 -0.952 -1.917 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.211 1.379 -1.301 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.855 1.013 0.287 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.345 0.630 -1.800 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.387 0.366 -0.203 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.106 0.426 2.698 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.873 0.181 2.560 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.192 0.211 4.808 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.670 0.129 4.761 0.00 0.00 H +ATOM 117 N LEU A 7 -1.578 -1.920 0.901 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.631 -3.070 1.801 0.00 0.00 C +ATOM 119 C LEU A 7 -1.843 -4.394 1.050 0.00 0.00 C +ATOM 120 O LEU A 7 -1.191 -5.372 1.418 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.686 -2.859 2.899 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.268 -1.863 4.000 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.426 -1.718 4.994 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.023 -2.315 4.775 0.00 0.00 C +ATOM 125 H LEU A 7 -2.292 -1.197 0.964 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.656 -3.165 2.275 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.583 -2.492 2.437 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.886 -3.821 3.373 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.065 -0.889 3.560 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.316 -1.368 4.472 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.638 -2.679 5.461 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.167 -0.998 5.769 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.138 -3.351 5.097 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.138 -2.227 4.147 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.876 -1.684 5.651 0.00 0.00 H +ATOM 136 N LYS A 8 -2.657 -4.444 -0.024 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.775 -5.659 -0.860 0.00 0.00 C +ATOM 138 C LYS A 8 -1.440 -6.118 -1.450 0.00 0.00 C +ATOM 139 O LYS A 8 -1.240 -7.322 -1.591 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.774 -5.527 -2.021 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.249 -5.395 -1.620 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.167 -6.088 -2.648 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.424 -5.268 -2.953 0.00 0.00 C +ATOM 144 NZ LYS A 8 -8.590 -6.134 -3.235 0.00 0.00 N +ATOM 145 H LYS A 8 -3.174 -3.604 -0.275 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.108 -6.475 -0.218 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.507 -4.656 -2.587 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.662 -6.434 -2.619 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.393 -5.849 -0.659 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.497 -4.337 -1.541 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.619 -6.230 -3.559 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.435 -7.067 -2.249 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.648 -4.648 -2.106 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.213 -4.642 -3.824 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.371 -6.792 -3.971 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -8.842 -6.653 -2.403 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -9.385 -5.577 -3.521 0.00 0.00 H +ATOM 158 N ASP A 9 -0.520 -5.196 -1.760 0.00 0.00 N +ATOM 159 CA ASP A 9 0.824 -5.550 -2.228 0.00 0.00 C +ATOM 160 C ASP A 9 1.682 -6.246 -1.149 0.00 0.00 C +ATOM 161 O ASP A 9 2.738 -6.791 -1.479 0.00 0.00 O +ATOM 162 CB ASP A 9 1.569 -4.302 -2.729 0.00 0.00 C +ATOM 163 CG ASP A 9 0.926 -3.620 -3.934 0.00 0.00 C +ATOM 164 OD1 ASP A 9 0.770 -4.314 -4.963 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.694 -2.393 -3.841 0.00 0.00 O +ATOM 166 H ASP A 9 -0.774 -4.217 -1.668 0.00 0.00 H +ATOM 167 HA ASP A 9 0.732 -6.246 -3.065 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.611 -3.592 -1.925 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.563 -4.606 -3.037 0.00 0.00 H +ATOM 170 N GLY A 10 1.266 -6.215 0.128 0.00 0.00 N +ATOM 171 CA GLY A 10 2.015 -6.734 1.274 0.00 0.00 C +ATOM 172 C GLY A 10 2.595 -5.646 2.186 0.00 0.00 C +ATOM 173 O GLY A 10 3.441 -5.959 3.033 0.00 0.00 O +ATOM 174 H GLY A 10 0.348 -5.819 0.317 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.343 -7.348 1.874 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.832 -7.371 0.933 0.00 0.00 H +ATOM 177 N GLY A 11 2.188 -4.378 2.015 0.00 0.00 N +ATOM 178 CA GLY A 11 2.682 -3.258 2.815 0.00 0.00 C +ATOM 179 C GLY A 11 4.216 -3.151 2.773 0.00 0.00 C +ATOM 180 O GLY A 11 4.797 -3.293 1.691 0.00 0.00 O +ATOM 181 H GLY A 11 1.532 -4.174 1.270 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.262 -2.332 2.425 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.330 -3.391 3.837 0.00 0.00 H +ATOM 184 N PRO A 12 4.904 -2.935 3.918 0.00 0.00 N +ATOM 185 CA PRO A 12 6.365 -2.823 3.965 0.00 0.00 C +ATOM 186 C PRO A 12 7.102 -4.015 3.335 0.00 0.00 C +ATOM 187 O PRO A 12 8.165 -3.833 2.746 0.00 0.00 O +ATOM 188 CB PRO A 12 6.736 -2.681 5.447 0.00 0.00 C +ATOM 189 CG PRO A 12 5.452 -2.189 6.112 0.00 0.00 C +ATOM 190 CD PRO A 12 4.353 -2.826 5.263 0.00 0.00 C +ATOM 191 HA PRO A 12 6.658 -1.915 3.438 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.038 -3.626 5.856 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.554 -1.973 5.589 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.394 -2.523 7.130 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.394 -1.103 6.036 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.102 -3.797 5.644 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.456 -2.209 5.293 0.00 0.00 H +ATOM 198 N SER A 13 6.528 -5.228 3.414 0.00 0.00 N +ATOM 199 CA SER A 13 7.138 -6.446 2.859 0.00 0.00 C +ATOM 200 C SER A 13 7.295 -6.407 1.333 0.00 0.00 C +ATOM 201 O SER A 13 8.174 -7.073 0.792 0.00 0.00 O +ATOM 202 CB SER A 13 6.348 -7.692 3.277 0.00 0.00 C +ATOM 203 OG SER A 13 5.118 -7.809 2.592 0.00 0.00 O +ATOM 204 H SER A 13 5.614 -5.292 3.842 0.00 0.00 H +ATOM 205 HA SER A 13 8.138 -6.537 3.280 0.00 0.00 H +ATOM 206 1HB SER A 13 6.942 -8.561 3.069 0.00 0.00 H +ATOM 207 2HB SER A 13 6.165 -7.667 4.352 0.00 0.00 H +ATOM 208 HG SER A 13 4.500 -7.079 2.847 0.00 0.00 H +ATOM 209 N SER A 14 6.489 -5.586 0.645 0.00 0.00 N +ATOM 210 CA SER A 14 6.548 -5.376 -0.801 0.00 0.00 C +ATOM 211 C SER A 14 7.615 -4.354 -1.227 0.00 0.00 C +ATOM 212 O SER A 14 7.779 -4.098 -2.420 0.00 0.00 O +ATOM 213 CB SER A 14 5.172 -4.906 -1.282 0.00 0.00 C +ATOM 214 OG SER A 14 4.768 -5.648 -2.411 0.00 0.00 O +ATOM 215 H SER A 14 5.813 -5.042 1.173 0.00 0.00 H +ATOM 216 HA SER A 14 6.781 -6.328 -1.284 0.00 0.00 H +ATOM 217 1HB SER A 14 4.456 -5.042 -0.494 0.00 0.00 H +ATOM 218 2HB SER A 14 5.202 -3.849 -1.527 0.00 0.00 H +ATOM 219 HG SER A 14 4.004 -6.211 -2.103 0.00 0.00 H +ATOM 220 N GLY A 15 8.309 -3.713 -0.277 0.00 0.00 N +ATOM 221 CA GLY A 15 9.390 -2.752 -0.512 0.00 0.00 C +ATOM 222 C GLY A 15 8.950 -1.376 -1.041 0.00 0.00 C +ATOM 223 O GLY A 15 9.569 -0.373 -0.689 0.00 0.00 O +ATOM 224 H GLY A 15 8.111 -3.947 0.692 0.00 0.00 H +ATOM 225 1HA GLY A 15 9.920 -2.595 0.428 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.093 -3.179 -1.226 0.00 0.00 H +ATOM 227 N ARG A 16 7.896 -1.304 -1.867 0.00 0.00 N +ATOM 228 CA ARG A 16 7.317 -0.041 -2.355 0.00 0.00 C +ATOM 229 C ARG A 16 6.801 0.839 -1.194 0.00 0.00 C +ATOM 230 O ARG A 16 6.157 0.315 -0.283 0.00 0.00 O +ATOM 231 CB ARG A 16 6.215 -0.292 -3.405 0.00 0.00 C +ATOM 232 CG ARG A 16 5.119 -1.280 -2.965 0.00 0.00 C +ATOM 233 CD ARG A 16 3.913 -1.309 -3.915 0.00 0.00 C +ATOM 234 NE ARG A 16 4.266 -1.765 -5.273 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.470 -3.012 -5.684 0.00 0.00 C +ATOM 236 NH1 ARG A 16 4.434 -4.046 -4.877 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.742 -3.246 -6.946 0.00 0.00 N +ATOM 238 H ARG A 16 7.511 -2.196 -2.163 0.00 0.00 H +ATOM 239 HA ARG A 16 8.125 0.496 -2.848 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.747 0.647 -3.630 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.683 -0.678 -4.311 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.544 -2.264 -2.923 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.753 -1.013 -1.976 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.174 -1.974 -3.511 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.485 -0.307 -3.974 0.00 0.00 H +ATOM 246 HE ARG A 16 4.286 -1.055 -5.983 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.241 -3.927 -3.896 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 4.571 -4.985 -5.203 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.784 -2.494 -7.608 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.878 -4.192 -7.246 0.00 0.00 H +ATOM 251 N PRO A 17 7.021 2.169 -1.222 0.00 0.00 N +ATOM 252 CA PRO A 17 6.564 3.076 -0.168 0.00 0.00 C +ATOM 253 C PRO A 17 5.035 3.273 -0.193 0.00 0.00 C +ATOM 254 O PRO A 17 4.408 3.044 -1.232 0.00 0.00 O +ATOM 255 CB PRO A 17 7.304 4.392 -0.436 0.00 0.00 C +ATOM 256 CG PRO A 17 7.488 4.390 -1.951 0.00 0.00 C +ATOM 257 CD PRO A 17 7.717 2.912 -2.265 0.00 0.00 C +ATOM 258 HA PRO A 17 6.863 2.681 0.803 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.718 5.234 -0.121 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.279 4.364 0.050 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.611 4.759 -2.447 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.336 5.002 -2.259 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.314 2.668 -3.229 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.783 2.685 -2.219 0.00 0.00 H +ATOM 265 N PRO A 18 4.420 3.714 0.924 0.00 0.00 N +ATOM 266 CA PRO A 18 2.979 3.943 0.997 0.00 0.00 C +ATOM 267 C PRO A 18 2.541 5.167 0.167 0.00 0.00 C +ATOM 268 O PRO A 18 3.300 6.129 0.038 0.00 0.00 O +ATOM 269 CB PRO A 18 2.670 4.129 2.486 0.00 0.00 C +ATOM 270 CG PRO A 18 3.976 4.683 3.053 0.00 0.00 C +ATOM 271 CD PRO A 18 5.042 3.977 2.213 0.00 0.00 C +ATOM 272 HA PRO A 18 2.469 3.052 0.638 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.865 4.824 2.627 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.459 3.159 2.939 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.030 5.747 2.929 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.085 4.459 4.114 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.901 4.608 2.092 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.310 3.030 2.683 0.00 0.00 H +ATOM 279 N PRO A 19 1.305 5.165 -0.369 0.00 0.00 N +ATOM 280 CA PRO A 19 0.753 6.266 -1.151 0.00 0.00 C +ATOM 281 C PRO A 19 0.318 7.409 -0.226 0.00 0.00 C +ATOM 282 O PRO A 19 -0.451 7.189 0.714 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.432 5.656 -1.908 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.932 4.559 -0.967 0.00 0.00 C +ATOM 285 CD PRO A 19 0.347 4.074 -0.285 0.00 0.00 C +ATOM 286 HA PRO A 19 1.493 6.630 -1.865 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.195 6.390 -2.081 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.073 5.200 -2.833 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.625 4.954 -0.249 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.416 3.748 -1.510 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.150 3.833 0.742 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.754 3.228 -0.832 0.00 0.00 H +ATOM 293 N SER A 20 0.793 8.629 -0.503 0.00 0.00 N +ATOM 294 CA SER A 20 0.416 9.847 0.221 0.00 0.00 C +ATOM 295 C SER A 20 0.407 11.090 -0.662 0.00 0.00 C +ATOM 296 O SER A 20 0.891 11.013 -1.811 0.00 0.00 O +ATOM 297 CB SER A 20 1.359 10.094 1.397 0.00 0.00 C +ATOM 298 OG SER A 20 0.787 11.196 2.067 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.035 12.112 -0.078 0.00 0.00 O +ATOM 300 H SER A 20 1.371 8.782 -1.320 0.00 0.00 H +ATOM 301 HA SER A 20 -0.594 9.730 0.608 0.00 0.00 H +ATOM 302 1HB SER A 20 1.400 9.236 2.040 0.00 0.00 H +ATOM 303 2HB SER A 20 2.353 10.357 1.025 0.00 0.00 H +ATOM 304 HG SER A 20 0.387 11.733 1.311 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 25 +ATOM 1 N ASN A 1 -8.822 3.713 -1.688 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.636 4.584 -1.839 0.00 0.00 C +ATOM 3 C ASN A 1 -6.387 3.720 -2.050 0.00 0.00 C +ATOM 4 O ASN A 1 -6.449 2.520 -1.793 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.493 5.546 -0.643 0.00 0.00 C +ATOM 6 CG ASN A 1 -6.684 6.775 -1.045 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -5.471 6.716 -1.147 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -7.325 7.882 -1.371 0.00 0.00 N +ATOM 9 1H ASN A 1 -8.903 3.106 -2.494 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.709 3.131 -0.870 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.662 4.268 -1.598 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.770 5.186 -2.739 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.468 5.855 -0.319 0.00 0.00 H +ATOM 14 2HB ASN A 1 -6.990 5.041 0.185 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -8.323 8.004 -1.308 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -6.719 8.647 -1.627 0.00 0.00 H +ATOM 17 N LEU A 2 -5.276 4.311 -2.504 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.020 3.626 -2.831 0.00 0.00 C +ATOM 19 C LEU A 2 -3.471 2.838 -1.629 0.00 0.00 C +ATOM 20 O LEU A 2 -2.958 1.734 -1.800 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.012 4.674 -3.361 0.00 0.00 C +ATOM 22 CG LEU A 2 -2.196 4.219 -4.592 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -1.533 5.435 -5.247 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -1.091 3.204 -4.289 0.00 0.00 C +ATOM 25 H LEU A 2 -5.249 5.328 -2.518 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.228 2.905 -3.623 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.558 5.557 -3.630 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.343 4.981 -2.561 0.00 0.00 H +ATOM 29 HG LEU A 2 -2.881 3.777 -5.315 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -2.296 6.145 -5.570 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -0.864 5.929 -4.541 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -0.962 5.119 -6.121 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -0.285 3.677 -3.730 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -1.483 2.363 -3.723 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -0.681 2.826 -5.224 0.00 0.00 H +ATOM 36 N TYR A 3 -3.666 3.358 -0.409 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.284 2.708 0.847 0.00 0.00 C +ATOM 38 C TYR A 3 -3.873 1.292 1.002 0.00 0.00 C +ATOM 39 O TYR A 3 -3.194 0.398 1.503 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.690 3.607 2.030 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.649 3.669 3.132 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.934 4.863 3.357 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.390 2.535 3.927 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.980 4.936 4.389 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.425 2.597 4.950 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.731 3.802 5.194 0.00 0.00 C +ATOM 47 OH TYR A 3 0.150 3.872 6.227 0.00 0.00 O +ATOM 48 H TYR A 3 -4.047 4.292 -0.362 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.198 2.613 0.856 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.852 4.601 1.660 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.632 3.256 2.454 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.110 5.742 2.747 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -2.935 1.619 3.761 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.449 5.867 4.548 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.221 1.739 5.572 0.00 0.00 H +ATOM 56 HH TYR A 3 0.326 4.786 6.461 0.00 0.00 H +ATOM 57 N ILE A 4 -5.115 1.071 0.535 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.776 -0.242 0.562 0.00 0.00 C +ATOM 59 C ILE A 4 -5.002 -1.217 -0.330 0.00 0.00 C +ATOM 60 O ILE A 4 -4.614 -2.289 0.122 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.263 -0.143 0.130 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.048 0.841 1.030 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.919 -1.539 0.153 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.483 1.110 0.557 0.00 0.00 C +ATOM 65 H ILE A 4 -5.572 1.829 0.046 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.741 -0.629 1.581 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.305 0.225 -0.896 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.090 0.432 2.021 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.535 1.802 1.049 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.419 -2.213 -0.543 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.865 -1.964 1.157 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.963 -1.481 -0.153 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -9.492 1.320 -0.512 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -10.118 0.247 0.759 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.887 1.968 1.096 0.00 0.00 H +ATOM 76 N GLN A 5 -4.757 -0.824 -1.585 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.017 -1.607 -2.576 0.00 0.00 C +ATOM 78 C GLN A 5 -2.587 -1.900 -2.083 0.00 0.00 C +ATOM 79 O GLN A 5 -2.148 -3.047 -2.102 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.057 -0.847 -3.919 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.071 -1.760 -5.155 0.00 0.00 C +ATOM 82 CD GLN A 5 -2.773 -2.524 -5.382 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -2.723 -3.734 -5.250 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -1.697 -1.854 -5.752 0.00 0.00 N +ATOM 85 H GLN A 5 -5.059 0.104 -1.844 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.528 -2.564 -2.697 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.942 -0.241 -3.937 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.227 -0.144 -3.981 0.00 0.00 H +ATOM 89 1HG GLN A 5 -4.865 -2.472 -5.038 0.00 0.00 H +ATOM 90 2HG GLN A 5 -4.268 -1.149 -6.038 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -1.694 -0.862 -5.911 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -0.889 -2.443 -5.884 0.00 0.00 H +ATOM 93 N TRP A 6 -1.898 -0.878 -1.557 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.578 -0.992 -0.936 0.00 0.00 C +ATOM 95 C TRP A 6 -0.552 -2.023 0.205 0.00 0.00 C +ATOM 96 O TRP A 6 0.292 -2.918 0.198 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.127 0.397 -0.466 0.00 0.00 C +ATOM 98 CG TRP A 6 1.249 0.448 0.122 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.402 0.437 -0.587 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.644 0.501 1.528 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.474 0.460 0.282 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.068 0.490 1.594 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.952 0.549 2.757 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.775 0.513 2.805 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.647 0.567 3.982 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.054 0.548 4.010 0.00 0.00 C +ATOM 107 H TRP A 6 -2.335 0.042 -1.580 0.00 0.00 H +ATOM 108 HA TRP A 6 0.127 -1.341 -1.691 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.154 1.059 -1.310 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.830 0.770 0.277 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.467 0.400 -1.665 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.459 0.466 0.011 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.127 0.579 2.747 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.854 0.502 2.796 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.097 0.607 4.913 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.578 0.569 4.955 0.00 0.00 H +ATOM 117 N LEU A 7 -1.488 -1.942 1.163 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.617 -2.951 2.219 0.00 0.00 C +ATOM 119 C LEU A 7 -1.966 -4.341 1.668 0.00 0.00 C +ATOM 120 O LEU A 7 -1.376 -5.320 2.123 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.642 -2.514 3.280 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.149 -1.401 4.223 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.284 -0.995 5.164 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.953 -1.839 5.080 0.00 0.00 C +ATOM 125 H LEU A 7 -2.154 -1.170 1.141 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.644 -3.065 2.695 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.519 -2.160 2.773 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.902 -3.381 3.888 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.860 -0.531 3.640 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.142 -0.659 4.582 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.579 -1.842 5.783 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.959 -0.178 5.809 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.180 -2.772 5.594 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.070 -1.975 4.456 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.724 -1.071 5.819 0.00 0.00 H +ATOM 136 N LYS A 8 -2.866 -4.444 0.675 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.232 -5.709 0.014 0.00 0.00 C +ATOM 138 C LYS A 8 -1.995 -6.419 -0.554 0.00 0.00 C +ATOM 139 O LYS A 8 -1.851 -7.626 -0.374 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.313 -5.443 -1.057 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.232 -6.637 -1.368 0.00 0.00 C +ATOM 142 CD LYS A 8 -4.597 -7.726 -2.241 0.00 0.00 C +ATOM 143 CE LYS A 8 -5.626 -8.816 -2.553 0.00 0.00 C +ATOM 144 NZ LYS A 8 -4.979 -9.985 -3.192 0.00 0.00 N +ATOM 145 H LYS A 8 -3.334 -3.588 0.376 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.648 -6.368 0.776 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.926 -4.632 -0.716 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.853 -5.080 -1.976 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.526 -7.084 -0.438 0.00 0.00 H +ATOM 150 2HG LYS A 8 -6.106 -6.251 -1.896 0.00 0.00 H +ATOM 151 1HD LYS A 8 -4.253 -7.289 -3.159 0.00 0.00 H +ATOM 152 2HD LYS A 8 -3.770 -8.185 -1.708 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.094 -9.129 -1.640 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.396 -8.398 -3.207 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -4.519 -9.702 -4.048 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -4.281 -10.374 -2.570 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -5.664 -10.700 -3.404 0.00 0.00 H +ATOM 158 N ASP A 9 -1.077 -5.668 -1.169 0.00 0.00 N +ATOM 159 CA ASP A 9 0.212 -6.164 -1.668 0.00 0.00 C +ATOM 160 C ASP A 9 1.207 -6.590 -0.560 0.00 0.00 C +ATOM 161 O ASP A 9 2.261 -7.145 -0.857 0.00 0.00 O +ATOM 162 CB ASP A 9 0.834 -5.084 -2.569 0.00 0.00 C +ATOM 163 CG ASP A 9 1.509 -5.695 -3.797 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.746 -5.888 -3.742 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.788 -5.935 -4.790 0.00 0.00 O +ATOM 166 H ASP A 9 -1.310 -4.691 -1.337 0.00 0.00 H +ATOM 167 HA ASP A 9 0.016 -7.046 -2.280 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.061 -4.414 -2.894 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.556 -4.497 -1.999 0.00 0.00 H +ATOM 170 N GLY A 10 0.892 -6.349 0.722 0.00 0.00 N +ATOM 171 CA GLY A 10 1.749 -6.664 1.870 0.00 0.00 C +ATOM 172 C GLY A 10 2.432 -5.442 2.495 0.00 0.00 C +ATOM 173 O GLY A 10 3.341 -5.612 3.316 0.00 0.00 O +ATOM 174 H GLY A 10 -0.020 -5.949 0.925 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.134 -7.131 2.639 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.517 -7.381 1.579 0.00 0.00 H +ATOM 177 N GLY A 11 2.030 -4.224 2.106 0.00 0.00 N +ATOM 178 CA GLY A 11 2.562 -2.956 2.594 0.00 0.00 C +ATOM 179 C GLY A 11 4.077 -2.849 2.377 0.00 0.00 C +ATOM 180 O GLY A 11 4.519 -2.945 1.227 0.00 0.00 O +ATOM 181 H GLY A 11 1.324 -4.158 1.376 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.087 -2.147 2.042 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.297 -2.847 3.642 0.00 0.00 H +ATOM 184 N PRO A 12 4.898 -2.704 3.442 0.00 0.00 N +ATOM 185 CA PRO A 12 6.359 -2.670 3.324 0.00 0.00 C +ATOM 186 C PRO A 12 6.945 -3.880 2.582 0.00 0.00 C +ATOM 187 O PRO A 12 7.983 -3.757 1.936 0.00 0.00 O +ATOM 188 CB PRO A 12 6.900 -2.604 4.759 0.00 0.00 C +ATOM 189 CG PRO A 12 5.728 -2.068 5.577 0.00 0.00 C +ATOM 190 CD PRO A 12 4.512 -2.626 4.845 0.00 0.00 C +ATOM 191 HA PRO A 12 6.641 -1.759 2.794 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.189 -3.579 5.102 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.769 -1.950 4.830 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.767 -2.427 6.588 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.715 -0.978 5.530 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.264 -3.600 5.220 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.657 -1.969 5.001 0.00 0.00 H +ATOM 198 N SER A 13 6.257 -5.031 2.623 0.00 0.00 N +ATOM 199 CA SER A 13 6.670 -6.282 1.972 0.00 0.00 C +ATOM 200 C SER A 13 6.824 -6.145 0.453 0.00 0.00 C +ATOM 201 O SER A 13 7.646 -6.844 -0.133 0.00 0.00 O +ATOM 202 CB SER A 13 5.666 -7.410 2.245 0.00 0.00 C +ATOM 203 OG SER A 13 5.190 -7.395 3.578 0.00 0.00 O +ATOM 204 H SER A 13 5.393 -5.044 3.149 0.00 0.00 H +ATOM 205 HA SER A 13 7.634 -6.578 2.384 0.00 0.00 H +ATOM 206 1HB SER A 13 4.832 -7.298 1.579 0.00 0.00 H +ATOM 207 2HB SER A 13 6.147 -8.369 2.042 0.00 0.00 H +ATOM 208 HG SER A 13 4.440 -6.757 3.610 0.00 0.00 H +ATOM 209 N SER A 14 6.065 -5.236 -0.178 0.00 0.00 N +ATOM 210 CA SER A 14 6.173 -4.951 -1.616 0.00 0.00 C +ATOM 211 C SER A 14 7.384 -4.059 -1.960 0.00 0.00 C +ATOM 212 O SER A 14 7.680 -3.817 -3.128 0.00 0.00 O +ATOM 213 CB SER A 14 4.873 -4.299 -2.106 0.00 0.00 C +ATOM 214 OG SER A 14 4.686 -4.580 -3.476 0.00 0.00 O +ATOM 215 H SER A 14 5.428 -4.670 0.375 0.00 0.00 H +ATOM 216 HA SER A 14 6.289 -5.897 -2.145 0.00 0.00 H +ATOM 217 1HB SER A 14 4.045 -4.689 -1.546 0.00 0.00 H +ATOM 218 2HB SER A 14 4.926 -3.220 -1.965 0.00 0.00 H +ATOM 219 HG SER A 14 3.848 -5.193 -3.590 0.00 0.00 H +ATOM 220 N GLY A 15 8.094 -3.531 -0.951 0.00 0.00 N +ATOM 221 CA GLY A 15 9.291 -2.699 -1.108 0.00 0.00 C +ATOM 222 C GLY A 15 9.020 -1.228 -1.452 0.00 0.00 C +ATOM 223 O GLY A 15 9.943 -0.418 -1.405 0.00 0.00 O +ATOM 224 H GLY A 15 7.836 -3.773 0.003 0.00 0.00 H +ATOM 225 1HA GLY A 15 9.859 -2.730 -0.178 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.916 -3.120 -1.896 0.00 0.00 H +ATOM 227 N ARG A 16 7.772 -0.861 -1.777 0.00 0.00 N +ATOM 228 CA ARG A 16 7.352 0.518 -2.058 0.00 0.00 C +ATOM 229 C ARG A 16 6.926 1.233 -0.760 0.00 0.00 C +ATOM 230 O ARG A 16 6.220 0.619 0.040 0.00 0.00 O +ATOM 231 CB ARG A 16 6.203 0.479 -3.084 0.00 0.00 C +ATOM 232 CG ARG A 16 5.906 1.869 -3.663 0.00 0.00 C +ATOM 233 CD ARG A 16 4.859 1.824 -4.784 0.00 0.00 C +ATOM 234 NE ARG A 16 5.035 2.953 -5.722 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.956 3.050 -6.675 0.00 0.00 C +ATOM 236 NH1 ARG A 16 6.818 2.086 -6.908 0.00 0.00 N +ATOM 237 NH2 ARG A 16 6.038 4.130 -7.417 0.00 0.00 N +ATOM 238 H ARG A 16 7.080 -1.599 -1.790 0.00 0.00 H +ATOM 239 HA ARG A 16 8.204 1.035 -2.496 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.476 -0.180 -3.886 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.302 0.068 -2.623 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.541 2.500 -2.875 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.835 2.270 -4.065 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.961 0.902 -5.323 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.862 1.868 -4.338 0.00 0.00 H +ATOM 246 HE ARG A 16 4.410 3.733 -5.609 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 6.760 1.254 -6.348 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 7.516 2.163 -7.627 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.407 4.899 -7.273 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 6.744 4.192 -8.129 0.00 0.00 H +ATOM 251 N PRO A 17 7.271 2.523 -0.549 0.00 0.00 N +ATOM 252 CA PRO A 17 6.808 3.297 0.611 0.00 0.00 C +ATOM 253 C PRO A 17 5.279 3.519 0.624 0.00 0.00 C +ATOM 254 O PRO A 17 4.632 3.367 -0.415 0.00 0.00 O +ATOM 255 CB PRO A 17 7.573 4.626 0.537 0.00 0.00 C +ATOM 256 CG PRO A 17 7.901 4.777 -0.945 0.00 0.00 C +ATOM 257 CD PRO A 17 8.157 3.337 -1.372 0.00 0.00 C +ATOM 258 HA PRO A 17 7.094 2.768 1.522 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.961 5.439 0.877 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.500 4.546 1.107 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.076 5.201 -1.484 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.773 5.411 -1.109 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.927 3.208 -2.412 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.192 3.067 -1.160 0.00 0.00 H +ATOM 265 N PRO A 18 4.694 3.905 1.780 0.00 0.00 N +ATOM 266 CA PRO A 18 3.255 4.134 1.918 0.00 0.00 C +ATOM 267 C PRO A 18 2.773 5.345 1.089 0.00 0.00 C +ATOM 268 O PRO A 18 3.434 6.387 1.085 0.00 0.00 O +ATOM 269 CB PRO A 18 2.999 4.340 3.415 0.00 0.00 C +ATOM 270 CG PRO A 18 4.345 4.826 3.946 0.00 0.00 C +ATOM 271 CD PRO A 18 5.352 4.088 3.066 0.00 0.00 C +ATOM 272 HA PRO A 18 2.740 3.228 1.610 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.235 5.077 3.575 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.750 3.384 3.875 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.442 5.889 3.834 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.476 4.586 5.001 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.245 4.671 2.949 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.572 3.112 3.500 0.00 0.00 H +ATOM 279 N PRO A 19 1.634 5.227 0.378 0.00 0.00 N +ATOM 280 CA PRO A 19 1.081 6.286 -0.462 0.00 0.00 C +ATOM 281 C PRO A 19 0.140 7.224 0.318 0.00 0.00 C +ATOM 282 O PRO A 19 -0.995 6.854 0.627 0.00 0.00 O +ATOM 283 CB PRO A 19 0.343 5.530 -1.568 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.205 4.301 -0.835 0.00 0.00 C +ATOM 285 CD PRO A 19 0.881 3.994 0.190 0.00 0.00 C +ATOM 286 HA PRO A 19 1.884 6.872 -0.910 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.453 6.123 -1.976 0.00 0.00 H +ATOM 288 2HB PRO A 19 1.059 5.213 -2.327 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.137 4.524 -0.353 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.362 3.458 -1.502 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.439 3.685 1.117 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.543 3.227 -0.214 0.00 0.00 H +ATOM 293 N SER A 20 0.592 8.464 0.558 0.00 0.00 N +ATOM 294 CA SER A 20 -0.080 9.471 1.411 0.00 0.00 C +ATOM 295 C SER A 20 -0.300 8.997 2.863 0.00 0.00 C +ATOM 296 O SER A 20 -1.168 9.604 3.527 0.00 0.00 O +ATOM 297 CB SER A 20 -1.392 9.955 0.771 0.00 0.00 C +ATOM 298 OG SER A 20 -1.109 10.475 -0.508 0.00 0.00 O +ATOM 299 OXT SER A 20 0.428 8.079 3.303 0.00 0.00 O +ATOM 300 H SER A 20 1.561 8.632 0.336 0.00 0.00 H +ATOM 301 HA SER A 20 0.570 10.339 1.493 0.00 0.00 H +ATOM 302 1HB SER A 20 -2.075 9.132 0.683 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.847 10.731 1.390 0.00 0.00 H +ATOM 304 HG SER A 20 -0.488 9.864 -0.909 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 26 +ATOM 1 N ASN A 1 -6.391 7.510 1.067 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.401 6.806 0.244 0.00 0.00 C +ATOM 3 C ASN A 1 -6.844 5.505 -0.338 0.00 0.00 C +ATOM 4 O ASN A 1 -7.312 4.446 0.047 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.052 7.731 -0.811 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.488 7.309 -1.115 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.112 6.606 -0.339 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.066 7.738 -2.223 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.984 6.869 1.737 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.657 7.891 0.486 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.829 8.267 1.573 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.203 6.494 0.918 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.056 8.737 -0.438 0.00 0.00 H +ATOM 14 2HB ASN A 1 -7.467 7.735 -1.732 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -9.621 8.342 -2.895 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -11.024 7.438 -2.329 0.00 0.00 H +ATOM 17 N LEU A 2 -5.809 5.545 -1.190 0.00 0.00 N +ATOM 18 CA LEU A 2 -5.260 4.361 -1.876 0.00 0.00 C +ATOM 19 C LEU A 2 -4.455 3.379 -0.984 0.00 0.00 C +ATOM 20 O LEU A 2 -3.894 2.406 -1.484 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.436 4.848 -3.091 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.581 3.949 -4.337 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -5.961 4.101 -4.990 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.517 4.307 -5.376 0.00 0.00 C +ATOM 25 H LEU A 2 -5.432 6.430 -1.495 0.00 0.00 H +ATOM 26 HA LEU A 2 -6.112 3.787 -2.244 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.762 5.838 -3.347 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.385 4.897 -2.803 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.439 2.910 -4.055 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -6.748 3.783 -4.309 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -6.130 5.140 -5.275 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -6.013 3.478 -5.884 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -3.640 5.340 -5.703 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -2.523 4.177 -4.947 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.611 3.645 -6.237 0.00 0.00 H +ATOM 36 N TYR A 3 -4.393 3.603 0.335 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.609 2.805 1.286 0.00 0.00 C +ATOM 38 C TYR A 3 -3.980 1.311 1.271 0.00 0.00 C +ATOM 39 O TYR A 3 -3.097 0.457 1.342 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.768 3.413 2.688 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.733 2.956 3.700 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.416 3.452 3.615 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -3.089 2.094 4.759 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.459 3.085 4.578 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -2.137 1.743 5.737 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.818 2.240 5.645 0.00 0.00 C +ATOM 47 OH TYR A 3 0.102 1.933 6.600 0.00 0.00 O +ATOM 48 H TYR A 3 -4.931 4.374 0.692 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.558 2.880 1.004 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.700 4.480 2.599 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.769 3.193 3.064 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.140 4.153 2.841 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -4.101 1.723 4.839 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.543 3.484 4.536 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -2.415 1.104 6.560 0.00 0.00 H +ATOM 56 HH TYR A 3 -0.304 1.658 7.423 0.00 0.00 H +ATOM 57 N ILE A 4 -5.271 0.979 1.105 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.754 -0.410 1.022 0.00 0.00 C +ATOM 59 C ILE A 4 -5.089 -1.175 -0.139 0.00 0.00 C +ATOM 60 O ILE A 4 -4.712 -2.334 0.030 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.299 -0.466 0.907 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.026 0.325 2.026 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.790 -1.925 0.951 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.616 1.639 1.507 0.00 0.00 C +ATOM 65 H ILE A 4 -5.941 1.734 1.048 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.466 -0.915 1.945 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.586 -0.056 -0.062 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.820 -0.280 2.419 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.342 0.536 2.850 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.387 -2.483 0.107 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.482 -2.388 1.890 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.878 -1.947 0.874 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.815 2.287 1.164 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.304 1.440 0.682 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.164 2.137 2.308 0.00 0.00 H +ATOM 76 N GLN A 5 -4.926 -0.531 -1.304 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.245 -1.108 -2.469 0.00 0.00 C +ATOM 78 C GLN A 5 -2.765 -1.396 -2.181 0.00 0.00 C +ATOM 79 O GLN A 5 -2.271 -2.461 -2.542 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.387 -0.170 -3.681 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.621 -0.468 -4.541 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.458 -1.776 -5.310 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.686 -1.876 -6.248 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.163 -2.827 -4.942 0.00 0.00 N +ATOM 85 H GLN A 5 -5.175 0.448 -1.343 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.705 -2.066 -2.705 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.457 0.839 -3.324 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.501 -0.243 -4.314 0.00 0.00 H +ATOM 89 1HG GLN A 5 -6.481 -0.542 -3.904 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.740 0.337 -5.267 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -6.842 -2.805 -4.203 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -5.976 -3.641 -5.504 0.00 0.00 H +ATOM 93 N TRP A 6 -2.070 -0.489 -1.486 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.694 -0.725 -1.048 0.00 0.00 C +ATOM 95 C TRP A 6 -0.586 -1.880 -0.041 0.00 0.00 C +ATOM 96 O TRP A 6 0.293 -2.734 -0.172 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.120 0.575 -0.487 0.00 0.00 C +ATOM 98 CG TRP A 6 1.275 0.460 0.036 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.391 0.368 -0.723 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.722 0.382 1.424 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.492 0.238 0.099 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.144 0.266 1.428 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.079 0.400 2.681 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.896 0.202 2.607 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.824 0.321 3.875 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.227 0.234 3.842 0.00 0.00 C +ATOM 107 H TRP A 6 -2.540 0.365 -1.212 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.096 -1.008 -1.916 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.125 1.309 -1.269 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.758 0.938 0.318 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.415 0.380 -1.804 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.461 0.154 -0.221 0.00 0.00 H +ATOM 113 HE3 TRP A 6 0.002 0.485 2.724 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.971 0.113 2.553 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.315 0.339 4.828 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.787 0.188 4.764 0.00 0.00 H +ATOM 117 N LEU A 7 -1.509 -1.961 0.928 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.576 -3.104 1.842 0.00 0.00 C +ATOM 119 C LEU A 7 -1.846 -4.428 1.109 0.00 0.00 C +ATOM 120 O LEU A 7 -1.246 -5.436 1.477 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.635 -2.881 2.933 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.340 -1.734 3.917 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.514 -1.637 4.896 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.050 -1.947 4.717 0.00 0.00 C +ATOM 125 H LEU A 7 -2.179 -1.199 1.017 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.602 -3.218 2.316 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.569 -2.670 2.449 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.724 -3.804 3.508 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.258 -0.794 3.378 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.444 -1.501 4.345 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.577 -2.544 5.497 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.373 -0.786 5.557 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.082 -2.901 5.242 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.188 -1.932 4.050 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.929 -1.141 5.440 0.00 0.00 H +ATOM 136 N LYS A 8 -2.690 -4.435 0.061 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.971 -5.620 -0.774 0.00 0.00 C +ATOM 138 C LYS A 8 -1.703 -6.283 -1.322 0.00 0.00 C +ATOM 139 O LYS A 8 -1.660 -7.507 -1.400 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.900 -5.260 -1.954 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.270 -5.950 -1.934 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.299 -5.296 -1.003 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.225 -5.825 0.432 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.472 -5.522 1.173 0.00 0.00 N +ATOM 145 H LYS A 8 -3.165 -3.561 -0.155 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.442 -6.380 -0.153 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.061 -4.199 -1.939 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.414 -5.561 -2.885 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.666 -5.938 -2.931 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.158 -7.008 -1.693 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.123 -4.238 -0.987 0.00 0.00 H +ATOM 152 2HD LYS A 8 -7.289 -5.514 -1.408 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.080 -6.888 0.407 0.00 0.00 H +ATOM 154 2HE LYS A 8 -5.360 -5.380 0.933 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -7.622 -4.522 1.214 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -8.262 -5.946 0.705 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -7.423 -5.889 2.114 0.00 0.00 H +ATOM 158 N ASP A 9 -0.697 -5.489 -1.696 0.00 0.00 N +ATOM 159 CA ASP A 9 0.578 -5.995 -2.210 0.00 0.00 C +ATOM 160 C ASP A 9 1.430 -6.676 -1.116 0.00 0.00 C +ATOM 161 O ASP A 9 2.217 -7.569 -1.419 0.00 0.00 O +ATOM 162 CB ASP A 9 1.320 -4.822 -2.871 0.00 0.00 C +ATOM 163 CG ASP A 9 2.419 -5.299 -3.819 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.157 -5.333 -5.040 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.520 -5.598 -3.301 0.00 0.00 O +ATOM 166 H ASP A 9 -0.826 -4.488 -1.630 0.00 0.00 H +ATOM 167 HA ASP A 9 0.373 -6.742 -2.979 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.614 -4.235 -3.427 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.750 -4.177 -2.102 0.00 0.00 H +ATOM 170 N GLY A 10 1.241 -6.295 0.157 0.00 0.00 N +ATOM 171 CA GLY A 10 2.072 -6.717 1.292 0.00 0.00 C +ATOM 172 C GLY A 10 2.600 -5.567 2.160 0.00 0.00 C +ATOM 173 O GLY A 10 3.329 -5.819 3.122 0.00 0.00 O +ATOM 174 H GLY A 10 0.439 -5.705 0.348 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.481 -7.376 1.928 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.933 -7.279 0.931 0.00 0.00 H +ATOM 177 N GLY A 11 2.242 -4.309 1.862 0.00 0.00 N +ATOM 178 CA GLY A 11 2.640 -3.145 2.653 0.00 0.00 C +ATOM 179 C GLY A 11 4.171 -3.021 2.779 0.00 0.00 C +ATOM 180 O GLY A 11 4.857 -3.010 1.755 0.00 0.00 O +ATOM 181 H GLY A 11 1.703 -4.147 1.019 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.262 -2.248 2.167 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.174 -3.222 3.633 0.00 0.00 H +ATOM 184 N PRO A 12 4.750 -2.936 3.998 0.00 0.00 N +ATOM 185 CA PRO A 12 6.203 -2.848 4.176 0.00 0.00 C +ATOM 186 C PRO A 12 6.986 -3.997 3.521 0.00 0.00 C +ATOM 187 O PRO A 12 8.127 -3.802 3.103 0.00 0.00 O +ATOM 188 CB PRO A 12 6.446 -2.831 5.690 0.00 0.00 C +ATOM 189 CG PRO A 12 5.113 -2.378 6.278 0.00 0.00 C +ATOM 190 CD PRO A 12 4.086 -2.931 5.293 0.00 0.00 C +ATOM 191 HA PRO A 12 6.548 -1.905 3.749 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.705 -3.810 6.045 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.253 -2.148 5.957 0.00 0.00 H +ATOM 194 1HG PRO A 12 4.966 -2.790 7.258 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.066 -1.289 6.283 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.799 -3.927 5.571 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.196 -2.303 5.294 0.00 0.00 H +ATOM 198 N SER A 13 6.377 -5.184 3.397 0.00 0.00 N +ATOM 199 CA SER A 13 6.999 -6.365 2.789 0.00 0.00 C +ATOM 200 C SER A 13 7.090 -6.294 1.255 0.00 0.00 C +ATOM 201 O SER A 13 7.691 -7.181 0.653 0.00 0.00 O +ATOM 202 CB SER A 13 6.253 -7.630 3.234 0.00 0.00 C +ATOM 203 OG SER A 13 6.246 -7.721 4.648 0.00 0.00 O +ATOM 204 H SER A 13 5.417 -5.288 3.715 0.00 0.00 H +ATOM 205 HA SER A 13 8.023 -6.439 3.156 0.00 0.00 H +ATOM 206 1HB SER A 13 5.242 -7.590 2.876 0.00 0.00 H +ATOM 207 2HB SER A 13 6.749 -8.510 2.826 0.00 0.00 H +ATOM 208 HG SER A 13 7.152 -7.694 4.967 0.00 0.00 H +ATOM 209 N SER A 14 6.547 -5.244 0.623 0.00 0.00 N +ATOM 210 CA SER A 14 6.546 -5.037 -0.834 0.00 0.00 C +ATOM 211 C SER A 14 7.710 -4.195 -1.366 0.00 0.00 C +ATOM 212 O SER A 14 7.806 -3.980 -2.574 0.00 0.00 O +ATOM 213 CB SER A 14 5.255 -4.326 -1.232 0.00 0.00 C +ATOM 214 OG SER A 14 4.168 -5.191 -1.045 0.00 0.00 O +ATOM 215 H SER A 14 6.016 -4.575 1.174 0.00 0.00 H +ATOM 216 HA SER A 14 6.572 -6.003 -1.341 0.00 0.00 H +ATOM 217 1HB SER A 14 5.126 -3.452 -0.623 0.00 0.00 H +ATOM 218 2HB SER A 14 5.295 -4.054 -2.288 0.00 0.00 H +ATOM 219 HG SER A 14 3.879 -5.451 -2.001 0.00 0.00 H +ATOM 220 N GLY A 15 8.565 -3.636 -0.501 0.00 0.00 N +ATOM 221 CA GLY A 15 9.674 -2.757 -0.898 0.00 0.00 C +ATOM 222 C GLY A 15 9.253 -1.339 -1.324 0.00 0.00 C +ATOM 223 O GLY A 15 9.969 -0.382 -1.033 0.00 0.00 O +ATOM 224 H GLY A 15 8.424 -3.831 0.482 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.376 -2.674 -0.069 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.203 -3.214 -1.736 0.00 0.00 H +ATOM 227 N ARG A 16 8.102 -1.178 -1.996 0.00 0.00 N +ATOM 228 CA ARG A 16 7.531 0.125 -2.365 0.00 0.00 C +ATOM 229 C ARG A 16 6.961 0.857 -1.128 0.00 0.00 C +ATOM 230 O ARG A 16 6.215 0.232 -0.372 0.00 0.00 O +ATOM 231 CB ARG A 16 6.442 -0.081 -3.437 0.00 0.00 C +ATOM 232 CG ARG A 16 5.971 1.260 -4.018 0.00 0.00 C +ATOM 233 CD ARG A 16 4.982 1.094 -5.178 0.00 0.00 C +ATOM 234 NE ARG A 16 4.802 2.367 -5.907 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.658 2.919 -6.763 0.00 0.00 C +ATOM 236 NH1 ARG A 16 6.787 2.331 -7.088 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.400 4.083 -7.311 0.00 0.00 N +ATOM 238 H ARG A 16 7.619 -2.035 -2.253 0.00 0.00 H +ATOM 239 HA ARG A 16 8.340 0.714 -2.794 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.841 -0.685 -4.229 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.593 -0.617 -3.009 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.493 1.822 -3.239 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.844 1.801 -4.375 0.00 0.00 H +ATOM 244 1HD ARG A 16 5.357 0.352 -5.856 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.021 0.765 -4.779 0.00 0.00 H +ATOM 246 HE ARG A 16 3.960 2.882 -5.711 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 6.987 1.438 -6.674 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 7.437 2.753 -7.728 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.551 4.572 -7.091 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 6.056 4.492 -7.951 0.00 0.00 H +ATOM 251 N PRO A 17 7.229 2.166 -0.931 0.00 0.00 N +ATOM 252 CA PRO A 17 6.645 2.952 0.164 0.00 0.00 C +ATOM 253 C PRO A 17 5.124 3.174 0.002 0.00 0.00 C +ATOM 254 O PRO A 17 4.593 2.997 -1.099 0.00 0.00 O +ATOM 255 CB PRO A 17 7.407 4.284 0.146 0.00 0.00 C +ATOM 256 CG PRO A 17 7.816 4.441 -1.315 0.00 0.00 C +ATOM 257 CD PRO A 17 8.118 3.003 -1.727 0.00 0.00 C +ATOM 258 HA PRO A 17 6.829 2.440 1.109 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.773 5.093 0.456 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.301 4.200 0.766 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.016 4.853 -1.900 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.685 5.087 -1.430 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.923 2.865 -2.773 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.154 2.758 -1.485 0.00 0.00 H +ATOM 265 N PRO A 18 4.413 3.584 1.073 0.00 0.00 N +ATOM 266 CA PRO A 18 2.970 3.822 1.030 0.00 0.00 C +ATOM 267 C PRO A 18 2.594 5.069 0.201 0.00 0.00 C +ATOM 268 O PRO A 18 3.394 5.998 0.089 0.00 0.00 O +ATOM 269 CB PRO A 18 2.538 3.970 2.492 0.00 0.00 C +ATOM 270 CG PRO A 18 3.794 4.489 3.188 0.00 0.00 C +ATOM 271 CD PRO A 18 4.918 3.789 2.425 0.00 0.00 C +ATOM 272 HA PRO A 18 2.489 2.946 0.603 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.732 4.672 2.584 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.286 2.991 2.895 0.00 0.00 H +ATOM 275 1HG PRO A 18 3.872 5.555 3.099 0.00 0.00 H +ATOM 276 2HG PRO A 18 3.805 4.232 4.248 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.797 4.405 2.406 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.127 2.823 2.884 0.00 0.00 H +ATOM 279 N PRO A 19 1.367 5.119 -0.360 0.00 0.00 N +ATOM 280 CA PRO A 19 0.902 6.218 -1.210 0.00 0.00 C +ATOM 281 C PRO A 19 0.393 7.441 -0.434 0.00 0.00 C +ATOM 282 O PRO A 19 0.376 8.539 -0.986 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.244 5.614 -2.031 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.838 4.567 -1.088 0.00 0.00 C +ATOM 285 CD PRO A 19 0.396 4.036 -0.365 0.00 0.00 C +ATOM 286 HA PRO A 19 1.700 6.542 -1.881 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.972 6.361 -2.283 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.161 5.121 -2.915 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.529 5.013 -0.399 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.356 3.777 -1.634 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.146 3.757 0.640 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.819 3.209 -0.930 0.00 0.00 H +ATOM 293 N SER A 20 -0.071 7.250 0.808 0.00 0.00 N +ATOM 294 CA SER A 20 -0.627 8.275 1.694 0.00 0.00 C +ATOM 295 C SER A 20 -0.615 7.810 3.147 0.00 0.00 C +ATOM 296 O SER A 20 -0.310 6.619 3.378 0.00 0.00 O +ATOM 297 CB SER A 20 -2.071 8.593 1.302 0.00 0.00 C +ATOM 298 OG SER A 20 -2.519 9.564 2.220 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.045 8.668 3.958 0.00 0.00 O +ATOM 300 H SER A 20 0.027 6.343 1.249 0.00 0.00 H +ATOM 301 HA SER A 20 -0.028 9.183 1.627 0.00 0.00 H +ATOM 302 1HB SER A 20 -2.109 8.980 0.302 0.00 0.00 H +ATOM 303 2HB SER A 20 -2.678 7.692 1.404 0.00 0.00 H +ATOM 304 HG SER A 20 -1.976 9.352 3.052 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 27 +ATOM 1 N ASN A 1 -6.891 7.053 0.882 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.783 6.096 0.185 0.00 0.00 C +ATOM 3 C ASN A 1 -7.000 4.934 -0.439 0.00 0.00 C +ATOM 4 O ASN A 1 -7.252 3.795 -0.069 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.741 6.795 -0.802 0.00 0.00 C +ATOM 6 CG ASN A 1 -10.186 6.423 -0.481 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.742 5.509 -1.060 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.818 7.078 0.477 0.00 0.00 N +ATOM 9 1H ASN A 1 -6.270 6.561 1.512 0.00 0.00 H +ATOM 10 2H ASN A 1 -6.341 7.576 0.215 0.00 0.00 H +ATOM 11 3H ASN A 1 -7.442 7.704 1.424 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.409 5.625 0.947 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.621 7.858 -0.720 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.526 6.488 -1.827 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -10.460 7.874 0.978 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -11.767 6.760 0.616 0.00 0.00 H +ATOM 17 N LEU A 2 -6.006 5.194 -1.304 0.00 0.00 N +ATOM 18 CA LEU A 2 -5.176 4.163 -1.955 0.00 0.00 C +ATOM 19 C LEU A 2 -4.381 3.236 -1.006 0.00 0.00 C +ATOM 20 O LEU A 2 -3.851 2.217 -1.451 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.228 4.849 -2.968 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.572 4.553 -4.446 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.888 5.843 -5.207 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -3.420 3.823 -5.139 0.00 0.00 C +ATOM 25 H LEU A 2 -5.840 6.139 -1.619 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.853 3.499 -2.494 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.280 5.910 -2.815 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.207 4.517 -2.778 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.453 3.919 -4.507 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.757 6.328 -4.763 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -4.034 6.520 -5.172 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -5.113 5.608 -6.248 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.521 4.441 -5.130 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -3.217 2.884 -4.623 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.691 3.600 -6.170 0.00 0.00 H +ATOM 36 N TYR A 3 -4.322 3.538 0.295 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.630 2.739 1.309 0.00 0.00 C +ATOM 38 C TYR A 3 -4.063 1.261 1.312 0.00 0.00 C +ATOM 39 O TYR A 3 -3.226 0.377 1.478 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.838 3.395 2.684 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.746 3.070 3.682 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.555 3.822 3.668 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.916 2.041 4.628 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.528 3.543 4.588 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.889 1.757 5.549 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.690 2.503 5.526 0.00 0.00 C +ATOM 47 OH TYR A 3 0.302 2.210 6.407 0.00 0.00 O +ATOM 48 H TYR A 3 -4.782 4.379 0.596 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.564 2.767 1.081 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.870 4.459 2.551 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.808 3.100 3.087 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.427 4.632 2.963 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.834 1.470 4.653 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.367 4.148 4.584 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.998 0.980 6.291 0.00 0.00 H +ATOM 56 HH TYR A 3 1.068 2.771 6.272 0.00 0.00 H +ATOM 57 N ILE A 4 -5.351 0.975 1.056 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.888 -0.395 0.981 0.00 0.00 C +ATOM 59 C ILE A 4 -5.258 -1.202 -0.170 0.00 0.00 C +ATOM 60 O ILE A 4 -5.000 -2.397 -0.010 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.431 -0.365 0.840 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.123 0.422 1.988 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.009 -1.791 0.799 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.974 1.614 1.515 0.00 0.00 C +ATOM 65 H ILE A 4 -5.981 1.754 0.908 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.641 -0.909 1.910 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.663 0.104 -0.117 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.761 -0.255 2.523 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.383 0.790 2.700 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.689 -2.299 -0.111 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.678 -2.350 1.677 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.099 -1.748 0.791 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -8.549 2.540 1.901 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.023 1.674 0.427 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.990 1.511 1.898 0.00 0.00 H +ATOM 76 N GLN A 5 -5.008 -0.559 -1.320 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.326 -1.156 -2.473 0.00 0.00 C +ATOM 78 C GLN A 5 -2.853 -1.433 -2.147 0.00 0.00 C +ATOM 79 O GLN A 5 -2.377 -2.543 -2.369 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.472 -0.240 -3.703 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.830 -0.425 -4.399 0.00 0.00 C +ATOM 82 CD GLN A 5 -6.178 0.770 -5.279 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.720 0.909 -6.400 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -7.002 1.685 -4.804 0.00 0.00 N +ATOM 85 H GLN A 5 -5.155 0.443 -1.336 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.787 -2.118 -2.705 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.380 0.781 -3.387 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.684 -0.462 -4.425 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.791 -1.307 -5.009 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.617 -0.559 -3.656 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.431 1.614 -3.898 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -7.199 2.423 -5.458 0.00 0.00 H +ATOM 93 N TRP A 6 -2.147 -0.465 -1.550 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.764 -0.655 -1.100 0.00 0.00 C +ATOM 95 C TRP A 6 -0.620 -1.767 -0.046 0.00 0.00 C +ATOM 96 O TRP A 6 0.292 -2.590 -0.131 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.223 0.670 -0.570 0.00 0.00 C +ATOM 98 CG TRP A 6 1.164 0.588 -0.013 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.300 0.553 -0.745 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.583 0.484 1.384 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.385 0.445 0.101 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.006 0.404 1.417 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.917 0.446 2.628 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.739 0.321 2.605 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.641 0.345 3.833 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.047 0.297 3.825 0.00 0.00 C +ATOM 107 H TRP A 6 -2.601 0.431 -1.402 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.156 -0.955 -1.957 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.221 1.379 -1.376 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.886 1.043 0.211 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.343 0.604 -1.827 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.363 0.430 -0.184 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.163 0.502 2.652 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.818 0.270 2.567 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.113 0.309 4.774 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.594 0.239 4.756 0.00 0.00 H +ATOM 117 N LEU A 7 -1.538 -1.844 0.927 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.586 -2.971 1.862 0.00 0.00 C +ATOM 119 C LEU A 7 -1.803 -4.308 1.137 0.00 0.00 C +ATOM 120 O LEU A 7 -1.174 -5.298 1.515 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.666 -2.743 2.930 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.317 -1.692 4.002 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.510 -1.571 4.957 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.074 -2.069 4.817 0.00 0.00 C +ATOM 125 H LEU A 7 -2.228 -1.098 1.006 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.615 -3.051 2.349 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.562 -2.425 2.433 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.847 -3.693 3.438 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.144 -0.726 3.537 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.393 -1.251 4.403 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.709 -2.532 5.432 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.298 -0.838 5.731 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.167 -3.087 5.199 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.183 -1.995 4.196 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.956 -1.382 5.655 0.00 0.00 H +ATOM 136 N LYS A 8 -2.624 -4.342 0.073 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.837 -5.530 -0.770 0.00 0.00 C +ATOM 138 C LYS A 8 -1.539 -6.072 -1.384 0.00 0.00 C +ATOM 139 O LYS A 8 -1.398 -7.286 -1.490 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.851 -5.224 -1.892 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.867 -6.357 -2.133 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.241 -6.033 -1.528 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.193 -5.982 0.004 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.398 -5.322 0.557 0.00 0.00 N +ATOM 145 H LYS A 8 -3.095 -3.479 -0.180 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.224 -6.323 -0.132 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.391 -4.335 -1.628 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.307 -5.048 -2.822 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.979 -6.503 -3.190 0.00 0.00 H +ATOM 150 2HG LYS A 8 -4.495 -7.304 -1.740 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.567 -5.079 -1.897 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.954 -6.797 -1.840 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.136 -6.983 0.386 0.00 0.00 H +ATOM 154 2HE LYS A 8 -5.303 -5.427 0.313 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -7.411 -4.352 0.270 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -8.235 -5.778 0.219 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -7.387 -5.360 1.567 0.00 0.00 H +ATOM 158 N ASP A 9 -0.586 -5.196 -1.733 0.00 0.00 N +ATOM 159 CA ASP A 9 0.742 -5.596 -2.224 0.00 0.00 C +ATOM 160 C ASP A 9 1.596 -6.294 -1.144 0.00 0.00 C +ATOM 161 O ASP A 9 2.602 -6.919 -1.489 0.00 0.00 O +ATOM 162 CB ASP A 9 1.544 -4.384 -2.750 0.00 0.00 C +ATOM 163 CG ASP A 9 0.978 -3.644 -3.968 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.381 -2.472 -4.162 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.247 -4.280 -4.760 0.00 0.00 O +ATOM 166 H ASP A 9 -0.811 -4.209 -1.663 0.00 0.00 H +ATOM 167 HA ASP A 9 0.611 -6.302 -3.046 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.620 -3.675 -1.948 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.528 -4.743 -3.048 0.00 0.00 H +ATOM 170 N GLY A 10 1.242 -6.171 0.145 0.00 0.00 N +ATOM 171 CA GLY A 10 2.030 -6.642 1.290 0.00 0.00 C +ATOM 172 C GLY A 10 2.603 -5.520 2.168 0.00 0.00 C +ATOM 173 O GLY A 10 3.419 -5.803 3.047 0.00 0.00 O +ATOM 174 H GLY A 10 0.348 -5.733 0.351 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.391 -7.260 1.920 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.859 -7.262 0.950 0.00 0.00 H +ATOM 177 N GLY A 11 2.213 -4.255 1.949 0.00 0.00 N +ATOM 178 CA GLY A 11 2.700 -3.121 2.734 0.00 0.00 C +ATOM 179 C GLY A 11 4.238 -3.008 2.707 0.00 0.00 C +ATOM 180 O GLY A 11 4.830 -3.106 1.626 0.00 0.00 O +ATOM 181 H GLY A 11 1.566 -4.066 1.192 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.278 -2.203 2.330 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.340 -3.242 3.755 0.00 0.00 H +ATOM 184 N PRO A 12 4.916 -2.815 3.863 0.00 0.00 N +ATOM 185 CA PRO A 12 6.378 -2.719 3.922 0.00 0.00 C +ATOM 186 C PRO A 12 7.104 -3.938 3.329 0.00 0.00 C +ATOM 187 O PRO A 12 8.203 -3.799 2.793 0.00 0.00 O +ATOM 188 CB PRO A 12 6.739 -2.555 5.405 0.00 0.00 C +ATOM 189 CG PRO A 12 5.447 -2.080 6.062 0.00 0.00 C +ATOM 190 CD PRO A 12 4.360 -2.729 5.208 0.00 0.00 C +ATOM 191 HA PRO A 12 6.689 -1.827 3.377 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.056 -3.491 5.824 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.544 -1.832 5.542 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.388 -2.415 7.080 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.375 -0.995 5.986 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.126 -3.708 5.580 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.453 -2.129 5.244 0.00 0.00 H +ATOM 198 N SER A 13 6.487 -5.126 3.383 0.00 0.00 N +ATOM 199 CA SER A 13 7.062 -6.391 2.910 0.00 0.00 C +ATOM 200 C SER A 13 7.106 -6.523 1.380 0.00 0.00 C +ATOM 201 O SER A 13 7.528 -7.564 0.882 0.00 0.00 O +ATOM 202 CB SER A 13 6.294 -7.570 3.525 0.00 0.00 C +ATOM 203 OG SER A 13 6.273 -7.463 4.938 0.00 0.00 O +ATOM 204 H SER A 13 5.554 -5.180 3.780 0.00 0.00 H +ATOM 205 HA SER A 13 8.093 -6.447 3.259 0.00 0.00 H +ATOM 206 1HB SER A 13 5.287 -7.567 3.155 0.00 0.00 H +ATOM 207 2HB SER A 13 6.781 -8.506 3.247 0.00 0.00 H +ATOM 208 HG SER A 13 7.175 -7.487 5.266 0.00 0.00 H +ATOM 209 N SER A 14 6.699 -5.485 0.633 0.00 0.00 N +ATOM 210 CA SER A 14 6.610 -5.482 -0.834 0.00 0.00 C +ATOM 211 C SER A 14 7.584 -4.502 -1.514 0.00 0.00 C +ATOM 212 O SER A 14 7.442 -4.206 -2.702 0.00 0.00 O +ATOM 213 CB SER A 14 5.155 -5.226 -1.232 0.00 0.00 C +ATOM 214 OG SER A 14 4.800 -6.039 -2.327 0.00 0.00 O +ATOM 215 H SER A 14 6.332 -4.681 1.131 0.00 0.00 H +ATOM 216 HA SER A 14 6.872 -6.476 -1.198 0.00 0.00 H +ATOM 217 1HB SER A 14 4.515 -5.452 -0.401 0.00 0.00 H +ATOM 218 2HB SER A 14 4.998 -4.181 -1.482 0.00 0.00 H +ATOM 219 HG SER A 14 3.937 -6.470 -2.076 0.00 0.00 H +ATOM 220 N GLY A 15 8.565 -3.977 -0.761 0.00 0.00 N +ATOM 221 CA GLY A 15 9.672 -3.163 -1.282 0.00 0.00 C +ATOM 222 C GLY A 15 9.268 -1.785 -1.820 0.00 0.00 C +ATOM 223 O GLY A 15 9.964 -1.240 -2.674 0.00 0.00 O +ATOM 224 H GLY A 15 8.599 -4.262 0.210 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.403 -3.009 -0.487 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.168 -3.709 -2.087 0.00 0.00 H +ATOM 227 N ARG A 16 8.140 -1.233 -1.349 0.00 0.00 N +ATOM 228 CA ARG A 16 7.498 -0.025 -1.884 0.00 0.00 C +ATOM 229 C ARG A 16 6.929 0.860 -0.758 0.00 0.00 C +ATOM 230 O ARG A 16 6.271 0.329 0.139 0.00 0.00 O +ATOM 231 CB ARG A 16 6.407 -0.441 -2.895 0.00 0.00 C +ATOM 232 CG ARG A 16 5.361 -1.404 -2.301 0.00 0.00 C +ATOM 233 CD ARG A 16 4.279 -1.827 -3.291 0.00 0.00 C +ATOM 234 NE ARG A 16 4.779 -2.819 -4.260 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.349 -2.952 -5.509 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.327 -2.269 -5.969 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.939 -3.800 -6.319 0.00 0.00 N +ATOM 238 H ARG A 16 7.655 -1.742 -0.622 0.00 0.00 H +ATOM 239 HA ARG A 16 8.255 0.540 -2.429 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.902 0.443 -3.234 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.890 -0.927 -3.745 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.869 -2.285 -1.958 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.860 -0.926 -1.472 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.459 -2.256 -2.747 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.903 -0.939 -3.800 0.00 0.00 H +ATOM 246 HE ARG A 16 5.524 -3.428 -3.947 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 2.617 -2.056 -5.244 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.019 -2.337 -6.918 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.659 -4.401 -5.958 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.587 -3.922 -7.250 0.00 0.00 H +ATOM 251 N PRO A 17 7.128 2.192 -0.787 0.00 0.00 N +ATOM 252 CA PRO A 17 6.585 3.097 0.228 0.00 0.00 C +ATOM 253 C PRO A 17 5.060 3.276 0.076 0.00 0.00 C +ATOM 254 O PRO A 17 4.523 3.016 -1.003 0.00 0.00 O +ATOM 255 CB PRO A 17 7.327 4.419 0.005 0.00 0.00 C +ATOM 256 CG PRO A 17 7.594 4.418 -1.499 0.00 0.00 C +ATOM 257 CD PRO A 17 7.848 2.945 -1.807 0.00 0.00 C +ATOM 258 HA PRO A 17 6.811 2.711 1.221 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.717 5.255 0.287 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.275 4.397 0.543 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.743 4.783 -2.041 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.452 5.039 -1.758 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.478 2.699 -2.783 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.915 2.731 -1.732 0.00 0.00 H +ATOM 265 N PRO A 18 4.352 3.730 1.131 0.00 0.00 N +ATOM 266 CA PRO A 18 2.910 3.955 1.082 0.00 0.00 C +ATOM 267 C PRO A 18 2.524 5.163 0.203 0.00 0.00 C +ATOM 268 O PRO A 18 3.330 6.074 0.016 0.00 0.00 O +ATOM 269 CB PRO A 18 2.481 4.156 2.540 0.00 0.00 C +ATOM 270 CG PRO A 18 3.734 4.715 3.207 0.00 0.00 C +ATOM 271 CD PRO A 18 4.864 4.002 2.467 0.00 0.00 C +ATOM 272 HA PRO A 18 2.431 3.060 0.690 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.667 4.852 2.608 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.235 3.190 2.981 0.00 0.00 H +ATOM 275 1HG PRO A 18 3.798 5.778 3.077 0.00 0.00 H +ATOM 276 2HG PRO A 18 3.753 4.504 4.277 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.732 4.631 2.414 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.090 3.058 2.966 0.00 0.00 H +ATOM 279 N PRO A 19 1.275 5.206 -0.306 0.00 0.00 N +ATOM 280 CA PRO A 19 0.771 6.284 -1.164 0.00 0.00 C +ATOM 281 C PRO A 19 0.330 7.537 -0.389 0.00 0.00 C +ATOM 282 O PRO A 19 0.160 8.598 -0.988 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.429 5.664 -1.889 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.979 4.669 -0.864 0.00 0.00 C +ATOM 285 CD PRO A 19 0.284 4.149 -0.189 0.00 0.00 C +ATOM 286 HA PRO A 19 1.528 6.574 -1.894 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.160 6.411 -2.131 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.083 5.121 -2.771 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.622 5.157 -0.157 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.531 3.860 -1.339 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.091 3.933 0.844 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.650 3.279 -0.729 0.00 0.00 H +ATOM 293 N SER A 20 0.116 7.403 0.925 0.00 0.00 N +ATOM 294 CA SER A 20 -0.336 8.429 1.868 0.00 0.00 C +ATOM 295 C SER A 20 0.288 8.158 3.235 0.00 0.00 C +ATOM 296 O SER A 20 1.091 8.990 3.697 0.00 0.00 O +ATOM 297 CB SER A 20 -1.868 8.401 1.974 0.00 0.00 C +ATOM 298 OG SER A 20 -2.214 7.177 2.590 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.112 7.093 3.776 0.00 0.00 O +ATOM 300 H SER A 20 0.272 6.489 1.323 0.00 0.00 H +ATOM 301 HA SER A 20 -0.007 9.414 1.535 0.00 0.00 H +ATOM 302 1HB SER A 20 -2.212 9.224 2.570 0.00 0.00 H +ATOM 303 2HB SER A 20 -2.324 8.479 0.986 0.00 0.00 H +ATOM 304 HG SER A 20 -1.394 7.015 3.184 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 28 +ATOM 1 N ASN A 1 -4.637 8.314 0.281 0.00 0.00 N +ATOM 2 CA ASN A 1 -5.414 7.451 -0.654 0.00 0.00 C +ATOM 3 C ASN A 1 -4.552 6.258 -1.103 0.00 0.00 C +ATOM 4 O ASN A 1 -3.410 6.182 -0.671 0.00 0.00 O +ATOM 5 CB ASN A 1 -5.986 8.274 -1.830 0.00 0.00 C +ATOM 6 CG ASN A 1 -7.060 7.510 -2.606 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -7.598 6.525 -2.122 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -7.361 7.888 -3.833 0.00 0.00 N +ATOM 9 1H ASN A 1 -4.274 7.750 1.038 0.00 0.00 H +ATOM 10 2H ASN A 1 -3.845 8.730 -0.193 0.00 0.00 H +ATOM 11 3H ASN A 1 -5.220 9.048 0.659 0.00 0.00 H +ATOM 12 HA ASN A 1 -6.264 7.034 -0.107 0.00 0.00 H +ATOM 13 1HB ASN A 1 -6.417 9.177 -1.442 0.00 0.00 H +ATOM 14 2HB ASN A 1 -5.178 8.555 -2.505 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -6.930 8.673 -4.294 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -8.069 7.331 -4.288 0.00 0.00 H +ATOM 17 N LEU A 2 -5.081 5.309 -1.895 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.421 4.095 -2.428 0.00 0.00 C +ATOM 19 C LEU A 2 -3.907 3.086 -1.373 0.00 0.00 C +ATOM 20 O LEU A 2 -3.438 2.004 -1.727 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.323 4.462 -3.461 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.852 4.852 -4.858 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.240 6.330 -4.955 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.790 4.587 -5.929 0.00 0.00 C +ATOM 25 H LEU A 2 -6.060 5.437 -2.149 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.183 3.538 -2.975 0.00 0.00 H +ATOM 27 1HB LEU A 2 -2.763 5.291 -3.073 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.689 3.583 -3.592 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.724 4.242 -5.093 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.010 6.557 -4.229 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.370 6.961 -4.774 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.633 6.540 -5.950 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -1.903 5.190 -5.739 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -2.517 3.530 -5.926 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.189 4.833 -6.912 0.00 0.00 H +ATOM 36 N TYR A 3 -4.044 3.394 -0.080 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.489 2.632 1.037 0.00 0.00 C +ATOM 38 C TYR A 3 -3.961 1.172 1.078 0.00 0.00 C +ATOM 39 O TYR A 3 -3.161 0.277 1.338 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.815 3.362 2.349 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.670 3.331 3.335 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.776 4.416 3.400 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.480 2.213 4.167 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.707 4.403 4.312 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.407 2.188 5.077 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.523 3.285 5.158 0.00 0.00 C +ATOM 47 OH TYR A 3 0.472 3.267 6.085 0.00 0.00 O +ATOM 48 H TYR A 3 -4.369 4.327 0.113 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.405 2.622 0.917 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.046 4.385 2.124 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.703 2.925 2.808 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.914 5.270 2.750 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.164 1.380 4.111 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.031 5.245 4.351 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.257 1.345 5.732 0.00 0.00 H +ATOM 56 HH TYR A 3 0.616 4.135 6.463 0.00 0.00 H +ATOM 57 N ILE A 4 -5.240 0.915 0.764 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.800 -0.440 0.662 0.00 0.00 C +ATOM 59 C ILE A 4 -5.054 -1.256 -0.409 0.00 0.00 C +ATOM 60 O ILE A 4 -4.725 -2.421 -0.194 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.321 -0.381 0.365 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.099 0.508 1.368 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.932 -1.793 0.371 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.620 1.792 0.710 0.00 0.00 C +ATOM 65 H ILE A 4 -5.837 1.705 0.575 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.656 -0.946 1.618 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.455 0.022 -0.641 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.933 -0.049 1.751 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.469 0.772 2.219 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.495 -2.396 -0.421 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.751 -2.278 1.331 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.007 -1.735 0.196 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.790 2.390 0.335 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.288 1.538 -0.114 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.178 2.375 1.445 0.00 0.00 H +ATOM 76 N GLN A 5 -4.758 -0.632 -1.557 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.009 -1.246 -2.650 0.00 0.00 C +ATOM 78 C GLN A 5 -2.556 -1.532 -2.257 0.00 0.00 C +ATOM 79 O GLN A 5 -2.056 -2.621 -2.522 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.126 -0.385 -3.921 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.525 -1.255 -5.121 0.00 0.00 C +ATOM 82 CD GLN A 5 -4.816 -0.407 -6.354 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.867 0.201 -6.470 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -3.916 -0.347 -7.314 0.00 0.00 N +ATOM 85 H GLN A 5 -4.955 0.358 -1.625 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.460 -2.209 -2.849 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.872 0.371 -3.769 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.180 0.117 -4.130 0.00 0.00 H +ATOM 89 1HG GLN A 5 -3.722 -1.931 -5.344 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.434 -1.805 -4.876 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -3.043 -0.844 -7.271 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -4.190 0.218 -8.099 0.00 0.00 H +ATOM 93 N TRP A 6 -1.905 -0.591 -1.563 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.573 -0.794 -0.989 0.00 0.00 C +ATOM 95 C TRP A 6 -0.539 -1.937 0.047 0.00 0.00 C +ATOM 96 O TRP A 6 0.365 -2.772 0.016 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.090 0.537 -0.404 0.00 0.00 C +ATOM 98 CG TRP A 6 1.273 0.496 0.209 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.441 0.483 -0.473 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.630 0.425 1.623 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.492 0.396 0.418 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.053 0.371 1.722 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.899 0.398 2.830 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.719 0.302 2.954 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.557 0.314 4.072 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.961 0.267 4.137 0.00 0.00 C +ATOM 107 H TRP A 6 -2.385 0.292 -1.412 0.00 0.00 H +ATOM 108 HA TRP A 6 0.108 -1.080 -1.790 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.079 1.264 -1.193 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.793 0.874 0.356 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.536 0.516 -1.550 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.475 0.350 0.133 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.179 0.447 2.791 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.797 0.257 2.979 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 0.979 0.296 4.987 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.455 0.210 5.097 0.00 0.00 H +ATOM 117 N LEU A 7 -1.539 -2.023 0.936 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.647 -3.114 1.911 0.00 0.00 C +ATOM 119 C LEU A 7 -1.880 -4.491 1.263 0.00 0.00 C +ATOM 120 O LEU A 7 -1.299 -5.464 1.739 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.744 -2.801 2.945 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.387 -1.679 3.942 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.618 -1.346 4.787 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.248 -2.065 4.893 0.00 0.00 C +ATOM 125 H LEU A 7 -2.229 -1.275 0.955 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.693 -3.194 2.432 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.630 -2.508 2.415 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.953 -3.706 3.517 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.088 -0.784 3.401 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.425 -0.996 4.140 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.951 -2.230 5.330 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.378 -0.561 5.504 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.499 -2.980 5.429 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.325 -2.214 4.336 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -1.082 -1.265 5.612 0.00 0.00 H +ATOM 136 N LYS A 8 -2.664 -4.593 0.174 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.892 -5.859 -0.562 0.00 0.00 C +ATOM 138 C LYS A 8 -1.591 -6.528 -1.022 0.00 0.00 C +ATOM 139 O LYS A 8 -1.477 -7.746 -0.936 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.818 -5.628 -1.769 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.295 -5.486 -1.357 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.116 -4.646 -2.351 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.882 -5.452 -3.401 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.477 -4.544 -4.411 0.00 0.00 N +ATOM 145 H LYS A 8 -3.145 -3.750 -0.132 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.367 -6.574 0.111 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.512 -4.730 -2.271 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.736 -6.467 -2.462 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.729 -6.465 -1.296 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.344 -4.993 -0.387 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.826 -4.068 -1.791 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.454 -3.961 -2.867 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.208 -6.131 -3.888 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.667 -6.022 -2.896 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.054 -3.846 -3.961 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -6.746 -4.071 -4.926 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -8.047 -5.062 -5.068 0.00 0.00 H +ATOM 158 N ASP A 9 -0.606 -5.739 -1.457 0.00 0.00 N +ATOM 159 CA ASP A 9 0.739 -6.198 -1.825 0.00 0.00 C +ATOM 160 C ASP A 9 1.651 -6.499 -0.611 0.00 0.00 C +ATOM 161 O ASP A 9 2.838 -6.780 -0.797 0.00 0.00 O +ATOM 162 CB ASP A 9 1.370 -5.155 -2.771 0.00 0.00 C +ATOM 163 CG ASP A 9 1.177 -5.531 -4.240 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.077 -6.215 -4.775 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.135 -5.136 -4.811 0.00 0.00 O +ATOM 166 H ASP A 9 -0.801 -4.748 -1.533 0.00 0.00 H +ATOM 167 HA ASP A 9 0.652 -7.136 -2.376 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.911 -4.202 -2.593 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.441 -5.088 -2.597 0.00 0.00 H +ATOM 170 N GLY A 10 1.167 -6.398 0.637 0.00 0.00 N +ATOM 171 CA GLY A 10 1.944 -6.694 1.851 0.00 0.00 C +ATOM 172 C GLY A 10 2.520 -5.474 2.584 0.00 0.00 C +ATOM 173 O GLY A 10 3.356 -5.650 3.475 0.00 0.00 O +ATOM 174 H GLY A 10 0.189 -6.147 0.762 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.294 -7.220 2.549 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.770 -7.362 1.607 0.00 0.00 H +ATOM 177 N GLY A 11 2.100 -4.254 2.229 0.00 0.00 N +ATOM 178 CA GLY A 11 2.528 -2.992 2.832 0.00 0.00 C +ATOM 179 C GLY A 11 4.060 -2.837 2.922 0.00 0.00 C +ATOM 180 O GLY A 11 4.712 -2.686 1.888 0.00 0.00 O +ATOM 181 H GLY A 11 1.508 -4.184 1.407 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.150 -2.182 2.211 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.067 -2.896 3.812 0.00 0.00 H +ATOM 184 N PRO A 12 4.678 -2.872 4.125 0.00 0.00 N +ATOM 185 CA PRO A 12 6.137 -2.792 4.262 0.00 0.00 C +ATOM 186 C PRO A 12 6.903 -3.861 3.466 0.00 0.00 C +ATOM 187 O PRO A 12 8.043 -3.629 3.069 0.00 0.00 O +ATOM 188 CB PRO A 12 6.429 -2.936 5.761 0.00 0.00 C +ATOM 189 CG PRO A 12 5.120 -2.531 6.433 0.00 0.00 C +ATOM 190 CD PRO A 12 4.058 -2.991 5.436 0.00 0.00 C +ATOM 191 HA PRO A 12 6.463 -1.808 3.926 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.685 -3.949 6.004 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.254 -2.292 6.069 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.002 -3.028 7.377 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.080 -1.447 6.534 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.779 -4.009 5.628 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.172 -2.363 5.530 0.00 0.00 H +ATOM 198 N SER A 13 6.278 -5.017 3.209 0.00 0.00 N +ATOM 199 CA SER A 13 6.884 -6.142 2.489 0.00 0.00 C +ATOM 200 C SER A 13 6.737 -6.043 0.960 0.00 0.00 C +ATOM 201 O SER A 13 7.147 -6.960 0.254 0.00 0.00 O +ATOM 202 CB SER A 13 6.306 -7.461 3.021 0.00 0.00 C +ATOM 203 OG SER A 13 6.621 -7.599 4.395 0.00 0.00 O +ATOM 204 H SER A 13 5.320 -5.131 3.531 0.00 0.00 H +ATOM 205 HA SER A 13 7.953 -6.155 2.698 0.00 0.00 H +ATOM 206 1HB SER A 13 5.240 -7.459 2.898 0.00 0.00 H +ATOM 207 2HB SER A 13 6.742 -8.301 2.479 0.00 0.00 H +ATOM 208 HG SER A 13 5.808 -7.714 4.892 0.00 0.00 H +ATOM 209 N SER A 14 6.176 -4.942 0.434 0.00 0.00 N +ATOM 210 CA SER A 14 5.884 -4.748 -0.996 0.00 0.00 C +ATOM 211 C SER A 14 7.004 -4.076 -1.802 0.00 0.00 C +ATOM 212 O SER A 14 6.860 -3.890 -3.006 0.00 0.00 O +ATOM 213 CB SER A 14 4.636 -3.874 -1.140 0.00 0.00 C +ATOM 214 OG SER A 14 3.598 -4.383 -0.343 0.00 0.00 O +ATOM 215 H SER A 14 5.795 -4.245 1.069 0.00 0.00 H +ATOM 216 HA SER A 14 5.675 -5.716 -1.456 0.00 0.00 H +ATOM 217 1HB SER A 14 4.865 -2.873 -0.828 0.00 0.00 H +ATOM 218 2HB SER A 14 4.320 -3.854 -2.182 0.00 0.00 H +ATOM 219 HG SER A 14 3.437 -5.331 -0.578 0.00 0.00 H +ATOM 220 N GLY A 15 8.091 -3.636 -1.156 0.00 0.00 N +ATOM 221 CA GLY A 15 9.222 -2.961 -1.807 0.00 0.00 C +ATOM 222 C GLY A 15 8.979 -1.499 -2.225 0.00 0.00 C +ATOM 223 O GLY A 15 9.937 -0.811 -2.570 0.00 0.00 O +ATOM 224 H GLY A 15 8.136 -3.819 -0.163 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.080 -2.981 -1.136 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.494 -3.517 -2.706 0.00 0.00 H +ATOM 227 N ARG A 16 7.733 -1.005 -2.166 0.00 0.00 N +ATOM 228 CA ARG A 16 7.340 0.378 -2.469 0.00 0.00 C +ATOM 229 C ARG A 16 6.864 1.090 -1.189 0.00 0.00 C +ATOM 230 O ARG A 16 6.138 0.469 -0.408 0.00 0.00 O +ATOM 231 CB ARG A 16 6.242 0.351 -3.552 0.00 0.00 C +ATOM 232 CG ARG A 16 5.909 1.749 -4.102 0.00 0.00 C +ATOM 233 CD ARG A 16 4.828 1.696 -5.186 0.00 0.00 C +ATOM 234 NE ARG A 16 4.677 3.011 -5.838 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.080 3.264 -6.997 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.453 2.326 -7.670 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.108 4.474 -7.504 0.00 0.00 N +ATOM 238 H ARG A 16 7.011 -1.654 -1.889 0.00 0.00 H +ATOM 239 HA ARG A 16 8.211 0.896 -2.870 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.577 -0.266 -4.364 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.337 -0.100 -3.141 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.561 2.365 -3.295 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.814 2.176 -4.534 0.00 0.00 H +ATOM 244 1HD ARG A 16 5.104 0.967 -5.923 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.881 1.398 -4.732 0.00 0.00 H +ATOM 246 HE ARG A 16 5.099 3.795 -5.368 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 3.423 1.404 -7.274 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.006 2.520 -8.548 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.586 5.218 -7.026 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 3.669 4.656 -8.390 0.00 0.00 H +ATOM 251 N PRO A 17 7.209 2.375 -0.963 0.00 0.00 N +ATOM 252 CA PRO A 17 6.738 3.134 0.201 0.00 0.00 C +ATOM 253 C PRO A 17 5.208 3.346 0.203 0.00 0.00 C +ATOM 254 O PRO A 17 4.576 3.259 -0.855 0.00 0.00 O +ATOM 255 CB PRO A 17 7.490 4.471 0.149 0.00 0.00 C +ATOM 256 CG PRO A 17 7.846 4.634 -1.326 0.00 0.00 C +ATOM 257 CD PRO A 17 8.110 3.196 -1.761 0.00 0.00 C +ATOM 258 HA PRO A 17 7.021 2.596 1.106 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.862 5.275 0.482 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.407 4.394 0.736 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.031 5.063 -1.877 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.720 5.268 -1.469 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.900 3.076 -2.806 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.141 2.925 -1.531 0.00 0.00 H +ATOM 265 N PRO A 18 4.607 3.648 1.372 0.00 0.00 N +ATOM 266 CA PRO A 18 3.168 3.868 1.495 0.00 0.00 C +ATOM 267 C PRO A 18 2.728 5.176 0.813 0.00 0.00 C +ATOM 268 O PRO A 18 3.421 6.189 0.932 0.00 0.00 O +ATOM 269 CB PRO A 18 2.880 3.905 2.999 0.00 0.00 C +ATOM 270 CG PRO A 18 4.202 4.357 3.615 0.00 0.00 C +ATOM 271 CD PRO A 18 5.252 3.767 2.674 0.00 0.00 C +ATOM 272 HA PRO A 18 2.650 3.021 1.056 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.097 4.604 3.221 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.640 2.905 3.351 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.268 5.428 3.640 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.322 3.987 4.633 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.103 4.418 2.610 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.544 2.776 3.024 0.00 0.00 H +ATOM 279 N PRO A 19 1.566 5.189 0.135 0.00 0.00 N +ATOM 280 CA PRO A 19 0.986 6.406 -0.419 0.00 0.00 C +ATOM 281 C PRO A 19 0.340 7.243 0.694 0.00 0.00 C +ATOM 282 O PRO A 19 -0.310 6.698 1.588 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.045 5.908 -1.435 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.542 4.596 -0.823 0.00 0.00 C +ATOM 285 CD PRO A 19 0.688 4.050 -0.100 0.00 0.00 C +ATOM 286 HA PRO A 19 1.751 6.996 -0.927 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.849 6.611 -1.542 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.455 5.698 -2.382 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.344 4.774 -0.133 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.898 3.904 -1.584 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.402 3.603 0.833 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.199 3.327 -0.734 0.00 0.00 H +ATOM 293 N SER A 20 0.480 8.571 0.624 0.00 0.00 N +ATOM 294 CA SER A 20 -0.125 9.511 1.572 0.00 0.00 C +ATOM 295 C SER A 20 -0.770 10.671 0.820 0.00 0.00 C +ATOM 296 O SER A 20 -2.016 10.756 0.905 0.00 0.00 O +ATOM 297 CB SER A 20 0.919 9.961 2.597 0.00 0.00 C +ATOM 298 OG SER A 20 0.248 10.488 3.720 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.011 11.405 0.152 0.00 0.00 O +ATOM 300 H SER A 20 1.013 8.983 -0.129 0.00 0.00 H +ATOM 301 HA SER A 20 -0.928 9.009 2.110 0.00 0.00 H +ATOM 302 1HB SER A 20 1.519 9.122 2.895 0.00 0.00 H +ATOM 303 2HB SER A 20 1.582 10.712 2.159 0.00 0.00 H +ATOM 304 HG SER A 20 -0.420 11.104 3.405 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 29 +ATOM 1 N ASN A 1 -8.605 5.735 -1.508 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.571 6.051 -0.495 0.00 0.00 C +ATOM 3 C ASN A 1 -6.164 5.538 -0.832 0.00 0.00 C +ATOM 4 O ASN A 1 -5.240 5.940 -0.139 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.006 5.614 0.920 0.00 0.00 C +ATOM 6 CG ASN A 1 -8.446 6.833 1.721 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -7.636 7.667 2.079 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -9.727 7.012 1.978 0.00 0.00 N +ATOM 9 1H ASN A 1 -8.317 6.060 -2.422 0.00 0.00 H +ATOM 10 2H ASN A 1 -8.771 4.738 -1.536 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.471 6.197 -1.263 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.456 7.138 -0.461 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.823 4.923 0.844 0.00 0.00 H +ATOM 14 2HB ASN A 1 -7.168 5.160 1.453 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -10.461 6.361 1.754 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -9.905 7.847 2.515 0.00 0.00 H +ATOM 17 N LEU A 2 -5.966 4.679 -1.852 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.666 4.117 -2.283 0.00 0.00 C +ATOM 19 C LEU A 2 -4.002 3.168 -1.262 0.00 0.00 C +ATOM 20 O LEU A 2 -3.524 2.099 -1.642 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.717 5.253 -2.748 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.317 5.246 -4.235 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -2.553 3.980 -4.653 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -4.536 5.478 -5.132 0.00 0.00 C +ATOM 25 H LEU A 2 -6.737 4.358 -2.414 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.871 3.489 -3.150 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.203 6.188 -2.545 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.806 5.212 -2.162 0.00 0.00 H +ATOM 29 HG LEU A 2 -2.646 6.094 -4.387 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -1.523 4.249 -4.893 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.534 3.243 -3.853 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.005 3.530 -5.537 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -5.218 4.631 -5.088 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.054 6.385 -4.819 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.203 5.612 -6.162 0.00 0.00 H +ATOM 36 N TYR A 3 -4.025 3.502 0.030 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.458 2.724 1.133 0.00 0.00 C +ATOM 38 C TYR A 3 -3.964 1.270 1.170 0.00 0.00 C +ATOM 39 O TYR A 3 -3.186 0.358 1.441 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.738 3.456 2.457 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.570 3.419 3.420 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.797 4.577 3.646 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.245 2.219 4.078 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.713 4.539 4.544 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.149 2.170 4.960 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.388 3.333 5.204 0.00 0.00 C +ATOM 47 OH TYR A 3 0.627 3.280 6.107 0.00 0.00 O +ATOM 48 H TYR A 3 -4.367 4.438 0.237 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.377 2.691 0.989 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.966 4.481 2.238 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.614 3.021 2.941 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.032 5.503 3.135 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -2.836 1.333 3.908 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.128 5.433 4.713 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -0.891 1.259 5.474 0.00 0.00 H +ATOM 56 HH TYR A 3 0.617 4.042 6.689 0.00 0.00 H +ATOM 57 N ILE A 4 -5.244 1.037 0.838 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.834 -0.306 0.713 0.00 0.00 C +ATOM 59 C ILE A 4 -5.105 -1.123 -0.367 0.00 0.00 C +ATOM 60 O ILE A 4 -4.724 -2.268 -0.130 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.352 -0.235 0.407 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.137 0.689 1.373 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.972 -1.643 0.457 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.547 2.007 0.707 0.00 0.00 C +ATOM 65 H ILE A 4 -5.819 1.844 0.651 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.700 -0.825 1.663 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.482 0.137 -0.611 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.022 0.177 1.699 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.548 0.901 2.265 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.504 -2.298 -0.279 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.845 -2.074 1.451 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.037 -1.590 0.226 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.664 2.587 0.439 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.134 1.802 -0.191 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.164 2.579 1.400 0.00 0.00 H +ATOM 76 N GLN A 5 -4.897 -0.530 -1.550 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.198 -1.155 -2.673 0.00 0.00 C +ATOM 78 C GLN A 5 -2.723 -1.419 -2.333 0.00 0.00 C +ATOM 79 O GLN A 5 -2.200 -2.473 -2.684 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.336 -0.262 -3.917 0.00 0.00 C +ATOM 81 CG GLN A 5 -3.914 -0.964 -5.221 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.086 -1.137 -6.184 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.679 -0.180 -6.653 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -5.471 -2.356 -6.511 0.00 0.00 N +ATOM 85 H GLN A 5 -5.132 0.448 -1.635 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.672 -2.115 -2.879 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.362 0.038 -4.009 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.724 0.632 -3.790 0.00 0.00 H +ATOM 89 1HG GLN A 5 -3.155 -0.376 -5.701 0.00 0.00 H +ATOM 90 2HG GLN A 5 -3.469 -1.937 -5.010 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.984 -3.177 -6.199 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -6.221 -2.372 -7.181 0.00 0.00 H +ATOM 93 N TRP A 6 -2.071 -0.497 -1.615 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.715 -0.699 -1.098 0.00 0.00 C +ATOM 95 C TRP A 6 -0.639 -1.865 -0.097 0.00 0.00 C +ATOM 96 O TRP A 6 0.196 -2.757 -0.250 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.203 0.608 -0.484 0.00 0.00 C +ATOM 98 CG TRP A 6 1.201 0.530 0.024 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.311 0.523 -0.750 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.672 0.404 1.403 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.428 0.392 0.050 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.094 0.319 1.381 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.048 0.358 2.668 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.864 0.210 2.546 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.810 0.242 3.848 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.214 0.174 3.791 0.00 0.00 C +ATOM 107 H TRP A 6 -2.559 0.372 -1.412 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.064 -0.958 -1.933 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.249 1.374 -1.234 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.852 0.901 0.340 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.315 0.589 -1.829 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.395 0.361 -0.282 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.028 0.427 2.725 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.940 0.156 2.473 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.316 0.221 4.810 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.792 0.099 4.701 0.00 0.00 H +ATOM 117 N LEU A 7 -1.536 -1.900 0.899 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.617 -3.007 1.855 0.00 0.00 C +ATOM 119 C LEU A 7 -1.901 -4.357 1.181 0.00 0.00 C +ATOM 120 O LEU A 7 -1.360 -5.362 1.635 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.675 -2.710 2.932 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.221 -1.687 3.991 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.385 -1.386 4.937 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.031 -2.194 4.815 0.00 0.00 C +ATOM 125 H LEU A 7 -2.191 -1.126 0.991 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.645 -3.114 2.334 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.552 -2.327 2.447 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.922 -3.640 3.447 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.930 -0.760 3.500 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.245 -1.036 4.365 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.661 -2.286 5.488 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.096 -0.608 5.644 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.172 -3.243 5.075 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.114 -2.086 4.240 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.929 -1.613 5.731 0.00 0.00 H +ATOM 136 N LYS A 8 -2.692 -4.379 0.094 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.020 -5.583 -0.687 0.00 0.00 C +ATOM 138 C LYS A 8 -1.785 -6.364 -1.155 0.00 0.00 C +ATOM 139 O LYS A 8 -1.838 -7.588 -1.203 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.879 -5.189 -1.903 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.659 -6.371 -2.495 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.247 -6.001 -3.867 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.373 -6.957 -4.272 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.632 -6.645 -3.554 0.00 0.00 N +ATOM 145 H LYS A 8 -3.148 -3.504 -0.155 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.595 -6.254 -0.047 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.579 -4.436 -1.597 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.229 -4.772 -2.673 0.00 0.00 H +ATOM 149 1HG LYS A 8 -3.997 -7.208 -2.609 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.454 -6.641 -1.801 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.637 -5.002 -3.821 0.00 0.00 H +ATOM 152 2HD LYS A 8 -4.447 -6.061 -4.607 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.542 -6.870 -5.328 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.057 -7.983 -4.060 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -7.483 -6.699 -2.554 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.939 -5.708 -3.782 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -8.360 -7.298 -3.811 0.00 0.00 H +ATOM 158 N ASP A 9 -0.706 -5.663 -1.517 0.00 0.00 N +ATOM 159 CA ASP A 9 0.544 -6.266 -1.987 0.00 0.00 C +ATOM 160 C ASP A 9 1.293 -6.977 -0.843 0.00 0.00 C +ATOM 161 O ASP A 9 1.650 -8.148 -0.961 0.00 0.00 O +ATOM 162 CB ASP A 9 1.392 -5.171 -2.653 0.00 0.00 C +ATOM 163 CG ASP A 9 2.434 -5.757 -3.608 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.525 -6.132 -3.128 0.00 0.00 O +ATOM 165 OD2 ASP A 9 2.117 -5.814 -4.817 0.00 0.00 O +ATOM 166 H ASP A 9 -0.755 -4.653 -1.452 0.00 0.00 H +ATOM 167 HA ASP A 9 0.304 -7.017 -2.743 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.744 -4.518 -3.205 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.878 -4.560 -1.892 0.00 0.00 H +ATOM 170 N GLY A 10 1.469 -6.281 0.289 0.00 0.00 N +ATOM 171 CA GLY A 10 2.142 -6.803 1.484 0.00 0.00 C +ATOM 172 C GLY A 10 2.644 -5.740 2.469 0.00 0.00 C +ATOM 173 O GLY A 10 3.613 -5.985 3.194 0.00 0.00 O +ATOM 174 H GLY A 10 1.155 -5.323 0.250 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.445 -7.452 2.016 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.995 -7.408 1.175 0.00 0.00 H +ATOM 177 N GLY A 11 2.028 -4.548 2.496 0.00 0.00 N +ATOM 178 CA GLY A 11 2.465 -3.422 3.328 0.00 0.00 C +ATOM 179 C GLY A 11 3.961 -3.104 3.147 0.00 0.00 C +ATOM 180 O GLY A 11 4.428 -3.060 2.005 0.00 0.00 O +ATOM 181 H GLY A 11 1.229 -4.418 1.894 0.00 0.00 H +ATOM 182 1HA GLY A 11 1.897 -2.535 3.047 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.242 -3.663 4.366 0.00 0.00 H +ATOM 184 N PRO A 12 4.744 -2.895 4.229 0.00 0.00 N +ATOM 185 CA PRO A 12 6.184 -2.626 4.136 0.00 0.00 C +ATOM 186 C PRO A 12 6.990 -3.695 3.379 0.00 0.00 C +ATOM 187 O PRO A 12 8.035 -3.383 2.813 0.00 0.00 O +ATOM 188 CB PRO A 12 6.687 -2.517 5.581 0.00 0.00 C +ATOM 189 CG PRO A 12 5.435 -2.200 6.394 0.00 0.00 C +ATOM 190 CD PRO A 12 4.325 -2.910 5.621 0.00 0.00 C +ATOM 191 HA PRO A 12 6.325 -1.668 3.636 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.124 -3.443 5.902 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.439 -1.733 5.682 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.516 -2.586 7.392 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.256 -1.124 6.386 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.214 -3.919 5.968 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.379 -2.387 5.767 0.00 0.00 H +ATOM 198 N SER A 13 6.507 -4.946 3.334 0.00 0.00 N +ATOM 199 CA SER A 13 7.187 -6.064 2.673 0.00 0.00 C +ATOM 200 C SER A 13 7.029 -6.063 1.139 0.00 0.00 C +ATOM 201 O SER A 13 7.451 -7.024 0.494 0.00 0.00 O +ATOM 202 CB SER A 13 6.706 -7.387 3.280 0.00 0.00 C +ATOM 203 OG SER A 13 7.516 -8.439 2.801 0.00 0.00 O +ATOM 204 H SER A 13 5.587 -5.127 3.723 0.00 0.00 H +ATOM 205 HA SER A 13 8.254 -5.982 2.881 0.00 0.00 H +ATOM 206 1HB SER A 13 6.777 -7.338 4.350 0.00 0.00 H +ATOM 207 2HB SER A 13 5.667 -7.570 3.006 0.00 0.00 H +ATOM 208 HG SER A 13 7.599 -8.303 1.840 0.00 0.00 H +ATOM 209 N SER A 14 6.431 -5.007 0.568 0.00 0.00 N +ATOM 210 CA SER A 14 6.122 -4.843 -0.863 0.00 0.00 C +ATOM 211 C SER A 14 7.243 -4.167 -1.670 0.00 0.00 C +ATOM 212 O SER A 14 7.126 -4.014 -2.885 0.00 0.00 O +ATOM 213 CB SER A 14 4.869 -3.968 -1.035 0.00 0.00 C +ATOM 214 OG SER A 14 3.852 -4.282 -0.111 0.00 0.00 O +ATOM 215 H SER A 14 6.092 -4.293 1.198 0.00 0.00 H +ATOM 216 HA SER A 14 5.916 -5.820 -1.304 0.00 0.00 H +ATOM 217 1HB SER A 14 5.148 -2.940 -0.902 0.00 0.00 H +ATOM 218 2HB SER A 14 4.489 -4.086 -2.049 0.00 0.00 H +ATOM 219 HG SER A 14 4.047 -3.794 0.729 0.00 0.00 H +ATOM 220 N GLY A 15 8.295 -3.658 -1.015 0.00 0.00 N +ATOM 221 CA GLY A 15 9.401 -2.924 -1.649 0.00 0.00 C +ATOM 222 C GLY A 15 9.095 -1.469 -2.050 0.00 0.00 C +ATOM 223 O GLY A 15 10.027 -0.688 -2.223 0.00 0.00 O +ATOM 224 H GLY A 15 8.323 -3.798 -0.013 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.254 -2.914 -0.971 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.705 -3.456 -2.552 0.00 0.00 H +ATOM 227 N ARG A 16 7.815 -1.082 -2.167 0.00 0.00 N +ATOM 228 CA ARG A 16 7.364 0.285 -2.472 0.00 0.00 C +ATOM 229 C ARG A 16 6.898 1.010 -1.194 0.00 0.00 C +ATOM 230 O ARG A 16 6.164 0.402 -0.414 0.00 0.00 O +ATOM 231 CB ARG A 16 6.227 0.209 -3.508 0.00 0.00 C +ATOM 232 CG ARG A 16 5.864 1.592 -4.069 0.00 0.00 C +ATOM 233 CD ARG A 16 4.667 1.536 -5.024 0.00 0.00 C +ATOM 234 NE ARG A 16 4.606 2.733 -5.883 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.305 3.981 -5.540 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.982 4.326 -4.313 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.338 4.924 -6.455 0.00 0.00 N +ATOM 238 H ARG A 16 7.121 -1.806 -2.050 0.00 0.00 H +ATOM 239 HA ARG A 16 8.203 0.825 -2.912 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.538 -0.422 -4.318 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.345 -0.244 -3.049 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.623 2.244 -3.251 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.729 1.984 -4.604 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.756 0.665 -5.645 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.744 1.430 -4.452 0.00 0.00 H +ATOM 246 HE ARG A 16 4.837 2.583 -6.851 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 3.989 3.631 -3.582 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 3.762 5.278 -4.085 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.596 4.707 -7.402 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 4.116 5.872 -6.209 0.00 0.00 H +ATOM 251 N PRO A 17 7.232 2.303 -0.989 0.00 0.00 N +ATOM 252 CA PRO A 17 6.749 3.076 0.161 0.00 0.00 C +ATOM 253 C PRO A 17 5.224 3.306 0.130 0.00 0.00 C +ATOM 254 O PRO A 17 4.612 3.230 -0.945 0.00 0.00 O +ATOM 255 CB PRO A 17 7.515 4.405 0.107 0.00 0.00 C +ATOM 256 CG PRO A 17 7.835 4.571 -1.375 0.00 0.00 C +ATOM 257 CD PRO A 17 8.095 3.134 -1.819 0.00 0.00 C +ATOM 258 HA PRO A 17 7.009 2.547 1.078 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.905 5.214 0.461 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.445 4.313 0.672 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.005 4.997 -1.906 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.703 5.210 -1.537 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.847 3.012 -2.856 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.137 2.873 -1.630 0.00 0.00 H +ATOM 265 N PRO A 18 4.607 3.621 1.290 0.00 0.00 N +ATOM 266 CA PRO A 18 3.173 3.861 1.391 0.00 0.00 C +ATOM 267 C PRO A 18 2.768 5.155 0.668 0.00 0.00 C +ATOM 268 O PRO A 18 3.536 6.122 0.654 0.00 0.00 O +ATOM 269 CB PRO A 18 2.862 3.940 2.889 0.00 0.00 C +ATOM 270 CG PRO A 18 4.175 4.424 3.496 0.00 0.00 C +ATOM 271 CD PRO A 18 5.230 3.775 2.601 0.00 0.00 C +ATOM 272 HA PRO A 18 2.647 3.013 0.960 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.070 4.638 3.081 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.631 2.946 3.269 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.245 5.494 3.460 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.280 4.116 4.536 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.097 4.404 2.530 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.490 2.793 2.996 0.00 0.00 H +ATOM 279 N PRO A 19 1.558 5.206 0.088 0.00 0.00 N +ATOM 280 CA PRO A 19 1.036 6.414 -0.536 0.00 0.00 C +ATOM 281 C PRO A 19 0.580 7.431 0.525 0.00 0.00 C +ATOM 282 O PRO A 19 0.139 7.063 1.615 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.114 5.918 -1.419 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.641 4.693 -0.668 0.00 0.00 C +ATOM 285 CD PRO A 19 0.599 4.117 0.004 0.00 0.00 C +ATOM 286 HA PRO A 19 1.800 6.874 -1.164 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.876 6.667 -1.512 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.288 5.602 -2.384 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.374 4.978 0.062 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.084 3.963 -1.347 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.357 3.758 0.986 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.015 3.321 -0.613 0.00 0.00 H +ATOM 293 N SER A 20 0.671 8.718 0.173 0.00 0.00 N +ATOM 294 CA SER A 20 0.166 9.881 0.915 0.00 0.00 C +ATOM 295 C SER A 20 -0.789 10.667 0.023 0.00 0.00 C +ATOM 296 O SER A 20 -1.886 10.995 0.519 0.00 0.00 O +ATOM 297 CB SER A 20 1.319 10.782 1.355 0.00 0.00 C +ATOM 298 OG SER A 20 2.016 10.129 2.391 0.00 0.00 O +ATOM 299 OXT SER A 20 -0.396 10.900 -1.142 0.00 0.00 O +ATOM 300 H SER A 20 0.997 8.943 -0.756 0.00 0.00 H +ATOM 301 HA SER A 20 -0.403 9.569 1.792 0.00 0.00 H +ATOM 302 1HB SER A 20 1.979 10.958 0.527 0.00 0.00 H +ATOM 303 2HB SER A 20 0.933 11.738 1.713 0.00 0.00 H +ATOM 304 HG SER A 20 1.901 9.185 2.245 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 30 +ATOM 1 N ASN A 1 -6.460 7.364 0.613 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.483 6.556 -0.103 0.00 0.00 C +ATOM 3 C ASN A 1 -6.889 5.287 -0.732 0.00 0.00 C +ATOM 4 O ASN A 1 -7.475 4.227 -0.571 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.236 7.406 -1.144 0.00 0.00 C +ATOM 6 CG ASN A 1 -7.303 7.780 -2.289 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -6.233 8.314 -2.043 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -7.597 7.393 -3.514 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.878 6.774 1.192 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.887 7.854 -0.067 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.912 8.053 1.197 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.216 6.208 0.628 0.00 0.00 H +ATOM 13 1HB ASN A 1 -9.064 6.843 -1.530 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.607 8.320 -0.677 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -8.429 6.875 -3.745 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -6.919 7.643 -4.219 0.00 0.00 H +ATOM 17 N LEU A 2 -5.741 5.358 -1.420 0.00 0.00 N +ATOM 18 CA LEU A 2 -5.100 4.220 -2.108 0.00 0.00 C +ATOM 19 C LEU A 2 -4.341 3.246 -1.180 0.00 0.00 C +ATOM 20 O LEU A 2 -3.776 2.254 -1.644 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.211 4.795 -3.233 0.00 0.00 C +ATOM 22 CG LEU A 2 -5.026 4.979 -4.531 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.502 6.140 -5.376 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -5.004 3.695 -5.367 0.00 0.00 C +ATOM 25 H LEU A 2 -5.329 6.267 -1.601 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.882 3.615 -2.569 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.822 5.746 -2.923 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.367 4.131 -3.434 0.00 0.00 H +ATOM 29 HG LEU A 2 -6.062 5.205 -4.277 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.492 7.057 -4.785 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.492 5.927 -5.725 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -5.154 6.287 -6.238 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -3.983 3.466 -5.675 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.397 2.860 -4.791 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -5.619 3.822 -6.259 0.00 0.00 H +ATOM 36 N TYR A 3 -4.369 3.488 0.136 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.657 2.701 1.145 0.00 0.00 C +ATOM 38 C TYR A 3 -4.098 1.228 1.178 0.00 0.00 C +ATOM 39 O TYR A 3 -3.268 0.347 1.389 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.837 3.357 2.523 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.642 3.161 3.434 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.695 4.196 3.573 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.458 1.945 4.120 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.570 4.016 4.396 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.331 1.761 4.945 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.383 2.798 5.082 0.00 0.00 C +ATOM 47 OH TYR A 3 0.699 2.647 5.890 0.00 0.00 O +ATOM 48 H TYR A 3 -4.905 4.281 0.443 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.597 2.723 0.895 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.991 4.410 2.383 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.732 2.959 3.008 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.824 5.137 3.055 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.179 1.149 4.003 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.151 4.808 4.521 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.180 0.826 5.463 0.00 0.00 H +ATOM 56 HH TYR A 3 0.441 2.460 6.795 0.00 0.00 H +ATOM 57 N ILE A 4 -5.388 0.955 0.919 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.920 -0.410 0.824 0.00 0.00 C +ATOM 59 C ILE A 4 -5.170 -1.190 -0.266 0.00 0.00 C +ATOM 60 O ILE A 4 -4.654 -2.276 -0.009 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.449 -0.413 0.570 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.252 0.393 1.623 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.973 -1.860 0.555 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.642 1.792 1.136 0.00 0.00 C +ATOM 65 H ILE A 4 -6.009 1.734 0.758 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.730 -0.915 1.773 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.642 0.008 -0.418 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.148 -0.149 1.858 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.684 0.477 2.549 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.552 -2.404 -0.285 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.704 -2.366 1.485 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.059 -1.868 0.448 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.779 2.452 1.188 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.018 1.751 0.113 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.431 2.192 1.775 0.00 0.00 H +ATOM 76 N GLN A 5 -5.097 -0.628 -1.481 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.416 -1.240 -2.624 0.00 0.00 C +ATOM 78 C GLN A 5 -2.926 -1.482 -2.349 0.00 0.00 C +ATOM 79 O GLN A 5 -2.406 -2.535 -2.707 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.601 -0.369 -3.878 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.909 -1.238 -5.106 0.00 0.00 C +ATOM 82 CD GLN A 5 -4.680 -0.468 -6.398 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.535 0.265 -6.866 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -3.518 -0.604 -7.008 0.00 0.00 N +ATOM 85 H GLN A 5 -5.464 0.307 -1.591 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.871 -2.214 -2.798 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.414 0.312 -3.716 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.691 0.207 -4.059 0.00 0.00 H +ATOM 89 1HG GLN A 5 -4.269 -2.099 -5.094 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.953 -1.554 -5.065 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -2.791 -1.203 -6.654 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -3.429 -0.080 -7.861 0.00 0.00 H +ATOM 93 N TRP A 6 -2.259 -0.532 -1.681 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.876 -0.690 -1.231 0.00 0.00 C +ATOM 95 C TRP A 6 -0.716 -1.832 -0.211 0.00 0.00 C +ATOM 96 O TRP A 6 0.176 -2.668 -0.361 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.374 0.647 -0.679 0.00 0.00 C +ATOM 98 CG TRP A 6 1.038 0.612 -0.187 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.141 0.697 -0.963 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.520 0.464 1.184 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.265 0.595 -0.168 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.944 0.448 1.159 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.902 0.355 2.448 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.724 0.344 2.317 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.675 0.244 3.623 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.080 0.249 3.561 0.00 0.00 C +ATOM 107 H TRP A 6 -2.752 0.326 -1.458 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.260 -0.952 -2.093 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.441 1.380 -1.459 0.00 0.00 H +ATOM 110 2HB TRP A 6 -1.015 0.962 0.144 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.138 0.826 -2.038 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.223 0.685 -0.491 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.175 0.378 2.506 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.802 0.341 2.239 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.187 0.174 4.582 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.663 0.185 4.467 0.00 0.00 H +ATOM 117 N LEU A 7 -1.599 -1.914 0.796 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.593 -3.012 1.768 0.00 0.00 C +ATOM 119 C LEU A 7 -1.846 -4.384 1.129 0.00 0.00 C +ATOM 120 O LEU A 7 -1.193 -5.345 1.538 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.602 -2.751 2.902 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.105 -1.780 3.989 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.232 -1.537 4.996 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.894 -2.319 4.764 0.00 0.00 C +ATOM 125 H LEU A 7 -2.301 -1.181 0.888 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.591 -3.074 2.189 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.494 -2.341 2.469 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.838 -3.699 3.387 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.835 -0.833 3.527 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.108 -1.139 4.483 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.500 -2.472 5.489 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.913 -0.822 5.752 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.122 -3.301 5.179 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.027 -2.398 4.112 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.639 -1.639 5.576 0.00 0.00 H +ATOM 136 N LYS A 8 -2.722 -4.491 0.113 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.959 -5.749 -0.626 0.00 0.00 C +ATOM 138 C LYS A 8 -1.683 -6.372 -1.201 0.00 0.00 C +ATOM 139 O LYS A 8 -1.595 -7.593 -1.269 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.007 -5.555 -1.743 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.443 -5.846 -1.265 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.440 -4.718 -1.552 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.997 -4.739 -2.978 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.865 -3.560 -3.222 0.00 0.00 N +ATOM 145 H LYS A 8 -3.252 -3.655 -0.124 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.328 -6.495 0.081 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.958 -4.540 -2.087 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.787 -6.243 -2.562 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.788 -6.734 -1.758 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.439 -6.011 -0.187 0.00 0.00 H +ATOM 151 1HD LYS A 8 -7.260 -4.808 -0.866 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.951 -3.767 -1.378 0.00 0.00 H +ATOM 153 1HE LYS A 8 -6.181 -4.725 -3.675 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.572 -5.660 -3.111 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -8.644 -3.562 -2.574 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.341 -2.706 -3.093 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -8.232 -3.580 -4.164 0.00 0.00 H +ATOM 158 N ASP A 9 -0.696 -5.556 -1.580 0.00 0.00 N +ATOM 159 CA ASP A 9 0.598 -6.026 -2.075 0.00 0.00 C +ATOM 160 C ASP A 9 1.519 -6.577 -0.966 0.00 0.00 C +ATOM 161 O ASP A 9 2.545 -7.185 -1.279 0.00 0.00 O +ATOM 162 CB ASP A 9 1.286 -4.862 -2.807 0.00 0.00 C +ATOM 163 CG ASP A 9 2.136 -5.346 -3.982 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.373 -5.444 -3.814 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.579 -5.513 -5.084 0.00 0.00 O +ATOM 166 H ASP A 9 -0.850 -4.558 -1.514 0.00 0.00 H +ATOM 167 HA ASP A 9 0.421 -6.829 -2.794 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.534 -4.192 -3.177 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.907 -4.305 -2.103 0.00 0.00 H +ATOM 170 N GLY A 10 1.200 -6.338 0.319 0.00 0.00 N +ATOM 171 CA GLY A 10 1.994 -6.734 1.492 0.00 0.00 C +ATOM 172 C GLY A 10 2.551 -5.569 2.334 0.00 0.00 C +ATOM 173 O GLY A 10 3.261 -5.808 3.315 0.00 0.00 O +ATOM 174 H GLY A 10 0.312 -5.879 0.502 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.360 -7.337 2.142 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.835 -7.356 1.186 0.00 0.00 H +ATOM 177 N GLY A 11 2.238 -4.314 1.983 0.00 0.00 N +ATOM 178 CA GLY A 11 2.630 -3.135 2.756 0.00 0.00 C +ATOM 179 C GLY A 11 4.156 -2.921 2.790 0.00 0.00 C +ATOM 180 O GLY A 11 4.786 -2.907 1.729 0.00 0.00 O +ATOM 181 H GLY A 11 1.725 -4.177 1.122 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.172 -2.252 2.310 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.237 -3.250 3.763 0.00 0.00 H +ATOM 184 N PRO A 12 4.785 -2.743 3.974 0.00 0.00 N +ATOM 185 CA PRO A 12 6.237 -2.551 4.077 0.00 0.00 C +ATOM 186 C PRO A 12 7.066 -3.702 3.485 0.00 0.00 C +ATOM 187 O PRO A 12 8.207 -3.486 3.077 0.00 0.00 O +ATOM 188 CB PRO A 12 6.543 -2.392 5.572 0.00 0.00 C +ATOM 189 CG PRO A 12 5.203 -2.021 6.203 0.00 0.00 C +ATOM 190 CD PRO A 12 4.182 -2.709 5.300 0.00 0.00 C +ATOM 191 HA PRO A 12 6.501 -1.628 3.560 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.913 -3.312 5.983 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.291 -1.616 5.745 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.137 -2.391 7.208 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.065 -0.941 6.157 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.987 -3.705 5.648 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.247 -2.149 5.311 0.00 0.00 H +ATOM 198 N SER A 13 6.502 -4.917 3.405 0.00 0.00 N +ATOM 199 CA SER A 13 7.196 -6.128 2.940 0.00 0.00 C +ATOM 200 C SER A 13 7.128 -6.326 1.416 0.00 0.00 C +ATOM 201 O SER A 13 7.334 -7.437 0.931 0.00 0.00 O +ATOM 202 CB SER A 13 6.674 -7.367 3.682 0.00 0.00 C +ATOM 203 OG SER A 13 6.833 -7.217 5.081 0.00 0.00 O +ATOM 204 H SER A 13 5.524 -4.999 3.654 0.00 0.00 H +ATOM 205 HA SER A 13 8.254 -6.034 3.186 0.00 0.00 H +ATOM 206 1HB SER A 13 5.633 -7.499 3.458 0.00 0.00 H +ATOM 207 2HB SER A 13 7.251 -8.238 3.368 0.00 0.00 H +ATOM 208 HG SER A 13 6.115 -6.675 5.416 0.00 0.00 H +ATOM 209 N SER A 14 6.854 -5.257 0.662 0.00 0.00 N +ATOM 210 CA SER A 14 6.584 -5.293 -0.785 0.00 0.00 C +ATOM 211 C SER A 14 7.566 -4.459 -1.616 0.00 0.00 C +ATOM 212 O SER A 14 7.367 -4.289 -2.817 0.00 0.00 O +ATOM 213 CB SER A 14 5.146 -4.838 -1.031 0.00 0.00 C +ATOM 214 OG SER A 14 4.277 -5.620 -0.252 0.00 0.00 O +ATOM 215 H SER A 14 6.601 -4.410 1.157 0.00 0.00 H +ATOM 216 HA SER A 14 6.658 -6.321 -1.144 0.00 0.00 H +ATOM 217 1HB SER A 14 5.044 -3.806 -0.757 0.00 0.00 H +ATOM 218 2HB SER A 14 4.908 -4.937 -2.086 0.00 0.00 H +ATOM 219 HG SER A 14 3.762 -6.253 -0.814 0.00 0.00 H +ATOM 220 N GLY A 15 8.616 -3.911 -0.986 0.00 0.00 N +ATOM 221 CA GLY A 15 9.650 -3.115 -1.655 0.00 0.00 C +ATOM 222 C GLY A 15 9.148 -1.778 -2.215 0.00 0.00 C +ATOM 223 O GLY A 15 9.705 -1.282 -3.192 0.00 0.00 O +ATOM 224 H GLY A 15 8.720 -4.130 -0.003 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.451 -2.904 -0.947 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.069 -3.693 -2.479 0.00 0.00 H +ATOM 227 N ARG A 16 8.090 -1.203 -1.622 0.00 0.00 N +ATOM 228 CA ARG A 16 7.417 0.014 -2.096 0.00 0.00 C +ATOM 229 C ARG A 16 6.924 0.888 -0.926 0.00 0.00 C +ATOM 230 O ARG A 16 6.280 0.358 -0.018 0.00 0.00 O +ATOM 231 CB ARG A 16 6.269 -0.371 -3.052 0.00 0.00 C +ATOM 232 CG ARG A 16 5.250 -1.359 -2.458 0.00 0.00 C +ATOM 233 CD ARG A 16 4.104 -1.695 -3.419 0.00 0.00 C +ATOM 234 NE ARG A 16 4.341 -2.957 -4.134 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.904 -3.201 -5.305 0.00 0.00 C +ATOM 236 NH1 ARG A 16 5.427 -2.257 -6.053 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.910 -4.436 -5.734 0.00 0.00 N +ATOM 238 H ARG A 16 7.706 -1.667 -0.809 0.00 0.00 H +ATOM 239 HA ARG A 16 8.145 0.582 -2.674 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.747 0.525 -3.327 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.708 -0.821 -3.943 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.762 -2.268 -2.207 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.813 -0.934 -1.563 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.194 -1.780 -2.857 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.933 -0.873 -4.115 0.00 0.00 H +ATOM 246 HE ARG A 16 3.985 -3.821 -3.714 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 5.402 -1.317 -5.706 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 5.836 -2.486 -6.938 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.381 -5.092 -5.130 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 5.299 -4.728 -6.606 0.00 0.00 H +ATOM 251 N PRO A 17 7.173 2.212 -0.928 0.00 0.00 N +ATOM 252 CA PRO A 17 6.709 3.107 0.135 0.00 0.00 C +ATOM 253 C PRO A 17 5.179 3.304 0.093 0.00 0.00 C +ATOM 254 O PRO A 17 4.572 3.105 -0.963 0.00 0.00 O +ATOM 255 CB PRO A 17 7.453 4.424 -0.105 0.00 0.00 C +ATOM 256 CG PRO A 17 7.690 4.435 -1.615 0.00 0.00 C +ATOM 257 CD PRO A 17 7.884 2.960 -1.955 0.00 0.00 C +ATOM 258 HA PRO A 17 6.996 2.696 1.103 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.854 5.262 0.195 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.414 4.395 0.413 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.842 4.840 -2.134 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.568 5.026 -1.881 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.475 2.744 -2.923 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.945 2.707 -1.917 0.00 0.00 H +ATOM 265 N PRO A 18 4.547 3.703 1.215 0.00 0.00 N +ATOM 266 CA PRO A 18 3.107 3.958 1.273 0.00 0.00 C +ATOM 267 C PRO A 18 2.718 5.246 0.522 0.00 0.00 C +ATOM 268 O PRO A 18 3.537 6.161 0.405 0.00 0.00 O +ATOM 269 CB PRO A 18 2.775 4.060 2.766 0.00 0.00 C +ATOM 270 CG PRO A 18 4.078 4.556 3.393 0.00 0.00 C +ATOM 271 CD PRO A 18 5.157 3.921 2.519 0.00 0.00 C +ATOM 272 HA PRO A 18 2.574 3.114 0.842 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.979 4.759 2.934 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.537 3.072 3.156 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.137 5.627 3.359 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.168 4.245 4.434 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.999 4.580 2.430 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.454 2.961 2.942 0.00 0.00 H +ATOM 279 N PRO A 19 1.462 5.356 0.042 0.00 0.00 N +ATOM 280 CA PRO A 19 0.965 6.565 -0.607 0.00 0.00 C +ATOM 281 C PRO A 19 0.679 7.670 0.424 0.00 0.00 C +ATOM 282 O PRO A 19 0.133 7.394 1.493 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.307 6.120 -1.337 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.842 4.980 -0.470 0.00 0.00 C +ATOM 285 CD PRO A 19 0.425 4.333 0.092 0.00 0.00 C +ATOM 286 HA PRO A 19 1.694 6.927 -1.334 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.016 6.923 -1.394 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.038 5.730 -2.321 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.462 5.358 0.320 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.427 4.271 -1.057 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.263 4.017 1.104 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.718 3.493 -0.537 0.00 0.00 H +ATOM 293 N SER A 20 1.033 8.915 0.077 0.00 0.00 N +ATOM 294 CA SER A 20 0.705 10.139 0.828 0.00 0.00 C +ATOM 295 C SER A 20 -0.786 10.478 0.742 0.00 0.00 C +ATOM 296 O SER A 20 -1.375 10.693 1.822 0.00 0.00 O +ATOM 297 CB SER A 20 1.520 11.322 0.296 0.00 0.00 C +ATOM 298 OG SER A 20 2.902 11.054 0.415 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.297 10.548 -0.398 0.00 0.00 O +ATOM 300 H SER A 20 1.493 9.051 -0.810 0.00 0.00 H +ATOM 301 HA SER A 20 0.929 9.985 1.882 0.00 0.00 H +ATOM 302 1HB SER A 20 1.278 11.484 -0.737 0.00 0.00 H +ATOM 303 2HB SER A 20 1.270 12.218 0.868 0.00 0.00 H +ATOM 304 HG SER A 20 3.079 10.774 1.317 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 31 +ATOM 1 N ASN A 1 -5.909 7.522 0.267 0.00 0.00 N +ATOM 2 CA ASN A 1 -6.878 6.859 -0.640 0.00 0.00 C +ATOM 3 C ASN A 1 -6.387 5.474 -1.074 0.00 0.00 C +ATOM 4 O ASN A 1 -7.073 4.506 -0.795 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.238 7.752 -1.848 0.00 0.00 C +ATOM 6 CG ASN A 1 -6.030 7.972 -2.754 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -4.939 8.212 -2.259 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -6.143 7.768 -4.052 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.599 6.883 0.986 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.112 7.842 -0.277 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.337 8.328 0.703 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.798 6.680 -0.079 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.017 7.278 -2.413 0.00 0.00 H +ATOM 14 2HB ASN A 1 -7.592 8.722 -1.493 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -7.007 7.508 -4.498 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -5.297 7.914 -4.581 0.00 0.00 H +ATOM 17 N LEU A 2 -5.214 5.357 -1.714 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.723 4.133 -2.374 0.00 0.00 C +ATOM 19 C LEU A 2 -4.072 3.112 -1.410 0.00 0.00 C +ATOM 20 O LEU A 2 -3.514 2.099 -1.824 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.784 4.570 -3.527 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.051 3.825 -4.857 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.094 4.806 -6.033 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.990 2.766 -5.156 0.00 0.00 C +ATOM 25 H LEU A 2 -4.694 6.204 -1.928 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.592 3.628 -2.801 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.918 5.621 -3.694 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.742 4.452 -3.229 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.023 3.338 -4.815 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.920 5.505 -5.900 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.158 5.361 -6.096 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.250 4.259 -6.963 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -2.068 3.238 -5.500 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -2.771 2.189 -4.262 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -3.360 2.093 -5.930 0.00 0.00 H +ATOM 36 N TYR A 3 -4.158 3.379 -0.100 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.550 2.591 0.970 0.00 0.00 C +ATOM 38 C TYR A 3 -4.064 1.142 1.019 0.00 0.00 C +ATOM 39 O TYR A 3 -3.312 0.246 1.398 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.780 3.308 2.312 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.551 3.326 3.197 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.687 4.439 3.181 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.261 2.225 4.024 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.529 4.448 3.976 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.106 2.230 4.829 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.232 3.340 4.800 0.00 0.00 C +ATOM 47 OH TYR A 3 0.880 3.349 5.583 0.00 0.00 O +ATOM 48 H TYR A 3 -4.674 4.203 0.150 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.477 2.550 0.784 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.071 4.321 2.112 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.604 2.835 2.848 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.899 5.294 2.555 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -2.925 1.374 4.033 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.134 5.301 3.953 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -0.876 1.391 5.467 0.00 0.00 H +ATOM 56 HH TYR A 3 0.691 3.713 6.450 0.00 0.00 H +ATOM 57 N ILE A 4 -5.318 0.899 0.604 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.916 -0.442 0.543 0.00 0.00 C +ATOM 59 C ILE A 4 -5.144 -1.321 -0.447 0.00 0.00 C +ATOM 60 O ILE A 4 -4.704 -2.405 -0.072 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.426 -0.393 0.201 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.210 0.560 1.137 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.041 -1.802 0.286 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.670 1.817 0.395 0.00 0.00 C +ATOM 65 H ILE A 4 -5.870 1.690 0.302 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.811 -0.900 1.529 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.537 -0.053 -0.832 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.071 0.045 1.518 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.591 0.854 1.986 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.564 -2.474 -0.427 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.920 -2.203 1.294 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.103 -1.755 0.046 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.834 2.238 -0.159 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.467 1.560 -0.304 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.041 2.553 1.108 0.00 0.00 H +ATOM 76 N GLN A 5 -4.941 -0.843 -1.684 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.117 -1.514 -2.693 0.00 0.00 C +ATOM 78 C GLN A 5 -2.686 -1.746 -2.187 0.00 0.00 C +ATOM 79 O GLN A 5 -2.209 -2.879 -2.229 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.134 -0.708 -4.002 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.442 -0.901 -4.795 0.00 0.00 C +ATOM 82 CD GLN A 5 -6.166 0.412 -5.082 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -6.464 1.188 -4.184 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.497 0.688 -6.330 0.00 0.00 N +ATOM 85 H GLN A 5 -5.307 0.072 -1.913 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.539 -2.498 -2.896 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.024 0.333 -3.767 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.302 -1.031 -4.631 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.209 -1.374 -5.729 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.129 -1.543 -4.244 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -6.283 0.067 -7.093 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -7.002 1.548 -6.458 0.00 0.00 H +ATOM 93 N TRP A 6 -2.034 -0.709 -1.645 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.678 -0.829 -1.093 0.00 0.00 C +ATOM 95 C TRP A 6 -0.567 -1.888 0.023 0.00 0.00 C +ATOM 96 O TRP A 6 0.376 -2.684 0.030 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.200 0.546 -0.612 0.00 0.00 C +ATOM 98 CG TRP A 6 1.200 0.544 -0.082 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.322 0.559 -0.836 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.651 0.467 1.306 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.427 0.481 -0.014 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.075 0.428 1.313 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.006 0.418 2.560 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.828 0.362 2.492 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.749 0.341 3.754 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.155 0.321 3.723 0.00 0.00 C +ATOM 107 H TRP A 6 -2.492 0.198 -1.645 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.016 -1.157 -1.898 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.249 1.230 -1.438 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.866 0.904 0.171 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.344 0.600 -1.918 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.399 0.465 -0.330 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.073 0.449 2.593 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.906 0.339 2.439 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.239 0.310 4.706 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.716 0.279 4.647 0.00 0.00 H +ATOM 117 N LEU A 7 -1.531 -1.946 0.950 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.587 -3.012 1.954 0.00 0.00 C +ATOM 119 C LEU A 7 -1.883 -4.387 1.338 0.00 0.00 C +ATOM 120 O LEU A 7 -1.259 -5.363 1.752 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.605 -2.670 3.056 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.118 -1.596 4.051 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.255 -1.244 5.014 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.920 -2.061 4.892 0.00 0.00 C +ATOM 125 H LEU A 7 -2.264 -1.238 0.941 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.599 -3.102 2.404 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.502 -2.314 2.587 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.828 -3.576 3.621 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.835 -0.698 3.507 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.107 -0.863 4.451 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.559 -2.129 5.572 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.924 -0.478 5.716 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.159 -2.994 5.401 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.046 -2.207 4.261 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.673 -1.303 5.635 0.00 0.00 H +ATOM 136 N LYS A 8 -2.772 -4.477 0.334 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.105 -5.716 -0.398 0.00 0.00 C +ATOM 138 C LYS A 8 -1.879 -6.425 -0.982 0.00 0.00 C +ATOM 139 O LYS A 8 -1.855 -7.653 -0.986 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.125 -5.413 -1.517 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.509 -6.032 -1.296 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.571 -7.539 -1.610 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.790 -7.876 -2.484 0.00 0.00 C +ATOM 144 NZ LYS A 8 -6.467 -7.814 -3.931 0.00 0.00 N +ATOM 145 H LYS A 8 -3.262 -3.623 0.071 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.545 -6.418 0.311 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.241 -4.349 -1.587 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.737 -5.743 -2.483 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.784 -5.888 -0.269 0.00 0.00 H +ATOM 150 2HG LYS A 8 -6.212 -5.498 -1.938 0.00 0.00 H +ATOM 151 1HD LYS A 8 -4.677 -7.825 -2.131 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.653 -8.084 -0.669 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.125 -8.867 -2.245 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.598 -7.177 -2.246 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -6.123 -6.897 -4.179 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -5.753 -8.496 -4.155 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -7.289 -8.017 -4.487 0.00 0.00 H +ATOM 158 N ASP A 9 -0.876 -5.673 -1.449 0.00 0.00 N +ATOM 159 CA ASP A 9 0.398 -6.223 -1.930 0.00 0.00 C +ATOM 160 C ASP A 9 1.311 -6.762 -0.805 0.00 0.00 C +ATOM 161 O ASP A 9 2.203 -7.564 -1.082 0.00 0.00 O +ATOM 162 CB ASP A 9 1.147 -5.144 -2.731 0.00 0.00 C +ATOM 163 CG ASP A 9 0.467 -4.801 -4.061 0.00 0.00 C +ATOM 164 OD1 ASP A 9 0.290 -3.591 -4.324 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.157 -5.754 -4.813 0.00 0.00 O +ATOM 166 H ASP A 9 -1.030 -4.670 -1.499 0.00 0.00 H +ATOM 167 HA ASP A 9 0.195 -7.060 -2.600 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.201 -4.253 -2.136 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.152 -5.505 -2.957 0.00 0.00 H +ATOM 170 N GLY A 10 1.096 -6.352 0.456 0.00 0.00 N +ATOM 171 CA GLY A 10 1.939 -6.705 1.606 0.00 0.00 C +ATOM 172 C GLY A 10 2.565 -5.512 2.347 0.00 0.00 C +ATOM 173 O GLY A 10 3.435 -5.730 3.206 0.00 0.00 O +ATOM 174 H GLY A 10 0.261 -5.800 0.631 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.326 -7.256 2.320 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.746 -7.365 1.289 0.00 0.00 H +ATOM 177 N GLY A 11 2.176 -4.272 2.029 0.00 0.00 N +ATOM 178 CA GLY A 11 2.626 -3.057 2.710 0.00 0.00 C +ATOM 179 C GLY A 11 4.158 -2.915 2.747 0.00 0.00 C +ATOM 180 O GLY A 11 4.789 -2.963 1.691 0.00 0.00 O +ATOM 181 H GLY A 11 1.547 -4.148 1.241 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.223 -2.195 2.180 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.209 -3.058 3.715 0.00 0.00 H +ATOM 184 N PRO A 12 4.800 -2.763 3.930 0.00 0.00 N +ATOM 185 CA PRO A 12 6.259 -2.630 4.030 0.00 0.00 C +ATOM 186 C PRO A 12 7.037 -3.777 3.366 0.00 0.00 C +ATOM 187 O PRO A 12 8.146 -3.571 2.879 0.00 0.00 O +ATOM 188 CB PRO A 12 6.578 -2.563 5.529 0.00 0.00 C +ATOM 189 CG PRO A 12 5.267 -2.123 6.174 0.00 0.00 C +ATOM 190 CD PRO A 12 4.203 -2.726 5.258 0.00 0.00 C +ATOM 191 HA PRO A 12 6.554 -1.691 3.560 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.879 -3.525 5.897 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.381 -1.855 5.734 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.180 -2.511 7.171 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.195 -1.035 6.150 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.949 -3.717 5.582 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.303 -2.112 5.287 0.00 0.00 H +ATOM 198 N SER A 13 6.444 -4.979 3.307 0.00 0.00 N +ATOM 199 CA SER A 13 7.043 -6.156 2.670 0.00 0.00 C +ATOM 200 C SER A 13 6.983 -6.137 1.130 0.00 0.00 C +ATOM 201 O SER A 13 7.548 -7.021 0.494 0.00 0.00 O +ATOM 202 CB SER A 13 6.428 -7.435 3.253 0.00 0.00 C +ATOM 203 OG SER A 13 5.089 -7.644 2.842 0.00 0.00 O +ATOM 204 H SER A 13 5.500 -5.052 3.666 0.00 0.00 H +ATOM 205 HA SER A 13 8.101 -6.173 2.933 0.00 0.00 H +ATOM 206 1HB SER A 13 7.018 -8.273 2.935 0.00 0.00 H +ATOM 207 2HB SER A 13 6.467 -7.386 4.343 0.00 0.00 H +ATOM 208 HG SER A 13 4.507 -6.893 3.104 0.00 0.00 H +ATOM 209 N SER A 14 6.343 -5.125 0.518 0.00 0.00 N +ATOM 210 CA SER A 14 6.214 -4.963 -0.941 0.00 0.00 C +ATOM 211 C SER A 14 7.325 -4.127 -1.595 0.00 0.00 C +ATOM 212 O SER A 14 7.306 -3.936 -2.809 0.00 0.00 O +ATOM 213 CB SER A 14 4.882 -4.280 -1.265 0.00 0.00 C +ATOM 214 OG SER A 14 3.823 -4.982 -0.663 0.00 0.00 O +ATOM 215 H SER A 14 5.902 -4.413 1.097 0.00 0.00 H +ATOM 216 HA SER A 14 6.217 -5.946 -1.415 0.00 0.00 H +ATOM 217 1HB SER A 14 4.899 -3.274 -0.893 0.00 0.00 H +ATOM 218 2HB SER A 14 4.731 -4.256 -2.345 0.00 0.00 H +ATOM 219 HG SER A 14 4.199 -5.674 -0.113 0.00 0.00 H +ATOM 220 N GLY A 15 8.258 -3.554 -0.822 0.00 0.00 N +ATOM 221 CA GLY A 15 9.356 -2.717 -1.330 0.00 0.00 C +ATOM 222 C GLY A 15 8.956 -1.287 -1.733 0.00 0.00 C +ATOM 223 O GLY A 15 9.753 -0.366 -1.564 0.00 0.00 O +ATOM 224 H GLY A 15 8.204 -3.723 0.175 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.135 -2.654 -0.570 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.789 -3.199 -2.207 0.00 0.00 H +ATOM 227 N ARG A 16 7.740 -1.078 -2.255 0.00 0.00 N +ATOM 228 CA ARG A 16 7.196 0.244 -2.606 0.00 0.00 C +ATOM 229 C ARG A 16 6.800 1.026 -1.334 0.00 0.00 C +ATOM 230 O ARG A 16 6.153 0.438 -0.465 0.00 0.00 O +ATOM 231 CB ARG A 16 6.004 0.043 -3.562 0.00 0.00 C +ATOM 232 CG ARG A 16 5.598 1.337 -4.286 0.00 0.00 C +ATOM 233 CD ARG A 16 4.649 1.070 -5.464 0.00 0.00 C +ATOM 234 NE ARG A 16 5.376 0.549 -6.647 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.988 1.239 -7.584 0.00 0.00 C +ATOM 236 NH1 ARG A 16 6.011 2.568 -7.581 0.00 0.00 N +ATOM 237 NH2 ARG A 16 6.613 0.642 -8.574 0.00 0.00 N +ATOM 238 H ARG A 16 7.177 -1.909 -2.406 0.00 0.00 H +ATOM 239 HA ARG A 16 7.984 0.785 -3.128 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.273 -0.691 -4.297 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.146 -0.347 -3.007 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.106 1.985 -3.586 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.488 1.833 -4.670 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.914 0.349 -5.162 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.142 2.000 -5.728 0.00 0.00 H +ATOM 246 HE ARG A 16 5.404 -0.458 -6.736 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 5.535 3.037 -6.833 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 6.471 3.081 -8.301 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 6.628 -0.366 -8.623 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 7.076 1.176 -9.280 0.00 0.00 H +ATOM 251 N PRO A 17 7.126 2.330 -1.200 0.00 0.00 N +ATOM 252 CA PRO A 17 6.809 3.113 0.002 0.00 0.00 C +ATOM 253 C PRO A 17 5.294 3.369 0.169 0.00 0.00 C +ATOM 254 O PRO A 17 4.551 3.273 -0.812 0.00 0.00 O +ATOM 255 CB PRO A 17 7.588 4.425 -0.160 0.00 0.00 C +ATOM 256 CG PRO A 17 7.688 4.594 -1.672 0.00 0.00 C +ATOM 257 CD PRO A 17 7.850 3.156 -2.157 0.00 0.00 C +ATOM 258 HA PRO A 17 7.177 2.582 0.880 0.00 0.00 H +ATOM 259 1HB PRO A 17 7.056 5.245 0.283 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.589 4.309 0.258 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.798 5.040 -2.072 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.535 5.216 -1.960 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.432 3.044 -3.139 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.905 2.879 -2.151 0.00 0.00 H +ATOM 265 N PRO A 18 4.828 3.720 1.386 0.00 0.00 N +ATOM 266 CA PRO A 18 3.415 3.979 1.661 0.00 0.00 C +ATOM 267 C PRO A 18 2.921 5.257 0.956 0.00 0.00 C +ATOM 268 O PRO A 18 3.633 6.262 0.960 0.00 0.00 O +ATOM 269 CB PRO A 18 3.307 4.111 3.185 0.00 0.00 C +ATOM 270 CG PRO A 18 4.701 4.568 3.609 0.00 0.00 C +ATOM 271 CD PRO A 18 5.614 3.867 2.605 0.00 0.00 C +ATOM 272 HA PRO A 18 2.830 3.121 1.340 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.567 4.840 3.454 0.00 0.00 H +ATOM 274 2HB PRO A 18 3.099 3.135 3.621 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.796 5.634 3.537 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.929 4.279 4.636 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.488 4.461 2.417 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.884 2.880 2.982 0.00 0.00 H +ATOM 279 N PRO A 19 1.704 5.254 0.376 0.00 0.00 N +ATOM 280 CA PRO A 19 1.131 6.433 -0.268 0.00 0.00 C +ATOM 281 C PRO A 19 0.578 7.422 0.772 0.00 0.00 C +ATOM 282 O PRO A 19 -0.096 7.022 1.725 0.00 0.00 O +ATOM 283 CB PRO A 19 0.032 5.878 -1.180 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.464 4.639 -0.433 0.00 0.00 C +ATOM 285 CD PRO A 19 0.792 4.121 0.270 0.00 0.00 C +ATOM 286 HA PRO A 19 1.886 6.934 -0.875 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.759 6.592 -1.305 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.474 5.572 -2.129 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.223 4.899 0.279 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.879 3.897 -1.115 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.545 3.752 1.247 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.257 3.344 -0.337 0.00 0.00 H +ATOM 293 N SER A 20 0.825 8.716 0.549 0.00 0.00 N +ATOM 294 CA SER A 20 0.360 9.847 1.362 0.00 0.00 C +ATOM 295 C SER A 20 -0.255 10.948 0.496 0.00 0.00 C +ATOM 296 O SER A 20 0.173 11.092 -0.672 0.00 0.00 O +ATOM 297 CB SER A 20 1.496 10.383 2.241 0.00 0.00 C +ATOM 298 OG SER A 20 2.667 10.641 1.485 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.188 11.592 1.023 0.00 0.00 O +ATOM 300 H SER A 20 1.372 9.005 -0.251 0.00 0.00 H +ATOM 301 HA SER A 20 -0.439 9.514 2.020 0.00 0.00 H +ATOM 302 1HB SER A 20 1.175 11.295 2.707 0.00 0.00 H +ATOM 303 2HB SER A 20 1.726 9.639 3.008 0.00 0.00 H +ATOM 304 HG SER A 20 3.313 11.084 2.036 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 32 +ATOM 1 N ASN A 1 -6.852 6.802 0.784 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.569 5.905 -0.155 0.00 0.00 C +ATOM 3 C ASN A 1 -6.675 4.784 -0.685 0.00 0.00 C +ATOM 4 O ASN A 1 -6.907 3.637 -0.312 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.306 6.688 -1.259 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.658 7.144 -0.720 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.402 6.342 -0.185 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -9.997 8.418 -0.771 0.00 0.00 N +ATOM 9 1H ASN A 1 -6.406 6.262 1.512 0.00 0.00 H +ATOM 10 2H ASN A 1 -6.150 7.342 0.294 0.00 0.00 H +ATOM 11 3H ASN A 1 -7.507 7.441 1.214 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.341 5.383 0.416 0.00 0.00 H +ATOM 13 1HB ASN A 1 -7.724 7.543 -1.544 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.496 6.032 -2.110 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -9.452 9.144 -1.207 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -10.916 8.601 -0.396 0.00 0.00 H +ATOM 17 N LEU A 2 -5.641 5.081 -1.489 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.771 4.070 -2.118 0.00 0.00 C +ATOM 19 C LEU A 2 -4.066 3.118 -1.122 0.00 0.00 C +ATOM 20 O LEU A 2 -3.610 2.044 -1.507 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.736 4.788 -3.009 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.207 3.896 -4.155 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.121 3.970 -5.385 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -1.783 4.286 -4.551 0.00 0.00 C +ATOM 25 H LEU A 2 -5.488 6.032 -1.793 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.401 3.449 -2.761 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.197 5.657 -3.437 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.911 5.107 -2.379 0.00 0.00 H +ATOM 29 HG LEU A 2 -3.172 2.861 -3.826 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -5.104 4.362 -5.124 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.683 4.602 -6.157 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.253 2.966 -5.790 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -1.718 5.358 -4.736 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -1.099 4.008 -3.752 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -1.488 3.743 -5.449 0.00 0.00 H +ATOM 36 N TYR A 3 -4.017 3.470 0.169 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.452 2.660 1.248 0.00 0.00 C +ATOM 38 C TYR A 3 -4.002 1.221 1.271 0.00 0.00 C +ATOM 39 O TYR A 3 -3.253 0.284 1.527 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.690 3.373 2.590 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.578 3.161 3.597 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.601 4.161 3.787 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.514 1.966 4.339 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.567 3.969 4.722 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.479 1.768 5.270 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.503 2.769 5.464 0.00 0.00 C +ATOM 47 OH TYR A 3 0.485 2.574 6.378 0.00 0.00 O +ATOM 48 H TYR A 3 -4.399 4.368 0.410 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.376 2.600 1.088 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.782 4.426 2.403 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.635 3.037 3.021 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.635 5.081 3.217 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.259 1.196 4.191 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.180 4.734 4.872 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.416 0.856 5.843 0.00 0.00 H +ATOM 56 HH TYR A 3 0.286 3.012 7.208 0.00 0.00 H +ATOM 57 N ILE A 4 -5.291 1.031 0.946 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.931 -0.293 0.853 0.00 0.00 C +ATOM 59 C ILE A 4 -5.280 -1.132 -0.262 0.00 0.00 C +ATOM 60 O ILE A 4 -4.975 -2.308 -0.057 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.452 -0.139 0.612 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.150 0.694 1.716 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.133 -1.519 0.519 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.405 1.406 1.195 0.00 0.00 C +ATOM 65 H ILE A 4 -5.843 1.851 0.722 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.780 -0.822 1.794 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.585 0.372 -0.343 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.432 0.039 2.518 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.485 1.468 2.099 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.763 -2.077 -0.343 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.934 -2.097 1.423 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.211 -1.406 0.405 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -9.143 2.050 0.354 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -10.152 0.681 0.875 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.826 2.022 1.989 0.00 0.00 H +ATOM 76 N GLN A 5 -5.043 -0.527 -1.433 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.319 -1.165 -2.532 0.00 0.00 C +ATOM 78 C GLN A 5 -2.856 -1.426 -2.147 0.00 0.00 C +ATOM 79 O GLN A 5 -2.382 -2.537 -2.342 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.432 -0.330 -3.822 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.812 -0.453 -4.498 0.00 0.00 C +ATOM 82 CD GLN A 5 -6.574 0.869 -4.544 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -6.511 1.619 -5.500 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -7.337 1.205 -3.520 0.00 0.00 N +ATOM 85 H GLN A 5 -5.183 0.474 -1.483 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.763 -2.143 -2.723 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.261 0.701 -3.579 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.682 -0.687 -4.528 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.671 -0.801 -5.503 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.424 -1.202 -3.994 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.488 0.604 -2.731 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -7.851 2.055 -3.678 0.00 0.00 H +ATOM 93 N TRP A 6 -2.161 -0.464 -1.529 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.783 -0.667 -1.057 0.00 0.00 C +ATOM 95 C TRP A 6 -0.645 -1.797 -0.021 0.00 0.00 C +ATOM 96 O TRP A 6 0.314 -2.570 -0.062 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.249 0.652 -0.495 0.00 0.00 C +ATOM 98 CG TRP A 6 1.135 0.570 0.072 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.275 0.562 -0.652 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.545 0.458 1.469 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.360 0.439 0.197 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.968 0.390 1.513 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.867 0.423 2.708 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.691 0.320 2.711 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.580 0.342 3.919 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.987 0.304 3.924 0.00 0.00 C +ATOM 107 H TRP A 6 -2.607 0.442 -1.410 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.164 -0.953 -1.911 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.245 1.376 -1.287 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.917 0.998 0.291 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.321 0.634 -1.731 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.338 0.431 -0.094 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.213 0.476 2.719 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.771 0.289 2.684 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.047 0.329 4.859 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.522 0.272 4.860 0.00 0.00 H +ATOM 117 N LEU A 7 -1.613 -1.946 0.894 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.654 -3.093 1.806 0.00 0.00 C +ATOM 119 C LEU A 7 -1.835 -4.426 1.058 0.00 0.00 C +ATOM 120 O LEU A 7 -1.246 -5.420 1.478 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.752 -2.898 2.866 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.416 -1.848 3.943 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.648 -1.629 4.827 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.246 -2.272 4.838 0.00 0.00 C +ATOM 125 H LEU A 7 -2.340 -1.237 0.952 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.691 -3.164 2.309 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.651 -2.591 2.366 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.928 -3.852 3.365 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.156 -0.903 3.474 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.482 -1.286 4.215 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.923 -2.562 5.321 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.435 -0.875 5.585 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.429 -3.262 5.255 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.321 -2.286 4.263 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -1.123 -1.560 5.652 0.00 0.00 H +ATOM 136 N LYS A 8 -2.573 -4.450 -0.065 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.753 -5.637 -0.920 0.00 0.00 C +ATOM 138 C LYS A 8 -1.423 -6.194 -1.444 0.00 0.00 C +ATOM 139 O LYS A 8 -1.285 -7.410 -1.532 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.680 -5.295 -2.099 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.298 -6.504 -2.814 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.536 -7.065 -2.098 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.303 -8.006 -3.036 0.00 0.00 C +ATOM 144 NZ LYS A 8 -7.007 -7.254 -4.106 0.00 0.00 N +ATOM 145 H LYS A 8 -2.995 -3.577 -0.362 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.211 -6.421 -0.316 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.480 -4.685 -1.727 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.094 -4.770 -2.849 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.583 -6.205 -3.804 0.00 0.00 H +ATOM 150 2HG LYS A 8 -3.557 -7.296 -2.934 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.227 -7.608 -1.225 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.190 -6.253 -1.779 0.00 0.00 H +ATOM 153 1HE LYS A 8 -5.610 -8.689 -3.488 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.027 -8.580 -2.453 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -7.790 -6.744 -3.720 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -6.372 -6.589 -4.533 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -7.345 -7.883 -4.822 0.00 0.00 H +ATOM 158 N ASP A 9 -0.447 -5.329 -1.753 0.00 0.00 N +ATOM 159 CA ASP A 9 0.910 -5.749 -2.133 0.00 0.00 C +ATOM 160 C ASP A 9 1.670 -6.459 -0.990 0.00 0.00 C +ATOM 161 O ASP A 9 2.622 -7.186 -1.270 0.00 0.00 O +ATOM 162 CB ASP A 9 1.736 -4.535 -2.594 0.00 0.00 C +ATOM 163 CG ASP A 9 1.220 -3.854 -3.861 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.591 -4.337 -4.953 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.541 -2.814 -3.721 0.00 0.00 O +ATOM 166 H ASP A 9 -0.655 -4.337 -1.719 0.00 0.00 H +ATOM 167 HA ASP A 9 0.844 -6.450 -2.966 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.736 -3.811 -1.802 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.749 -4.874 -2.808 0.00 0.00 H +ATOM 170 N GLY A 10 1.257 -6.258 0.274 0.00 0.00 N +ATOM 171 CA GLY A 10 1.961 -6.712 1.480 0.00 0.00 C +ATOM 172 C GLY A 10 2.411 -5.586 2.425 0.00 0.00 C +ATOM 173 O GLY A 10 3.160 -5.849 3.367 0.00 0.00 O +ATOM 174 H GLY A 10 0.383 -5.760 0.408 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.304 -7.377 2.037 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.850 -7.277 1.196 0.00 0.00 H +ATOM 177 N GLY A 11 2.008 -4.326 2.183 0.00 0.00 N +ATOM 178 CA GLY A 11 2.450 -3.174 2.973 0.00 0.00 C +ATOM 179 C GLY A 11 3.980 -2.984 2.932 0.00 0.00 C +ATOM 180 O GLY A 11 4.559 -3.040 1.839 0.00 0.00 O +ATOM 181 H GLY A 11 1.456 -4.151 1.354 0.00 0.00 H +ATOM 182 1HA GLY A 11 1.984 -2.274 2.571 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.101 -3.314 3.994 0.00 0.00 H +ATOM 184 N PRO A 12 4.665 -2.766 4.078 0.00 0.00 N +ATOM 185 CA PRO A 12 6.116 -2.537 4.125 0.00 0.00 C +ATOM 186 C PRO A 12 6.959 -3.639 3.466 0.00 0.00 C +ATOM 187 O PRO A 12 8.019 -3.357 2.912 0.00 0.00 O +ATOM 188 CB PRO A 12 6.477 -2.417 5.612 0.00 0.00 C +ATOM 189 CG PRO A 12 5.164 -2.042 6.293 0.00 0.00 C +ATOM 190 CD PRO A 12 4.110 -2.726 5.425 0.00 0.00 C +ATOM 191 HA PRO A 12 6.331 -1.590 3.630 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.847 -3.351 5.989 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.243 -1.658 5.777 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.133 -2.413 7.299 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.028 -0.961 6.254 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.922 -3.721 5.781 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.178 -2.162 5.468 0.00 0.00 H +ATOM 198 N SER A 13 6.486 -4.890 3.490 0.00 0.00 N +ATOM 199 CA SER A 13 7.202 -6.073 2.992 0.00 0.00 C +ATOM 200 C SER A 13 7.143 -6.241 1.464 0.00 0.00 C +ATOM 201 O SER A 13 7.476 -7.309 0.957 0.00 0.00 O +ATOM 202 CB SER A 13 6.669 -7.320 3.710 0.00 0.00 C +ATOM 203 OG SER A 13 6.903 -7.208 5.102 0.00 0.00 O +ATOM 204 H SER A 13 5.586 -5.054 3.924 0.00 0.00 H +ATOM 205 HA SER A 13 8.256 -5.969 3.247 0.00 0.00 H +ATOM 206 1HB SER A 13 5.615 -7.410 3.532 0.00 0.00 H +ATOM 207 2HB SER A 13 7.175 -8.210 3.337 0.00 0.00 H +ATOM 208 HG SER A 13 7.852 -7.195 5.257 0.00 0.00 H +ATOM 209 N SER A 14 6.739 -5.198 0.725 0.00 0.00 N +ATOM 210 CA SER A 14 6.405 -5.266 -0.708 0.00 0.00 C +ATOM 211 C SER A 14 7.371 -4.503 -1.623 0.00 0.00 C +ATOM 212 O SER A 14 7.116 -4.406 -2.826 0.00 0.00 O +ATOM 213 CB SER A 14 4.983 -4.759 -0.973 0.00 0.00 C +ATOM 214 OG SER A 14 4.134 -4.862 0.138 0.00 0.00 O +ATOM 215 H SER A 14 6.478 -4.368 1.241 0.00 0.00 H +ATOM 216 HA SER A 14 6.427 -6.311 -1.020 0.00 0.00 H +ATOM 217 1HB SER A 14 5.039 -3.727 -1.263 0.00 0.00 H +ATOM 218 2HB SER A 14 4.571 -5.340 -1.796 0.00 0.00 H +ATOM 219 HG SER A 14 4.313 -4.115 0.764 0.00 0.00 H +ATOM 220 N GLY A 15 8.442 -3.922 -1.059 0.00 0.00 N +ATOM 221 CA GLY A 15 9.474 -3.182 -1.792 0.00 0.00 C +ATOM 222 C GLY A 15 9.029 -1.817 -2.334 0.00 0.00 C +ATOM 223 O GLY A 15 9.636 -1.322 -3.282 0.00 0.00 O +ATOM 224 H GLY A 15 8.567 -4.078 -0.067 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.326 -3.018 -1.132 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.816 -3.786 -2.634 0.00 0.00 H +ATOM 227 N ARG A 16 7.971 -1.217 -1.769 0.00 0.00 N +ATOM 228 CA ARG A 16 7.354 0.032 -2.244 0.00 0.00 C +ATOM 229 C ARG A 16 6.844 0.894 -1.071 0.00 0.00 C +ATOM 230 O ARG A 16 6.204 0.347 -0.168 0.00 0.00 O +ATOM 231 CB ARG A 16 6.234 -0.313 -3.248 0.00 0.00 C +ATOM 232 CG ARG A 16 5.064 -1.085 -2.611 0.00 0.00 C +ATOM 233 CD ARG A 16 4.139 -1.794 -3.605 0.00 0.00 C +ATOM 234 NE ARG A 16 4.801 -2.956 -4.225 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.278 -3.071 -5.455 0.00 0.00 C +ATOM 236 NH1 ARG A 16 5.210 -2.093 -6.329 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.864 -4.186 -5.822 0.00 0.00 N +ATOM 238 H ARG A 16 7.549 -1.675 -0.973 0.00 0.00 H +ATOM 239 HA ARG A 16 8.120 0.589 -2.783 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.854 0.601 -3.662 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.672 -0.909 -4.049 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.474 -1.825 -1.951 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.465 -0.382 -2.044 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.261 -2.128 -3.087 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.785 -1.084 -4.353 0.00 0.00 H +ATOM 246 HE ARG A 16 4.929 -3.770 -3.646 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.742 -1.252 -6.044 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 5.588 -2.189 -7.251 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.998 -4.910 -5.134 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 6.200 -4.304 -6.756 0.00 0.00 H +ATOM 251 N PRO A 17 7.087 2.220 -1.065 0.00 0.00 N +ATOM 252 CA PRO A 17 6.655 3.106 0.019 0.00 0.00 C +ATOM 253 C PRO A 17 5.123 3.267 0.052 0.00 0.00 C +ATOM 254 O PRO A 17 4.470 3.043 -0.971 0.00 0.00 O +ATOM 255 CB PRO A 17 7.355 4.442 -0.256 0.00 0.00 C +ATOM 256 CG PRO A 17 7.509 4.455 -1.776 0.00 0.00 C +ATOM 257 CD PRO A 17 7.758 2.986 -2.109 0.00 0.00 C +ATOM 258 HA PRO A 17 6.997 2.705 0.974 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.753 5.266 0.076 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.342 4.438 0.209 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.616 4.812 -2.251 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.338 5.087 -2.096 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.347 2.746 -3.071 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.828 2.777 -2.079 0.00 0.00 H +ATOM 265 N PRO A 18 4.537 3.673 1.196 0.00 0.00 N +ATOM 266 CA PRO A 18 3.102 3.903 1.304 0.00 0.00 C +ATOM 267 C PRO A 18 2.667 5.149 0.509 0.00 0.00 C +ATOM 268 O PRO A 18 3.454 6.085 0.353 0.00 0.00 O +ATOM 269 CB PRO A 18 2.819 4.069 2.799 0.00 0.00 C +ATOM 270 CG PRO A 18 4.134 4.621 3.345 0.00 0.00 C +ATOM 271 CD PRO A 18 5.189 3.944 2.471 0.00 0.00 C +ATOM 272 HA PRO A 18 2.575 3.028 0.934 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.014 4.759 2.964 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.618 3.095 3.244 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.176 5.688 3.241 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.266 4.380 4.399 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.030 4.595 2.329 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.495 3.002 2.927 0.00 0.00 H +ATOM 279 N PRO A 19 1.416 5.184 0.020 0.00 0.00 N +ATOM 280 CA PRO A 19 0.856 6.338 -0.670 0.00 0.00 C +ATOM 281 C PRO A 19 0.274 7.370 0.308 0.00 0.00 C +ATOM 282 O PRO A 19 -0.285 7.006 1.346 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.241 5.744 -1.552 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.772 4.583 -0.706 0.00 0.00 C +ATOM 285 CD PRO A 19 0.476 4.073 0.003 0.00 0.00 C +ATOM 286 HA PRO A 19 1.613 6.813 -1.296 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.012 6.464 -1.746 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.214 5.358 -2.465 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.504 4.924 0.000 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.221 3.803 -1.320 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.238 3.772 1.005 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.911 3.257 -0.574 0.00 0.00 H +ATOM 293 N SER A 20 0.317 8.642 -0.115 0.00 0.00 N +ATOM 294 CA SER A 20 -0.113 9.835 0.640 0.00 0.00 C +ATOM 295 C SER A 20 0.639 10.031 1.968 0.00 0.00 C +ATOM 296 O SER A 20 0.066 10.720 2.840 0.00 0.00 O +ATOM 297 CB SER A 20 -1.636 9.826 0.849 0.00 0.00 C +ATOM 298 OG SER A 20 -2.305 9.711 -0.395 0.00 0.00 O +ATOM 299 OXT SER A 20 1.796 9.565 2.056 0.00 0.00 O +ATOM 300 H SER A 20 0.838 8.806 -0.960 0.00 0.00 H +ATOM 301 HA SER A 20 0.140 10.716 0.055 0.00 0.00 H +ATOM 302 1HB SER A 20 -1.902 8.994 1.472 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.934 10.755 1.339 0.00 0.00 H +ATOM 304 HG SER A 20 -1.851 10.287 -1.014 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 33 +ATOM 1 N ASN A 1 -9.696 2.810 -1.214 0.00 0.00 N +ATOM 2 CA ASN A 1 -8.702 3.862 -0.904 0.00 0.00 C +ATOM 3 C ASN A 1 -7.320 3.416 -1.392 0.00 0.00 C +ATOM 4 O ASN A 1 -7.058 2.216 -1.401 0.00 0.00 O +ATOM 5 CB ASN A 1 -8.682 4.180 0.603 0.00 0.00 C +ATOM 6 CG ASN A 1 -7.901 5.460 0.875 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -6.683 5.431 0.961 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -8.563 6.601 0.949 0.00 0.00 N +ATOM 9 1H ASN A 1 -9.798 2.712 -2.215 0.00 0.00 H +ATOM 10 2H ASN A 1 -9.371 1.928 -0.840 0.00 0.00 H +ATOM 11 3H ASN A 1 -10.593 3.041 -0.806 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.978 4.770 -1.442 0.00 0.00 H +ATOM 13 1HB ASN A 1 -9.690 4.302 0.950 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.208 3.365 1.150 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -9.568 6.669 0.919 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -7.997 7.418 1.129 0.00 0.00 H +ATOM 17 N LEU A 2 -6.450 4.362 -1.773 0.00 0.00 N +ATOM 18 CA LEU A 2 -5.070 4.110 -2.206 0.00 0.00 C +ATOM 19 C LEU A 2 -4.261 3.274 -1.198 0.00 0.00 C +ATOM 20 O LEU A 2 -3.535 2.363 -1.600 0.00 0.00 O +ATOM 21 CB LEU A 2 -4.351 5.440 -2.547 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.514 6.597 -1.528 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.229 7.411 -1.372 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -5.623 7.572 -1.951 0.00 0.00 C +ATOM 25 H LEU A 2 -6.706 5.331 -1.654 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.109 3.519 -3.122 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.303 5.230 -2.636 0.00 0.00 H +ATOM 28 2HB LEU A 2 -4.699 5.782 -3.523 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.759 6.191 -0.552 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -2.500 6.830 -0.816 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.824 7.681 -2.347 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.422 8.320 -0.800 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -5.295 8.148 -2.819 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -6.539 7.048 -2.209 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -5.828 8.260 -1.132 0.00 0.00 H +ATOM 36 N TYR A 3 -4.415 3.532 0.107 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.672 2.802 1.139 0.00 0.00 C +ATOM 38 C TYR A 3 -4.041 1.307 1.188 0.00 0.00 C +ATOM 39 O TYR A 3 -3.171 0.461 1.386 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.879 3.480 2.497 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.767 3.185 3.485 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.673 4.066 3.584 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.814 2.034 4.294 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.633 3.814 4.497 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.769 1.770 5.202 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.678 2.659 5.305 0.00 0.00 C +ATOM 47 OH TYR A 3 0.328 2.397 6.181 0.00 0.00 O +ATOM 48 H TYR A 3 -5.030 4.292 0.388 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.611 2.866 0.893 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.928 4.541 2.345 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.839 3.176 2.920 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.623 4.947 2.966 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.646 1.348 4.217 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.183 4.517 4.582 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.786 0.898 5.835 0.00 0.00 H +ATOM 56 HH TYR A 3 1.000 3.080 6.149 0.00 0.00 H +ATOM 57 N ILE A 4 -5.317 0.964 0.945 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.797 -0.427 0.890 0.00 0.00 C +ATOM 59 C ILE A 4 -5.106 -1.182 -0.260 0.00 0.00 C +ATOM 60 O ILE A 4 -4.649 -2.312 -0.079 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.343 -0.481 0.776 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.026 0.176 2.003 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.809 -1.944 0.634 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.518 0.486 1.806 0.00 0.00 C +ATOM 65 H ILE A 4 -5.958 1.710 0.720 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.510 -0.925 1.817 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.647 0.059 -0.122 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -7.929 -0.490 2.838 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.538 1.122 2.236 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.478 -2.358 -0.319 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.398 -2.547 1.445 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.894 -2.016 0.659 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -9.642 1.219 1.013 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -10.080 -0.412 1.556 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.924 0.899 2.728 0.00 0.00 H +ATOM 76 N GLN A 5 -4.987 -0.542 -1.429 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.265 -1.071 -2.589 0.00 0.00 C +ATOM 78 C GLN A 5 -2.780 -1.329 -2.278 0.00 0.00 C +ATOM 79 O GLN A 5 -2.258 -2.372 -2.663 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.444 -0.110 -3.783 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.274 -0.705 -4.937 0.00 0.00 C +ATOM 82 CD GLN A 5 -4.406 -1.168 -6.106 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -3.743 -0.382 -6.761 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -4.396 -2.444 -6.437 0.00 0.00 N +ATOM 85 H GLN A 5 -5.362 0.397 -1.487 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.696 -2.043 -2.836 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.937 0.777 -3.433 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.468 0.199 -4.159 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.827 -1.546 -4.565 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.939 0.070 -5.317 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.933 -3.137 -5.951 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -3.802 -2.637 -7.226 0.00 0.00 H +ATOM 93 N TRP A 6 -2.110 -0.425 -1.550 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.735 -0.642 -1.083 0.00 0.00 C +ATOM 95 C TRP A 6 -0.618 -1.798 -0.074 0.00 0.00 C +ATOM 96 O TRP A 6 0.284 -2.632 -0.196 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.178 0.660 -0.502 0.00 0.00 C +ATOM 98 CG TRP A 6 1.220 0.560 0.030 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.344 0.499 -0.720 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.660 0.470 1.420 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.446 0.394 0.108 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.084 0.389 1.433 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.008 0.446 2.674 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.829 0.330 2.618 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.746 0.354 3.871 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.152 0.312 3.847 0.00 0.00 C +ATOM 107 H TRP A 6 -2.590 0.437 -1.304 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.120 -0.916 -1.942 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.189 1.403 -1.276 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.826 1.000 0.307 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.370 0.522 -1.801 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.422 0.342 -0.195 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.071 0.498 2.709 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.908 0.276 2.569 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.228 0.327 4.819 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.709 0.259 4.771 0.00 0.00 H +ATOM 117 N LEU A 7 -1.541 -1.889 0.896 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.582 -3.011 1.838 0.00 0.00 C +ATOM 119 C LEU A 7 -1.783 -4.360 1.136 0.00 0.00 C +ATOM 120 O LEU A 7 -1.117 -5.321 1.517 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.666 -2.803 2.908 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.354 -1.713 3.950 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.542 -1.608 4.912 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.090 -2.018 4.764 0.00 0.00 C +ATOM 125 H LEU A 7 -2.233 -1.146 0.975 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.612 -3.079 2.329 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.578 -2.536 2.410 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.803 -3.746 3.442 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.222 -0.755 3.451 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.453 -1.399 4.353 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.663 -2.544 5.458 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.376 -0.804 5.626 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.148 -3.021 5.187 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.210 -1.944 4.128 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.982 -1.297 5.571 0.00 0.00 H +ATOM 136 N LYS A 8 -2.633 -4.432 0.094 0.00 0.00 N +ATOM 137 CA LYS A 8 -2.884 -5.655 -0.692 0.00 0.00 C +ATOM 138 C LYS A 8 -1.596 -6.330 -1.179 0.00 0.00 C +ATOM 139 O LYS A 8 -1.525 -7.556 -1.201 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.808 -5.329 -1.882 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.241 -6.587 -2.655 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.060 -6.237 -3.903 0.00 0.00 C +ATOM 143 CE LYS A 8 -5.306 -7.504 -4.738 0.00 0.00 C +ATOM 144 NZ LYS A 8 -4.559 -7.485 -6.019 0.00 0.00 N +ATOM 145 H LYS A 8 -3.173 -3.595 -0.117 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.386 -6.377 -0.047 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.685 -4.834 -1.511 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.277 -4.670 -2.567 0.00 0.00 H +ATOM 149 1HG LYS A 8 -3.365 -7.128 -2.956 0.00 0.00 H +ATOM 150 2HG LYS A 8 -4.835 -7.226 -2.000 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.002 -5.819 -3.605 0.00 0.00 H +ATOM 152 2HD LYS A 8 -4.524 -5.490 -4.491 0.00 0.00 H +ATOM 153 1HE LYS A 8 -4.994 -8.359 -4.169 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.379 -7.594 -4.932 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -4.868 -6.712 -6.594 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -3.566 -7.387 -5.848 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -4.715 -8.344 -6.529 0.00 0.00 H +ATOM 158 N ASP A 9 -0.590 -5.540 -1.563 0.00 0.00 N +ATOM 159 CA ASP A 9 0.696 -6.034 -2.059 0.00 0.00 C +ATOM 160 C ASP A 9 1.604 -6.602 -0.943 0.00 0.00 C +ATOM 161 O ASP A 9 2.534 -7.350 -1.236 0.00 0.00 O +ATOM 162 CB ASP A 9 1.377 -4.885 -2.828 0.00 0.00 C +ATOM 163 CG ASP A 9 2.180 -5.390 -4.029 0.00 0.00 C +ATOM 164 OD1 ASP A 9 3.423 -5.398 -3.944 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.517 -5.724 -5.041 0.00 0.00 O +ATOM 166 H ASP A 9 -0.734 -4.540 -1.523 0.00 0.00 H +ATOM 167 HA ASP A 9 0.502 -6.844 -2.765 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.622 -4.207 -3.177 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.011 -4.308 -2.158 0.00 0.00 H +ATOM 170 N GLY A 10 1.315 -6.291 0.335 0.00 0.00 N +ATOM 171 CA GLY A 10 2.125 -6.667 1.501 0.00 0.00 C +ATOM 172 C GLY A 10 2.634 -5.488 2.350 0.00 0.00 C +ATOM 173 O GLY A 10 3.490 -5.686 3.216 0.00 0.00 O +ATOM 174 H GLY A 10 0.438 -5.808 0.503 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.519 -7.303 2.147 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.993 -7.245 1.182 0.00 0.00 H +ATOM 177 N GLY A 11 2.132 -4.266 2.113 0.00 0.00 N +ATOM 178 CA GLY A 11 2.535 -3.041 2.809 0.00 0.00 C +ATOM 179 C GLY A 11 4.061 -2.833 2.842 0.00 0.00 C +ATOM 180 O GLY A 11 4.676 -2.729 1.777 0.00 0.00 O +ATOM 181 H GLY A 11 1.459 -4.179 1.364 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.091 -2.192 2.292 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.124 -3.070 3.815 0.00 0.00 H +ATOM 184 N PRO A 12 4.716 -2.764 4.022 0.00 0.00 N +ATOM 185 CA PRO A 12 6.173 -2.628 4.110 0.00 0.00 C +ATOM 186 C PRO A 12 6.953 -3.752 3.413 0.00 0.00 C +ATOM 187 O PRO A 12 8.085 -3.532 2.985 0.00 0.00 O +ATOM 188 CB PRO A 12 6.510 -2.614 5.607 0.00 0.00 C +ATOM 189 CG PRO A 12 5.200 -2.211 6.279 0.00 0.00 C +ATOM 190 CD PRO A 12 4.136 -2.801 5.356 0.00 0.00 C +ATOM 191 HA PRO A 12 6.463 -1.674 3.669 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.824 -3.586 5.936 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.309 -1.906 5.829 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.129 -2.629 7.265 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.116 -1.124 6.289 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.912 -3.811 5.640 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.224 -2.208 5.422 0.00 0.00 H +ATOM 198 N SER A 13 6.364 -4.949 3.290 0.00 0.00 N +ATOM 199 CA SER A 13 7.032 -6.120 2.719 0.00 0.00 C +ATOM 200 C SER A 13 7.005 -6.154 1.183 0.00 0.00 C +ATOM 201 O SER A 13 7.560 -7.084 0.599 0.00 0.00 O +ATOM 202 CB SER A 13 6.426 -7.399 3.310 0.00 0.00 C +ATOM 203 OG SER A 13 7.402 -8.420 3.301 0.00 0.00 O +ATOM 204 H SER A 13 5.392 -5.053 3.575 0.00 0.00 H +ATOM 205 HA SER A 13 8.080 -6.085 3.021 0.00 0.00 H +ATOM 206 1HB SER A 13 6.109 -7.214 4.318 0.00 0.00 H +ATOM 207 2HB SER A 13 5.557 -7.710 2.730 0.00 0.00 H +ATOM 208 HG SER A 13 7.730 -8.506 2.397 0.00 0.00 H +ATOM 209 N SER A 14 6.381 -5.157 0.538 0.00 0.00 N +ATOM 210 CA SER A 14 6.165 -5.055 -0.915 0.00 0.00 C +ATOM 211 C SER A 14 7.342 -4.457 -1.697 0.00 0.00 C +ATOM 212 O SER A 14 7.309 -4.428 -2.924 0.00 0.00 O +ATOM 213 CB SER A 14 4.964 -4.138 -1.174 0.00 0.00 C +ATOM 214 OG SER A 14 3.864 -4.511 -0.377 0.00 0.00 O +ATOM 215 H SER A 14 5.881 -4.475 1.098 0.00 0.00 H +ATOM 216 HA SER A 14 5.937 -6.042 -1.321 0.00 0.00 H +ATOM 217 1HB SER A 14 5.238 -3.127 -0.943 0.00 0.00 H +ATOM 218 2HB SER A 14 4.688 -4.185 -2.225 0.00 0.00 H +ATOM 219 HG SER A 14 3.188 -3.835 -0.468 0.00 0.00 H +ATOM 220 N GLY A 15 8.357 -3.909 -1.017 0.00 0.00 N +ATOM 221 CA GLY A 15 9.474 -3.213 -1.669 0.00 0.00 C +ATOM 222 C GLY A 15 9.156 -1.791 -2.160 0.00 0.00 C +ATOM 223 O GLY A 15 9.942 -1.231 -2.920 0.00 0.00 O +ATOM 224 H GLY A 15 8.341 -3.994 -0.010 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.311 -3.152 -0.976 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.800 -3.797 -2.532 0.00 0.00 H +ATOM 227 N ARG A 16 8.024 -1.197 -1.741 0.00 0.00 N +ATOM 228 CA ARG A 16 7.568 0.140 -2.156 0.00 0.00 C +ATOM 229 C ARG A 16 7.012 0.930 -0.956 0.00 0.00 C +ATOM 230 O ARG A 16 6.231 0.354 -0.196 0.00 0.00 O +ATOM 231 CB ARG A 16 6.504 -0.029 -3.256 0.00 0.00 C +ATOM 232 CG ARG A 16 6.136 1.305 -3.920 0.00 0.00 C +ATOM 233 CD ARG A 16 5.111 1.119 -5.043 0.00 0.00 C +ATOM 234 NE ARG A 16 4.902 2.373 -5.790 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.118 3.394 -5.467 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.401 3.409 -4.368 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.046 4.440 -6.259 0.00 0.00 N +ATOM 238 H ARG A 16 7.441 -1.716 -1.100 0.00 0.00 H +ATOM 239 HA ARG A 16 8.423 0.671 -2.576 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.886 -0.694 -4.006 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.608 -0.485 -2.831 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.722 1.960 -3.177 0.00 0.00 H +ATOM 243 2HG ARG A 16 7.039 1.747 -4.344 0.00 0.00 H +ATOM 244 1HD ARG A 16 5.466 0.364 -5.719 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.167 0.759 -4.628 0.00 0.00 H +ATOM 246 HE ARG A 16 5.422 2.462 -6.647 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 3.504 2.647 -3.718 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 2.814 4.189 -4.136 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.589 4.478 -7.103 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 3.453 5.213 -6.014 0.00 0.00 H +ATOM 251 N PRO A 17 7.341 2.229 -0.790 0.00 0.00 N +ATOM 252 CA PRO A 17 6.828 3.050 0.313 0.00 0.00 C +ATOM 253 C PRO A 17 5.302 3.268 0.240 0.00 0.00 C +ATOM 254 O PRO A 17 4.711 3.118 -0.837 0.00 0.00 O +ATOM 255 CB PRO A 17 7.588 4.382 0.217 0.00 0.00 C +ATOM 256 CG PRO A 17 7.955 4.479 -1.259 0.00 0.00 C +ATOM 257 CD PRO A 17 8.236 3.024 -1.624 0.00 0.00 C +ATOM 258 HA PRO A 17 7.073 2.564 1.257 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.962 5.202 0.511 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.498 4.326 0.815 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.141 4.874 -1.836 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.825 5.116 -1.425 0.00 0.00 H +ATOM 263 1HD PRO A 17 8.031 2.852 -2.663 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.270 2.778 -1.381 0.00 0.00 H +ATOM 265 N PRO A 18 4.658 3.643 1.366 0.00 0.00 N +ATOM 266 CA PRO A 18 3.221 3.898 1.414 0.00 0.00 C +ATOM 267 C PRO A 18 2.834 5.170 0.637 0.00 0.00 C +ATOM 268 O PRO A 18 3.623 6.115 0.574 0.00 0.00 O +ATOM 269 CB PRO A 18 2.872 4.023 2.901 0.00 0.00 C +ATOM 270 CG PRO A 18 4.173 4.506 3.536 0.00 0.00 C +ATOM 271 CD PRO A 18 5.248 3.833 2.686 0.00 0.00 C +ATOM 272 HA PRO A 18 2.702 3.039 0.999 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.085 4.736 3.051 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.619 3.041 3.300 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.254 5.575 3.483 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.246 4.214 4.585 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.117 4.459 2.619 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.501 2.862 3.113 0.00 0.00 H +ATOM 279 N PRO A 19 1.620 5.223 0.057 0.00 0.00 N +ATOM 280 CA PRO A 19 1.139 6.367 -0.722 0.00 0.00 C +ATOM 281 C PRO A 19 0.477 7.473 0.123 0.00 0.00 C +ATOM 282 O PRO A 19 0.201 8.545 -0.412 0.00 0.00 O +ATOM 283 CB PRO A 19 0.125 5.747 -1.684 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.519 4.650 -0.831 0.00 0.00 C +ATOM 285 CD PRO A 19 0.673 4.117 -0.040 0.00 0.00 C +ATOM 286 HA PRO A 19 1.956 6.812 -1.290 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.603 6.470 -1.999 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.651 5.295 -2.525 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.270 5.054 -0.179 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.979 3.875 -1.444 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.362 3.806 0.939 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.138 3.304 -0.597 0.00 0.00 H +ATOM 293 N SER A 20 0.213 7.210 1.410 0.00 0.00 N +ATOM 294 CA SER A 20 -0.379 8.118 2.401 0.00 0.00 C +ATOM 295 C SER A 20 0.477 8.085 3.667 0.00 0.00 C +ATOM 296 O SER A 20 0.871 9.175 4.129 0.00 0.00 O +ATOM 297 CB SER A 20 -1.821 7.700 2.717 0.00 0.00 C +ATOM 298 OG SER A 20 -2.657 8.835 2.780 0.00 0.00 O +ATOM 299 OXT SER A 20 0.731 6.946 4.124 0.00 0.00 O +ATOM 300 H SER A 20 0.539 6.334 1.792 0.00 0.00 H +ATOM 301 HA SER A 20 -0.376 9.140 2.021 0.00 0.00 H +ATOM 302 1HB SER A 20 -2.175 7.041 1.948 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.844 7.173 3.675 0.00 0.00 H +ATOM 304 HG SER A 20 -3.473 8.604 3.228 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 34 +ATOM 1 N ASN A 1 -5.799 7.830 -0.622 0.00 0.00 N +ATOM 2 CA ASN A 1 -6.880 6.904 -1.045 0.00 0.00 C +ATOM 3 C ASN A 1 -6.385 5.527 -1.533 0.00 0.00 C +ATOM 4 O ASN A 1 -7.195 4.623 -1.680 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.825 7.579 -2.066 0.00 0.00 C +ATOM 6 CG ASN A 1 -9.296 7.287 -1.763 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -9.622 6.455 -0.932 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -10.226 7.998 -2.373 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.221 7.401 0.088 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.228 8.093 -1.416 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.207 8.670 -0.235 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.484 6.690 -0.160 0.00 0.00 H +ATOM 13 1HB ASN A 1 -7.668 8.640 -2.035 0.00 0.00 H +ATOM 14 2HB ASN A 1 -7.593 7.245 -3.078 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -10.030 8.724 -3.044 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -11.167 7.758 -2.108 0.00 0.00 H +ATOM 17 N LEU A 2 -5.074 5.320 -1.762 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.517 4.062 -2.295 0.00 0.00 C +ATOM 19 C LEU A 2 -3.967 3.102 -1.219 0.00 0.00 C +ATOM 20 O LEU A 2 -3.428 2.045 -1.548 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.448 4.425 -3.346 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.051 4.779 -4.719 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.023 5.544 -5.556 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -4.473 3.517 -5.479 0.00 0.00 C +ATOM 25 H LEU A 2 -4.397 6.057 -1.657 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.309 3.505 -2.795 0.00 0.00 H +ATOM 27 1HB LEU A 2 -2.890 5.269 -2.989 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.757 3.592 -3.484 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.923 5.421 -4.583 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -2.817 6.509 -5.095 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.096 4.973 -5.628 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.417 5.717 -6.558 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -3.615 2.859 -5.616 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.251 2.986 -4.932 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -4.869 3.792 -6.456 0.00 0.00 H +ATOM 36 N TYR A 3 -4.114 3.440 0.068 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.557 2.674 1.187 0.00 0.00 C +ATOM 38 C TYR A 3 -4.050 1.217 1.220 0.00 0.00 C +ATOM 39 O TYR A 3 -3.279 0.313 1.534 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.871 3.401 2.505 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.796 3.226 3.558 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.836 4.240 3.749 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.742 2.051 4.335 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.837 4.088 4.726 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.743 1.897 5.317 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.793 2.923 5.516 0.00 0.00 C +ATOM 47 OH TYR A 3 0.148 2.813 6.496 0.00 0.00 O +ATOM 48 H TYR A 3 -4.583 4.306 0.272 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.473 2.651 1.067 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.978 4.449 2.299 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.828 3.055 2.899 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.865 5.144 3.155 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.469 1.267 4.176 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.106 4.866 4.894 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.699 0.996 5.909 0.00 0.00 H +ATOM 56 HH TYR A 3 -0.189 2.359 7.268 0.00 0.00 H +ATOM 57 N ILE A 4 -5.316 0.983 0.838 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.917 -0.354 0.736 0.00 0.00 C +ATOM 59 C ILE A 4 -5.164 -1.204 -0.302 0.00 0.00 C +ATOM 60 O ILE A 4 -4.740 -2.313 0.009 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.431 -0.260 0.419 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.188 0.682 1.392 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.073 -1.658 0.464 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.662 1.967 0.703 0.00 0.00 C +ATOM 65 H ILE A 4 -5.883 1.784 0.606 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.806 -0.849 1.701 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.550 0.118 -0.599 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.043 0.163 1.781 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.554 0.946 2.240 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.627 -2.311 -0.285 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.939 -2.102 1.451 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.141 -1.582 0.251 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.826 2.470 0.218 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.419 1.723 -0.045 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.102 2.636 1.442 0.00 0.00 H +ATOM 76 N GLN A 5 -4.951 -0.669 -1.512 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.159 -1.301 -2.575 0.00 0.00 C +ATOM 78 C GLN A 5 -2.710 -1.563 -2.137 0.00 0.00 C +ATOM 79 O GLN A 5 -2.195 -2.659 -2.357 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.205 -0.425 -3.844 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.431 -0.707 -4.723 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.229 -1.914 -5.660 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.748 -2.967 -5.270 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -5.591 -1.783 -6.912 0.00 0.00 N +ATOM 85 H GLN A 5 -5.269 0.277 -1.662 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.597 -2.273 -2.805 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.227 0.606 -3.547 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.305 -0.586 -4.439 0.00 0.00 H +ATOM 89 1HG GLN A 5 -6.272 -0.904 -4.086 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.620 0.176 -5.336 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -6.009 -0.948 -7.281 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -5.424 -2.601 -7.488 0.00 0.00 H +ATOM 93 N TRP A 6 -2.061 -0.590 -1.483 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.707 -0.761 -0.942 0.00 0.00 C +ATOM 95 C TRP A 6 -0.625 -1.886 0.103 0.00 0.00 C +ATOM 96 O TRP A 6 0.254 -2.748 0.014 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.203 0.570 -0.378 0.00 0.00 C +ATOM 98 CG TRP A 6 1.188 0.516 0.176 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.328 0.543 -0.554 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.611 0.411 1.571 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.420 0.431 0.286 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.036 0.358 1.604 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.941 0.370 2.813 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.764 0.276 2.797 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.660 0.285 4.021 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.067 0.241 4.016 0.00 0.00 C +ATOM 107 H TRP A 6 -2.536 0.304 -1.365 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.047 -1.048 -1.761 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.223 1.298 -1.166 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.876 0.904 0.412 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.371 0.637 -1.631 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.399 0.438 -0.005 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.139 0.419 2.832 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.843 0.240 2.765 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.130 0.269 4.964 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.612 0.191 4.946 0.00 0.00 H +ATOM 117 N LEU A 7 -1.566 -1.931 1.058 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.690 -3.054 1.991 0.00 0.00 C +ATOM 119 C LEU A 7 -1.955 -4.378 1.260 0.00 0.00 C +ATOM 120 O LEU A 7 -1.318 -5.376 1.595 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.786 -2.777 3.037 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.391 -1.764 4.129 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.612 -1.492 5.013 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.258 -2.274 5.027 0.00 0.00 C +ATOM 125 H LEU A 7 -2.249 -1.176 1.107 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.737 -3.180 2.499 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.649 -2.397 2.525 0.00 0.00 H +ATOM 128 2HB LEU A 7 -3.042 -3.717 3.527 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.078 -0.829 3.669 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.419 -1.078 4.410 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.953 -2.420 5.476 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.357 -0.782 5.798 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.530 -3.234 5.465 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.339 -2.386 4.455 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -1.069 -1.559 5.827 0.00 0.00 H +ATOM 136 N LYS A 8 -2.824 -4.393 0.234 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.130 -5.587 -0.573 0.00 0.00 C +ATOM 138 C LYS A 8 -1.901 -6.192 -1.263 0.00 0.00 C +ATOM 139 O LYS A 8 -1.908 -7.378 -1.579 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.203 -5.259 -1.628 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.048 -6.490 -2.013 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.129 -6.766 -3.523 0.00 0.00 C +ATOM 143 CE LYS A 8 -3.903 -7.532 -4.050 0.00 0.00 C +ATOM 144 NZ LYS A 8 -2.952 -6.665 -4.790 0.00 0.00 N +ATOM 145 H LYS A 8 -3.348 -3.538 0.053 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.517 -6.346 0.108 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.855 -4.504 -1.233 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.725 -4.833 -2.511 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.619 -7.352 -1.538 0.00 0.00 H +ATOM 150 2HG LYS A 8 -6.060 -6.319 -1.647 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.009 -7.348 -3.720 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.287 -5.837 -4.075 0.00 0.00 H +ATOM 153 1HE LYS A 8 -3.389 -7.970 -3.216 0.00 0.00 H +ATOM 154 2HE LYS A 8 -4.260 -8.327 -4.710 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -3.417 -6.219 -5.569 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -2.573 -5.948 -4.185 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -2.177 -7.215 -5.141 0.00 0.00 H +ATOM 158 N ASP A 9 -0.868 -5.389 -1.528 0.00 0.00 N +ATOM 159 CA ASP A 9 0.415 -5.850 -2.062 0.00 0.00 C +ATOM 160 C ASP A 9 1.361 -6.433 -0.997 0.00 0.00 C +ATOM 161 O ASP A 9 2.393 -7.000 -1.356 0.00 0.00 O +ATOM 162 CB ASP A 9 1.128 -4.679 -2.755 0.00 0.00 C +ATOM 163 CG ASP A 9 1.821 -5.147 -4.033 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.092 -5.500 -4.985 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.071 -5.076 -4.089 0.00 0.00 O +ATOM 166 H ASP A 9 -0.983 -4.400 -1.335 0.00 0.00 H +ATOM 167 HA ASP A 9 0.222 -6.632 -2.802 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.407 -3.924 -3.002 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.858 -4.239 -2.072 0.00 0.00 H +ATOM 170 N GLY A 10 1.065 -6.245 0.295 0.00 0.00 N +ATOM 171 CA GLY A 10 1.887 -6.698 1.422 0.00 0.00 C +ATOM 172 C GLY A 10 2.425 -5.583 2.330 0.00 0.00 C +ATOM 173 O GLY A 10 3.181 -5.881 3.256 0.00 0.00 O +ATOM 174 H GLY A 10 0.187 -5.780 0.519 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.284 -7.365 2.037 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.742 -7.268 1.059 0.00 0.00 H +ATOM 177 N GLY A 11 2.061 -4.312 2.104 0.00 0.00 N +ATOM 178 CA GLY A 11 2.490 -3.202 2.957 0.00 0.00 C +ATOM 179 C GLY A 11 4.026 -3.036 2.995 0.00 0.00 C +ATOM 180 O GLY A 11 4.652 -3.007 1.932 0.00 0.00 O +ATOM 181 H GLY A 11 1.472 -4.098 1.305 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.054 -2.278 2.582 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.093 -3.382 3.955 0.00 0.00 H +ATOM 184 N PRO A 12 4.674 -2.922 4.179 0.00 0.00 N +ATOM 185 CA PRO A 12 6.124 -2.708 4.301 0.00 0.00 C +ATOM 186 C PRO A 12 7.022 -3.877 3.833 0.00 0.00 C +ATOM 187 O PRO A 12 8.218 -3.871 4.113 0.00 0.00 O +ATOM 188 CB PRO A 12 6.391 -2.376 5.780 0.00 0.00 C +ATOM 189 CG PRO A 12 5.023 -2.264 6.447 0.00 0.00 C +ATOM 190 CD PRO A 12 4.073 -2.998 5.504 0.00 0.00 C +ATOM 191 HA PRO A 12 6.387 -1.837 3.703 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.965 -3.158 6.239 0.00 0.00 H +ATOM 193 2HB PRO A 12 6.935 -1.434 5.867 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.033 -2.731 7.413 0.00 0.00 H +ATOM 195 2HG PRO A 12 4.734 -1.214 6.511 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.967 -4.022 5.806 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.094 -2.523 5.547 0.00 0.00 H +ATOM 198 N SER A 13 6.477 -4.893 3.152 0.00 0.00 N +ATOM 199 CA SER A 13 7.175 -6.119 2.726 0.00 0.00 C +ATOM 200 C SER A 13 7.263 -6.275 1.201 0.00 0.00 C +ATOM 201 O SER A 13 7.639 -7.338 0.711 0.00 0.00 O +ATOM 202 CB SER A 13 6.505 -7.331 3.383 0.00 0.00 C +ATOM 203 OG SER A 13 6.754 -7.284 4.773 0.00 0.00 O +ATOM 204 H SER A 13 5.498 -4.804 2.901 0.00 0.00 H +ATOM 205 HA SER A 13 8.208 -6.093 3.078 0.00 0.00 H +ATOM 206 1HB SER A 13 5.448 -7.301 3.204 0.00 0.00 H +ATOM 207 2HB SER A 13 6.916 -8.258 2.983 0.00 0.00 H +ATOM 208 HG SER A 13 6.699 -6.365 5.049 0.00 0.00 H +ATOM 209 N SER A 14 6.946 -5.213 0.448 0.00 0.00 N +ATOM 210 CA SER A 14 6.719 -5.256 -1.005 0.00 0.00 C +ATOM 211 C SER A 14 7.679 -4.357 -1.805 0.00 0.00 C +ATOM 212 O SER A 14 7.475 -4.156 -3.000 0.00 0.00 O +ATOM 213 CB SER A 14 5.251 -4.902 -1.299 0.00 0.00 C +ATOM 214 OG SER A 14 4.376 -5.610 -0.441 0.00 0.00 O +ATOM 215 H SER A 14 6.585 -4.411 0.948 0.00 0.00 H +ATOM 216 HA SER A 14 6.876 -6.275 -1.359 0.00 0.00 H +ATOM 217 1HB SER A 14 5.108 -3.848 -1.154 0.00 0.00 H +ATOM 218 2HB SER A 14 5.023 -5.134 -2.341 0.00 0.00 H +ATOM 219 HG SER A 14 3.677 -6.081 -0.956 0.00 0.00 H +ATOM 220 N GLY A 15 8.709 -3.785 -1.159 0.00 0.00 N +ATOM 221 CA GLY A 15 9.714 -2.925 -1.800 0.00 0.00 C +ATOM 222 C GLY A 15 9.190 -1.564 -2.282 0.00 0.00 C +ATOM 223 O GLY A 15 9.812 -0.954 -3.149 0.00 0.00 O +ATOM 224 H GLY A 15 8.834 -4.046 -0.191 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.523 -2.738 -1.093 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.138 -3.448 -2.658 0.00 0.00 H +ATOM 227 N ARG A 16 8.055 -1.092 -1.742 0.00 0.00 N +ATOM 228 CA ARG A 16 7.352 0.126 -2.173 0.00 0.00 C +ATOM 229 C ARG A 16 6.879 0.975 -0.975 0.00 0.00 C +ATOM 230 O ARG A 16 6.283 0.422 -0.047 0.00 0.00 O +ATOM 231 CB ARG A 16 6.179 -0.250 -3.105 0.00 0.00 C +ATOM 232 CG ARG A 16 5.216 -1.290 -2.506 0.00 0.00 C +ATOM 233 CD ARG A 16 3.913 -1.453 -3.294 0.00 0.00 C +ATOM 234 NE ARG A 16 3.979 -2.564 -4.251 0.00 0.00 N +ATOM 235 CZ ARG A 16 4.099 -2.562 -5.568 0.00 0.00 C +ATOM 236 NH1 ARG A 16 4.326 -1.471 -6.261 0.00 0.00 N +ATOM 237 NH2 ARG A 16 3.956 -3.703 -6.191 0.00 0.00 N +ATOM 238 H ARG A 16 7.635 -1.646 -1.010 0.00 0.00 H +ATOM 239 HA ARG A 16 8.053 0.718 -2.760 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.622 0.641 -3.323 0.00 0.00 H +ATOM 241 2HB ARG A 16 6.585 -0.650 -4.035 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.716 -2.239 -2.480 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.938 -1.000 -1.497 0.00 0.00 H +ATOM 244 1HD ARG A 16 3.113 -1.638 -2.604 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.642 -0.518 -3.782 0.00 0.00 H +ATOM 246 HE ARG A 16 3.778 -3.506 -3.901 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.431 -0.607 -5.761 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 4.393 -1.513 -7.260 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 3.656 -4.483 -5.580 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 3.997 -3.809 -7.186 0.00 0.00 H +ATOM 251 N PRO A 17 7.088 2.308 -0.976 0.00 0.00 N +ATOM 252 CA PRO A 17 6.623 3.182 0.103 0.00 0.00 C +ATOM 253 C PRO A 17 5.085 3.329 0.103 0.00 0.00 C +ATOM 254 O PRO A 17 4.453 3.095 -0.930 0.00 0.00 O +ATOM 255 CB PRO A 17 7.322 4.523 -0.149 0.00 0.00 C +ATOM 256 CG PRO A 17 7.496 4.553 -1.666 0.00 0.00 C +ATOM 257 CD PRO A 17 7.747 3.086 -2.015 0.00 0.00 C +ATOM 258 HA PRO A 17 6.949 2.777 1.062 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.713 5.342 0.184 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.304 4.513 0.328 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.610 4.918 -2.148 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.331 5.187 -1.966 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.329 2.855 -2.976 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.819 2.881 -1.995 0.00 0.00 H +ATOM 265 N PRO A 18 4.472 3.730 1.236 0.00 0.00 N +ATOM 266 CA PRO A 18 3.027 3.921 1.331 0.00 0.00 C +ATOM 267 C PRO A 18 2.560 5.180 0.573 0.00 0.00 C +ATOM 268 O PRO A 18 3.278 6.182 0.545 0.00 0.00 O +ATOM 269 CB PRO A 18 2.729 4.033 2.829 0.00 0.00 C +ATOM 270 CG PRO A 18 4.024 4.603 3.406 0.00 0.00 C +ATOM 271 CD PRO A 18 5.103 3.976 2.524 0.00 0.00 C +ATOM 272 HA PRO A 18 2.530 3.041 0.935 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.904 4.696 3.008 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.555 3.040 3.241 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.040 5.673 3.332 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.152 4.336 4.455 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.931 4.649 2.412 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.423 3.028 2.956 0.00 0.00 H +ATOM 279 N PRO A 19 1.350 5.165 -0.019 0.00 0.00 N +ATOM 280 CA PRO A 19 0.784 6.306 -0.729 0.00 0.00 C +ATOM 281 C PRO A 19 0.140 7.315 0.240 0.00 0.00 C +ATOM 282 O PRO A 19 -0.739 6.964 1.032 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.244 5.698 -1.684 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.754 4.477 -0.918 0.00 0.00 C +ATOM 285 CD PRO A 19 0.472 4.010 -0.137 0.00 0.00 C +ATOM 286 HA PRO A 19 1.559 6.806 -1.311 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.041 6.389 -1.882 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.259 5.368 -2.595 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.552 4.747 -0.254 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.111 3.700 -1.593 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.182 3.664 0.836 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.986 3.234 -0.702 0.00 0.00 H +ATOM 293 N SER A 20 0.543 8.582 0.113 0.00 0.00 N +ATOM 294 CA SER A 20 0.016 9.748 0.833 0.00 0.00 C +ATOM 295 C SER A 20 -0.159 10.912 -0.134 0.00 0.00 C +ATOM 296 O SER A 20 -1.277 11.467 -0.133 0.00 0.00 O +ATOM 297 CB SER A 20 0.963 10.142 1.970 0.00 0.00 C +ATOM 298 OG SER A 20 0.800 9.241 3.044 0.00 0.00 O +ATOM 299 OXT SER A 20 0.816 11.191 -0.866 0.00 0.00 O +ATOM 300 H SER A 20 1.245 8.811 -0.579 0.00 0.00 H +ATOM 301 HA SER A 20 -0.972 9.534 1.233 0.00 0.00 H +ATOM 302 1HB SER A 20 1.977 10.105 1.621 0.00 0.00 H +ATOM 303 2HB SER A 20 0.729 11.154 2.307 0.00 0.00 H +ATOM 304 HG SER A 20 -0.132 9.020 3.102 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 35 +ATOM 1 N ASN A 1 -5.868 7.107 0.465 0.00 0.00 N +ATOM 2 CA ASN A 1 -6.755 6.451 -0.528 0.00 0.00 C +ATOM 3 C ASN A 1 -6.147 5.130 -1.011 0.00 0.00 C +ATOM 4 O ASN A 1 -6.599 4.083 -0.564 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.175 7.413 -1.661 0.00 0.00 C +ATOM 6 CG ASN A 1 -8.572 7.064 -2.164 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -8.793 5.981 -2.676 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -9.552 7.938 -2.002 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.629 6.454 1.200 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.021 7.437 0.025 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.346 7.894 0.882 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.671 6.165 -0.007 0.00 0.00 H +ATOM 13 1HB ASN A 1 -7.174 8.419 -1.289 0.00 0.00 H +ATOM 14 2HB ASN A 1 -6.479 7.362 -2.498 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -9.433 8.852 -1.600 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -10.445 7.627 -2.351 0.00 0.00 H +ATOM 17 N LEU A 2 -5.067 5.159 -1.809 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.393 3.972 -2.370 0.00 0.00 C +ATOM 19 C LEU A 2 -3.815 2.986 -1.322 0.00 0.00 C +ATOM 20 O LEU A 2 -3.405 1.881 -1.670 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.318 4.475 -3.359 0.00 0.00 C +ATOM 22 CG LEU A 2 -2.775 3.391 -4.321 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -2.886 3.852 -5.776 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -1.305 3.059 -4.036 0.00 0.00 C +ATOM 25 H LEU A 2 -4.731 6.044 -2.158 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.136 3.416 -2.944 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.747 5.262 -3.949 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.496 4.924 -2.803 0.00 0.00 H +ATOM 29 HG LEU A 2 -3.366 2.482 -4.221 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -3.924 4.091 -6.007 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.264 4.732 -5.945 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -2.567 3.048 -6.440 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -0.682 3.941 -4.189 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -1.195 2.711 -3.010 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -0.974 2.268 -4.708 0.00 0.00 H +ATOM 36 N TYR A 3 -3.811 3.352 -0.033 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.274 2.565 1.082 0.00 0.00 C +ATOM 38 C TYR A 3 -3.871 1.151 1.162 0.00 0.00 C +ATOM 39 O TYR A 3 -3.162 0.203 1.485 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.498 3.331 2.395 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.474 3.026 3.471 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.445 3.950 3.728 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.556 1.845 4.232 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.515 3.719 4.759 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.614 1.596 5.250 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.602 2.538 5.524 0.00 0.00 C +ATOM 47 OH TYR A 3 0.272 2.308 6.543 0.00 0.00 O +ATOM 48 H TYR A 3 -4.199 4.255 0.180 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.199 2.466 0.933 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.461 4.382 2.183 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.496 3.115 2.779 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.383 4.866 3.163 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.347 1.135 4.044 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.238 4.465 4.970 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.662 0.704 5.850 0.00 0.00 H +ATOM 56 HH TYR A 3 0.748 3.106 6.781 0.00 0.00 H +ATOM 57 N ILE A 4 -5.156 0.994 0.814 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.850 -0.301 0.744 0.00 0.00 C +ATOM 59 C ILE A 4 -5.166 -1.221 -0.284 0.00 0.00 C +ATOM 60 O ILE A 4 -4.867 -2.383 0.001 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.341 -0.069 0.393 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.074 0.816 1.434 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.093 -1.407 0.261 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -9.121 1.725 0.775 0.00 0.00 C +ATOM 65 H ILE A 4 -5.666 1.828 0.551 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.792 -0.788 1.718 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.379 0.436 -0.575 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.565 0.180 2.146 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.376 1.460 1.967 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.735 -1.962 -0.606 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.943 -2.009 1.159 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.159 -1.227 0.131 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -8.623 2.466 0.151 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.802 1.138 0.157 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -9.693 2.241 1.546 0.00 0.00 H +ATOM 76 N GLN A 5 -4.893 -0.684 -1.479 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.220 -1.377 -2.577 0.00 0.00 C +ATOM 78 C GLN A 5 -2.743 -1.658 -2.245 0.00 0.00 C +ATOM 79 O GLN A 5 -2.248 -2.748 -2.519 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.380 -0.533 -3.859 0.00 0.00 C +ATOM 81 CG GLN A 5 -4.875 -1.373 -5.046 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.310 -0.493 -6.218 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -4.652 0.465 -6.592 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -6.447 -0.772 -6.830 0.00 0.00 N +ATOM 85 H GLN A 5 -5.079 0.301 -1.598 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.712 -2.339 -2.718 0.00 0.00 H +ATOM 87 1HB GLN A 5 -5.088 0.251 -3.671 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.433 -0.060 -4.120 0.00 0.00 H +ATOM 89 1HG GLN A 5 -4.081 -2.018 -5.371 0.00 0.00 H +ATOM 90 2HG GLN A 5 -5.728 -1.974 -4.725 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.033 -1.546 -6.574 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -6.664 -0.145 -7.586 0.00 0.00 H +ATOM 93 N TRP A 6 -2.061 -0.708 -1.593 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.699 -0.882 -1.080 0.00 0.00 C +ATOM 95 C TRP A 6 -0.600 -1.986 -0.008 0.00 0.00 C +ATOM 96 O TRP A 6 0.299 -2.830 -0.069 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.198 0.465 -0.550 0.00 0.00 C +ATOM 98 CG TRP A 6 1.182 0.437 0.022 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.329 0.427 -0.694 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.580 0.373 1.425 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.407 0.351 0.167 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.005 0.332 1.482 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.886 0.337 2.656 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.709 0.283 2.693 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.584 0.265 3.877 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.991 0.248 3.900 0.00 0.00 C +ATOM 107 H TRP A 6 -2.532 0.184 -1.455 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.054 -1.185 -1.905 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.210 1.168 -1.360 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.877 0.814 0.226 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.391 0.455 -1.774 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.385 0.314 -0.130 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.194 0.363 2.653 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.789 0.251 2.682 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.036 0.230 4.808 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.515 0.202 4.842 0.00 0.00 H +ATOM 117 N LEU A 7 -1.541 -2.027 0.949 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.640 -3.112 1.929 0.00 0.00 C +ATOM 119 C LEU A 7 -1.889 -4.468 1.261 0.00 0.00 C +ATOM 120 O LEU A 7 -1.238 -5.436 1.646 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.740 -2.826 2.968 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.343 -1.833 4.074 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.572 -1.572 4.953 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.217 -2.363 4.972 0.00 0.00 C +ATOM 125 H LEU A 7 -2.224 -1.274 0.990 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.682 -3.200 2.437 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.591 -2.427 2.451 0.00 0.00 H +ATOM 128 2HB LEU A 7 -3.015 -3.766 3.448 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.019 -0.896 3.626 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.372 -1.143 4.348 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.920 -2.504 5.398 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.325 -0.876 5.753 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.486 -3.340 5.377 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.290 -2.450 4.406 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -1.040 -1.673 5.795 0.00 0.00 H +ATOM 136 N LYS A 8 -2.770 -4.540 0.248 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.034 -5.773 -0.517 0.00 0.00 C +ATOM 138 C LYS A 8 -1.772 -6.426 -1.091 0.00 0.00 C +ATOM 139 O LYS A 8 -1.728 -7.650 -1.174 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.047 -5.506 -1.649 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.490 -5.877 -1.287 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.698 -7.403 -1.249 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.160 -7.768 -0.972 0.00 0.00 C +ATOM 144 NZ LYS A 8 -8.019 -7.558 -2.161 0.00 0.00 N +ATOM 145 H LYS A 8 -3.298 -3.699 0.023 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.441 -6.510 0.174 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.017 -4.461 -1.891 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.763 -6.070 -2.541 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.721 -5.471 -0.321 0.00 0.00 H +ATOM 150 2HG LYS A 8 -6.147 -5.448 -2.044 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.409 -7.817 -2.196 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.085 -7.829 -0.456 0.00 0.00 H +ATOM 153 1HE LYS A 8 -7.211 -8.801 -0.686 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.517 -7.163 -0.132 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -7.967 -6.595 -2.466 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.713 -8.153 -2.920 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -8.983 -7.781 -1.944 0.00 0.00 H +ATOM 158 N ASP A 9 -0.765 -5.631 -1.463 0.00 0.00 N +ATOM 159 CA ASP A 9 0.519 -6.121 -1.972 0.00 0.00 C +ATOM 160 C ASP A 9 1.445 -6.678 -0.865 0.00 0.00 C +ATOM 161 O ASP A 9 2.350 -7.452 -1.161 0.00 0.00 O +ATOM 162 CB ASP A 9 1.192 -4.971 -2.744 0.00 0.00 C +ATOM 163 CG ASP A 9 2.106 -5.477 -3.863 0.00 0.00 C +ATOM 164 OD1 ASP A 9 1.541 -5.942 -4.878 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.339 -5.352 -3.715 0.00 0.00 O +ATOM 166 H ASP A 9 -0.913 -4.632 -1.417 0.00 0.00 H +ATOM 167 HA ASP A 9 0.324 -6.932 -2.676 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.429 -4.352 -3.175 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.743 -4.334 -2.055 0.00 0.00 H +ATOM 170 N GLY A 10 1.199 -6.324 0.409 0.00 0.00 N +ATOM 171 CA GLY A 10 2.035 -6.695 1.561 0.00 0.00 C +ATOM 172 C GLY A 10 2.549 -5.516 2.405 0.00 0.00 C +ATOM 173 O GLY A 10 3.396 -5.721 3.280 0.00 0.00 O +ATOM 174 H GLY A 10 0.336 -5.822 0.592 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.449 -7.339 2.217 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.902 -7.263 1.226 0.00 0.00 H +ATOM 177 N GLY A 11 2.066 -4.289 2.167 0.00 0.00 N +ATOM 178 CA GLY A 11 2.482 -3.079 2.879 0.00 0.00 C +ATOM 179 C GLY A 11 4.013 -2.881 2.908 0.00 0.00 C +ATOM 180 O GLY A 11 4.621 -2.749 1.846 0.00 0.00 O +ATOM 181 H GLY A 11 1.409 -4.178 1.404 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.044 -2.219 2.376 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.076 -3.118 3.887 0.00 0.00 H +ATOM 184 N PRO A 12 4.676 -2.846 4.086 0.00 0.00 N +ATOM 185 CA PRO A 12 6.134 -2.696 4.170 0.00 0.00 C +ATOM 186 C PRO A 12 6.928 -3.774 3.419 0.00 0.00 C +ATOM 187 O PRO A 12 8.047 -3.516 2.983 0.00 0.00 O +ATOM 188 CB PRO A 12 6.477 -2.732 5.665 0.00 0.00 C +ATOM 189 CG PRO A 12 5.171 -2.350 6.354 0.00 0.00 C +ATOM 190 CD PRO A 12 4.103 -2.919 5.422 0.00 0.00 C +ATOM 191 HA PRO A 12 6.404 -1.720 3.765 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.791 -3.715 5.961 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.280 -2.035 5.906 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.107 -2.794 7.329 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.083 -1.262 6.389 0.00 0.00 H +ATOM 196 1HD PRO A 12 3.883 -3.937 5.681 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.191 -2.329 5.510 0.00 0.00 H +ATOM 198 N SER A 13 6.360 -4.977 3.249 0.00 0.00 N +ATOM 199 CA SER A 13 7.010 -6.099 2.562 0.00 0.00 C +ATOM 200 C SER A 13 6.911 -6.017 1.027 0.00 0.00 C +ATOM 201 O SER A 13 7.428 -6.898 0.345 0.00 0.00 O +ATOM 202 CB SER A 13 6.444 -7.423 3.092 0.00 0.00 C +ATOM 203 OG SER A 13 6.672 -7.521 4.489 0.00 0.00 O +ATOM 204 H SER A 13 5.417 -5.134 3.594 0.00 0.00 H +ATOM 205 HA SER A 13 8.075 -6.080 2.799 0.00 0.00 H +ATOM 206 1HB SER A 13 5.389 -7.461 2.900 0.00 0.00 H +ATOM 207 2HB SER A 13 6.937 -8.259 2.596 0.00 0.00 H +ATOM 208 HG SER A 13 7.611 -7.422 4.660 0.00 0.00 H +ATOM 209 N SER A 14 6.292 -4.962 0.480 0.00 0.00 N +ATOM 210 CA SER A 14 6.048 -4.754 -0.957 0.00 0.00 C +ATOM 211 C SER A 14 7.176 -4.018 -1.697 0.00 0.00 C +ATOM 212 O SER A 14 7.059 -3.747 -2.892 0.00 0.00 O +ATOM 213 CB SER A 14 4.777 -3.919 -1.127 0.00 0.00 C +ATOM 214 OG SER A 14 3.709 -4.470 -0.389 0.00 0.00 O +ATOM 215 H SER A 14 5.828 -4.305 1.101 0.00 0.00 H +ATOM 216 HA SER A 14 5.888 -5.719 -1.440 0.00 0.00 H +ATOM 217 1HB SER A 14 4.964 -2.920 -0.782 0.00 0.00 H +ATOM 218 2HB SER A 14 4.508 -3.877 -2.181 0.00 0.00 H +ATOM 219 HG SER A 14 2.926 -3.939 -0.562 0.00 0.00 H +ATOM 220 N GLY A 15 8.243 -3.596 -1.007 0.00 0.00 N +ATOM 221 CA GLY A 15 9.361 -2.835 -1.585 0.00 0.00 C +ATOM 222 C GLY A 15 9.056 -1.352 -1.859 0.00 0.00 C +ATOM 223 O GLY A 15 9.930 -0.509 -1.670 0.00 0.00 O +ATOM 224 H GLY A 15 8.265 -3.821 -0.022 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.215 -2.889 -0.911 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.653 -3.296 -2.529 0.00 0.00 H +ATOM 227 N ARG A 16 7.831 -1.015 -2.290 0.00 0.00 N +ATOM 228 CA ARG A 16 7.367 0.368 -2.493 0.00 0.00 C +ATOM 229 C ARG A 16 6.877 0.999 -1.170 0.00 0.00 C +ATOM 230 O ARG A 16 6.119 0.344 -0.451 0.00 0.00 O +ATOM 231 CB ARG A 16 6.250 0.369 -3.554 0.00 0.00 C +ATOM 232 CG ARG A 16 5.874 1.792 -3.992 0.00 0.00 C +ATOM 233 CD ARG A 16 4.768 1.802 -5.052 0.00 0.00 C +ATOM 234 NE ARG A 16 4.592 3.152 -5.624 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.342 3.725 -6.562 0.00 0.00 C +ATOM 236 NH1 ARG A 16 6.353 3.099 -7.118 0.00 0.00 N +ATOM 237 NH2 ARG A 16 5.089 4.951 -6.960 0.00 0.00 N +ATOM 238 H ARG A 16 7.202 -1.790 -2.478 0.00 0.00 H +ATOM 239 HA ARG A 16 8.215 0.937 -2.874 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.587 -0.180 -4.412 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.369 -0.141 -3.162 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.534 2.339 -3.134 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.762 2.274 -4.401 0.00 0.00 H +ATOM 244 1HD ARG A 16 5.029 1.120 -5.838 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.833 1.483 -4.587 0.00 0.00 H +ATOM 246 HE ARG A 16 3.843 3.705 -5.240 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 6.545 2.161 -6.819 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 6.918 3.536 -7.824 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 4.328 5.470 -6.560 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 5.659 5.373 -7.669 0.00 0.00 H +ATOM 251 N PRO A 17 7.221 2.269 -0.859 0.00 0.00 N +ATOM 252 CA PRO A 17 6.705 2.983 0.318 0.00 0.00 C +ATOM 253 C PRO A 17 5.183 3.245 0.249 0.00 0.00 C +ATOM 254 O PRO A 17 4.594 3.146 -0.833 0.00 0.00 O +ATOM 255 CB PRO A 17 7.498 4.298 0.370 0.00 0.00 C +ATOM 256 CG PRO A 17 7.885 4.544 -1.084 0.00 0.00 C +ATOM 257 CD PRO A 17 8.134 3.131 -1.601 0.00 0.00 C +ATOM 258 HA PRO A 17 6.917 2.397 1.214 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.889 5.098 0.744 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.399 4.155 0.967 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.088 5.020 -1.623 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.772 5.172 -1.170 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.928 3.076 -2.653 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.163 2.835 -1.385 0.00 0.00 H +ATOM 265 N PRO A 18 4.535 3.602 1.379 0.00 0.00 N +ATOM 266 CA PRO A 18 3.098 3.869 1.415 0.00 0.00 C +ATOM 267 C PRO A 18 2.719 5.165 0.669 0.00 0.00 C +ATOM 268 O PRO A 18 3.544 6.071 0.542 0.00 0.00 O +ATOM 269 CB PRO A 18 2.731 3.957 2.902 0.00 0.00 C +ATOM 270 CG PRO A 18 4.030 4.415 3.560 0.00 0.00 C +ATOM 271 CD PRO A 18 5.106 3.739 2.712 0.00 0.00 C +ATOM 272 HA PRO A 18 2.577 3.026 0.967 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.947 4.671 3.062 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.465 2.968 3.271 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.125 5.483 3.523 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.086 4.106 4.605 0.00 0.00 H +ATOM 277 1HD PRO A 18 5.991 4.345 2.679 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.326 2.749 3.115 0.00 0.00 H +ATOM 279 N PRO A 19 1.459 5.284 0.203 0.00 0.00 N +ATOM 280 CA PRO A 19 0.978 6.448 -0.545 0.00 0.00 C +ATOM 281 C PRO A 19 0.572 7.643 0.336 0.00 0.00 C +ATOM 282 O PRO A 19 0.552 8.771 -0.151 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.242 5.929 -1.311 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.801 4.845 -0.388 0.00 0.00 C +ATOM 285 CD PRO A 19 0.449 4.236 0.235 0.00 0.00 C +ATOM 286 HA PRO A 19 1.734 6.784 -1.254 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.960 6.711 -1.465 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.084 5.476 -2.248 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.437 5.271 0.364 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.352 4.094 -0.947 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.254 3.936 1.246 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.782 3.395 -0.374 0.00 0.00 H +ATOM 293 N SER A 20 0.203 7.390 1.598 0.00 0.00 N +ATOM 294 CA SER A 20 -0.287 8.373 2.572 0.00 0.00 C +ATOM 295 C SER A 20 -0.081 7.848 3.993 0.00 0.00 C +ATOM 296 O SER A 20 -0.913 6.978 4.355 0.00 0.00 O +ATOM 297 CB SER A 20 -1.774 8.674 2.311 0.00 0.00 C +ATOM 298 OG SER A 20 -2.506 7.508 2.636 0.00 0.00 O +ATOM 299 OXT SER A 20 0.876 8.292 4.654 0.00 0.00 O +ATOM 300 H SER A 20 0.248 6.431 1.907 0.00 0.00 H +ATOM 301 HA SER A 20 0.288 9.295 2.477 0.00 0.00 H +ATOM 302 1HB SER A 20 -2.096 9.492 2.926 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.935 8.957 1.270 0.00 0.00 H +ATOM 304 HG SER A 20 -1.946 7.163 3.425 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 36 +ATOM 1 N ASN A 1 -8.345 5.007 0.601 0.00 0.00 N +ATOM 2 CA ASN A 1 -8.415 4.187 -0.632 0.00 0.00 C +ATOM 3 C ASN A 1 -7.045 3.669 -1.059 0.00 0.00 C +ATOM 4 O ASN A 1 -6.816 2.479 -0.901 0.00 0.00 O +ATOM 5 CB ASN A 1 -9.197 4.893 -1.758 0.00 0.00 C +ATOM 6 CG ASN A 1 -10.643 5.166 -1.337 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -10.996 4.994 -0.179 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -11.503 5.612 -2.232 0.00 0.00 N +ATOM 9 1H ASN A 1 -7.873 4.502 1.338 0.00 0.00 H +ATOM 10 2H ASN A 1 -7.870 5.880 0.423 0.00 0.00 H +ATOM 11 3H ASN A 1 -9.297 5.207 0.895 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.987 3.291 -0.382 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.717 5.825 -1.987 0.00 0.00 H +ATOM 14 2HB ASN A 1 -9.208 4.248 -2.640 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -11.263 5.791 -3.194 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -12.436 5.760 -1.880 0.00 0.00 H +ATOM 17 N LEU A 2 -6.121 4.518 -1.533 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.809 4.093 -2.051 0.00 0.00 C +ATOM 19 C LEU A 2 -4.031 3.175 -1.085 0.00 0.00 C +ATOM 20 O LEU A 2 -3.434 2.185 -1.506 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.963 5.337 -2.400 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.300 6.102 -3.694 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -4.155 5.211 -4.929 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -5.687 6.754 -3.691 0.00 0.00 C +ATOM 25 H LEU A 2 -6.348 5.491 -1.680 0.00 0.00 H +ATOM 26 HA LEU A 2 -4.967 3.507 -2.957 0.00 0.00 H +ATOM 27 1HB LEU A 2 -4.062 6.029 -1.586 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.931 5.009 -2.510 0.00 0.00 H +ATOM 29 HG LEU A 2 -3.568 6.906 -3.783 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -3.189 4.708 -4.910 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -4.950 4.465 -4.963 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.210 5.824 -5.829 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -6.467 5.996 -3.738 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -5.803 7.376 -2.804 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -5.778 7.392 -4.570 0.00 0.00 H +ATOM 36 N TYR A 3 -4.080 3.473 0.219 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.443 2.669 1.265 0.00 0.00 C +ATOM 38 C TYR A 3 -3.970 1.221 1.326 0.00 0.00 C +ATOM 39 O TYR A 3 -3.220 0.316 1.685 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.618 3.386 2.614 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.451 3.202 3.563 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.484 4.220 3.700 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.336 2.022 4.319 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.422 4.070 4.610 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.266 1.859 5.218 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.314 2.887 5.374 0.00 0.00 C +ATOM 47 OH TYR A 3 0.689 2.738 6.281 0.00 0.00 O +ATOM 48 H TYR A 3 -4.533 4.332 0.484 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.376 2.623 1.045 0.00 0.00 H +ATOM 50 1HB TYR A 3 -3.738 4.435 2.426 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.533 3.034 3.097 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.561 5.130 3.117 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.073 1.242 4.208 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.304 4.861 4.721 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.168 0.961 5.808 0.00 0.00 H +ATOM 56 HH TYR A 3 1.122 3.570 6.477 0.00 0.00 H +ATOM 57 N ILE A 4 -5.233 0.982 0.940 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.848 -0.352 0.877 0.00 0.00 C +ATOM 59 C ILE A 4 -5.163 -1.178 -0.214 0.00 0.00 C +ATOM 60 O ILE A 4 -4.701 -2.283 0.059 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.377 -0.269 0.636 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.108 0.711 1.586 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -8.024 -1.663 0.703 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.003 0.381 3.081 0.00 0.00 C +ATOM 65 H ILE A 4 -5.759 1.748 0.533 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.674 -0.861 1.826 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.542 0.099 -0.378 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -7.695 1.690 1.433 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -9.164 0.739 1.316 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.622 -2.307 -0.080 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.834 -2.127 1.670 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.101 -1.579 0.552 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -8.525 -0.550 3.300 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -6.959 0.295 3.382 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.466 1.184 3.656 0.00 0.00 H +ATOM 76 N GLN A 5 -5.052 -0.619 -1.428 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.299 -1.207 -2.540 0.00 0.00 C +ATOM 78 C GLN A 5 -2.854 -1.505 -2.123 0.00 0.00 C +ATOM 79 O GLN A 5 -2.421 -2.646 -2.248 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.364 -0.280 -3.767 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.703 -0.407 -4.512 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.997 0.832 -5.354 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -6.747 1.710 -4.957 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -5.409 0.958 -6.528 0.00 0.00 N +ATOM 85 H GLN A 5 -5.422 0.315 -1.546 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.752 -2.163 -2.806 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.243 0.735 -3.441 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.560 -0.532 -4.460 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.663 -1.264 -5.156 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.516 -0.529 -3.797 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -4.765 0.277 -6.894 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -5.664 1.794 -7.028 0.00 0.00 H +ATOM 93 N TRP A 6 -2.139 -0.521 -1.559 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.764 -0.708 -1.080 0.00 0.00 C +ATOM 95 C TRP A 6 -0.621 -1.821 -0.023 0.00 0.00 C +ATOM 96 O TRP A 6 0.282 -2.655 -0.123 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.226 0.624 -0.556 0.00 0.00 C +ATOM 98 CG TRP A 6 1.177 0.552 -0.041 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.291 0.506 -0.805 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.636 0.472 1.346 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.401 0.391 0.008 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.059 0.386 1.338 0.00 0.00 C +ATOM 103 CE3 TRP A 6 1.004 0.469 2.607 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.822 0.325 2.511 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.758 0.393 3.795 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.163 0.337 3.750 0.00 0.00 C +ATOM 107 H TRP A 6 -2.566 0.400 -1.493 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.148 -1.012 -1.929 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.256 1.338 -1.356 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.872 0.979 0.246 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.305 0.538 -1.888 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.371 0.349 -0.315 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.074 0.535 2.657 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.900 0.268 2.446 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.258 0.397 4.753 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.733 0.301 4.667 0.00 0.00 H +ATOM 117 N LEU A 7 -1.520 -1.885 0.971 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.546 -3.008 1.915 0.00 0.00 C +ATOM 119 C LEU A 7 -1.821 -4.345 1.210 0.00 0.00 C +ATOM 120 O LEU A 7 -1.199 -5.346 1.565 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.568 -2.758 3.038 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.110 -1.733 4.094 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.291 -1.398 5.011 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -0.966 -2.250 4.977 0.00 0.00 C +ATOM 125 H LEU A 7 -2.224 -1.155 1.053 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.553 -3.100 2.352 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.476 -2.399 2.593 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.769 -3.700 3.549 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.780 -0.823 3.598 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.097 -0.955 4.426 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.659 -2.303 5.495 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.979 -0.690 5.779 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.320 -3.059 5.617 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.139 -2.614 4.372 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.594 -1.440 5.602 0.00 0.00 H +ATOM 136 N LYS A 8 -2.683 -4.366 0.182 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.015 -5.563 -0.608 0.00 0.00 C +ATOM 138 C LYS A 8 -1.848 -6.159 -1.409 0.00 0.00 C +ATOM 139 O LYS A 8 -1.978 -7.286 -1.891 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.151 -5.246 -1.594 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.168 -6.394 -1.663 0.00 0.00 C +ATOM 142 CD LYS A 8 -5.900 -6.429 -3.012 0.00 0.00 C +ATOM 143 CE LYS A 8 -5.280 -7.448 -3.983 0.00 0.00 C +ATOM 144 NZ LYS A 8 -3.846 -7.183 -4.280 0.00 0.00 N +ATOM 145 H LYS A 8 -3.170 -3.498 -0.036 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.348 -6.330 0.093 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.653 -4.353 -1.273 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.719 -5.054 -2.577 0.00 0.00 H +ATOM 149 1HG LYS A 8 -4.651 -7.324 -1.524 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.894 -6.248 -0.863 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.926 -6.694 -2.842 0.00 0.00 H +ATOM 152 2HD LYS A 8 -5.919 -5.435 -3.463 0.00 0.00 H +ATOM 153 1HE LYS A 8 -5.363 -8.426 -3.549 0.00 0.00 H +ATOM 154 2HE LYS A 8 -5.865 -7.435 -4.907 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -3.724 -6.252 -4.654 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -3.274 -7.269 -3.437 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -3.500 -7.847 -4.959 0.00 0.00 H +ATOM 158 N ASP A 9 -0.761 -5.409 -1.606 0.00 0.00 N +ATOM 159 CA ASP A 9 0.518 -5.887 -2.146 0.00 0.00 C +ATOM 160 C ASP A 9 1.477 -6.413 -1.062 0.00 0.00 C +ATOM 161 O ASP A 9 2.507 -6.993 -1.402 0.00 0.00 O +ATOM 162 CB ASP A 9 1.203 -4.746 -2.916 0.00 0.00 C +ATOM 163 CG ASP A 9 0.565 -4.528 -4.288 0.00 0.00 C +ATOM 164 OD1 ASP A 9 -0.287 -3.621 -4.405 0.00 0.00 O +ATOM 165 OD2 ASP A 9 0.935 -5.288 -5.208 0.00 0.00 O +ATOM 166 H ASP A 9 -0.838 -4.424 -1.369 0.00 0.00 H +ATOM 167 HA ASP A 9 0.340 -6.709 -2.843 0.00 0.00 H +ATOM 168 1HB ASP A 9 1.118 -3.841 -2.345 0.00 0.00 H +ATOM 169 2HB ASP A 9 2.251 -4.998 -3.073 0.00 0.00 H +ATOM 170 N GLY A 10 1.166 -6.210 0.226 0.00 0.00 N +ATOM 171 CA GLY A 10 1.990 -6.622 1.367 0.00 0.00 C +ATOM 172 C GLY A 10 2.542 -5.464 2.208 0.00 0.00 C +ATOM 173 O GLY A 10 3.334 -5.711 3.115 0.00 0.00 O +ATOM 174 H GLY A 10 0.272 -5.773 0.437 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.386 -7.249 2.021 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.837 -7.217 1.024 0.00 0.00 H +ATOM 177 N GLY A 11 2.159 -4.210 1.925 0.00 0.00 N +ATOM 178 CA GLY A 11 2.661 -3.046 2.655 0.00 0.00 C +ATOM 179 C GLY A 11 4.200 -2.979 2.631 0.00 0.00 C +ATOM 180 O GLY A 11 4.782 -3.116 1.550 0.00 0.00 O +ATOM 181 H GLY A 11 1.535 -4.045 1.144 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.267 -2.143 2.192 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.290 -3.099 3.676 0.00 0.00 H +ATOM 184 N PRO A 12 4.884 -2.799 3.785 0.00 0.00 N +ATOM 185 CA PRO A 12 6.347 -2.733 3.841 0.00 0.00 C +ATOM 186 C PRO A 12 7.047 -3.937 3.195 0.00 0.00 C +ATOM 187 O PRO A 12 8.110 -3.775 2.595 0.00 0.00 O +ATOM 188 CB PRO A 12 6.717 -2.624 5.327 0.00 0.00 C +ATOM 189 CG PRO A 12 5.445 -2.101 5.991 0.00 0.00 C +ATOM 190 CD PRO A 12 4.334 -2.698 5.130 0.00 0.00 C +ATOM 191 HA PRO A 12 6.671 -1.826 3.329 0.00 0.00 H +ATOM 192 1HB PRO A 12 6.987 -3.584 5.724 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.555 -1.942 5.483 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.372 -2.442 7.006 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.418 -1.013 5.926 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.059 -3.669 5.495 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.452 -2.058 5.170 0.00 0.00 H +ATOM 198 N SER A 13 6.446 -5.136 3.263 0.00 0.00 N +ATOM 199 CA SER A 13 7.011 -6.363 2.690 0.00 0.00 C +ATOM 200 C SER A 13 7.149 -6.316 1.165 0.00 0.00 C +ATOM 201 O SER A 13 7.983 -7.035 0.623 0.00 0.00 O +ATOM 202 CB SER A 13 6.153 -7.573 3.073 0.00 0.00 C +ATOM 203 OG SER A 13 6.053 -7.692 4.480 0.00 0.00 O +ATOM 204 H SER A 13 5.546 -5.219 3.725 0.00 0.00 H +ATOM 205 HA SER A 13 8.010 -6.507 3.102 0.00 0.00 H +ATOM 206 1HB SER A 13 5.170 -7.453 2.659 0.00 0.00 H +ATOM 207 2HB SER A 13 6.605 -8.481 2.668 0.00 0.00 H +ATOM 208 HG SER A 13 6.911 -7.936 4.835 0.00 0.00 H +ATOM 209 N SER A 14 6.381 -5.460 0.473 0.00 0.00 N +ATOM 210 CA SER A 14 6.506 -5.250 -0.977 0.00 0.00 C +ATOM 211 C SER A 14 7.628 -4.264 -1.351 0.00 0.00 C +ATOM 212 O SER A 14 7.865 -4.012 -2.530 0.00 0.00 O +ATOM 213 CB SER A 14 5.167 -4.770 -1.558 0.00 0.00 C +ATOM 214 OG SER A 14 4.894 -5.465 -2.757 0.00 0.00 O +ATOM 215 H SER A 14 5.734 -4.866 0.986 0.00 0.00 H +ATOM 216 HA SER A 14 6.748 -6.210 -1.440 0.00 0.00 H +ATOM 217 1HB SER A 14 4.383 -4.958 -0.850 0.00 0.00 H +ATOM 218 2HB SER A 14 5.209 -3.700 -1.766 0.00 0.00 H +ATOM 219 HG SER A 14 3.943 -5.622 -2.814 0.00 0.00 H +ATOM 220 N GLY A 15 8.305 -3.650 -0.369 0.00 0.00 N +ATOM 221 CA GLY A 15 9.425 -2.723 -0.566 0.00 0.00 C +ATOM 222 C GLY A 15 9.041 -1.328 -1.080 0.00 0.00 C +ATOM 223 O GLY A 15 9.718 -0.356 -0.750 0.00 0.00 O +ATOM 224 H GLY A 15 8.061 -3.868 0.595 0.00 0.00 H +ATOM 225 1HA GLY A 15 9.946 -2.602 0.385 0.00 0.00 H +ATOM 226 2HA GLY A 15 10.124 -3.163 -1.277 0.00 0.00 H +ATOM 227 N ARG A 16 7.963 -1.202 -1.869 0.00 0.00 N +ATOM 228 CA ARG A 16 7.437 0.089 -2.339 0.00 0.00 C +ATOM 229 C ARG A 16 6.901 0.917 -1.155 0.00 0.00 C +ATOM 230 O ARG A 16 6.143 0.369 -0.352 0.00 0.00 O +ATOM 231 CB ARG A 16 6.345 -0.153 -3.399 0.00 0.00 C +ATOM 232 CG ARG A 16 6.052 1.130 -4.193 0.00 0.00 C +ATOM 233 CD ARG A 16 5.045 0.908 -5.333 0.00 0.00 C +ATOM 234 NE ARG A 16 5.431 1.681 -6.532 0.00 0.00 N +ATOM 235 CZ ARG A 16 5.978 1.218 -7.653 0.00 0.00 C +ATOM 236 NH1 ARG A 16 6.157 -0.064 -7.871 0.00 0.00 N +ATOM 237 NH2 ARG A 16 6.370 2.053 -8.588 0.00 0.00 N +ATOM 238 H ARG A 16 7.514 -2.068 -2.147 0.00 0.00 H +ATOM 239 HA ARG A 16 8.272 0.615 -2.801 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.677 -0.916 -4.076 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.432 -0.513 -2.923 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.653 1.865 -3.521 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.992 1.485 -4.616 0.00 0.00 H +ATOM 244 1HD ARG A 16 5.018 -0.136 -5.581 0.00 0.00 H +ATOM 245 2HD ARG A 16 4.058 1.230 -4.997 0.00 0.00 H +ATOM 246 HE ARG A 16 5.320 2.679 -6.467 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 5.847 -0.713 -7.171 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 6.562 -0.400 -8.725 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 6.273 3.046 -8.463 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 6.787 1.699 -9.428 0.00 0.00 H +ATOM 251 N PRO A 17 7.223 2.224 -1.040 0.00 0.00 N +ATOM 252 CA PRO A 17 6.725 3.069 0.048 0.00 0.00 C +ATOM 253 C PRO A 17 5.198 3.267 -0.012 0.00 0.00 C +ATOM 254 O PRO A 17 4.600 3.082 -1.075 0.00 0.00 O +ATOM 255 CB PRO A 17 7.472 4.402 -0.100 0.00 0.00 C +ATOM 256 CG PRO A 17 7.803 4.461 -1.589 0.00 0.00 C +ATOM 257 CD PRO A 17 8.084 2.999 -1.923 0.00 0.00 C +ATOM 258 HA PRO A 17 6.988 2.611 1.003 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.847 5.226 0.187 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.397 4.366 0.477 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.973 4.836 -2.156 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.662 5.098 -1.791 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.847 2.797 -2.950 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.128 2.763 -1.708 0.00 0.00 H +ATOM 265 N PRO A 18 4.558 3.663 1.109 0.00 0.00 N +ATOM 266 CA PRO A 18 3.118 3.895 1.157 0.00 0.00 C +ATOM 267 C PRO A 18 2.704 5.139 0.350 0.00 0.00 C +ATOM 268 O PRO A 18 3.494 6.075 0.206 0.00 0.00 O +ATOM 269 CB PRO A 18 2.775 4.055 2.641 0.00 0.00 C +ATOM 270 CG PRO A 18 4.071 4.582 3.251 0.00 0.00 C +ATOM 271 CD PRO A 18 5.151 3.896 2.419 0.00 0.00 C +ATOM 272 HA PRO A 18 2.608 3.020 0.760 0.00 0.00 H +ATOM 273 1HB PRO A 18 1.974 4.756 2.776 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.543 3.080 3.070 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.134 5.649 3.159 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.154 4.332 4.308 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.013 4.529 2.331 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.412 2.939 2.872 0.00 0.00 H +ATOM 279 N PRO A 19 1.454 5.184 -0.142 0.00 0.00 N +ATOM 280 CA PRO A 19 0.910 6.335 -0.849 0.00 0.00 C +ATOM 281 C PRO A 19 0.561 7.461 0.136 0.00 0.00 C +ATOM 282 O PRO A 19 -0.109 7.228 1.144 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.325 5.804 -1.578 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.816 4.675 -0.671 0.00 0.00 C +ATOM 285 CD PRO A 19 0.464 4.121 -0.057 0.00 0.00 C +ATOM 286 HA PRO A 19 1.631 6.703 -1.581 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.071 6.569 -1.676 0.00 0.00 H +ATOM 288 2HB PRO A 19 -0.024 5.388 -2.541 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.472 5.053 0.089 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.335 3.905 -1.236 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.297 3.850 0.968 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.811 3.272 -0.645 0.00 0.00 H +ATOM 293 N SER A 20 1.026 8.673 -0.178 0.00 0.00 N +ATOM 294 CA SER A 20 0.698 9.933 0.494 0.00 0.00 C +ATOM 295 C SER A 20 -0.638 10.528 0.034 0.00 0.00 C +ATOM 296 O SER A 20 -1.052 10.270 -1.120 0.00 0.00 O +ATOM 297 CB SER A 20 1.845 10.928 0.290 0.00 0.00 C +ATOM 298 OG SER A 20 2.324 10.900 -1.046 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.231 11.239 0.875 0.00 0.00 O +ATOM 300 H SER A 20 1.554 8.807 -1.028 0.00 0.00 H +ATOM 301 HA SER A 20 0.586 9.752 1.561 0.00 0.00 H +ATOM 302 1HB SER A 20 1.493 11.917 0.514 0.00 0.00 H +ATOM 303 2HB SER A 20 2.664 10.654 0.959 0.00 0.00 H +ATOM 304 HG SER A 20 2.939 11.625 -1.177 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 37 +ATOM 1 N ASN A 1 -5.798 7.479 0.401 0.00 0.00 N +ATOM 2 CA ASN A 1 -6.588 7.022 -0.767 0.00 0.00 C +ATOM 3 C ASN A 1 -6.199 5.613 -1.207 0.00 0.00 C +ATOM 4 O ASN A 1 -7.021 4.713 -1.096 0.00 0.00 O +ATOM 5 CB ASN A 1 -6.557 8.030 -1.932 0.00 0.00 C +ATOM 6 CG ASN A 1 -7.956 8.586 -2.147 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -8.343 9.541 -1.498 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -8.767 7.973 -2.991 0.00 0.00 N +ATOM 9 1H ASN A 1 -5.816 6.777 1.127 0.00 0.00 H +ATOM 10 2H ASN A 1 -4.838 7.655 0.131 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.193 8.335 0.767 0.00 0.00 H +ATOM 12 HA ASN A 1 -7.627 6.938 -0.443 0.00 0.00 H +ATOM 13 1HB ASN A 1 -5.884 8.832 -1.696 0.00 0.00 H +ATOM 14 2HB ASN A 1 -6.214 7.562 -2.856 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -8.509 7.171 -3.541 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -9.676 8.400 -3.071 0.00 0.00 H +ATOM 17 N LEU A 2 -4.963 5.401 -1.676 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.527 4.127 -2.262 0.00 0.00 C +ATOM 19 C LEU A 2 -4.002 3.108 -1.223 0.00 0.00 C +ATOM 20 O LEU A 2 -3.490 2.051 -1.588 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.515 4.448 -3.386 0.00 0.00 C +ATOM 22 CG LEU A 2 -3.518 3.386 -4.508 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.924 3.985 -5.857 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -2.165 2.687 -4.652 0.00 0.00 C +ATOM 25 H LEU A 2 -4.310 6.167 -1.771 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.403 3.668 -2.726 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.766 5.400 -3.813 0.00 0.00 H +ATOM 28 2HB LEU A 2 -2.516 4.554 -2.964 0.00 0.00 H +ATOM 29 HG LEU A 2 -4.262 2.639 -4.267 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.932 4.396 -5.784 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -3.228 4.767 -6.155 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -3.936 3.199 -6.614 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -1.412 3.394 -5.001 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -1.857 2.272 -3.692 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -2.253 1.872 -5.370 0.00 0.00 H +ATOM 36 N TYR A 3 -4.143 3.405 0.077 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.594 2.622 1.192 0.00 0.00 C +ATOM 38 C TYR A 3 -4.041 1.158 1.165 0.00 0.00 C +ATOM 39 O TYR A 3 -3.239 0.261 1.408 0.00 0.00 O +ATOM 40 CB TYR A 3 -3.976 3.276 2.532 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.857 3.224 3.553 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -2.132 4.392 3.837 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.508 2.017 4.182 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -1.039 4.360 4.722 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.412 1.972 5.068 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.662 3.140 5.323 0.00 0.00 C +ATOM 47 OH TYR A 3 0.439 3.086 6.118 0.00 0.00 O +ATOM 48 H TYR A 3 -4.628 4.258 0.296 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.507 2.635 1.105 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.228 4.303 2.352 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.863 2.793 2.949 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -2.417 5.309 3.354 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.069 1.122 3.968 0.00 0.00 H +ATOM 54 HE1 TYR A 3 -0.485 5.260 4.942 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.123 1.050 5.550 0.00 0.00 H +ATOM 56 HH TYR A 3 0.954 3.895 6.046 0.00 0.00 H +ATOM 57 N ILE A 4 -5.313 0.913 0.819 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.875 -0.433 0.687 0.00 0.00 C +ATOM 59 C ILE A 4 -5.150 -1.213 -0.419 0.00 0.00 C +ATOM 60 O ILE A 4 -4.782 -2.367 -0.218 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.404 -0.376 0.441 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.133 0.538 1.461 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.996 -1.794 0.489 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.579 1.867 0.834 0.00 0.00 C +ATOM 65 H ILE A 4 -5.909 1.712 0.664 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.703 -0.963 1.625 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.582 0.014 -0.564 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -8.999 0.022 1.830 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.484 0.744 2.314 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.610 -2.395 -0.333 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.734 -2.278 1.431 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -9.082 -1.752 0.406 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.781 2.293 0.225 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.456 1.698 0.209 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.839 2.575 1.623 0.00 0.00 H +ATOM 76 N GLN A 5 -4.916 -0.587 -1.582 0.00 0.00 N +ATOM 77 CA GLN A 5 -4.177 -1.207 -2.684 0.00 0.00 C +ATOM 78 C GLN A 5 -2.695 -1.416 -2.351 0.00 0.00 C +ATOM 79 O GLN A 5 -2.131 -2.431 -2.746 0.00 0.00 O +ATOM 80 CB GLN A 5 -4.323 -0.379 -3.966 0.00 0.00 C +ATOM 81 CG GLN A 5 -5.742 -0.393 -4.567 0.00 0.00 C +ATOM 82 CD GLN A 5 -6.425 0.974 -4.548 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -6.408 1.714 -5.514 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -7.071 1.361 -3.464 0.00 0.00 N +ATOM 85 H GLN A 5 -5.081 0.408 -1.625 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.585 -2.193 -2.872 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.062 0.637 -3.742 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.636 -0.777 -4.715 0.00 0.00 H +ATOM 89 1HG GLN A 5 -5.677 -0.726 -5.585 0.00 0.00 H +ATOM 90 2HG GLN A 5 -6.369 -1.116 -4.046 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -7.192 0.797 -2.646 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -7.525 2.252 -3.586 0.00 0.00 H +ATOM 93 N TRP A 6 -2.077 -0.504 -1.595 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.720 -0.701 -1.084 0.00 0.00 C +ATOM 95 C TRP A 6 -0.636 -1.874 -0.089 0.00 0.00 C +ATOM 96 O TRP A 6 0.249 -2.721 -0.206 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.212 0.612 -0.482 0.00 0.00 C +ATOM 98 CG TRP A 6 1.182 0.533 0.054 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.314 0.521 -0.685 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.608 0.404 1.443 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.408 0.380 0.147 0.00 0.00 N +ATOM 102 CE2 TRP A 6 3.031 0.317 1.470 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.937 0.364 2.685 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.755 0.214 2.665 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.654 0.247 3.892 0.00 0.00 C +ATOM 106 CH2 TRP A 6 3.057 0.179 3.883 0.00 0.00 C +ATOM 107 H TRP A 6 -2.581 0.349 -1.361 0.00 0.00 H +ATOM 108 HA TRP A 6 -0.070 -0.958 -1.922 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.239 1.366 -1.245 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.876 0.919 0.324 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.354 0.591 -1.764 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.380 0.346 -0.171 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.140 0.441 2.699 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.832 0.162 2.632 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 1.123 0.229 4.833 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.599 0.110 4.815 0.00 0.00 H +ATOM 117 N LEU A 7 -1.578 -1.972 0.862 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.635 -3.091 1.807 0.00 0.00 C +ATOM 119 C LEU A 7 -1.938 -4.442 1.140 0.00 0.00 C +ATOM 120 O LEU A 7 -1.409 -5.445 1.613 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.649 -2.806 2.929 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.162 -1.784 3.974 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.325 -1.421 4.903 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.020 -2.318 4.848 0.00 0.00 C +ATOM 125 H LEU A 7 -2.263 -1.224 0.945 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.647 -3.201 2.250 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.548 -2.428 2.482 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.870 -3.739 3.450 0.00 0.00 H +ATOM 129 HG LEU A 7 -1.826 -0.882 3.469 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.144 -0.999 4.320 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.677 -2.310 5.426 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -2.996 -0.686 5.638 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.350 -3.197 5.402 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.162 -2.584 4.235 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -0.705 -1.549 5.553 0.00 0.00 H +ATOM 136 N LYS A 8 -2.727 -4.482 0.050 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.029 -5.712 -0.710 0.00 0.00 C +ATOM 138 C LYS A 8 -1.781 -6.486 -1.146 0.00 0.00 C +ATOM 139 O LYS A 8 -1.824 -7.713 -1.157 0.00 0.00 O +ATOM 140 CB LYS A 8 -3.877 -5.403 -1.959 0.00 0.00 C +ATOM 141 CG LYS A 8 -5.382 -5.303 -1.680 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.121 -4.820 -2.936 0.00 0.00 C +ATOM 143 CE LYS A 8 -7.604 -4.569 -2.640 0.00 0.00 C +ATOM 144 NZ LYS A 8 -8.094 -3.337 -3.303 0.00 0.00 N +ATOM 145 H LYS A 8 -3.183 -3.613 -0.220 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.587 -6.394 -0.066 0.00 0.00 H +ATOM 147 1HB LYS A 8 -3.547 -4.468 -2.369 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.735 -6.199 -2.691 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.755 -6.268 -1.398 0.00 0.00 H +ATOM 150 2HG LYS A 8 -5.561 -4.609 -0.862 0.00 0.00 H +ATOM 151 1HD LYS A 8 -5.672 -3.907 -3.278 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.030 -5.569 -3.726 0.00 0.00 H +ATOM 153 1HE LYS A 8 -8.176 -5.405 -2.994 0.00 0.00 H +ATOM 154 2HE LYS A 8 -7.739 -4.483 -1.558 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -7.671 -2.528 -2.870 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -7.852 -3.348 -4.286 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -9.100 -3.265 -3.217 0.00 0.00 H +ATOM 158 N ASP A 9 -0.706 -5.789 -1.524 0.00 0.00 N +ATOM 159 CA ASP A 9 0.553 -6.406 -1.949 0.00 0.00 C +ATOM 160 C ASP A 9 1.294 -7.047 -0.758 0.00 0.00 C +ATOM 161 O ASP A 9 1.606 -8.237 -0.786 0.00 0.00 O +ATOM 162 CB ASP A 9 1.394 -5.344 -2.675 0.00 0.00 C +ATOM 163 CG ASP A 9 2.486 -5.969 -3.549 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.263 -6.015 -4.778 0.00 0.00 O +ATOM 165 OD2 ASP A 9 3.523 -6.378 -2.986 0.00 0.00 O +ATOM 166 H ASP A 9 -0.768 -4.780 -1.507 0.00 0.00 H +ATOM 167 HA ASP A 9 0.326 -7.201 -2.662 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.747 -4.757 -3.298 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.836 -4.661 -1.952 0.00 0.00 H +ATOM 170 N GLY A 10 1.509 -6.275 0.317 0.00 0.00 N +ATOM 171 CA GLY A 10 2.156 -6.749 1.545 0.00 0.00 C +ATOM 172 C GLY A 10 2.683 -5.650 2.474 0.00 0.00 C +ATOM 173 O GLY A 10 3.675 -5.864 3.179 0.00 0.00 O +ATOM 174 H GLY A 10 1.256 -5.305 0.206 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.435 -7.344 2.107 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.991 -7.399 1.279 0.00 0.00 H +ATOM 177 N GLY A 11 2.059 -4.463 2.477 0.00 0.00 N +ATOM 178 CA GLY A 11 2.499 -3.312 3.269 0.00 0.00 C +ATOM 179 C GLY A 11 3.991 -2.994 3.056 0.00 0.00 C +ATOM 180 O GLY A 11 4.434 -2.979 1.903 0.00 0.00 O +ATOM 181 H GLY A 11 1.253 -4.352 1.879 0.00 0.00 H +ATOM 182 1HA GLY A 11 1.923 -2.437 2.974 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.296 -3.527 4.316 0.00 0.00 H +ATOM 184 N PRO A 12 4.793 -2.762 4.118 0.00 0.00 N +ATOM 185 CA PRO A 12 6.229 -2.487 3.995 0.00 0.00 C +ATOM 186 C PRO A 12 7.028 -3.585 3.274 0.00 0.00 C +ATOM 187 O PRO A 12 8.076 -3.294 2.700 0.00 0.00 O +ATOM 188 CB PRO A 12 6.752 -2.306 5.426 0.00 0.00 C +ATOM 189 CG PRO A 12 5.507 -2.017 6.260 0.00 0.00 C +ATOM 190 CD PRO A 12 4.401 -2.765 5.520 0.00 0.00 C +ATOM 191 HA PRO A 12 6.358 -1.552 3.450 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.237 -3.200 5.768 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.469 -1.487 5.487 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.620 -2.390 7.260 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.297 -0.947 6.247 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.322 -3.771 5.884 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.446 -2.266 5.679 0.00 0.00 H +ATOM 198 N SER A 13 6.542 -4.835 3.272 0.00 0.00 N +ATOM 199 CA SER A 13 7.225 -5.960 2.613 0.00 0.00 C +ATOM 200 C SER A 13 7.090 -5.923 1.084 0.00 0.00 C +ATOM 201 O SER A 13 7.812 -6.639 0.397 0.00 0.00 O +ATOM 202 CB SER A 13 6.715 -7.304 3.143 0.00 0.00 C +ATOM 203 OG SER A 13 6.868 -7.384 4.548 0.00 0.00 O +ATOM 204 H SER A 13 5.615 -5.000 3.652 0.00 0.00 H +ATOM 205 HA SER A 13 8.289 -5.899 2.846 0.00 0.00 H +ATOM 206 1HB SER A 13 5.676 -7.407 2.896 0.00 0.00 H +ATOM 207 2HB SER A 13 7.295 -8.107 2.686 0.00 0.00 H +ATOM 208 HG SER A 13 6.175 -6.863 4.961 0.00 0.00 H +ATOM 209 N SER A 14 6.215 -5.060 0.547 0.00 0.00 N +ATOM 210 CA SER A 14 5.985 -4.853 -0.893 0.00 0.00 C +ATOM 211 C SER A 14 7.162 -4.169 -1.609 0.00 0.00 C +ATOM 212 O SER A 14 7.144 -4.019 -2.829 0.00 0.00 O +ATOM 213 CB SER A 14 4.753 -3.963 -1.131 0.00 0.00 C +ATOM 214 OG SER A 14 3.717 -4.170 -0.195 0.00 0.00 O +ATOM 215 H SER A 14 5.645 -4.521 1.187 0.00 0.00 H +ATOM 216 HA SER A 14 5.802 -5.822 -1.361 0.00 0.00 H +ATOM 217 1HB SER A 14 5.060 -2.936 -1.075 0.00 0.00 H +ATOM 218 2HB SER A 14 4.378 -4.145 -2.137 0.00 0.00 H +ATOM 219 HG SER A 14 3.940 -3.652 0.618 0.00 0.00 H +ATOM 220 N GLY A 15 8.149 -3.648 -0.867 0.00 0.00 N +ATOM 221 CA GLY A 15 9.308 -2.922 -1.397 0.00 0.00 C +ATOM 222 C GLY A 15 9.025 -1.456 -1.756 0.00 0.00 C +ATOM 223 O GLY A 15 9.889 -0.604 -1.556 0.00 0.00 O +ATOM 224 H GLY A 15 8.079 -3.767 0.134 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.105 -2.947 -0.656 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.666 -3.429 -2.292 0.00 0.00 H +ATOM 227 N ARG A 16 7.825 -1.141 -2.266 0.00 0.00 N +ATOM 228 CA ARG A 16 7.373 0.232 -2.551 0.00 0.00 C +ATOM 229 C ARG A 16 6.899 0.948 -1.262 0.00 0.00 C +ATOM 230 O ARG A 16 6.146 0.343 -0.492 0.00 0.00 O +ATOM 231 CB ARG A 16 6.251 0.175 -3.606 0.00 0.00 C +ATOM 232 CG ARG A 16 5.730 1.567 -4.005 0.00 0.00 C +ATOM 233 CD ARG A 16 4.469 1.519 -4.875 0.00 0.00 C +ATOM 234 NE ARG A 16 4.763 1.758 -6.300 0.00 0.00 N +ATOM 235 CZ ARG A 16 3.916 2.227 -7.208 0.00 0.00 C +ATOM 236 NH1 ARG A 16 2.658 2.472 -6.918 0.00 0.00 N +ATOM 237 NH2 ARG A 16 4.320 2.468 -8.433 0.00 0.00 N +ATOM 238 H ARG A 16 7.201 -1.921 -2.440 0.00 0.00 H +ATOM 239 HA ARG A 16 8.223 0.770 -2.970 0.00 0.00 H +ATOM 240 1HB ARG A 16 6.631 -0.312 -4.483 0.00 0.00 H +ATOM 241 2HB ARG A 16 5.424 -0.414 -3.204 0.00 0.00 H +ATOM 242 1HG ARG A 16 5.505 2.115 -3.110 0.00 0.00 H +ATOM 243 2HG ARG A 16 6.516 2.126 -4.513 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.016 0.551 -4.774 0.00 0.00 H +ATOM 245 2HD ARG A 16 3.800 2.303 -4.511 0.00 0.00 H +ATOM 246 HE ARG A 16 5.706 1.581 -6.603 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 2.347 2.274 -5.983 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 2.019 2.829 -7.604 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 5.274 2.298 -8.697 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 3.671 2.823 -9.112 0.00 0.00 H +ATOM 251 N PRO A 17 7.238 2.239 -1.049 0.00 0.00 N +ATOM 252 CA PRO A 17 6.752 3.031 0.091 0.00 0.00 C +ATOM 253 C PRO A 17 5.220 3.248 0.078 0.00 0.00 C +ATOM 254 O PRO A 17 4.591 3.120 -0.974 0.00 0.00 O +ATOM 255 CB PRO A 17 7.502 4.368 0.005 0.00 0.00 C +ATOM 256 CG PRO A 17 7.850 4.499 -1.475 0.00 0.00 C +ATOM 257 CD PRO A 17 8.119 3.053 -1.878 0.00 0.00 C +ATOM 258 HA PRO A 17 7.029 2.523 1.014 0.00 0.00 H +ATOM 259 1HB PRO A 17 6.875 5.179 0.323 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.421 4.310 0.590 0.00 0.00 H +ATOM 261 1HG PRO A 17 7.030 4.911 -2.031 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.722 5.135 -1.635 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.895 2.907 -2.917 0.00 0.00 H +ATOM 264 2HD PRO A 17 9.157 2.796 -1.662 0.00 0.00 H +ATOM 265 N PRO A 18 4.609 3.598 1.230 0.00 0.00 N +ATOM 266 CA PRO A 18 3.169 3.836 1.328 0.00 0.00 C +ATOM 267 C PRO A 18 2.742 5.156 0.656 0.00 0.00 C +ATOM 268 O PRO A 18 3.546 6.084 0.554 0.00 0.00 O +ATOM 269 CB PRO A 18 2.862 3.850 2.829 0.00 0.00 C +ATOM 270 CG PRO A 18 4.166 4.332 3.459 0.00 0.00 C +ATOM 271 CD PRO A 18 5.241 3.765 2.532 0.00 0.00 C +ATOM 272 HA PRO A 18 2.644 3.006 0.861 0.00 0.00 H +ATOM 273 1HB PRO A 18 2.058 4.525 3.049 0.00 0.00 H +ATOM 274 2HB PRO A 18 2.652 2.837 3.167 0.00 0.00 H +ATOM 275 1HG PRO A 18 4.207 5.404 3.483 0.00 0.00 H +ATOM 276 2HG PRO A 18 4.282 3.964 4.478 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.067 4.446 2.460 0.00 0.00 H +ATOM 278 2HD PRO A 18 5.572 2.793 2.901 0.00 0.00 H +ATOM 279 N PRO A 19 1.469 5.271 0.226 0.00 0.00 N +ATOM 280 CA PRO A 19 0.934 6.477 -0.411 0.00 0.00 C +ATOM 281 C PRO A 19 0.511 7.576 0.577 0.00 0.00 C +ATOM 282 O PRO A 19 0.337 8.718 0.154 0.00 0.00 O +ATOM 283 CB PRO A 19 -0.292 5.993 -1.191 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.802 4.823 -0.346 0.00 0.00 C +ATOM 285 CD PRO A 19 0.482 4.200 0.195 0.00 0.00 C +ATOM 286 HA PRO A 19 1.665 6.898 -1.103 0.00 0.00 H +ATOM 287 1HB PRO A 19 -1.032 6.767 -1.264 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.019 5.632 -2.172 0.00 0.00 H +ATOM 289 1HG PRO A 19 -1.428 5.170 0.453 0.00 0.00 H +ATOM 290 2HG PRO A 19 -1.362 4.109 -0.947 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.321 3.813 1.183 0.00 0.00 H +ATOM 292 2HD PRO A 19 0.825 3.424 -0.490 0.00 0.00 H +ATOM 293 N SER A 20 0.305 7.237 1.858 0.00 0.00 N +ATOM 294 CA SER A 20 -0.121 8.153 2.922 0.00 0.00 C +ATOM 295 C SER A 20 0.633 7.935 4.225 0.00 0.00 C +ATOM 296 O SER A 20 1.271 6.865 4.365 0.00 0.00 O +ATOM 297 CB SER A 20 -1.606 7.996 3.229 0.00 0.00 C +ATOM 298 OG SER A 20 -1.979 9.152 3.934 0.00 0.00 O +ATOM 299 OXT SER A 20 0.418 8.818 5.086 0.00 0.00 O +ATOM 300 H SER A 20 0.556 6.306 2.160 0.00 0.00 H +ATOM 301 HA SER A 20 0.065 9.179 2.607 0.00 0.00 H +ATOM 302 1HB SER A 20 -2.169 7.916 2.319 0.00 0.00 H +ATOM 303 2HB SER A 20 -1.742 7.145 3.893 0.00 0.00 H +ATOM 304 HG SER A 20 -1.222 9.307 4.547 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MODEL 38 +ATOM 1 N ASN A 1 -6.430 7.268 -0.166 0.00 0.00 N +ATOM 2 CA ASN A 1 -7.338 6.541 -1.083 0.00 0.00 C +ATOM 3 C ASN A 1 -6.741 5.186 -1.487 0.00 0.00 C +ATOM 4 O ASN A 1 -7.302 4.173 -1.103 0.00 0.00 O +ATOM 5 CB ASN A 1 -7.816 7.420 -2.263 0.00 0.00 C +ATOM 6 CG ASN A 1 -6.722 7.736 -3.278 0.00 0.00 C +ATOM 7 OD1 ASN A 1 -6.455 6.960 -4.175 0.00 0.00 O +ATOM 8 ND2 ASN A 1 -5.989 8.824 -3.136 0.00 0.00 N +ATOM 9 1H ASN A 1 -6.139 6.658 0.586 0.00 0.00 H +ATOM 10 2H ASN A 1 -5.611 7.592 -0.664 0.00 0.00 H +ATOM 11 3H ASN A 1 -6.908 8.064 0.234 0.00 0.00 H +ATOM 12 HA ASN A 1 -8.233 6.285 -0.514 0.00 0.00 H +ATOM 13 1HB ASN A 1 -8.609 6.904 -2.770 0.00 0.00 H +ATOM 14 2HB ASN A 1 -8.228 8.355 -1.876 0.00 0.00 H +ATOM 15 1HD2 ASN A 1 -6.187 9.584 -2.506 0.00 0.00 H +ATOM 16 2HD2 ASN A 1 -5.321 8.935 -3.885 0.00 0.00 H +ATOM 17 N LEU A 2 -5.581 5.139 -2.154 0.00 0.00 N +ATOM 18 CA LEU A 2 -4.935 3.924 -2.679 0.00 0.00 C +ATOM 19 C LEU A 2 -4.238 3.028 -1.631 0.00 0.00 C +ATOM 20 O LEU A 2 -3.619 2.024 -1.985 0.00 0.00 O +ATOM 21 CB LEU A 2 -3.974 4.371 -3.806 0.00 0.00 C +ATOM 22 CG LEU A 2 -4.642 4.256 -5.191 0.00 0.00 C +ATOM 23 CD1 LEU A 2 -3.992 5.215 -6.190 0.00 0.00 C +ATOM 24 CD2 LEU A 2 -4.527 2.822 -5.718 0.00 0.00 C +ATOM 25 H LEU A 2 -5.206 6.000 -2.526 0.00 0.00 H +ATOM 26 HA LEU A 2 -5.713 3.296 -3.117 0.00 0.00 H +ATOM 27 1HB LEU A 2 -3.690 5.392 -3.639 0.00 0.00 H +ATOM 28 2HB LEU A 2 -3.065 3.769 -3.800 0.00 0.00 H +ATOM 29 HG LEU A 2 -5.698 4.515 -5.115 0.00 0.00 H +ATOM 30 1HD1 LEU A 2 -4.204 6.242 -5.892 0.00 0.00 H +ATOM 31 2HD1 LEU A 2 -2.915 5.058 -6.224 0.00 0.00 H +ATOM 32 3HD1 LEU A 2 -4.414 5.054 -7.182 0.00 0.00 H +ATOM 33 1HD2 LEU A 2 -3.478 2.549 -5.839 0.00 0.00 H +ATOM 34 2HD2 LEU A 2 -4.998 2.131 -5.020 0.00 0.00 H +ATOM 35 3HD2 LEU A 2 -5.031 2.745 -6.681 0.00 0.00 H +ATOM 36 N TYR A 3 -4.360 3.359 -0.340 0.00 0.00 N +ATOM 37 CA TYR A 3 -3.724 2.648 0.772 0.00 0.00 C +ATOM 38 C TYR A 3 -4.137 1.169 0.856 0.00 0.00 C +ATOM 39 O TYR A 3 -3.317 0.329 1.227 0.00 0.00 O +ATOM 40 CB TYR A 3 -4.029 3.379 2.090 0.00 0.00 C +ATOM 41 CG TYR A 3 -2.887 3.312 3.082 0.00 0.00 C +ATOM 42 CD1 TYR A 3 -1.861 4.274 3.013 0.00 0.00 C +ATOM 43 CD2 TYR A 3 -2.830 2.295 4.054 0.00 0.00 C +ATOM 44 CE1 TYR A 3 -0.765 4.215 3.892 0.00 0.00 C +ATOM 45 CE2 TYR A 3 -1.745 2.242 4.951 0.00 0.00 C +ATOM 46 CZ TYR A 3 -0.706 3.197 4.866 0.00 0.00 C +ATOM 47 OH TYR A 3 0.351 3.124 5.717 0.00 0.00 O +ATOM 48 H TYR A 3 -4.937 4.156 -0.129 0.00 0.00 H +ATOM 49 HA TYR A 3 -2.646 2.676 0.609 0.00 0.00 H +ATOM 50 1HB TYR A 3 -4.231 4.410 1.870 0.00 0.00 H +ATOM 51 2HB TYR A 3 -4.934 2.967 2.541 0.00 0.00 H +ATOM 52 HD1 TYR A 3 -1.912 5.069 2.285 0.00 0.00 H +ATOM 53 HD2 TYR A 3 -3.617 1.558 4.111 0.00 0.00 H +ATOM 54 HE1 TYR A 3 0.013 4.960 3.818 0.00 0.00 H +ATOM 55 HE2 TYR A 3 -1.685 1.473 5.706 0.00 0.00 H +ATOM 56 HH TYR A 3 1.074 3.686 5.430 0.00 0.00 H +ATOM 57 N ILE A 4 -5.379 0.841 0.456 0.00 0.00 N +ATOM 58 CA ILE A 4 -5.867 -0.543 0.382 0.00 0.00 C +ATOM 59 C ILE A 4 -4.972 -1.370 -0.545 0.00 0.00 C +ATOM 60 O ILE A 4 -4.513 -2.431 -0.139 0.00 0.00 O +ATOM 61 CB ILE A 4 -7.351 -0.631 -0.056 0.00 0.00 C +ATOM 62 CG1 ILE A 4 -8.267 0.276 0.803 0.00 0.00 C +ATOM 63 CG2 ILE A 4 -7.848 -2.085 0.043 0.00 0.00 C +ATOM 64 CD1 ILE A 4 -8.626 1.595 0.106 0.00 0.00 C +ATOM 65 H ILE A 4 -5.992 1.589 0.165 0.00 0.00 H +ATOM 66 HA ILE A 4 -5.785 -0.978 1.379 0.00 0.00 H +ATOM 67 HB ILE A 4 -7.431 -0.341 -1.106 0.00 0.00 H +ATOM 68 1HG1 ILE A 4 -9.174 -0.257 1.016 0.00 0.00 H +ATOM 69 2HG1 ILE A 4 -7.782 0.492 1.756 0.00 0.00 H +ATOM 70 1HG2 ILE A 4 -7.271 -2.734 -0.616 0.00 0.00 H +ATOM 71 2HG2 ILE A 4 -7.761 -2.445 1.069 0.00 0.00 H +ATOM 72 3HG2 ILE A 4 -8.892 -2.140 -0.270 0.00 0.00 H +ATOM 73 1HD1 ILE A 4 -7.974 1.772 -0.749 0.00 0.00 H +ATOM 74 2HD1 ILE A 4 -9.658 1.551 -0.248 0.00 0.00 H +ATOM 75 3HD1 ILE A 4 -8.528 2.422 0.809 0.00 0.00 H +ATOM 76 N GLN A 5 -4.692 -0.874 -1.757 0.00 0.00 N +ATOM 77 CA GLN A 5 -3.867 -1.563 -2.751 0.00 0.00 C +ATOM 78 C GLN A 5 -2.445 -1.809 -2.222 0.00 0.00 C +ATOM 79 O GLN A 5 -1.929 -2.921 -2.330 0.00 0.00 O +ATOM 80 CB GLN A 5 -3.847 -0.743 -4.058 0.00 0.00 C +ATOM 81 CG GLN A 5 -3.727 -1.623 -5.311 0.00 0.00 C +ATOM 82 CD GLN A 5 -5.084 -2.186 -5.734 0.00 0.00 C +ATOM 83 OE1 GLN A 5 -5.698 -2.984 -5.042 0.00 0.00 O +ATOM 84 NE2 GLN A 5 -5.615 -1.776 -6.871 0.00 0.00 N +ATOM 85 H GLN A 5 -5.036 0.048 -1.986 0.00 0.00 H +ATOM 86 HA GLN A 5 -4.323 -2.535 -2.945 0.00 0.00 H +ATOM 87 1HB GLN A 5 -4.757 -0.178 -4.122 0.00 0.00 H +ATOM 88 2HB GLN A 5 -3.011 -0.043 -4.034 0.00 0.00 H +ATOM 89 1HG GLN A 5 -3.329 -1.033 -6.114 0.00 0.00 H +ATOM 90 2HG GLN A 5 -3.035 -2.447 -5.128 0.00 0.00 H +ATOM 91 1HE2 GLN A 5 -5.153 -1.128 -7.485 0.00 0.00 H +ATOM 92 2HE2 GLN A 5 -6.510 -2.185 -7.079 0.00 0.00 H +ATOM 93 N TRP A 6 -1.839 -0.788 -1.599 0.00 0.00 N +ATOM 94 CA TRP A 6 -0.525 -0.892 -0.956 0.00 0.00 C +ATOM 95 C TRP A 6 -0.505 -1.946 0.161 0.00 0.00 C +ATOM 96 O TRP A 6 0.383 -2.798 0.180 0.00 0.00 O +ATOM 97 CB TRP A 6 -0.095 0.486 -0.442 0.00 0.00 C +ATOM 98 CG TRP A 6 1.244 0.517 0.231 0.00 0.00 C +ATOM 99 CD1 TRP A 6 2.442 0.440 -0.391 0.00 0.00 C +ATOM 100 CD2 TRP A 6 1.543 0.573 1.661 0.00 0.00 C +ATOM 101 NE1 TRP A 6 3.455 0.482 0.546 0.00 0.00 N +ATOM 102 CE2 TRP A 6 2.959 0.563 1.826 0.00 0.00 C +ATOM 103 CE3 TRP A 6 0.765 0.602 2.836 0.00 0.00 C +ATOM 104 CZ2 TRP A 6 3.578 0.610 3.082 0.00 0.00 C +ATOM 105 CZ3 TRP A 6 1.375 0.609 4.105 0.00 0.00 C +ATOM 106 CH2 TRP A 6 2.774 0.632 4.232 0.00 0.00 C +ATOM 107 H TRP A 6 -2.350 0.086 -1.539 0.00 0.00 H +ATOM 108 HA TRP A 6 0.198 -1.218 -1.705 0.00 0.00 H +ATOM 109 1HB TRP A 6 -0.064 1.159 -1.277 0.00 0.00 H +ATOM 110 2HB TRP A 6 -0.841 0.856 0.262 0.00 0.00 H +ATOM 111 HD1 TRP A 6 2.583 0.342 -1.457 0.00 0.00 H +ATOM 112 HE1 TRP A 6 4.453 0.438 0.329 0.00 0.00 H +ATOM 113 HE3 TRP A 6 -0.312 0.606 2.755 0.00 0.00 H +ATOM 114 HZ2 TRP A 6 4.655 0.607 3.156 0.00 0.00 H +ATOM 115 HZ3 TRP A 6 0.762 0.609 4.996 0.00 0.00 H +ATOM 116 HH2 TRP A 6 3.223 0.656 5.215 0.00 0.00 H +ATOM 117 N LEU A 7 -1.495 -1.933 1.067 0.00 0.00 N +ATOM 118 CA LEU A 7 -1.631 -2.979 2.085 0.00 0.00 C +ATOM 119 C LEU A 7 -1.880 -4.365 1.470 0.00 0.00 C +ATOM 120 O LEU A 7 -1.286 -5.334 1.938 0.00 0.00 O +ATOM 121 CB LEU A 7 -2.736 -2.618 3.092 0.00 0.00 C +ATOM 122 CG LEU A 7 -2.373 -1.484 4.072 0.00 0.00 C +ATOM 123 CD1 LEU A 7 -3.572 -1.205 4.981 0.00 0.00 C +ATOM 124 CD2 LEU A 7 -1.173 -1.831 4.963 0.00 0.00 C +ATOM 125 H LEU A 7 -2.195 -1.196 1.019 0.00 0.00 H +ATOM 126 HA LEU A 7 -0.684 -3.061 2.616 0.00 0.00 H +ATOM 127 1HB LEU A 7 -3.605 -2.317 2.540 0.00 0.00 H +ATOM 128 2HB LEU A 7 -2.968 -3.507 3.680 0.00 0.00 H +ATOM 129 HG LEU A 7 -2.145 -0.578 3.513 0.00 0.00 H +ATOM 130 1HD1 LEU A 7 -4.432 -0.914 4.377 0.00 0.00 H +ATOM 131 2HD1 LEU A 7 -3.821 -2.097 5.558 0.00 0.00 H +ATOM 132 3HD1 LEU A 7 -3.338 -0.395 5.671 0.00 0.00 H +ATOM 133 1HD2 LEU A 7 -1.337 -2.790 5.456 0.00 0.00 H +ATOM 134 2HD2 LEU A 7 -0.263 -1.882 4.367 0.00 0.00 H +ATOM 135 3HD2 LEU A 7 -1.035 -1.059 5.719 0.00 0.00 H +ATOM 136 N LYS A 8 -2.706 -4.471 0.416 0.00 0.00 N +ATOM 137 CA LYS A 8 -3.040 -5.736 -0.258 0.00 0.00 C +ATOM 138 C LYS A 8 -1.805 -6.466 -0.789 0.00 0.00 C +ATOM 139 O LYS A 8 -1.742 -7.687 -0.688 0.00 0.00 O +ATOM 140 CB LYS A 8 -4.034 -5.485 -1.410 0.00 0.00 C +ATOM 141 CG LYS A 8 -4.931 -6.689 -1.757 0.00 0.00 C +ATOM 142 CD LYS A 8 -6.238 -6.726 -0.944 0.00 0.00 C +ATOM 143 CE LYS A 8 -6.111 -7.395 0.434 0.00 0.00 C +ATOM 144 NZ LYS A 8 -6.596 -8.795 0.413 0.00 0.00 N +ATOM 145 H LYS A 8 -3.180 -3.623 0.110 0.00 0.00 H +ATOM 146 HA LYS A 8 -3.483 -6.388 0.485 0.00 0.00 H +ATOM 147 1HB LYS A 8 -4.667 -4.665 -1.133 0.00 0.00 H +ATOM 148 2HB LYS A 8 -3.469 -5.209 -2.302 0.00 0.00 H +ATOM 149 1HG LYS A 8 -5.179 -6.640 -2.800 0.00 0.00 H +ATOM 150 2HG LYS A 8 -4.383 -7.626 -1.648 0.00 0.00 H +ATOM 151 1HD LYS A 8 -6.571 -5.716 -0.797 0.00 0.00 H +ATOM 152 2HD LYS A 8 -6.998 -7.246 -1.531 0.00 0.00 H +ATOM 153 1HE LYS A 8 -5.079 -7.389 0.729 0.00 0.00 H +ATOM 154 2HE LYS A 8 -6.699 -6.816 1.151 0.00 0.00 H +ATOM 155 1HZ LYS A 8 -7.551 -8.825 0.081 0.00 0.00 H +ATOM 156 2HZ LYS A 8 -6.018 -9.355 -0.202 0.00 0.00 H +ATOM 157 3HZ LYS A 8 -6.565 -9.193 1.343 0.00 0.00 H +ATOM 158 N ASP A 9 -0.838 -5.715 -1.323 0.00 0.00 N +ATOM 159 CA ASP A 9 0.450 -6.224 -1.807 0.00 0.00 C +ATOM 160 C ASP A 9 1.375 -6.712 -0.666 0.00 0.00 C +ATOM 161 O ASP A 9 2.268 -7.521 -0.902 0.00 0.00 O +ATOM 162 CB ASP A 9 1.122 -5.114 -2.638 0.00 0.00 C +ATOM 163 CG ASP A 9 1.749 -5.645 -3.931 0.00 0.00 C +ATOM 164 OD1 ASP A 9 2.908 -6.107 -3.879 0.00 0.00 O +ATOM 165 OD2 ASP A 9 1.053 -5.563 -4.967 0.00 0.00 O +ATOM 166 H ASP A 9 -1.027 -4.724 -1.433 0.00 0.00 H +ATOM 167 HA ASP A 9 0.258 -7.078 -2.459 0.00 0.00 H +ATOM 168 1HB ASP A 9 0.383 -4.379 -2.891 0.00 0.00 H +ATOM 169 2HB ASP A 9 1.874 -4.603 -2.038 0.00 0.00 H +ATOM 170 N GLY A 10 1.131 -6.267 0.578 0.00 0.00 N +ATOM 171 CA GLY A 10 1.947 -6.573 1.759 0.00 0.00 C +ATOM 172 C GLY A 10 2.471 -5.343 2.517 0.00 0.00 C +ATOM 173 O GLY A 10 3.312 -5.492 3.405 0.00 0.00 O +ATOM 174 H GLY A 10 0.292 -5.717 0.714 0.00 0.00 H +ATOM 175 1HA GLY A 10 1.343 -7.159 2.453 0.00 0.00 H +ATOM 176 2HA GLY A 10 2.809 -7.177 1.472 0.00 0.00 H +ATOM 177 N GLY A 11 2.017 -4.128 2.178 0.00 0.00 N +ATOM 178 CA GLY A 11 2.486 -2.885 2.787 0.00 0.00 C +ATOM 179 C GLY A 11 4.008 -2.719 2.637 0.00 0.00 C +ATOM 180 O GLY A 11 4.503 -2.800 1.506 0.00 0.00 O +ATOM 181 H GLY A 11 1.396 -4.039 1.378 0.00 0.00 H +ATOM 182 1HA GLY A 11 2.001 -2.048 2.288 0.00 0.00 H +ATOM 183 2HA GLY A 11 2.186 -2.879 3.832 0.00 0.00 H +ATOM 184 N PRO A 12 4.780 -2.519 3.728 0.00 0.00 N +ATOM 185 CA PRO A 12 6.239 -2.387 3.665 0.00 0.00 C +ATOM 186 C PRO A 12 6.950 -3.575 3.000 0.00 0.00 C +ATOM 187 O PRO A 12 7.979 -3.391 2.354 0.00 0.00 O +ATOM 188 CB PRO A 12 6.713 -2.228 5.117 0.00 0.00 C +ATOM 189 CG PRO A 12 5.470 -1.751 5.866 0.00 0.00 C +ATOM 190 CD PRO A 12 4.331 -2.431 5.110 0.00 0.00 C +ATOM 191 HA PRO A 12 6.480 -1.479 3.109 0.00 0.00 H +ATOM 192 1HB PRO A 12 7.058 -3.165 5.510 0.00 0.00 H +ATOM 193 2HB PRO A 12 7.527 -1.506 5.194 0.00 0.00 H +ATOM 194 1HG PRO A 12 5.494 -2.065 6.892 0.00 0.00 H +ATOM 195 2HG PRO A 12 5.378 -0.669 5.771 0.00 0.00 H +ATOM 196 1HD PRO A 12 4.149 -3.411 5.508 0.00 0.00 H +ATOM 197 2HD PRO A 12 3.421 -1.842 5.212 0.00 0.00 H +ATOM 198 N SER A 13 6.391 -4.788 3.108 0.00 0.00 N +ATOM 199 CA SER A 13 6.963 -6.030 2.565 0.00 0.00 C +ATOM 200 C SER A 13 6.817 -6.172 1.040 0.00 0.00 C +ATOM 201 O SER A 13 7.075 -7.245 0.502 0.00 0.00 O +ATOM 202 CB SER A 13 6.348 -7.235 3.292 0.00 0.00 C +ATOM 203 OG SER A 13 6.588 -7.135 4.685 0.00 0.00 O +ATOM 204 H SER A 13 5.511 -4.881 3.605 0.00 0.00 H +ATOM 205 HA SER A 13 8.033 -6.031 2.772 0.00 0.00 H +ATOM 206 1HB SER A 13 5.290 -7.255 3.114 0.00 0.00 H +ATOM 207 2HB SER A 13 6.798 -8.157 2.922 0.00 0.00 H +ATOM 208 HG SER A 13 7.535 -7.126 4.838 0.00 0.00 H +ATOM 209 N SER A 14 6.433 -5.095 0.342 0.00 0.00 N +ATOM 210 CA SER A 14 6.094 -5.070 -1.091 0.00 0.00 C +ATOM 211 C SER A 14 7.131 -4.326 -1.948 0.00 0.00 C +ATOM 212 O SER A 14 6.912 -4.123 -3.139 0.00 0.00 O +ATOM 213 CB SER A 14 4.713 -4.430 -1.320 0.00 0.00 C +ATOM 214 OG SER A 14 3.852 -4.557 -0.209 0.00 0.00 O +ATOM 215 H SER A 14 6.248 -4.262 0.883 0.00 0.00 H +ATOM 216 HA SER A 14 6.036 -6.095 -1.458 0.00 0.00 H +ATOM 217 1HB SER A 14 4.851 -3.386 -1.528 0.00 0.00 H +ATOM 218 2HB SER A 14 4.256 -4.900 -2.188 0.00 0.00 H +ATOM 219 HG SER A 14 4.090 -3.859 0.448 0.00 0.00 H +ATOM 220 N GLY A 15 8.234 -3.851 -1.350 0.00 0.00 N +ATOM 221 CA GLY A 15 9.242 -3.043 -2.046 0.00 0.00 C +ATOM 222 C GLY A 15 8.765 -1.634 -2.430 0.00 0.00 C +ATOM 223 O GLY A 15 9.339 -1.029 -3.333 0.00 0.00 O +ATOM 224 H GLY A 15 8.368 -4.078 -0.374 0.00 0.00 H +ATOM 225 1HA GLY A 15 10.125 -2.943 -1.415 0.00 0.00 H +ATOM 226 2HA GLY A 15 9.540 -3.557 -2.962 0.00 0.00 H +ATOM 227 N ARG A 16 7.712 -1.116 -1.776 0.00 0.00 N +ATOM 228 CA ARG A 16 7.012 0.119 -2.159 0.00 0.00 C +ATOM 229 C ARG A 16 6.744 1.004 -0.927 0.00 0.00 C +ATOM 230 O ARG A 16 6.192 0.494 0.050 0.00 0.00 O +ATOM 231 CB ARG A 16 5.715 -0.274 -2.903 0.00 0.00 C +ATOM 232 CG ARG A 16 5.325 0.703 -4.024 0.00 0.00 C +ATOM 233 CD ARG A 16 4.678 2.015 -3.540 0.00 0.00 C +ATOM 234 NE ARG A 16 3.237 2.087 -3.842 0.00 0.00 N +ATOM 235 CZ ARG A 16 2.680 2.273 -5.035 0.00 0.00 C +ATOM 236 NH1 ARG A 16 3.403 2.443 -6.118 0.00 0.00 N +ATOM 237 NH2 ARG A 16 1.375 2.289 -5.163 0.00 0.00 N +ATOM 238 H ARG A 16 7.321 -1.668 -1.025 0.00 0.00 H +ATOM 239 HA ARG A 16 7.663 0.650 -2.853 0.00 0.00 H +ATOM 240 1HB ARG A 16 5.853 -1.247 -3.334 0.00 0.00 H +ATOM 241 2HB ARG A 16 4.890 -0.391 -2.200 0.00 0.00 H +ATOM 242 1HG ARG A 16 6.212 0.951 -4.574 0.00 0.00 H +ATOM 243 2HG ARG A 16 4.637 0.186 -4.695 0.00 0.00 H +ATOM 244 1HD ARG A 16 4.810 2.091 -2.478 0.00 0.00 H +ATOM 245 2HD ARG A 16 5.186 2.860 -4.006 0.00 0.00 H +ATOM 246 HE ARG A 16 2.615 2.042 -3.054 0.00 0.00 H +ATOM 247 1HH1 ARG A 16 4.402 2.431 -6.023 0.00 0.00 H +ATOM 248 2HH1 ARG A 16 2.980 2.582 -7.018 0.00 0.00 H +ATOM 249 1HH2 ARG A 16 0.783 2.132 -4.366 0.00 0.00 H +ATOM 250 2HH2 ARG A 16 0.966 2.417 -6.070 0.00 0.00 H +ATOM 251 N PRO A 17 7.089 2.310 -0.946 0.00 0.00 N +ATOM 252 CA PRO A 17 6.885 3.210 0.196 0.00 0.00 C +ATOM 253 C PRO A 17 5.393 3.477 0.503 0.00 0.00 C +ATOM 254 O PRO A 17 4.546 3.303 -0.377 0.00 0.00 O +ATOM 255 CB PRO A 17 7.623 4.504 -0.182 0.00 0.00 C +ATOM 256 CG PRO A 17 7.588 4.505 -1.707 0.00 0.00 C +ATOM 257 CD PRO A 17 7.737 3.023 -2.038 0.00 0.00 C +ATOM 258 HA PRO A 17 7.356 2.774 1.077 0.00 0.00 H +ATOM 259 1HB PRO A 17 7.117 5.363 0.213 0.00 0.00 H +ATOM 260 2HB PRO A 17 8.658 4.442 0.155 0.00 0.00 H +ATOM 261 1HG PRO A 17 6.657 4.893 -2.074 0.00 0.00 H +ATOM 262 2HG PRO A 17 8.394 5.099 -2.134 0.00 0.00 H +ATOM 263 1HD PRO A 17 7.256 2.797 -2.970 0.00 0.00 H +ATOM 264 2HD PRO A 17 8.794 2.757 -2.066 0.00 0.00 H +ATOM 265 N PRO A 18 5.059 3.929 1.730 0.00 0.00 N +ATOM 266 CA PRO A 18 3.682 4.205 2.144 0.00 0.00 C +ATOM 267 C PRO A 18 3.095 5.411 1.383 0.00 0.00 C +ATOM 268 O PRO A 18 3.661 6.502 1.452 0.00 0.00 O +ATOM 269 CB PRO A 18 3.748 4.459 3.655 0.00 0.00 C +ATOM 270 CG PRO A 18 5.175 4.956 3.878 0.00 0.00 C +ATOM 271 CD PRO A 18 5.977 4.185 2.832 0.00 0.00 C +ATOM 272 HA PRO A 18 3.080 3.317 1.975 0.00 0.00 H +ATOM 273 1HB PRO A 18 3.033 5.203 3.949 0.00 0.00 H +ATOM 274 2HB PRO A 18 3.609 3.517 4.186 0.00 0.00 H +ATOM 275 1HG PRO A 18 5.245 6.014 3.714 0.00 0.00 H +ATOM 276 2HG PRO A 18 5.524 4.748 4.890 0.00 0.00 H +ATOM 277 1HD PRO A 18 6.810 4.771 2.495 0.00 0.00 H +ATOM 278 2HD PRO A 18 6.310 3.236 3.253 0.00 0.00 H +ATOM 279 N PRO A 19 1.966 5.253 0.661 0.00 0.00 N +ATOM 280 CA PRO A 19 1.331 6.356 -0.052 0.00 0.00 C +ATOM 281 C PRO A 19 0.578 7.268 0.928 0.00 0.00 C +ATOM 282 O PRO A 19 -0.202 6.793 1.754 0.00 0.00 O +ATOM 283 CB PRO A 19 0.397 5.681 -1.061 0.00 0.00 C +ATOM 284 CG PRO A 19 -0.022 4.391 -0.357 0.00 0.00 C +ATOM 285 CD PRO A 19 1.197 4.027 0.492 0.00 0.00 C +ATOM 286 HA PRO A 19 2.080 6.941 -0.589 0.00 0.00 H +ATOM 287 1HB PRO A 19 -0.455 6.299 -1.267 0.00 0.00 H +ATOM 288 2HB PRO A 19 0.960 5.433 -1.961 0.00 0.00 H +ATOM 289 1HG PRO A 19 -0.883 4.555 0.261 0.00 0.00 H +ATOM 290 2HG PRO A 19 -0.265 3.606 -1.072 0.00 0.00 H +ATOM 291 1HD PRO A 19 0.884 3.651 1.447 0.00 0.00 H +ATOM 292 2HD PRO A 19 1.805 3.288 -0.030 0.00 0.00 H +ATOM 293 N SER A 20 0.794 8.581 0.820 0.00 0.00 N +ATOM 294 CA SER A 20 0.068 9.633 1.546 0.00 0.00 C +ATOM 295 C SER A 20 -0.019 10.895 0.692 0.00 0.00 C +ATOM 296 O SER A 20 0.894 11.061 -0.156 0.00 0.00 O +ATOM 297 CB SER A 20 0.690 9.909 2.920 0.00 0.00 C +ATOM 298 OG SER A 20 2.087 10.037 2.813 0.00 0.00 O +ATOM 299 OXT SER A 20 -1.022 11.612 0.858 0.00 0.00 O +ATOM 300 H SER A 20 1.377 8.948 0.073 0.00 0.00 H +ATOM 301 HA SER A 20 -0.962 9.316 1.705 0.00 0.00 H +ATOM 302 1HB SER A 20 0.282 10.819 3.316 0.00 0.00 H +ATOM 303 2HB SER A 20 0.461 9.076 3.584 0.00 0.00 H +ATOM 304 HG SER A 20 2.347 9.513 2.048 0.00 0.00 H +TER 305 SER A 20 +ENDMDL +MASTER 78 0 0 2 0 0 0 611552 38 0 2 +END diff --git a/examples/unres/MIN/1L2Y_min.inp b/examples/unres/MIN/1L2Y_min.inp new file mode 100644 index 0000000..9372f63 --- /dev/null +++ b/examples/unres/MIN/1L2Y_min.inp @@ -0,0 +1,12 @@ +1L2Y ff_1l2y_1le1 +SEED=-3059743 PDBREF MINIMIZE CART RESCALE_MODE=0 PDBSTART OVERLAP NOSEARCHSC & +PDBOUT +MAXMIN=2000 MAXFUN=5000 +WLONG=1.00000 WSCP=1.23315 WELEC=0.84476 WBOND=1.00000 WANG=0.62954 & +WSCLOC=0.10554 WTOR=1.84316 WTORD=1.26571 WCORRH=0.19212 WCORR5=0.00000 & +WCORR6=0.00000 WEL_LOC=0.37357 WTURN3=1.40323 WTURN4=0.64673 WTURN6=0.00000 & +WVDWPP=0.23173 WHPB=1.00000 WSCCOR=0.0 & +CUTOFF=7.00000 WCORR4=0.00000 +1L2Y.pdb + 0 + 0 diff --git a/examples/unres/MIN/1L2Y_min.intin b/examples/unres/MIN/1L2Y_min.intin new file mode 100644 index 0000000..e69de29 diff --git a/examples/unres/MIN/1L2Y_min.out_GB b/examples/unres/MIN/1L2Y_min.out_GB new file mode 100644 index 0000000..1323aec --- /dev/null +++ b/examples/unres/MIN/1L2Y_min.out_GB @@ -0,0 +1,847 @@ +-------------------------------------------------------------------------------- + FILE ASSIGNMENT +-------------------------------------------------------------------------------- + Input file : 1L2Y_min.inp + Output file : 1L2Y_min.out_GB + + Sidechain potential file : ../../../PARAM/scinter_GB.parm + SCp potential file : ../../../PARAM/scp.parm + Electrostatic potential file : ../../../PARAM/electr_631Gdp.parm + Cumulant coefficient file : ../../../PARAM/fourier_opt.parm.1igd_hc_iter3_3 + Torsional parameter file : ../../../PARAM/torsion_631Gdp.parm + Double torsional parameter file : ../../../PARAM/torsion_double_631Gdp.parm + SCCOR parameter file : ../../../PARAM/rotcorr_AM1.parm + Bond & inertia constant file : ../../../PARAM/bond_AM1.parm + Bending parameter file : ../../../PARAM/theta_abinitio.parm + Rotamer parameter file : ../../../PARAM/rotamers_AM1_aura.10022007.parm + Threading database : ../../../PARAM/patterns.cart +-------------------------------------------------------------------------------- + ### LAST MODIFIED 11/03/09 1:19PM by czarek + ++++ Compile info ++++ + Version MINI energy and minimization only + Start reading THETA_PDB + End reading THETA_PDB + +Potential is GB , exponents are 6 12 + +Disulfide bridge parameters: +S-S bridge energy: -5.50 +d0cm: 3.78 akcm: 15.10 +akth: 11.00 akct: 12.00 +v1ss: -1.08 v2ss: 7.61 v3ss: 13.70 +RMSDBC = 3.0 +RMSDBC1 = 0.5 +RMSDBC1MAX = 1.5 +DRMS = 0.1 +RMSDBCM = 3.0 +Time limit (min): 960.0 + RESCALE_MODE 0 +Library routine used to diagonalize matrices. + +******************************************************************************** + Options in energy minimization: +******************************************************************************** +MaxMin: 2000 MaxFun: 5000MinMin: 2000 MinFun: 2000 TolF: 1.00000E-02 RTolF: 1.00000E-04 + +Energy-term weights (unscaled): + +WSCC= 1.000000 (SC-SC) +WSCP= 1.233150 (SC-p) +WELEC= 0.844760 (p-p electr) +WVDWPP= 0.231730 (p-p VDW) +WBOND= 1.000000 (stretching) +WANG= 0.629540 (bending) +WSCLOC= 0.105540 (SC local) +WTOR= 1.843160 (torsional) +WTORD= 1.265710 (double torsional) +WSTRAIN= 1.000000 (SS bridges & dist. cnstr.) +WEL_LOC= 0.373570 (multi-body 3-rd order) +WCORR4= 0.192120 (multi-body 4th order) +WCORR5= 0.000000 (multi-body 5th order) +WCORR6= 0.000000 (multi-body 6th order) +WSCCOR= 0.000000 (back-scloc correlation) +WTURN3= 1.403230 (turns, 3rd order) +WTURN4= 0.646730 (turns, 4th order) +WTURN6= 0.000000 (turns, 6th order) + +Hydrogen-bonding correlation between contact pairs of peptide groups + +Scaling factor of 1,4 SC-p interactions: 0.400 +General scaling factor of SC-p interactions: 1.000 + +Energy-term weights (scaled): + +WSCC= 1.000000 (SC-SC) +WSCP= 1.233150 (SC-p) +WELEC= 0.844760 (p-p electr) +WVDWPP= 0.231730 (p-p VDW) +WBOND= 1.000000 (stretching) +WANG= 0.629540 (bending) +WSCLOC= 0.105540 (SC local) +WTOR= 1.843160 (torsional) +WTORD= 1.265710 (double torsional) +WSTRAIN= 1.000000 (SS bridges & dist. cnstr.) +WEL_LOC= 0.373570 (multi-body 3-rd order) +WCORR4= 0.192120 (multi-body 4th order) +WCORR5= 0.000000 (multi-body 5th order) +WCORR6= 0.000000 (multi-body 6th order) +WSCCOR= 0.000000 (back-scloc correlatkion) +WTURN3= 1.403230 (turns, 3rd order) +WTURN4= 0.646730 (turns, 4th order) +WTURN6= 0.000000 (turns, 6th order) + Reference temperature for weights calculation: 300.00000000000000 + Parameters of the SS-bond potential: + D0CM 3.7799999999999998 AKCM 15.100000000000000 AKTH 11.000000000000000 AKCT 12.000000000000000 + V1SS -1.0800000000000001 V2SS 7.6100000000000003 V3SS 13.699999999999999 + EBR -5.5000000000000000 +PDB data will be read from file 1L2Y.pdb + Nres: 21 +Backbone and SC coordinates as read from the PDB + 1 21 D -9.841 4.399 -5.051 -9.841 4.399 -5.051 + 2 14 ASN -8.608 3.135 -1.618 -10.407 3.153 -2.437 + 3 5 LEU -4.923 4.002 -2.452 -4.618 6.091 -1.850 + 4 8 TYR -3.690 2.738 0.981 -1.959 3.143 3.797 + 5 4 ILE -5.857 -0.449 0.613 -7.484 -0.369 1.074 + 6 13 GLN -4.122 -1.167 -2.743 -5.089 -1.450 -4.853 + 7 7 TRP -0.716 -0.631 -0.993 1.727 0.440 1.450 + 8 5 LEU -1.641 -2.932 1.963 -2.244 -2.097 3.799 + 9 19 LYS -3.024 -5.791 -0.269 -3.820 -5.527 -3.146 + 10 16 ASP 0.466 -6.016 -1.905 0.653 -5.125 -3.676 + 11 10 GLY 2.060 -6.618 1.593 2.060 -6.618 1.593 + 12 10 GLY 2.626 -2.967 2.723 2.626 -2.967 2.723 + 13 20 PRO 6.333 -2.533 3.806 5.724 -2.372 5.058 + 14 12 SER 7.049 -6.179 2.704 6.757 -6.938 3.675 + 15 12 SER 6.389 -5.315 -1.015 5.245 -5.350 -1.546 + 16 10 GLY 9.451 -3.116 -1.870 9.451 -3.116 -1.870 + 17 18 ARG 7.289 0.084 -2.054 5.225 -1.826 -3.986 + 18 20 PRO 6.782 3.088 0.345 7.458 3.741 -0.688 + 19 20 PRO 3.287 4.031 1.686 4.025 4.206 2.856 + 20 20 PRO 1.185 6.543 -0.353 0.358 5.421 -0.430 + 21 12 SER 0.852 10.027 1.285 1.151 10.636 1.488 + 22 21 D -1.250 12.539 -0.754 -1.250 12.539 -0.754 +nsup= 20 nstart_sup= 2 + ITEL + 1 21 0 + 2 14 1 + 3 5 1 + 4 8 1 + 5 4 1 + 6 13 1 + 7 7 1 + 8 5 1 + 9 19 1 + 10 16 1 + 11 10 1 + 12 10 2 + 13 20 1 + 14 12 1 + 15 12 1 + 16 10 1 + 17 18 2 + 18 20 2 + 19 20 2 + 20 20 1 + 21 12 0 + ns= 0 iss: +Boundaries in phi angle sampling: +D 1 -180.0 180.0 +ASN 2 -180.0 180.0 +LEU 3 -180.0 180.0 +TYR 4 -180.0 180.0 +ILE 5 -180.0 180.0 +GLN 6 -180.0 180.0 +TRP 7 -180.0 180.0 +LEU 8 -180.0 180.0 +LYS 9 -180.0 180.0 +ASP 10 -180.0 180.0 +GLY 11 -180.0 180.0 +GLY 12 -180.0 180.0 +PRO 13 -180.0 180.0 +SER 14 -180.0 180.0 +SER 15 -180.0 180.0 +GLY 16 -180.0 180.0 +ARG 17 -180.0 180.0 +PRO 18 -180.0 180.0 +PRO 19 -180.0 180.0 +PRO 20 -180.0 180.0 +SER 21 -180.0 180.0 +D 22 -180.0 180.0 +nsup= 20 + nsup= 20 nstart_sup= 2 nstart_seq= 2 + NZ_START= 2 NZ_END= 21 + IZ_SC= 0 + Contact order: 0.0000000000000000 + Shifting contacts: 2 2 + +Geometry of the virtual chain. + Res d Theta Gamma Dsc Alpha Beta +D 1 0.000 0.000 0.000 0.000 0.000 0.000 +ASN 2 3.861 0.000 0.000 1.977 94.624 -178.093 +LEU 3 3.876 92.239 0.000 2.195 102.878 -79.236 +TYR 4 3.861 92.239 -180.000 3.330 163.195 -7.440 +ILE 5 3.871 90.357 45.849 1.692 144.011 -104.516 +GLN 6 3.846 89.090 55.194 2.338 170.986 -139.318 +TRP 7 3.867 88.657 49.396 3.617 123.650 -21.913 +LEU 8 3.859 93.032 48.298 2.105 151.723 -105.899 +LYS 9 3.882 94.826 46.843 2.997 106.974 -55.960 +ASP 10 3.861 87.966 59.623 1.991 153.447 -128.646 +GLY 11 3.891 89.908 56.679 0.000 0.000 0.000 +GLY 12 3.864 100.181 -87.304 0.000 0.000 0.000 +PRO 13 3.886 109.073 -127.499 1.402 101.771 -115.580 +SER 14 3.876 89.537 4.261 1.267 144.515 -129.218 +SER 15 3.875 91.815 66.108 1.262 161.047 -100.177 +GLY 16 3.866 101.784 70.140 0.000 0.000 0.000 +ARG 17 3.866 92.201 -108.949 3.411 139.846 -132.716 +PRO 18 3.878 133.225 103.824 1.397 115.610 -118.024 +PRO 19 3.860 121.502 -122.527 1.395 118.575 -122.417 +PRO 20 3.858 117.950 -90.285 1.396 118.959 -126.207 +SER 21 3.864 114.201 -108.328 0.708 128.925 -37.341 +D 22 3.858 114.201 180.000 0.000 0.000 0.000 +Energy evaluation or minimization calculation. + +Conformations will be energy-minimized. +******************************************************************************** + + Time for energy evaluation 6.95318157089216528E-310 + +Virtual-chain energies: + +EVDW= -1.798849E+01 WEIGHT= 1.000000D+00 (SC-SC) +EVDW2= 4.471415E+01 WEIGHT= 1.233150D+00 (SC-p) +EES= -9.165378E+01 WEIGHT= 8.447600D-01 (p-p) +EVDWPP= -3.362882E+01 WEIGHT= 2.317300D-01 (p-p VDW) +ESTR= 5.659036E+01 WEIGHT= 1.000000D+00 (stretching) +EBE= -5.669935E+00 WEIGHT= 6.295400D-01 (bending) +ESC= 1.734458E+02 WEIGHT= 1.055400D-01 (SC local) +ETORS= 1.479510E+01 WEIGHT= 1.843160D+00 (torsional) +ETORSD= 1.006444E+00 WEIGHT= 1.265710D+00 (double torsional) +EHBP= 0.000000E+00 WEIGHT= 1.000000D+00 (SS bridges & dist. cnstr.) +ECORR4= -6.528803E+01 WEIGHT= 1.921200D-01 (multi-body) +ECORR5= 0.000000E+00 WEIGHT= 0.000000D+00 (multi-body) +ECORR6= 0.000000E+00 WEIGHT= 0.000000D+00 (multi-body) +EELLO= -4.012900E+00 WEIGHT= 3.735700D-01 (electrostatic-local) +ETURN3= 1.829789E+01 WEIGHT= 1.403230D+00 (turns, 3rd order) +ETURN4= 6.580750E-01 WEIGHT= 6.467300D-01 (turns, 4th order) +ETURN6= 0.000000E+00 WEIGHT= 0.000000D+00 (turns, 6th order) +ESCCOR= 0.000000E+00 WEIGHT= 0.000000D+00 (backbone-rotamer corr) +EDIHC= 0.000000E+00 (dihedral angle constraints) +ESS= -0.000000E+00 (disulfide-bridge intrinsic energy) +UCONST= 0.000000E+00 (Constraint energy) +ETOT= 6.386200E+01 (total) + + nondefault values.... + + rdfcmx.... v(25) = 0.2000000D+01 + afctol.... v(31) = 0.1000000D-01 + rfctol.... v(32) = 0.1000000D-03 + xftol..... v(34) = 0.1387779D-16 + lmax0..... v(35) = 0.1000000D+00 + + i initial x(i) d(i) + + 1 0.123300D+01 0.100D+00 + 2 -0.126400D+01 0.100D+00 + 3 0.343300D+01 0.100D+00 + 4 0.368500D+01 0.100D+00 + 5 0.867000D+00 0.100D+00 + 6 -0.834000D+00 0.100D+00 + 7 0.123300D+01 0.100D+00 + 8 -0.126400D+01 0.100D+00 + 9 0.343300D+01 0.100D+00 + 10 -0.216700D+01 0.100D+00 + 11 -0.318700D+01 0.100D+00 + 12 -0.368000D+00 0.100D+00 + 13 0.173500D+01 0.100D+00 + 14 -0.718000D+00 0.100D+00 + 15 -0.335600D+01 0.100D+00 + 16 0.340600D+01 0.100D+00 + 17 0.536000D+00 0.100D+00 + 18 0.175000D+01 0.100D+00 + 19 -0.925000D+00 0.100D+00 + 20 -0.230100D+01 0.100D+00 + 21 0.295600D+01 0.100D+00 + 22 -0.138300D+01 0.100D+00 + 23 -0.285900D+01 0.100D+00 + 24 -0.223200D+01 0.100D+00 + 25 0.349000D+01 0.100D+00 + 26 -0.225000D+00 0.100D+00 + 27 -0.163600D+01 0.100D+00 + 28 0.159400D+01 0.100D+00 + 29 -0.602000D+00 0.100D+00 + 30 0.349800D+01 0.100D+00 + 31 0.566000D+00 0.100D+00 + 32 0.365100D+01 0.100D+00 + 33 0.113000D+01 0.100D+00 + 34 0.370700D+01 0.100D+00 + 35 0.434000D+00 0.100D+00 + 36 0.108300D+01 0.100D+00 + 37 0.716000D+00 0.100D+00 + 38 -0.364600D+01 0.100D+00 + 39 -0.110200D+01 0.100D+00 + 40 -0.660000D+00 0.100D+00 + 41 0.864000D+00 0.100D+00 + 42 -0.371900D+01 0.100D+00 + 43 0.306200D+01 0.100D+00 + 44 0.219900D+01 0.100D+00 + 45 -0.855000D+00 0.100D+00 + 46 -0.216200D+01 0.100D+00 + 47 0.320000D+01 0.100D+00 + 48 -0.184000D+00 0.100D+00 + 49 -0.507000D+00 0.100D+00 + 50 0.300400D+01 0.100D+00 + 51 0.239900D+01 0.100D+00 + 52 -0.349500D+01 0.100D+00 + 53 0.943000D+00 0.100D+00 + 54 0.134100D+01 0.100D+00 + 55 -0.210200D+01 0.100D+00 + 56 0.251200D+01 0.100D+00 + 57 -0.203900D+01 0.100D+00 + 58 -0.333000D+00 0.100D+00 + 59 0.348400D+01 0.100D+00 + 60 0.163800D+01 0.100D+00 + 61 -0.210200D+01 0.100D+00 + 62 0.251200D+01 0.100D+00 + 63 -0.203900D+01 0.100D+00 + 64 -0.179900D+01 0.100D+00 + 65 0.184000D-01 0.100D+00 + 66 -0.819000D+00 0.100D+00 + 67 0.304600D+00 0.100D+00 + 68 0.208860D+01 0.100D+00 + 69 0.602200D+00 0.100D+00 + 70 0.173089D+01 0.100D+00 + 71 0.405000D+00 0.100D+00 + 72 0.281567D+01 0.100D+00 + 73 -0.162660D+01 0.100D+00 + 74 0.796000D-01 0.100D+00 + 75 0.460800D+00 0.100D+00 + 76 -0.967167D+00 0.100D+00 + 77 -0.283167D+00 0.100D+00 + 78 -0.211000D+01 0.100D+00 + 79 0.244291D+01 0.100D+00 + 80 0.107064D+01 0.100D+00 + 81 0.244318D+01 0.100D+00 + 82 -0.603000D+00 0.100D+00 + 83 0.834800D+00 0.100D+00 + 84 0.183640D+01 0.100D+00 + 85 -0.795500D+00 0.100D+00 + 86 0.263500D+00 0.100D+00 + 87 -0.287700D+01 0.100D+00 + 88 0.187200D+00 0.100D+00 + 89 0.890600D+00 0.100D+00 + 90 -0.177060D+01 0.100D+00 + 91 -0.609250D+00 0.100D+00 + 92 0.161250D+00 0.100D+00 + 93 0.125200D+01 0.100D+00 + 94 -0.292333D+00 0.100D+00 + 95 -0.759000D+00 0.100D+00 + 96 0.971333D+00 0.100D+00 + 97 -0.114433D+01 0.100D+00 + 98 -0.353333D-01 0.100D+00 + 99 -0.531000D+00 0.100D+00 + 100 -0.206375D+01 0.100D+00 + 101 -0.190975D+01 0.100D+00 + 102 -0.193150D+01 0.100D+00 + 103 0.676250D+00 0.100D+00 + 104 0.653500D+00 0.100D+00 + 105 -0.103325D+01 0.100D+00 + 106 0.738000D+00 0.100D+00 + 107 0.175250D+00 0.100D+00 + 108 0.117025D+01 0.100D+00 + 109 -0.827500D+00 0.100D+00 + 110 -0.112200D+01 0.100D+00 + 111 -0.775000D-01 0.100D+00 + 112 0.298750D+00 0.100D+00 + 113 0.608500D+00 0.100D+00 + 114 0.203250D+00 0.100D+00 + + it nf f reldf preldf reldx stppar d*step npreldf + + 0 1 0.639D+02 + 2 6 0.278D+01 0.94D+00 0.12D+01 0.4D-01 0.4D+01 0.4D-01 0.34D+05 + 4 8 -0.582D+01 0.64D+00 0.34D+01 0.2D-01 0.2D+01 0.4D-01 0.87D+04 + 6 11 -0.127D+02 0.69D-01 0.24D+00 0.8D-02 0.2D+01 0.2D-01 0.19D+04 + 8 13 -0.175D+02 0.11D+00 0.14D+00 0.1D-01 0.2D+01 0.2D-01 0.59D+03 + 10 15 -0.194D+02 0.73D-01 0.18D+00 0.1D-01 0.2D+01 0.2D-01 0.94D+03 + 12 17 -0.221D+02 0.63D-01 0.11D+00 0.7D-02 0.2D+01 0.2D-01 0.29D+03 + 14 20 -0.235D+02 0.31D-01 0.35D-01 0.3D-02 0.2D+01 0.8D-02 0.15D+03 + 16 22 -0.249D+02 0.35D-01 0.51D-01 0.7D-02 0.2D+01 0.2D-01 0.12D+03 + 18 24 -0.263D+02 0.49D-01 0.57D-01 0.6D-02 0.2D+01 0.8D-02 0.17D+03 + 20 26 -0.273D+02 0.20D-01 0.21D-01 0.4D-02 0.2D+01 0.8D-02 0.82D+02 + 22 28 -0.290D+02 0.31D-01 0.43D-01 0.6D-02 0.2D+01 0.2D-01 0.13D+03 + 24 31 -0.299D+02 0.15D-01 0.24D-01 0.4D-02 0.2D+01 0.7D-02 0.15D+03 + 26 33 -0.306D+02 0.13D-01 0.18D-01 0.3D-02 0.2D+01 0.7D-02 0.10D+03 + 28 35 -0.313D+02 0.16D-01 0.18D-01 0.3D-02 0.2D+01 0.7D-02 0.92D+02 + 30 37 -0.320D+02 0.16D-01 0.17D-01 0.3D-02 0.2D+01 0.7D-02 0.84D+02 + 32 39 -0.326D+02 0.16D-01 0.17D-01 0.3D-02 0.2D+01 0.7D-02 0.91D+02 + 34 41 -0.332D+02 0.15D-01 0.16D-01 0.3D-02 0.2D+01 0.7D-02 0.87D+02 + 36 43 -0.338D+02 0.13D-01 0.14D-01 0.2D-02 0.2D+01 0.7D-02 0.79D+02 + 38 45 -0.343D+02 0.11D-01 0.12D-01 0.3D-02 0.2D+01 0.7D-02 0.68D+02 + 40 47 -0.348D+02 0.98D-02 0.10D-01 0.3D-02 0.2D+01 0.7D-02 0.57D+02 + 42 49 -0.358D+02 0.15D-01 0.18D-01 0.5D-02 0.2D+01 0.1D-01 0.90D+02 + 44 51 -0.363D+02 0.13D-01 0.16D-01 0.3D-02 0.2D+01 0.7D-02 0.48D+02 + 46 53 -0.368D+02 0.95D-02 0.10D-01 0.2D-02 0.2D+01 0.7D-02 0.41D+02 + 48 55 -0.373D+02 0.66D-02 0.71D-02 0.3D-02 0.2D+01 0.7D-02 0.48D+02 + 50 57 -0.377D+02 0.68D-02 0.71D-02 0.2D-02 0.2D+01 0.7D-02 0.43D+02 + 52 61 -0.386D+02 0.19D-01 0.25D-01 0.1D-01 0.2D+01 0.3D-01 0.48D+02 + 54 63 -0.394D+02 0.96D-03 0.50D-01 0.1D-01 0.2D+01 0.3D-01 0.11D+03 + 56 65 -0.411D+02 0.15D-01 0.28D-01 0.6D-02 0.2D+01 0.1D-01 0.39D+02 + 58 67 -0.422D+02 0.10D-01 0.14D-01 0.6D-02 0.2D+01 0.1D-01 0.54D+02 + 60 69 -0.432D+02 0.11D-01 0.14D-01 0.5D-02 0.2D+01 0.1D-01 0.70D+02 + 62 73 -0.451D+02 0.14D-01 0.69D-01 0.2D-01 0.2D+01 0.5D-01 0.11D+03 + 64 76 -0.468D+02 0.16D-01 0.58D-01 0.1D-01 0.2D+01 0.2D-01 0.68D+02 + 66 78 -0.478D+02 0.67D-02 0.35D-01 0.9D-02 0.2D+01 0.2D-01 0.46D+02 + 68 80 -0.487D+02 0.11D-01 0.42D-01 0.8D-02 0.2D+01 0.2D-01 0.38D+02 + 70 82 -0.491D+02 0.31D-03 0.43D-01 0.9D-02 0.2D+01 0.2D-01 0.45D+02 + 72 84 -0.505D+02 0.97D-02 0.22D-01 0.6D-02 0.2D+01 0.1D-01 0.42D+02 + 74 86 -0.511D+02 0.55D-02 0.92D-02 0.5D-02 0.2D+01 0.1D-01 0.18D+02 + 76 88 -0.514D+02 0.49D-02 0.10D-01 0.4D-02 0.2D+01 0.1D-01 0.95D+01 + 78 90 -0.518D+02 0.23D-02 0.86D-02 0.5D-02 0.2D+01 0.1D-01 0.11D+02 + 80 92 -0.522D+02 0.32D-02 0.92D-02 0.4D-02 0.2D+01 0.1D-01 0.12D+02 + 82 94 -0.526D+02 0.47D-02 0.94D-02 0.5D-02 0.2D+01 0.1D-01 0.12D+02 + 84 96 -0.527D+02 0.29D-02 0.79D-02 0.4D-02 0.2D+01 0.6D-02 0.65D+01 + 86 98 -0.530D+02 0.27D-02 0.39D-02 0.2D-02 0.2D+01 0.6D-02 0.68D+01 + 88 100 -0.532D+02 0.27D-02 0.35D-02 0.2D-02 0.2D+01 0.6D-02 0.55D+01 + 90 102 -0.534D+02 0.21D-02 0.29D-02 0.2D-02 0.2D+01 0.6D-02 0.40D+01 + 92 104 -0.536D+02 0.15D-02 0.24D-02 0.3D-02 0.2D+01 0.6D-02 0.42D+01 + 94 106 -0.537D+02 0.15D-02 0.23D-02 0.3D-02 0.2D+01 0.6D-02 0.45D+01 + 96 108 -0.539D+02 0.19D-02 0.26D-02 0.2D-02 0.2D+01 0.6D-02 0.38D+01 + 98 110 -0.540D+02 0.19D-02 0.26D-02 0.2D-02 0.2D+01 0.6D-02 0.32D+01 + 100 112 -0.541D+02 0.11D-02 0.23D-02 0.3D-02 0.2D+01 0.6D-02 0.34D+01 + 102 114 -0.543D+02 0.12D-02 0.23D-02 0.3D-02 0.2D+01 0.6D-02 0.35D+01 + 104 116 -0.544D+02 0.15D-02 0.25D-02 0.3D-02 0.2D+01 0.6D-02 0.24D+01 + 106 118 -0.545D+02 0.95D-03 0.17D-02 0.3D-02 0.2D+01 0.6D-02 0.18D+01 + 108 120 -0.547D+02 0.13D-02 0.19D-02 0.3D-02 0.2D+01 0.6D-02 0.20D+01 + 110 122 -0.548D+02 0.97D-03 0.19D-02 0.3D-02 0.2D+01 0.6D-02 0.16D+01 + 112 124 -0.548D+02 0.67D-03 0.20D-02 0.2D-02 0.2D+01 0.6D-02 0.16D+01 + 114 126 -0.549D+02 0.55D-03 0.22D-02 0.2D-02 0.2D+01 0.6D-02 0.18D+01 + 116 128 -0.550D+02 0.10D-02 0.17D-02 0.2D-02 0.2D+01 0.6D-02 0.13D+01 + 118 132 -0.551D+02 0.99D-04 0.17D-03 0.4D-03 0.2D+01 0.8D-03 0.13D+01 + 120 134 -0.551D+02 0.25D-03 0.28D-03 0.8D-03 0.2D+01 0.2D-02 0.88D+00 + 122 136 -0.551D+02 0.41D-03 0.51D-03 0.1D-02 0.2D+01 0.3D-02 0.47D+00 + 124 138 -0.552D+02 0.40D-03 0.69D-03 0.1D-02 0.2D+01 0.3D-02 0.43D+00 + 126 140 -0.552D+02 0.43D-03 0.68D-03 0.1D-02 0.2D+01 0.3D-02 0.42D+00 + 128 142 -0.552D+02 0.26D-03 0.59D-03 0.1D-02 0.2D+01 0.3D-02 0.41D+00 + 130 144 -0.553D+02 0.23D-03 0.61D-03 0.1D-02 0.2D+01 0.3D-02 0.47D+00 + 132 146 -0.553D+02 0.39D-03 0.68D-03 0.1D-02 0.2D+01 0.3D-02 0.39D+00 + 134 148 -0.553D+02 0.32D-03 0.55D-03 0.1D-02 0.2D+01 0.3D-02 0.36D+00 + 136 150 -0.554D+02 0.30D-03 0.57D-03 0.1D-02 0.2D+01 0.3D-02 0.30D+00 + 138 152 -0.554D+02 0.21D-03 0.50D-03 0.1D-02 0.2D+01 0.3D-02 0.34D+00 + 140 154 -0.554D+02 0.29D-03 0.55D-03 0.1D-02 0.2D+01 0.3D-02 0.40D+00 + 142 156 -0.555D+02 0.28D-03 0.50D-03 0.1D-02 0.2D+01 0.3D-02 0.30D+00 + 144 158 -0.555D+02 0.25D-03 0.49D-03 0.1D-02 0.2D+01 0.3D-02 0.27D+00 + 146 160 -0.555D+02 0.20D-03 0.47D-03 0.1D-02 0.2D+01 0.3D-02 0.30D+00 + 148 162 -0.556D+02 0.24D-03 0.47D-03 0.1D-02 0.2D+01 0.3D-02 0.28D+00 + 150 164 -0.556D+02 0.25D-03 0.46D-03 0.1D-02 0.2D+01 0.3D-02 0.25D+00 + 152 166 -0.556D+02 0.25D-03 0.44D-03 0.1D-02 0.2D+01 0.3D-02 0.26D+00 + 154 168 -0.556D+02 0.26D-03 0.45D-03 0.1D-02 0.2D+01 0.3D-02 0.26D+00 + 156 170 -0.557D+02 0.19D-03 0.41D-03 0.1D-02 0.2D+01 0.3D-02 0.24D+00 + 158 172 -0.557D+02 0.22D-03 0.42D-03 0.2D-02 0.2D+01 0.3D-02 0.26D+00 + 160 174 -0.557D+02 0.23D-03 0.40D-03 0.1D-02 0.2D+01 0.3D-02 0.26D+00 + 162 176 -0.558D+02 0.24D-03 0.39D-03 0.1D-02 0.2D+01 0.3D-02 0.25D+00 + 164 178 -0.558D+02 0.23D-03 0.40D-03 0.1D-02 0.2D+01 0.3D-02 0.21D+00 + 166 180 -0.558D+02 0.25D-03 0.38D-03 0.2D-02 0.2D+01 0.3D-02 0.22D+00 + 168 182 -0.559D+02 0.28D-03 0.38D-03 0.1D-02 0.2D+01 0.3D-02 0.27D+00 + 170 184 -0.559D+02 0.28D-03 0.36D-03 0.2D-02 0.2D+01 0.3D-02 0.32D+00 + 172 186 -0.559D+02 0.32D-03 0.38D-03 0.1D-02 0.2D+01 0.3D-02 0.43D+00 + 174 191 -0.562D+02 0.32D-02 0.41D-02 0.1D-01 0.2D+01 0.3D-01 0.40D+01 + 176 195 -0.563D+02 0.23D-03 0.83D-03 0.2D-02 0.2D+01 0.2D-02 0.21D+01 + 178 197 -0.563D+02 0.30D-03 0.35D-03 0.7D-03 0.2D+01 0.2D-02 0.80D+00 + 180 199 -0.564D+02 0.30D-03 0.90D-03 0.3D-02 0.2D+01 0.7D-02 0.24D+00 + 182 201 -0.564D+02 0.60D-03 0.11D-02 0.4D-02 0.2D+01 0.7D-02 0.30D+00 + 184 203 -0.564D+02 0.40D-03 0.75D-03 0.2D-02 0.2D+01 0.4D-02 0.21D+00 + 186 205 -0.565D+02 0.18D-03 0.30D-03 0.2D-02 0.2D+01 0.4D-02 0.11D+00 + 188 207 -0.565D+02 0.18D-03 0.26D-03 0.2D-02 0.2D+01 0.4D-02 0.14D+00 + 190 209 -0.565D+02 0.16D-03 0.28D-03 0.2D-02 0.2D+01 0.4D-02 0.10D+00 + 192 211 -0.565D+02 0.12D-03 0.25D-03 0.2D-02 0.2D+01 0.4D-02 0.90D-01 + 194 213 -0.565D+02 0.15D-03 0.26D-03 0.2D-02 0.2D+01 0.4D-02 0.10D+00 + 196 215 -0.565D+02 0.12D-03 0.26D-03 0.2D-02 0.2D+01 0.4D-02 0.99D-01 + 198 217 -0.566D+02 0.13D-03 0.24D-03 0.2D-02 0.2D+01 0.4D-02 0.11D+00 + 200 219 -0.566D+02 0.15D-03 0.24D-03 0.2D-02 0.2D+01 0.4D-02 0.67D-01 + 202 221 -0.566D+02 0.13D-03 0.26D-03 0.2D-02 0.2D+01 0.4D-02 0.95D-01 + 204 223 -0.566D+02 0.13D-03 0.22D-03 0.2D-02 0.2D+01 0.4D-02 0.85D-01 + 206 225 -0.566D+02 0.13D-03 0.24D-03 0.2D-02 0.2D+01 0.4D-02 0.74D-01 + 208 227 -0.566D+02 0.11D-03 0.22D-03 0.2D-02 0.2D+01 0.4D-02 0.78D-01 + 210 229 -0.566D+02 0.13D-03 0.21D-03 0.2D-02 0.2D+01 0.4D-02 0.63D-01 + 212 231 -0.567D+02 0.12D-03 0.18D-03 0.2D-02 0.2D+01 0.4D-02 0.54D-01 + 214 233 -0.567D+02 0.10D-03 0.17D-03 0.2D-02 0.2D+01 0.4D-02 0.64D-01 + 216 235 -0.567D+02 0.10D-03 0.18D-03 0.1D-02 0.2D+01 0.4D-02 0.51D-01 + 218 237 -0.567D+02 0.13D-03 0.19D-03 0.2D-02 0.2D+01 0.4D-02 0.45D-01 + 220 239 -0.567D+02 0.93D-04 0.19D-03 0.2D-02 0.2D+01 0.4D-02 0.54D-01 + 222 241 -0.567D+02 0.10D-03 0.18D-03 0.1D-02 0.2D+01 0.4D-02 0.42D-01 + 224 243 -0.567D+02 0.81D-04 0.16D-03 0.1D-02 0.2D+01 0.4D-02 0.42D-01 + 226 245 -0.567D+02 0.89D-04 0.16D-03 0.1D-02 0.2D+01 0.4D-02 0.32D-01 + 228 247 -0.567D+02 0.73D-04 0.16D-03 0.1D-02 0.2D+01 0.4D-02 0.28D-01 + 230 249 -0.568D+02 0.73D-04 0.13D-03 0.1D-02 0.2D+01 0.4D-02 0.27D-01 + 232 251 -0.568D+02 0.81D-04 0.17D-03 0.1D-02 0.2D+01 0.4D-02 0.33D-01 + 234 253 -0.568D+02 0.63D-04 0.14D-03 0.1D-02 0.2D+01 0.4D-02 0.23D-01 + 236 255 -0.568D+02 0.85D-04 0.16D-03 0.1D-02 0.2D+01 0.4D-02 0.29D-01 + 238 257 -0.568D+02 0.72D-04 0.13D-03 0.1D-02 0.2D+01 0.4D-02 0.23D-01 + 240 259 -0.568D+02 0.60D-04 0.14D-03 0.1D-02 0.2D+01 0.4D-02 0.22D-01 + 242 261 -0.568D+02 0.47D-04 0.15D-03 0.1D-02 0.2D+01 0.4D-02 0.24D-01 + 244 263 -0.568D+02 0.71D-04 0.16D-03 0.1D-02 0.2D+01 0.4D-02 0.24D-01 + 246 268 -0.568D+02 0.26D-04 0.59D-04 0.2D-03 0.3D+01 0.4D-03 0.22D-01 + 248 270 -0.568D+02 0.21D-04 0.26D-04 0.2D-03 0.2D+01 0.7D-03 0.17D-01 + 250 272 -0.568D+02 0.28D-04 0.32D-04 0.5D-03 0.2D+01 0.1D-02 0.86D-02 + 252 274 -0.568D+02 0.26D-04 0.35D-04 0.6D-03 0.2D+01 0.1D-02 0.10D-01 + 254 276 -0.568D+02 0.25D-04 0.33D-04 0.5D-03 0.2D+01 0.1D-02 0.11D-01 + 256 278 -0.568D+02 0.27D-04 0.34D-04 0.5D-03 0.2D+01 0.1D-02 0.13D-01 + 258 280 -0.568D+02 0.25D-04 0.33D-04 0.5D-03 0.2D+01 0.1D-02 0.11D-01 + 260 282 -0.568D+02 0.26D-04 0.33D-04 0.5D-03 0.2D+01 0.1D-02 0.10D-01 + 262 284 -0.568D+02 0.25D-04 0.32D-04 0.5D-03 0.2D+01 0.1D-02 0.11D-01 + 264 286 -0.568D+02 0.28D-04 0.33D-04 0.5D-03 0.2D+01 0.1D-02 0.10D-01 + 266 288 -0.568D+02 0.24D-04 0.29D-04 0.7D-03 0.2D+01 0.1D-02 0.11D-01 + 268 290 -0.568D+02 0.26D-04 0.32D-04 0.6D-03 0.2D+01 0.1D-02 0.11D-01 + 270 292 -0.568D+02 0.23D-04 0.31D-04 0.6D-03 0.2D+01 0.1D-02 0.93D-02 + 272 294 -0.568D+02 0.24D-04 0.30D-04 0.6D-03 0.2D+01 0.1D-02 0.10D-01 + 274 296 -0.569D+02 0.26D-04 0.30D-04 0.6D-03 0.2D+01 0.1D-02 0.11D-01 + 276 298 -0.569D+02 0.25D-04 0.30D-04 0.5D-03 0.2D+01 0.1D-02 0.11D-01 + 278 302 -0.569D+02 0.72D-04 0.10D-03 0.2D-02 0.2D+01 0.6D-02 0.10D-01 + 280 304 -0.569D+02 0.11D-03 0.16D-03 0.2D-02 0.2D+01 0.6D-02 0.36D-01 + 282 306 -0.569D+02 0.70D-04 0.15D-03 0.2D-02 0.2D+01 0.6D-02 0.29D-01 + 284 308 -0.569D+02 0.10D-03 0.15D-03 0.3D-02 0.2D+01 0.6D-02 0.35D-01 + 286 310 -0.569D+02 0.13D-03 0.15D-03 0.2D-02 0.2D+01 0.6D-02 0.46D-01 + 288 314 -0.569D+02 0.41D-03 0.52D-03 0.9D-02 0.2D+01 0.2D-01 0.64D-01 + 290 317 -0.571D+02 0.14D-02 0.16D-02 0.2D-01 0.2D+01 0.5D-01 0.68D+00 + 292 321 -0.571D+02 0.28D-03 0.17D-02 0.2D-02 0.3D+01 0.2D-02 0.39D+00 + 294 323 -0.572D+02 0.29D-03 0.38D-03 0.9D-03 0.2D+01 0.2D-02 0.14D+00 + 296 325 -0.572D+02 0.16D-03 0.21D-03 0.1D-02 0.2D+01 0.2D-02 0.36D-01 + 298 327 -0.572D+02 0.11D-03 0.23D-03 0.2D-02 0.2D+01 0.5D-02 0.20D-01 + 300 329 -0.572D+02 0.11D-03 0.41D-03 0.2D-02 0.2D+01 0.5D-02 0.46D-01 + 302 334 -0.572D+02 0.66D-04 0.11D-03 0.3D-03 0.3D+01 0.5D-03 0.29D-01 + 304 336 -0.572D+02 0.39D-04 0.48D-04 0.3D-03 0.2D+01 0.5D-03 0.24D-01 + 306 338 -0.572D+02 0.30D-04 0.35D-04 0.3D-03 0.2D+01 0.9D-03 0.13D-01 + 308 340 -0.572D+02 0.51D-04 0.76D-04 0.2D-02 0.2D+01 0.4D-02 0.67D-02 + 310 342 -0.572D+02 0.25D-04 0.18D-03 0.2D-02 0.2D+01 0.4D-02 0.20D-01 + 312 344 -0.573D+02 0.25D-04 0.17D-03 0.1D-02 0.2D+01 0.4D-02 0.16D-01 + 314 346 -0.573D+02 0.20D-04 0.18D-03 0.2D-02 0.2D+01 0.4D-02 0.22D-01 + 316 348 -0.573D+02 0.55D-04 0.18D-03 0.2D-02 0.2D+01 0.4D-02 0.18D-01 + 318 350 -0.573D+02 0.78D-04 0.17D-03 0.1D-02 0.2D+01 0.4D-02 0.14D-01 + 320 352 -0.573D+02 0.49D-04 0.12D-03 0.2D-02 0.2D+01 0.4D-02 0.13D-01 + 322 354 -0.573D+02 0.83D-04 0.12D-03 0.2D-02 0.2D+01 0.4D-02 0.14D-01 + 324 356 -0.573D+02 0.72D-04 0.11D-03 0.2D-02 0.2D+01 0.4D-02 0.14D-01 + 326 358 -0.573D+02 0.68D-04 0.11D-03 0.2D-02 0.2D+01 0.4D-02 0.16D-01 + 328 360 -0.573D+02 0.77D-04 0.11D-03 0.2D-02 0.2D+01 0.4D-02 0.19D-01 + 330 362 -0.573D+02 0.78D-04 0.12D-03 0.2D-02 0.2D+01 0.4D-02 0.23D-01 + 332 364 -0.573D+02 0.88D-04 0.12D-03 0.2D-02 0.2D+01 0.4D-02 0.23D-01 + 334 366 -0.573D+02 0.83D-04 0.10D-03 0.2D-02 0.2D+01 0.4D-02 0.28D-01 + 336 370 -0.574D+02 0.35D-03 0.56D-03 0.9D-02 0.2D+01 0.1D-01 0.70D-01 + 338 372 -0.574D+02 0.47D-03 0.76D-03 0.9D-02 0.2D+01 0.1D-01 0.78D-01 + 340 374 -0.575D+02 0.43D-03 0.73D-03 0.1D-01 0.2D+01 0.1D-01 0.84D-01 + 342 377 -0.575D+02 0.25D-03 0.73D-03 0.4D-02 0.2D+01 0.7D-02 0.73D-01 + 344 379 -0.576D+02 0.26D-03 0.50D-03 0.4D-02 0.2D+01 0.7D-02 0.51D-01 + 346 381 -0.576D+02 0.27D-03 0.39D-03 0.4D-02 0.2D+01 0.7D-02 0.88D-01 + 348 383 -0.576D+02 0.29D-03 0.43D-03 0.5D-02 0.2D+01 0.7D-02 0.34D-01 + 350 385 -0.576D+02 0.10D-03 0.53D-03 0.4D-02 0.2D+01 0.7D-02 0.34D-01 + 352 387 -0.577D+02 0.31D-03 0.57D-03 0.4D-02 0.2D+01 0.7D-02 0.43D-01 + 354 389 -0.577D+02 0.23D-03 0.53D-03 0.4D-02 0.2D+01 0.7D-02 0.33D-01 + 356 391 -0.577D+02 0.75D-04 0.42D-03 0.3D-02 0.2D+01 0.7D-02 0.25D-01 + 358 393 -0.577D+02 0.27D-03 0.60D-03 0.3D-02 0.2D+01 0.7D-02 0.34D-01 + 360 395 -0.578D+02 0.20D-03 0.51D-03 0.4D-02 0.2D+01 0.7D-02 0.20D-01 + 362 398 -0.578D+02 0.21D-04 0.29D-03 0.1D-02 0.2D+01 0.3D-02 0.20D-01 + 364 400 -0.578D+02 0.78D-04 0.98D-04 0.8D-03 0.2D+01 0.2D-02 0.21D-01 + 366 402 -0.578D+02 0.58D-04 0.67D-04 0.1D-02 0.2D+01 0.2D-02 0.90D-02 + 368 404 -0.578D+02 0.52D-04 0.62D-04 0.1D-02 0.2D+01 0.2D-02 0.84D-02 + 370 406 -0.578D+02 0.47D-04 0.57D-04 0.1D-02 0.2D+01 0.2D-02 0.79D-02 + 372 408 -0.578D+02 0.69D-04 0.93D-04 0.2D-02 0.2D+01 0.3D-02 0.70D-02 + 374 410 -0.578D+02 0.69D-04 0.11D-03 0.2D-02 0.2D+01 0.3D-02 0.12D-01 + 376 412 -0.578D+02 0.71D-04 0.11D-03 0.2D-02 0.2D+01 0.3D-02 0.83D-02 + 378 414 -0.578D+02 0.61D-04 0.10D-03 0.2D-02 0.2D+01 0.3D-02 0.74D-02 + 380 416 -0.578D+02 0.79D-04 0.11D-03 0.2D-02 0.2D+01 0.3D-02 0.79D-02 + 382 418 -0.579D+02 0.65D-04 0.11D-03 0.2D-02 0.2D+01 0.3D-02 0.72D-02 + 384 420 -0.579D+02 0.55D-04 0.99D-04 0.2D-02 0.2D+01 0.3D-02 0.69D-02 + 386 422 -0.579D+02 0.78D-04 0.10D-03 0.2D-02 0.2D+01 0.3D-02 0.76D-02 + 388 424 -0.579D+02 0.59D-04 0.86D-04 0.2D-02 0.2D+01 0.3D-02 0.58D-02 + 390 426 -0.579D+02 0.57D-04 0.86D-04 0.2D-02 0.2D+01 0.3D-02 0.70D-02 + 392 428 -0.579D+02 0.62D-04 0.81D-04 0.2D-02 0.2D+01 0.3D-02 0.73D-02 + 394 430 -0.579D+02 0.53D-04 0.86D-04 0.2D-02 0.2D+01 0.3D-02 0.83D-02 + 396 432 -0.579D+02 0.58D-04 0.84D-04 0.2D-02 0.2D+01 0.3D-02 0.66D-02 + 398 434 -0.579D+02 0.54D-04 0.71D-04 0.2D-02 0.2D+01 0.3D-02 0.62D-02 + 400 436 -0.579D+02 0.51D-04 0.72D-04 0.2D-02 0.2D+01 0.3D-02 0.72D-02 + 402 438 -0.579D+02 0.58D-04 0.72D-04 0.2D-02 0.2D+01 0.3D-02 0.71D-02 + 404 440 -0.579D+02 0.55D-04 0.68D-04 0.2D-02 0.2D+01 0.3D-02 0.68D-02 + 406 443 -0.579D+02 0.91D-04 0.11D-03 0.5D-02 0.2D+01 0.7D-02 0.72D-02 + 408 445 -0.579D+02 0.12D-03 0.16D-03 0.5D-02 0.2D+01 0.7D-02 0.16D-01 + 410 447 -0.580D+02 0.10D-03 0.13D-03 0.5D-02 0.2D+01 0.7D-02 0.10D-01 + 412 449 -0.580D+02 0.10D-03 0.13D-03 0.5D-02 0.2D+01 0.7D-02 0.15D-01 + 414 451 -0.580D+02 0.11D-03 0.14D-03 0.5D-02 0.2D+01 0.7D-02 0.15D-01 + 416 453 -0.580D+02 0.11D-03 0.13D-03 0.5D-02 0.2D+01 0.7D-02 0.16D-01 + 418 455 -0.580D+02 0.12D-03 0.14D-03 0.5D-02 0.2D+01 0.7D-02 0.20D-01 + 420 458 -0.580D+02 0.21D-03 0.29D-03 0.9D-02 0.2D+01 0.1D-01 0.27D-01 + 422 460 -0.581D+02 0.25D-03 0.32D-03 0.8D-02 0.2D+01 0.1D-01 0.23D-01 + 424 462 -0.581D+02 0.15D-03 0.42D-03 0.7D-02 0.2D+01 0.1D-01 0.64D-01 + 426 466 -0.581D+02 0.71D-04 0.14D-03 0.3D-03 0.2D+02 0.5D-03 0.81D-01 + 428 468 -0.581D+02 0.57D-04 0.60D-04 0.2D-03 0.2D+01 0.5D-03 0.10D+00 + 430 474 -0.582D+02 0.68D-03 0.13D-02 0.2D-01 0.2D+01 0.3D-01 0.11D+00 + 432 478 -0.583D+02 0.31D-03 0.61D-03 0.8D-03 0.1D+02 0.9D-03 0.22D+00 + 434 480 -0.583D+02 0.12D-03 0.15D-03 0.6D-03 0.2D+01 0.9D-03 0.31D+00 + 436 482 -0.584D+02 0.16D-03 0.16D-03 0.8D-03 0.2D+01 0.2D-02 0.32D+00 + 438 489 -0.587D+02 0.24D-02 0.11D-01 0.3D-01 0.2D+01 0.6D-01 0.12D+00 + 440 493 -0.589D+02 0.16D-02 0.79D-02 0.3D-02 0.3D+01 0.6D-02 0.52D+00 + 442 495 -0.592D+02 0.17D-02 0.23D-02 0.2D-02 0.2D+01 0.6D-02 0.27D+00 + 444 497 -0.593D+02 0.59D-03 0.11D-02 0.3D-02 0.2D+01 0.6D-02 0.11D+00 + 446 499 -0.594D+02 0.49D-03 0.73D-03 0.2D-02 0.2D+01 0.6D-02 0.39D-01 + 448 501 -0.594D+02 0.25D-03 0.53D-03 0.2D-02 0.2D+01 0.6D-02 0.19D-01 + 450 503 -0.594D+02 0.12D-03 0.48D-03 0.3D-02 0.2D+01 0.6D-02 0.18D-01 + 452 506 -0.594D+02 0.83D-04 0.31D-03 0.1D-02 0.2D+01 0.3D-02 0.16D-01 + 454 508 -0.595D+02 0.85D-04 0.14D-03 0.1D-02 0.2D+01 0.3D-02 0.64D-02 + 456 510 -0.595D+02 0.49D-04 0.13D-03 0.1D-02 0.2D+01 0.3D-02 0.60D-02 + 458 512 -0.595D+02 0.53D-04 0.14D-03 0.1D-02 0.2D+01 0.3D-02 0.61D-02 + 460 514 -0.595D+02 0.51D-04 0.12D-03 0.2D-02 0.2D+01 0.3D-02 0.40D-02 + 462 516 -0.595D+02 0.32D-04 0.11D-03 0.1D-02 0.2D+01 0.3D-02 0.42D-02 + 464 518 -0.595D+02 0.52D-04 0.12D-03 0.9D-03 0.2D+01 0.3D-02 0.30D-02 + 466 520 -0.595D+02 0.39D-04 0.95D-04 0.1D-02 0.2D+01 0.3D-02 0.40D-02 + 468 522 -0.595D+02 0.52D-04 0.10D-03 0.1D-02 0.2D+01 0.3D-02 0.38D-02 + 470 524 -0.595D+02 0.12D-04 0.94D-04 0.1D-02 0.2D+01 0.3D-02 0.25D-02 + 472 526 -0.595D+02 0.43D-04 0.98D-04 0.2D-02 0.2D+01 0.3D-02 0.38D-02 + 474 528 -0.595D+02 0.29D-04 0.74D-04 0.1D-02 0.2D+01 0.3D-02 0.25D-02 + 476 530 -0.595D+02 0.54D-04 0.85D-04 0.1D-02 0.2D+01 0.3D-02 0.23D-02 + 478 532 -0.595D+02 0.44D-04 0.10D-03 0.1D-02 0.2D+01 0.3D-02 0.20D-02 + 480 534 -0.595D+02 0.34D-04 0.74D-04 0.1D-02 0.2D+01 0.3D-02 0.18D-02 + 482 536 -0.595D+02 0.52D-04 0.89D-04 0.1D-02 0.2D+01 0.3D-02 0.31D-02 + 484 538 -0.595D+02 0.12D-04 0.69D-04 0.1D-02 0.2D+01 0.3D-02 0.25D-02 + 486 540 -0.595D+02 0.37D-04 0.66D-04 0.1D-02 0.2D+01 0.3D-02 0.29D-02 + 488 542 -0.595D+02 0.42D-04 0.59D-04 0.2D-02 0.2D+01 0.3D-02 0.18D-02 + 490 544 -0.595D+02 0.31D-04 0.58D-04 0.1D-02 0.2D+01 0.3D-02 0.15D-02 + 492 546 -0.596D+02 0.29D-04 0.54D-04 0.2D-02 0.2D+01 0.3D-02 0.19D-02 + 494 548 -0.596D+02 0.31D-04 0.57D-04 0.1D-02 0.2D+01 0.3D-02 0.20D-02 + 496 550 -0.596D+02 0.41D-04 0.61D-04 0.2D-02 0.2D+01 0.3D-02 0.26D-02 + 498 552 -0.596D+02 0.31D-04 0.47D-04 0.2D-02 0.2D+01 0.3D-02 0.17D-02 + 500 554 -0.596D+02 0.32D-04 0.51D-04 0.2D-02 0.2D+01 0.3D-02 0.15D-02 + 502 556 -0.596D+02 0.38D-04 0.47D-04 0.2D-02 0.2D+01 0.3D-02 0.20D-02 + 504 558 -0.596D+02 0.30D-04 0.42D-04 0.2D-02 0.2D+01 0.3D-02 0.16D-02 + 506 560 -0.596D+02 0.35D-04 0.49D-04 0.2D-02 0.2D+01 0.3D-02 0.17D-02 + 508 562 -0.596D+02 0.33D-04 0.41D-04 0.2D-02 0.2D+01 0.3D-02 0.19D-02 + 510 564 -0.596D+02 0.32D-04 0.38D-04 0.2D-02 0.2D+01 0.3D-02 0.17D-02 + 512 566 -0.596D+02 0.34D-04 0.41D-04 0.2D-02 0.2D+01 0.3D-02 0.18D-02 + 514 568 -0.596D+02 0.29D-04 0.36D-04 0.2D-02 0.2D+01 0.3D-02 0.19D-02 + 516 570 -0.596D+02 0.54D-04 0.65D-04 0.4D-02 0.2D+01 0.6D-02 0.19D-02 + 518 572 -0.596D+02 0.77D-04 0.95D-04 0.4D-02 0.2D+01 0.6D-02 0.60D-02 + 520 575 -0.596D+02 0.96D-04 0.12D-03 0.8D-02 0.2D+01 0.1D-01 0.32D-02 + 522 577 -0.596D+02 0.16D-03 0.22D-03 0.9D-02 0.2D+01 0.1D-01 0.72D-02 + 524 579 -0.596D+02 0.15D-03 0.18D-03 0.1D-01 0.2D+01 0.1D-01 0.47D-02 + 526 581 -0.597D+02 0.13D-03 0.15D-03 0.9D-02 0.2D+01 0.1D-01 0.90D-02 + 528 584 -0.597D+02 0.28D-03 0.35D-03 0.2D-01 0.2D+01 0.2D-01 0.16D-01 + 530 586 -0.597D+02 0.21D-03 0.37D-03 0.2D-01 0.2D+01 0.2D-01 0.11D-01 + 532 588 -0.597D+02 0.54D-04 0.63D-03 0.2D-01 0.2D+01 0.2D-01 0.10D-01 + 534 590 -0.598D+02 0.22D-03 0.73D-03 0.8D-02 0.2D+01 0.1D-01 0.11D-01 + 536 595 -0.598D+02 0.28D-04 0.64D-04 0.3D-03 0.2D+01 0.6D-03 0.86D-02 + 538 597 -0.598D+02 0.24D-04 0.27D-04 0.2D-03 0.2D+01 0.6D-03 0.65D-02 + 540 599 -0.598D+02 0.47D-04 0.53D-04 0.1D-02 0.2D+01 0.2D-02 0.38D-02 + 542 601 -0.598D+02 0.59D-04 0.77D-04 0.2D-02 0.2D+01 0.5D-02 0.33D-02 + 544 603 -0.598D+02 0.57D-04 0.12D-03 0.2D-02 0.2D+01 0.5D-02 0.16D-02 + 546 605 -0.598D+02 0.55D-04 0.87D-04 0.3D-02 0.2D+01 0.5D-02 0.23D-02 + 548 607 -0.598D+02 0.40D-04 0.89D-04 0.3D-02 0.2D+01 0.5D-02 0.17D-02 + 550 609 -0.598D+02 0.32D-04 0.86D-04 0.1D-02 0.2D+01 0.5D-02 0.18D-02 + 552 611 -0.598D+02 0.34D-04 0.11D-03 0.2D-02 0.2D+01 0.5D-02 0.17D-02 + 554 613 -0.598D+02 0.40D-04 0.10D-03 0.2D-02 0.2D+01 0.5D-02 0.16D-02 + 556 615 -0.598D+02 0.33D-04 0.89D-04 0.2D-02 0.2D+01 0.5D-02 0.14D-02 + 558 617 -0.598D+02 0.34D-04 0.80D-04 0.2D-02 0.2D+01 0.5D-02 0.12D-02 + 560 619 -0.598D+02 0.15D-04 0.90D-04 0.2D-02 0.2D+01 0.5D-02 0.18D-02 + 562 621 -0.598D+02 0.30D-04 0.87D-04 0.2D-02 0.2D+01 0.5D-02 0.10D-02 + 564 626 -0.598D+02 0.62D-05 0.10D-04 0.1D-03 0.2D+01 0.2D-03 0.15D-02 + 566 628 -0.598D+02 0.61D-05 0.69D-05 0.2D-03 0.2D+01 0.5D-03 0.12D-02 + 568 632 -0.598D+02 0.36D-04 0.55D-04 0.4D-02 0.2D+01 0.7D-02 0.71D-03 + 570 634 -0.598D+02 0.34D-04 0.95D-04 0.4D-02 0.2D+01 0.7D-02 0.18D-02 + 572 636 -0.598D+02 0.56D-04 0.15D-03 0.4D-02 0.2D+01 0.7D-02 0.22D-02 + 574 638 -0.598D+02 0.60D-04 0.12D-03 0.4D-02 0.2D+01 0.7D-02 0.21D-02 + 576 640 -0.599D+02 0.80D-04 0.14D-03 0.3D-02 0.2D+01 0.7D-02 0.25D-02 + 578 642 -0.599D+02 0.90D-04 0.11D-03 0.3D-02 0.2D+01 0.7D-02 0.45D-02 + 580 648 -0.600D+02 0.11D-02 0.11D-02 0.2D-01 0.2D+01 0.6D-01 0.20D-01 + 582 655 -0.600D+02 0.18D-03 0.38D-03 0.7D-03 0.3D+01 0.1D-02 0.48D-01 + 584 657 -0.600D+02 0.15D-03 0.16D-03 0.7D-03 0.2D+01 0.2D-02 0.53D-01 + 586 664 -0.602D+02 0.85D-03 0.21D-02 0.1D-01 0.2D+01 0.2D-01 0.12D+00 + 588 666 -0.603D+02 0.98D-03 0.28D-02 0.1D-01 0.2D+01 0.2D-01 0.80D-01 + 590 670 -0.603D+02 0.34D-03 0.39D-03 0.7D-03 0.2D+01 0.2D-02 0.18D-01 + 592 672 -0.603D+02 0.19D-03 0.21D-03 0.2D-02 0.2D+01 0.3D-02 0.12D-01 + 594 674 -0.604D+02 0.20D-03 0.31D-03 0.2D-02 0.2D+01 0.7D-02 0.72D-02 + 596 676 -0.604D+02 0.12D-03 0.44D-03 0.3D-02 0.2D+01 0.7D-02 0.31D-02 + 598 678 -0.604D+02 0.21D-04 0.35D-03 0.4D-02 0.2D+01 0.7D-02 0.54D-02 + 600 680 -0.604D+02 0.10D-03 0.23D-03 0.2D-02 0.2D+01 0.3D-02 0.25D-02 + 602 682 -0.604D+02 0.24D-04 0.91D-04 0.2D-02 0.2D+01 0.3D-02 0.14D-02 + 604 684 -0.604D+02 0.44D-04 0.90D-04 0.2D-02 0.2D+01 0.3D-02 0.12D-02 + 606 686 -0.604D+02 0.81D-05 0.10D-03 0.2D-02 0.2D+01 0.3D-02 0.14D-02 + 608 688 -0.604D+02 0.24D-04 0.45D-04 0.8D-03 0.2D+01 0.2D-02 0.12D-02 + 610 690 -0.604D+02 0.16D-04 0.31D-04 0.7D-03 0.2D+01 0.2D-02 0.33D-03 + 612 692 -0.604D+02 0.11D-04 0.21D-04 0.8D-03 0.2D+01 0.2D-02 0.34D-03 + 614 694 -0.604D+02 0.68D-05 0.20D-04 0.8D-03 0.2D+01 0.2D-02 0.20D-03 + 616 696 -0.604D+02 0.11D-04 0.22D-04 0.1D-02 0.2D+01 0.2D-02 0.22D-03 + 618 698 -0.604D+02 0.32D-05 0.15D-04 0.8D-03 0.2D+01 0.2D-02 0.98D-04 + + ***** relative function convergence ***** + + function -0.604131D+02 reldx 0.802D-03 + func. evals 698 grad. evals 619 + preldf 0.154D-04 npreldf 0.983D-04 + + i final x(i) d(i) g(i) + + 1 0.188373D+01 0.100D+00 0.123D-02 + 2 0.240430D+01 0.100D+00 -0.139D-02 + 3 0.138713D+01 0.100D+00 0.744D-03 + 4 0.335754D+01 0.100D+00 0.145D-01 + 5 -0.165182D+01 0.100D+00 -0.324D-01 + 6 0.425980D+00 0.100D+00 0.167D-01 + 7 -0.815524D+00 0.100D+00 0.266D-01 + 8 0.187523D-01 0.100D+00 -0.242D-01 + 9 0.368976D+01 0.100D+00 0.269D-01 + 10 -0.232713D+01 0.100D+00 0.145D-01 + 11 -0.284726D+01 0.100D+00 0.174D-01 + 12 -0.826346D+00 0.100D+00 -0.454D-02 + 13 0.299499D+01 0.100D+00 0.510D-02 + 14 -0.189578D+01 0.100D+00 0.335D-01 + 15 -0.134388D+01 0.100D+00 -0.657D-02 + 16 0.203342D+01 0.100D+00 0.213D-01 + 17 0.132643D+01 0.100D+00 -0.132D-01 + 18 0.290960D+01 0.100D+00 -0.151D-01 + 19 -0.260725D+01 0.100D+00 0.382D-01 + 20 -0.148453D+01 0.100D+00 -0.112D-02 + 21 0.228742D+01 0.100D+00 -0.393D-01 + 22 0.716270D+00 0.100D+00 0.206D-01 + 23 -0.335973D+01 0.100D+00 0.182D-03 + 24 -0.149098D+01 0.100D+00 -0.265D-01 + 25 0.376558D+01 0.100D+00 -0.279D-01 + 26 0.596569D+00 0.100D+00 -0.708D-02 + 27 -0.121820D+00 0.100D+00 -0.382D-01 + 28 -0.127750D-01 0.100D+00 -0.558D-02 + 29 -0.885453D+00 0.100D+00 0.194D-01 + 30 0.368914D+01 0.100D+00 -0.400D-01 + 31 -0.192411D+01 0.100D+00 0.176D-01 + 32 0.311592D+01 0.100D+00 0.185D-01 + 33 0.116428D+01 0.100D+00 -0.245D-01 + 34 0.245046D+01 0.100D+00 0.411D-01 + 35 0.255961D+01 0.100D+00 0.441D-01 + 36 -0.134073D+01 0.100D+00 -0.333D-01 + 37 0.284647D+01 0.100D+00 0.181D-01 + 38 -0.255589D+01 0.100D+00 0.107D-01 + 39 0.407033D+00 0.100D+00 -0.212D-01 + 40 0.123357D+01 0.100D+00 0.239D-01 + 41 -0.419238D+00 0.100D+00 -0.885D-02 + 42 -0.357951D+01 0.100D+00 -0.724D-01 + 43 0.257396D+01 0.100D+00 0.757D-02 + 44 0.140306D+01 0.100D+00 0.101D-01 + 45 -0.243439D+01 0.100D+00 -0.206D-01 + 46 -0.163639D+01 0.100D+00 0.166D-01 + 47 0.335021D+01 0.100D+00 -0.496D-02 + 48 -0.843042D+00 0.100D+00 -0.174D-01 + 49 -0.359107D+00 0.100D+00 0.275D-01 + 50 0.344487D+01 0.100D+00 0.156D-01 + 51 0.159266D+01 0.100D+00 -0.817D-02 + 52 -0.194978D+01 0.100D+00 0.164D-01 + 53 -0.371528D+00 0.100D+00 -0.103D-01 + 54 0.328040D+01 0.100D+00 -0.490D-01 + 55 -0.249456D+01 0.100D+00 0.122D-01 + 56 0.283698D+01 0.100D+00 -0.223D-01 + 57 -0.738709D+00 0.100D+00 -0.206D-01 + 58 -0.160637D+01 0.100D+00 -0.238D-02 + 59 0.683506D-01 0.100D+00 0.959D-03 + 60 0.346234D+01 0.100D+00 -0.670D-02 + 61 0.241483D+01 0.100D+00 -0.166D-02 + 62 0.375349D+01 0.100D+00 -0.418D-04 + 63 0.251204D+01 0.100D+00 0.166D-02 + 64 -0.255238D+00 0.100D+00 0.448D-03 + 65 -0.257324D+00 0.100D+00 0.336D-01 + 66 0.197488D+01 0.100D+00 0.263D-02 + 67 0.194032D+01 0.100D+00 -0.492D-01 + 68 0.248945D+00 0.100D+00 -0.129D-01 + 69 0.727269D+00 0.100D+00 -0.272D-01 + 70 0.249017D+01 0.100D+00 0.154D-01 + 71 0.649905D+00 0.100D+00 0.145D-01 + 72 0.214596D+01 0.100D+00 0.645D-01 + 73 -0.157556D+01 0.100D+00 0.418D-01 + 74 -0.122884D+00 0.100D+00 -0.193D-02 + 75 -0.421133D+00 0.100D+00 0.708D-02 + 76 -0.457464D+00 0.100D+00 0.788D-02 + 77 0.929670D+00 0.100D+00 -0.444D-02 + 78 -0.218948D+01 0.100D+00 0.648D-01 + 79 0.330109D+01 0.100D+00 0.459D-01 + 80 0.154040D+01 0.100D+00 -0.128D-02 + 81 0.416793D+00 0.100D+00 0.402D-02 + 82 -0.763611D+00 0.100D+00 0.462D-02 + 83 0.187587D+01 0.100D+00 -0.184D-01 + 84 0.479167D+00 0.100D+00 0.468D-02 + 85 0.125304D+00 0.100D+00 0.307D-02 + 86 0.244593D+00 0.100D+00 -0.106D-01 + 87 -0.305770D+01 0.100D+00 0.592D-01 + 88 -0.389252D-01 0.100D+00 -0.589D-02 + 89 0.128883D+01 0.100D+00 -0.181D-01 + 90 -0.156718D+01 0.100D+00 -0.602D-03 + 91 -0.726552D+00 0.100D+00 0.606D-01 + 92 0.910848D+00 0.100D+00 -0.817D-01 + 93 0.813641D+00 0.100D+00 -0.996D-01 + 94 -0.393879D+00 0.100D+00 0.658D-02 + 95 -0.829259D+00 0.100D+00 -0.104D-01 + 96 0.933077D+00 0.100D+00 0.330D-01 + 97 -0.867436D+00 0.100D+00 -0.119D-01 + 98 0.564717D+00 0.100D+00 -0.915D-02 + 99 -0.804089D+00 0.100D+00 -0.410D-02 + 100 -0.302270D+01 0.100D+00 -0.250D-01 + 101 -0.133999D+01 0.100D+00 -0.603D-02 + 102 -0.911639D+00 0.100D+00 -0.149D-01 + 103 -0.998525D+00 0.100D+00 0.146D+00 + 104 0.415586D-01 0.100D+00 -0.181D-01 + 105 -0.101231D+01 0.100D+00 0.105D+00 + 106 0.129130D+01 0.100D+00 0.225D+00 + 107 0.203868D+00 0.100D+00 0.447D-01 + 108 0.564633D+00 0.100D+00 0.112D+00 + 109 -0.196978D+00 0.100D+00 0.197D-01 + 110 -0.751178D+00 0.100D+00 -0.686D-01 + 111 -0.119111D+01 0.100D+00 -0.845D-01 + 112 -0.137654D+00 0.100D+00 -0.169D-01 + 113 -0.127731D+01 0.100D+00 -0.402D-01 + 114 0.267630D+00 0.100D+00 -0.248D-01 + +Virtual-chain energies: + +EVDW= -5.289578E+01 WEIGHT= 1.000000D+00 (SC-SC) +EVDW2= 5.775118E+01 WEIGHT= 1.233150D+00 (SC-p) +EES= -1.186172E+02 WEIGHT= 8.447600D-01 (p-p) +EVDWPP= -2.337141E+00 WEIGHT= 2.317300D-01 (p-p VDW) +ESTR= 2.069666E+00 WEIGHT= 1.000000D+00 (stretching) +EBE= -9.982381E+00 WEIGHT= 6.295400D-01 (bending) +ESC= 6.392977E+01 WEIGHT= 1.055400D-01 (SC local) +ETORS= 8.200430E+00 WEIGHT= 1.843160D+00 (torsional) +ETORSD= 1.456741E+00 WEIGHT= 1.265710D+00 (double torsional) +EHBP= 0.000000E+00 WEIGHT= 1.000000D+00 (SS bridges & dist. cnstr.) +ECORR4= -8.622975E+01 WEIGHT= 1.921200D-01 (multi-body) +ECORR5= 0.000000E+00 WEIGHT= 0.000000D+00 (multi-body) +ECORR6= 0.000000E+00 WEIGHT= 0.000000D+00 (multi-body) +EELLO= -8.532097E+00 WEIGHT= 3.735700D-01 (electrostatic-local) +ETURN3= 1.873760E+01 WEIGHT= 1.403230D+00 (turns, 3rd order) +ETURN4= -6.214253E+00 WEIGHT= 6.467300D-01 (turns, 4th order) +ETURN6= 0.000000E+00 WEIGHT= 0.000000D+00 (turns, 6th order) +ESCCOR= 0.000000E+00 WEIGHT= 0.000000D+00 (backbone-rotamer corr) +EDIHC= 0.000000E+00 (dihedral angle constraints) +ESS= -0.000000E+00 (disulfide-bridge intrinsic energy) +UCONST= 0.000000E+00 (Constraint energy) +ETOT= -6.041313E+01 (total) + +Geometry of the virtual chain. + Res d Theta Gamma Dsc Alpha Beta +D 1 0.000 0.000 0.000 0.000 0.000 0.000 +ASN 2 3.355 0.000 0.000 2.008 98.794 -78.944 +LEU 3 3.766 103.476 0.000 2.087 117.317 -37.330 +TYR 4 3.779 85.174 -108.391 3.351 145.356 111.337 +ILE 5 3.769 85.148 75.355 1.635 158.873 -81.309 +GLN 6 3.791 88.149 58.397 2.422 116.589 -123.056 +TRP 7 3.789 88.665 40.053 3.667 173.853 90.436 +LEU 8 3.773 87.534 55.540 2.081 134.928 -160.141 +LYS 9 3.745 88.822 58.763 3.070 100.441 -73.061 +ASP 10 3.814 93.510 40.231 2.029 133.322 -143.190 +GLY 11 3.794 85.936 79.931 0.000 0.000 180.000 +GLY 12 3.843 96.146 -68.122 0.000 0.000 180.000 +PRO 13 3.789 96.704 -58.465 1.421 116.943 -132.213 +SER 14 3.847 89.557 -28.082 1.309 140.739 -115.467 +SER 15 3.809 102.316 118.708 1.311 108.505 -76.475 +GLY 16 3.811 141.128 92.010 0.000 0.000 180.000 +ARG 17 3.823 100.046 -74.643 3.430 131.170 -101.818 +PRO 18 3.812 137.745 78.949 1.423 92.450 -106.458 +PRO 19 3.834 108.529 -62.830 1.424 108.291 -119.614 +PRO 20 3.849 95.391 -130.817 1.422 115.420 -129.119 +SER 21 3.817 96.421 -171.218 1.312 135.938 -114.122 +D 22 5.122 105.045 96.667 0.000 0.000 180.000 +SUMSL return code: 4 +# of energy evaluations: 699 +# of energy evaluations/sec: 0.000 + + +***** Computation time: 0 hours 0 minutes 0 seconds ***** diff --git a/examples/unres/MIN/1L2Y_min_GB.int b/examples/unres/MIN/1L2Y_min_GB.int new file mode 100644 index 0000000..68a9934 --- /dev/null +++ b/examples/unres/MIN/1L2Y_min_GB.int @@ -0,0 +1,13 @@ + 0 -60.413 0 + 103.4760 85.1737 85.1483 88.1492 88.6648 87.5335 88.8224 93.5098 + 85.9355 96.1456 96.7040 89.5572 102.3158 141.1282 100.0458 137.7452 + 108.5290 95.3908 96.4215 105.0447 + -108.3913 75.3546 58.3973 40.0530 55.5398 58.7633 40.2312 79.9312 + -68.1216 -58.4651 -28.0825 118.7084 92.0102 -74.6435 78.9491 -62.8301 + -130.8169 -171.2183 96.6675 + 98.7937 117.3169 145.3557 158.8731 116.5890 173.8534 134.9281 100.4407 + 133.3222 0.0000 0.0000 116.9426 140.7394 108.5049 0.0000 131.1704 + 92.4504 108.2907 115.4203 135.9383 + -78.9440 -37.3304 111.3366 -81.3087 -123.0561 90.4360 -160.1415 -73.0610 + -143.1896 180.0000 180.0000 -132.2131 -115.4669 -76.4751 180.0000 -101.8175 + -106.4577 -119.6142 -129.1186 -114.1219 diff --git a/examples/unres/MIN/1L2Y_min_GB.mol2 b/examples/unres/MIN/1L2Y_min_GB.mol2 new file mode 100644 index 0000000..e69de29 diff --git a/examples/unres/MIN/1L2Y_min_GB.pdb b/examples/unres/MIN/1L2Y_min_GB.pdb new file mode 100644 index 0000000..8a5b536 --- /dev/null +++ b/examples/unres/MIN/1L2Y_min_GB.pdb @@ -0,0 +1,62 @@ +REMARK 1L2Y ff_1l2y_1le1 ENERGY -6.04131E+01 +HELIX 1 H1 ASN 1 ASP 9 1 8 +HELIX 2 H2 GLY 10 GLY 15 1 5 +ATOM 1 CA ASN 1 1.884 2.404 1.387 0.000 +ATOM 2 CB ASN 1 1.628 2.147 3.362 0.000 +ATOM 3 CA LEU 2 5.241 0.752 1.813 0.000 +ATOM 4 CB LEU 2 7.182 1.001 2.540 0.000 +ATOM 5 CA TYR 3 4.426 0.771 5.503 0.000 +ATOM 6 CB TYR 3 6.916 1.421 7.649 0.000 +ATOM 7 CA ILE 4 2.099 -2.076 4.677 0.000 +ATOM 8 CB ILE 4 0.523 -2.199 4.255 0.000 +ATOM 9 CA GLN 5 5.094 -3.972 3.333 0.000 +ATOM 10 CB GLN 5 4.636 -3.042 1.143 0.000 +ATOM 11 CA TRP 6 7.127 -2.645 6.242 0.000 +ATOM 12 CB TRP 6 10.428 -1.105 6.659 0.000 +ATOM 13 CA LEU 7 4.520 -4.130 8.530 0.000 +ATOM 14 CB LEU 7 3.756 -2.254 9.009 0.000 +ATOM 15 CA LYS 8 5.236 -7.490 7.039 0.000 +ATOM 16 CB LYS 8 5.361 -7.245 3.981 0.000 +ATOM 17 CA ASP 9 9.002 -6.893 6.917 0.000 +ATOM 18 CB ASP 9 8.963 -5.604 5.350 0.000 +ATOM 19 CA GLY 10 8.989 -7.779 10.606 0.000 +ATOM 20 CA GLY 11 7.065 -4.663 11.770 0.000 +ATOM 21 CA PRO 12 9.515 -2.103 10.430 0.000 +ATOM 22 CB PRO 12 8.789 -1.192 11.243 0.000 +ATOM 23 CA SER 13 12.362 -4.659 10.837 0.000 +ATOM 24 CB SER 13 11.968 -5.488 11.770 0.000 +ATOM 25 CA SER 14 13.595 -5.078 7.257 0.000 +ATOM 26 CB SER 14 12.728 -4.513 6.453 0.000 +ATOM 27 CA GLY 15 16.169 -3.675 4.823 0.000 +ATOM 28 CA ARG 16 14.533 -0.325 3.980 0.000 +ATOM 29 CB ARG 16 11.510 -1.665 3.068 0.000 +ATOM 30 CA PRO 17 14.174 3.120 5.572 0.000 +ATOM 31 CB PRO 17 13.175 3.162 4.560 0.000 +ATOM 32 CA PRO 18 12.224 2.748 8.853 0.000 +ATOM 33 CB PRO 18 13.515 2.952 9.417 0.000 +ATOM 34 CA PRO 19 9.729 5.585 8.114 0.000 +ATOM 35 CB PRO 19 9.532 4.834 6.923 0.000 +ATOM 36 CA SER 20 8.123 5.654 11.576 0.000 +ATOM 37 CB SER 20 7.985 4.377 11.844 0.000 +TER +CONECT 1 3 2 +CONECT 3 5 4 +CONECT 5 7 6 +CONECT 7 9 8 +CONECT 9 11 10 +CONECT 11 13 12 +CONECT 13 15 14 +CONECT 15 17 16 +CONECT 17 19 18 +CONECT 19 20 +CONECT 20 21 +CONECT 21 23 22 +CONECT 23 25 24 +CONECT 25 27 26 +CONECT 27 28 +CONECT 28 30 29 +CONECT 30 32 31 +CONECT 32 34 33 +CONECT 34 36 35 +CONECT 36 37 +ENDMDL diff --git a/examples/unres/MIN/1L2Y_min_GB.stat b/examples/unres/MIN/1L2Y_min_GB.stat new file mode 100644 index 0000000..e69de29 diff --git a/examples/unres/MIN/log b/examples/unres/MIN/log new file mode 100644 index 0000000..e12147f --- /dev/null +++ b/examples/unres/MIN/log @@ -0,0 +1,12 @@ +STOP ********** Program terminated normally. +******************************************************************************** +United-residue force field calculation - serial job. +******************************************************************************** +Inside initialize indpdb= 52 pdbref= T + Call Read_Bridge. + ns= 0 + after etotal + Calling MINIM_DC + SUMSL return code is 4 eval 698 + # eval/s 0.0000000000000000 + refstr= T diff --git a/examples/unres/MIN/unres.csh b/examples/unres/MIN/unres.csh new file mode 100755 index 0000000..7ef92dd --- /dev/null +++ b/examples/unres/MIN/unres.csh @@ -0,0 +1,26 @@ +#!/bin/csh +setenv FGPROCS 1 +setenv POT GB +setenv PREFIX 1L2Y_min +setenv OUT1FILE NO +#----------------------------------------------------------------------------- +setenv UNRES_BIN ../../../bin/unres/MIN/unres_min_gfortran.exe +#----------------------------------------------------------------------------- +setenv DD ../../../PARAM +setenv BONDPAR $DD/bond_AM1.parm +setenv THETPAR $DD/theta_abinitio.parm +setenv THETPARPDB $DD/thetaml.5parm +setenv ROTPARPDB $DD/scgauss.parm +setenv ROTPAR $DD/rotamers_AM1_aura.10022007.parm +setenv TORPAR $DD/torsion_631Gdp.parm +setenv TORDPAR $DD/torsion_double_631Gdp.parm +setenv ELEPAR $DD/electr_631Gdp.parm +setenv SIDEPAR $DD/scinter_${POT}.parm +setenv FOURIER $DD/fourier_opt.parm.1igd_hc_iter3_3 +setenv SCCORPAR $DD/rotcorr_AM1.parm +setenv SCPPAR $DD/scp.parm +setenv PATTERN $DD/patterns.cart +setenv PRINT_PARM NO +#----------------------------------------------------------------------------- + +$UNRES_BIN diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt deleted file mode 100644 index 63e5054..0000000 --- a/source/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -# -# CMake project file for UNRES -# - -add_subdirectory(unres) diff --git a/source/cluster/unres/src/CMakeLists.txt b/source/cluster/unres/src/CMakeLists.txt new file mode 100644 index 0000000..fa3c5f5 --- /dev/null +++ b/source/cluster/unres/src/CMakeLists.txt @@ -0,0 +1,187 @@ +# +# CMake project file for cluster analysis from UNRESMD +# + +enable_language (Fortran) + +#================================ +# Set source file lists +#================================ +set(UNRES_CLUSTER_UNRES_SRC0 + arcos.f + cartprint.f + chainbuild.f + contact.f + convert.f + fitsq.f + geomout.F + hc.f + initialize.f + intcor.f + main_clust.f + matmult.f + misc.f + noyes.f + pinorm.f + readpdb.f + readrtns.F + rescode.f + srtclust.f + timing.F + track.F + wrtclust.f +) + +set(UNRES_CLUSTER_PP_SRC + geomout.F + readrtns.F + timing.F + track.F +) + + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(FFLAGS0 "-ip -w -I." ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-I. " ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +set_property(SOURCE ${UNRES_CLUSTER_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} LINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + + + +#========================================= +# Apply preprocesor flags to *.F files +#========================================= +set_property(SOURCE ${UNRES_CLUSTER_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + +#======================================== +# Setting binary name +#======================================== +set(UNRES_CLUSTER_BIN "unres_clustMD.exe") + +#========================================= +# cinfo.f stupid workaround for cmake +# - shame on me ]:) +#========================================= +#set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" ) +#add_executable(compinfo-wham-m compinfo.c) +#set_target_properties(compinfo-wham-m PROPERTIES OUTPUT_NAME compinfo) + +#set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +#add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS +# COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true +# DEPENDS compinfo-wham-m ) +#set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# Set full unres CLUSTER sources +#========================================= +set(UNRES_CLUSTER_SRCS ${UNRES_CLUSTER_UNRES_SRC0} ) + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_CLUSTER_BIN ${UNRES_CLUSTER_SRCS} ) +set_target_properties(UNRES_CLUSTER_BIN PROPERTIES OUTPUT_NAME ${UNRES_CLUSTER_BIN}) + + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= +# test_single_ala.sh +#========================================= + +#FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh +#"#!/bin/sh +#export POT=GB +#export PREFIX=ala10 +#----------------------------------------------------------------------------- +#UNRES_BIN=./${UNRES_BIN} +#----------------------------------------------------------------------------- +#DD=${CMAKE_SOURCE_DIR}/PARAM +#export BONDPAR=$DD/bond.parm +#export THETPAR=$DD/thetaml.5parm +#export ROTPAR=$DD/scgauss.parm +#export TORPAR=$DD/torsion_631Gdp.parm +#export TORDPAR=$DD/torsion_double_631Gdp.parm +#export ELEPAR=$DD/electr_631Gdp.parm +#export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k +#export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3 +#export SCPPAR=$DD/scp.parm +#export SCCORPAR=$DD/rotcorr_AM1.parm +#export PATTERN=$DD/patterns.cart +#----------------------------------------------------------------------------- +#$UNRES_BIN +#") + +#========================================= +# ala10.inp +#========================================= + +#file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp +#"ala10 unblocked +#SEED=-1111333 MD ONE_LETTER rescale_mode=2 PDBOUT +#nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0 & +#reset_moment=1000 reset_vel=1000 MDPDB +#WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873 & +#WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000 & +#WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000 & +#WVDWPP=0.11371 WHPB=1.00000 & +#CUTOFF=7.00000 WCORR4=0.00000 +#12 +#XAAAAAAAAAAX +# 0 +# 0 +# 90.0000 90.0000 90.0000 90.000 90.000 90.000 90.000 90.000 +# 90.0000 90.0000 +# 180.0000 180.0000 180.0000 180.000 180.000 180.000 180.000 180.000 +# 180.0000 +# 110.0000 110.0000 110.0000 100.000 110.000 100.000 110.000 110.000 +# 110.0000 110.0000 +# -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000 +# -120.0000 -120.0000 +#") + + +# Add tests + +#if(NOT UNRES_WITH_MPI) + +# add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) + +#endif(NOT UNRES_WITH_MPI) diff --git a/source/cluster/unres/src/hc.f b/source/cluster/unres/src/hc.f index 3788cdb..2e03f24 100644 --- a/source/cluster/unres/src/hc.f +++ b/source/cluster/unres/src/hc.f @@ -414,8 +414,10 @@ C-------------------------------------------------C CHARACTER*80 LINE INTEGER IORDER(LEV),HEIGHT(LEV) REAL CRITVAL(LEV) - INTEGER OUT(3*LEV,3*LEV) - INTEGER UP,ACROSS,BLANK +C INTEGER OUT(3*LEV,3*LEV) + CHARACTER*1 OUT(3*LEV,3*LEV) +c INTEGER UP,ACROSS,BLANK + CHARACTER*1 UP,ACROSS,BLANK DATA UP,ACROSS,BLANK/'|','-',' '/ C C diff --git a/source/cluster/wham/src-M/CMakeLists.txt b/source/cluster/wham/src-M/CMakeLists.txt new file mode 100644 index 0000000..cd8871c --- /dev/null +++ b/source/cluster/wham/src-M/CMakeLists.txt @@ -0,0 +1,238 @@ +# +# CMake project file for cluster analysis from WHAM for oligomeric proteins +# + +enable_language (Fortran C) + +#================================ +# Set source file lists +#================================ +set(UNRES_CLUSTER_WHAM_M_SRC0 + arcos.f + cartprint.f + chainbuild.f + contact.f + convert.f + energy_p_new.F + fitsq.f + geomout.F + gnmr1.f + hc.f + icant.f + initialize_p.F + intcor.f + int_from_cart1.f + main_clust.F + matmult.f + misc.f + noyes.f + parmread.F + permut.f + pinorm.f + printmat.f + probabl.F + read_coords.F + readpdb.f + readrtns.F + rescode.f + setup_var.f + srtclust.f + timing.F + track.F + wrtclust.f + work_partition.F +) + +set(UNRES_CLUSTER_WHAM_M_PP_SRC + energy_p_new.F + initialize_p.F + geomout.F + main_clust.F + parmread.F + probabl.F + read_coords.F + readrtns.F + timing.F + track.F + work_partition.F +) + + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(FFLAGS0 "-ip -w -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + +# Add MPI compiler flags +if(UNRES_WITH_MPI) + set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}") +endif(UNRES_WITH_MPI) + +set_property(SOURCE ${UNRES_CLUSTER_WHAM_M_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +set(CPPFLAGS "PROCOR -DSPLITELE -DPROCOR -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + # Add ifort preprocessor flags + set(CPPFLAGS "${CPPFLAGS} -DPGI") +elseif (Fortran_COMPILER_NAME STREQUAL "f95") + # Add new gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + # Add old gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +#========================================= +# Add MPI preprocessor flags +#========================================= +if (UNRES_WITH_MPI) + set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") +endif(UNRES_WITH_MPI) + + +#========================================= +# Apply preprocesor flags to *.F files +#========================================= +set_property(SOURCE ${UNRES_CLUSTER_WHAM_M_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + +set_property(SOURCE proc_proc.c PROPERTY COMPILE_DEFINITIONS "LINUX -DPGI" ) + +#======================================== +# Setting binary name +#======================================== +set(UNRES_CLUSTER_WHAM_M_BIN "unres_clustMD.exe") + +#========================================= +# cinfo.f stupid workaround for cmake +# - shame on me ]:) +#========================================= +#set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" ) +#add_executable(compinfo-wham-m compinfo.c) +#set_target_properties(compinfo-wham-m PROPERTIES OUTPUT_NAME compinfo) + +#set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +#add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS +# COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true +# DEPENDS compinfo-wham-m ) +#set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# Set full unres CLUSTER sources +#========================================= +set(UNRES_CLUSTER_WHAM_M_SRCS ${UNRES_CLUSTER_WHAM_M_SRC0} proc_proc.c) + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_CLUSTER_WHAM_M_BIN ${UNRES_CLUSTER_WHAM_M_SRCS} ) +set_target_properties(UNRES_CLUSTER_WHAM_M_BIN PROPERTIES OUTPUT_NAME ${UNRES_CLUSTER_WHAM_M_BIN}) + +#========================================= +# Link libraries +#========================================= +# link MPI library (libmpich.a) +if(UNRES_WITH_MPI) + target_link_libraries( UNRES_CLUSTER_WHAM_M_BIN ${MPIF_LIBRARIES} ) +endif(UNRES_WITH_MPI) +# link libxdrf.a +target_link_libraries( UNRES_CLUSTER_WHAM_M_BIN xdrf ) + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= +# test_single_ala.sh +#========================================= + +#FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh +#"#!/bin/sh +#export POT=GB +#export PREFIX=ala10 +#----------------------------------------------------------------------------- +#UNRES_BIN=./${UNRES_BIN} +#----------------------------------------------------------------------------- +#DD=${CMAKE_SOURCE_DIR}/PARAM +#export BONDPAR=$DD/bond.parm +#export THETPAR=$DD/thetaml.5parm +#export ROTPAR=$DD/scgauss.parm +#export TORPAR=$DD/torsion_631Gdp.parm +#export TORDPAR=$DD/torsion_double_631Gdp.parm +#export ELEPAR=$DD/electr_631Gdp.parm +#export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k +#export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3 +#export SCPPAR=$DD/scp.parm +#export SCCORPAR=$DD/rotcorr_AM1.parm +#export PATTERN=$DD/patterns.cart +#----------------------------------------------------------------------------- +#$UNRES_BIN +#") + +#========================================= +# ala10.inp +#========================================= + +#file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp +#"ala10 unblocked +#SEED=-1111333 MD ONE_LETTER rescale_mode=2 PDBOUT +#nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0 & +#reset_moment=1000 reset_vel=1000 MDPDB +#WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873 & +#WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000 & +#WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000 & +#WVDWPP=0.11371 WHPB=1.00000 & +#CUTOFF=7.00000 WCORR4=0.00000 +#12 +#XAAAAAAAAAAX +# 0 +# 0 +# 90.0000 90.0000 90.0000 90.000 90.000 90.000 90.000 90.000 +# 90.0000 90.0000 +# 180.0000 180.0000 180.0000 180.000 180.000 180.000 180.000 180.000 +# 180.0000 +# 110.0000 110.0000 110.0000 100.000 110.000 100.000 110.000 110.000 +# 110.0000 110.0000 +# -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000 +# -120.0000 -120.0000 +#") + + +# Add tests + +#if(NOT UNRES_WITH_MPI) + +# add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) + +#endif(NOT UNRES_WITH_MPI) diff --git a/source/cluster/wham/src-M/diff b/source/cluster/wham/src-M/diff deleted file mode 100644 index 5c7ed52..0000000 --- a/source/cluster/wham/src-M/diff +++ /dev/null @@ -1,952 +0,0 @@ -4c4 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5a6 -> #ifndef ISNAN -6a8 -> #endif -83a86,89 -> C -> C 21/5/07 Calculate local sicdechain correlation energy -> C -> call eback_sc_corr(esccor) -99,125d104 -< C call multibody(ecorr) -< C -< C Sum the energies -< C -< C scale large componenets -< c#ifdef SCALE -< c ecorr5_scal=1000.0 -< c eel_loc_scal=100.0 -< c eello_turn3_scal=100.0 -< c eello_turn4_scal=100.0 -< c eturn6_scal=1000.0 -< c ecorr6_scal=1000.0 -< c#else -< c ecorr5_scal=1.0 -< c eel_loc_scal=1.0 -< c eello_turn3_scal=1.0 -< c eello_turn4_scal=1.0 -< c eturn6_scal=1.0 -< c ecorr6_scal=1.0 -< c#endif -< c -< c ecorr5=ecorr5/ecorr5_scal -< c eel_loc=eel_loc/eel_loc_scal -< c eello_turn3=eello_turn3/eello_turn3_scal -< c eello_turn4=eello_turn4/eello_turn4_scal -< c eturn6=eturn6/eturn6_scal -< c ecorr6=ecorr6/ecorr6_scal -133c112 -< & +wbond*estr ---- -> & +wbond*estr+wsccor*fact(1)*esccor -141c120 -< & +wbond*estr ---- -> & +wbond*estr+wsccor*fact(1)*esccor -172c151,152 -< energia(19)=edihcnstr ---- -> energia(19)=esccor -> energia(20)=edihcnstr -173a154,160 -> #ifdef ISNAN -> #ifdef AIX -> if (isnan(etot).ne.0) energia(0)=1.0d+99 -> #else -> if (isnan(etot)) energia(0)=1.0d+99 -> #endif -> #else -180a168 -> #endif -201c189,190 -< & wturn6*fact(5)*gcorr6_turn(j,i) ---- -> & wturn6*fact(5)*gcorr6_turn(j,i)+ -> & wsccor*fact(2)*gsccorc(j,i) -204c193,194 -< & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i) ---- -> & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+ -> & wsccor*fact(2)*gsccorx(j,i) -218c208,209 -< & wturn6*fact(5)*gcorr6_turn(j,i) ---- -> & wturn6*fact(5)*gcorr6_turn(j,i)+ -> & wsccor*fact(2)*gsccorc(j,i) -221c212,213 -< & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i) ---- -> & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+ -> & wsccor*fact(1)*gsccorx(j,i) -224,225d215 -< cd print '(i3,9(1pe12.4))',i,(gvdwc(k,i),k=1,3),(gelc(k,i),k=1,3), -< cd & (gradc(k,i),k=1,3) -230d219 -< cd write (iout,*) i,g_corr5_loc(i) -237a227 -> & +wsccor*fact(1)*gsccor_loc(i) -240,244d229 -< cd print*,evdw,wsc,evdw2,wscp,ees+evdw1,welec,ebe,wang, -< cd & escloc,wscloc,etors,wtor,ehpb,wstrain,nss,ebr,etot -< cd call enerprint(energia(0),fact) -< cd call intout -< cd stop -251c236 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -279c264,265 -< edihcnstr=energia(19) ---- -> esccor=energia(19) -> edihcnstr=energia(20) -289c275 -< & edihcnstr,ebr*nss,etot ---- -> & esccor,wsccor*fact(1),edihcnstr,ebr*nss,etot -308a295 -> & 'ESCCOR=',1pE16.6,' WEIGHT=',1pD16.6,' (backbone-rotamer corr)'/ -318c305,306 -< & eello_turn6,wturn6*fact(5),edihcnstr,ebr*nss,etot ---- -> & eello_turn6,wturn6*fact(5),esccor*fact(1),wsccor, -> & edihcnstr,ebr*nss,etot -336a325 -> & 'ESCCOR=',1pE16.6,' WEIGHT=',1pD16.6,' (backbone-rotamer corr)'/ -351c340 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -360a350 -> include 'COMMON.ENEPS' -368a359,363 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -398a394,395 -> eneps_temp(1,ij)=eneps_temp(1,ij)+e1/dabs(eps0ij) -> eneps_temp(2,ij)=eneps_temp(2,ij)+e2/eps0ij -512c509 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -519a517 -> include 'COMMON.ENEPS' -526a525,529 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -553a557,559 -> eneps_temp(1,ij)=eneps_temp(1,ij)+(e1+a_augm) -> & /dabs(eps(itypi,itypj)) -> eneps_temp(2,ij)=eneps_temp(2,ij)+e2/eps(itypi,itypj) -601c607 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -609a616 -> include 'COMMON.ENEPS' -616a624,628 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -688a701,703 -> eneps_temp(1,ij)=eneps_temp(1,ij)+e1*aux -> & /dabs(eps(itypi,itypj)) -> eneps_temp(2,ij)=eneps_temp(2,ij)+e2*aux/eps(itypi,itypj) -728c743 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -736a752 -> include 'COMMON.ENEPS' -742a759,763 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -819a841,843 -> eneps_temp(1,ij)=eneps_temp(1,ij)+aux*e1 -> & /dabs(eps(itypi,itypj)) -> eneps_temp(2,ij)=eneps_temp(2,ij)+aux*e2/eps(itypi,itypj) -859c883 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -867a892 -> include 'COMMON.ENEPS' -873a899,903 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -952a983,987 -> eneps_temp(1,ij)=eneps_temp(1,ij)+aux*(e1+e_augm) -> & /dabs(eps(itypi,itypj)) -> eneps_temp(2,ij)=eneps_temp(2,ij)+aux*e2/eps(itypi,itypj) -> c eneps_temp(ij)=eneps_temp(ij) -> c & +(evdwij+e_augm)/eps(itypi,itypj) -1035c1070 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1073c1108 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1232c1267 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1415c1450 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1500c1535 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1683c1718 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2432c2467 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2699c2734 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2810c2845 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2887c2922 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2968c3003 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2978a3014 -> double precision u(3),ud(3) -2988,2989c3024,3027 -< estr=AKP*estr -< c write (iout,*) "estr",estr ---- -> estr=0.5d0*AKP*estr -> c -> c 09/18/07 AL: multimodal bond potential based on AM1 CA-SC PMF's included -> c -2993,2999c3031,3070 -< diff=vbld(i+nres)-vbldsc0(iti) -< c write (iout,*) i,iti,vbld(i+nres),vbldsc0(iti),diff, -< c & AKSC(iti)*diff*diff -< estr=estr+AKSC(iti)*diff*diff -< do j=1,3 -< gradbx(j,i)=AKSC(iti)*diff*dc(j,i+nres)/vbld(i+nres) -< enddo ---- -> nbi=nbondterm(iti) -> if (nbi.eq.1) then -> diff=vbld(i+nres)-vbldsc0(1,iti) -> c write (iout,*) i,iti,vbld(i+nres),vbldsc0(1,iti),diff, -> c & AKSC(1,iti),AKSC(1,iti)*diff*diff -> estr=estr+0.5d0*AKSC(1,iti)*diff*diff -> do j=1,3 -> gradbx(j,i)=AKSC(1,iti)*diff*dc(j,i+nres)/vbld(i+nres) -> enddo -> else -> do j=1,nbi -> diff=vbld(i+nres)-vbldsc0(j,iti) -> ud(j)=aksc(j,iti)*diff -> u(j)=abond0(j,iti)+0.5d0*ud(j)*diff -> enddo -> uprod=u(1) -> do j=2,nbi -> uprod=uprod*u(j) -> enddo -> usum=0.0d0 -> usumsqder=0.0d0 -> do j=1,nbi -> uprod1=1.0d0 -> uprod2=1.0d0 -> do k=1,nbi -> if (k.ne.j) then -> uprod1=uprod1*u(k) -> uprod2=uprod2*u(k)*u(k) -> endif -> enddo -> usum=usum+uprod1 -> usumsqder=usumsqder+ud(j)*uprod2 -> enddo -> c write (iout,*) i,iti,vbld(i+nres),(vbldsc0(j,iti), -> c & AKSC(j,iti),abond0(j,iti),u(j),j=1,nbi) -> estr=estr+uprod/usum -> do j=1,3 -> gradbx(j,i)=usumsqder/(usum*usum)*dc(j,i+nres)/vbld(i+nres) -> enddo -> endif -3002,3003d3072 -< c write (iout,*) "estr",estr -< estr=0.5d0*estr -3005a3075 -> #ifdef CRYST_THETA -3014c3084 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3244a3315,3509 -> #else -> C-------------------------------------------------------------------------- -> subroutine ebend(etheta) -> C -> C Evaluate the virtual-bond-angle energy given the virtual-bond dihedral -> C angles gamma and its derivatives in consecutive thetas and gammas. -> C ab initio-derived potentials from -> c Kozlowska et al., J. Phys.: Condens. Matter 19 (2007) 285203 -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'DIMENSIONS.ZSCOPT' -> include 'COMMON.LOCAL' -> include 'COMMON.GEO' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.VAR' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> double precision coskt(mmaxtheterm),sinkt(mmaxtheterm), -> & cosph1(maxsingle),sinph1(maxsingle),cosph2(maxsingle), -> & sinph2(maxsingle),cosph1ph2(maxdouble,maxdouble), -> & sinph1ph2(maxdouble,maxdouble) -> logical lprn /.false./, lprn1 /.false./ -> etheta=0.0D0 -> c write (iout,*) "ithetyp",(ithetyp(i),i=1,ntyp1) -> do i=ithet_start,ithet_end -> dethetai=0.0d0 -> dephii=0.0d0 -> dephii1=0.0d0 -> theti2=0.5d0*theta(i) -> ityp2=ithetyp(itype(i-1)) -> do k=1,nntheterm -> coskt(k)=dcos(k*theti2) -> sinkt(k)=dsin(k*theti2) -> enddo -> if (i.gt.3) then -> #ifdef OSF -> phii=phi(i) -> if (phii.ne.phii) phii=150.0 -> #else -> phii=phi(i) -> #endif -> ityp1=ithetyp(itype(i-2)) -> do k=1,nsingle -> cosph1(k)=dcos(k*phii) -> sinph1(k)=dsin(k*phii) -> enddo -> else -> phii=0.0d0 -> ityp1=nthetyp+1 -> do k=1,nsingle -> cosph1(k)=0.0d0 -> sinph1(k)=0.0d0 -> enddo -> endif -> if (i.lt.nres) then -> #ifdef OSF -> phii1=phi(i+1) -> if (phii1.ne.phii1) phii1=150.0 -> phii1=pinorm(phii1) -> #else -> phii1=phi(i+1) -> #endif -> ityp3=ithetyp(itype(i)) -> do k=1,nsingle -> cosph2(k)=dcos(k*phii1) -> sinph2(k)=dsin(k*phii1) -> enddo -> else -> phii1=0.0d0 -> ityp3=nthetyp+1 -> do k=1,nsingle -> cosph2(k)=0.0d0 -> sinph2(k)=0.0d0 -> enddo -> endif -> c write (iout,*) "i",i," ityp1",itype(i-2),ityp1, -> c & " ityp2",itype(i-1),ityp2," ityp3",itype(i),ityp3 -> c call flush(iout) -> ethetai=aa0thet(ityp1,ityp2,ityp3) -> do k=1,ndouble -> do l=1,k-1 -> ccl=cosph1(l)*cosph2(k-l) -> ssl=sinph1(l)*sinph2(k-l) -> scl=sinph1(l)*cosph2(k-l) -> csl=cosph1(l)*sinph2(k-l) -> cosph1ph2(l,k)=ccl-ssl -> cosph1ph2(k,l)=ccl+ssl -> sinph1ph2(l,k)=scl+csl -> sinph1ph2(k,l)=scl-csl -> enddo -> enddo -> if (lprn) then -> write (iout,*) "i",i," ityp1",ityp1," ityp2",ityp2, -> & " ityp3",ityp3," theti2",theti2," phii",phii," phii1",phii1 -> write (iout,*) "coskt and sinkt" -> do k=1,nntheterm -> write (iout,*) k,coskt(k),sinkt(k) -> enddo -> endif -> do k=1,ntheterm -> ethetai=ethetai+aathet(k,ityp1,ityp2,ityp3)*sinkt(k) -> dethetai=dethetai+0.5d0*k*aathet(k,ityp1,ityp2,ityp3) -> & *coskt(k) -> if (lprn) -> & write (iout,*) "k",k," aathet",aathet(k,ityp1,ityp2,ityp3), -> & " ethetai",ethetai -> enddo -> if (lprn) then -> write (iout,*) "cosph and sinph" -> do k=1,nsingle -> write (iout,*) k,cosph1(k),sinph1(k),cosph2(k),sinph2(k) -> enddo -> write (iout,*) "cosph1ph2 and sinph2ph2" -> do k=2,ndouble -> do l=1,k-1 -> write (iout,*) l,k,cosph1ph2(l,k),cosph1ph2(k,l), -> & sinph1ph2(l,k),sinph1ph2(k,l) -> enddo -> enddo -> write(iout,*) "ethetai",ethetai -> endif -> do m=1,ntheterm2 -> do k=1,nsingle -> aux=bbthet(k,m,ityp1,ityp2,ityp3)*cosph1(k) -> & +ccthet(k,m,ityp1,ityp2,ityp3)*sinph1(k) -> & +ddthet(k,m,ityp1,ityp2,ityp3)*cosph2(k) -> & +eethet(k,m,ityp1,ityp2,ityp3)*sinph2(k) -> ethetai=ethetai+sinkt(m)*aux -> dethetai=dethetai+0.5d0*m*aux*coskt(m) -> dephii=dephii+k*sinkt(m)*( -> & ccthet(k,m,ityp1,ityp2,ityp3)*cosph1(k)- -> & bbthet(k,m,ityp1,ityp2,ityp3)*sinph1(k)) -> dephii1=dephii1+k*sinkt(m)*( -> & eethet(k,m,ityp1,ityp2,ityp3)*cosph2(k)- -> & ddthet(k,m,ityp1,ityp2,ityp3)*sinph2(k)) -> if (lprn) -> & write (iout,*) "m",m," k",k," bbthet", -> & bbthet(k,m,ityp1,ityp2,ityp3)," ccthet", -> & ccthet(k,m,ityp1,ityp2,ityp3)," ddthet", -> & ddthet(k,m,ityp1,ityp2,ityp3)," eethet", -> & eethet(k,m,ityp1,ityp2,ityp3)," ethetai",ethetai -> enddo -> enddo -> if (lprn) -> & write(iout,*) "ethetai",ethetai -> do m=1,ntheterm3 -> do k=2,ndouble -> do l=1,k-1 -> aux=ffthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)+ -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)+ -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l) -> ethetai=ethetai+sinkt(m)*aux -> dethetai=dethetai+0.5d0*m*coskt(m)*aux -> dephii=dephii+l*sinkt(m)*( -> & -ffthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)- -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)+ -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)) -> dephii1=dephii1+(k-l)*sinkt(m)*( -> & -ffthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)+ -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)- -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)) -> if (lprn) then -> write (iout,*) "m",m," k",k," l",l," ffthet", -> & ffthet(l,k,m,ityp1,ityp2,ityp3), -> & ffthet(k,l,m,ityp1,ityp2,ityp3)," ggthet", -> & ggthet(l,k,m,ityp1,ityp2,ityp3), -> & ggthet(k,l,m,ityp1,ityp2,ityp3)," ethetai",ethetai -> write (iout,*) cosph1ph2(l,k)*sinkt(m), -> & cosph1ph2(k,l)*sinkt(m), -> & sinph1ph2(l,k)*sinkt(m),sinph1ph2(k,l)*sinkt(m) -> endif -> enddo -> enddo -> enddo -> 10 continue -> if (lprn1) write (iout,'(i2,3f8.1,9h ethetai ,f10.5)') -> & i,theta(i)*rad2deg,phii*rad2deg, -> & phii1*rad2deg,ethetai -> etheta=etheta+ethetai -> if (i.gt.3) gloc(i-3,icg)=gloc(i-3,icg)+wang*dephii -> if (i.lt.nres) gloc(i-2,icg)=gloc(i-2,icg)+wang*dephii1 -> gloc(nphi+i-2,icg)=wang*dethetai -> enddo -> return -> end -> #endif -> #ifdef CRYST_SC -3252c3517 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3525a3791,4113 -> #else -> c---------------------------------------------------------------------------------- -> subroutine esc(escloc) -> C Calculate the local energy of a side chain and its derivatives in the -> C corresponding virtual-bond valence angles THETA and the spherical angles -> C ALPHA and OMEGA derived from AM1 all-atom calculations. -> C added by Urszula Kozlowska. 07/11/2007 -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'DIMENSIONS.ZSCOPT' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.VAR' -> include 'COMMON.SCROT' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> include 'COMMON.VECTORS' -> double precision x_prime(3),y_prime(3),z_prime(3) -> & , sumene,dsc_i,dp2_i,x(65), -> & xx,yy,zz,sumene1,sumene2,sumene3,sumene4,s1,s1_6,s2,s2_6, -> & de_dxx,de_dyy,de_dzz,de_dt -> double precision s1_t,s1_6_t,s2_t,s2_6_t -> double precision -> & dXX_Ci1(3),dYY_Ci1(3),dZZ_Ci1(3),dXX_Ci(3), -> & dYY_Ci(3),dZZ_Ci(3),dXX_XYZ(3),dYY_XYZ(3),dZZ_XYZ(3), -> & dt_dCi(3),dt_dCi1(3) -> common /sccalc/ time11,time12,time112,theti,it,nlobit -> delta=0.02d0*pi -> escloc=0.0D0 -> do i=loc_start,loc_end -> costtab(i+1) =dcos(theta(i+1)) -> sinttab(i+1) =dsqrt(1-costtab(i+1)*costtab(i+1)) -> cost2tab(i+1)=dsqrt(0.5d0*(1.0d0+costtab(i+1))) -> sint2tab(i+1)=dsqrt(0.5d0*(1.0d0-costtab(i+1))) -> cosfac2=0.5d0/(1.0d0+costtab(i+1)) -> cosfac=dsqrt(cosfac2) -> sinfac2=0.5d0/(1.0d0-costtab(i+1)) -> sinfac=dsqrt(sinfac2) -> it=itype(i) -> if (it.eq.10) goto 1 -> c -> C Compute the axes of tghe local cartesian coordinates system; store in -> c x_prime, y_prime and z_prime -> c -> do j=1,3 -> x_prime(j) = 0.00 -> y_prime(j) = 0.00 -> z_prime(j) = 0.00 -> enddo -> C write(2,*) "dc_norm", dc_norm(1,i+nres),dc_norm(2,i+nres), -> C & dc_norm(3,i+nres) -> do j = 1,3 -> x_prime(j) = (dc_norm(j,i) - dc_norm(j,i-1))*cosfac -> y_prime(j) = (dc_norm(j,i) + dc_norm(j,i-1))*sinfac -> enddo -> do j = 1,3 -> z_prime(j) = -uz(j,i-1) -> enddo -> c write (2,*) "i",i -> c write (2,*) "x_prime",(x_prime(j),j=1,3) -> c write (2,*) "y_prime",(y_prime(j),j=1,3) -> c write (2,*) "z_prime",(z_prime(j),j=1,3) -> c write (2,*) "xx",scalar(x_prime(1),x_prime(1)), -> c & " xy",scalar(x_prime(1),y_prime(1)), -> c & " xz",scalar(x_prime(1),z_prime(1)), -> c & " yy",scalar(y_prime(1),y_prime(1)), -> c & " yz",scalar(y_prime(1),z_prime(1)), -> c & " zz",scalar(z_prime(1),z_prime(1)) -> c -> C Transform the unit vector of the ith side-chain centroid, dC_norm(*,i), -> C to local coordinate system. Store in xx, yy, zz. -> c -> xx=0.0d0 -> yy=0.0d0 -> zz=0.0d0 -> do j = 1,3 -> xx = xx + x_prime(j)*dc_norm(j,i+nres) -> yy = yy + y_prime(j)*dc_norm(j,i+nres) -> zz = zz + z_prime(j)*dc_norm(j,i+nres) -> enddo -> -> xxtab(i)=xx -> yytab(i)=yy -> zztab(i)=zz -> C -> C Compute the energy of the ith side cbain -> C -> c write (2,*) "xx",xx," yy",yy," zz",zz -> it=itype(i) -> do j = 1,65 -> x(j) = sc_parmin(j,it) -> enddo -> #ifdef CHECK_COORD -> Cc diagnostics - remove later -> xx1 = dcos(alph(2)) -> yy1 = dsin(alph(2))*dcos(omeg(2)) -> zz1 = -dsin(alph(2))*dsin(omeg(2)) -> write(2,'(3f8.1,3f9.3,1x,3f9.3)') -> & alph(2)*rad2deg,omeg(2)*rad2deg,theta(3)*rad2deg,xx,yy,zz, -> & xx1,yy1,zz1 -> C," --- ", xx_w,yy_w,zz_w -> c end diagnostics -> #endif -> sumene1= x(1)+ x(2)*xx+ x(3)*yy+ x(4)*zz+ x(5)*xx**2 -> & + x(6)*yy**2+ x(7)*zz**2+ x(8)*xx*zz+ x(9)*xx*yy -> & + x(10)*yy*zz -> sumene2= x(11) + x(12)*xx + x(13)*yy + x(14)*zz + x(15)*xx**2 -> & + x(16)*yy**2 + x(17)*zz**2 + x(18)*xx*zz + x(19)*xx*yy -> & + x(20)*yy*zz -> sumene3= x(21) +x(22)*xx +x(23)*yy +x(24)*zz +x(25)*xx**2 -> & +x(26)*yy**2 +x(27)*zz**2 +x(28)*xx*zz +x(29)*xx*yy -> & +x(30)*yy*zz +x(31)*xx**3 +x(32)*yy**3 +x(33)*zz**3 -> & +x(34)*(xx**2)*yy +x(35)*(xx**2)*zz +x(36)*(yy**2)*xx -> & +x(37)*(yy**2)*zz +x(38)*(zz**2)*xx +x(39)*(zz**2)*yy -> & +x(40)*xx*yy*zz -> sumene4= x(41) +x(42)*xx +x(43)*yy +x(44)*zz +x(45)*xx**2 -> & +x(46)*yy**2 +x(47)*zz**2 +x(48)*xx*zz +x(49)*xx*yy -> & +x(50)*yy*zz +x(51)*xx**3 +x(52)*yy**3 +x(53)*zz**3 -> & +x(54)*(xx**2)*yy +x(55)*(xx**2)*zz +x(56)*(yy**2)*xx -> & +x(57)*(yy**2)*zz +x(58)*(zz**2)*xx +x(59)*(zz**2)*yy -> & +x(60)*xx*yy*zz -> dsc_i = 0.743d0+x(61) -> dp2_i = 1.9d0+x(62) -> dscp1=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2tab(i+1)+yy*sint2tab(i+1))) -> dscp2=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2tab(i+1)-yy*sint2tab(i+1))) -> s1=(1+x(63))/(0.1d0 + dscp1) -> s1_6=(1+x(64))/(0.1d0 + dscp1**6) -> s2=(1+x(65))/(0.1d0 + dscp2) -> s2_6=(1+x(65))/(0.1d0 + dscp2**6) -> sumene = ( sumene3*sint2tab(i+1) + sumene1)*(s1+s1_6) -> & + (sumene4*cost2tab(i+1) +sumene2)*(s2+s2_6) -> c write(2,'(i2," sumene",7f9.3)') i,sumene1,sumene2,sumene3, -> c & sumene4, -> c & dscp1,dscp2,sumene -> c sumene = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> escloc = escloc + sumene -> c write (2,*) "escloc",escloc -> if (.not. calc_grad) goto 1 -> #ifdef DEBUG -> C -> C This section to check the numerical derivatives of the energy of ith side -> C chain in xx, yy, zz, and theta. Use the -DDEBUG compiler option or insert -> C #define DEBUG in the code to turn it on. -> C -> write (2,*) "sumene =",sumene -> aincr=1.0d-7 -> xxsave=xx -> xx=xx+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dxx_num=(sumenep-sumene)/aincr -> xx=xxsave -> write (2,*) "xx+ sumene from enesc=",sumenep -> yysave=yy -> yy=yy+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dyy_num=(sumenep-sumene)/aincr -> yy=yysave -> write (2,*) "yy+ sumene from enesc=",sumenep -> zzsave=zz -> zz=zz+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dzz_num=(sumenep-sumene)/aincr -> zz=zzsave -> write (2,*) "zz+ sumene from enesc=",sumenep -> costsave=cost2tab(i+1) -> sintsave=sint2tab(i+1) -> cost2tab(i+1)=dcos(0.5d0*(theta(i+1)+aincr)) -> sint2tab(i+1)=dsin(0.5d0*(theta(i+1)+aincr)) -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dt_num=(sumenep-sumene)/aincr -> write (2,*) " t+ sumene from enesc=",sumenep -> cost2tab(i+1)=costsave -> sint2tab(i+1)=sintsave -> C End of diagnostics section. -> #endif -> C -> C Compute the gradient of esc -> C -> pom_s1=(1.0d0+x(63))/(0.1d0 + dscp1)**2 -> pom_s16=6*(1.0d0+x(64))/(0.1d0 + dscp1**6)**2 -> pom_s2=(1.0d0+x(65))/(0.1d0 + dscp2)**2 -> pom_s26=6*(1.0d0+x(65))/(0.1d0 + dscp2**6)**2 -> pom_dx=dsc_i*dp2_i*cost2tab(i+1) -> pom_dy=dsc_i*dp2_i*sint2tab(i+1) -> pom_dt1=-0.5d0*dsc_i*dp2_i*(xx*sint2tab(i+1)-yy*cost2tab(i+1)) -> pom_dt2=-0.5d0*dsc_i*dp2_i*(xx*sint2tab(i+1)+yy*cost2tab(i+1)) -> pom1=(sumene3*sint2tab(i+1)+sumene1) -> & *(pom_s1/dscp1+pom_s16*dscp1**4) -> pom2=(sumene4*cost2tab(i+1)+sumene2) -> & *(pom_s2/dscp2+pom_s26*dscp2**4) -> sumene1x=x(2)+2*x(5)*xx+x(8)*zz+ x(9)*yy -> sumene3x=x(22)+2*x(25)*xx+x(28)*zz+x(29)*yy+3*x(31)*xx**2 -> & +2*x(34)*xx*yy +2*x(35)*xx*zz +x(36)*(yy**2) +x(38)*(zz**2) -> & +x(40)*yy*zz -> sumene2x=x(12)+2*x(15)*xx+x(18)*zz+ x(19)*yy -> sumene4x=x(42)+2*x(45)*xx +x(48)*zz +x(49)*yy +3*x(51)*xx**2 -> & +2*x(54)*xx*yy+2*x(55)*xx*zz+x(56)*(yy**2)+x(58)*(zz**2) -> & +x(60)*yy*zz -> de_dxx =(sumene1x+sumene3x*sint2tab(i+1))*(s1+s1_6) -> & +(sumene2x+sumene4x*cost2tab(i+1))*(s2+s2_6) -> & +(pom1+pom2)*pom_dx -> #ifdef DEBUG -> write(2,*), "de_dxx = ", de_dxx,de_dxx_num -> #endif -> C -> sumene1y=x(3) + 2*x(6)*yy + x(9)*xx + x(10)*zz -> sumene3y=x(23) +2*x(26)*yy +x(29)*xx +x(30)*zz +3*x(32)*yy**2 -> & +x(34)*(xx**2) +2*x(36)*yy*xx +2*x(37)*yy*zz +x(39)*(zz**2) -> & +x(40)*xx*zz -> sumene2y=x(13) + 2*x(16)*yy + x(19)*xx + x(20)*zz -> sumene4y=x(43)+2*x(46)*yy+x(49)*xx +x(50)*zz -> & +3*x(52)*yy**2+x(54)*xx**2+2*x(56)*yy*xx +2*x(57)*yy*zz -> & +x(59)*zz**2 +x(60)*xx*zz -> de_dyy =(sumene1y+sumene3y*sint2tab(i+1))*(s1+s1_6) -> & +(sumene2y+sumene4y*cost2tab(i+1))*(s2+s2_6) -> & +(pom1-pom2)*pom_dy -> #ifdef DEBUG -> write(2,*), "de_dyy = ", de_dyy,de_dyy_num -> #endif -> C -> de_dzz =(x(24) +2*x(27)*zz +x(28)*xx +x(30)*yy -> & +3*x(33)*zz**2 +x(35)*xx**2 +x(37)*yy**2 +2*x(38)*zz*xx -> & +2*x(39)*zz*yy +x(40)*xx*yy)*sint2tab(i+1)*(s1+s1_6) -> & +(x(4) + 2*x(7)*zz+ x(8)*xx + x(10)*yy)*(s1+s1_6) -> & +(x(44)+2*x(47)*zz +x(48)*xx +x(50)*yy +3*x(53)*zz**2 -> & +x(55)*xx**2 +x(57)*(yy**2)+2*x(58)*zz*xx +2*x(59)*zz*yy -> & +x(60)*xx*yy)*cost2tab(i+1)*(s2+s2_6) -> & + ( x(14) + 2*x(17)*zz+ x(18)*xx + x(20)*yy)*(s2+s2_6) -> #ifdef DEBUG -> write(2,*), "de_dzz = ", de_dzz,de_dzz_num -> #endif -> C -> de_dt = 0.5d0*sumene3*cost2tab(i+1)*(s1+s1_6) -> & -0.5d0*sumene4*sint2tab(i+1)*(s2+s2_6) -> & +pom1*pom_dt1+pom2*pom_dt2 -> #ifdef DEBUG -> write(2,*), "de_dt = ", de_dt,de_dt_num -> #endif -> c -> C -> cossc=scalar(dc_norm(1,i),dc_norm(1,i+nres)) -> cossc1=scalar(dc_norm(1,i-1),dc_norm(1,i+nres)) -> cosfac2xx=cosfac2*xx -> sinfac2yy=sinfac2*yy -> do k = 1,3 -> dt_dCi(k) = -(dc_norm(k,i-1)+costtab(i+1)*dc_norm(k,i))* -> & vbld_inv(i+1) -> dt_dCi1(k)= -(dc_norm(k,i)+costtab(i+1)*dc_norm(k,i-1))* -> & vbld_inv(i) -> pom=(dC_norm(k,i+nres)-cossc*dC_norm(k,i))*vbld_inv(i+1) -> pom1=(dC_norm(k,i+nres)-cossc1*dC_norm(k,i-1))*vbld_inv(i) -> c write (iout,*) "i",i," k",k," pom",pom," pom1",pom1, -> c & " dt_dCi",dt_dCi(k)," dt_dCi1",dt_dCi1(k) -> c write (iout,*) "dC_norm",(dC_norm(j,i),j=1,3), -> c & (dC_norm(j,i-1),j=1,3)," vbld_inv",vbld_inv(i+1),vbld_inv(i) -> dXX_Ci(k)=pom*cosfac-dt_dCi(k)*cosfac2xx -> dXX_Ci1(k)=-pom1*cosfac-dt_dCi1(k)*cosfac2xx -> dYY_Ci(k)=pom*sinfac+dt_dCi(k)*sinfac2yy -> dYY_Ci1(k)=pom1*sinfac+dt_dCi1(k)*sinfac2yy -> dZZ_Ci1(k)=0.0d0 -> dZZ_Ci(k)=0.0d0 -> do j=1,3 -> dZZ_Ci(k)=dZZ_Ci(k)-uzgrad(j,k,2,i-1)*dC_norm(j,i+nres) -> dZZ_Ci1(k)=dZZ_Ci1(k)-uzgrad(j,k,1,i-1)*dC_norm(j,i+nres) -> enddo -> -> dXX_XYZ(k)=vbld_inv(i+nres)*(x_prime(k)-xx*dC_norm(k,i+nres)) -> dYY_XYZ(k)=vbld_inv(i+nres)*(y_prime(k)-yy*dC_norm(k,i+nres)) -> dZZ_XYZ(k)=vbld_inv(i+nres)*(z_prime(k)-zz*dC_norm(k,i+nres)) -> c -> dt_dCi(k) = -dt_dCi(k)/sinttab(i+1) -> dt_dCi1(k)= -dt_dCi1(k)/sinttab(i+1) -> enddo -> -> do k=1,3 -> dXX_Ctab(k,i)=dXX_Ci(k) -> dXX_C1tab(k,i)=dXX_Ci1(k) -> dYY_Ctab(k,i)=dYY_Ci(k) -> dYY_C1tab(k,i)=dYY_Ci1(k) -> dZZ_Ctab(k,i)=dZZ_Ci(k) -> dZZ_C1tab(k,i)=dZZ_Ci1(k) -> dXX_XYZtab(k,i)=dXX_XYZ(k) -> dYY_XYZtab(k,i)=dYY_XYZ(k) -> dZZ_XYZtab(k,i)=dZZ_XYZ(k) -> enddo -> -> do k = 1,3 -> c write (iout,*) "k",k," dxx_ci1",dxx_ci1(k)," dyy_ci1", -> c & dyy_ci1(k)," dzz_ci1",dzz_ci1(k) -> c write (iout,*) "k",k," dxx_ci",dxx_ci(k)," dyy_ci", -> c & dyy_ci(k)," dzz_ci",dzz_ci(k) -> c write (iout,*) "k",k," dt_dci",dt_dci(k)," dt_dci", -> c & dt_dci(k) -> c write (iout,*) "k",k," dxx_XYZ",dxx_XYZ(k)," dyy_XYZ", -> c & dyy_XYZ(k)," dzz_XYZ",dzz_XYZ(k) -> gscloc(k,i-1)=gscloc(k,i-1)+de_dxx*dxx_ci1(k) -> & +de_dyy*dyy_ci1(k)+de_dzz*dzz_ci1(k)+de_dt*dt_dCi1(k) -> gscloc(k,i)=gscloc(k,i)+de_dxx*dxx_Ci(k) -> & +de_dyy*dyy_Ci(k)+de_dzz*dzz_Ci(k)+de_dt*dt_dCi(k) -> gsclocx(k,i)= de_dxx*dxx_XYZ(k) -> & +de_dyy*dyy_XYZ(k)+de_dzz*dzz_XYZ(k) -> enddo -> c write(iout,*) "ENERGY GRAD = ", (gscloc(k,i-1),k=1,3), -> c & (gscloc(k,i),k=1,3),(gsclocx(k,i),k=1,3) -> -> C to check gradient call subroutine check_grad -> -> 1 continue -> enddo -> return -> end -> #endif -3563c4151 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3611c4199 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3694c4282 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3780c4368 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3847a4436,4486 -> subroutine eback_sc_corr(esccor) -> c 7/21/2007 Correlations between the backbone-local and side-chain-local -> c conformational states; temporarily implemented as differences -> c between UNRES torsional potentials (dependent on three types of -> c residues) and the torsional potentials dependent on all 20 types -> c of residues computed from AM1 energy surfaces of terminally-blocked -> c amino-acid residues. -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'DIMENSIONS.ZSCOPT' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.TORSION' -> include 'COMMON.SCCOR' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.NAMES' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> logical lprn -> C Set lprn=.true. for debugging -> lprn=.false. -> c lprn=.true. -> c write (iout,*) "EBACK_SC_COR",iphi_start,iphi_end,nterm_sccor -> esccor=0.0D0 -> do i=iphi_start,iphi_end -> esccor_ii=0.0D0 -> itori=itype(i-2) -> itori1=itype(i-1) -> phii=phi(i) -> gloci=0.0D0 -> do j=1,nterm_sccor -> v1ij=v1sccor(j,itori,itori1) -> v2ij=v2sccor(j,itori,itori1) -> cosphi=dcos(j*phii) -> sinphi=dsin(j*phii) -> esccor=esccor+v1ij*cosphi+v2ij*sinphi -> gloci=gloci+j*(v2ij*cosphi-v1ij*sinphi) -> enddo -> if (lprn) -> & write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)') -> & restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1, -> & (v1sccor(j,itori,itori1),j=1,6),(v2sccor(j,itori,itori1),j=1,6) -> gsccor_loc(i-3)=gloci -> enddo -> return -> end -> c------------------------------------------------------------------------------ -4003c4642 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -4189c4828 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -4498c5137 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -4565c5204 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -4942c5581 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5059c5698 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5460c6099 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5597c6236 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5703c6342 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5890c6529 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -6006c6645 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -6252c6891 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' diff --git a/source/cluster/wham/src-M/energy_p_new.F b/source/cluster/wham/src-M/energy_p_new.F index aa1ef75..c02d085 100644 --- a/source/cluster/wham/src-M/energy_p_new.F +++ b/source/cluster/wham/src-M/energy_p_new.F @@ -6270,18 +6270,18 @@ c-------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ /j\ -C / \ / \ -C /| o | | o |\ -C \ j|/k\| / \ |/k\|l / -C \ / \ / \ / \ / -C o o o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ /j\ C +C / \ / \ C +C /| o | | o |\ C +C \ j|/k\| / \ |/k\|l / C +C \ / \ / \ / \ / C +C o o o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC itk=itortyp(itype(k)) s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i)) @@ -6377,18 +6377,18 @@ c---------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C \ /l\ /j\ / -C \ / \ / \ / -C o| o | | o |o -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C \ /l\ /j\ / C +C \ / \ / \ / C +C o| o | | o |o C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l C AL 7/4/01 s1 would occur in the sixth-order moment, @@ -6561,18 +6561,18 @@ c---------------------------------------------------------------------------- double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C j|/k\| / |/k\|l / -C / \ / / \ / -C / o / o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C j|/k\| / |/k\|l / C +C / \ / / \ / C +C / o / o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective @@ -6679,18 +6679,18 @@ c---------------------------------------------------------------------------- & auxvec1(2),auxmat1(2,2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o \ o \ -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o \ o \ C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective diff --git a/source/cluster/wham/src-M/hc.f b/source/cluster/wham/src-M/hc.f index 3788cdb..a1a089e 100644 --- a/source/cluster/wham/src-M/hc.f +++ b/source/cluster/wham/src-M/hc.f @@ -414,8 +414,10 @@ C-------------------------------------------------C CHARACTER*80 LINE INTEGER IORDER(LEV),HEIGHT(LEV) REAL CRITVAL(LEV) - INTEGER OUT(3*LEV,3*LEV) - INTEGER UP,ACROSS,BLANK +c INTEGER OUT(3*LEV,3*LEV) +c INTEGER UP,ACROSS,BLANK + CHARACTER*1 OUT(3*LEV,3*LEV) + CHARACTER*1 UP,ACROSS,BLANK DATA UP,ACROSS,BLANK/'|','-',' '/ C C diff --git a/source/cluster/wham/src-M/map b/source/cluster/wham/src-M/map deleted file mode 100644 index 9c88872..0000000 --- a/source/cluster/wham/src-M/map +++ /dev/null @@ -1,4716 +0,0 @@ -pgf90 -C -g -c -I. -I../src_MD_T -I../src_MD -I/users/adam/MEY_MD/src -I/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/include -DLINUX -DPGI -DSPLITELE -DPROCOR -DMP -DMPI -C -g -c -I. -I../src_MD_T -I../src_MD -I/users/adam/MEY_MD/src -I/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/include initialize_p.F -pgf90 -C -g main_clust.o arcos.o cartprint.o chainbuild.o convert.o initialize_p.o matmult.o readrtns.o pinorm.o rescode.o intcor.o timing.o misc.o geomout.o readpdb.o read_coords.o parmread.o probabl.o fitsq.o hc.o track.o wrtclust.o srtclust.o noyes.o contact.o printmat.o int_from_cart1.o energy_p_new.o icant.o proc_proc.o work_partition.o setup_var.o -L/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib -lmpich -lpmpich -m -o /users/adam/ZSCOREZ/bin/unres_clustMD_MPI -Archive member included because of file (symbol) - -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) - work_partition.o (mpi_abort_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) - read_coords.o (mpi_allgather_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) - probabl.o (mpi_bcast_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) - main_clust.o (mpi_comm_rank_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) - main_clust.o (mpi_comm_size_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) - main_clust.o (mpi_dup_fn_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) - main_clust.o (mpi_finalize_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) - main_clust.o (mpi_gatherv_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - main_clust.o (mpi_init_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_copyfnf.o) - main_clust.o (mpi_null_copy_fn_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_del_fnf.o) - main_clust.o (mpi_null_delete_fn_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) - read_coords.o (mpi_recv_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) - read_coords.o (mpi_send_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) - main_clust.o (mpi_wtick_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) - main_clust.o (mpi_wtime_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) (mpir_iargc_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) (MPIR_F_TRUE) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfcmn.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (mpir_init_fcm_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) (MPIR_Error) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) (MPI_Send) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) (MPI_Recv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (MPIR_Free_perm_type) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) (MPI_Abort) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) (MPI_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) (MPIR_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) (MPI_Finalize) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errorstring.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) (MPI_Error_string) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Init_dtes) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Errhandler_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtime.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) (MPI_Wtime) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) (MPI_Wtick) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) (MPIR_Err_setmsg) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(msgqdllloc.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Msg_queue_export) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_HBT_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_PointerPerm) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (MPIR_BsendRelease) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (MPI_Keyval_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (MPI_Attr_get) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Attr_create_tree) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (MPI_Attr_put) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Group_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_CreateGroup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Comm_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) (MPI_Comm_rank) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPI_Comm_set_name) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) (MPI_Comm_size) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Comm_make_coll) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) (MPIR_Context_dealloc) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fn.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) (MPIR_dup_fn) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Barrier) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) (MPI_Bcast) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) (MPI_Gatherv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) (MPI_Allgather) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) (PMPI_Allreduce) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_MAXF) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Op_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Op_setup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) (MPIR_inter_collops) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) (MPIR_intra_collops) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (MPIR_intra_Scan) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Topology_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) (MPI_Status_c2f) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (p4_proc_info) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (bm_start) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (rm_start) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (net_setup_anon_listener) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (create_remote_processes) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (handle_connection_interrupt) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (socket_close_conn) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (listener) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) (start_slave) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (usc_init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPID_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) (MPID_SendDatatype) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) (MPID_RecvDatatype) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) (MPID_Msg_rep) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) (MPID_PackMessage) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) (MPID_Type_swap_copy) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) (MPID_DEBUG_FILE) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) (MPID_CH_InitMsgPass) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Init_hetero) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) (MPID_CH_Wtick) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_P4_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (MPID_Dump_queues) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPID_ArgSqueeze) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPID_SBinit) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) (MPID_Process_group_init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_PacketFlowSetup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_FinishCancelPackets) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Isend) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Irecv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) (MPI_Wait) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) (MPI_Test) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Cancel) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Waitall) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) (MPI_Sendrecv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) (PMPI_Testall) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Get_count) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) (MPI_Type_commit) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) (MPI_Type_contiguous) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) (MPI_Type_extent) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Type_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Type_indexed) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) (MPI_Type_lb) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Type_size) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) (MPI_Type_struct) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) (MPI_Pack_size) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) (MPI_Pack) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Unpack) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Breakpoint) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) (MPI_Errhandler_set) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) (MPIR_Unpack) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyvalcreate.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) (MPI_Keyval_create) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Reduce) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (p4_global) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (MD_initmem) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (p4_error) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (process_args) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (alloc_local_bm) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (p4_dprintf) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) (p4_alloc_procgroup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) (p4_recv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) (p4_moninit) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) (p4_broadcastx) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) (MPID_IrecvContig) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) (MPID_SendContig) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) (MPID_SendCancel) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Eagerb_setup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Rndvb_setup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Check_incoming) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Short_setup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) (MPID_DebugFlow) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) (PMPI_Type_hindexed) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dmpipk.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) (MPIR_Pack_Hvector) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - main_clust.o (pgf90io_close) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) - readpdb.o (pghpfio_fmt_read) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - main_clust.o (pgf90io_encode_fmt) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) (__hpfio_errinit) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - readrtns.o (pgf90io_fmtr_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - main_clust.o (pgf90io_fmtw_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - /usr/pgi/linux86-64/6.0/lib/f90main.o (pgf90_exit) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - readrtns.o (pgf90io_ldr_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - main_clust.o (pgf90io_ldw_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - main_clust.o (pgf90io_open) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(pgifiodf.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) (pghpfio) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - misc.o (pgf90io_rewind) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - main_clust.o (pgf90io_unf_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) (__hpfio_alloc_fcb) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) (__hpf_atoxi64) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - parmread.o (pgf90_alloc) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - main_clust.o (pghpf_function_entry) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) (__hpf_status_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) (__hpfio_main) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) (__hpf_abort) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) (__hpf_malloc_without_abort) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - main_clust.o (pgf90_subchk) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - main_clust.o (pgf90_template1) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_rrecvl) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_print_version) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) (__hpf_getgbuf) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_setarg) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__f90_allo_term_i8) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) (__hpfio_assign) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) (__f90io_conv_buf) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) (__hpfio_getnum) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) (__hpfio_ecvt) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_strtol) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) (f90DummyGenBlockPtr) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) (__hpf_describe_replication) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) (pghpf_comm_start) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) (pghpf_comm_copy) -/usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_abortx) -/usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) (__hpf_erecv) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) (__hpfio_cnfg_) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopy.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) (__hpf_bcopy) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopys.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) (__hpf_bcopysl) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_zopen) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) (__hpf_chn_1to1) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) (__hpf_size_of) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_prof_init) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof2.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_prof_arecv) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(genlist.o) - /usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) (__hpf_initndx) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) (__hpf_sethand) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_stat_init) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_trac_init) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace2.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_trac_arecv) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(xfer_heap_dum.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) (__hpf_sbrk) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(dacos.o) - arcos.o (__mth_i_dacos) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - readrtns.o (ftn_str_copy) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(flush3f.o) - main_clust.o (flush_) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) - readrtns.o (getenv_) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(fdate3f.o) - geomout.o (fdate_) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getarg3f.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) (getarg_) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) (ecvt) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(utils3f.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) (__fstr2cstr) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) (__fio_eq_str) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgifiodf.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) (pgi_fio) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) (__fio_error) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) (ftn_exit) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) (__fio_open) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) (__fio_close) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) (__fio_cnfg_) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) (__PC_DOS) -/usr/lib64/libc_nonshared.a(elf-init.oS) - /usr/lib64/crt1.o (__libc_csu_init) -/usr/lib64/libc_nonshared.a(atexit.oS) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (atexit) -/usr/pgi/linux86-64/6.0/lib/libnspgc.a(pgdbg_utils.o) - main_clust.o (__pgdbg_stub) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) (__utl_i_add64) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - parmread.o (__mth_i_dpowi) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dfloatuk.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (__mth_i_dfloatuk) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dint.o) - timing.o (__mth_i_dint) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) - /usr/pgi/linux86-64/6.0/lib/f90main.o (__pgio_environ) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) (_mp_malloc) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) (_mp_bcs_stdio) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) (__pgio_tempnam) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) (__builtin_va_gparg1) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__pgio_get_argv) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - chainbuild.o (__mth_i_dsin) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - energy_p_new.o (__mth_i_dtan) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - initialize_p.o (__mth_i_datan) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(fastmath.o) - srtclust.o (__fmth_i_dlog) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(crit_dum.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) (_mp_p) -/usr/lib64/libc_nonshared.a(fstat.oS) - /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) (fstat) - -Allocating common symbols -Common symbol size file - -__P4LEN 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) -MPIR_I_DOUBLE 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -fnames_ 0xf03 main_clust.o -torsion_ 0xfd8 initialize_p.o -__hpf_zmem 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -MPI_FLOAT_INT_var 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_debug_cl 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -total_pack_unacked 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) -contacts_ 0xbb88 readrtns.o -contacts_hb_ 0xd973f8 readrtns.o -stoptim_ 0x4 main_clust.o -execer_mynodenum 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_LONG_LONG_INT - 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_Op_errno 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) -p4_global 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_true_log4 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -logging_flag 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -rotat_old_ 0x2ee0 readrtns.o -minimm_ 0x18 initialize_p.o -p4_remote_debug_level - 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPI_SHORT_INT_var 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -execer_mastport 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -restraints_ 0x8 initialize_p.o -csaunits_ 0x30 main_clust.o -execer_numtotnodes 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -execer_masthost 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -geo_ 0x40 main_clust.o -stretch_ 0x150 main_clust.o -procgroup_file 0x100 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPID_recvs 0x20 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) -mpi_data_ 0x23c main_clust.o -contacts1_ 0x2258f8 readrtns.o -previous_ 0x895a1c4 track.o -MPIR_I_LB 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -csafiles_ 0xc00 main_clust.o -rm_outfile_head 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_PACKED 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPID_byte_order 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) -MPIR_real4_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -mpipriv_ 0x24 main_clust.o -__hpf_mask_log4 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -varref_ 0x2710 main_clust.o -MPI_LONG_INT_var 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -calcthet_ 0x9c energy_p_new.o -__hpf_mask_int1 0x1 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -indices_ 0x18 chainbuild.o -sserver_port 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_errhandlers 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -locel_ 0x208 energy_p_new.o -listener_info 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -refstruct_ 0x2f1c main_clust.o -whoami_p4 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -pghpf_me_ 0x4 main_clust.o -__hpf_shifts 0x88 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_I_LONG_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_LONG_DOUBLE_INT - 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_entry_mflag 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) -__hpf_test 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) -sccalc_ 0x28 energy_p_new.o -MPIR_debug_s 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -kutas_ 0x4 energy_p_new.o -precomp2_ 0x17700 readrtns.o -MPIR_I_2COMPLEX 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -body_ 0x6c00 main_clust.o -execer_myhost 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__P4FROM 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) -ffield_ 0x15c initialize_p.o -MPIR_rhandles 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -MPIR_I_2DOUBLE_PRECISION - 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -torcnstr_ 0x1780 energy_p_new.o -interact_ 0x5f64 main_clust.o -MPIR_I_COMPLEX 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -derivat_ 0x30864c initialize_p.o -MPIR_hbt_els 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) -MPIR_debug_c 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -__hpf_np2 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -__hpf_tids 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -__argv_save 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) -MPIR_I_INTEGER 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__hpf_true_log1 0x1 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -precomp1_ 0x16760 readrtns.o -MPIR_shandles 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -clu_ 0x45fb0fc main_clust.o -var_ 0x5600 main_clust.o -envar_fortranopt 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) -peptbond_ 0x28 chainbuild.o -__hpf_ioproc 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -p4_debug_level 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_mask_log 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_I_SHORT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_mask_int4 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_I_DOUBLE_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -invlen_ 0xfa0 chainbuild.o -free_ 0xc main_clust.o -__hpf_tcpus 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -p4_local 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_quiet 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -MPIR_int1_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__hpf_true_log8 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_debug_sqel 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -__P4GLOBALTYPE 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) -MPI_DOUBLE_INT_var 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_pario 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -links_split_ 0x8 initialize_p.o -deriv_loc_ 0x1e0 initialize_p.o -execer_starting_remotes - 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_debug_qh 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -links_ 0x1e4 initialize_p.o -__f90io_conv_buf 0x60 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) -__ftn_32in64_ 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) -MPIR_I_LONG_DOUBLE 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -srutu_ 0x4 energy_p_new.o -MPIR_I_DOUBLE_PRECISION - 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__argc_save 0x4 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) -MPIR_fdtels 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -__hpf_mask_int8 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_All_communicators - 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -MPIR_I_REAL 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -pghpf_0l_ 0x20 main_clust.o -diploc_ 0x3938 readrtns.o -__hpf_lcpu 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -__hpf_mask_log1 0x1 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -thetas_ 0x960 chainbuild.o -p4_myname_in_procgroup - 0x40 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_LOGICAL 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -MPI_LONG_DOUBLE_INT_var - 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_debug_q 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -MPIR_hbts 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) -MPIR_debug_sq 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -ch_debug_buf 0x80 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -header_ 0x50 main_clust.o -rotat_ 0xbb80 readrtns.o -__hpf_mask_int2 0x2 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -local_domain 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_heapz 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -pghpf_0_ 0x10 main_clust.o -__hpf_mask_log2 0x2 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -time1_ 0x28 main_clust.o -MPIR_I_2DOUBLE 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_UB 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -calc_ 0x1f0 energy_p_new.o -MPIR_I_2DCOMPLEX 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__hpf_debug 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -execer_id 0x84 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -vectors_ 0x14820 energy_p_new.o -tty_orig 0x12 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) -sbridge_ 0x74 initialize_p.o -MPIR_I_2FLOAT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPID_MyWorldRank 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -MPIR_I_2INTEGER 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__P4TYPE 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) -cntrl_ 0x44 main_clust.o -MPIR_int4_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -p4_rm_rank 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_tid 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -MPIR_real8_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -MPIR_I_DCOMPLEX 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -pghpf_lineno_ 0x4 main_clust.o -clu1_ 0x898ed84 main_clust.o -execer_mynumprocs 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -parfiles_ 0xa00 main_clust.o -MPIR_I_FLOAT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPID_MyWorldSize 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -hand_start_remotes 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_2INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -rotmat_ 0x11940 main_clust.o -MPIR_I_BYTE 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -dipint_ 0x206cc80 readrtns.o -pghpf_np_ 0x4 main_clust.o -p4_brdcst_info 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -fourier_ 0x344 initialize_p.o -__hpf_true_log2 0x2 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_qels 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -MPIR_I_CHAR 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_FLOAT_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_int2_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -MPIR_dtes 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -iounits_ 0x5c main_clust.o -history_ 0x1d4d4 track.o -MPIR_I_USHORT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_UCHAR 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_debugn 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -execer_pg 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_heap_block 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -MPIR_I_ULONG 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -expect_ack 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) -bm_outfile 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -p4_wd 0x100 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_mask_log8 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_I_SHORT_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_topo_els 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -fourier1_ 0x1a0 initialize_p.o -MPIR_I_LONG 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_2REAL 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -chain_ 0xbbb8 main_clust.o -MPIR_I_UINT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -alles_ 0x238bdac main_clust.o -MPIR_debug_qel 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -torsiond_ 0x14200 initialize_p.o -dipmat_ 0x1e84800 readrtns.o -sclocal_ 0x22cc chainbuild.o -MPIR_debug_rh 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -globmemsize 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -pghpf_0c_ 0x1 main_clust.o -MPID_pack_info 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - -Memory Configuration - -Name Origin Length Attributes -*default* 0x0000000000000000 0xffffffffffffffff - -Linker script and memory map - -LOAD /usr/lib64/crt1.o -LOAD /usr/lib64/crti.o -LOAD /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o -LOAD /usr/pgi/linux86-64/6.0/lib/f90main.o -LOAD main_clust.o -LOAD arcos.o -LOAD cartprint.o -LOAD chainbuild.o -LOAD convert.o -LOAD initialize_p.o -LOAD matmult.o -LOAD readrtns.o -LOAD pinorm.o -LOAD rescode.o -LOAD intcor.o -LOAD timing.o -LOAD misc.o -LOAD geomout.o -LOAD readpdb.o -LOAD read_coords.o -LOAD parmread.o -LOAD probabl.o -LOAD fitsq.o -LOAD hc.o -LOAD track.o -LOAD wrtclust.o -LOAD srtclust.o -LOAD noyes.o -LOAD contact.o -LOAD printmat.o -LOAD int_from_cart1.o -LOAD energy_p_new.o -LOAD icant.o -LOAD proc_proc.o -LOAD work_partition.o -LOAD setup_var.o -LOAD /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a -LOAD /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libpmpich.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgf90.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgf902.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a -LOAD /usr/lib64/libc.so -START GROUP -LOAD /lib64/libc.so.6 -LOAD /usr/lib64/libc_nonshared.a -END GROUP -LOAD /usr/pgi/linux86-64/6.0/lib/libnspgc.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgc.a -LOAD /usr/lib64/libm.so -LOAD /usr/lib/gcc/x86_64-redhat-linux/3.4.2/libgcc.a -LOAD /usr/lib64/libc.so -START GROUP -LOAD /lib64/libc.so.6 -LOAD /usr/lib64/libc_nonshared.a -END GROUP -LOAD /usr/lib/gcc/x86_64-redhat-linux/3.4.2/libgcc.a -LOAD /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o -LOAD /usr/lib64/crtn.o - 0x0000000000400000 PROVIDE (__executable_start, 0x400000) - 0x00000000004001c8 . = (0x400000 + SIZEOF_HEADERS) - -.interp 0x00000000004001c8 0x1c - *(.interp) - .interp 0x00000000004001c8 0x1c /usr/lib64/crt1.o - -.note.ABI-tag 0x00000000004001e4 0x20 - .note.ABI-tag 0x00000000004001e4 0x20 /usr/lib64/crt1.o - -.hash 0x0000000000400208 0x494 - *(.hash) - .hash 0x0000000000400208 0x494 /usr/lib64/crt1.o - -.dynsym 0x00000000004006a0 0xf00 - *(.dynsym) - .dynsym 0x00000000004006a0 0xf00 /usr/lib64/crt1.o - -.dynstr 0x00000000004015a0 0x507 - *(.dynstr) - .dynstr 0x00000000004015a0 0x507 /usr/lib64/crt1.o - -.gnu.version 0x0000000000401aa8 0x140 - *(.gnu.version) - .gnu.version 0x0000000000401aa8 0x140 /usr/lib64/crt1.o - -.gnu.version_d - *(.gnu.version_d) - -.gnu.version_r 0x0000000000401be8 0x50 - *(.gnu.version_r) - .gnu.version_r - 0x0000000000401be8 0x50 /usr/lib64/crt1.o - -.rel.dyn - *(.rel.init) - *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) - *(.rel.fini) - *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) - *(.rel.data.rel.ro*) - *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) - *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) - *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) - *(.rel.ctors) - *(.rel.dtors) - *(.rel.got) - *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) - -.rela.dyn 0x0000000000401c38 0x90 - *(.rela.init) - *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) - *(.rela.fini) - *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) - *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) - *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) - *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) - *(.rela.ctors) - *(.rela.dtors) - *(.rela.got) - .rela.got 0x0000000000401c38 0x18 /usr/lib64/crt1.o - *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) - .rela.bss 0x0000000000401c50 0x78 /usr/lib64/crt1.o - -.rel.plt - *(.rel.plt) - -.rela.plt 0x0000000000401cc8 0xdc8 - *(.rela.plt) - .rela.plt 0x0000000000401cc8 0xdc8 /usr/lib64/crt1.o - -.init 0x0000000000402a90 0x1d - *(.init) - .init 0x0000000000402a90 0x9 /usr/lib64/crti.o - 0x0000000000402a90 _init - .init 0x0000000000402a99 0x5 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - .init 0x0000000000402a9e 0x5 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - .init 0x0000000000402aa3 0x5 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - .init 0x0000000000402aa8 0x5 /usr/lib64/crtn.o - -.plt 0x0000000000402ab0 0x940 - *(.plt) - .plt 0x0000000000402ab0 0x940 /usr/lib64/crt1.o - 0x0000000000402ac0 __cxa_atexit@@GLIBC_2.2.5 - 0x0000000000402ad0 fseek@@GLIBC_2.2.5 - 0x0000000000402ae0 geteuid@@GLIBC_2.2.5 - 0x0000000000402af0 xdr_array@@GLIBC_2.2.5 - 0x0000000000402b00 __libc_start_main@@GLIBC_2.2.5 - 0x0000000000402b10 fork@@GLIBC_2.2.5 - 0x0000000000402b20 catgets@@GLIBC_2.2.5 - 0x0000000000402b30 getrusage@@GLIBC_2.2.5 - 0x0000000000402b40 bcopy@@GLIBC_2.2.5 - 0x0000000000402b50 read@@GLIBC_2.2.5 - 0x0000000000402b60 chdir@@GLIBC_2.2.5 - 0x0000000000402b70 socket@@GLIBC_2.2.5 - 0x0000000000402b80 kill@@GLIBC_2.2.5 - 0x0000000000402b90 ftell@@GLIBC_2.2.5 - 0x0000000000402ba0 xdr_u_int@@GLIBC_2.2.5 - 0x0000000000402bb0 xdr_opaque@@GLIBC_2.2.5 - 0x0000000000402bc0 getchar@@GLIBC_2.2.5 - 0x0000000000402bd0 vsprintf@@GLIBC_2.2.5 - 0x0000000000402be0 write@@GLIBC_2.2.5 - 0x0000000000402bf0 toupper@@GLIBC_2.2.5 - 0x0000000000402c00 sigemptyset@@GLIBC_2.2.5 - 0x0000000000402c10 sigaddset@@GLIBC_2.2.5 - 0x0000000000402c20 wait@@GLIBC_2.2.5 - 0x0000000000402c30 gethostname@@GLIBC_2.2.5 - 0x0000000000402c40 isdigit@@GLIBC_2.2.5 - 0x0000000000402c50 htonl@@GLIBC_2.2.5 - 0x0000000000402c60 _IO_putc@@GLIBC_2.2.5 - 0x0000000000402c70 freopen@@GLIBC_2.2.5 - 0x0000000000402c80 getenv@@GLIBC_2.2.5 - 0x0000000000402c90 malloc@@GLIBC_2.2.5 - 0x0000000000402ca0 ferror@@GLIBC_2.2.5 - 0x0000000000402cb0 strncmp@@GLIBC_2.2.5 - 0x0000000000402cc0 accept@@GLIBC_2.2.5 - 0x0000000000402cd0 modf@@GLIBC_2.2.5 - 0x0000000000402ce0 strncat@@GLIBC_2.2.5 - 0x0000000000402cf0 setsid@@GLIBC_2.2.5 - 0x0000000000402d00 sigaction@@GLIBC_2.2.5 - 0x0000000000402d10 strncpy@@GLIBC_2.2.5 - 0x0000000000402d20 getdtablesize@@GLIBC_2.2.5 - 0x0000000000402d30 execlp@@GLIBC_2.2.5 - 0x0000000000402d40 memmove@@GLIBC_2.2.5 - 0x0000000000402d50 getpeername@@GLIBC_2.2.5 - 0x0000000000402d60 htons@@GLIBC_2.2.5 - 0x0000000000402d70 fwrite@@GLIBC_2.2.5 - 0x0000000000402d80 fclose@@GLIBC_2.2.5 - 0x0000000000402d90 vprintf@@GLIBC_2.2.5 - 0x0000000000402da0 sched_yield@@GLIBC_2.2.5 - 0x0000000000402db0 socketpair@@GLIBC_2.2.5 - 0x0000000000402dc0 xdr_float@@GLIBC_2.2.5 - 0x0000000000402dd0 fcntl@@GLIBC_2.2.5 - 0x0000000000402de0 listen@@GLIBC_2.2.5 - 0x0000000000402df0 feof@@GLIBC_2.2.5 - 0x0000000000402e00 strlen@@GLIBC_2.2.5 - 0x0000000000402e10 select@@GLIBC_2.2.5 - 0x0000000000402e20 getlogin@@GLIBC_2.2.5 - 0x0000000000402e30 ftruncate@@GLIBC_2.2.5 - 0x0000000000402e40 acos@@GLIBC_2.2.5 - 0x0000000000402e50 xdr_u_long@@GLIBC_2.2.5 - 0x0000000000402e60 getsockname@@GLIBC_2.2.5 - 0x0000000000402e70 fgetc@@GLIBC_2.2.5 - 0x0000000000402e80 fread@@GLIBC_2.2.5 - 0x0000000000402e90 inet_ntoa@@GLIBC_2.2.5 - 0x0000000000402ea0 strcpy@@GLIBC_2.2.5 - 0x0000000000402eb0 fprintf@@GLIBC_2.2.5 - 0x0000000000402ec0 perror@@GLIBC_2.2.5 - 0x0000000000402ed0 memcpy@@GLIBC_2.2.5 - 0x0000000000402ee0 strtol@@GLIBC_2.2.5 - 0x0000000000402ef0 fgets@@GLIBC_2.2.5 - 0x0000000000402f00 strcmp@@GLIBC_2.2.5 - 0x0000000000402f10 time@@GLIBC_2.2.5 - 0x0000000000402f20 getsockopt@@GLIBC_2.2.5 - 0x0000000000402f30 connect@@GLIBC_2.2.5 - 0x0000000000402f40 abort@@GLIBC_2.2.5 - 0x0000000000402f50 setsockopt@@GLIBC_2.2.5 - 0x0000000000402f60 realloc@@GLIBC_2.2.5 - 0x0000000000402f70 _exit@@GLIBC_2.2.5 - 0x0000000000402f80 _IO_getc@@GLIBC_2.2.5 - 0x0000000000402f90 fflush@@GLIBC_2.2.5 - 0x0000000000402fa0 ntohl@@GLIBC_2.2.5 - 0x0000000000402fb0 sscanf@@GLIBC_2.2.5 - 0x0000000000402fc0 setlocale@@GLIBC_2.2.5 - 0x0000000000402fd0 sleep@@GLIBC_2.2.5 - 0x0000000000402fe0 xdr_char@@GLIBC_2.2.5 - 0x0000000000402ff0 rindex@@GLIBC_2.2.5 - 0x0000000000403000 index@@GLIBC_2.2.5 - 0x0000000000403010 recv@@GLIBC_2.2.5 - 0x0000000000403020 printf@@GLIBC_2.2.5 - 0x0000000000403030 fileno@@GLIBC_2.2.5 - 0x0000000000403040 open@@GLIBC_2.2.5 - 0x0000000000403050 writev@@GLIBC_2.2.5 - 0x0000000000403060 ctime@@GLIBC_2.2.5 - 0x0000000000403070 xdr_double@@GLIBC_2.2.5 - 0x0000000000403080 uname@@GLIBC_2.2.5 - 0x0000000000403090 atoi@@GLIBC_2.2.5 - 0x00000000004030a0 bzero@@GLIBC_2.2.5 - 0x00000000004030b0 ntohs@@GLIBC_2.2.5 - 0x00000000004030c0 signal@@GLIBC_2.2.5 - 0x00000000004030d0 catopen@@GLIBC_2.2.5 - 0x00000000004030e0 __strtol_internal@@GLIBC_2.2.5 - 0x00000000004030f0 setitimer@@GLIBC_2.2.5 - 0x0000000000403100 nice@@GLIBC_2.2.5 - 0x0000000000403110 strchr@@GLIBC_2.2.5 - 0x0000000000403120 memset@@GLIBC_2.2.5 - 0x0000000000403130 sendto@@GLIBC_2.2.5 - 0x0000000000403140 xdr_short@@GLIBC_2.2.5 - 0x0000000000403150 strerror@@GLIBC_2.2.5 - 0x0000000000403160 unlink@@GLIBC_2.2.5 - 0x0000000000403170 isspace@@GLIBC_2.2.5 - 0x0000000000403180 clearerr@@GLIBC_2.2.5 - 0x0000000000403190 __strtod_internal@@GLIBC_2.2.5 - 0x00000000004031a0 getpid@@GLIBC_2.2.5 - 0x00000000004031b0 dup2@@GLIBC_2.2.5 - 0x00000000004031c0 fputc@@GLIBC_2.2.5 - 0x00000000004031d0 isatty@@GLIBC_2.2.5 - 0x00000000004031e0 fputs@@GLIBC_2.2.5 - 0x00000000004031f0 waitpid@@GLIBC_2.2.5 - 0x0000000000403200 exit@@GLIBC_2.2.5 - 0x0000000000403210 xdr_int@@GLIBC_2.2.5 - 0x0000000000403220 getpwuid@@GLIBC_2.2.5 - 0x0000000000403230 bind@@GLIBC_2.2.5 - 0x0000000000403240 xdr_u_short@@GLIBC_2.2.5 - 0x0000000000403250 calloc@@GLIBC_2.2.5 - 0x0000000000403260 access@@GLIBC_2.2.5 - 0x0000000000403270 sprintf@@GLIBC_2.2.5 - 0x0000000000403280 sigprocmask@@GLIBC_2.2.5 - 0x0000000000403290 __fxstat@@GLIBC_2.2.5 - 0x00000000004032a0 gethostbyname@@GLIBC_2.2.5 - 0x00000000004032b0 ioctl@@GLIBC_2.2.5 - 0x00000000004032c0 close@@GLIBC_2.2.5 - 0x00000000004032d0 __errno_location@@GLIBC_2.2.5 - 0x00000000004032e0 xdr_long@@GLIBC_2.2.5 - 0x00000000004032f0 xdr_u_char@@GLIBC_2.2.5 - 0x0000000000403300 puts@@GLIBC_2.2.5 - 0x0000000000403310 xdrmem_create@@GLIBC_2.2.5 - 0x0000000000403320 free@@GLIBC_2.2.5 - 0x0000000000403330 gettimeofday@@GLIBC_2.2.5 - 0x0000000000403340 fopen@@GLIBC_2.2.5 - 0x0000000000403350 bcmp@@GLIBC_2.2.5 - 0x0000000000403360 shutdown@@GLIBC_2.2.5 - 0x0000000000403370 putchar@@GLIBC_2.2.5 - 0x0000000000403380 strtok@@GLIBC_2.2.5 - 0x0000000000403390 strstr@@GLIBC_2.2.5 - 0x00000000004033a0 sbrk@@GLIBC_2.2.5 - 0x00000000004033b0 getuid@@GLIBC_2.2.5 - 0x00000000004033c0 __ctype_b_loc@@GLIBC_2.3 - 0x00000000004033d0 strcat@@GLIBC_2.2.5 - 0x00000000004033e0 getppid@@GLIBC_2.2.5 - -.text 0x00000000004033f0 0x167528 - *(.text .stub .text.* .gnu.linkonce.t.*) - .text 0x00000000004033f0 0x2c /usr/lib64/crt1.o - 0x00000000004033f0 _start - .text 0x000000000040341c 0x17 /usr/lib64/crti.o - *fill* 0x0000000000403433 0xd 90909090 - .text 0x0000000000403440 0x66 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - *fill* 0x00000000004034a6 0x2 90909090 - .text 0x00000000004034a8 0x64 /usr/pgi/linux86-64/6.0/lib/f90main.o - 0x00000000004034a8 main - *fill* 0x000000000040350c 0x4 90909090 - .text 0x0000000000403510 0x4652 main_clust.o - 0x0000000000406910 difconf_ - 0x00000000004075e0 distout_ - 0x0000000000403520 MAIN_ - *fill* 0x0000000000407b62 0xe 90909090 - .text 0x0000000000407b70 0x97 arcos.o - 0x0000000000407b80 arcos_ - *fill* 0x0000000000407c07 0x9 90909090 - .text 0x0000000000407c10 0x642 cartprint.o - 0x0000000000407c20 cartprint_ - *fill* 0x0000000000408252 0xe 90909090 - .text 0x0000000000408260 0x6492 chainbuild.o - 0x000000000040d3f0 locate_side_chain_ - 0x000000000040b110 locate_next_res_ - 0x0000000000408270 chainbuild_ - 0x0000000000408e00 orig_frame_ - *fill* 0x000000000040e6f2 0xe 90909090 - .text 0x000000000040e700 0xa92 convert.o - 0x000000000040ec80 var_to_geom_ - 0x000000000040e710 geom_to_var_ - *fill* 0x000000000040f192 0xe 90909090 - .text 0x000000000040f1a0 0x4092 initialize_p.o - 0x000000000040f1b0 initialize_ - 0x0000000000412d30 int_partition_ - 0x0000000000410f30 nazwy_ - 0x0000000000413210 hpb_partition_ - 0x0000000000410f40 init_int_table_ - *fill* 0x0000000000413232 0xe 90909090 - .text 0x0000000000413240 0x3f2 matmult.o - 0x0000000000413250 matmult_ - *fill* 0x0000000000413632 0xe 90909090 - .text 0x0000000000413640 0x6662 readrtns.o - 0x0000000000417dc0 read_angles_ - 0x0000000000413d20 molread_ - 0x0000000000416c50 seq_comp_ - 0x0000000000418640 reada_ - 0x0000000000418d90 openunits_ - 0x0000000000413650 read_control_ - 0x0000000000418740 multreada_ - 0x00000000004189f0 readi_ - 0x0000000000416d70 read_bridge_ - 0x0000000000418ae0 card_concat_ - *fill* 0x0000000000419ca2 0xe 90909090 - .text 0x0000000000419cb0 0xa7 pinorm.o - 0x0000000000419cc0 pinorm_ - *fill* 0x0000000000419d57 0x9 90909090 - .text 0x0000000000419d60 0x22b rescode.o - 0x0000000000419d70 rescode_ - *fill* 0x0000000000419f8b 0x5 90909090 - .text 0x0000000000419f90 0x1bc7 intcor.o - 0x0000000000419fa0 alpha_ - 0x000000000041b730 dist_ - 0x000000000041a830 beta_ - *fill* 0x000000000041bb57 0x9 90909090 - .text 0x000000000041bb60 0x2d2 timing.o - 0x000000000041bba0 stopx_ - 0x000000000041bc60 dajczas_ - 0x000000000041bb70 set_timers_ - 0x000000000041bbf0 ovrtim_ - 0x000000000041bc40 tcpu_ - *fill* 0x000000000041be32 0xe 90909090 - .text 0x000000000041be40 0xba2 misc.o - 0x000000000041c1e0 iblnk_ - 0x000000000041c250 ilen_ - 0x000000000041c430 lcase_ - 0x000000000041be50 find_arg_ - 0x000000000041c8e0 ucase_ - 0x000000000041bf40 find_group_ - 0x000000000041c5f0 lower_case_ - 0x000000000041c7e0 numstr_ - 0x000000000041c540 lcom_ - 0x000000000041c2b0 in_keywd_set_ - 0x000000000041c660 mykey_ - *fill* 0x000000000041c9e2 0xe 90909090 - .text 0x000000000041c9f0 0x3b02 geomout.o - 0x000000000041f0d0 briefout_ - 0x000000000041fc20 cartout_ - 0x000000000041ca00 pdbout_ - 0x000000000041eae0 intout_ - 0x000000000041dab0 mol2out_ - *fill* 0x00000000004204f2 0xe 90909090 - .text 0x0000000000420500 0x2d02 readpdb.o - 0x0000000000423030 sccenter_ - 0x0000000000420510 readpdb_ - 0x0000000000421fe0 int_from_cart_ - *fill* 0x0000000000423202 0xe 90909090 - .text 0x0000000000423210 0x6102 read_coords.o - 0x0000000000427c10 receive_and_pass_cconf_ - 0x0000000000423220 read_coords_ - 0x0000000000424800 add_new_cconf_ - 0x0000000000427310 store_cconf_from_file_ - 0x0000000000428c30 dawrite_ccoords_ - 0x0000000000427780 write_and_send_cconf_ - 0x0000000000428590 daread_ccoords_ - *fill* 0x0000000000429312 0xe 90909090 - .text 0x0000000000429320 0x172f9 parmread.o - 0x0000000000429330 parmread_ - *fill* 0x0000000000440619 0x7 90909090 - .text 0x0000000000440620 0x2ef2 probabl.o - 0x0000000000440630 probabl_ - 0x0000000000443140 mysort1_ - *fill* 0x0000000000443512 0xe 90909090 - .text 0x0000000000443520 0x8652 fitsq.o - 0x000000000044b420 mmmul_ - 0x000000000044ae60 mvvad_ - 0x000000000044a770 switch_ - 0x0000000000449d10 givns_ - 0x0000000000444a80 sivade_ - 0x000000000044b7c0 matvec_ - 0x000000000044b100 det_ - 0x0000000000443530 fitsq_ - *fill* 0x000000000044bb72 0xe 90909090 - .text 0x000000000044bb80 0x4590 hc.o - 0x000000000044d5d0 ioffset_ - 0x000000000044bb90 hc_ - 0x000000000044d620 hcass_ - 0x000000000044ef40 hcden_ - .text 0x0000000000450110 0x3ee9 track.o - 0x0000000000450120 track_ - 0x00000000004506d0 writrack_ - 0x0000000000450c90 plotree_ - *fill* 0x0000000000453ff9 0x7 90909090 - .text 0x0000000000454000 0x3a40 wrtclust.o - 0x0000000000454010 wrtclust_ - .text 0x0000000000457a40 0x1842 srtclust.o - 0x0000000000457a50 srtclust_ - *fill* 0x0000000000459282 0xe 90909090 - .text 0x0000000000459290 0x195 noyes.o - 0x00000000004592a0 noyes_ - *fill* 0x0000000000459425 0xb 90909090 - .text 0x0000000000459430 0xbb7 contact.o - 0x0000000000459440 contact_ - 0x0000000000459ce0 contact_fract_ - *fill* 0x0000000000459fe7 0x9 90909090 - .text 0x0000000000459ff0 0x6f2 printmat.o - 0x000000000045a000 printmat_ - *fill* 0x000000000045a6e2 0xe 90909090 - .text 0x000000000045a6f0 0x1602 int_from_cart1.o - 0x000000000045a700 int_from_cart1_ - *fill* 0x000000000045bcf2 0xe 90909090 - .text 0x000000000045bd00 0xa8597 energy_p_new.o - 0x00000000004a01e0 unormderiv_ - 0x000000000046f370 vec_and_deriv_test_ - 0x00000000004a2360 ssbond_ene_ - 0x00000000004b1be0 ehbcorr_ - 0x00000000004a6810 esc_ - 0x00000000004aea40 multibody_ - 0x0000000000463600 egb_ - 0x0000000000477540 check_vecgrad_ - 0x00000000004b39c0 dipole_ - 0x0000000000460950 eljk_ - 0x00000000004aa250 enesc_bound_ - 0x00000000004af230 esccorr_ - 0x00000000004652f0 egbv_ - 0x000000000045dea0 enerprint_ - 0x00000000004e5570 eello6_graph1_ - 0x00000000004cfc50 eello4_ - 0x0000000000500ff0 transpose2_ - 0x00000000004d29b0 eello5_ - 0x0000000000461f30 ebp_ - 0x00000000004ad050 etor_d_ - 0x0000000000468030 vec_and_deriv_ - 0x00000000004ab4e0 spline1_ - 0x0000000000493090 eturn34_ - 0x00000000004a6640 mixder_ - 0x00000000004b55a0 calc_eello_ - 0x00000000004a1970 edis_ - 0x00000000004fa7f0 eello_turn6_ - 0x00000000004ab630 spline2_ - 0x00000000004f0ca0 eello6_graph3_ - 0x00000000004ceea0 kernel_ - 0x00000000005014d0 transpose_ - 0x0000000000480ce0 eelec_ - 0x000000000045ee00 elj_ - 0x00000000004b0070 multibody_hb_ - 0x00000000004ffe20 matvec2_ - 0x0000000000478a90 set_matrices_ - 0x00000000004ab750 etor_ - 0x0000000000504190 scalar_ - 0x0000000000500e80 scalar2_ - 0x00000000005016d0 prodmat3_ - 0x00000000004a0590 escp_ - 0x00000000004ab290 gcont_ - 0x000000000045bd10 etotal_ - 0x00000000004e3230 eello6_ - 0x00000000004a3fc0 ebond_ - 0x00000000004f4020 eello6_graph4_ - 0x0000000000467200 sc_grad_ - 0x00000000004a8b20 enesc_ - 0x0000000000500280 matmat2_ - 0x00000000004a5cd0 theteng_ - 0x00000000004a4640 ebend_ - 0x0000000000466a90 sc_angular_ - 0x000000000049fd10 vecpr_ - 0x00000000004eb350 eello6_graph2_ - 0x00000000004ab400 splinthet_ - 0x00000000004b09d0 multibody_eello_ - *fill* 0x0000000000504297 0x9 90909090 - .text 0x00000000005042a0 0x75 icant.o - 0x00000000005042b0 icant_ - *fill* 0x0000000000504315 0x3 90909090 - .text 0x0000000000504318 0x267 proc_proc.o - 0x00000000005043d7 dsvrgp__ - 0x0000000000504318 proc_proc_ - 0x00000000005043c6 proc_conv_r__ - 0x0000000000504391 proc_conv__ - *fill* 0x000000000050457f 0x1 90909090 - .text 0x0000000000504580 0xca2 work_partition.o - 0x0000000000504590 work_partition_ - *fill* 0x0000000000505222 0xe 90909090 - .text 0x0000000000505230 0x272 setup_var.o - 0x0000000000505240 setup_var_ - *fill* 0x00000000005054a2 0xe 90909090 - .text 0x00000000005054b0 0x1d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) - 0x00000000005054b0 pmpi_abort_ - 0x00000000005054b0 mpi_abort_ - *fill* 0x00000000005054cd 0x3 90909090 - .text 0x00000000005054d0 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) - 0x00000000005054d0 pmpi_allgather_ - 0x00000000005054d0 mpi_allgather_ - *fill* 0x00000000005054fc 0x4 90909090 - .text 0x0000000000505500 0x22 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) - 0x0000000000505500 pmpi_bcast_ - 0x0000000000505500 mpi_bcast_ - *fill* 0x0000000000505522 0xe 90909090 - .text 0x0000000000505530 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) - 0x0000000000505530 mpi_comm_rank_ - 0x0000000000505530 pmpi_comm_rank_ - *fill* 0x000000000050555c 0x4 90909090 - .text 0x0000000000505560 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) - 0x0000000000505560 mpi_comm_size_ - 0x0000000000505560 pmpi_comm_size_ - *fill* 0x000000000050558c 0x4 90909090 - .text 0x0000000000505590 0x4b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) - 0x0000000000505590 mpi_dup_fn_ - 0x0000000000505590 pmpi_dup_fn_ - *fill* 0x00000000005055db 0x5 90909090 - .text 0x00000000005055e0 0x19 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) - 0x00000000005055e0 mpi_finalize_ - 0x00000000005055e0 pmpi_finalize_ - *fill* 0x00000000005055f9 0x7 90909090 - .text 0x0000000000505600 0x10f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) - 0x0000000000505600 mpi_gatherv_ - 0x0000000000505600 pmpi_gatherv_ - *fill* 0x000000000050570f 0x1 90909090 - .text 0x0000000000505710 0x1ea /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - 0x0000000000505710 pmpi_init_ - 0x0000000000505710 mpi_init_ - *fill* 0x00000000005058fa 0x6 90909090 - .text 0x0000000000505900 0x1f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_copyfnf.o) - 0x0000000000505900 mpi_null_copy_fn_ - 0x0000000000505900 pmpi_null_copy_fn_ - *fill* 0x000000000050591f 0x1 90909090 - .text 0x0000000000505920 0xd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_del_fnf.o) - 0x0000000000505920 mpi_null_delete_fn_ - 0x0000000000505920 pmpi_null_delete_fn_ - *fill* 0x000000000050592d 0x3 90909090 - .text 0x0000000000505930 0x42 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) - 0x0000000000505930 pmpi_recv_ - 0x0000000000505930 mpi_recv_ - *fill* 0x0000000000505972 0xe 90909090 - .text 0x0000000000505980 0x1d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) - 0x0000000000505980 mpi_send_ - 0x0000000000505980 pmpi_send_ - *fill* 0x000000000050599d 0x3 90909090 - .text 0x00000000005059a0 0xb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) - 0x00000000005059a0 mpi_wtick_ - 0x00000000005059a0 pmpi_wtick_ - *fill* 0x00000000005059ab 0x5 90909090 - .text 0x00000000005059b0 0xb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) - 0x00000000005059b0 mpi_wtime_ - 0x00000000005059b0 pmpi_wtime_ - *fill* 0x00000000005059bb 0x5 90909090 - .text 0x00000000005059c0 0x25 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) - 0x00000000005059d0 mpir_getarg_ - 0x00000000005059c0 mpir_iargc_ - *fill* 0x00000000005059e5 0xb 90909090 - .text 0x00000000005059f0 0x646 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - 0x0000000000505bb0 mpir_init_bottom_ - 0x0000000000505b60 MPIR_Free_Fortran_keyvals - 0x0000000000506030 mpir_init_fsize_ - 0x00000000005059f0 MPIR_InitFortran - 0x0000000000505bf0 MPIR_InitFortranDatatypes - 0x0000000000505fb0 MPIR_Free_Fortran_dtes - *fill* 0x0000000000506036 0xa 90909090 - .text 0x0000000000506040 0x32 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfcmn.o) - 0x0000000000506060 mpir_init_flog_ - 0x0000000000506040 mpir_init_fcm_ - *fill* 0x0000000000506072 0xe 90909090 - .text 0x0000000000506080 0x5c2 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - 0x0000000000506360 MPIR_Error - 0x0000000000506080 MPIR_Errors_are_fatal - 0x0000000000506500 MPIR_Set_Status_error_array - 0x0000000000506210 MPIR_Errors_warn - 0x0000000000506200 MPIR_Errors_return - *fill* 0x0000000000506642 0xe 90909090 - .text 0x0000000000506650 0x31f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - 0x0000000000506650 MPI_Send - 0x0000000000506650 PMPI_Send - *fill* 0x000000000050696f 0x1 90909090 - .text 0x0000000000506970 0x336 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - 0x0000000000506970 PMPI_Recv - 0x0000000000506970 MPI_Recv - *fill* 0x0000000000506ca6 0xa 90909090 - .text 0x0000000000506cb0 0x35c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - 0x0000000000506f30 MPIR_Type_get_limits - 0x0000000000506cc0 MPIR_Type_permanent - 0x0000000000506cb0 MPIR_Type_dup - 0x0000000000506ce0 MPIR_Type_free - 0x0000000000506ff0 MPIR_Datatype_iscontig - 0x0000000000506f80 MPIR_Free_struct_internals - 0x0000000000506f50 MPIR_Free_perm_type - *fill* 0x000000000050700c 0x4 90909090 - .text 0x0000000000507010 0xd7 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - 0x0000000000507010 MPI_Abort - 0x0000000000507010 PMPI_Abort - *fill* 0x00000000005070e7 0x9 90909090 - .text 0x00000000005070f0 0xb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) - 0x00000000005070f0 MPI_Init - 0x00000000005070f0 PMPI_Init - *fill* 0x00000000005070fb 0x5 90909090 - .text 0x0000000000507100 0xdc0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - 0x0000000000507100 MPIR_Init - 0x0000000000507e80 MPIR_Errhandler_mark - 0x0000000000507df0 MPIR_Errhandler_create - .text 0x0000000000507ec0 0x29c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) - 0x0000000000507ec0 MPI_Finalize - 0x0000000000507ec0 PMPI_Finalize - *fill* 0x000000000050815c 0x4 90909090 - .text 0x0000000000508160 0x55 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errorstring.o) - 0x0000000000508160 MPI_Error_string - 0x0000000000508160 PMPI_Error_string - *fill* 0x00000000005081b5 0xb 90909090 - .text 0x00000000005081c0 0x6f9 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - 0x0000000000508650 MPIR_Free_dtes - 0x0000000000508890 MPIR_Type_contiguous - 0x0000000000508740 MPIR_Setup_base_datatype - 0x0000000000508800 MPIR_Setup_complex_datatype - 0x00000000005081c0 MPIR_Init_dtes - *fill* 0x00000000005088b9 0x7 90909090 - .text 0x00000000005088c0 0x104 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - 0x00000000005088c0 PMPI_Errhandler_free - 0x00000000005088c0 MPI_Errhandler_free - *fill* 0x00000000005089c4 0xc 90909090 - .text 0x00000000005089d0 0xb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtime.o) - 0x00000000005089d0 PMPI_Wtime - 0x00000000005089d0 MPI_Wtime - *fill* 0x00000000005089db 0x5 90909090 - .text 0x00000000005089e0 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) - 0x00000000005089e0 MPI_Wtick - 0x00000000005089e0 PMPI_Wtick - *fill* 0x00000000005089f8 0x8 90909090 - .text 0x0000000000508a00 0x97e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - 0x0000000000508f00 MPIR_Get_error_string - 0x0000000000508e10 MPIR_GetErrorMessage - 0x0000000000509050 MPIR_GetNLSMsg - 0x0000000000508aa0 MPIR_Err_setmsg - 0x0000000000508cc0 MPIR_Err_map_code_to_string - *fill* 0x000000000050937e 0x2 90909090 - .text 0x0000000000509380 0x6 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(msgqdllloc.o) - 0x0000000000509380 MPIR_Msg_queue_export - *fill* 0x0000000000509386 0xa 90909090 - .text 0x0000000000509390 0xabb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - 0x0000000000509560 MPIR_HBT_free_tree - 0x00000000005094f0 MPIR_HBT_free_node - 0x0000000000509470 MPIR_HBT_new_node - 0x00000000005098e0 MPIR_HBT_delete - 0x0000000000509410 MPIR_HBT_new_tree - 0x0000000000509390 MPIR_HBT_Init - 0x0000000000509610 MPIR_HBT_insert - 0x00000000005093e0 MPIR_HBT_Free - 0x00000000005095b0 MPIR_HBT_lookup - 0x0000000000509520 MPIR_HBT_free_subtree - *fill* 0x0000000000509e4b 0x5 90909090 - .text 0x0000000000509e50 0xce6 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - 0x0000000000509fa0 MPIR_DestroyPointer - 0x000000000050a910 MPIR_DumpPointers - 0x000000000050a190 MPIR_FromPointer - 0x0000000000509e70 MPIR_PointerOpts - 0x0000000000509e50 MPIR_PointerPerm - 0x000000000050a6e0 MPIR_RegPointerIdx - 0x000000000050a410 MPIR_RmPointer - 0x000000000050a010 MPIR_ToPointer - 0x000000000050a5d0 MPIR_UsePointer - *fill* 0x000000000050ab36 0xa 90909090 - .text 0x000000000050ab40 0x974 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - 0x000000000050ac00 MPIR_BsendRelease - 0x000000000050b330 MPIR_IbsendDatatype - 0x000000000050ab40 MPIR_BsendInitBuffer - *fill* 0x000000000050b4b4 0xc 90909090 - .text 0x000000000050b4c0 0x1da /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - 0x000000000050b4c0 PMPI_Keyval_free - 0x000000000050b4c0 MPI_Keyval_free - *fill* 0x000000000050b69a 0x6 90909090 - .text 0x000000000050b6a0 0x17d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - 0x000000000050b6a0 PMPI_Attr_get - 0x000000000050b6a0 MPI_Attr_get - *fill* 0x000000000050b81d 0x3 90909090 - .text 0x000000000050b820 0x682 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - 0x000000000050bca0 MPIR_Attr_free_tree - 0x000000000050be90 MPIR_Attr_make_perm - 0x000000000050b820 MPIR_Attr_copy_node - 0x000000000050baf0 MPIR_Attr_free_node - 0x000000000050ba90 MPIR_Attr_copy - 0x000000000050bc20 MPIR_Attr_free_subtree - 0x000000000050b9f0 MPIR_Attr_copy_subtree - 0x000000000050bd70 MPIR_Keyval_create - 0x000000000050bd40 MPIR_Attr_create_tree - 0x000000000050bd20 MPIR_Attr_dup_tree - *fill* 0x000000000050bea2 0xe 90909090 - .text 0x000000000050beb0 0x2cd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - 0x000000000050beb0 PMPI_Attr_put - 0x000000000050beb0 MPI_Attr_put - *fill* 0x000000000050c17d 0x3 90909090 - .text 0x000000000050c180 0x1bb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - 0x000000000050c180 PMPI_Group_free - 0x000000000050c180 MPI_Group_free - *fill* 0x000000000050c33b 0x5 90909090 - .text 0x000000000050c340 0x3ed /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - 0x000000000050c340 MPIR_CreateGroup - 0x000000000050c480 MPIR_SetToIdentity - 0x000000000050c620 MPIR_Dump_ranges - 0x000000000050c5a0 MPIR_Dump_ranks - 0x000000000050c6b0 MPIR_Powers_of_2 - 0x000000000050c430 MPIR_FreeGroup - 0x000000000050c4d0 MPIR_Dump_group - 0x000000000050c720 MPIR_Group_N2_prev - *fill* 0x000000000050c72d 0x3 90909090 - .text 0x000000000050c730 0x295 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - 0x000000000050c730 MPI_Comm_free - 0x000000000050c730 PMPI_Comm_free - *fill* 0x000000000050c9c5 0xb 90909090 - .text 0x000000000050c9d0 0xc5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - 0x000000000050c9d0 PMPI_Comm_rank - 0x000000000050c9d0 MPI_Comm_rank - *fill* 0x000000000050ca95 0xb 90909090 - .text 0x000000000050caa0 0x1db /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - 0x000000000050caa0 PMPI_Comm_set_name - 0x000000000050caa0 MPI_Comm_set_name - *fill* 0x000000000050cc7b 0x5 90909090 - .text 0x000000000050cc80 0x129 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - 0x000000000050cc80 MPI_Comm_size - 0x000000000050cc80 PMPI_Comm_size - *fill* 0x000000000050cda9 0x7 90909090 - .text 0x000000000050cdb0 0x604 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - 0x000000000050cf40 MPIR_Comm_N2_prev - 0x000000000050d2d0 MPIR_Sort_split_table - 0x000000000050d210 MPIR_Comm_remember - 0x000000000050d290 MPIR_Comm_collops_init - 0x000000000050cdb0 MPIR_Comm_make_coll - 0x000000000050d180 MPIR_Comm_init - 0x000000000050d080 MPIR_Intercomm_high - 0x000000000050d240 MPIR_Comm_forget - 0x000000000050cf60 MPIR_Dump_comm - *fill* 0x000000000050d3b4 0xc 90909090 - .text 0x000000000050d3c0 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - 0x000000000050d3c0 MPIR_Context_alloc - 0x000000000050d4f0 MPIR_Context_dealloc - *fill* 0x000000000050d4f8 0x8 90909090 - .text 0x000000000050d500 0x12 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fn.o) - 0x000000000050d500 MPIR_dup_fn - *fill* 0x000000000050d512 0xe 90909090 - .text 0x000000000050d520 0x11c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - 0x000000000050d520 PMPI_Barrier - 0x000000000050d520 MPI_Barrier - *fill* 0x000000000050d63c 0x4 90909090 - .text 0x000000000050d640 0x2bf /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - 0x000000000050d640 PMPI_Bcast - 0x000000000050d640 MPI_Bcast - *fill* 0x000000000050d8ff 0x1 90909090 - .text 0x000000000050d900 0x395 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - 0x000000000050d900 MPI_Gatherv - 0x000000000050d900 PMPI_Gatherv - *fill* 0x000000000050dc95 0xb 90909090 - .text 0x000000000050dca0 0x3a5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - 0x000000000050dca0 MPI_Allgather - 0x000000000050dca0 PMPI_Allgather - *fill* 0x000000000050e045 0xb 90909090 - .text 0x000000000050e050 0x2cf /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - 0x000000000050e050 PMPI_Allreduce - 0x000000000050e050 MPI_Allreduce - *fill* 0x000000000050e31f 0x1 90909090 - .text 0x000000000050e320 0x54f0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - 0x0000000000510ed0 MPIR_LXOR - 0x000000000050ef30 MPIR_SUM - 0x0000000000510b10 MPIR_BOR - 0x0000000000510450 MPIR_LOR - 0x000000000050e920 MPIR_MINF - 0x000000000050f450 MPIR_PROD - 0x0000000000511b80 MPIR_MAXLOC - 0x000000000050e320 MPIR_MAXF - 0x0000000000510090 MPIR_BAND - 0x00000000005117c0 MPIR_BXOR - 0x00000000005129c0 MPIR_MINLOC - 0x000000000050f9d0 MPIR_LAND - .text 0x0000000000513810 0x159 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - 0x0000000000513810 PMPI_Op_free - 0x0000000000513810 MPI_Op_free - *fill* 0x0000000000513969 0x7 90909090 - .text 0x0000000000513970 0x91 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - 0x0000000000513970 MPIR_Op_setup - *fill* 0x0000000000513a01 0xf 90909090 - .text 0x0000000000513a10 0x2cd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - *fill* 0x0000000000513cdd 0x3 90909090 - .text 0x0000000000513ce0 0x5e67 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - *fill* 0x0000000000519b47 0x9 90909090 - .text 0x0000000000519b50 0x400 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - 0x0000000000519b50 MPIR_intra_Scan - .text 0x0000000000519f50 0x335 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - 0x000000000051a270 MPIR_Topology_finalize - 0x000000000051a240 MPIR_Topology_init - 0x0000000000519fa0 MPIR_Topology_copy_fn - 0x0000000000519f80 MPIR_Topology_Free - 0x0000000000519f50 MPIR_Topology_Init - 0x000000000051a1e0 MPIR_Topology_delete_fn - *fill* 0x000000000051a285 0xb 90909090 - .text 0x000000000051a290 0x8c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - 0x000000000051a290 PMPI_Status_c2f - 0x000000000051a290 MPI_Status_c2f - *fill* 0x000000000051a31c 0x4 90909090 - .text 0x000000000051a320 0x1bf0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - 0x000000000051ad60 in_same_cluster - 0x000000000051a670 p4_get_cluster_masters - 0x000000000051a6f0 p4_get_my_id_from_proc - 0x000000000051a320 p4_post_init - 0x000000000051bb00 get_qualified_hostname - 0x000000000051a630 p4_global_barrier - 0x000000000051a360 p4_machine_type - 0x000000000051acb0 p4_get_my_cluster_id - 0x000000000051a5d0 p4_num_cluster_ids - 0x000000000051bbc0 same_data_representation - 0x000000000051ada0 p4_cluster_shmem_sync - 0x000000000051a5c0 p4_shfree - 0x000000000051a570 p4_shmalloc - 0x000000000051bca0 put_execer_port - 0x000000000051ad00 p4_am_i_cluster_master - 0x000000000051b670 fork_p4 - 0x000000000051ac90 p4_get_my_id - 0x000000000051a5f0 p4_num_total_ids - 0x000000000051b750 zap_p4_processes - 0x000000000051b080 p4_accept_wait_timeout - 0x000000000051bda0 init_usclock - 0x000000000051bd90 clean_execer_port - 0x000000000051ae20 get_pipe - 0x000000000051ae80 setup_conntab - 0x000000000051a330 p4_version - 0x000000000051a6d0 p4_get_cluster_ids - 0x000000000051a610 p4_num_total_slaves - 0x000000000051bc20 p4_proc_info - 0x000000000051a390 p4_initenv - 0x000000000051b0b0 p4_wait_for_end - 0x000000000051bdf0 p4_usclock - 0x000000000051b7d0 zap_remote_p4_processes - .text 0x000000000051bf10 0x121e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - 0x000000000051cef0 send_proc_table - 0x000000000051c1c0 p4_startup - 0x000000000051bf10 bm_start - 0x000000000051c100 p4_create_procgroup - 0x000000000051cd90 sync_with_remotes - 0x000000000051c400 create_bm_processes - 0x000000000051cb10 procgroup_to_proctable - *fill* 0x000000000051d12e 0x2 90909090 - .text 0x000000000051d130 0x10a5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - 0x000000000051e010 receive_proc_table - 0x000000000051d840 create_rm_processes - 0x000000000051d130 rm_start - *fill* 0x000000000051e1d5 0xb 90909090 - .text 0x000000000051e1e0 0x1f79 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - 0x000000000051ee20 net_conn_to_listener - 0x000000000051fbe0 get_inet_addr - 0x000000000051eaa0 net_accept - 0x0000000000520120 p4_make_socket_nonblocking - 0x000000000051f420 net_send - 0x000000000051fc60 p4_print_sock_params - 0x000000000051ff70 mpiexec_reopen_stdin - 0x000000000051fc30 get_inet_addr_str - 0x000000000051fa60 p4_timein_hostbyname - 0x000000000051e270 p4_socket_control - 0x000000000051fef0 dump_sockinfo - 0x000000000051f5d0 net_send_w - 0x000000000051e790 net_setup_listener - 0x000000000051f0e0 net_recv - 0x000000000051fe70 dump_sockaddr - 0x000000000051fa80 gethostbyname_p4 - 0x000000000051e900 net_setup_anon_listener - 0x000000000051f7b0 net_send2 - 0x000000000051fbd0 gethostname_p4 - 0x000000000051e610 net_set_sockbuf_size - 0x000000000051f950 p4_socket_stat - *fill* 0x0000000000520159 0x7 90909090 - .text 0x0000000000520160 0x12e2 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - 0x0000000000520820 p4_accept_sigchild - 0x0000000000520370 net_slave_info - 0x00000000005208d0 net_create_slave - 0x0000000000520780 p4_accept_timeout - 0x0000000000520160 create_remote_processes - *fill* 0x0000000000521442 0xe 90909090 - .text 0x0000000000521450 0xb74 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - 0x00000000005214d0 p4_establish_all_conns - 0x0000000000521450 p4_has_timedout - 0x0000000000521570 establish_connection - 0x0000000000521a40 handle_connection_interrupt - 0x0000000000521680 request_connection - *fill* 0x0000000000521fc4 0xc 90909090 - .text 0x0000000000521fd0 0x1a35 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - 0x00000000005229e0 socket_recv_on_fd - 0x0000000000522d10 sock_msg_avail_on_fd - 0x0000000000522670 socket_recv - 0x0000000000523330 p4_sockets_ready - 0x0000000000523750 p4_look_for_close - 0x0000000000523290 shutdown_p4_socks - 0x0000000000522c60 socket_msgs_available - 0x0000000000522e90 xdr_recv - 0x0000000000523140 wait_for_ack - 0x0000000000523830 p4_wait_for_socket_msg - 0x0000000000522590 socket_close_conn - 0x0000000000521fd0 xdr_send - 0x00000000005231f0 send_ack - 0x00000000005223c0 socket_send - *fill* 0x0000000000523a05 0xb 90909090 - .text 0x0000000000523a10 0xcb1 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - 0x0000000000524440 net_recv_timeout - 0x0000000000523a10 listener - *fill* 0x00000000005246c1 0xf 90909090 - .text 0x00000000005246d0 0xbac /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - 0x00000000005246d0 start_slave - 0x00000000005251c0 getpw_ss - *fill* 0x000000000052527c 0x4 90909090 - .text 0x0000000000525280 0x88 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - 0x00000000005252d0 usc_MD_clock - 0x0000000000525280 usc_init - *fill* 0x0000000000525308 0x8 90909090 - .text 0x0000000000525310 0xc68 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - 0x0000000000525ea0 MPID_SetPktSize - 0x0000000000525f00 MPID_WaitForCompleteRecv - 0x0000000000525650 MPID_Abort - 0x0000000000525310 MPID_Init - 0x0000000000525f40 MPID_Version_name - 0x0000000000525ca0 MPID_Complete_pending - 0x0000000000525ec0 MPID_WaitForCompleteSend - 0x0000000000525830 MPID_End - 0x0000000000525990 MPID_DeviceCheck - *fill* 0x0000000000525f78 0x8 90909090 - .text 0x0000000000525f80 0x348 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) - 0x0000000000525f80 MPID_SendDatatype - 0x0000000000526100 MPID_IsendDatatype - *fill* 0x00000000005262c8 0x8 90909090 - .text 0x00000000005262d0 0x57f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - 0x0000000000526360 MPID_IrecvDatatype - 0x00000000005262d0 MPID_RecvDatatype - *fill* 0x000000000052684f 0x1 90909090 - .text 0x0000000000526850 0x4bb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - 0x00000000005269e0 MPID_Msg_act - 0x0000000000526850 MPID_Msg_rep - 0x0000000000526b70 MPID_Pack - 0x0000000000526af0 MPID_Pack_size - 0x0000000000526c90 MPID_Unpack - *fill* 0x0000000000526d0b 0x5 90909090 - .text 0x0000000000526d10 0x2f5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - 0x0000000000526d10 MPID_PackMessage - 0x0000000000526e10 MPID_PackMessageFree - 0x0000000000526e50 MPID_UnpackMessageSetup - 0x0000000000526ed0 MPID_UnpackMessageComplete - *fill* 0x0000000000527005 0xb 90909090 - .text 0x0000000000527010 0x13e5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - 0x0000000000527890 MPID_Mem_XDR_ByteDecode - 0x0000000000527e20 MPID_Type_XDR_decode - 0x00000000005272f0 MPID_Type_swap_inplace - 0x0000000000527460 MPID_Mem_convert_len - 0x00000000005274b0 MPID_Mem_XDR_Len - 0x0000000000527010 MPID_BSwap_N_inplace - 0x0000000000527a90 MPID_Type_XDR_encode - 0x0000000000527950 MPID_Mem_XDR_Decode_Logical - 0x0000000000527670 MPID_Mem_XDR_Encode_Logical - 0x0000000000527500 MPID_Mem_XDR_Encode - 0x0000000000527120 MPID_Type_swap_copy - 0x00000000005274c0 MPID_Mem_XDR_Init - 0x00000000005274e0 MPID_Mem_XDR_Free - 0x00000000005275d0 MPID_Mem_XDR_ByteEncode - 0x0000000000527770 MPID_Mem_XDR_Decode - 0x00000000005270b0 MPID_BSwap_N_copy - *fill* 0x00000000005283f5 0xb 90909090 - .text 0x0000000000528400 0xae6 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - 0x0000000000528d60 MPID_SetMsgDebugFlag - 0x0000000000528af0 MPID_Print_Send_Handle - 0x0000000000528da0 MPID_Print_rhandle - 0x0000000000528880 MPID_Get_print_pkt - 0x0000000000528400 MPID_Rndv_print_pkt - 0x0000000000528e10 MPID_Print_Short_data - 0x00000000005285e0 MPID_Print_packet - 0x0000000000528b30 MPID_SetDebugFile - 0x0000000000528890 MPID_Print_mode - 0x0000000000528a20 MPID_Print_pkt_data - 0x0000000000528d90 MPID_PrintMsgDebug - 0x0000000000528d40 MPID_SetDebugFlag - 0x0000000000528dd0 MPID_Print_shandle - 0x0000000000528530 MPID_Cancel_print_pkt - 0x0000000000528c30 MPID_Set_tracefile - 0x0000000000528d30 MPID_SetSpaceDebugFlag - 0x0000000000528d80 MPID_GetMsgDebugFlag - *fill* 0x0000000000528ee6 0xa 90909090 - .text 0x0000000000528ef0 0x4b8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - 0x0000000000529130 MPID_CH_Abort - 0x0000000000528ef0 MPID_CH_InitMsgPass - 0x00000000005291e0 MPID_CH_End - 0x0000000000529370 MPID_CH_Version_name - *fill* 0x00000000005293a8 0x8 90909090 - .text 0x00000000005293b0 0x832 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - 0x0000000000529a60 MPID_CH_Pkt_unpack - 0x0000000000529b50 MPID_GetByteOrder - 0x0000000000529960 MPID_CH_Pkt_pack - 0x00000000005298a0 MPID_CH_Comm_msgrep - 0x00000000005293b0 MPID_CH_Init_hetero - 0x0000000000529b30 MPID_CH_Hetero_free - 0x0000000000529b90 MPID_ByteSwapInt - *fill* 0x0000000000529be2 0xe 90909090 - .text 0x0000000000529bf0 0xd0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - 0x0000000000529bf0 MPID_CH_Wtick - .text 0x0000000000529cc0 0x51b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - 0x000000000052a1a0 MPID_P4_End - 0x0000000000529cc0 MPID_P4_Init - *fill* 0x000000000052a1db 0x5 90909090 - .text 0x000000000052a1e0 0x8da /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - 0x000000000052a790 MPID_Search_unexpected_queue - 0x000000000052a9e0 MPID_Search_unexpected_queue_and_post - 0x000000000052a8a0 MPID_Msg_arrived - 0x000000000052a1e0 MPID_Dump_queues - 0x000000000052a6e0 MPID_Search_unexpected_for_request - 0x000000000052aa60 MPID_InitQueue - 0x000000000052a200 MPID_Dump_queue - 0x000000000052a5a0 MPID_Dequeue - *fill* 0x000000000052aaba 0x6 90909090 - .text 0x000000000052aac0 0x632 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - 0x000000000052aac0 MPID_GetIntParameter - 0x000000000052aaf0 MPID_ArgSqueeze - 0x000000000052ab70 MPID_ProcessArgs - *fill* 0x000000000052b0f2 0xe 90909090 - .text 0x000000000052b100 0x3ee /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - 0x000000000052b300 MPID_SBdestroy - 0x000000000052b100 MPID_SBinit - 0x000000000052b4a0 MPID_SBReleaseAvail - 0x000000000052b440 MPID_SBDump - 0x000000000052b290 MPID_SBalloc - 0x000000000052b1c0 MPID_SBiAllocate - 0x000000000052b360 MPID_SBrelease - 0x000000000052b2e0 MPID_SBPrealloc - 0x000000000052b1a0 MPID_SBfree - 0x000000000052b3b0 MPID_SBFlush - *fill* 0x000000000052b4ee 0x2 90909090 - .text 0x000000000052b4f0 0x52 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - 0x000000000052b4f0 MPID_Process_group_init - *fill* 0x000000000052b542 0xe 90909090 - .text 0x000000000052b550 0xc0a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - 0x000000000052b610 MPID_SendProtoAck - 0x000000000052bd90 MPID_FinishRecvPackets - 0x000000000052b550 MPID_PacketFlowSetup - 0x000000000052b880 MPID_RecvProtoAck - 0x000000000052c130 MPID_PackDelete - *fill* 0x000000000052c15a 0x6 90909090 - .text 0x000000000052c160 0x9fc /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - 0x000000000052c380 MPID_SendCancelOkPacket - 0x000000000052c160 MPID_SendCancelPacket - 0x000000000052c900 MPID_FinishCancelPackets - 0x000000000052c680 MPID_RecvCancelOkPacket - *fill* 0x000000000052cb5c 0x4 90909090 - .text 0x000000000052cb60 0x3b1 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - 0x000000000052cb60 PMPI_Isend - 0x000000000052cb60 MPI_Isend - *fill* 0x000000000052cf11 0xf 90909090 - .text 0x000000000052cf20 0x3c1 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - 0x000000000052cf20 PMPI_Irecv - 0x000000000052cf20 MPI_Irecv - *fill* 0x000000000052d2e1 0xf 90909090 - .text 0x000000000052d2f0 0xad /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - 0x000000000052d2f0 PMPI_Wait - 0x000000000052d2f0 MPI_Wait - *fill* 0x000000000052d39d 0x3 90909090 - .text 0x000000000052d3a0 0xf5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - 0x000000000052d3a0 PMPI_Test - 0x000000000052d3a0 MPI_Test - *fill* 0x000000000052d495 0xb 90909090 - .text 0x000000000052d4a0 0x269 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - 0x000000000052d4a0 MPI_Cancel - 0x000000000052d4a0 PMPI_Cancel - *fill* 0x000000000052d709 0x7 90909090 - .text 0x000000000052d710 0x5fc /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - 0x000000000052d710 PMPI_Waitall - 0x000000000052d710 MPI_Waitall - *fill* 0x000000000052dd0c 0x4 90909090 - .text 0x000000000052dd10 0x271 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - 0x000000000052dd10 PMPI_Sendrecv - 0x000000000052dd10 MPI_Sendrecv - *fill* 0x000000000052df81 0xf 90909090 - .text 0x000000000052df90 0x5df /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - 0x000000000052df90 MPI_Testall - 0x000000000052df90 PMPI_Testall - *fill* 0x000000000052e56f 0x1 90909090 - .text 0x000000000052e570 0x195 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - 0x000000000052e570 PMPI_Get_count - 0x000000000052e570 MPI_Get_count - *fill* 0x000000000052e705 0xb 90909090 - .text 0x000000000052e710 0x21f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - 0x000000000052e710 MPI_Type_commit - 0x000000000052e710 PMPI_Type_commit - *fill* 0x000000000052e92f 0x1 90909090 - .text 0x000000000052e930 0x408 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - 0x000000000052e930 PMPI_Type_contiguous - 0x000000000052e930 MPI_Type_contiguous - *fill* 0x000000000052ed38 0x8 90909090 - .text 0x000000000052ed40 0xe3 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - 0x000000000052ed40 MPI_Type_extent - 0x000000000052ed40 PMPI_Type_extent - *fill* 0x000000000052ee23 0xd 90909090 - .text 0x000000000052ee30 0x1c9 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - 0x000000000052ee30 MPI_Type_free - 0x000000000052ee30 PMPI_Type_free - *fill* 0x000000000052eff9 0x7 90909090 - .text 0x000000000052f000 0x382 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - 0x000000000052f000 MPI_Type_indexed - 0x000000000052f000 PMPI_Type_indexed - *fill* 0x000000000052f382 0xe 90909090 - .text 0x000000000052f390 0x137 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - 0x000000000052f390 MPI_Type_lb - 0x000000000052f390 PMPI_Type_lb - *fill* 0x000000000052f4c7 0x9 90909090 - .text 0x000000000052f4d0 0x146 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - 0x000000000052f4d0 MPI_Type_size - 0x000000000052f4d0 PMPI_Type_size - *fill* 0x000000000052f616 0xa 90909090 - .text 0x000000000052f620 0x8fe /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - 0x000000000052f620 MPI_Type_struct - 0x000000000052f620 PMPI_Type_struct - *fill* 0x000000000052ff1e 0x2 90909090 - .text 0x000000000052ff20 0x266 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - 0x000000000052ff20 PMPI_Pack_size - 0x000000000052ff20 MPI_Pack_size - *fill* 0x0000000000530186 0xa 90909090 - .text 0x0000000000530190 0x3af /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - 0x0000000000530190 PMPI_Pack - 0x0000000000530190 MPI_Pack - *fill* 0x000000000053053f 0x1 90909090 - .text 0x0000000000530540 0x393 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - 0x0000000000530540 PMPI_Unpack - 0x0000000000530540 MPI_Unpack - *fill* 0x00000000005308d3 0xd 90909090 - .text 0x00000000005308e0 0x172 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - 0x00000000005308f0 MPIR_Breakpoint - *fill* 0x0000000000530a52 0xe 90909090 - .text 0x0000000000530a60 0x1ae /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - 0x0000000000530a60 PMPI_Errhandler_set - 0x0000000000530a60 MPI_Errhandler_set - *fill* 0x0000000000530c0e 0x2 90909090 - .text 0x0000000000530c10 0xe1c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - 0x00000000005311b0 MPIR_Unpack2 - 0x00000000005318f0 MPIR_PrintDatatypeUnpack - 0x0000000000531680 MPIR_Elementcnt - 0x0000000000530c10 MPIR_Unpack - 0x00000000005317b0 MPIR_Printcontig2a - 0x0000000000530d00 MPIR_Pack2 - 0x00000000005316f0 MPIR_Printcontig - 0x0000000000531820 MPIR_PrintDatatypePack - 0x0000000000531750 MPIR_Printcontig2 - *fill* 0x0000000000531a2c 0x4 90909090 - .text 0x0000000000531a30 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyvalcreate.o) - 0x0000000000531a30 PMPI_Keyval_create - 0x0000000000531a30 MPI_Keyval_create - *fill* 0x0000000000531a44 0xc 90909090 - .text 0x0000000000531a50 0x2df /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - 0x0000000000531a50 PMPI_Reduce - 0x0000000000531a50 MPI_Reduce - *fill* 0x0000000000531d2f 0x1 90909090 - .text 0x0000000000531d30 0x520 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - 0x0000000000531d40 MD_initenv - 0x0000000000531d70 MD_shfree - 0x0000000000531d50 MD_malloc_hint - 0x0000000000531d60 MD_shmalloc - 0x0000000000531db0 MD_clock - 0x0000000000531d80 MD_set_reference_time - 0x0000000000531e10 data_representation - 0x0000000000531d30 MD_initmem - .text 0x0000000000532250 0x6a2 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - 0x00000000005328e0 p4_set_hard_errors - 0x0000000000532250 p4_soft_errors - 0x0000000000532600 trap_sig_errs - 0x00000000005322a0 p4_error - *fill* 0x00000000005328f2 0xe 90909090 - .text 0x0000000000532900 0xbfd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - 0x0000000000532900 process_args - *fill* 0x00000000005334fd 0x3 90909090 - .text 0x0000000000533500 0x99d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - 0x0000000000533ad0 free_p4_msg - 0x0000000000533820 init_avail_buffs - 0x00000000005335f0 alloc_local_rm - 0x0000000000533930 alloc_p4_msg - 0x0000000000533500 alloc_local_bm - 0x0000000000533720 alloc_local_slave - 0x0000000000533c20 free_avail_buffs - 0x00000000005336d0 alloc_local_listener - 0x0000000000533e10 alloc_listener_info - 0x0000000000533880 p4_print_avail_buffs - 0x0000000000533cb0 alloc_global - 0x00000000005337f0 p4_set_avail_buff - *fill* 0x0000000000533e9d 0x3 90909090 - .text 0x0000000000533ea0 0x7de /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - 0x0000000000534270 dump_local - 0x0000000000534130 dump_global - 0x00000000005343a0 print_conn_type - 0x0000000000533ff0 p4_dprint_last - 0x0000000000533ed0 p4_dprintf - 0x0000000000533ea0 p4_get_dbg_level - 0x00000000005345c0 dump_conntab - 0x0000000000534580 dump_tmsg - 0x0000000000533eb0 p4_set_dbg_level - 0x00000000005344e0 dump_procgroup - 0x0000000000534000 p4_dprintfl - 0x0000000000534480 dump_listener - *fill* 0x000000000053467e 0x2 90909090 - .text 0x0000000000534680 0x4ad /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - 0x00000000005346e0 read_procgroup - 0x0000000000534680 p4_alloc_procgroup - 0x00000000005349e0 install_in_proctable - *fill* 0x0000000000534b2d 0x3 90909090 - .text 0x0000000000534b30 0xc01 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - 0x0000000000535530 initialize_msg_queue - 0x0000000000535550 alloc_quel - 0x0000000000535130 queue_p4_message - 0x00000000005354f0 p4_msg_alloc - 0x0000000000535430 get_tmsg - 0x0000000000535660 free_avail_quels - 0x0000000000535190 send_message - 0x0000000000534f10 recv_message - 0x00000000005356d0 p4_yield - 0x0000000000535510 p4_msg_free - 0x0000000000534f50 p4_any_messages_available - 0x0000000000535620 free_quel - 0x0000000000535000 p4_messages_available - 0x0000000000534b30 search_p4_queue - 0x00000000005356e0 p4_waitformsg - 0x0000000000534d30 p4_recv - *fill* 0x0000000000535731 0xf 90909090 - .text 0x0000000000535740 0x4d3 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - 0x00000000005359d0 p4_askfor - 0x0000000000535b80 p4_progend - 0x0000000000535940 p4_barrier_init - 0x0000000000535860 num_in_mon_queue - 0x0000000000535800 p4_mexit - 0x0000000000535830 p4_mcontinue - 0x0000000000535810 p4_mdelay - 0x0000000000535880 p4_getsub_init - 0x0000000000535b40 p4_probend - 0x0000000000535960 p4_barrier - 0x00000000005358a0 p4_getsubs - 0x00000000005357f0 p4_menter - 0x0000000000535af0 p4_update - 0x00000000005359b0 p4_askfor_init - 0x0000000000535740 p4_moninit - 0x0000000000535bc0 p4_create - *fill* 0x0000000000535c13 0xd 90909090 - .text 0x0000000000535c20 0x1188 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - 0x0000000000536a30 p4_flt_absmin_op - 0x0000000000536cc0 p4_int_absmin_op - 0x0000000000536950 p4_flt_absmax_op - 0x00000000005364d0 p4_dbl_sum_op - 0x00000000005365c0 p4_dbl_min_op - 0x0000000000536220 p4_global_op - 0x0000000000536710 p4_dbl_absmin_op - 0x0000000000536810 p4_flt_sum_op - 0x0000000000536860 p4_flt_mult_op - 0x0000000000535c20 p4_broadcastx - 0x0000000000536520 p4_dbl_mult_op - 0x0000000000535cf0 subtree_broadcast_p4 - 0x0000000000536b90 p4_int_max_op - 0x0000000000536bd0 p4_int_min_op - 0x0000000000536c10 p4_int_absmax_op - 0x0000000000536b10 p4_int_sum_op - 0x0000000000536610 p4_dbl_absmax_op - 0x0000000000536b50 p4_int_mult_op - 0x0000000000536900 p4_flt_min_op - 0x0000000000536570 p4_dbl_max_op - 0x00000000005368b0 p4_flt_max_op - *fill* 0x0000000000536da8 0x8 90909090 - .text 0x0000000000536db0 0x948 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - 0x0000000000537480 MPID_RecvComplete - 0x0000000000536e40 MPID_IrecvContig - 0x00000000005376f0 MPID_Status_set_bytes - 0x0000000000537220 MPID_RecvIcomplete - 0x0000000000536db0 MPID_RecvContig - *fill* 0x00000000005376f8 0x8 90909090 - .text 0x0000000000537700 0x763 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - 0x0000000000537b40 MPID_SendIcomplete - 0x0000000000537700 MPID_SendContig - 0x0000000000537c30 MPID_SendComplete - 0x0000000000537a00 MPID_BsendContig - 0x0000000000537870 MPID_IsendContig - *fill* 0x0000000000537e63 0xd 90909090 - .text 0x0000000000537e70 0x479 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - 0x0000000000538150 MPID_RecvCancel - 0x0000000000537e70 MPID_SendCancel - *fill* 0x00000000005382e9 0x7 90909090 - .text 0x00000000005382f0 0x1976 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - 0x0000000000539ba0 MPID_CH_Eagerb_delete - 0x00000000005382f0 MPID_CH_Eagerb_send - 0x0000000000539bb0 MPID_CH_Eagerb_setup - 0x0000000000539870 MPID_CH_Eagerb_cancel_send - 0x0000000000538960 MPID_CH_Eagerb_recv - 0x0000000000539880 MPID_CH_Eagerb_irecv - 0x00000000005391d0 MPID_CH_Eagerb_isend - 0x0000000000538ea0 MPID_CH_Eagerb_save - 0x0000000000538c60 MPID_CH_Eagerb_unxrecv_start - *fill* 0x0000000000539c66 0xa 90909090 - .text 0x0000000000539c70 0x25a0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - 0x000000000053bd80 MPID_CH_Rndvb_save_self - 0x0000000000539c70 MPID_CH_Rndvb_isend - 0x000000000053b8c0 MPID_CH_Rndvb_ack - 0x000000000053a1f0 MPID_CH_Rndvb_send - 0x000000000053a2f0 MPID_CH_Rndvb_irecv - 0x000000000053ac80 MPID_CH_Rndvb_ok_to_send - 0x000000000053c150 MPID_CH_Rndvb_delete - 0x000000000053aa70 MPID_CH_Rndvb_save - 0x000000000053b5d0 MPID_CH_Rndvb_unxrecv_test_end - 0x000000000053c160 MPID_CH_Rndvb_setup - 0x000000000053bea0 MPID_CH_Rndvb_unxrecv_start_self - 0x000000000053aea0 MPID_CH_Rndvb_unxrecv_start - 0x000000000053b1b0 MPID_CH_Rndvb_unxrecv_end - .text 0x000000000053c210 0xf63 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - 0x000000000053c210 MPID_CH_Check_incoming - *fill* 0x000000000053d173 0xd 90909090 - .text 0x000000000053d180 0x18ca /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - 0x000000000053e9a0 MPID_CH_Short_setup - 0x000000000053e4b0 MPID_CH_Eagerb_unxrecv_start_short - 0x000000000053d9c0 MPID_CH_Eagerb_isend_short - 0x000000000053e6f0 MPID_CH_Eagerb_save_short - 0x000000000053e220 MPID_CH_Eagerb_recv_short - 0x000000000053d180 MPID_CH_Eagerb_send_short - 0x000000000053e990 MPID_CH_Eagerb_short_delete - *fill* 0x000000000053ea4a 0x6 90909090 - .text 0x000000000053ea50 0x4be /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - 0x000000000053ea70 MPID_SendFlowPacket - 0x000000000053edd0 MPID_FlowDelete - 0x000000000053ec30 MPID_RecvFlowPacket - 0x000000000053edf0 MPID_FlowDump - 0x000000000053ea50 MPID_FlowDebug - 0x000000000053ecd0 MPID_FlowSetup - *fill* 0x000000000053ef0e 0x2 90909090 - .text 0x000000000053ef10 0x61e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - 0x000000000053ef10 PMPI_Type_hindexed - 0x000000000053ef10 MPI_Type_hindexed - *fill* 0x000000000053f52e 0x2 90909090 - .text 0x000000000053f530 0x48c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dmpipk.o) - 0x000000000053f530 MPIR_Pack_Hvector - 0x000000000053f9b0 MPIR_HvectorLen - 0x000000000053f770 MPIR_UnPack_Hvector - .text 0x000000000053f9bc 0x2f4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - 0x000000000053fc2c __hpfio_cleanup - 0x000000000053fc05 pgcrf90io_close - 0x000000000053fb87 pgf90io_close - 0x000000000053faa3 __hpfio_close - .text 0x000000000053fcb0 0xc0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) - 0x000000000053fd10 pghpfio_usw_read - 0x000000000053fce0 pghpfio_ldr - 0x000000000053fd28 pghpfio_usw_write - 0x000000000053fcc8 pghpfio_fmt_write - 0x000000000053fcb0 pghpfio_fmt_read - 0x000000000053fcf8 pghpfio_ldw - 0x000000000053fd58 pghpfio_unf_write - 0x000000000053fd40 pghpfio_unf_read - .text 0x000000000053fd70 0xace /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - 0x000000000054081b pgcrf90io_encode_fmtv - 0x00000000005407f3 pgf90io_encode_fmtv - 0x00000000005407cc pgcrf90io_encode_fmt - 0x00000000005407a0 pgf90io_encode_fmt - *fill* 0x000000000054083e 0x2 90909090 - .text 0x0000000000540840 0x9ba /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - 0x0000000000540aff __hpfio_errmsg - 0x0000000000540cb7 __hpfio_eorerr - 0x0000000000540f05 pgf90io_src_info - 0x0000000000540f1b pgcrf90io_src_info - 0x00000000005408e0 __hpfio_error - 0x0000000000540840 __hpfio_errinit - 0x00000000005411c5 __hpfio_check_format - 0x0000000000540b90 __hpfio_eoferr - *fill* 0x00000000005411fa 0x2 90909090 - .text 0x00000000005411fc 0x2759 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - 0x0000000000541a85 pgf90io_fmt_read_a - 0x000000000054170c pgcrf90io_fmtr_intern_init - 0x0000000000541adb pgcrf90io_fmt_read - 0x0000000000541794 pgcrf90io_fmtr_intern_initv - 0x000000000054139d pgf90io_fmtr_init - 0x000000000054181f pgcrf90io_fmtr_intern_inite - 0x00000000005418c5 __f90io_fmt_read - 0x00000000005417a5 pgf90io_fmtr_intern_inite - 0x0000000000543947 pgcrf90io_fmtr_end - 0x0000000000541833 pgf90io_fmtr_intern_initev - 0x0000000000541443 pgcrf90io_fmtr_init - 0x0000000000543939 pgf90io_fmtr_end - 0x000000000054147a pgf90io_fmtr_initv - 0x0000000000541ab1 pgf90io_fmt_read64_a - 0x0000000000541a59 pgf90io_fmt_read - 0x000000000054171a pgf90io_fmtr_intern_initv - 0x00000000005418ae pgcrf90io_fmtr_intern_initev - 0x0000000000541693 pgf90io_fmtr_intern_init - 0x0000000000541520 pgcrf90io_fmtr_initv - *fill* 0x0000000000543955 0x3 90909090 - .text 0x0000000000543958 0x2390 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - 0x0000000000543bb7 pgcrf90io_fmtw_init - 0x0000000000543b14 pgf90io_fmtw_init - 0x0000000000543edd pgf90io_fmtw_intern_inite - 0x000000000054419c pgcrf90io_fmt_write - 0x0000000000543e31 pgf90io_fmtw_intern_initv - 0x0000000000543ebb pgcrf90io_fmtw_intern_initv - 0x0000000000544177 pgf90io_fmt_write64_a - 0x0000000000544152 pgf90io_fmt_write_a - 0x0000000000545ccc pgf90io_fmtw_end - 0x0000000000543c8f pgcrf90io_fmtw_initv - 0x0000000000543f92 pgf90io_fmtw_intern_initev - 0x0000000000543e12 pgcrf90io_fmtw_intern_init - 0x0000000000543bec pgf90io_fmtw_initv - 0x000000000054412d pgf90io_fmt_write - 0x0000000000543d88 pgf90io_fmtw_intern_init - 0x0000000000545cda pgcrf90io_fmtw_end - 0x0000000000543f6a pgcrf90io_fmtw_intern_inite - 0x000000000054401f pgcrf90io_fmtw_intern_initev - 0x000000000054404a __f90io_fmt_write - .text 0x0000000000545ce8 0x24a /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - 0x0000000000545f11 pgcrf90_pause - 0x0000000000545df8 pgcrf90_stop - 0x0000000000545dd7 pgf90_stop - 0x0000000000545d16 pgcrf90_exit - 0x0000000000545ce8 pgf90_exit - 0x0000000000545ee6 pgf90_pause - *fill* 0x0000000000545f32 0x2 90909090 - .text 0x0000000000545f34 0x1008 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - 0x0000000000546f2e pgcrf90io_ldr_end - 0x000000000054636b pgcrf90io_ldr - 0x0000000000546126 pgf90io_ldr_intern_inite - 0x0000000000546030 pgcrf90io_ldr_init - 0x0000000000546315 pgf90io_ldr_a - 0x00000000005460b1 pgf90io_ldr_intern_init - 0x000000000054618e pgcrf90io_ldr_intern_inite - 0x000000000054603e f90io_ldr_intern_init - 0x0000000000546f20 pgf90io_ldr_end - 0x0000000000545fd7 pgf90io_ldr_init - 0x0000000000546341 pgf90io_ldr64_a - 0x0000000000546118 pgcrf90io_ldr_intern_init - 0x00000000005462e9 pgf90io_ldr - 0x00000000005461d5 __f90io_ldr - .text 0x0000000000546f3c 0x918 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - 0x000000000054747f pgcrf90io_ldw - 0x0000000000547127 pgf90io_ldw_intern_init - 0x0000000000547262 __f90io_ldw - 0x0000000000547841 pgcrf90io_ldw_end - 0x000000000054745a pgf90io_ldw64_a - 0x0000000000547410 pgf90io_ldw - 0x000000000054723a pgcrf90io_ldw_intern_inite - 0x00000000005471be pgf90io_ldw_intern_inite - 0x0000000000547079 pgcrf90io_ldw_init - 0x0000000000547016 pgf90io_ldw_init - 0x000000000054782e pgf90io_ldw_end - 0x0000000000547435 pgf90io_ldw_a - 0x000000000054719f pgcrf90io_ldw_intern_init - .text 0x0000000000547854 0xfe8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - 0x0000000000547854 __hpfio_open - 0x000000000054855b pgf90io_open_cvt - 0x0000000000548367 pgf90io_open - 0x0000000000548616 pgcrf90io_open - 0x0000000000548786 pgcrf90io_open_cvt - .text 0x000000000054883c 0xfd /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - 0x000000000054892b pgcrf90io_rewind - 0x00000000005488e4 pgf90io_rewind - *fill* 0x0000000000548939 0x3 90909090 - .text 0x000000000054893c 0x1b8f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - 0x0000000000548e44 pgf90io_unf_read_a - 0x0000000000548ed8 __f90io_unf_write - 0x0000000000548bc5 __f90io_unf_read - 0x0000000000548e6e pgf90io_unf_read64_a - 0x0000000000549350 pgf90io_byte_write64 - 0x00000000005498d4 __f90io_usw_read - 0x0000000000549304 pgf90io_unf_write64_a - 0x000000000054a074 pgf90io_usw_write - 0x00000000005492da pgf90io_unf_write_a - 0x0000000000549c06 __f90io_usw_write - 0x0000000000549bb2 pgf90io_usw_read_a - 0x0000000000548eba pgf90io_byte_read64 - 0x000000000054936e __f90io_unf_end - 0x0000000000548e98 pgf90io_byte_read - 0x000000000054a4bd pgf90io_usw_end - 0x0000000000548b5e pgf90io_unf_init - 0x00000000005497c0 __f90io_usw_init - 0x000000000054986d pgf90io_usw_init - 0x00000000005497b2 pgf90io_unf_end - 0x00000000005492b0 pgf90io_unf_write - 0x000000000054932e pgf90io_byte_write - 0x0000000000548e1a pgf90io_unf_read - 0x000000000054a09e pgf90io_usw_write_a - 0x0000000000549bdc pgf90io_usw_read64_a - 0x0000000000548983 __f90io_unf_init - 0x0000000000549b88 pgf90io_usw_read - 0x000000000054a0c8 pgf90io_usw_write64_a - 0x000000000054a0f2 __f90io_usw_end - *fill* 0x000000000054a4cb 0x1 90909090 - .text 0x000000000054a4cc 0x682 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - 0x000000000054a910 __hpfio_zeropad - 0x000000000054a4cc __hpfio_alloc_fcb - 0x000000000054a985 __hpfio_eq_str - 0x000000000054a586 __hpfio_rwinit - 0x000000000054a8f1 __hpfio_find_unit - 0x000000000054a540 __hpfio_free_fcb - 0x000000000054a9ee __hpfio_swap_bytes - *fill* 0x000000000054ab4e 0x2 90909090 - .text 0x000000000054ab50 0xb21 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - 0x000000000054ab50 __hpf_atoxi32 - 0x000000000054ad6b __hpf_atoxi64 - 0x000000000054adaa __hpf_i64toax - *fill* 0x000000000054b671 0x3 90909090 - .text 0x000000000054b674 0x97f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - 0x000000000054bd31 pgf90_ptr_calloc - 0x000000000054b774 pghpf_ptr_offset - 0x000000000054b7a8 __hpf_alloc - 0x000000000054ba90 ftn_allocate - 0x000000000054bdb0 __hpf_dealloc - 0x000000000054bd88 __hpf_local_allocate - 0x000000000054bcd3 pgf90_calloc - 0x000000000054b6be __hpf_ptr_offset - 0x000000000054bfc3 __hpf_deallocate - 0x000000000054bb0d pgf90_alloc - 0x000000000054becd ftn_dealloc - 0x000000000054bfa7 pgf90_deallocx - 0x000000000054ba31 ftn_allocated - 0x000000000054bfdb __hpf_local_deallocate - 0x000000000054ba6f pgf90_kallocated - 0x000000000054bee0 pgf90_dealloc - 0x000000000054bd60 __hpf_allocate - 0x000000000054b674 __hpf_ptr_aligned - 0x000000000054b9c7 __hpf_allocated - 0x000000000054ba50 pgf90_allocated - 0x000000000054bb0c __f90_allo_term - 0x000000000054beba ftn_deallocate - 0x000000000054bd02 pgf90_ptr_alloc - 0x000000000054bad0 ftn_alloc - *fill* 0x000000000054bff3 0x1 90909090 - .text 0x000000000054bff4 0x9ad /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - 0x000000000054c8aa __hpf_entry_asend_done - 0x000000000054c5f2 __hpf_entry_recv - 0x000000000054c24c pghpf_line_entry - 0x000000000054c6e0 __hpf_entry_send_done - 0x000000000054bff4 __hpf_entry_init - 0x000000000054c5ad pghpf_tracecall - 0x000000000054c970 __hpf_entry_term - 0x000000000054c68a __hpf_entry_send - 0x000000000054c099 pghpf_function_entry - 0x000000000054c8ec __hpf_entry_await - 0x000000000054c92e __hpf_entry_await_done - 0x000000000054c276 __hpf_traceback - 0x000000000054c3fa __hpf_tracecall - 0x000000000054c722 __hpf_entry_copy - 0x000000000054c207 pghpf_function_exit - 0x000000000054c801 __hpf_entry_arecv_done - 0x000000000054c3e7 pghpf_traceback - 0x000000000054c79a __hpf_entry_arecv - 0x000000000054c758 __hpf_entry_copy_done - 0x000000000054c648 __hpf_entry_recv_done - 0x000000000054c843 __hpf_entry_asend - *fill* 0x000000000054c9a1 0x3 90909090 - .text 0x000000000054c9a4 0x1d0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - 0x000000000054cacb __hpfio_stat_bcst - 0x000000000054cabb __hpfio_stat_init - 0x000000000054c9a4 __hpfio_loop - 0x000000000054ca11 __hpf_status_init - 0x000000000054ca21 __hpf_status_bcst - .text 0x000000000054cb74 0x227 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) - 0x000000000054cc6b __hpfio_main - *fill* 0x000000000054cd9b 0x1 90909090 - .text 0x000000000054cd9c 0xeed /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - 0x000000000054cda3 __hpf_ncpus - 0x000000000054d055 __hpf_getopt - 0x000000000054cd9c __hpf_myprocnum - 0x000000000054ce33 __hpf_abortp - 0x000000000054cdb1 __hpf_is_ioproc - 0x000000000054d86e __hpf_passargs - 0x000000000054db22 pghpf_init - 0x000000000054cdaa __hpf_getioproc - 0x000000000054cdc4 __hpf_abort - 0x000000000054d2a4 __hpf_getoptb - 0x000000000054dc62 pgf90_compiled - 0x000000000054ce68 __hpf_exit - 0x000000000054dc01 __hpf_pull_them_in - 0x000000000054d734 __hpf_procargs - 0x000000000054d22c __hpf_getoptn - 0x000000000054cf21 __hpf_getenv - *fill* 0x000000000054dc89 0x3 90909090 - .text 0x000000000054dc8c 0x788 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - 0x000000000054dc8c __hpf_malloc_without_abort - 0x000000000054dd9c __hpf_calloc_without_abort - 0x000000000054de25 __hpf_free - 0x000000000054e396 __hpf_gmalloc - 0x000000000054e406 __hpf_gfree - 0x000000000054e3f8 __hpf_gcalloc - 0x000000000054dd01 __hpf_realloc - 0x000000000054ddeb __hpf_calloc - 0x000000000054dce4 __hpf_malloc - 0x000000000054e32d __hpf_gmalloc_without_abort - 0x000000000054e3e0 __hpf_gcalloc_without_abort - 0x000000000054e3d2 __hpf_grealloc - .text 0x000000000054e414 0xe58 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - 0x000000000054e463 pghpf_nullify - 0x000000000054e4e0 pghpf_nullify_char - 0x000000000054f113 pghpf_associated - 0x000000000054f233 pgf90_ptrchk - 0x000000000054ea02 pghpf_ptr_assign - 0x000000000054ee67 pghpf_ptr_in_char - 0x000000000054eee6 pghpf_ptr_out - 0x000000000054f151 pghpf_associated_char - 0x000000000054f013 __hpf_associated - 0x000000000054ef95 pghpf_ptr_out_char - 0x000000000054f261 pgf90_ptrcp - 0x000000000054f17f pgf90_subchk - 0x000000000054eca0 pghpf_ptr_assign_charx - 0x000000000054ee4a pghpf_ptr_in - 0x000000000054f1d7 pgf90_subchk64 - 0x000000000054e54e pghpf_nullifyx - 0x000000000054eaf3 pghpf_ptr_assign_char - 0x000000000054e700 pghpf_ptr_asgn - 0x000000000054e7e1 pghpf_ptr_asgn_char - 0x000000000054ebb6 pghpf_ptr_assignx - .text 0x000000000054f26c 0x30de /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - 0x00000000005505ff pghpf_template - 0x0000000000550fcf pgf90_template3 - 0x0000000000550391 __hpf_copy_out - 0x0000000000551bb8 pgf90_copy_f77_argsl - 0x000000000055184c pgf90_copy_f77_argw - 0x000000000054f5e8 pghpf_qopy_in - 0x00000000005515e3 pghpf_freen - 0x00000000005512ff pgf90_template3v - 0x0000000000551575 pghpf_free - 0x000000000055145d pghpf_instance - 0x00000000005511f6 pgf90_template2v - 0x0000000000551142 pgf90_template1v - 0x000000000054f26c __hpf_stored_alike - 0x0000000000551dd6 pgf90_copy_f90_arg - 0x0000000000550eb7 pgf90_template2 - 0x0000000000552086 pgf90_copy_f90_argl - 0x000000000054f55d is_nonsequential_section - 0x000000000055057c pghpf_check_block_size - 0x0000000000550dfa pgf90_template1 - 0x0000000000550556 pghpf_copy_out - 0x00000000005516a9 pgf90_copy_f77_arg - 0x0000000000550c2d pgf90_template - 0x00000000005519fb pgf90_copy_f77_argl - *fill* 0x000000000055234a 0x2 90909090 - .text 0x000000000055234c 0x1ff /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) - 0x0000000000552416 __hpf_rrecv - 0x0000000000552532 __hpf_rbcst - 0x000000000055234c __hpf_rrecvl - 0x0000000000552448 __hpf_rbcstl - 0x000000000055242f __hpf_rsend - 0x00000000005523b1 __hpf_rsendl - *fill* 0x000000000055254b 0x1 90909090 - .text 0x000000000055254c 0x64 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - 0x000000000055254c __hpf_print_version - .text 0x00000000005525b0 0x796 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - 0x0000000000552c62 __hpf_chn_prune - 0x0000000000552c0e __hpf_getgbuf - 0x00000000005529bc __hpf_chain_em_up - 0x0000000000552652 __hpf_frechn - 0x000000000055270d __hpf_rstchn - 0x0000000000552be8 __hpf_setbase - 0x00000000005525b0 __hpf_allchn - 0x0000000000552891 __hpf_recvl - 0x00000000005529dd __hpf_adjbase - 0x0000000000552766 __hpf_sendl - *fill* 0x0000000000552d46 0x2 90909090 - .text 0x0000000000552d48 0x241 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - 0x0000000000552d90 __hpf_gettb - 0x0000000000552d48 __hpf_setarg - 0x0000000000552f12 __hpf_second - *fill* 0x0000000000552f89 0x3 90909090 - .text 0x0000000000552f8c 0x9a3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - 0x00000000005532e5 __hpf_allocated_i8 - 0x00000000005538ff __hpf_deallocate_i8 - 0x00000000005533ae ftn_allocate_i8 - 0x0000000000553602 pgf90_calloc_i8 - 0x000000000055381b pgf90_dealloc_i8 - 0x00000000005536eb __hpf_dealloc_i8 - 0x00000000005533f1 ftn_alloc_i8 - 0x0000000000552f8c __hpf_ptr_aligned_i8 - 0x000000000055308a pghpf_ptr_offset_i8 - 0x0000000000553664 pgf90_ptr_calloc_i8 - 0x00000000005538e3 pgf90_deallocx_i8 - 0x000000000055338d pgf90_kallocated_i8 - 0x0000000000553633 pgf90_ptr_alloc_i8 - 0x00000000005536c0 __hpf_local_allocate_i8 - 0x0000000000553917 __hpf_local_deallocate_i8 - 0x0000000000553430 __f90_allo_term_i8 - 0x0000000000553431 pgf90_alloc_i8 - 0x00000000005537f5 ftn_deallocate_i8 - 0x0000000000552fd5 __hpf_ptr_offset_i8 - 0x000000000055336e pgf90_allocated_i8 - 0x0000000000553808 ftn_dealloc_i8 - 0x0000000000553695 __hpf_allocate_i8 - 0x000000000055334f ftn_allocated_i8 - 0x00000000005530be __hpf_alloc_i8 - *fill* 0x000000000055392f 0x1 90909090 - .text 0x0000000000553930 0x2de /usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - 0x0000000000553930 __hpfio_assign - *fill* 0x0000000000553c0e 0x2 90909090 - .text 0x0000000000553c10 0x18d3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x00000000005548ef __hpfio_fmt_e - 0x0000000000554a17 __hpfio_fmt_f - 0x0000000000553c28 __hpfio_default_convert - 0x0000000000554293 __hpfio_fmt_i8 - 0x0000000000554122 __hpfio_fmt_i - 0x0000000000554585 __hpfio_fmt_d - 0x0000000000555426 __hpfio_chk_f - 0x0000000000553c10 __hpfio_printbigreal - 0x0000000000554677 __hpfio_fmt_g - *fill* 0x00000000005554e3 0x1 90909090 - .text 0x00000000005554e4 0x359 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - 0x00000000005554e4 __hpfio_getnum - *fill* 0x000000000055583d 0x3 90909090 - .text 0x0000000000555840 0x13da /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - 0x0000000000556a9d __hpfio_fcvt - 0x00000000005569b5 __hpfio_ecvt - 0x000000000055695a __hpfio_strtod - *fill* 0x0000000000556c1a 0x2 90909090 - .text 0x0000000000556c1c 0xcf /usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - 0x0000000000556c1c __hpf_atol - 0x0000000000556c6a __hpf_strtol - *fill* 0x0000000000556ceb 0x1 90909090 - .text 0x0000000000556cec 0x582d /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - 0x0000000000556ee7 pghpf_owner - 0x000000000055b1d7 pghpf_kuboundaz - 0x0000000000557a4c __hpf_defaultproc - 0x0000000000557ba4 __hpf_set_alignment - 0x000000000055701e __hpf_next_owner - 0x000000000055745d __hpf_cycle_bounds - 0x000000000055b031 pghpf_lboundaz - 0x0000000000557b3d __hpf_localproc - 0x000000000055b224 pghpf_size - 0x0000000000558241 pgf90_sect - 0x0000000000557e07 __hpf_finish_section - 0x000000000055acfc __hpf_copy_descriptor - 0x0000000000557d88 __hpf_set_section - 0x0000000000557740 pghpf_localize_bounds - 0x0000000000559190 pgf90_sect2v - 0x0000000000556cec __hpf_new_gen_block - 0x000000000055a863 pghpf_sect3v - 0x000000000055b359 pghpf_kshape - 0x000000000055b29d pghpf_ksize - 0x0000000000557508 pghpf_cyclic_loop - 0x000000000055746c __hpf_cyclic_loop - 0x0000000000559d13 pgf90_sect3v - 0x000000000055b074 pghpf_klbounda - 0x0000000000557399 pghpf_localize_index - 0x0000000000556cf2 __hpf_gen_block_bounds - 0x000000000055b316 pghpf_shape - 0x000000000055758a block_setup - 0x0000000000556fbf __hpf_describe_replication - 0x000000000055ae4b pghpf_lbound - 0x0000000000557c67 __hpf_finish_descriptor - 0x0000000000558cb6 pgf90_sect2 - 0x0000000000557cec __hpf_set_sectionx - 0x000000000055a350 pghpf_sect3 - 0x000000000055716b __hpf_localize - 0x0000000000557c37 __hpf_use_allocation - 0x000000000055b18e pghpf_kubounda - 0x0000000000557c3f __hpf_set_single - 0x0000000000556de1 int_mult_upper - 0x000000000055ad96 pghpf_glextent - 0x000000000055af81 pghpf_kubound - 0x000000000055aeb0 pghpf_klbound - 0x00000000005595ed pgf90_sect3 - 0x0000000000557941 pghpf_processors - 0x000000000055b0b7 pghpf_klboundaz - 0x000000000055afee pghpf_lbounda - 0x0000000000556df0 _int_mult_upper - 0x000000000055723d __hpf_local_offset - 0x000000000055b0fc pghpf_ubounda - 0x000000000055af16 pghpf_ubound - 0x0000000000556e02 __hpf_gcd - 0x0000000000557069 pghpf_islocal_idx - 0x0000000000557070 __hpf_islocal - 0x000000000055ad7f pghpf_extent - 0x0000000000558729 pgf90_sect1 - 0x00000000005589ff pgf90_sect1v - 0x000000000055b39e __hpf_reverse_array - 0x0000000000557e2e pghpf_sect - 0x0000000000557082 pghpf_islocal - 0x0000000000557231 pghpf_localize_dim - 0x000000000055b145 pghpf_uboundaz - 0x000000000055768e __hpf_block_loop - 0x0000000000556eb2 __hpf_lcm - 0x0000000000556ee1 __hpf_owner - 0x000000000055764b pghpf_block_loop - 0x00000000005572a0 __hpf_local_address - 0x000000000055ad34 __hpf_inherit_template - 0x00000000005576e9 __hpf_block_bounds - *fill* 0x000000000055c519 0x3 90909090 - .text 0x000000000055c51c 0x218 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - 0x000000000055c55b __hpf_comm_sked - 0x000000000055c65f pghpf_comm_free - 0x000000000055c59a pghpf_comm_start - 0x000000000055c5c7 pghpf_comm_execute - 0x000000000055c5c6 pghpf_comm_finish - .text 0x000000000055c734 0x105f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - 0x000000000055d39a pghpf_transpose - 0x000000000055d240 pghpf_copy_section - 0x000000000055d2ec pghpf_comm_copy - 0x000000000055cbed __hpf_copy - 0x000000000055d47a pghpf_copy_scalar - 0x000000000055d0e0 pghpf_permute_section - 0x000000000055cb61 copy_setup - *fill* 0x000000000055d793 0x1 90909090 - .text 0x000000000055d794 0x5a /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - 0x000000000055d7ac __hpf_endpar - 0x000000000055d7e9 __hpf_barrier - 0x000000000055d7eb pghpf_tid - 0x000000000055d7ad __hpf_begpar - 0x000000000055d7ea pghpf_barrier - 0x000000000055d794 __hpf_abortx - *fill* 0x000000000055d7ee 0x2 90909090 - .text 0x000000000055d7f0 0xc9 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - 0x000000000055d803 __hpf_esend - 0x000000000055d816 __hpf_ebcopys - 0x000000000055d7f0 __hpf_erecv - 0x000000000055d859 __hpf_doit - *fill* 0x000000000055d8b9 0x3 90909090 - .text 0x000000000055d8bc 0x7a /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - 0x000000000055d8bc __pgget_hpfio_cnfg_default_name - 0x000000000055d8e2 __hpfio_scratch_name - 0x000000000055d8c4 __pgget_hpfio_cnfg_true_mask - 0x000000000055d8d3 __pgget_hpfio_cnfg_ftn_true - 0x000000000055d8da __pgget_hpfio_cnfg_ftn_true_addr - 0x000000000055d8cb __pgget_hpfio_cnfg_true_mask_addr - *fill* 0x000000000055d936 0x2 90909090 - .text 0x000000000055d938 0x13 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopy.o) - 0x000000000055d938 __hpf_bcopy - *fill* 0x000000000055d94b 0x1 90909090 - .text 0x000000000055d94c 0x3d7 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopys.o) - 0x000000000055d94c __hpf_bcopysl - *fill* 0x000000000055dd23 0x1 90909090 - .text 0x000000000055dd24 0x183 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - 0x000000000055de53 __hpf_zwrite - 0x000000000055de8e __hpf_zclose - 0x000000000055dd24 __hpf_zopen - 0x000000000055de87 __hpf_ztell - *fill* 0x000000000055dea7 0x1 90909090 - .text 0x000000000055dea8 0x28b /usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) - 0x000000000055dea8 __hpf_chn_1to1 - *fill* 0x000000000055e133 0x1 90909090 - .text 0x000000000055e134 0x166 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x000000000055e134 __hpf_init_consts - *fill* 0x000000000055e29a 0x2 90909090 - .text 0x000000000055e29c 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof.o) - 0x000000000055e29c __hpf_prof_init - 0x000000000055e2a8 __hpf_prof_copy - 0x000000000055e2a7 __hpf_prof_send_done - 0x000000000055e2a2 __hpf_prof_function_entry - 0x000000000055e2a9 __hpf_prof_copy_done - 0x000000000055e2aa __hpf_prof_function_exit - 0x000000000055e2a6 __hpf_prof_send - 0x000000000055e2a4 __hpf_prof_recv - 0x000000000055e2a3 __hpf_prof_line_entry - 0x000000000055e2a5 __hpf_prof_recv_done - 0x000000000055e2ab __hpf_prof_term - .text 0x000000000055e2ac 0x6 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof2.o) - 0x000000000055e2af __hpf_prof_asend_done - 0x000000000055e2b1 __hpf_prof_await_done - 0x000000000055e2ac __hpf_prof_arecv - 0x000000000055e2ae __hpf_prof_asend - 0x000000000055e2ad __hpf_prof_arecv_done - 0x000000000055e2b0 __hpf_prof_await - *fill* 0x000000000055e2b2 0x2 90909090 - .text 0x000000000055e2b4 0x17e /usr/pgi/linux86-64/6.0/lib/libpgf902.a(genlist.o) - 0x000000000055e384 __hpf_genlist - 0x000000000055e2b4 __hpf_initndx - 0x000000000055e34f __hpf_findndx - *fill* 0x000000000055e432 0x2 90909090 - .text 0x000000000055e434 0x1b7 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - 0x000000000055e434 __hpf_psignal - 0x000000000055e530 __hpf_sethand - *fill* 0x000000000055e5eb 0x1 90909090 - .text 0x000000000055e5ec 0xea6 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - 0x000000000055f3a4 __hpf_stat_recv_done - 0x000000000055f403 __hpf_stat_arecv - 0x000000000055e63a __hpf_stat_init - 0x000000000055f490 __hpf_stat_line_entry - 0x000000000055f3d3 __hpf_stat_send_done - 0x000000000055f462 __hpf_stat_await_done - 0x000000000055e5ec pghpf_times - 0x000000000055f376 __hpf_stat_recv - 0x000000000055f432 __hpf_stat_asend - 0x000000000055f3a5 __hpf_stat_send - 0x000000000055f1da __hpf_stat_term - 0x000000000055f461 __hpf_stat_await - 0x000000000055f3d4 __hpf_stat_copy - 0x000000000055f460 __hpf_stat_asend_done - 0x000000000055f491 __hpf_stat_function_exit - 0x000000000055f431 __hpf_stat_arecv_done - 0x000000000055f463 pghpf_msgstats - 0x000000000055f402 __hpf_stat_copy_done - 0x000000000055f48f __hpf_stat_function_entry - *fill* 0x000000000055f492 0x2 90909090 - .text 0x000000000055f494 0xec /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - 0x000000000055f571 __hpf_trac_line_entry - 0x000000000055f575 __hpf_trac_send_done - 0x000000000055f57f __hpf_trac_term - 0x000000000055f573 __hpf_trac_recv_done - 0x000000000055f577 __hpf_trac_copy_done - 0x000000000055f578 __hpf_trac_function_exit - 0x000000000055f576 __hpf_trac_copy - 0x000000000055f511 __hpf_trac_function_entry - 0x000000000055f574 __hpf_trac_send - 0x000000000055f572 __hpf_trac_recv - 0x000000000055f494 __hpf_trac_init - .text 0x000000000055f580 0x6 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace2.o) - 0x000000000055f584 __hpf_trac_await - 0x000000000055f581 __hpf_trac_arecv_done - 0x000000000055f585 __hpf_trac_await_done - 0x000000000055f583 __hpf_trac_asend_done - 0x000000000055f580 __hpf_trac_arecv - 0x000000000055f582 __hpf_trac_asend - *fill* 0x000000000055f586 0x2 90909090 - .text 0x000000000055f588 0x1c /usr/pgi/linux86-64/6.0/lib/libpgf902.a(xfer_heap_dum.o) - 0x000000000055f59e __hpf_hrecv - 0x000000000055f597 __hpf_hinit - 0x000000000055f588 __hpf_sbrk - 0x000000000055f598 __hpf_hsend - 0x000000000055f596 __hpf_verghp - .text 0x000000000055f5a4 0xe /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(dacos.o) - 0x000000000055f5a4 __mth_i_dacos - *fill* 0x000000000055f5b2 0x2 90909090 - .text 0x000000000055f5b4 0x4f2 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - 0x000000000055f9f9 ftn_str_malloc - 0x000000000055f85f ftn_str_index - 0x000000000055f5b4 ftn_str_copy - 0x000000000055fa89 ftn_str_free - 0x000000000055f8ca ftn_strcmp - *fill* 0x000000000055faa6 0x2 90909090 - .text 0x000000000055faa8 0x22 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(flush3f.o) - 0x000000000055faa8 flush_ - *fill* 0x000000000055faca 0x2 90909090 - .text 0x000000000055facc 0x67 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) - 0x000000000055facc getenv_ - *fill* 0x000000000055fb33 0x1 90909090 - .text 0x000000000055fb34 0x53 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(fdate3f.o) - 0x000000000055fb34 fdate_ - *fill* 0x000000000055fb87 0x1 90909090 - .text 0x000000000055fb88 0x8c /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getarg3f.o) - 0x000000000055fc13 pgftn_arg_init - 0x000000000055fb88 getarg_ - 0x000000000055fbfe iargc_ - .text 0x000000000055fc14 0x3f1 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - 0x000000000055ffd1 fcvt - 0x000000000055ff9d ecvt - *fill* 0x0000000000560005 0x3 90909090 - .text 0x0000000000560008 0x135 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(utils3f.o) - 0x000000000056005d __cstr_free - 0x0000000000560070 __fcp_cstr - 0x0000000000560008 __fstr2cstr - 0x00000000005600ae __isatty3f - 0x00000000005600f7 __getfile3f - *fill* 0x000000000056013d 0x3 90909090 - .text 0x0000000000560140 0x80c /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - 0x0000000000560810 __fio_swap_bytes - 0x000000000056078f __fio_putwchar - 0x00000000005601b9 __fio_free_fcb - 0x000000000056072d __fio_num_euc - 0x000000000056051c __fio_zeropad - 0x0000000000560683 __fio_euc2wchar - 0x00000000005601ff __fio_rwinit - 0x00000000005604fd __fio_find_unit - 0x0000000000560140 __fio_alloc_fcb - 0x0000000000560591 __fio_eq_str - 0x00000000005605fa __fio_wchar2euc - .text 0x000000000056094c 0x86f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - 0x000000000056094c __fio_errinit - 0x00000000005609cc __fio_error - 0x0000000000560bda __fio_errmsg - 0x0000000000561186 __fio_check_format - 0x0000000000560f1f fio_src_info - 0x0000000000560c75 __fio_eoferr - *fill* 0x00000000005611bb 0x1 90909090 - .text 0x00000000005611bc 0x58 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - 0x00000000005611bc ftn_exit - .text 0x0000000000561214 0xb47 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - 0x0000000000561214 fio_open - 0x00000000005615df __fio_open - 0x0000000000561b7e fio_nopen - 0x0000000000561ca5 fio_open_cvt - *fill* 0x0000000000561d5b 0x1 90909090 - .text 0x0000000000561d5c 0x1c0 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - 0x0000000000561e5d __fio_close - 0x0000000000561d5c fio_close - .text 0x0000000000561f1c 0x90 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - 0x0000000000561f1c __fio_scratch_name - .text 0x0000000000561fac 0x1 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - 0x0000000000561fac __pc_set_tmp - *fill* 0x0000000000561fad 0x3 90909090 - .text 0x0000000000561fb0 0x99 /usr/lib64/libc_nonshared.a(elf-init.oS) - 0x0000000000562010 __libc_csu_fini - 0x0000000000561fb0 __libc_csu_init - *fill* 0x0000000000562049 0x7 90909090 - .text 0x0000000000562050 0x18 /usr/lib64/libc_nonshared.a(atexit.oS) - 0x0000000000562050 atexit - *fill* 0x0000000000562068 0x8 90909090 - .text 0x0000000000562070 0x12e /usr/pgi/linux86-64/6.0/lib/libnspgc.a(pgdbg_utils.o) - 0x0000000000562100 __set_xmmreg - 0x0000000000562190 __pgdbg_stub - 0x0000000000562070 __get_xmmreg - *fill* 0x000000000056219e 0x2 90909090 - .text 0x00000000005621a0 0x16f7 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - 0x00000000005637e6 __utl_i_dflt64 - 0x00000000005621a0 __utl_i_add64 - 0x000000000056385a __utl_i_flt64 - 0x00000000005637af __utl_i_dfix64 - 0x00000000005624f5 __utl_i_udiv64 - 0x00000000005622a9 __utl_i_mul64 - 0x000000000056230a __utl_i_div64 - 0x000000000056381d __utl_i_fix64 - 0x0000000000562220 __utl_i_sub64 - *fill* 0x0000000000563897 0x1 90909090 - .text 0x0000000000563898 0x84 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - 0x0000000000563898 __mth_i_dpowi - *fill* 0x000000000056391c 0x4 90909090 - .text 0x0000000000563920 0x26 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dfloatuk.o) - 0x0000000000563920 __mth_i_dfloatuk - *fill* 0x0000000000563946 0xa 90909090 - .text 0x0000000000563950 0x5c /usr/pgi/linux86-64/6.0/lib/libpgc.a(dint.o) - 0x0000000000563950 __mth_i_dint - .text 0x00000000005639ac 0x1fa /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) - 0x00000000005639ac __pgio_environ - 0x0000000000563b44 __pgio_fwrite - 0x0000000000563a89 __pgio_ferror - 0x0000000000563acb __pgio_binary_mode - 0x0000000000563a72 __pgio_feof - 0x00000000005639b9 __pgio_errno - 0x0000000000563ab1 __pgio_isatty - 0x0000000000563aa0 __pgio_getfd - 0x0000000000563a1e __pgio_putc - 0x0000000000563b73 __pgio_timezone - 0x00000000005639fa __pgio_stderr - 0x00000000005639e0 __pgio_stdin - 0x0000000000563a46 __pgio_putchar - 0x0000000000563a3b __pgio_getchar - 0x00000000005639c6 __pgio_set_errno - 0x0000000000563ada __pgio_ispipe - 0x0000000000563a5b __pgio_clearerr - 0x0000000000563a07 __pgio_getc - 0x00000000005639ed __pgio_stdout - *fill* 0x0000000000563ba6 0x2 90909090 - .text 0x0000000000563ba8 0xfc /usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - 0x0000000000563c2a _mp_realloc - 0x0000000000563be5 _mp_calloc - 0x0000000000563ba8 _mp_malloc - 0x0000000000563c6f _mp_free - .text 0x0000000000563ca4 0x2e /usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - 0x0000000000563cbd _mp_ecs_stdio - 0x0000000000563ca4 _mp_bcs_stdio - *fill* 0x0000000000563cd2 0x2 90909090 - .text 0x0000000000563cd4 0x257 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - 0x0000000000563ee7 __pgio_tempnam - *fill* 0x0000000000563f2b 0x1 90909090 - .text 0x0000000000563f2c 0x660 /usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - 0x00000000005642df __builtin_va_memarg - 0x000000000056434e __builtin_va_genarg - 0x000000000056419d __builtin_va_fparg1 - 0x0000000000564067 __builtin_va_gparg1 - 0x0000000000564212 __builtin_va_fpargs - 0x00000000005640d6 __builtin_va_gpargs - 0x0000000000563f2c dmp_va_list - .text 0x000000000056458c 0x40 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - 0x000000000056458c __pgio_get_argv - 0x00000000005645ba __pgio_set_argc - 0x00000000005645ae __pgio_get_argc - 0x0000000000564599 __pgio_set_argv - *fill* 0x00000000005645cc 0x4 90909090 - .text 0x00000000005645d0 0x217a /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - 0x00000000005645d0 __mth_dsincos - 0x0000000000565510 __mth_i_dsin - 0x0000000000565bd0 __mth_i_dcos - *fill* 0x000000000056674a 0x6 90909090 - .text 0x0000000000566750 0xa5f /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - 0x0000000000566750 __mth_i_dtan - *fill* 0x00000000005671af 0x1 90909090 - .text 0x00000000005671b0 0x2be /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - 0x00000000005671b0 __mth_i_datan - *fill* 0x000000000056746e 0x2 90909090 - .text 0x0000000000567470 0x33fc /usr/pgi/linux86-64/6.0/lib/libpgc.a(fastmath.o) - 0x0000000000568480 __fmth_i_exp - 0x0000000000568ba0 __fmth_i_dlog - 0x0000000000567f50 __fmth_i_dexp - 0x0000000000568570 __fvsexp - 0x000000000056a6a0 __fmth_i_alog - 0x0000000000567a20 __fmth_i_dpowd - 0x0000000000567910 __fvdpow - 0x0000000000569bd0 __fvslog - 0x0000000000567580 __fmth_i_rpowr - 0x00000000005682e0 __fvdexp - 0x0000000000567470 __fvspow - 0x0000000000569380 __fvdlog - *fill* 0x000000000056a86c 0x4 90909090 - .text 0x000000000056a870 0x54 /usr/pgi/linux86-64/6.0/lib/libpgc.a(crit_dum.o) - 0x000000000056a890 _mp_p - 0x000000000056a880 _mp_ecs - 0x000000000056a870 _mp_bcs - 0x000000000056a8a0 _mp_v - 0x000000000056a8c0 _mp_incr - 0x000000000056a8b0 _mp_ptest - *fill* 0x000000000056a8c4 0xc 90909090 - .text 0x000000000056a8d0 0xf /usr/lib64/libc_nonshared.a(fstat.oS) - 0x000000000056a8d0 fstat - 0x000000000056a8d0 __fstat - *fill* 0x000000000056a8df 0x1 90909090 - .text 0x000000000056a8e0 0x36 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - *fill* 0x000000000056a916 0x2 90909090 - *(.text.*personality*) - *(.gnu.warning) - -.fini 0x000000000056a918 0xe - *(.fini) - .fini 0x000000000056a918 0x4 /usr/lib64/crti.o - 0x000000000056a918 _fini - .fini 0x000000000056a91c 0x5 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - .fini 0x000000000056a921 0x5 /usr/lib64/crtn.o - 0x000000000056a926 PROVIDE (__etext, .) - 0x000000000056a926 PROVIDE (_etext, .) - 0x000000000056a926 PROVIDE (etext, .) - -.rodata 0x000000000056a940 0x5560 - *(.rodata .rodata.* .gnu.linkonce.r.*) - .rodata 0x000000000056a940 0x4 /usr/lib64/crt1.o - 0x000000000056a940 _IO_stdin_used - .rodata 0x000000000056a944 0x3 proc_proc.o - .rodata.str1.1 - 0x000000000056a947 0x17 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - *fill* 0x000000000056a95e 0x2 00 - .rodata 0x000000000056a960 0x390 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - .rodata.str1.1 - 0x000000000056acf0 0x2f3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - 0x2f7 (size before relaxing) - *fill* 0x000000000056afe3 0x1d 00 - .rodata.str1.32 - 0x000000000056b000 0x127f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - *fill* 0x000000000056c27f 0x1 00 - .rodata 0x000000000056c280 0x31 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - .rodata.str1.1 - 0x000000000056c2b1 0x3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - 0x12 (size before relaxing) - *fill* 0x000000000056c2b4 0x4 00 - .rodata 0x000000000056c2b8 0x634 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - .rodata.str1.1 - 0x000000000056c8ec 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - 0x21 (size before relaxing) - *fill* 0x000000000056c8f4 0x4 00 - .rodata 0x000000000056c8f8 0x4e0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - .rodata.str1.1 - 0x000000000056cdd8 0x51 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - 0x57 (size before relaxing) - *fill* 0x000000000056ce29 0x17 00 - .rodata.str1.32 - 0x000000000056ce40 0x36 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - .rodata.str1.1 - 0x000000000056ce76 0x13 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - *fill* 0x000000000056ce89 0x7 00 - .rodata 0x000000000056ce90 0x4e8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - .rodata.str1.1 - 0x000000000056d378 0x1d /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - 0x35 (size before relaxing) - .rodata.str1.1 - 0x000000000056d395 0xbe /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - 0xea (size before relaxing) - .rodata.str1.1 - 0x000000000056d453 0x0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - 0x7 (size before relaxing) - .rodata.str1.1 - 0x000000000056d453 0x23 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - *fill* 0x000000000056d476 0xa 00 - .rodata.str1.32 - 0x000000000056d480 0x67 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - .rodata.str1.1 - 0x000000000056d4e7 0x43 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - .rodata.str1.1 - 0x000000000056d52a 0xca /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - 0xde (size before relaxing) - *fill* 0x000000000056d5f4 0xc 00 - .rodata.str1.32 - 0x000000000056d600 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - .rodata.str1.32 - 0x000000000056d6a0 0xaf /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - .rodata.str1.1 - 0x000000000056d74f 0xe /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - *fill* 0x000000000056d75d 0x3 00 - .rodata.str1.32 - 0x000000000056d760 0x30f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - .rodata.str1.1 - 0x000000000056da6f 0xa9 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - .rodata.str1.1 - 0x000000000056db18 0x59 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - 0x5d (size before relaxing) - *fill* 0x000000000056db71 0xf 00 - .rodata.str1.32 - 0x000000000056db80 0x503 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - .rodata.str1.1 - 0x000000000056e083 0x32 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - 0x36 (size before relaxing) - *fill* 0x000000000056e0b5 0xb 00 - .rodata.str1.32 - 0x000000000056e0c0 0x88 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - *fill* 0x000000000056e148 0x18 00 - .rodata.str1.32 - 0x000000000056e160 0x22 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - *fill* 0x000000000056e182 0x6 00 - .rodata.cst8 0x000000000056e188 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - 0x18 (size before relaxing) - .rodata.str1.1 - 0x000000000056e198 0xd /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - .rodata.str1.32 - 0x000000000056e1a5 0x0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - 0x67 (size before relaxing) - *fill* 0x000000000056e1a5 0x3 00 - .rodata 0x000000000056e1a8 0x2d8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - .rodata.str1.1 - 0x000000000056e480 0x41 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x47 (size before relaxing) - *fill* 0x000000000056e4c1 0x7 00 - .rodata 0x000000000056e4c8 0xc8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - .rodata.cst8 0x000000000056e590 0x0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x8 (size before relaxing) - .rodata.str1.1 - 0x000000000056e590 0xb /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - *fill* 0x000000000056e59b 0x5 00 - .rodata 0x000000000056e5a0 0x270 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - *fill* 0x000000000056e810 0x10 00 - .rodata.str1.32 - 0x000000000056e820 0x332 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - .rodata.str1.1 - 0x000000000056eb52 0x54 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - *fill* 0x000000000056eba6 0x2 00 - .rodata 0x000000000056eba8 0xc0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - *fill* 0x000000000056ec68 0x18 00 - .rodata.str1.32 - 0x000000000056ec80 0x5f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - .rodata.str1.1 - 0x000000000056ecdf 0xb3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - *fill* 0x000000000056ed92 0xe 00 - .rodata.str1.32 - 0x000000000056eda0 0x4a7 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - .rodata.str1.1 - 0x000000000056f247 0x0 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - 0x5 (size before relaxing) - .rodata.str1.1 - 0x000000000056f247 0x3a /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - *fill* 0x000000000056f281 0x1f 00 - .rodata.str1.32 - 0x000000000056f2a0 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - .rodata.str1.1 - 0x000000000056f2bf 0xc /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - .rodata.str1.1 - 0x000000000056f2cb 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - .rodata.str1.1 - 0x000000000056f2ea 0x115 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x13f (size before relaxing) - .rodata.str1.1 - 0x000000000056f3ff 0x87 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - 0x8f (size before relaxing) - *fill* 0x000000000056f486 0x1a 00 - .rodata.str1.32 - 0x000000000056f4a0 0x61 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - .rodata.str1.1 - 0x000000000056f501 0x57 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - 0x59 (size before relaxing) - .rodata.cst8 0x000000000056f558 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - 0x70 (size before relaxing) - .rodata.str1.32 - 0x000000000056f580 0x34f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - .rodata.str1.1 - 0x000000000056f8cf 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - *fill* 0x000000000056f8ef 0x11 00 - .rodata.str1.32 - 0x000000000056f900 0x31 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - *fill* 0x000000000056f931 0xf 00 - .rodata.str1.32 - 0x000000000056f940 0x39 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - *fill* 0x000000000056f979 0x7 00 - .rodata 0x000000000056f980 0x30 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - .rodata.str1.1 - 0x000000000056f9b0 0x12 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - 0x309 (size before relaxing) - *fill* 0x000000000056f9c2 0x1e 00 - .rodata.str1.32 - 0x000000000056f9e0 0x4f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - 0x11ff (size before relaxing) - *fill* 0x000000000056fa2f 0x11 00 - .rodata 0x000000000056fa40 0x31 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - .rodata.str1.1 - 0x000000000056fa71 0xb /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - 0xaf (size before relaxing) - .rodata.str1.1 - 0x000000000056fa7c 0x0 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - 0x17 (size before relaxing) - .rodata.str1.1 - 0x000000000056fa7c 0x11 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - 0x1d (size before relaxing) - *fill* 0x000000000056fa8d 0x3 00 - .rodata 0x000000000056fa90 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - .rodata 0x000000000056fa98 0x12 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - *fill* 0x000000000056faaa 0x6 00 - .rodata 0x000000000056fab0 0x90 /usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - .rodata 0x000000000056fb40 0x128 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - .rodata.cst8 0x000000000056fc68 0xe0 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - 0x278 (size before relaxing) - .rodata 0x000000000056fd48 0x68 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - .rodata.cst8 0x000000000056fdb0 0x68 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - 0xf8 (size before relaxing) - .rodata.cst8 0x000000000056fe18 0x88 /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - 0xc8 (size before relaxing) - -.rodata1 - *(.rodata1) - -.eh_frame_hdr - *(.eh_frame_hdr) - -.eh_frame - *(.eh_frame) - -.gcc_except_table - *(.gcc_except_table) - *(.gcc_except_table.*) - 0x000000000056fea0 . = (ALIGN (0x100000) - ((0x100000 - .) & 0xfffff)) - 0x0000000000670000 . = (0x100000 DATA_SEGMENT_ALIGN 0x1000) - -.eh_frame 0x0000000000670000 0x6d2c - *(.eh_frame) - .eh_frame 0x0000000000670000 0x38 /usr/pgi/linux86-64/6.0/lib/f90main.o - .eh_frame 0x0000000000670038 0x80 proc_proc.o - 0x98 (size before relaxing) - .eh_frame 0x00000000006700b8 0xb8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - 0xd0 (size before relaxing) - .eh_frame 0x0000000000670170 0x100 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) - 0x118 (size before relaxing) - .eh_frame 0x0000000000670270 0x1c8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - 0x1e0 (size before relaxing) - .eh_frame 0x0000000000670438 0x168 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - 0x180 (size before relaxing) - .eh_frame 0x00000000006705a0 0x580 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - 0x598 (size before relaxing) - .eh_frame 0x0000000000670b20 0x588 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - 0x5a0 (size before relaxing) - .eh_frame 0x00000000006710a8 0x108 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - 0x120 (size before relaxing) - .eh_frame 0x00000000006711b0 0x3c8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - 0x3e0 (size before relaxing) - .eh_frame 0x0000000000671578 0x290 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - 0x2a8 (size before relaxing) - .eh_frame 0x0000000000671808 0x138 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - 0x150 (size before relaxing) - .eh_frame 0x0000000000671940 0x68 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - 0x80 (size before relaxing) - .eh_frame 0x00000000006719a8 0x4c0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - 0x4d8 (size before relaxing) - .eh_frame 0x0000000000671e68 0x108 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - 0x120 (size before relaxing) - .eh_frame 0x0000000000671f70 0x108 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - 0x120 (size before relaxing) - .eh_frame 0x0000000000672078 0x320 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - 0x338 (size before relaxing) - .eh_frame 0x0000000000672398 0x300 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - 0x318 (size before relaxing) - .eh_frame 0x0000000000672698 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - 0xb8 (size before relaxing) - .eh_frame 0x0000000000672738 0x78 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) - 0x90 (size before relaxing) - .eh_frame 0x00000000006727b0 0x368 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - 0x380 (size before relaxing) - .eh_frame 0x0000000000672b18 0x260 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - 0x278 (size before relaxing) - .eh_frame 0x0000000000672d78 0x3e0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - 0x3f8 (size before relaxing) - .eh_frame 0x0000000000673158 0x4d0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - 0x4e8 (size before relaxing) - .eh_frame 0x0000000000673628 0xd0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) - 0xe8 (size before relaxing) - .eh_frame 0x00000000006736f8 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000673718 0x198 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - 0x1b0 (size before relaxing) - .eh_frame 0x00000000006738b0 0x88 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - 0xa0 (size before relaxing) - .eh_frame 0x0000000000673938 0x320 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - 0x338 (size before relaxing) - .eh_frame 0x0000000000673c58 0x88 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - 0xa0 (size before relaxing) - .eh_frame 0x0000000000673ce0 0x370 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x388 (size before relaxing) - .eh_frame 0x0000000000674050 0x40 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - 0x58 (size before relaxing) - .eh_frame 0x0000000000674090 0x320 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - 0x338 (size before relaxing) - .eh_frame 0x00000000006743b0 0x40 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - 0x58 (size before relaxing) - .eh_frame 0x00000000006743f0 0xa68 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - 0xa80 (size before relaxing) - .eh_frame 0x0000000000674e58 0xe8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - 0x100 (size before relaxing) - .eh_frame 0x0000000000674f40 0x228 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - 0x240 (size before relaxing) - .eh_frame 0x0000000000675168 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - 0xb8 (size before relaxing) - .eh_frame 0x0000000000675208 0x90 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - 0xa8 (size before relaxing) - .eh_frame 0x0000000000675298 0x98 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - 0xb0 (size before relaxing) - .eh_frame 0x0000000000675330 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopy.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000675350 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopys.o) - 0x40 (size before relaxing) - .eh_frame 0x0000000000675378 0x80 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - 0x98 (size before relaxing) - .eh_frame 0x00000000006753f8 0x40 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) - 0x58 (size before relaxing) - .eh_frame 0x0000000000675438 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x40 (size before relaxing) - .eh_frame 0x0000000000675460 0x108 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof.o) - 0x120 (size before relaxing) - .eh_frame 0x0000000000675568 0x90 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof2.o) - 0xa8 (size before relaxing) - .eh_frame 0x00000000006755f8 0x68 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(genlist.o) - 0x80 (size before relaxing) - .eh_frame 0x0000000000675660 0x68 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - 0x80 (size before relaxing) - .eh_frame 0x00000000006756c8 0x2e0 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - 0x2f8 (size before relaxing) - .eh_frame 0x00000000006759a8 0x118 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - 0x130 (size before relaxing) - .eh_frame 0x0000000000675ac0 0x90 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace2.o) - 0xa8 (size before relaxing) - .eh_frame 0x0000000000675b50 0x80 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(xfer_heap_dum.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000675bd0 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(dacos.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000675bf0 0xc0 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - 0xd8 (size before relaxing) - .eh_frame 0x0000000000675cb0 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(flush3f.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000675cd0 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) - 0x40 (size before relaxing) - .eh_frame 0x0000000000675cf8 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(fdate3f.o) - 0x40 (size before relaxing) - .eh_frame 0x0000000000675d20 0x60 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getarg3f.o) - 0x78 (size before relaxing) - .eh_frame 0x0000000000675d80 0x80 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000675e00 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(utils3f.o) - 0xb8 (size before relaxing) - .eh_frame 0x0000000000675ea0 0x168 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - 0x180 (size before relaxing) - .eh_frame 0x0000000000676008 0x118 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - 0x130 (size before relaxing) - .eh_frame 0x0000000000676120 0x20 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000676140 0xe0 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - 0xf8 (size before relaxing) - .eh_frame 0x0000000000676220 0x48 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - 0x60 (size before relaxing) - .eh_frame 0x0000000000676268 0x20 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000676288 0x18 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - 0x30 (size before relaxing) - .eh_frame 0x00000000006762a0 0x58 /usr/lib64/libc_nonshared.a(elf-init.oS) - .eh_frame 0x00000000006762f8 0x18 /usr/lib64/libc_nonshared.a(atexit.oS) - 0x30 (size before relaxing) - .eh_frame 0x0000000000676310 0x388 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - .eh_frame 0x0000000000676698 0x20 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - 0x38 (size before relaxing) - .eh_frame 0x00000000006766b8 0x260 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) - 0x278 (size before relaxing) - .eh_frame 0x0000000000676918 0x80 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000676998 0x40 /usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - 0x58 (size before relaxing) - .eh_frame 0x00000000006769d8 0x80 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000676a58 0xe0 /usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - 0xf8 (size before relaxing) - .eh_frame 0x0000000000676b38 0x80 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000676bb8 0xc8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - .eh_frame 0x0000000000676c80 0x78 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - 0x90 (size before relaxing) - .eh_frame 0x0000000000676cf8 0x18 /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - 0x30 (size before relaxing) - .eh_frame 0x0000000000676d10 0x18 /usr/lib64/libc_nonshared.a(fstat.oS) - 0x30 (size before relaxing) - .eh_frame 0x0000000000676d28 0x4 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - -.gcc_except_table - *(.gcc_except_table) - *(.gcc_except_table.*) - -.tdata - *(.tdata .tdata.* .gnu.linkonce.td.*) - -.tbss - *(.tbss .tbss.* .gnu.linkonce.tb.*) - *(.tcommon) - 0x0000000000676d30 . = ALIGN (0x8) - 0x0000000000676d30 PROVIDE (__preinit_array_start, .) - -.preinit_array - *(.preinit_array) - 0x0000000000676d30 PROVIDE (__preinit_array_end, .) - 0x0000000000676d30 PROVIDE (__init_array_start, .) - -.init_array - *(.init_array) - 0x0000000000676d30 PROVIDE (__init_array_end, .) - 0x0000000000676d30 PROVIDE (__fini_array_start, .) - -.fini_array - *(.fini_array) - 0x0000000000676d30 PROVIDE (__fini_array_end, .) - -.ctors 0x0000000000676d30 0x10 - *crtbegin*.o(.ctors) - *(EXCLUDE_FILE(*crtend*.o) .ctors) - .ctors 0x0000000000676d30 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - *(SORT(.ctors.*)) - *(.ctors) - .ctors 0x0000000000676d38 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - -.dtors 0x0000000000676d40 0x10 - *crtbegin*.o(.dtors) - *(EXCLUDE_FILE(*crtend*.o) .dtors) - .dtors 0x0000000000676d40 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - *(SORT(.dtors.*)) - *(.dtors) - .dtors 0x0000000000676d48 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - -.jcr 0x0000000000676d50 0x8 - *(.jcr) - .jcr 0x0000000000676d50 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - -.data.rel.ro - *(.data.rel.ro.local) - *(.data.rel.ro*) - -.dynamic 0x0000000000676d58 0x1b0 - *(.dynamic) - .dynamic 0x0000000000676d58 0x1b0 /usr/lib64/crt1.o - 0x0000000000676d58 _DYNAMIC - -.got 0x0000000000676f08 0x10 - *(.got) - .got 0x0000000000676f08 0x10 /usr/lib64/crt1.o - 0x0000000000676f18 . = (. DATA_SEGMENT_RELRO_END 0x18) - -.got.plt 0x0000000000676f18 0x4b0 - *(.got.plt) - .got.plt 0x0000000000676f18 0x4b0 /usr/lib64/crt1.o - 0x0000000000676f18 _GLOBAL_OFFSET_TABLE_ - -.data 0x00000000006773e0 0x229f8 - *(.data .data.* .gnu.linkonce.d.*) - .data 0x00000000006773e0 0x4 /usr/lib64/crt1.o - 0x00000000006773e0 data_start - 0x00000000006773e0 __data_start - *fill* 0x00000000006773e4 0x4 00 - .data 0x00000000006773e8 0x10 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - 0x00000000006773e8 __dso_handle - *fill* 0x00000000006773f8 0x8 00 - .data 0x0000000000677400 0x920 main_clust.o - .data 0x0000000000677d20 0x30 arcos.o - *fill* 0x0000000000677d50 0x10 00 - .data 0x0000000000677d60 0x1d8 cartprint.o - *fill* 0x0000000000677f38 0x8 00 - .data 0x0000000000677f40 0x268 chainbuild.o - .data 0x00000000006781a8 0x60 convert.o - *fill* 0x0000000000678208 0x18 00 - .data 0x0000000000678220 0x570 initialize_p.o - 0x0000000000678580 names_ - 0x0000000000678350 potentials_ - 0x0000000000678360 namterm_ - .data 0x0000000000678790 0x30 matmult.o - .data 0x00000000006787c0 0xdc0 readrtns.o - .data 0x0000000000679580 0x20 pinorm.o - .data 0x00000000006795a0 0xb8 rescode.o - *fill* 0x0000000000679658 0x8 00 - .data 0x0000000000679660 0x80 intcor.o - .data 0x00000000006796e0 0x118 timing.o - *fill* 0x00000000006797f8 0x8 00 - .data 0x0000000000679800 0xa0 misc.o - .data 0x00000000006798a0 0x7e8 geomout.o - *fill* 0x000000000067a088 0x8 00 - .data 0x000000000067a090 0x240 readpdb.o - .data 0x000000000067a2d0 0x6d0 read_coords.o - .data 0x000000000067a9a0 0xdb8 parmread.o - *fill* 0x000000000067b758 0x8 00 - .data 0x000000000067b760 0x148 probabl.o - *fill* 0x000000000067b8a8 0x18 00 - .data 0x000000000067b8c0 0x2f0 fitsq.o - *fill* 0x000000000067bbb0 0x10 00 - .data 0x000000000067bbc0 0x410 hc.o - .data 0x000000000067bfd0 0x3a0 track.o - *fill* 0x000000000067c370 0x10 00 - .data 0x000000000067c380 0x5f0 wrtclust.o - .data 0x000000000067c970 0x130 srtclust.o - .data 0x000000000067caa0 0x70 noyes.o - .data 0x000000000067cb10 0xc8 contact.o - *fill* 0x000000000067cbd8 0x8 00 - .data 0x000000000067cbe0 0x118 printmat.o - *fill* 0x000000000067ccf8 0x8 00 - .data 0x000000000067cd00 0x198 int_from_cart1.o - *fill* 0x000000000067ce98 0x8 00 - .data 0x000000000067cea0 0x2828 energy_p_new.o - .data 0x000000000067f6c8 0x10 icant.o - *fill* 0x000000000067f6d8 0x8 00 - .data 0x000000000067f6e0 0x130 work_partition.o - .data 0x000000000067f810 0x28 setup_var.o - .data 0x000000000067f838 0x22 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - *fill* 0x000000000067f85a 0x2 00 - *fill* 0x000000000067f85c 0x4 00 - .data 0x000000000067f860 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - 0x000000000067f8a0 MPIR_F_STATUSES_IGNORE - 0x000000000067f860 MPIR_F_TRUE - 0x000000000067f870 MPIR_F_FALSE - 0x000000000067f880 MPIR_F_MPI_BOTTOM - 0x000000000067f890 MPIR_F_STATUS_IGNORE - *fill* 0x000000000067f8c4 0xc 00 - .data 0x000000000067f8d0 0x154 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - *fill* 0x000000000067fa24 0xc 00 - .data 0x000000000067fa30 0x39 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - *fill* 0x000000000067fa69 0x7 00 - .data 0x000000000067fa70 0x39 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - *fill* 0x000000000067faa9 0x7 00 - .data 0x000000000067fab0 0x3e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - *fill* 0x000000000067faee 0x2 00 - .data 0x000000000067faf0 0x3a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - *fill* 0x000000000067fb2a 0x2 00 - *fill* 0x000000000067fb2c 0x4 00 - .data 0x000000000067fb30 0x299 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - 0x000000000067fd90 MPIR_Dump_Ptrs - 0x000000000067fda0 MPICHX_QOS_BANDWIDTH - 0x000000000067fdb0 MPICHX_QOS_PARAMETERS - 0x000000000067fd40 MPIR_COMM_SELF - 0x000000000067fd20 MPIR_Infotable_max - 0x000000000067fd70 MPIR_Print_queues - 0x000000000067fd30 MPIR_COMM_WORLD - 0x000000000067fd10 MPIR_Infotable_ptr - 0x000000000067fd80 MPIR_Dump_Mem - 0x000000000067fd00 MPIR_Infotable - 0x000000000067fd60 MPIR_Has_been_initialized - 0x000000000067fd50 MPIR_GROUP_EMPTY - *fill* 0x000000000067fdc9 0x3 00 - *fill* 0x000000000067fdcc 0x4 00 - .data 0x000000000067fdd0 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - 0x000000000067fdd0 MPIR_PACKED_PTR - *fill* 0x000000000067fdd8 0x8 00 - .data 0x000000000067fde0 0x34 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - *fill* 0x000000000067fe14 0xc 00 - .data 0x000000000067fe20 0x3a54 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - *fill* 0x0000000000683874 0xc 00 - .data 0x0000000000683880 0x378 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - *fill* 0x0000000000683bf8 0x8 00 - .data 0x0000000000683c00 0x174 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - *fill* 0x0000000000683d74 0xc 00 - .data 0x0000000000683d80 0x40 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - .data 0x0000000000683dc0 0x3d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - *fill* 0x0000000000683dfd 0x3 00 - .data 0x0000000000683e00 0xb2 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - *fill* 0x0000000000683eb2 0xe 00 - .data 0x0000000000683ec0 0x5d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - *fill* 0x0000000000683f1d 0x3 00 - .data 0x0000000000683f20 0x4f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - *fill* 0x0000000000683f6f 0x1 00 - .data 0x0000000000683f70 0x115 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - *fill* 0x0000000000684085 0xb 00 - .data 0x0000000000684090 0x4e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - *fill* 0x00000000006840de 0x2 00 - .data 0x00000000006840e0 0x2e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - *fill* 0x000000000068410e 0x2 00 - .data 0x0000000000684110 0x84 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - *fill* 0x0000000000684194 0xc 00 - .data 0x00000000006841a0 0x3e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - *fill* 0x00000000006841de 0x2 00 - .data 0x00000000006841e0 0xf3 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - *fill* 0x00000000006842d3 0xd 00 - .data 0x00000000006842e0 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - *fill* 0x00000000006842e4 0xc 00 - .data 0x00000000006842f0 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - *fill* 0x000000000068431c 0x4 00 - .data 0x0000000000684320 0x3a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - *fill* 0x000000000068435a 0x6 00 - .data 0x0000000000684360 0x6c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - *fill* 0x00000000006843cc 0x4 00 - .data 0x00000000006843d0 0x6e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - *fill* 0x000000000068443e 0x2 00 - .data 0x0000000000684440 0x5e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - *fill* 0x000000000068449e 0x2 00 - .data 0x00000000006844a0 0xb40 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - .data 0x0000000000684fe0 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - .data 0x000000000068500c 0x17 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - *fill* 0x0000000000685023 0x1d 00 - .data 0x0000000000685040 0x208 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - 0x0000000000685240 MPIR_inter_collops - *fill* 0x0000000000685248 0x18 00 - .data 0x0000000000685260 0x433 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - 0x00000000006855e0 MPIR_intra_collops - *fill* 0x0000000000685693 0xd 00 - .data 0x00000000006856a0 0x39 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - *fill* 0x00000000006856d9 0x7 00 - .data 0x00000000006856e0 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - 0x00000000006856e0 MPIR_TOPOLOGY_KEYVAL - .data 0x00000000006856e4 0x1b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - *fill* 0x00000000006856ff 0x1 00 - .data 0x0000000000685700 0xb64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - .data 0x0000000000686264 0x3f3 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - *fill* 0x0000000000686657 0x1 00 - .data 0x0000000000686658 0x469 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - *fill* 0x0000000000686ac1 0xf 00 - .data 0x0000000000686ad0 0xb14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - *fill* 0x00000000006875e4 0xc 00 - .data 0x00000000006875f0 0x5d4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - *fill* 0x0000000000687bc4 0xc 00 - .data 0x0000000000687bd0 0x6f4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - .data 0x00000000006882c4 0x593 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - *fill* 0x0000000000688857 0x9 00 - .data 0x0000000000688860 0x4b8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - *fill* 0x0000000000688d18 0x8 00 - .data 0x0000000000688d20 0x168 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - 0x0000000000688e80 start_prog_error - *fill* 0x0000000000688e88 0x8 00 - .data 0x0000000000688e90 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - 0x0000000000688e90 usc_MD_rollover_val - *fill* 0x0000000000688e98 0x8 00 - .data 0x0000000000688ea0 0x1f4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - 0x0000000000689060 MPID_Print_queues - 0x0000000000689080 MPID_devset - 0x0000000000689070 MPID_n_pending - .data 0x0000000000689094 0x159 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - *fill* 0x00000000006891ed 0x3 00 - .data 0x00000000006891f0 0xbd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - *fill* 0x00000000006892ad 0x3 00 - .data 0x00000000006892b0 0x3b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - *fill* 0x00000000006892eb 0x15 00 - .data 0x0000000000689300 0x508 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - *fill* 0x0000000000689808 0x18 00 - .data 0x0000000000689820 0x580 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - 0x0000000000689c80 MPID_TRACE_FILE - 0x0000000000689c90 MPID_DEBUG_FILE - 0x0000000000689ca0 MPID_UseDebugFile - 0x0000000000689cb0 MPID_DebugFlag - .data 0x0000000000689da0 0x101 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - *fill* 0x0000000000689ea1 0xf 00 - .data 0x0000000000689eb0 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - 0x0000000000689f10 MPID_IS_HETERO - 0x0000000000689f00 MPID_procinfo - *fill* 0x0000000000689f14 0xc 00 - .data 0x0000000000689f20 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - *fill* 0x0000000000689f28 0x8 00 - .data 0x0000000000689f30 0x108 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - *fill* 0x000000000068a038 0x8 00 - .data 0x000000000068a040 0x164 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - .data 0x000000000068a1a4 0x1f1 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - *fill* 0x000000000068a395 0x3 00 - .data 0x000000000068a398 0x2d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - *fill* 0x000000000068a3c5 0x3 00 - .data 0x000000000068a3c8 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - .data 0x000000000068a3e0 0x3e5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - *fill* 0x000000000068a7c5 0xb 00 - .data 0x000000000068a7d0 0x2f4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - 0x000000000068aac0 expect_cancel_ack - *fill* 0x000000000068aac4 0xc 00 - .data 0x000000000068aad0 0x4a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - *fill* 0x000000000068ab1a 0x6 00 - .data 0x000000000068ab20 0x4a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - *fill* 0x000000000068ab6a 0x2 00 - .data 0x000000000068ab6c 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - .data 0x000000000068ab7c 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - *fill* 0x000000000068ab8c 0x4 00 - .data 0x000000000068ab90 0x4b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - *fill* 0x000000000068abdb 0x5 00 - .data 0x000000000068abe0 0x4c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - *fill* 0x000000000068ac2c 0x4 00 - .data 0x000000000068ac30 0x4d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - *fill* 0x000000000068ac7d 0x3 00 - .data 0x000000000068ac80 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - *fill* 0x000000000068acac 0x4 00 - .data 0x000000000068acb0 0x3e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - *fill* 0x000000000068acee 0x2 00 - .data 0x000000000068acf0 0x30 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - .data 0x000000000068ad20 0x74 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - *fill* 0x000000000068ad94 0xc 00 - .data 0x000000000068ada0 0x30 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - .data 0x000000000068add0 0x4e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - *fill* 0x000000000068ae1e 0x2 00 - .data 0x000000000068ae20 0x71 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - *fill* 0x000000000068ae91 0xf 00 - .data 0x000000000068aea0 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - *fill* 0x000000000068aecc 0x4 00 - .data 0x000000000068aed0 0x3e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - *fill* 0x000000000068af0e 0x2 00 - .data 0x000000000068af10 0xd0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - .data 0x000000000068afe0 0x5e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - *fill* 0x000000000068b03e 0x2 00 - .data 0x000000000068b040 0xa9 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - *fill* 0x000000000068b0e9 0x7 00 - .data 0x000000000068b0f0 0x5b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - *fill* 0x000000000068b14b 0x5 00 - .data 0x000000000068b150 0x60 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - 0x000000000068b190 MPIR_debug_abort_string - 0x000000000068b1a0 MPIR_being_debugged - 0x000000000068b150 MPIR_proctable - 0x000000000068b180 MPIR_debug_gate - 0x000000000068b160 MPIR_proctable_size - 0x000000000068b170 MPIR_debug_state - *fill* 0x000000000068b1b0 0x10 00 - .data 0x000000000068b1c0 0x33 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - *fill* 0x000000000068b1f3 0xd 00 - .data 0x000000000068b200 0x110 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - .data 0x000000000068b310 0x4b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - *fill* 0x000000000068b35b 0x1 00 - .data 0x000000000068b35c 0x13f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - *fill* 0x000000000068b49b 0x5 00 - .data 0x000000000068b4a0 0x234 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - 0x000000000068b670 p4_hard_errors - .data 0x000000000068b6d4 0x412 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - *fill* 0x000000000068bae6 0x1a 00 - .data 0x000000000068bb00 0x360 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - .data 0x000000000068be60 0x390 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - .data 0x000000000068c1f0 0x1be /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - *fill* 0x000000000068c3ae 0x2 00 - .data 0x000000000068c3b0 0x334 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - .data 0x000000000068c6e4 0x67 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - *fill* 0x000000000068c74b 0x1 00 - .data 0x000000000068c74c 0x211 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - *fill* 0x000000000068c95d 0x3 00 - .data 0x000000000068c960 0x234 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - .data 0x000000000068cb94 0x1af /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - *fill* 0x000000000068cd43 0x1 00 - .data 0x000000000068cd44 0x155 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - *fill* 0x000000000068ce99 0x3 00 - .data 0x000000000068ce9c 0x733 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - *fill* 0x000000000068d5cf 0x1 00 - .data 0x000000000068d5d0 0xb24 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - *fill* 0x000000000068e0f4 0xc 00 - .data 0x000000000068e100 0x5e4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - .data 0x000000000068e6e4 0x79c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - .data 0x000000000068ee80 0x194 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - 0x000000000068f010 MPID_DebugFlow - 0x000000000068f000 MPID_flow_info - *fill* 0x000000000068f014 0xc 00 - .data 0x000000000068f020 0x72 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - *fill* 0x000000000068f092 0x2 00 - *fill* 0x000000000068f094 0x4 00 - .data 0x000000000068f098 0xc /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - *fill* 0x000000000068f0a4 0x1c 00 - .data 0x000000000068f0c0 0x398 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - *fill* 0x000000000068f458 0x8 00 - .data 0x000000000068f460 0x84 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - *fill* 0x000000000068f4e4 0x1c 00 - .data 0x000000000068f500 0x98 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - *fill* 0x000000000068f598 0x8 00 - .data 0x000000000068f5a0 0x60 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - .data 0x000000000068f600 0x11 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - *fill* 0x000000000068f611 0x3 00 - *fill* 0x000000000068f614 0xc 00 - .data 0x000000000068f620 0x70 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(pgifiodf.o) - 0x000000000068f660 __hpfio_type_size - 0x000000000068f620 pghpfio - *fill* 0x000000000068f690 0x10 00 - .data 0x000000000068f6a0 0x228 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - .data 0x000000000068f8c8 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - *fill* 0x000000000068f8f0 0x10 00 - .data 0x000000000068f900 0x4014 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - *fill* 0x0000000000693914 0x4 00 - .data 0x0000000000693918 0xc /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - *fill* 0x0000000000693924 0x4 00 - .data 0x0000000000693928 0x1c /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - *fill* 0x0000000000693944 0x1c 00 - .data 0x0000000000693960 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - .data 0x0000000000693980 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - 0x0000000000693980 version - .data 0x00000000006939a8 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - *fill* 0x00000000006939b0 0x10 00 - .data 0x00000000006939c0 0x401c /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - *fill* 0x00000000006979dc 0x4 00 - .data 0x00000000006979e0 0x68 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - .data 0x0000000000697a48 0xc /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - *fill* 0x0000000000697a54 0xc 00 - .data 0x0000000000697a60 0x578 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - .data 0x0000000000697fd8 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) - 0x0000000000697fe0 f90DummyGenBlockPtr - 0x0000000000697fd8 f90DummyGenBlock - *fill* 0x0000000000697fe8 0x18 00 - .data 0x0000000000698000 0xdc /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - *fill* 0x00000000006980dc 0x4 00 - .data 0x00000000006980e0 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - .data 0x0000000000698100 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - 0x0000000000698108 __hpf_transnam - .data 0x0000000000698110 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - 0x0000000000698110 __hpf_minxfer - *fill* 0x0000000000698114 0xc 00 - .data 0x0000000000698120 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - 0x0000000000698120 __hpfio_cnfg_ - *fill* 0x0000000000698130 0x10 00 - .data 0x0000000000698140 0x950 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x0000000000698420 __hpf_one - 0x0000000000698440 __hpf_zed - 0x00000000006984a0 __hpf_maxs - 0x0000000000698300 pghpf_type_ - 0x00000000006985e0 __hpf_mins - 0x0000000000698850 __hpf_true_log - 0x00000000006981e0 __hpf_typenames - 0x0000000000698860 __hpf_trues - 0x0000000000698740 __hpf_units - 0x0000000000698980 __hpf_masks - 0x0000000000698140 __hpf_size_of - *fill* 0x0000000000698a90 0x10 00 - .data 0x0000000000698aa0 0xd0 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - *fill* 0x0000000000698b70 0x10 00 - .data 0x0000000000698b80 0x328 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - *fill* 0x0000000000698ea8 0x8 00 - .data 0x0000000000698eb0 0x25 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - *fill* 0x0000000000698ed5 0x3 00 - *fill* 0x0000000000698ed8 0x8 00 - .data 0x0000000000698ee0 0x228 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - *fill* 0x0000000000699108 0x18 00 - .data 0x0000000000699120 0x68 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgifiodf.o) - 0x0000000000699120 pgi_fio - 0x0000000000699160 __fio_type_size - *fill* 0x0000000000699188 0x18 00 - .data 0x00000000006991a0 0x398 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - *fill* 0x0000000000699538 0x8 00 - .data 0x0000000000699540 0x10 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - 0x0000000000699540 __fio_cnfg_ - .data 0x0000000000699550 0x8 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - 0x0000000000699554 __PC_DOS - 0x0000000000699550 __PC_DATA - *fill* 0x0000000000699558 0x8 00 - .data 0x0000000000699560 0x10 /usr/pgi/linux86-64/6.0/lib/libnspgc.a(pgdbg_utils.o) - .data 0x0000000000699570 0x10 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - .data 0x0000000000699580 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - .data 0x0000000000699588 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - *fill* 0x0000000000699590 0x10 00 - .data 0x00000000006995a0 0x3f /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - *fill* 0x00000000006995df 0x1 00 - .data 0x00000000006995e0 0x3f0 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - *fill* 0x00000000006999d0 0x10 00 - .data 0x00000000006999e0 0x3f0 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - .data 0x0000000000699dd0 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - *(.gnu.linkonce.d.*personality*) - -.data1 - *(.data1) - 0x0000000000699dd8 _edata = . - 0x0000000000699dd8 PROVIDE (edata, .) - 0x0000000000699dd8 __bss_start = . - -.bss 0x0000000000699de0 0x6a9f2968 - *(.dynbss) - .dynbss 0x0000000000699de0 0x28 /usr/lib64/crt1.o - 0x0000000000699de0 timezone@@GLIBC_2.2.5 - 0x0000000000699de8 stderr@@GLIBC_2.2.5 - 0x0000000000699df0 _environ@@GLIBC_2.2.5 - 0x0000000000699df8 stdin@@GLIBC_2.2.5 - 0x0000000000699df0 __environ@@GLIBC_2.2.5 - 0x0000000000699de0 __timezone@@GLIBC_2.2.5 - 0x0000000000699e00 stdout@@GLIBC_2.2.5 - 0x0000000000699df0 environ@@GLIBC_2.2.5 - *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x0000000000699e08 0x1 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - *fill* 0x0000000000699e09 0x3 00 - *fill* 0x0000000000699e0c 0x14 00 - .bss 0x0000000000699e20 0x4d4adea8 main_clust.o - *fill* 0x000000004db47cc8 0x18 00 - .bss 0x000000004db47ce0 0x18 chainbuild.o - *fill* 0x000000004db47cf8 0x8 00 - .bss 0x000000004db47d00 0x24 matmult.o - *fill* 0x000000004db47d24 0x1c 00 - .bss 0x000000004db47d40 0x2720 readrtns.o - .bss 0x000000004db4a460 0x3e8 geomout.o - *fill* 0x000000004db4a848 0x18 00 - .bss 0x000000004db4a860 0x3c0 readpdb.o - .bss 0x000000004db4ac20 0x1910 read_coords.o - *fill* 0x000000004db4c530 0x10 00 - .bss 0x000000004db4c540 0x120 parmread.o - .bss 0x000000004db4c660 0x131e8 probabl.o - *fill* 0x000000004db5f848 0x18 00 - .bss 0x000000004db5f860 0x2a8 fitsq.o - *fill* 0x000000004db5fb08 0x18 00 - .bss 0x000000004db5fb20 0x605040 track.o - .bss 0x000000004e164b60 0xbb80 srtclust.o - .bss 0x000000004e1706e0 0x161e0 energy_p_new.o - .bss 0x000000004e1868c0 0x10 proc_proc.o - .bss 0x000000004e1868d0 0x34 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - *fill* 0x000000004e186904 0x1c 00 - .bss 0x000000004e186920 0x2060 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - .bss 0x000000004e188980 0x6800 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - .bss 0x000000004e18f180 0x1070 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - .bss 0x000000004e1901f0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - *fill* 0x000000004e190204 0xc 00 - .bss 0x000000004e190210 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - .bss 0x000000004e190220 0x200 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - .bss 0x000000004e190420 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - *fill* 0x000000004e190428 0x18 00 - .bss 0x000000004e190440 0x4fa /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - *fill* 0x000000004e19093a 0x2 00 - *fill* 0x000000004e19093c 0x4 00 - .bss 0x000000004e190940 0x48 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - *fill* 0x000000004e190988 0x8 00 - .bss 0x000000004e190990 0x28 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - *fill* 0x000000004e1909b8 0x8 00 - .bss 0x000000004e1909c0 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - *fill* 0x000000004e1909c4 0x1c 00 - .bss 0x000000004e1909e0 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - *fill* 0x000000004e190a44 0x1c 00 - .bss 0x000000004e190a60 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - *fill* 0x000000004e190a74 0xc 00 - .bss 0x000000004e190a80 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - *fill* 0x000000004e190a98 0x8 00 - .bss 0x000000004e190aa0 0x75 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - *fill* 0x000000004e190b15 0xb 00 - .bss 0x000000004e190b20 0xa4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - *fill* 0x000000004e190bc4 0x1c 00 - .bss 0x000000004e190be0 0x118 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - *fill* 0x000000004e190cf8 0x8 00 - .bss 0x000000004e190d00 0x110 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - *fill* 0x000000004e190e10 0x10 00 - .bss 0x000000004e190e20 0x220 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - .bss 0x000000004e191040 0x48 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - .bss 0x000000004e191088 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - *fill* 0x000000004e191090 0x10 00 - .bss 0x000000004e1910a0 0x1050 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - .bss 0x000000004e1920f0 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - *fill* 0x000000004e1920f4 0x4 00 - .bss 0x000000004e1920f8 0x24 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - *fill* 0x000000004e19211c 0x4 00 - .bss 0x000000004e192120 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - *fill* 0x000000004e192130 0x10 00 - .bss 0x000000004e192140 0x428 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - *fill* 0x000000004e192568 0x18 00 - .bss 0x000000004e192580 0x288 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - .bss 0x000000004e192808 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - .bss 0x000000004e192818 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - *fill* 0x000000004e19281c 0x4 00 - .bss 0x000000004e192820 0x100 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - .bss 0x000000004e192920 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - .bss 0x000000004e1929c0 0x220 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - .bss 0x000000004e192be0 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - .bss 0x000000004e192be8 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - *fill* 0x000000004e192c08 0x8 00 - .bss 0x000000004e192c10 0x90 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - .bss 0x000000004e192ca0 0x200 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - .bss 0x000000004e192ea0 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - .bss 0x000000004e192f40 0x4 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - *fill* 0x000000004e192f44 0x4 00 - .bss 0x000000004e192f48 0x8 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - .bss 0x000000004e192f50 0x4 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - .bss 0x000000004e192f54 0x4 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - .bss 0x000000004e192f58 0x4 /usr/pgi/linux86-64/6.0/lib/libpgc.a(crit_dum.o) - *(COMMON) - *fill* 0x000000004e192f5c 0x4 00 - COMMON 0x000000004e192f60 0xf34d471 main_clust.o - 0x000000004e192f60 fnames_ - 0x000000004e193e70 stoptim_ - 0x000000004e193e80 csaunits_ - 0x000000004e193ec0 geo_ - 0x000000004e193f00 stretch_ - 0x000000004e194060 mpi_data_ - 0x000000004e1942a0 csafiles_ - 0x000000004e194ea0 mpipriv_ - 0x000000004e194ee0 varref_ - 0x000000004e197600 refstruct_ - 0x000000004e19a520 pghpf_me_ - 0x000000004e19a540 body_ - 0x000000004e1a1140 interact_ - 0x000000004e1a70c0 clu_ - 0x00000000527a21c0 var_ - 0x00000000527a77c0 free_ - 0x00000000527a77e0 pghpf_0l_ - 0x00000000527a7800 header_ - 0x00000000527a7850 pghpf_0_ - 0x00000000527a7860 time1_ - 0x00000000527a78a0 cntrl_ - 0x00000000527a78f0 pghpf_lineno_ - 0x00000000527a7900 clu1_ - 0x000000005b1366a0 parfiles_ - 0x000000005b1370a0 rotmat_ - 0x000000005b1489e0 pghpf_np_ - 0x000000005b148a00 iounits_ - 0x000000005b148a60 chain_ - 0x000000005b154620 alles_ - 0x000000005d4e03d0 pghpf_0c_ - *fill* 0x000000005d4e03d1 0xf 00 - COMMON 0x000000005d4e03e0 0x3c2c chainbuild.o - 0x000000005d4e03e0 indices_ - 0x000000005d4e0400 peptbond_ - 0x000000005d4e0440 invlen_ - 0x000000005d4e13e0 thetas_ - 0x000000005d4e1d40 sclocal_ - *fill* 0x000000005d4e400c 0x14 00 - COMMON 0x000000005d4e4020 0x31e340 initialize_p.o - 0x000000005d4e4020 torsion_ - 0x000000005d4e5000 minimm_ - 0x000000005d4e5020 restraints_ - 0x000000005d4e5040 ffield_ - 0x000000005d4e51a0 derivat_ - 0x000000005d7ed7f0 links_split_ - 0x000000005d7ed800 deriv_loc_ - 0x000000005d7ed9e0 links_ - 0x000000005d7edbe0 sbridge_ - 0x000000005d7edc60 fourier_ - 0x000000005d7edfc0 fourier1_ - 0x000000005d7ee160 torsiond_ - COMMON 0x000000005d802360 0x4ef9f20 readrtns.o - 0x000000005d802360 contacts_ - 0x000000005d80df00 contacts_hb_ - 0x000000005e5a5300 rotat_old_ - 0x000000005e5a81e0 contacts1_ - 0x000000005e7cdae0 precomp2_ - 0x000000005e7e51e0 precomp1_ - 0x000000005e7fb940 diploc_ - 0x000000005e7ff280 rotat_ - 0x000000005e80ae00 dipint_ - 0x0000000060877a80 dipmat_ - COMMON 0x00000000626fc280 0x89776b4 track.o - 0x00000000626fc280 previous_ - 0x000000006b056460 history_ - *fill* 0x000000006b073934 0xc 00 - COMMON 0x000000006b073940 0x164c0 energy_p_new.o - 0x000000006b073940 calcthet_ - 0x000000006b0739e0 locel_ - 0x000000006b073c00 sccalc_ - 0x000000006b073c30 kutas_ - 0x000000006b073c40 torcnstr_ - 0x000000006b0753c0 srutu_ - 0x000000006b0753e0 calc_ - 0x000000006b0755e0 vectors_ - COMMON 0x000000006b089e00 0xbe8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - 0x000000006b089e00 MPIR_real4_dte - 0x000000006b089ec0 MPIR_I_2COMPLEX - 0x000000006b089f80 MPIR_I_2DOUBLE_PRECISION - 0x000000006b08a040 MPIR_I_COMPLEX - 0x000000006b08a100 MPIR_I_INTEGER - 0x000000006b08a1c0 MPIR_int1_dte - 0x000000006b08a280 MPIR_I_DOUBLE_PRECISION - 0x000000006b08a340 MPIR_I_REAL - 0x000000006b08a400 MPIR_I_LOGICAL - 0x000000006b08a4c0 MPIR_I_2DCOMPLEX - 0x000000006b08a580 MPIR_I_2INTEGER - 0x000000006b08a640 MPIR_int4_dte - 0x000000006b08a700 MPIR_real8_dte - 0x000000006b08a7c0 MPIR_I_DCOMPLEX - 0x000000006b08a880 MPIR_int2_dte - 0x000000006b08a940 MPIR_I_2REAL - *fill* 0x000000006b08a9e8 0x8 00 - COMMON 0x000000006b08a9f0 0x48 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - 0x000000006b08a9f0 MPIR_errhandlers - 0x000000006b08aa00 MPIR_fdtels - 0x000000006b08aa10 MPIR_tid - 0x000000006b08aa20 MPIR_qels - 0x000000006b08aa30 MPIR_topo_els - *fill* 0x000000006b08aa38 0x8 00 - COMMON 0x000000006b08aa40 0x11e8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - 0x000000006b08aa40 MPIR_I_DOUBLE - 0x000000006b08aaf0 MPI_FLOAT_INT_var - 0x000000006b08ab00 MPIR_I_LONG_LONG_INT - 0x000000006b08abb0 MPI_SHORT_INT_var - 0x000000006b08abc0 MPIR_I_LB - 0x000000006b08ac80 MPIR_I_PACKED - 0x000000006b08ad30 MPI_LONG_INT_var - 0x000000006b08ad40 MPIR_I_LONG_INT - 0x000000006b08ae00 MPIR_I_LONG_DOUBLE_INT - 0x000000006b08aec0 MPIR_I_INT - 0x000000006b08af80 MPIR_I_SHORT - 0x000000006b08b040 MPIR_I_DOUBLE_INT - 0x000000006b08b0f0 MPI_DOUBLE_INT_var - 0x000000006b08b100 MPIR_I_LONG_DOUBLE - 0x000000006b08b1b0 MPI_LONG_DOUBLE_INT_var - 0x000000006b08b1c0 MPIR_I_2DOUBLE - 0x000000006b08b280 MPIR_I_UB - 0x000000006b08b340 MPIR_I_2FLOAT - 0x000000006b08b400 MPIR_I_FLOAT - 0x000000006b08b4c0 MPIR_I_2INT - 0x000000006b08b580 MPIR_I_BYTE - 0x000000006b08b640 MPIR_I_CHAR - 0x000000006b08b700 MPIR_I_FLOAT_INT - 0x000000006b08b7b0 MPIR_dtes - 0x000000006b08b7c0 MPIR_I_USHORT - 0x000000006b08b880 MPIR_I_UCHAR - 0x000000006b08b940 MPIR_I_ULONG - 0x000000006b08ba00 MPIR_I_SHORT_INT - 0x000000006b08bac0 MPIR_I_LONG - 0x000000006b08bb80 MPIR_I_UINT - *fill* 0x000000006b08bc28 0x8 00 - COMMON 0x000000006b08bc30 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - 0x000000006b08bc30 MPIR_hbt_els - 0x000000006b08bc40 MPIR_hbts - *fill* 0x000000006b08bc48 0x8 00 - COMMON 0x000000006b08bc50 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - 0x000000006b08bc50 MPIR_Op_errno - *fill* 0x000000006b08bc54 0xc 00 - COMMON 0x000000006b08bc60 0x12 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - 0x000000006b08bc60 tty_orig - *fill* 0x000000006b08bc72 0xe 00 - COMMON 0x000000006b08bc80 0xb4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - 0x000000006b08bc80 MPIR_rhandles - 0x000000006b08bc90 MPIR_shandles - 0x000000006b08bca0 ch_debug_buf - 0x000000006b08bd20 MPID_MyWorldRank - 0x000000006b08bd30 MPID_MyWorldSize - *fill* 0x000000006b08bd34 0xc 00 - COMMON 0x000000006b08bd40 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - 0x000000006b08bd40 MPID_byte_order - *fill* 0x000000006b08bd44 0xc 00 - COMMON 0x000000006b08bd50 0x34 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - 0x000000006b08bd50 __P4LEN - 0x000000006b08bd60 __P4FROM - 0x000000006b08bd70 __P4GLOBALTYPE - 0x000000006b08bd80 __P4TYPE - *fill* 0x000000006b08bd84 0x1c 00 - COMMON 0x000000006b08bda0 0x20 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - 0x000000006b08bda0 MPID_recvs - COMMON 0x000000006b08bdc0 0x30 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - 0x000000006b08bdc0 total_pack_unacked - 0x000000006b08bdd0 expect_ack - 0x000000006b08bde0 MPID_pack_info - COMMON 0x000000006b08bdf0 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - 0x000000006b08bdf0 MPIR_debug_cl - 0x000000006b08be00 MPIR_debug_s - 0x000000006b08be10 MPIR_debug_c - 0x000000006b08be20 MPIR_debug_sqel - 0x000000006b08be30 MPIR_debug_qh - 0x000000006b08be40 MPIR_All_communicators - 0x000000006b08be50 MPIR_debug_q - 0x000000006b08be60 MPIR_debug_sq - 0x000000006b08be70 MPIR_debug_qel - 0x000000006b08be80 MPIR_debug_rh - *fill* 0x000000006b08be88 0x18 00 - COMMON 0x000000006b08bea0 0x6e4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) - 0x000000006b08bea0 execer_mynodenum - 0x000000006b08beb0 p4_global - 0x000000006b08bec0 logging_flag - 0x000000006b08bed0 p4_remote_debug_level - 0x000000006b08bee0 execer_mastport - 0x000000006b08bef0 execer_numtotnodes - 0x000000006b08bf00 execer_masthost - 0x000000006b08bf80 procgroup_file - 0x000000006b08c080 rm_outfile_head - 0x000000006b08c0f0 sserver_port - 0x000000006b08c100 listener_info - 0x000000006b08c120 whoami_p4 - 0x000000006b08c1a0 execer_myhost - 0x000000006b08c210 p4_debug_level - 0x000000006b08c220 p4_local - 0x000000006b08c230 execer_starting_remotes - 0x000000006b08c240 p4_myname_in_procgroup - 0x000000006b08c280 local_domain - 0x000000006b08c300 execer_id - 0x000000006b08c390 p4_rm_rank - 0x000000006b08c3a0 execer_mynumprocs - 0x000000006b08c3b0 hand_start_remotes - 0x000000006b08c3c0 p4_brdcst_info - 0x000000006b08c3e0 execer_pg - 0x000000006b08c400 bm_outfile - 0x000000006b08c480 p4_wd - 0x000000006b08c580 globmemsize - *fill* 0x000000006b08c584 0x4 00 - COMMON 0x000000006b08c588 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - 0x000000006b08c588 envar_fortranopt - COMMON 0x000000006b08c590 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - 0x000000006b08c590 __ftn_32in64_ - COMMON 0x000000006b08c594 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - 0x000000006b08c594 __hpf_entry_mflag - COMMON 0x000000006b08c598 0x40 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - 0x000000006b08c598 __hpf_zmem - 0x000000006b08c59c __hpf_np2 - 0x000000006b08c5a0 __hpf_tids - 0x000000006b08c5a8 __hpf_ioproc - 0x000000006b08c5ac __hpf_tcpus - 0x000000006b08c5b0 __hpf_quiet - 0x000000006b08c5b4 __hpf_pario - 0x000000006b08c5b8 __hpf_lcpu - 0x000000006b08c5c0 __hpf_heapz - 0x000000006b08c5c8 __hpf_debug - 0x000000006b08c5cc __hpf_debugn - 0x000000006b08c5d0 __hpf_heap_block - *fill* 0x000000006b08c5d8 0x8 00 - COMMON 0x000000006b08c5e0 0x60 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x000000006b08c5e0 __f90io_conv_buf - COMMON 0x000000006b08c640 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) - 0x000000006b08c640 __hpf_test - *fill* 0x000000006b08c644 0x1c 00 - COMMON 0x000000006b08c660 0xd8 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x000000006b08c660 __hpf_true_log4 - 0x000000006b08c664 __hpf_mask_log4 - 0x000000006b08c668 __hpf_mask_int1 - 0x000000006b08c680 __hpf_shifts - 0x000000006b08c708 __hpf_true_log1 - 0x000000006b08c70c __hpf_mask_log - 0x000000006b08c710 __hpf_mask_int4 - 0x000000006b08c718 __hpf_true_log8 - 0x000000006b08c720 __hpf_mask_int8 - 0x000000006b08c728 __hpf_mask_log1 - 0x000000006b08c72a __hpf_mask_int2 - 0x000000006b08c72c __hpf_mask_log2 - 0x000000006b08c72e __hpf_true_log2 - 0x000000006b08c730 __hpf_mask_log8 - COMMON 0x000000006b08c738 0xc /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - 0x000000006b08c738 __argv_save - 0x000000006b08c740 __argc_save - 0x000000006b08c748 . = ALIGN (0x8) - *fill* 0x000000006b08c744 0x4 00 - *fill* 0x000000006b08c748 0x0 00 - *fill* 0x000000006b08c748 0x0 00 - *fill* 0x000000006b08c748 0x0 00 - 0x000000006b08c748 . = ALIGN (0x8) - 0x000000006b08c748 _end = . - 0x000000006b08c748 PROVIDE (end, .) - 0x000000006b08c748 . = DATA_SEGMENT_END (.) - -.stab - *(.stab) - -.stabstr - *(.stabstr) - -.stab.excl - *(.stab.excl) - -.stab.exclstr - *(.stab.exclstr) - -.stab.index - *(.stab.index) - -.stab.indexstr - *(.stab.indexstr) - -.comment 0x0000000000000000 0xaf5 - *(.comment) - .comment 0x0000000000000000 0x31 /usr/lib64/crt1.o - .comment 0x0000000000000031 0x31 /usr/lib64/crti.o - .comment 0x0000000000000062 0x31 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - .comment 0x0000000000000093 0x1f /usr/pgi/linux86-64/6.0/lib/f90main.o - .comment 0x00000000000000b2 0x31 proc_proc.o - .comment 0x00000000000000e3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - .comment 0x0000000000000102 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) - .comment 0x0000000000000121 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - .comment 0x0000000000000140 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - .comment 0x000000000000015f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - .comment 0x000000000000017e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - .comment 0x000000000000019d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - .comment 0x00000000000001bc 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - .comment 0x00000000000001db 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - .comment 0x00000000000001fa 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - .comment 0x0000000000000219 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(pgifiodf.o) - .comment 0x0000000000000238 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - .comment 0x0000000000000257 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - .comment 0x0000000000000276 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - .comment 0x0000000000000295 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - .comment 0x00000000000002b4 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - .comment 0x00000000000002d3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - .comment 0x00000000000002f2 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - .comment 0x0000000000000311 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) - .comment 0x0000000000000330 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - .comment 0x000000000000034f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - .comment 0x000000000000036e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - .comment 0x000000000000038d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - .comment 0x00000000000003ac 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) - .comment 0x00000000000003cb 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - .comment 0x00000000000003ea 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - .comment 0x0000000000000409 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - .comment 0x0000000000000428 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - .comment 0x0000000000000447 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - .comment 0x0000000000000466 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - .comment 0x0000000000000485 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - .comment 0x00000000000004a4 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - .comment 0x00000000000004c3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - .comment 0x00000000000004e2 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) - .comment 0x0000000000000501 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - .comment 0x0000000000000520 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - .comment 0x000000000000053f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - .comment 0x000000000000055e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - .comment 0x000000000000057d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - .comment 0x000000000000059c 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - .comment 0x00000000000005bb 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopy.o) - .comment 0x00000000000005da 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopys.o) - .comment 0x00000000000005f9 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - .comment 0x0000000000000618 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) - .comment 0x0000000000000637 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - .comment 0x0000000000000656 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof.o) - .comment 0x0000000000000675 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof2.o) - .comment 0x0000000000000694 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(genlist.o) - .comment 0x00000000000006b3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - .comment 0x00000000000006d2 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - .comment 0x00000000000006f1 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - .comment 0x0000000000000710 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace2.o) - .comment 0x000000000000072f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(xfer_heap_dum.o) - .comment 0x000000000000074e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(dacos.o) - .comment 0x000000000000076d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - .comment 0x000000000000078c 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(flush3f.o) - .comment 0x00000000000007ab 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) - .comment 0x00000000000007ca 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(fdate3f.o) - .comment 0x00000000000007e9 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getarg3f.o) - .comment 0x0000000000000808 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - .comment 0x0000000000000827 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(utils3f.o) - .comment 0x0000000000000846 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - .comment 0x0000000000000865 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgifiodf.o) - .comment 0x0000000000000884 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - .comment 0x00000000000008a3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - .comment 0x00000000000008c2 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - .comment 0x00000000000008e1 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - .comment 0x0000000000000900 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - .comment 0x000000000000091f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - .comment 0x000000000000093e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - .comment 0x000000000000095d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - .comment 0x000000000000097c 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) - .comment 0x000000000000099b 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - .comment 0x00000000000009ba 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - .comment 0x00000000000009d9 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - .comment 0x00000000000009f8 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - .comment 0x0000000000000a17 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - .comment 0x0000000000000a36 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - .comment 0x0000000000000a55 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - .comment 0x0000000000000a74 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - .comment 0x0000000000000a93 0x31 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - .comment 0x0000000000000ac4 0x31 /usr/lib64/crtn.o - -.debug - *(.debug) - -.line - *(.line) - -.debug_srcinfo - *(.debug_srcinfo) - -.debug_sfnames - *(.debug_sfnames) - -.debug_aranges 0x0000000000000000 0xa00 - *(.debug_aranges) - .debug_aranges - 0x0000000000000000 0x50 main_clust.o - .debug_aranges - 0x0000000000000050 0x50 arcos.o - .debug_aranges - 0x00000000000000a0 0x50 cartprint.o - .debug_aranges - 0x00000000000000f0 0x50 chainbuild.o - .debug_aranges - 0x0000000000000140 0x50 convert.o - .debug_aranges - 0x0000000000000190 0x50 initialize_p.o - .debug_aranges - 0x00000000000001e0 0x50 matmult.o - .debug_aranges - 0x0000000000000230 0x50 readrtns.o - .debug_aranges - 0x0000000000000280 0x50 pinorm.o - .debug_aranges - 0x00000000000002d0 0x50 rescode.o - .debug_aranges - 0x0000000000000320 0x50 intcor.o - .debug_aranges - 0x0000000000000370 0x50 timing.o - .debug_aranges - 0x00000000000003c0 0x50 misc.o - .debug_aranges - 0x0000000000000410 0x50 geomout.o - .debug_aranges - 0x0000000000000460 0x50 readpdb.o - .debug_aranges - 0x00000000000004b0 0x50 read_coords.o - .debug_aranges - 0x0000000000000500 0x50 parmread.o - .debug_aranges - 0x0000000000000550 0x50 probabl.o - .debug_aranges - 0x00000000000005a0 0x50 fitsq.o - .debug_aranges - 0x00000000000005f0 0x50 hc.o - .debug_aranges - 0x0000000000000640 0x50 track.o - .debug_aranges - 0x0000000000000690 0x50 wrtclust.o - .debug_aranges - 0x00000000000006e0 0x50 srtclust.o - .debug_aranges - 0x0000000000000730 0x50 noyes.o - .debug_aranges - 0x0000000000000780 0x50 contact.o - .debug_aranges - 0x00000000000007d0 0x50 printmat.o - .debug_aranges - 0x0000000000000820 0x50 int_from_cart1.o - .debug_aranges - 0x0000000000000870 0x50 energy_p_new.o - .debug_aranges - 0x00000000000008c0 0x50 icant.o - .debug_aranges - 0x0000000000000910 0x50 work_partition.o - .debug_aranges - 0x0000000000000960 0x50 setup_var.o - .debug_aranges - 0x00000000000009b0 0x50 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_pubnames - 0x0000000000000000 0xb1a - *(.debug_pubnames) - .debug_pubnames - 0x0000000000000000 0x33 main_clust.o - .debug_pubnames - 0x0000000000000033 0x1c arcos.o - .debug_pubnames - 0x000000000000004f 0x20 cartprint.o - .debug_pubnames - 0x000000000000006f 0x5a chainbuild.o - .debug_pubnames - 0x00000000000000c9 0x32 convert.o - .debug_pubnames - 0x00000000000000fb 0x58 initialize_p.o - .debug_pubnames - 0x0000000000000153 0x1e matmult.o - .debug_pubnames - 0x0000000000000171 0x9c readrtns.o - .debug_pubnames - 0x000000000000020d 0x1d pinorm.o - .debug_pubnames - 0x000000000000022a 0x1e rescode.o - .debug_pubnames - 0x0000000000000248 0x2e intcor.o - .debug_pubnames - 0x0000000000000276 0x4b timing.o - .debug_pubnames - 0x00000000000002c1 0x93 misc.o - .debug_pubnames - 0x0000000000000354 0x4d geomout.o - .debug_pubnames - 0x00000000000003a1 0x3d readpdb.o - .debug_pubnames - 0x00000000000003de 0xa9 read_coords.o - .debug_pubnames - 0x0000000000000487 0x1f parmread.o - .debug_pubnames - 0x00000000000004a6 0x2a probabl.o - .debug_pubnames - 0x00000000000004d0 0x63 fitsq.o - .debug_pubnames - 0x0000000000000533 0x39 hc.o - .debug_pubnames - 0x000000000000056c 0x35 track.o - .debug_pubnames - 0x00000000000005a1 0x1f wrtclust.o - .debug_pubnames - 0x00000000000005c0 0x1f srtclust.o - .debug_pubnames - 0x00000000000005df 0x1c noyes.o - .debug_pubnames - 0x00000000000005fb 0x30 contact.o - .debug_pubnames - 0x000000000000062b 0x1f printmat.o - .debug_pubnames - 0x000000000000064a 0x25 int_from_cart1.o - .debug_pubnames - 0x000000000000066f 0x2df energy_p_new.o - .debug_pubnames - 0x000000000000094e 0x1c icant.o - .debug_pubnames - 0x000000000000096a 0x25 work_partition.o - .debug_pubnames - 0x000000000000098f 0x20 setup_var.o - .debug_pubnames - 0x00000000000009af 0x16b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_info 0x0000000000000000 0xd920c - *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x0000000000000000 0x5ee0 main_clust.o - .debug_info 0x0000000000005ee0 0x174 arcos.o - .debug_info 0x0000000000006054 0x168c cartprint.o - .debug_info 0x00000000000076e0 0x6937 chainbuild.o - .debug_info 0x000000000000e017 0xee2 convert.o - .debug_info 0x000000000000eef9 0x80c1 initialize_p.o - .debug_info 0x0000000000016fba 0x30e matmult.o - .debug_info 0x00000000000172c8 0xb255 readrtns.o - .debug_info 0x000000000002251d 0x17f pinorm.o - .debug_info 0x000000000002269c 0xae7 rescode.o - .debug_info 0x0000000000023183 0x12a1 intcor.o - .debug_info 0x0000000000024424 0x1528 timing.o - .debug_info 0x000000000002594c 0x725 misc.o - .debug_info 0x0000000000026071 0x9528 geomout.o - .debug_info 0x000000000002f599 0x4364 readpdb.o - .debug_info 0x00000000000338fd 0x13ada read_coords.o - .debug_info 0x00000000000473d7 0x2a9a parmread.o - .debug_info 0x0000000000049e71 0x3637 probabl.o - .debug_info 0x000000000004d4a8 0x1457 fitsq.o - .debug_info 0x000000000004e8ff 0x17e5 hc.o - .debug_info 0x00000000000500e4 0x2afe track.o - .debug_info 0x0000000000052be2 0x1a13 wrtclust.o - .debug_info 0x00000000000545f5 0x1072 srtclust.o - .debug_info 0x0000000000055667 0xb8 noyes.o - .debug_info 0x000000000005571f 0x24d6 contact.o - .debug_info 0x0000000000057bf5 0x177 printmat.o - .debug_info 0x0000000000057d6c 0x1f2e int_from_cart1.o - .debug_info 0x0000000000059c9a 0x78f44 energy_p_new.o - .debug_info 0x00000000000d2bde 0xb0 icant.o - .debug_info 0x00000000000d2c8e 0x1fe7 work_partition.o - .debug_info 0x00000000000d4c75 0x194a setup_var.o - .debug_info 0x00000000000d65bf 0x2c4d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_abbrev 0x0000000000000000 0x5338a - *(.debug_abbrev) - .debug_abbrev 0x0000000000000000 0x2782 main_clust.o - .debug_abbrev 0x0000000000002782 0xb8 arcos.o - .debug_abbrev 0x000000000000283a 0x8be cartprint.o - .debug_abbrev 0x00000000000030f8 0x293c chainbuild.o - .debug_abbrev 0x0000000000005a34 0x632 convert.o - .debug_abbrev 0x0000000000006066 0x3730 initialize_p.o - .debug_abbrev 0x0000000000009796 0x1b2 matmult.o - .debug_abbrev 0x0000000000009948 0x49d0 readrtns.o - .debug_abbrev 0x000000000000e318 0xbc pinorm.o - .debug_abbrev 0x000000000000e3d4 0x54a rescode.o - .debug_abbrev 0x000000000000e91e 0x986 intcor.o - .debug_abbrev 0x000000000000f2a4 0xa88 timing.o - .debug_abbrev 0x000000000000fd2c 0x476 misc.o - .debug_abbrev 0x00000000000101a2 0x3abe geomout.o - .debug_abbrev 0x0000000000013c60 0x1aae readpdb.o - .debug_abbrev 0x000000000001570e 0x832e read_coords.o - .debug_abbrev 0x000000000001da3c 0x110e parmread.o - .debug_abbrev 0x000000000001eb4a 0x1800 probabl.o - .debug_abbrev 0x000000000002034a 0xaa6 fitsq.o - .debug_abbrev 0x0000000000020df0 0xc16 hc.o - .debug_abbrev 0x0000000000021a06 0x13fe track.o - .debug_abbrev 0x0000000000022e04 0xbc6 wrtclust.o - .debug_abbrev 0x00000000000239ca 0x7c2 srtclust.o - .debug_abbrev 0x000000000002418c 0x5e noyes.o - .debug_abbrev 0x00000000000241ea 0x1014 contact.o - .debug_abbrev 0x00000000000251fe 0xcf printmat.o - .debug_abbrev 0x00000000000252cd 0xc1a int_from_cart1.o - .debug_abbrev 0x0000000000025ee7 0x2aac4 energy_p_new.o - .debug_abbrev 0x00000000000509ab 0x5b icant.o - .debug_abbrev 0x0000000000050a06 0xed6 work_partition.o - .debug_abbrev 0x00000000000518dc 0xa12 setup_var.o - .debug_abbrev 0x00000000000522ee 0x109c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_line 0x0000000000000000 0x14996 - *(.debug_line) - .debug_line 0x0000000000000000 0xc09 main_clust.o - .debug_line 0x0000000000000c09 0xa0 arcos.o - .debug_line 0x0000000000000ca9 0xa4 cartprint.o - .debug_line 0x0000000000000d4d 0x7e9 chainbuild.o - .debug_line 0x0000000000001536 0x1c2 convert.o - .debug_line 0x00000000000016f8 0xe6f initialize_p.o - .debug_line 0x0000000000002567 0xf6 matmult.o - .debug_line 0x000000000000265d 0xff7 readrtns.o - .debug_line 0x0000000000003654 0xc5 pinorm.o - .debug_line 0x0000000000003719 0x132 rescode.o - .debug_line 0x000000000000384b 0x2b1 intcor.o - .debug_line 0x0000000000003afc 0x1c1 timing.o - .debug_line 0x0000000000003cbd 0x67b misc.o - .debug_line 0x0000000000004338 0x4da geomout.o - .debug_line 0x0000000000004812 0x61e readpdb.o - .debug_line 0x0000000000004e30 0x9ca read_coords.o - .debug_line 0x00000000000057fa 0x1303 parmread.o - .debug_line 0x0000000000006afd 0x55e probabl.o - .debug_line 0x000000000000705b 0xd90 fitsq.o - .debug_line 0x0000000000007deb 0xaf9 hc.o - .debug_line 0x00000000000088e4 0x7f0 track.o - .debug_line 0x00000000000090d4 0x787 wrtclust.o - .debug_line 0x000000000000985b 0x3df srtclust.o - .debug_line 0x0000000000009c3a 0xe8 noyes.o - .debug_line 0x0000000000009d22 0x22e contact.o - .debug_line 0x0000000000009f50 0xd3 printmat.o - .debug_line 0x000000000000a023 0x271 int_from_cart1.o - .debug_line 0x000000000000a294 0xa187 energy_p_new.o - .debug_line 0x000000000001441b 0xac icant.o - .debug_line 0x00000000000144c7 0x259 work_partition.o - .debug_line 0x0000000000014720 0x14c setup_var.o - .debug_line 0x000000000001486c 0x12a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_frame 0x0000000000000000 0x6940 - *(.debug_frame) - .debug_frame 0x0000000000000000 0x78 main_clust.o - .debug_frame 0x0000000000000078 0x38 arcos.o - .debug_frame 0x00000000000000b0 0x38 cartprint.o - .debug_frame 0x00000000000000e8 0x98 chainbuild.o - .debug_frame 0x0000000000000180 0x58 convert.o - .debug_frame 0x00000000000001d8 0x98 initialize_p.o - .debug_frame 0x0000000000000270 0x38 matmult.o - .debug_frame 0x00000000000002a8 0x158 readrtns.o - .debug_frame 0x0000000000000400 0x38 pinorm.o - .debug_frame 0x0000000000000438 0x38 rescode.o - .debug_frame 0x0000000000000470 0x78 intcor.o - .debug_frame 0x00000000000004e8 0xb8 timing.o - .debug_frame 0x00000000000005a0 0x178 misc.o - .debug_frame 0x0000000000000718 0xb8 geomout.o - .debug_frame 0x00000000000007d0 0x78 readpdb.o - .debug_frame 0x0000000000000848 0xf8 read_coords.o - .debug_frame 0x0000000000000940 0x38 parmread.o - .debug_frame 0x0000000000000978 0x58 probabl.o - .debug_frame 0x00000000000009d0 0x118 fitsq.o - .debug_frame 0x0000000000000ae8 0x98 hc.o - .debug_frame 0x0000000000000b80 0x78 track.o - .debug_frame 0x0000000000000bf8 0x38 wrtclust.o - .debug_frame 0x0000000000000c30 0x38 srtclust.o - .debug_frame 0x0000000000000c68 0x38 noyes.o - .debug_frame 0x0000000000000ca0 0x58 contact.o - .debug_frame 0x0000000000000cf8 0x38 printmat.o - .debug_frame 0x0000000000000d30 0x38 int_from_cart1.o - .debug_frame 0x0000000000000d68 0x718 energy_p_new.o - .debug_frame 0x0000000000001480 0x38 icant.o - .debug_frame 0x00000000000014b8 0x38 work_partition.o - .debug_frame 0x00000000000014f0 0x38 setup_var.o - .debug_frame 0x0000000000001528 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) - .debug_frame 0x0000000000001560 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) - .debug_frame 0x0000000000001598 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) - .debug_frame 0x00000000000015d0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) - .debug_frame 0x0000000000001608 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) - .debug_frame 0x0000000000001640 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) - .debug_frame 0x0000000000001678 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) - .debug_frame 0x00000000000016b0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) - .debug_frame 0x00000000000016e8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - .debug_frame 0x0000000000001720 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_copyfnf.o) - .debug_frame 0x0000000000001758 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_del_fnf.o) - .debug_frame 0x0000000000001790 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) - .debug_frame 0x00000000000017c8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) - .debug_frame 0x0000000000001800 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) - .debug_frame 0x0000000000001838 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) - .debug_frame 0x0000000000001870 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) - .debug_frame 0x00000000000018c8 0xd8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - .debug_frame 0x00000000000019a0 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfcmn.o) - .debug_frame 0x00000000000019f8 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - .debug_frame 0x0000000000001ab0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - .debug_frame 0x0000000000001ae8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - .debug_frame 0x0000000000001b20 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - .debug_frame 0x0000000000001c18 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - .debug_frame 0x0000000000001c50 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) - .debug_frame 0x0000000000001c88 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - .debug_frame 0x0000000000001d00 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) - .debug_frame 0x0000000000001d38 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errorstring.o) - .debug_frame 0x0000000000001d70 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - .debug_frame 0x0000000000001e28 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - .debug_frame 0x0000000000001e60 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtime.o) - .debug_frame 0x0000000000001e98 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) - .debug_frame 0x0000000000001ed0 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - .debug_frame 0x0000000000001fc8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(msgqdllloc.o) - .debug_frame 0x0000000000002000 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - .debug_frame 0x0000000000002158 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - .debug_frame 0x00000000000022b0 0xd8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - .debug_frame 0x0000000000002388 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - .debug_frame 0x00000000000023c0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - .debug_frame 0x00000000000023f8 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - .debug_frame 0x0000000000002550 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - .debug_frame 0x0000000000002588 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - .debug_frame 0x00000000000025c0 0x118 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - .debug_frame 0x00000000000026d8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - .debug_frame 0x0000000000002710 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - .debug_frame 0x0000000000002748 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - .debug_frame 0x00000000000027a0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - .debug_frame 0x00000000000027d8 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - .debug_frame 0x0000000000002910 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - .debug_frame 0x0000000000002968 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fn.o) - .debug_frame 0x00000000000029a0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - .debug_frame 0x00000000000029d8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - .debug_frame 0x0000000000002a10 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - .debug_frame 0x0000000000002a48 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - .debug_frame 0x0000000000002a80 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - .debug_frame 0x0000000000002ab8 0x198 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - .debug_frame 0x0000000000002c50 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - .debug_frame 0x0000000000002c88 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - .debug_frame 0x0000000000002cc0 0x1f8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - .debug_frame 0x0000000000002eb8 0x1b8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - .debug_frame 0x0000000000003070 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - .debug_frame 0x00000000000030a8 0xd8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - .debug_frame 0x0000000000003180 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - .debug_frame 0x00000000000031b8 0x418 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - .debug_frame 0x00000000000035d0 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - .debug_frame 0x00000000000036c8 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - .debug_frame 0x0000000000003740 0x2f8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - .debug_frame 0x0000000000003a38 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - .debug_frame 0x0000000000003af0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - .debug_frame 0x0000000000003ba8 0x1d8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - .debug_frame 0x0000000000003d80 0x118 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - .debug_frame 0x0000000000003e98 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - .debug_frame 0x0000000000003f90 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - .debug_frame 0x0000000000003fe8 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - .debug_frame 0x0000000000004120 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) - .debug_frame 0x0000000000004178 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - .debug_frame 0x00000000000041d0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - .debug_frame 0x0000000000004288 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - .debug_frame 0x0000000000004320 0x218 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - .debug_frame 0x0000000000004538 0x238 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - .debug_frame 0x0000000000004770 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - .debug_frame 0x0000000000004808 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - .debug_frame 0x0000000000004900 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - .debug_frame 0x0000000000004938 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - .debug_frame 0x0000000000004990 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - .debug_frame 0x0000000000004ae8 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - .debug_frame 0x0000000000004b60 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - .debug_frame 0x0000000000004cb8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - .debug_frame 0x0000000000004cf0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - .debug_frame 0x0000000000004da8 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - .debug_frame 0x0000000000004e40 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - .debug_frame 0x0000000000004e78 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - .debug_frame 0x0000000000004eb0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - .debug_frame 0x0000000000004ee8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - .debug_frame 0x0000000000004f20 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - .debug_frame 0x0000000000004f58 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - .debug_frame 0x0000000000004f90 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - .debug_frame 0x0000000000004fc8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - .debug_frame 0x0000000000005000 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - .debug_frame 0x0000000000005038 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - .debug_frame 0x0000000000005070 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - .debug_frame 0x00000000000050a8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - .debug_frame 0x00000000000050e0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - .debug_frame 0x0000000000005118 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - .debug_frame 0x0000000000005150 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - .debug_frame 0x0000000000005188 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - .debug_frame 0x00000000000051c0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - .debug_frame 0x00000000000051f8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - .debug_frame 0x0000000000005230 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - .debug_frame 0x0000000000005268 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - .debug_frame 0x00000000000052a0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - .debug_frame 0x00000000000052d8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - .debug_frame 0x0000000000005310 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - .debug_frame 0x0000000000005448 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyvalcreate.o) - .debug_frame 0x0000000000005480 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - .debug_frame 0x00000000000054b8 0x118 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - .debug_frame 0x00000000000055d0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - .debug_frame 0x0000000000005688 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - .debug_frame 0x0000000000005720 0x198 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - .debug_frame 0x00000000000058b8 0x198 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - .debug_frame 0x0000000000005a50 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - .debug_frame 0x0000000000005ac8 0x218 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - .debug_frame 0x0000000000005ce0 0x218 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - .debug_frame 0x0000000000005ef8 0x2d8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - .debug_frame 0x00000000000061d0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - .debug_frame 0x0000000000006288 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - .debug_frame 0x0000000000006340 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - .debug_frame 0x0000000000006398 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - .debug_frame 0x00000000000064d0 0x1b8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - .debug_frame 0x0000000000006688 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - .debug_frame 0x00000000000066c0 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - .debug_frame 0x00000000000067b8 0xd8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - .debug_frame 0x0000000000006890 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - .debug_frame 0x00000000000068c8 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dmpipk.o) - -.debug_str - *(.debug_str) - -.debug_loc - *(.debug_loc) - -.debug_macinfo - *(.debug_macinfo) - -.debug_weaknames - *(.debug_weaknames) - -.debug_funcnames - *(.debug_funcnames) - -.debug_typenames - *(.debug_typenames) - -.debug_varnames - *(.debug_varnames) - -/DISCARD/ - *(.note.GNU-stack) -OUTPUT(/users/adam/ZSCOREZ/bin/unres_clustMD_MPI elf64-x86-64) - -.note 0x0000000000000000 0xce4 - .note 0x0000000000000000 0x14 main_clust.o - .note 0x0000000000000014 0x14 arcos.o - .note 0x0000000000000028 0x14 cartprint.o - .note 0x000000000000003c 0x14 chainbuild.o - .note 0x0000000000000050 0x14 convert.o - .note 0x0000000000000064 0x14 initialize_p.o - .note 0x0000000000000078 0x14 matmult.o - .note 0x000000000000008c 0x14 readrtns.o - .note 0x00000000000000a0 0x14 pinorm.o - .note 0x00000000000000b4 0x14 rescode.o - .note 0x00000000000000c8 0x14 intcor.o - .note 0x00000000000000dc 0x14 timing.o - .note 0x00000000000000f0 0x14 misc.o - .note 0x0000000000000104 0x14 geomout.o - .note 0x0000000000000118 0x14 readpdb.o - .note 0x000000000000012c 0x14 read_coords.o - .note 0x0000000000000140 0x14 parmread.o - .note 0x0000000000000154 0x14 probabl.o - .note 0x0000000000000168 0x14 fitsq.o - .note 0x000000000000017c 0x14 hc.o - .note 0x0000000000000190 0x14 track.o - .note 0x00000000000001a4 0x14 wrtclust.o - .note 0x00000000000001b8 0x14 srtclust.o - .note 0x00000000000001cc 0x14 noyes.o - .note 0x00000000000001e0 0x14 contact.o - .note 0x00000000000001f4 0x14 printmat.o - .note 0x0000000000000208 0x14 int_from_cart1.o - .note 0x000000000000021c 0x14 energy_p_new.o - .note 0x0000000000000230 0x14 icant.o - .note 0x0000000000000244 0x14 work_partition.o - .note 0x0000000000000258 0x14 setup_var.o - .note 0x000000000000026c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) - .note 0x0000000000000280 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) - .note 0x0000000000000294 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) - .note 0x00000000000002a8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) - .note 0x00000000000002bc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) - .note 0x00000000000002d0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) - .note 0x00000000000002e4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) - .note 0x00000000000002f8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) - .note 0x000000000000030c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - .note 0x0000000000000320 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_copyfnf.o) - .note 0x0000000000000334 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_del_fnf.o) - .note 0x0000000000000348 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) - .note 0x000000000000035c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) - .note 0x0000000000000370 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) - .note 0x0000000000000384 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) - .note 0x0000000000000398 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) - .note 0x00000000000003ac 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - .note 0x00000000000003c0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfcmn.o) - .note 0x00000000000003d4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - .note 0x00000000000003e8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - .note 0x00000000000003fc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - .note 0x0000000000000410 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - .note 0x0000000000000424 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - .note 0x0000000000000438 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) - .note 0x000000000000044c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - .note 0x0000000000000460 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) - .note 0x0000000000000474 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errorstring.o) - .note 0x0000000000000488 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - .note 0x000000000000049c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - .note 0x00000000000004b0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtime.o) - .note 0x00000000000004c4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) - .note 0x00000000000004d8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - .note 0x00000000000004ec 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(msgqdllloc.o) - .note 0x0000000000000500 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - .note 0x0000000000000514 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - .note 0x0000000000000528 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - .note 0x000000000000053c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - .note 0x0000000000000550 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - .note 0x0000000000000564 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - .note 0x0000000000000578 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - .note 0x000000000000058c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - .note 0x00000000000005a0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - .note 0x00000000000005b4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - .note 0x00000000000005c8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - .note 0x00000000000005dc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - .note 0x00000000000005f0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - .note 0x0000000000000604 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - .note 0x0000000000000618 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - .note 0x000000000000062c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fn.o) - .note 0x0000000000000640 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - .note 0x0000000000000654 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - .note 0x0000000000000668 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - .note 0x000000000000067c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - .note 0x0000000000000690 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - .note 0x00000000000006a4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - .note 0x00000000000006b8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - .note 0x00000000000006cc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - .note 0x00000000000006e0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - .note 0x00000000000006f4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - .note 0x0000000000000708 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - .note 0x000000000000071c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - .note 0x0000000000000730 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - .note 0x0000000000000744 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - .note 0x0000000000000758 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - .note 0x000000000000076c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - .note 0x0000000000000780 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - .note 0x0000000000000794 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - .note 0x00000000000007a8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - .note 0x00000000000007bc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - .note 0x00000000000007d0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - .note 0x00000000000007e4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - .note 0x00000000000007f8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - .note 0x000000000000080c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - .note 0x0000000000000820 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) - .note 0x0000000000000834 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - .note 0x0000000000000848 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - .note 0x000000000000085c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - .note 0x0000000000000870 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - .note 0x0000000000000884 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - .note 0x0000000000000898 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - .note 0x00000000000008ac 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - .note 0x00000000000008c0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - .note 0x00000000000008d4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - .note 0x00000000000008e8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - .note 0x00000000000008fc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - .note 0x0000000000000910 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - .note 0x0000000000000924 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - .note 0x0000000000000938 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - .note 0x000000000000094c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - .note 0x0000000000000960 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - .note 0x0000000000000974 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - .note 0x0000000000000988 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - .note 0x000000000000099c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - .note 0x00000000000009b0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - .note 0x00000000000009c4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - .note 0x00000000000009d8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - .note 0x00000000000009ec 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - .note 0x0000000000000a00 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - .note 0x0000000000000a14 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - .note 0x0000000000000a28 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - .note 0x0000000000000a3c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - .note 0x0000000000000a50 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - .note 0x0000000000000a64 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - .note 0x0000000000000a78 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - .note 0x0000000000000a8c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - .note 0x0000000000000aa0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - .note 0x0000000000000ab4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - .note 0x0000000000000ac8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - .note 0x0000000000000adc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - .note 0x0000000000000af0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - .note 0x0000000000000b04 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - .note 0x0000000000000b18 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - .note 0x0000000000000b2c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyvalcreate.o) - .note 0x0000000000000b40 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - .note 0x0000000000000b54 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) - .note 0x0000000000000b68 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - .note 0x0000000000000b7c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - .note 0x0000000000000b90 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - .note 0x0000000000000ba4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - .note 0x0000000000000bb8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - .note 0x0000000000000bcc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - .note 0x0000000000000be0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - .note 0x0000000000000bf4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - .note 0x0000000000000c08 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - .note 0x0000000000000c1c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - .note 0x0000000000000c30 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - .note 0x0000000000000c44 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - .note 0x0000000000000c58 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - .note 0x0000000000000c6c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - .note 0x0000000000000c80 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - .note 0x0000000000000c94 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - .note 0x0000000000000ca8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - .note 0x0000000000000cbc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - .note 0x0000000000000cd0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dmpipk.o) diff --git a/source/cluster/wham/src-M/proc_proc.c b/source/cluster/wham/src-M/proc_proc.c index d77c5a4..f023520 100644 --- a/source/cluster/wham/src-M/proc_proc.c +++ b/source/cluster/wham/src-M/proc_proc.c @@ -1,5 +1,6 @@ #include #include +#include #ifdef CRAY void PROC_PROC(long int *f, int *i) diff --git a/source/cluster/wham/src/CMakeLists.txt b/source/cluster/wham/src/CMakeLists.txt new file mode 100644 index 0000000..120d163 --- /dev/null +++ b/source/cluster/wham/src/CMakeLists.txt @@ -0,0 +1,240 @@ +# +# CMake project file for cluster analysis from WHAM for single-chain proteins +# + +enable_language (Fortran) + +#================================ +# Set source file lists +#================================ +set(UNRES_CLUSTER_WHAM_SRC0 + arcos.f + cartprint.f + chainbuild.f + contact.f + convert.f + energy_p_new.F + fitsq.f + geomout.F + hc.f + icant.f + initialize_p.F + intcor.f + int_from_cart1.f + main_clust.F + matmult.f + misc.f + noyes.f + parmread.F + pinorm.f + probabl.F + read_coords.F + readpdb.f + readrtns.F + rescode.f + setup_var.f + srtclust.f + timing.F + track.F + wrtclust.f + work_partition.F +) + +set(UNRES_CLUSTER_WHAM_PP_SRC + energy_p_new.F + initialize_p.F + geomout.F + main_clust.F + parmread.F + probabl.F + read_coords.F + readrtns.F + timing.F + track.F + work_partition.F +) + + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(FFLAGS0 "-ip -w -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres " ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres " ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + +# Add MPI compiler flags +if(UNRES_WITH_MPI) + set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}") +endif(UNRES_WITH_MPI) + +set_property(SOURCE ${UNRES_CLUSTER_WHAM_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +set(CPPFLAGS "PROCOR -DSPLITELE -DPROCOR -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + # Add ifort preprocessor flags + set(CPPFLAGS "${CPPFLAGS} -DPGI") +elseif (Fortran_COMPILER_NAME STREQUAL "f95") + # Add new gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + # Add old gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +#========================================= +# Add MPI preprocessor flags +#========================================= +if (UNRES_WITH_MPI) + set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") +endif(UNRES_WITH_MPI) + + +#========================================= +# Apply preprocesor flags to *.F files +#========================================= +set_property(SOURCE ${UNRES_CLUSTER_WHAM_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + +#======================================== +# Setting binary name +#======================================== +set(UNRES_CLUSTER_WHAM_BIN "unres_clustMD.exe") + +#========================================= +# cinfo.f stupid workaround for cmake +# - shame on me ]:) +#========================================= +#set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" ) +#add_executable(compinfo-wham-m compinfo.c) +#set_target_properties(compinfo-wham-m PROPERTIES OUTPUT_NAME compinfo) + +#set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +#add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS +# COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true +# DEPENDS compinfo-wham-m ) +#set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +set_property(SOURCE proc_proc.c PROPERTY COMPILE_DEFINITIONS "LINUX -DPGI" ) + + + +#========================================= +# Set full unres CLUSTER sources +#========================================= +set(UNRES_CLUSTER_WHAM_SRCS ${UNRES_CLUSTER_WHAM_SRC0} proc_proc.c) + + + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_CLUSTER_WHAM_BIN ${UNRES_CLUSTER_WHAM_SRCS} ) +set_target_properties(UNRES_CLUSTER_WHAM_BIN PROPERTIES OUTPUT_NAME ${UNRES_CLUSTER_WHAM_BIN}) + +#========================================= +# Link libraries +#========================================= +# link MPI library (libmpich.a) +if(UNRES_WITH_MPI) + target_link_libraries( UNRES_CLUSTER_WHAM_BIN ${MPIF_LIBRARIES} ) +endif(UNRES_WITH_MPI) +# link libxdrf.a +target_link_libraries( UNRES_CLUSTER_WHAM_BIN xdrf ) + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= +# test_single_ala.sh +#========================================= + +#FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh +#"#!/bin/sh +#export POT=GB +#export PREFIX=ala10 +#----------------------------------------------------------------------------- +#UNRES_BIN=./${UNRES_BIN} +#----------------------------------------------------------------------------- +#DD=${CMAKE_SOURCE_DIR}/PARAM +#export BONDPAR=$DD/bond.parm +#export THETPAR=$DD/thetaml.5parm +#export ROTPAR=$DD/scgauss.parm +#export TORPAR=$DD/torsion_631Gdp.parm +#export TORDPAR=$DD/torsion_double_631Gdp.parm +#export ELEPAR=$DD/electr_631Gdp.parm +#export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k +#export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3 +#export SCPPAR=$DD/scp.parm +#export SCCORPAR=$DD/rotcorr_AM1.parm +#export PATTERN=$DD/patterns.cart +#----------------------------------------------------------------------------- +#$UNRES_BIN +#") + +#========================================= +# ala10.inp +#========================================= + +#file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp +#"ala10 unblocked +#SEED=-1111333 MD ONE_LETTER rescale_mode=2 PDBOUT +#nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0 & +#reset_moment=1000 reset_vel=1000 MDPDB +#WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873 & +#WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000 & +#WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000 & +#WVDWPP=0.11371 WHPB=1.00000 & +#CUTOFF=7.00000 WCORR4=0.00000 +#12 +#XAAAAAAAAAAX +# 0 +# 0 +# 90.0000 90.0000 90.0000 90.000 90.000 90.000 90.000 90.000 +# 90.0000 90.0000 +# 180.0000 180.0000 180.0000 180.000 180.000 180.000 180.000 180.000 +# 180.0000 +# 110.0000 110.0000 110.0000 100.000 110.000 100.000 110.000 110.000 +# 110.0000 110.0000 +# -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000 +# -120.0000 -120.0000 +#") + + +# Add tests + +#if(NOT UNRES_WITH_MPI) + +# add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) + +#endif(NOT UNRES_WITH_MPI) diff --git a/source/cluster/wham/src/DIMENSIONS.COMPAR b/source/cluster/wham/src/DIMENSIONS.COMPAR index 08e2231..f5d44d1 100644 --- a/source/cluster/wham/src/DIMENSIONS.COMPAR +++ b/source/cluster/wham/src/DIMENSIONS.COMPAR @@ -2,6 +2,14 @@ * * Array dimensions for level-based conformation comparison program: * +<<<<<<< HEAD +======= +* Max. number of conformations in the data set. +* + integer maxconf + PARAMETER (MAXCONF=maxstr_proc) +* +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 * Max. number levels of comparison * integer maxlevel diff --git a/source/cluster/wham/src/diff b/source/cluster/wham/src/diff deleted file mode 100644 index 5c7ed52..0000000 --- a/source/cluster/wham/src/diff +++ /dev/null @@ -1,952 +0,0 @@ -4c4 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5a6 -> #ifndef ISNAN -6a8 -> #endif -83a86,89 -> C -> C 21/5/07 Calculate local sicdechain correlation energy -> C -> call eback_sc_corr(esccor) -99,125d104 -< C call multibody(ecorr) -< C -< C Sum the energies -< C -< C scale large componenets -< c#ifdef SCALE -< c ecorr5_scal=1000.0 -< c eel_loc_scal=100.0 -< c eello_turn3_scal=100.0 -< c eello_turn4_scal=100.0 -< c eturn6_scal=1000.0 -< c ecorr6_scal=1000.0 -< c#else -< c ecorr5_scal=1.0 -< c eel_loc_scal=1.0 -< c eello_turn3_scal=1.0 -< c eello_turn4_scal=1.0 -< c eturn6_scal=1.0 -< c ecorr6_scal=1.0 -< c#endif -< c -< c ecorr5=ecorr5/ecorr5_scal -< c eel_loc=eel_loc/eel_loc_scal -< c eello_turn3=eello_turn3/eello_turn3_scal -< c eello_turn4=eello_turn4/eello_turn4_scal -< c eturn6=eturn6/eturn6_scal -< c ecorr6=ecorr6/ecorr6_scal -133c112 -< & +wbond*estr ---- -> & +wbond*estr+wsccor*fact(1)*esccor -141c120 -< & +wbond*estr ---- -> & +wbond*estr+wsccor*fact(1)*esccor -172c151,152 -< energia(19)=edihcnstr ---- -> energia(19)=esccor -> energia(20)=edihcnstr -173a154,160 -> #ifdef ISNAN -> #ifdef AIX -> if (isnan(etot).ne.0) energia(0)=1.0d+99 -> #else -> if (isnan(etot)) energia(0)=1.0d+99 -> #endif -> #else -180a168 -> #endif -201c189,190 -< & wturn6*fact(5)*gcorr6_turn(j,i) ---- -> & wturn6*fact(5)*gcorr6_turn(j,i)+ -> & wsccor*fact(2)*gsccorc(j,i) -204c193,194 -< & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i) ---- -> & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+ -> & wsccor*fact(2)*gsccorx(j,i) -218c208,209 -< & wturn6*fact(5)*gcorr6_turn(j,i) ---- -> & wturn6*fact(5)*gcorr6_turn(j,i)+ -> & wsccor*fact(2)*gsccorc(j,i) -221c212,213 -< & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i) ---- -> & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+ -> & wsccor*fact(1)*gsccorx(j,i) -224,225d215 -< cd print '(i3,9(1pe12.4))',i,(gvdwc(k,i),k=1,3),(gelc(k,i),k=1,3), -< cd & (gradc(k,i),k=1,3) -230d219 -< cd write (iout,*) i,g_corr5_loc(i) -237a227 -> & +wsccor*fact(1)*gsccor_loc(i) -240,244d229 -< cd print*,evdw,wsc,evdw2,wscp,ees+evdw1,welec,ebe,wang, -< cd & escloc,wscloc,etors,wtor,ehpb,wstrain,nss,ebr,etot -< cd call enerprint(energia(0),fact) -< cd call intout -< cd stop -251c236 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -279c264,265 -< edihcnstr=energia(19) ---- -> esccor=energia(19) -> edihcnstr=energia(20) -289c275 -< & edihcnstr,ebr*nss,etot ---- -> & esccor,wsccor*fact(1),edihcnstr,ebr*nss,etot -308a295 -> & 'ESCCOR=',1pE16.6,' WEIGHT=',1pD16.6,' (backbone-rotamer corr)'/ -318c305,306 -< & eello_turn6,wturn6*fact(5),edihcnstr,ebr*nss,etot ---- -> & eello_turn6,wturn6*fact(5),esccor*fact(1),wsccor, -> & edihcnstr,ebr*nss,etot -336a325 -> & 'ESCCOR=',1pE16.6,' WEIGHT=',1pD16.6,' (backbone-rotamer corr)'/ -351c340 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -360a350 -> include 'COMMON.ENEPS' -368a359,363 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -398a394,395 -> eneps_temp(1,ij)=eneps_temp(1,ij)+e1/dabs(eps0ij) -> eneps_temp(2,ij)=eneps_temp(2,ij)+e2/eps0ij -512c509 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -519a517 -> include 'COMMON.ENEPS' -526a525,529 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -553a557,559 -> eneps_temp(1,ij)=eneps_temp(1,ij)+(e1+a_augm) -> & /dabs(eps(itypi,itypj)) -> eneps_temp(2,ij)=eneps_temp(2,ij)+e2/eps(itypi,itypj) -601c607 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -609a616 -> include 'COMMON.ENEPS' -616a624,628 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -688a701,703 -> eneps_temp(1,ij)=eneps_temp(1,ij)+e1*aux -> & /dabs(eps(itypi,itypj)) -> eneps_temp(2,ij)=eneps_temp(2,ij)+e2*aux/eps(itypi,itypj) -728c743 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -736a752 -> include 'COMMON.ENEPS' -742a759,763 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -819a841,843 -> eneps_temp(1,ij)=eneps_temp(1,ij)+aux*e1 -> & /dabs(eps(itypi,itypj)) -> eneps_temp(2,ij)=eneps_temp(2,ij)+aux*e2/eps(itypi,itypj) -859c883 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -867a892 -> include 'COMMON.ENEPS' -873a899,903 -> do i=1,210 -> do j=1,2 -> eneps_temp(j,i)=0.0d0 -> enddo -> enddo -952a983,987 -> eneps_temp(1,ij)=eneps_temp(1,ij)+aux*(e1+e_augm) -> & /dabs(eps(itypi,itypj)) -> eneps_temp(2,ij)=eneps_temp(2,ij)+aux*e2/eps(itypi,itypj) -> c eneps_temp(ij)=eneps_temp(ij) -> c & +(evdwij+e_augm)/eps(itypi,itypj) -1035c1070 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1073c1108 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1232c1267 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1415c1450 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1500c1535 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -1683c1718 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2432c2467 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2699c2734 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2810c2845 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2887c2922 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2968c3003 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -2978a3014 -> double precision u(3),ud(3) -2988,2989c3024,3027 -< estr=AKP*estr -< c write (iout,*) "estr",estr ---- -> estr=0.5d0*AKP*estr -> c -> c 09/18/07 AL: multimodal bond potential based on AM1 CA-SC PMF's included -> c -2993,2999c3031,3070 -< diff=vbld(i+nres)-vbldsc0(iti) -< c write (iout,*) i,iti,vbld(i+nres),vbldsc0(iti),diff, -< c & AKSC(iti)*diff*diff -< estr=estr+AKSC(iti)*diff*diff -< do j=1,3 -< gradbx(j,i)=AKSC(iti)*diff*dc(j,i+nres)/vbld(i+nres) -< enddo ---- -> nbi=nbondterm(iti) -> if (nbi.eq.1) then -> diff=vbld(i+nres)-vbldsc0(1,iti) -> c write (iout,*) i,iti,vbld(i+nres),vbldsc0(1,iti),diff, -> c & AKSC(1,iti),AKSC(1,iti)*diff*diff -> estr=estr+0.5d0*AKSC(1,iti)*diff*diff -> do j=1,3 -> gradbx(j,i)=AKSC(1,iti)*diff*dc(j,i+nres)/vbld(i+nres) -> enddo -> else -> do j=1,nbi -> diff=vbld(i+nres)-vbldsc0(j,iti) -> ud(j)=aksc(j,iti)*diff -> u(j)=abond0(j,iti)+0.5d0*ud(j)*diff -> enddo -> uprod=u(1) -> do j=2,nbi -> uprod=uprod*u(j) -> enddo -> usum=0.0d0 -> usumsqder=0.0d0 -> do j=1,nbi -> uprod1=1.0d0 -> uprod2=1.0d0 -> do k=1,nbi -> if (k.ne.j) then -> uprod1=uprod1*u(k) -> uprod2=uprod2*u(k)*u(k) -> endif -> enddo -> usum=usum+uprod1 -> usumsqder=usumsqder+ud(j)*uprod2 -> enddo -> c write (iout,*) i,iti,vbld(i+nres),(vbldsc0(j,iti), -> c & AKSC(j,iti),abond0(j,iti),u(j),j=1,nbi) -> estr=estr+uprod/usum -> do j=1,3 -> gradbx(j,i)=usumsqder/(usum*usum)*dc(j,i+nres)/vbld(i+nres) -> enddo -> endif -3002,3003d3072 -< c write (iout,*) "estr",estr -< estr=0.5d0*estr -3005a3075 -> #ifdef CRYST_THETA -3014c3084 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3244a3315,3509 -> #else -> C-------------------------------------------------------------------------- -> subroutine ebend(etheta) -> C -> C Evaluate the virtual-bond-angle energy given the virtual-bond dihedral -> C angles gamma and its derivatives in consecutive thetas and gammas. -> C ab initio-derived potentials from -> c Kozlowska et al., J. Phys.: Condens. Matter 19 (2007) 285203 -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'DIMENSIONS.ZSCOPT' -> include 'COMMON.LOCAL' -> include 'COMMON.GEO' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.VAR' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> double precision coskt(mmaxtheterm),sinkt(mmaxtheterm), -> & cosph1(maxsingle),sinph1(maxsingle),cosph2(maxsingle), -> & sinph2(maxsingle),cosph1ph2(maxdouble,maxdouble), -> & sinph1ph2(maxdouble,maxdouble) -> logical lprn /.false./, lprn1 /.false./ -> etheta=0.0D0 -> c write (iout,*) "ithetyp",(ithetyp(i),i=1,ntyp1) -> do i=ithet_start,ithet_end -> dethetai=0.0d0 -> dephii=0.0d0 -> dephii1=0.0d0 -> theti2=0.5d0*theta(i) -> ityp2=ithetyp(itype(i-1)) -> do k=1,nntheterm -> coskt(k)=dcos(k*theti2) -> sinkt(k)=dsin(k*theti2) -> enddo -> if (i.gt.3) then -> #ifdef OSF -> phii=phi(i) -> if (phii.ne.phii) phii=150.0 -> #else -> phii=phi(i) -> #endif -> ityp1=ithetyp(itype(i-2)) -> do k=1,nsingle -> cosph1(k)=dcos(k*phii) -> sinph1(k)=dsin(k*phii) -> enddo -> else -> phii=0.0d0 -> ityp1=nthetyp+1 -> do k=1,nsingle -> cosph1(k)=0.0d0 -> sinph1(k)=0.0d0 -> enddo -> endif -> if (i.lt.nres) then -> #ifdef OSF -> phii1=phi(i+1) -> if (phii1.ne.phii1) phii1=150.0 -> phii1=pinorm(phii1) -> #else -> phii1=phi(i+1) -> #endif -> ityp3=ithetyp(itype(i)) -> do k=1,nsingle -> cosph2(k)=dcos(k*phii1) -> sinph2(k)=dsin(k*phii1) -> enddo -> else -> phii1=0.0d0 -> ityp3=nthetyp+1 -> do k=1,nsingle -> cosph2(k)=0.0d0 -> sinph2(k)=0.0d0 -> enddo -> endif -> c write (iout,*) "i",i," ityp1",itype(i-2),ityp1, -> c & " ityp2",itype(i-1),ityp2," ityp3",itype(i),ityp3 -> c call flush(iout) -> ethetai=aa0thet(ityp1,ityp2,ityp3) -> do k=1,ndouble -> do l=1,k-1 -> ccl=cosph1(l)*cosph2(k-l) -> ssl=sinph1(l)*sinph2(k-l) -> scl=sinph1(l)*cosph2(k-l) -> csl=cosph1(l)*sinph2(k-l) -> cosph1ph2(l,k)=ccl-ssl -> cosph1ph2(k,l)=ccl+ssl -> sinph1ph2(l,k)=scl+csl -> sinph1ph2(k,l)=scl-csl -> enddo -> enddo -> if (lprn) then -> write (iout,*) "i",i," ityp1",ityp1," ityp2",ityp2, -> & " ityp3",ityp3," theti2",theti2," phii",phii," phii1",phii1 -> write (iout,*) "coskt and sinkt" -> do k=1,nntheterm -> write (iout,*) k,coskt(k),sinkt(k) -> enddo -> endif -> do k=1,ntheterm -> ethetai=ethetai+aathet(k,ityp1,ityp2,ityp3)*sinkt(k) -> dethetai=dethetai+0.5d0*k*aathet(k,ityp1,ityp2,ityp3) -> & *coskt(k) -> if (lprn) -> & write (iout,*) "k",k," aathet",aathet(k,ityp1,ityp2,ityp3), -> & " ethetai",ethetai -> enddo -> if (lprn) then -> write (iout,*) "cosph and sinph" -> do k=1,nsingle -> write (iout,*) k,cosph1(k),sinph1(k),cosph2(k),sinph2(k) -> enddo -> write (iout,*) "cosph1ph2 and sinph2ph2" -> do k=2,ndouble -> do l=1,k-1 -> write (iout,*) l,k,cosph1ph2(l,k),cosph1ph2(k,l), -> & sinph1ph2(l,k),sinph1ph2(k,l) -> enddo -> enddo -> write(iout,*) "ethetai",ethetai -> endif -> do m=1,ntheterm2 -> do k=1,nsingle -> aux=bbthet(k,m,ityp1,ityp2,ityp3)*cosph1(k) -> & +ccthet(k,m,ityp1,ityp2,ityp3)*sinph1(k) -> & +ddthet(k,m,ityp1,ityp2,ityp3)*cosph2(k) -> & +eethet(k,m,ityp1,ityp2,ityp3)*sinph2(k) -> ethetai=ethetai+sinkt(m)*aux -> dethetai=dethetai+0.5d0*m*aux*coskt(m) -> dephii=dephii+k*sinkt(m)*( -> & ccthet(k,m,ityp1,ityp2,ityp3)*cosph1(k)- -> & bbthet(k,m,ityp1,ityp2,ityp3)*sinph1(k)) -> dephii1=dephii1+k*sinkt(m)*( -> & eethet(k,m,ityp1,ityp2,ityp3)*cosph2(k)- -> & ddthet(k,m,ityp1,ityp2,ityp3)*sinph2(k)) -> if (lprn) -> & write (iout,*) "m",m," k",k," bbthet", -> & bbthet(k,m,ityp1,ityp2,ityp3)," ccthet", -> & ccthet(k,m,ityp1,ityp2,ityp3)," ddthet", -> & ddthet(k,m,ityp1,ityp2,ityp3)," eethet", -> & eethet(k,m,ityp1,ityp2,ityp3)," ethetai",ethetai -> enddo -> enddo -> if (lprn) -> & write(iout,*) "ethetai",ethetai -> do m=1,ntheterm3 -> do k=2,ndouble -> do l=1,k-1 -> aux=ffthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)+ -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)+ -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l) -> ethetai=ethetai+sinkt(m)*aux -> dethetai=dethetai+0.5d0*m*coskt(m)*aux -> dephii=dephii+l*sinkt(m)*( -> & -ffthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)- -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)+ -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)) -> dephii1=dephii1+(k-l)*sinkt(m)*( -> & -ffthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)+ -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)- -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)) -> if (lprn) then -> write (iout,*) "m",m," k",k," l",l," ffthet", -> & ffthet(l,k,m,ityp1,ityp2,ityp3), -> & ffthet(k,l,m,ityp1,ityp2,ityp3)," ggthet", -> & ggthet(l,k,m,ityp1,ityp2,ityp3), -> & ggthet(k,l,m,ityp1,ityp2,ityp3)," ethetai",ethetai -> write (iout,*) cosph1ph2(l,k)*sinkt(m), -> & cosph1ph2(k,l)*sinkt(m), -> & sinph1ph2(l,k)*sinkt(m),sinph1ph2(k,l)*sinkt(m) -> endif -> enddo -> enddo -> enddo -> 10 continue -> if (lprn1) write (iout,'(i2,3f8.1,9h ethetai ,f10.5)') -> & i,theta(i)*rad2deg,phii*rad2deg, -> & phii1*rad2deg,ethetai -> etheta=etheta+ethetai -> if (i.gt.3) gloc(i-3,icg)=gloc(i-3,icg)+wang*dephii -> if (i.lt.nres) gloc(i-2,icg)=gloc(i-2,icg)+wang*dephii1 -> gloc(nphi+i-2,icg)=wang*dethetai -> enddo -> return -> end -> #endif -> #ifdef CRYST_SC -3252c3517 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3525a3791,4113 -> #else -> c---------------------------------------------------------------------------------- -> subroutine esc(escloc) -> C Calculate the local energy of a side chain and its derivatives in the -> C corresponding virtual-bond valence angles THETA and the spherical angles -> C ALPHA and OMEGA derived from AM1 all-atom calculations. -> C added by Urszula Kozlowska. 07/11/2007 -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'DIMENSIONS.ZSCOPT' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.VAR' -> include 'COMMON.SCROT' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> include 'COMMON.VECTORS' -> double precision x_prime(3),y_prime(3),z_prime(3) -> & , sumene,dsc_i,dp2_i,x(65), -> & xx,yy,zz,sumene1,sumene2,sumene3,sumene4,s1,s1_6,s2,s2_6, -> & de_dxx,de_dyy,de_dzz,de_dt -> double precision s1_t,s1_6_t,s2_t,s2_6_t -> double precision -> & dXX_Ci1(3),dYY_Ci1(3),dZZ_Ci1(3),dXX_Ci(3), -> & dYY_Ci(3),dZZ_Ci(3),dXX_XYZ(3),dYY_XYZ(3),dZZ_XYZ(3), -> & dt_dCi(3),dt_dCi1(3) -> common /sccalc/ time11,time12,time112,theti,it,nlobit -> delta=0.02d0*pi -> escloc=0.0D0 -> do i=loc_start,loc_end -> costtab(i+1) =dcos(theta(i+1)) -> sinttab(i+1) =dsqrt(1-costtab(i+1)*costtab(i+1)) -> cost2tab(i+1)=dsqrt(0.5d0*(1.0d0+costtab(i+1))) -> sint2tab(i+1)=dsqrt(0.5d0*(1.0d0-costtab(i+1))) -> cosfac2=0.5d0/(1.0d0+costtab(i+1)) -> cosfac=dsqrt(cosfac2) -> sinfac2=0.5d0/(1.0d0-costtab(i+1)) -> sinfac=dsqrt(sinfac2) -> it=itype(i) -> if (it.eq.10) goto 1 -> c -> C Compute the axes of tghe local cartesian coordinates system; store in -> c x_prime, y_prime and z_prime -> c -> do j=1,3 -> x_prime(j) = 0.00 -> y_prime(j) = 0.00 -> z_prime(j) = 0.00 -> enddo -> C write(2,*) "dc_norm", dc_norm(1,i+nres),dc_norm(2,i+nres), -> C & dc_norm(3,i+nres) -> do j = 1,3 -> x_prime(j) = (dc_norm(j,i) - dc_norm(j,i-1))*cosfac -> y_prime(j) = (dc_norm(j,i) + dc_norm(j,i-1))*sinfac -> enddo -> do j = 1,3 -> z_prime(j) = -uz(j,i-1) -> enddo -> c write (2,*) "i",i -> c write (2,*) "x_prime",(x_prime(j),j=1,3) -> c write (2,*) "y_prime",(y_prime(j),j=1,3) -> c write (2,*) "z_prime",(z_prime(j),j=1,3) -> c write (2,*) "xx",scalar(x_prime(1),x_prime(1)), -> c & " xy",scalar(x_prime(1),y_prime(1)), -> c & " xz",scalar(x_prime(1),z_prime(1)), -> c & " yy",scalar(y_prime(1),y_prime(1)), -> c & " yz",scalar(y_prime(1),z_prime(1)), -> c & " zz",scalar(z_prime(1),z_prime(1)) -> c -> C Transform the unit vector of the ith side-chain centroid, dC_norm(*,i), -> C to local coordinate system. Store in xx, yy, zz. -> c -> xx=0.0d0 -> yy=0.0d0 -> zz=0.0d0 -> do j = 1,3 -> xx = xx + x_prime(j)*dc_norm(j,i+nres) -> yy = yy + y_prime(j)*dc_norm(j,i+nres) -> zz = zz + z_prime(j)*dc_norm(j,i+nres) -> enddo -> -> xxtab(i)=xx -> yytab(i)=yy -> zztab(i)=zz -> C -> C Compute the energy of the ith side cbain -> C -> c write (2,*) "xx",xx," yy",yy," zz",zz -> it=itype(i) -> do j = 1,65 -> x(j) = sc_parmin(j,it) -> enddo -> #ifdef CHECK_COORD -> Cc diagnostics - remove later -> xx1 = dcos(alph(2)) -> yy1 = dsin(alph(2))*dcos(omeg(2)) -> zz1 = -dsin(alph(2))*dsin(omeg(2)) -> write(2,'(3f8.1,3f9.3,1x,3f9.3)') -> & alph(2)*rad2deg,omeg(2)*rad2deg,theta(3)*rad2deg,xx,yy,zz, -> & xx1,yy1,zz1 -> C," --- ", xx_w,yy_w,zz_w -> c end diagnostics -> #endif -> sumene1= x(1)+ x(2)*xx+ x(3)*yy+ x(4)*zz+ x(5)*xx**2 -> & + x(6)*yy**2+ x(7)*zz**2+ x(8)*xx*zz+ x(9)*xx*yy -> & + x(10)*yy*zz -> sumene2= x(11) + x(12)*xx + x(13)*yy + x(14)*zz + x(15)*xx**2 -> & + x(16)*yy**2 + x(17)*zz**2 + x(18)*xx*zz + x(19)*xx*yy -> & + x(20)*yy*zz -> sumene3= x(21) +x(22)*xx +x(23)*yy +x(24)*zz +x(25)*xx**2 -> & +x(26)*yy**2 +x(27)*zz**2 +x(28)*xx*zz +x(29)*xx*yy -> & +x(30)*yy*zz +x(31)*xx**3 +x(32)*yy**3 +x(33)*zz**3 -> & +x(34)*(xx**2)*yy +x(35)*(xx**2)*zz +x(36)*(yy**2)*xx -> & +x(37)*(yy**2)*zz +x(38)*(zz**2)*xx +x(39)*(zz**2)*yy -> & +x(40)*xx*yy*zz -> sumene4= x(41) +x(42)*xx +x(43)*yy +x(44)*zz +x(45)*xx**2 -> & +x(46)*yy**2 +x(47)*zz**2 +x(48)*xx*zz +x(49)*xx*yy -> & +x(50)*yy*zz +x(51)*xx**3 +x(52)*yy**3 +x(53)*zz**3 -> & +x(54)*(xx**2)*yy +x(55)*(xx**2)*zz +x(56)*(yy**2)*xx -> & +x(57)*(yy**2)*zz +x(58)*(zz**2)*xx +x(59)*(zz**2)*yy -> & +x(60)*xx*yy*zz -> dsc_i = 0.743d0+x(61) -> dp2_i = 1.9d0+x(62) -> dscp1=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2tab(i+1)+yy*sint2tab(i+1))) -> dscp2=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2tab(i+1)-yy*sint2tab(i+1))) -> s1=(1+x(63))/(0.1d0 + dscp1) -> s1_6=(1+x(64))/(0.1d0 + dscp1**6) -> s2=(1+x(65))/(0.1d0 + dscp2) -> s2_6=(1+x(65))/(0.1d0 + dscp2**6) -> sumene = ( sumene3*sint2tab(i+1) + sumene1)*(s1+s1_6) -> & + (sumene4*cost2tab(i+1) +sumene2)*(s2+s2_6) -> c write(2,'(i2," sumene",7f9.3)') i,sumene1,sumene2,sumene3, -> c & sumene4, -> c & dscp1,dscp2,sumene -> c sumene = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> escloc = escloc + sumene -> c write (2,*) "escloc",escloc -> if (.not. calc_grad) goto 1 -> #ifdef DEBUG -> C -> C This section to check the numerical derivatives of the energy of ith side -> C chain in xx, yy, zz, and theta. Use the -DDEBUG compiler option or insert -> C #define DEBUG in the code to turn it on. -> C -> write (2,*) "sumene =",sumene -> aincr=1.0d-7 -> xxsave=xx -> xx=xx+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dxx_num=(sumenep-sumene)/aincr -> xx=xxsave -> write (2,*) "xx+ sumene from enesc=",sumenep -> yysave=yy -> yy=yy+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dyy_num=(sumenep-sumene)/aincr -> yy=yysave -> write (2,*) "yy+ sumene from enesc=",sumenep -> zzsave=zz -> zz=zz+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dzz_num=(sumenep-sumene)/aincr -> zz=zzsave -> write (2,*) "zz+ sumene from enesc=",sumenep -> costsave=cost2tab(i+1) -> sintsave=sint2tab(i+1) -> cost2tab(i+1)=dcos(0.5d0*(theta(i+1)+aincr)) -> sint2tab(i+1)=dsin(0.5d0*(theta(i+1)+aincr)) -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dt_num=(sumenep-sumene)/aincr -> write (2,*) " t+ sumene from enesc=",sumenep -> cost2tab(i+1)=costsave -> sint2tab(i+1)=sintsave -> C End of diagnostics section. -> #endif -> C -> C Compute the gradient of esc -> C -> pom_s1=(1.0d0+x(63))/(0.1d0 + dscp1)**2 -> pom_s16=6*(1.0d0+x(64))/(0.1d0 + dscp1**6)**2 -> pom_s2=(1.0d0+x(65))/(0.1d0 + dscp2)**2 -> pom_s26=6*(1.0d0+x(65))/(0.1d0 + dscp2**6)**2 -> pom_dx=dsc_i*dp2_i*cost2tab(i+1) -> pom_dy=dsc_i*dp2_i*sint2tab(i+1) -> pom_dt1=-0.5d0*dsc_i*dp2_i*(xx*sint2tab(i+1)-yy*cost2tab(i+1)) -> pom_dt2=-0.5d0*dsc_i*dp2_i*(xx*sint2tab(i+1)+yy*cost2tab(i+1)) -> pom1=(sumene3*sint2tab(i+1)+sumene1) -> & *(pom_s1/dscp1+pom_s16*dscp1**4) -> pom2=(sumene4*cost2tab(i+1)+sumene2) -> & *(pom_s2/dscp2+pom_s26*dscp2**4) -> sumene1x=x(2)+2*x(5)*xx+x(8)*zz+ x(9)*yy -> sumene3x=x(22)+2*x(25)*xx+x(28)*zz+x(29)*yy+3*x(31)*xx**2 -> & +2*x(34)*xx*yy +2*x(35)*xx*zz +x(36)*(yy**2) +x(38)*(zz**2) -> & +x(40)*yy*zz -> sumene2x=x(12)+2*x(15)*xx+x(18)*zz+ x(19)*yy -> sumene4x=x(42)+2*x(45)*xx +x(48)*zz +x(49)*yy +3*x(51)*xx**2 -> & +2*x(54)*xx*yy+2*x(55)*xx*zz+x(56)*(yy**2)+x(58)*(zz**2) -> & +x(60)*yy*zz -> de_dxx =(sumene1x+sumene3x*sint2tab(i+1))*(s1+s1_6) -> & +(sumene2x+sumene4x*cost2tab(i+1))*(s2+s2_6) -> & +(pom1+pom2)*pom_dx -> #ifdef DEBUG -> write(2,*), "de_dxx = ", de_dxx,de_dxx_num -> #endif -> C -> sumene1y=x(3) + 2*x(6)*yy + x(9)*xx + x(10)*zz -> sumene3y=x(23) +2*x(26)*yy +x(29)*xx +x(30)*zz +3*x(32)*yy**2 -> & +x(34)*(xx**2) +2*x(36)*yy*xx +2*x(37)*yy*zz +x(39)*(zz**2) -> & +x(40)*xx*zz -> sumene2y=x(13) + 2*x(16)*yy + x(19)*xx + x(20)*zz -> sumene4y=x(43)+2*x(46)*yy+x(49)*xx +x(50)*zz -> & +3*x(52)*yy**2+x(54)*xx**2+2*x(56)*yy*xx +2*x(57)*yy*zz -> & +x(59)*zz**2 +x(60)*xx*zz -> de_dyy =(sumene1y+sumene3y*sint2tab(i+1))*(s1+s1_6) -> & +(sumene2y+sumene4y*cost2tab(i+1))*(s2+s2_6) -> & +(pom1-pom2)*pom_dy -> #ifdef DEBUG -> write(2,*), "de_dyy = ", de_dyy,de_dyy_num -> #endif -> C -> de_dzz =(x(24) +2*x(27)*zz +x(28)*xx +x(30)*yy -> & +3*x(33)*zz**2 +x(35)*xx**2 +x(37)*yy**2 +2*x(38)*zz*xx -> & +2*x(39)*zz*yy +x(40)*xx*yy)*sint2tab(i+1)*(s1+s1_6) -> & +(x(4) + 2*x(7)*zz+ x(8)*xx + x(10)*yy)*(s1+s1_6) -> & +(x(44)+2*x(47)*zz +x(48)*xx +x(50)*yy +3*x(53)*zz**2 -> & +x(55)*xx**2 +x(57)*(yy**2)+2*x(58)*zz*xx +2*x(59)*zz*yy -> & +x(60)*xx*yy)*cost2tab(i+1)*(s2+s2_6) -> & + ( x(14) + 2*x(17)*zz+ x(18)*xx + x(20)*yy)*(s2+s2_6) -> #ifdef DEBUG -> write(2,*), "de_dzz = ", de_dzz,de_dzz_num -> #endif -> C -> de_dt = 0.5d0*sumene3*cost2tab(i+1)*(s1+s1_6) -> & -0.5d0*sumene4*sint2tab(i+1)*(s2+s2_6) -> & +pom1*pom_dt1+pom2*pom_dt2 -> #ifdef DEBUG -> write(2,*), "de_dt = ", de_dt,de_dt_num -> #endif -> c -> C -> cossc=scalar(dc_norm(1,i),dc_norm(1,i+nres)) -> cossc1=scalar(dc_norm(1,i-1),dc_norm(1,i+nres)) -> cosfac2xx=cosfac2*xx -> sinfac2yy=sinfac2*yy -> do k = 1,3 -> dt_dCi(k) = -(dc_norm(k,i-1)+costtab(i+1)*dc_norm(k,i))* -> & vbld_inv(i+1) -> dt_dCi1(k)= -(dc_norm(k,i)+costtab(i+1)*dc_norm(k,i-1))* -> & vbld_inv(i) -> pom=(dC_norm(k,i+nres)-cossc*dC_norm(k,i))*vbld_inv(i+1) -> pom1=(dC_norm(k,i+nres)-cossc1*dC_norm(k,i-1))*vbld_inv(i) -> c write (iout,*) "i",i," k",k," pom",pom," pom1",pom1, -> c & " dt_dCi",dt_dCi(k)," dt_dCi1",dt_dCi1(k) -> c write (iout,*) "dC_norm",(dC_norm(j,i),j=1,3), -> c & (dC_norm(j,i-1),j=1,3)," vbld_inv",vbld_inv(i+1),vbld_inv(i) -> dXX_Ci(k)=pom*cosfac-dt_dCi(k)*cosfac2xx -> dXX_Ci1(k)=-pom1*cosfac-dt_dCi1(k)*cosfac2xx -> dYY_Ci(k)=pom*sinfac+dt_dCi(k)*sinfac2yy -> dYY_Ci1(k)=pom1*sinfac+dt_dCi1(k)*sinfac2yy -> dZZ_Ci1(k)=0.0d0 -> dZZ_Ci(k)=0.0d0 -> do j=1,3 -> dZZ_Ci(k)=dZZ_Ci(k)-uzgrad(j,k,2,i-1)*dC_norm(j,i+nres) -> dZZ_Ci1(k)=dZZ_Ci1(k)-uzgrad(j,k,1,i-1)*dC_norm(j,i+nres) -> enddo -> -> dXX_XYZ(k)=vbld_inv(i+nres)*(x_prime(k)-xx*dC_norm(k,i+nres)) -> dYY_XYZ(k)=vbld_inv(i+nres)*(y_prime(k)-yy*dC_norm(k,i+nres)) -> dZZ_XYZ(k)=vbld_inv(i+nres)*(z_prime(k)-zz*dC_norm(k,i+nres)) -> c -> dt_dCi(k) = -dt_dCi(k)/sinttab(i+1) -> dt_dCi1(k)= -dt_dCi1(k)/sinttab(i+1) -> enddo -> -> do k=1,3 -> dXX_Ctab(k,i)=dXX_Ci(k) -> dXX_C1tab(k,i)=dXX_Ci1(k) -> dYY_Ctab(k,i)=dYY_Ci(k) -> dYY_C1tab(k,i)=dYY_Ci1(k) -> dZZ_Ctab(k,i)=dZZ_Ci(k) -> dZZ_C1tab(k,i)=dZZ_Ci1(k) -> dXX_XYZtab(k,i)=dXX_XYZ(k) -> dYY_XYZtab(k,i)=dYY_XYZ(k) -> dZZ_XYZtab(k,i)=dZZ_XYZ(k) -> enddo -> -> do k = 1,3 -> c write (iout,*) "k",k," dxx_ci1",dxx_ci1(k)," dyy_ci1", -> c & dyy_ci1(k)," dzz_ci1",dzz_ci1(k) -> c write (iout,*) "k",k," dxx_ci",dxx_ci(k)," dyy_ci", -> c & dyy_ci(k)," dzz_ci",dzz_ci(k) -> c write (iout,*) "k",k," dt_dci",dt_dci(k)," dt_dci", -> c & dt_dci(k) -> c write (iout,*) "k",k," dxx_XYZ",dxx_XYZ(k)," dyy_XYZ", -> c & dyy_XYZ(k)," dzz_XYZ",dzz_XYZ(k) -> gscloc(k,i-1)=gscloc(k,i-1)+de_dxx*dxx_ci1(k) -> & +de_dyy*dyy_ci1(k)+de_dzz*dzz_ci1(k)+de_dt*dt_dCi1(k) -> gscloc(k,i)=gscloc(k,i)+de_dxx*dxx_Ci(k) -> & +de_dyy*dyy_Ci(k)+de_dzz*dzz_Ci(k)+de_dt*dt_dCi(k) -> gsclocx(k,i)= de_dxx*dxx_XYZ(k) -> & +de_dyy*dyy_XYZ(k)+de_dzz*dzz_XYZ(k) -> enddo -> c write(iout,*) "ENERGY GRAD = ", (gscloc(k,i-1),k=1,3), -> c & (gscloc(k,i),k=1,3),(gsclocx(k,i),k=1,3) -> -> C to check gradient call subroutine check_grad -> -> 1 continue -> enddo -> return -> end -> #endif -3563c4151 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3611c4199 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3694c4282 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3780c4368 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -3847a4436,4486 -> subroutine eback_sc_corr(esccor) -> c 7/21/2007 Correlations between the backbone-local and side-chain-local -> c conformational states; temporarily implemented as differences -> c between UNRES torsional potentials (dependent on three types of -> c residues) and the torsional potentials dependent on all 20 types -> c of residues computed from AM1 energy surfaces of terminally-blocked -> c amino-acid residues. -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'DIMENSIONS.ZSCOPT' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.TORSION' -> include 'COMMON.SCCOR' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.NAMES' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> logical lprn -> C Set lprn=.true. for debugging -> lprn=.false. -> c lprn=.true. -> c write (iout,*) "EBACK_SC_COR",iphi_start,iphi_end,nterm_sccor -> esccor=0.0D0 -> do i=iphi_start,iphi_end -> esccor_ii=0.0D0 -> itori=itype(i-2) -> itori1=itype(i-1) -> phii=phi(i) -> gloci=0.0D0 -> do j=1,nterm_sccor -> v1ij=v1sccor(j,itori,itori1) -> v2ij=v2sccor(j,itori,itori1) -> cosphi=dcos(j*phii) -> sinphi=dsin(j*phii) -> esccor=esccor+v1ij*cosphi+v2ij*sinphi -> gloci=gloci+j*(v2ij*cosphi-v1ij*sinphi) -> enddo -> if (lprn) -> & write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)') -> & restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1, -> & (v1sccor(j,itori,itori1),j=1,6),(v2sccor(j,itori,itori1),j=1,6) -> gsccor_loc(i-3)=gloci -> enddo -> return -> end -> c------------------------------------------------------------------------------ -4003c4642 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -4189c4828 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -4498c5137 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -4565c5204 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -4942c5581 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5059c5698 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5460c6099 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5597c6236 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5703c6342 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -5890c6529 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -6006c6645 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' -6252c6891 -< include 'sizesclu.dat' ---- -> include 'DIMENSIONS.ZSCOPT' diff --git a/source/cluster/wham/src/energy_p_new.F b/source/cluster/wham/src/energy_p_new.F index 8e98d39..bf9c563 100644 --- a/source/cluster/wham/src/energy_p_new.F +++ b/source/cluster/wham/src/energy_p_new.F @@ -336,7 +336,7 @@ C implicit real*8 (a-h,o-z) include 'DIMENSIONS' include 'sizesclu.dat' - include "DIMENSIONS.COMPAR" +c include "DIMENSIONS.COMPAR" parameter (accur=1.0d-10) include 'COMMON.GEO' include 'COMMON.VAR' @@ -497,7 +497,7 @@ C implicit real*8 (a-h,o-z) include 'DIMENSIONS' include 'sizesclu.dat' - include "DIMENSIONS.COMPAR" +c include "DIMENSIONS.COMPAR" include 'COMMON.GEO' include 'COMMON.VAR' include 'COMMON.LOCAL' @@ -586,7 +586,7 @@ C implicit real*8 (a-h,o-z) include 'DIMENSIONS' include 'sizesclu.dat' - include "DIMENSIONS.COMPAR" +c include "DIMENSIONS.COMPAR" include 'COMMON.GEO' include 'COMMON.VAR' include 'COMMON.LOCAL' @@ -713,7 +713,7 @@ C implicit real*8 (a-h,o-z) include 'DIMENSIONS' include 'sizesclu.dat' - include "DIMENSIONS.COMPAR" +c include "DIMENSIONS.COMPAR" include 'COMMON.GEO' include 'COMMON.VAR' include 'COMMON.LOCAL' @@ -844,7 +844,7 @@ C implicit real*8 (a-h,o-z) include 'DIMENSIONS' include 'sizesclu.dat' - include "DIMENSIONS.COMPAR" +c include "DIMENSIONS.COMPAR" include 'COMMON.GEO' include 'COMMON.VAR' include 'COMMON.LOCAL' @@ -6239,18 +6239,18 @@ c-------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ /j\ -C / \ / \ -C /| o | | o |\ -C \ j|/k\| / \ |/k\|l / -C \ / \ / \ / \ / -C o o o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ /j\ C +C / \ / \ C +C /| o | | o |\ C +C \ j|/k\| / \ |/k\|l / C +C \ / \ / \ / \ / C +C o o o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC itk=itortyp(itype(k)) s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i)) @@ -6346,18 +6346,18 @@ c---------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C \ /l\ /j\ / -C \ / \ / \ / -C o| o | | o |o -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C \ /l\ /j\ / C +C \ / \ / \ / C +C o| o | | o |o C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l C AL 7/4/01 s1 would occur in the sixth-order moment, @@ -6530,18 +6530,18 @@ c---------------------------------------------------------------------------- double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C j|/k\| / |/k\|l / -C / \ / / \ / -C / o / o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C j|/k\| / |/k\|l / C +C / \ / / \ / C +C / o / o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective @@ -6648,18 +6648,18 @@ c---------------------------------------------------------------------------- & auxvec1(2),auxmat1(2,2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o \ o \ -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o \ o \ C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective diff --git a/source/cluster/wham/src/hc.f b/source/cluster/wham/src/hc.f index 3788cdb..a1a089e 100644 --- a/source/cluster/wham/src/hc.f +++ b/source/cluster/wham/src/hc.f @@ -414,8 +414,10 @@ C-------------------------------------------------C CHARACTER*80 LINE INTEGER IORDER(LEV),HEIGHT(LEV) REAL CRITVAL(LEV) - INTEGER OUT(3*LEV,3*LEV) - INTEGER UP,ACROSS,BLANK +c INTEGER OUT(3*LEV,3*LEV) +c INTEGER UP,ACROSS,BLANK + CHARACTER*1 OUT(3*LEV,3*LEV) + CHARACTER*1 UP,ACROSS,BLANK DATA UP,ACROSS,BLANK/'|','-',' '/ C C diff --git a/source/cluster/wham/src/include_unres/COMMON.INTERACT b/source/cluster/wham/src/include_unres/COMMON.INTERACT index 23bfd42..2545afb 100644 --- a/source/cluster/wham/src/include_unres/COMMON.INTERACT +++ b/source/cluster/wham/src/include_unres/COMMON.INTERACT @@ -19,7 +19,15 @@ C 12/1/95 Array EPS included in the COMMON block. & r0d(ntyp,2),rpp(2,2),epp(2,2),elpp6(2,2),elpp3(2,2), & eps_scp(20,2),rscp(20,2),eps_orig(ntyp,ntyp) c 12/5/03 modified 09/18/03 Bond stretching parameters. +<<<<<<< HEAD double precision vbldp0,vbldsc0,akp,aksc,abond0 integer nbondterm common /stretch/ vbldp0,vbldsc0(maxbondterm,ntyp),akp, & aksc(maxbondterm,ntyp),abond0(maxbondterm,ntyp),nbondterm(ntyp) +======= + double precision vbldp0,vbldsc0,akp,aksc,abond0,distchainmax + integer nbondterm + common /stretch/ vbldp0,vbldsc0(maxbondterm,ntyp),akp, + & aksc(maxbondterm,ntyp),abond0(maxbondterm,ntyp), + & distchainmax,nbondterm(ntyp) +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 diff --git a/source/cluster/wham/src/include_unres/COMMON.SBRIDGE b/source/cluster/wham/src/include_unres/COMMON.SBRIDGE index 7bba010..2848b61 100644 --- a/source/cluster/wham/src/include_unres/COMMON.SBRIDGE +++ b/source/cluster/wham/src/include_unres/COMMON.SBRIDGE @@ -1,4 +1,5 @@ double precision ebr,d0cm,akcm,akth,akct,v1ss,v2ss,v3ss,dhpb, +<<<<<<< HEAD & dhpb1,forcon,weidis integer ns,nss,nfree,iss,ihpb,jhpb,nhpb,link_start,link_end, & ibecarb @@ -6,5 +7,13 @@ & nfree,iss(maxss) common /links/ dhpb(maxdim),dhpb1(maxdim),forcon(maxdim), & ihpb(maxdim),jhpb(maxdim),ibecarb(maxdim),nhpb +======= + & forcon,weidis + integer ns,nss,nfree,iss,ihpb,jhpb,nhpb,link_start,link_end + common /sbridge/ ebr,d0cm,akcm,akth,akct,v1ss,v2ss,v3ss,ns,nss, + & nfree,iss(maxss) + common /links/ dhpb(maxdim),forcon(maxdim),ihpb(maxdim), + & jhpb(maxdim),nhpb +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 common /restraints/ weidis common /links_split/ link_start,link_end diff --git a/source/cluster/wham/src/include_unres/COMMON.TORSION b/source/cluster/wham/src/include_unres/COMMON.TORSION index 8a12451..957dcff 100644 --- a/source/cluster/wham/src/include_unres/COMMON.TORSION +++ b/source/cluster/wham/src/include_unres/COMMON.TORSION @@ -4,8 +4,13 @@ C Torsional constants of the rotation about virtual-bond dihedral angles common/torsion/v0(maxtor,maxtor),v1(maxterm,maxtor,maxtor), & v2(maxterm,maxtor,maxtor),vlor1(maxlor,maxtor,maxtor), & vlor2(maxlor,maxtor,maxtor),vlor3(maxlor,maxtor,maxtor), +<<<<<<< HEAD & itortyp(ntyp),ntortyp,nterm(maxtor,maxtor),nlor(maxtor,maxtor) & ,nterm_old +======= + & itortyp(ntyp),ntortyp,nterm(maxtor,maxtor), + & nlor(maxtor,maxtor),nterm_old +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 C 6/23/01 - constants for double torsionals double precision v1c,v1s,v2c,v2s integer ntermd_1,ntermd_2 diff --git a/source/cluster/wham/src/map b/source/cluster/wham/src/map deleted file mode 100644 index 9c88872..0000000 --- a/source/cluster/wham/src/map +++ /dev/null @@ -1,4716 +0,0 @@ -pgf90 -C -g -c -I. -I../src_MD_T -I../src_MD -I/users/adam/MEY_MD/src -I/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/include -DLINUX -DPGI -DSPLITELE -DPROCOR -DMP -DMPI -C -g -c -I. -I../src_MD_T -I../src_MD -I/users/adam/MEY_MD/src -I/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/include initialize_p.F -pgf90 -C -g main_clust.o arcos.o cartprint.o chainbuild.o convert.o initialize_p.o matmult.o readrtns.o pinorm.o rescode.o intcor.o timing.o misc.o geomout.o readpdb.o read_coords.o parmread.o probabl.o fitsq.o hc.o track.o wrtclust.o srtclust.o noyes.o contact.o printmat.o int_from_cart1.o energy_p_new.o icant.o proc_proc.o work_partition.o setup_var.o -L/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib -lmpich -lpmpich -m -o /users/adam/ZSCOREZ/bin/unres_clustMD_MPI -Archive member included because of file (symbol) - -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) - work_partition.o (mpi_abort_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) - read_coords.o (mpi_allgather_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) - probabl.o (mpi_bcast_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) - main_clust.o (mpi_comm_rank_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) - main_clust.o (mpi_comm_size_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) - main_clust.o (mpi_dup_fn_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) - main_clust.o (mpi_finalize_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) - main_clust.o (mpi_gatherv_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - main_clust.o (mpi_init_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_copyfnf.o) - main_clust.o (mpi_null_copy_fn_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_del_fnf.o) - main_clust.o (mpi_null_delete_fn_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) - read_coords.o (mpi_recv_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) - read_coords.o (mpi_send_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) - main_clust.o (mpi_wtick_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) - main_clust.o (mpi_wtime_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) (mpir_iargc_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) (MPIR_F_TRUE) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfcmn.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (mpir_init_fcm_) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) (MPIR_Error) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) (MPI_Send) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) (MPI_Recv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (MPIR_Free_perm_type) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) (MPI_Abort) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) (MPI_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) (MPIR_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) (MPI_Finalize) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errorstring.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) (MPI_Error_string) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Init_dtes) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Errhandler_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtime.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) (MPI_Wtime) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) (MPI_Wtick) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) (MPIR_Err_setmsg) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(msgqdllloc.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Msg_queue_export) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_HBT_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_PointerPerm) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (MPIR_BsendRelease) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (MPI_Keyval_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (MPI_Attr_get) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Attr_create_tree) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) (MPI_Attr_put) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Group_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_CreateGroup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Comm_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) (MPI_Comm_rank) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPI_Comm_set_name) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) (MPI_Comm_size) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Comm_make_coll) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) (MPIR_Context_dealloc) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fn.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) (MPIR_dup_fn) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Barrier) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) (MPI_Bcast) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) (MPI_Gatherv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) (MPI_Allgather) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) (PMPI_Allreduce) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_MAXF) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (PMPI_Op_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Op_setup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) (MPIR_inter_collops) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) (MPIR_intra_collops) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (MPIR_intra_Scan) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Topology_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) (MPI_Status_c2f) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (p4_proc_info) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (bm_start) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (rm_start) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (net_setup_anon_listener) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (create_remote_processes) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (handle_connection_interrupt) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (socket_close_conn) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (listener) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) (start_slave) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (usc_init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPID_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) (MPID_SendDatatype) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) (MPID_RecvDatatype) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) (MPID_Msg_rep) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) (MPID_PackMessage) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) (MPID_Type_swap_copy) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) (MPID_DEBUG_FILE) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) (MPID_CH_InitMsgPass) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Init_hetero) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) (MPID_CH_Wtick) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_P4_Init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) (MPID_Dump_queues) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPID_ArgSqueeze) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPID_SBinit) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) (MPID_Process_group_init) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_PacketFlowSetup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_FinishCancelPackets) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Isend) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Irecv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) (MPI_Wait) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) (MPI_Test) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Cancel) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Waitall) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) (MPI_Sendrecv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) (PMPI_Testall) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Get_count) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) (MPI_Type_commit) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) (MPI_Type_contiguous) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) (MPI_Type_extent) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Type_free) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Type_indexed) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) (MPI_Type_lb) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Type_size) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) (MPI_Type_struct) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) (MPI_Pack_size) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) (MPI_Pack) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Unpack) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) (MPIR_Breakpoint) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) (MPI_Errhandler_set) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) (MPIR_Unpack) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyvalcreate.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) (MPI_Keyval_create) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) (PMPI_Reduce) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (p4_global) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (MD_initmem) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (p4_error) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (process_args) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) (alloc_local_bm) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (p4_dprintf) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) (p4_alloc_procgroup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) (p4_recv) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) (p4_moninit) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) (p4_broadcastx) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) (MPID_IrecvContig) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) (MPID_SendContig) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) (MPID_SendCancel) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Eagerb_setup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Rndvb_setup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Check_incoming) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) (MPID_CH_Short_setup) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) (MPID_DebugFlow) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) (PMPI_Type_hindexed) -/usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dmpipk.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) (MPIR_Pack_Hvector) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - main_clust.o (pgf90io_close) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) - readpdb.o (pghpfio_fmt_read) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - main_clust.o (pgf90io_encode_fmt) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) (__hpfio_errinit) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - readrtns.o (pgf90io_fmtr_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - main_clust.o (pgf90io_fmtw_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - /usr/pgi/linux86-64/6.0/lib/f90main.o (pgf90_exit) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - readrtns.o (pgf90io_ldr_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - main_clust.o (pgf90io_ldw_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - main_clust.o (pgf90io_open) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(pgifiodf.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) (pghpfio) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - misc.o (pgf90io_rewind) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - main_clust.o (pgf90io_unf_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) (__hpfio_alloc_fcb) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) (__hpf_atoxi64) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - parmread.o (pgf90_alloc) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - main_clust.o (pghpf_function_entry) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) (__hpf_status_init) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) (__hpfio_main) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) (__hpf_abort) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) (__hpf_malloc_without_abort) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - main_clust.o (pgf90_subchk) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - main_clust.o (pgf90_template1) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_rrecvl) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_print_version) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) (__hpf_getgbuf) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_setarg) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__f90_allo_term_i8) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) (__hpfio_assign) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) (__f90io_conv_buf) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) (__hpfio_getnum) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) (__hpfio_ecvt) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_strtol) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) (f90DummyGenBlockPtr) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) (__hpf_describe_replication) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) (pghpf_comm_start) -/usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) (pghpf_comm_copy) -/usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_abortx) -/usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) (__hpf_erecv) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) (__hpfio_cnfg_) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopy.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) (__hpf_bcopy) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopys.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) (__hpf_bcopysl) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__hpf_zopen) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) (__hpf_chn_1to1) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) (__hpf_size_of) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_prof_init) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof2.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_prof_arecv) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(genlist.o) - /usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) (__hpf_initndx) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) (__hpf_sethand) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_stat_init) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_trac_init) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace2.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) (__hpf_trac_arecv) -/usr/pgi/linux86-64/6.0/lib/libpgf902.a(xfer_heap_dum.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) (__hpf_sbrk) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(dacos.o) - arcos.o (__mth_i_dacos) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - readrtns.o (ftn_str_copy) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(flush3f.o) - main_clust.o (flush_) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) - readrtns.o (getenv_) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(fdate3f.o) - geomout.o (fdate_) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getarg3f.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) (getarg_) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) (ecvt) -/usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(utils3f.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) (__fstr2cstr) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) (__fio_eq_str) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgifiodf.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) (pgi_fio) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) (__fio_error) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) (ftn_exit) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) (__fio_open) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) (__fio_close) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) (__fio_cnfg_) -/usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) (__PC_DOS) -/usr/lib64/libc_nonshared.a(elf-init.oS) - /usr/lib64/crt1.o (__libc_csu_init) -/usr/lib64/libc_nonshared.a(atexit.oS) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (atexit) -/usr/pgi/linux86-64/6.0/lib/libnspgc.a(pgdbg_utils.o) - main_clust.o (__pgdbg_stub) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) (__utl_i_add64) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - parmread.o (__mth_i_dpowi) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dfloatuk.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) (__mth_i_dfloatuk) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dint.o) - timing.o (__mth_i_dint) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) - /usr/pgi/linux86-64/6.0/lib/f90main.o (__pgio_environ) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) (_mp_malloc) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) (_mp_bcs_stdio) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) (__pgio_tempnam) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) (__builtin_va_gparg1) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) (__pgio_get_argv) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - chainbuild.o (__mth_i_dsin) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - energy_p_new.o (__mth_i_dtan) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - initialize_p.o (__mth_i_datan) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(fastmath.o) - srtclust.o (__fmth_i_dlog) -/usr/pgi/linux86-64/6.0/lib/libpgc.a(crit_dum.o) - /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) (_mp_p) -/usr/lib64/libc_nonshared.a(fstat.oS) - /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) (fstat) - -Allocating common symbols -Common symbol size file - -__P4LEN 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) -MPIR_I_DOUBLE 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -fnames_ 0xf03 main_clust.o -torsion_ 0xfd8 initialize_p.o -__hpf_zmem 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -MPI_FLOAT_INT_var 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_debug_cl 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -total_pack_unacked 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) -contacts_ 0xbb88 readrtns.o -contacts_hb_ 0xd973f8 readrtns.o -stoptim_ 0x4 main_clust.o -execer_mynodenum 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_LONG_LONG_INT - 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_Op_errno 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) -p4_global 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_true_log4 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -logging_flag 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -rotat_old_ 0x2ee0 readrtns.o -minimm_ 0x18 initialize_p.o -p4_remote_debug_level - 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPI_SHORT_INT_var 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -execer_mastport 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -restraints_ 0x8 initialize_p.o -csaunits_ 0x30 main_clust.o -execer_numtotnodes 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -execer_masthost 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -geo_ 0x40 main_clust.o -stretch_ 0x150 main_clust.o -procgroup_file 0x100 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPID_recvs 0x20 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) -mpi_data_ 0x23c main_clust.o -contacts1_ 0x2258f8 readrtns.o -previous_ 0x895a1c4 track.o -MPIR_I_LB 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -csafiles_ 0xc00 main_clust.o -rm_outfile_head 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_PACKED 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPID_byte_order 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) -MPIR_real4_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -mpipriv_ 0x24 main_clust.o -__hpf_mask_log4 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -varref_ 0x2710 main_clust.o -MPI_LONG_INT_var 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -calcthet_ 0x9c energy_p_new.o -__hpf_mask_int1 0x1 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -indices_ 0x18 chainbuild.o -sserver_port 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_errhandlers 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -locel_ 0x208 energy_p_new.o -listener_info 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -refstruct_ 0x2f1c main_clust.o -whoami_p4 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -pghpf_me_ 0x4 main_clust.o -__hpf_shifts 0x88 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_I_LONG_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_LONG_DOUBLE_INT - 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_entry_mflag 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) -__hpf_test 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) -sccalc_ 0x28 energy_p_new.o -MPIR_debug_s 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -kutas_ 0x4 energy_p_new.o -precomp2_ 0x17700 readrtns.o -MPIR_I_2COMPLEX 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -body_ 0x6c00 main_clust.o -execer_myhost 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__P4FROM 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) -ffield_ 0x15c initialize_p.o -MPIR_rhandles 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -MPIR_I_2DOUBLE_PRECISION - 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -torcnstr_ 0x1780 energy_p_new.o -interact_ 0x5f64 main_clust.o -MPIR_I_COMPLEX 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -derivat_ 0x30864c initialize_p.o -MPIR_hbt_els 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) -MPIR_debug_c 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -__hpf_np2 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -__hpf_tids 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -__argv_save 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) -MPIR_I_INTEGER 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__hpf_true_log1 0x1 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -precomp1_ 0x16760 readrtns.o -MPIR_shandles 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -clu_ 0x45fb0fc main_clust.o -var_ 0x5600 main_clust.o -envar_fortranopt 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) -peptbond_ 0x28 chainbuild.o -__hpf_ioproc 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -p4_debug_level 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_mask_log 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_I_SHORT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_mask_int4 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_I_DOUBLE_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -invlen_ 0xfa0 chainbuild.o -free_ 0xc main_clust.o -__hpf_tcpus 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -p4_local 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_quiet 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -MPIR_int1_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__hpf_true_log8 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_debug_sqel 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -__P4GLOBALTYPE 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) -MPI_DOUBLE_INT_var 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_pario 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -links_split_ 0x8 initialize_p.o -deriv_loc_ 0x1e0 initialize_p.o -execer_starting_remotes - 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_debug_qh 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -links_ 0x1e4 initialize_p.o -__f90io_conv_buf 0x60 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) -__ftn_32in64_ 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) -MPIR_I_LONG_DOUBLE 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -srutu_ 0x4 energy_p_new.o -MPIR_I_DOUBLE_PRECISION - 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__argc_save 0x4 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) -MPIR_fdtels 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -__hpf_mask_int8 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_All_communicators - 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -MPIR_I_REAL 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -pghpf_0l_ 0x20 main_clust.o -diploc_ 0x3938 readrtns.o -__hpf_lcpu 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -__hpf_mask_log1 0x1 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -thetas_ 0x960 chainbuild.o -p4_myname_in_procgroup - 0x40 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_LOGICAL 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -MPI_LONG_DOUBLE_INT_var - 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_debug_q 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -MPIR_hbts 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) -MPIR_debug_sq 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -ch_debug_buf 0x80 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -header_ 0x50 main_clust.o -rotat_ 0xbb80 readrtns.o -__hpf_mask_int2 0x2 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -local_domain 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_heapz 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -pghpf_0_ 0x10 main_clust.o -__hpf_mask_log2 0x2 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -time1_ 0x28 main_clust.o -MPIR_I_2DOUBLE 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_UB 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -calc_ 0x1f0 energy_p_new.o -MPIR_I_2DCOMPLEX 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__hpf_debug 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -execer_id 0x84 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -vectors_ 0x14820 energy_p_new.o -tty_orig 0x12 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) -sbridge_ 0x74 initialize_p.o -MPIR_I_2FLOAT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPID_MyWorldRank 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -MPIR_I_2INTEGER 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -__P4TYPE 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) -cntrl_ 0x44 main_clust.o -MPIR_int4_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -p4_rm_rank 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_tid 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -MPIR_real8_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -MPIR_I_DCOMPLEX 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -pghpf_lineno_ 0x4 main_clust.o -clu1_ 0x898ed84 main_clust.o -execer_mynumprocs 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -parfiles_ 0xa00 main_clust.o -MPIR_I_FLOAT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPID_MyWorldSize 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) -hand_start_remotes 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -MPIR_I_2INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -rotmat_ 0x11940 main_clust.o -MPIR_I_BYTE 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -dipint_ 0x206cc80 readrtns.o -pghpf_np_ 0x4 main_clust.o -p4_brdcst_info 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -fourier_ 0x344 initialize_p.o -__hpf_true_log2 0x2 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_qels 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -MPIR_I_CHAR 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_FLOAT_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_int2_dte 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -MPIR_dtes 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -iounits_ 0x5c main_clust.o -history_ 0x1d4d4 track.o -MPIR_I_USHORT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_UCHAR 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -__hpf_debugn 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -execer_pg 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_heap_block 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) -MPIR_I_ULONG 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -expect_ack 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) -bm_outfile 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -p4_wd 0x100 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -__hpf_mask_log8 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) -MPIR_I_SHORT_INT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_topo_els 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) -fourier1_ 0x1a0 initialize_p.o -MPIR_I_LONG 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -MPIR_I_2REAL 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) -chain_ 0xbbb8 main_clust.o -MPIR_I_UINT 0xa8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) -alles_ 0x238bdac main_clust.o -MPIR_debug_qel 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -torsiond_ 0x14200 initialize_p.o -dipmat_ 0x1e84800 readrtns.o -sclocal_ 0x22cc chainbuild.o -MPIR_debug_rh 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) -globmemsize 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) -pghpf_0c_ 0x1 main_clust.o -MPID_pack_info 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - -Memory Configuration - -Name Origin Length Attributes -*default* 0x0000000000000000 0xffffffffffffffff - -Linker script and memory map - -LOAD /usr/lib64/crt1.o -LOAD /usr/lib64/crti.o -LOAD /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o -LOAD /usr/pgi/linux86-64/6.0/lib/f90main.o -LOAD main_clust.o -LOAD arcos.o -LOAD cartprint.o -LOAD chainbuild.o -LOAD convert.o -LOAD initialize_p.o -LOAD matmult.o -LOAD readrtns.o -LOAD pinorm.o -LOAD rescode.o -LOAD intcor.o -LOAD timing.o -LOAD misc.o -LOAD geomout.o -LOAD readpdb.o -LOAD read_coords.o -LOAD parmread.o -LOAD probabl.o -LOAD fitsq.o -LOAD hc.o -LOAD track.o -LOAD wrtclust.o -LOAD srtclust.o -LOAD noyes.o -LOAD contact.o -LOAD printmat.o -LOAD int_from_cart1.o -LOAD energy_p_new.o -LOAD icant.o -LOAD proc_proc.o -LOAD work_partition.o -LOAD setup_var.o -LOAD /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a -LOAD /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libpmpich.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgf90.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgf902.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a -LOAD /usr/lib64/libc.so -START GROUP -LOAD /lib64/libc.so.6 -LOAD /usr/lib64/libc_nonshared.a -END GROUP -LOAD /usr/pgi/linux86-64/6.0/lib/libnspgc.a -LOAD /usr/pgi/linux86-64/6.0/lib/libpgc.a -LOAD /usr/lib64/libm.so -LOAD /usr/lib/gcc/x86_64-redhat-linux/3.4.2/libgcc.a -LOAD /usr/lib64/libc.so -START GROUP -LOAD /lib64/libc.so.6 -LOAD /usr/lib64/libc_nonshared.a -END GROUP -LOAD /usr/lib/gcc/x86_64-redhat-linux/3.4.2/libgcc.a -LOAD /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o -LOAD /usr/lib64/crtn.o - 0x0000000000400000 PROVIDE (__executable_start, 0x400000) - 0x00000000004001c8 . = (0x400000 + SIZEOF_HEADERS) - -.interp 0x00000000004001c8 0x1c - *(.interp) - .interp 0x00000000004001c8 0x1c /usr/lib64/crt1.o - -.note.ABI-tag 0x00000000004001e4 0x20 - .note.ABI-tag 0x00000000004001e4 0x20 /usr/lib64/crt1.o - -.hash 0x0000000000400208 0x494 - *(.hash) - .hash 0x0000000000400208 0x494 /usr/lib64/crt1.o - -.dynsym 0x00000000004006a0 0xf00 - *(.dynsym) - .dynsym 0x00000000004006a0 0xf00 /usr/lib64/crt1.o - -.dynstr 0x00000000004015a0 0x507 - *(.dynstr) - .dynstr 0x00000000004015a0 0x507 /usr/lib64/crt1.o - -.gnu.version 0x0000000000401aa8 0x140 - *(.gnu.version) - .gnu.version 0x0000000000401aa8 0x140 /usr/lib64/crt1.o - -.gnu.version_d - *(.gnu.version_d) - -.gnu.version_r 0x0000000000401be8 0x50 - *(.gnu.version_r) - .gnu.version_r - 0x0000000000401be8 0x50 /usr/lib64/crt1.o - -.rel.dyn - *(.rel.init) - *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) - *(.rel.fini) - *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) - *(.rel.data.rel.ro*) - *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) - *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) - *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) - *(.rel.ctors) - *(.rel.dtors) - *(.rel.got) - *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) - -.rela.dyn 0x0000000000401c38 0x90 - *(.rela.init) - *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) - *(.rela.fini) - *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) - *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) - *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) - *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) - *(.rela.ctors) - *(.rela.dtors) - *(.rela.got) - .rela.got 0x0000000000401c38 0x18 /usr/lib64/crt1.o - *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) - .rela.bss 0x0000000000401c50 0x78 /usr/lib64/crt1.o - -.rel.plt - *(.rel.plt) - -.rela.plt 0x0000000000401cc8 0xdc8 - *(.rela.plt) - .rela.plt 0x0000000000401cc8 0xdc8 /usr/lib64/crt1.o - -.init 0x0000000000402a90 0x1d - *(.init) - .init 0x0000000000402a90 0x9 /usr/lib64/crti.o - 0x0000000000402a90 _init - .init 0x0000000000402a99 0x5 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - .init 0x0000000000402a9e 0x5 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - .init 0x0000000000402aa3 0x5 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - .init 0x0000000000402aa8 0x5 /usr/lib64/crtn.o - -.plt 0x0000000000402ab0 0x940 - *(.plt) - .plt 0x0000000000402ab0 0x940 /usr/lib64/crt1.o - 0x0000000000402ac0 __cxa_atexit@@GLIBC_2.2.5 - 0x0000000000402ad0 fseek@@GLIBC_2.2.5 - 0x0000000000402ae0 geteuid@@GLIBC_2.2.5 - 0x0000000000402af0 xdr_array@@GLIBC_2.2.5 - 0x0000000000402b00 __libc_start_main@@GLIBC_2.2.5 - 0x0000000000402b10 fork@@GLIBC_2.2.5 - 0x0000000000402b20 catgets@@GLIBC_2.2.5 - 0x0000000000402b30 getrusage@@GLIBC_2.2.5 - 0x0000000000402b40 bcopy@@GLIBC_2.2.5 - 0x0000000000402b50 read@@GLIBC_2.2.5 - 0x0000000000402b60 chdir@@GLIBC_2.2.5 - 0x0000000000402b70 socket@@GLIBC_2.2.5 - 0x0000000000402b80 kill@@GLIBC_2.2.5 - 0x0000000000402b90 ftell@@GLIBC_2.2.5 - 0x0000000000402ba0 xdr_u_int@@GLIBC_2.2.5 - 0x0000000000402bb0 xdr_opaque@@GLIBC_2.2.5 - 0x0000000000402bc0 getchar@@GLIBC_2.2.5 - 0x0000000000402bd0 vsprintf@@GLIBC_2.2.5 - 0x0000000000402be0 write@@GLIBC_2.2.5 - 0x0000000000402bf0 toupper@@GLIBC_2.2.5 - 0x0000000000402c00 sigemptyset@@GLIBC_2.2.5 - 0x0000000000402c10 sigaddset@@GLIBC_2.2.5 - 0x0000000000402c20 wait@@GLIBC_2.2.5 - 0x0000000000402c30 gethostname@@GLIBC_2.2.5 - 0x0000000000402c40 isdigit@@GLIBC_2.2.5 - 0x0000000000402c50 htonl@@GLIBC_2.2.5 - 0x0000000000402c60 _IO_putc@@GLIBC_2.2.5 - 0x0000000000402c70 freopen@@GLIBC_2.2.5 - 0x0000000000402c80 getenv@@GLIBC_2.2.5 - 0x0000000000402c90 malloc@@GLIBC_2.2.5 - 0x0000000000402ca0 ferror@@GLIBC_2.2.5 - 0x0000000000402cb0 strncmp@@GLIBC_2.2.5 - 0x0000000000402cc0 accept@@GLIBC_2.2.5 - 0x0000000000402cd0 modf@@GLIBC_2.2.5 - 0x0000000000402ce0 strncat@@GLIBC_2.2.5 - 0x0000000000402cf0 setsid@@GLIBC_2.2.5 - 0x0000000000402d00 sigaction@@GLIBC_2.2.5 - 0x0000000000402d10 strncpy@@GLIBC_2.2.5 - 0x0000000000402d20 getdtablesize@@GLIBC_2.2.5 - 0x0000000000402d30 execlp@@GLIBC_2.2.5 - 0x0000000000402d40 memmove@@GLIBC_2.2.5 - 0x0000000000402d50 getpeername@@GLIBC_2.2.5 - 0x0000000000402d60 htons@@GLIBC_2.2.5 - 0x0000000000402d70 fwrite@@GLIBC_2.2.5 - 0x0000000000402d80 fclose@@GLIBC_2.2.5 - 0x0000000000402d90 vprintf@@GLIBC_2.2.5 - 0x0000000000402da0 sched_yield@@GLIBC_2.2.5 - 0x0000000000402db0 socketpair@@GLIBC_2.2.5 - 0x0000000000402dc0 xdr_float@@GLIBC_2.2.5 - 0x0000000000402dd0 fcntl@@GLIBC_2.2.5 - 0x0000000000402de0 listen@@GLIBC_2.2.5 - 0x0000000000402df0 feof@@GLIBC_2.2.5 - 0x0000000000402e00 strlen@@GLIBC_2.2.5 - 0x0000000000402e10 select@@GLIBC_2.2.5 - 0x0000000000402e20 getlogin@@GLIBC_2.2.5 - 0x0000000000402e30 ftruncate@@GLIBC_2.2.5 - 0x0000000000402e40 acos@@GLIBC_2.2.5 - 0x0000000000402e50 xdr_u_long@@GLIBC_2.2.5 - 0x0000000000402e60 getsockname@@GLIBC_2.2.5 - 0x0000000000402e70 fgetc@@GLIBC_2.2.5 - 0x0000000000402e80 fread@@GLIBC_2.2.5 - 0x0000000000402e90 inet_ntoa@@GLIBC_2.2.5 - 0x0000000000402ea0 strcpy@@GLIBC_2.2.5 - 0x0000000000402eb0 fprintf@@GLIBC_2.2.5 - 0x0000000000402ec0 perror@@GLIBC_2.2.5 - 0x0000000000402ed0 memcpy@@GLIBC_2.2.5 - 0x0000000000402ee0 strtol@@GLIBC_2.2.5 - 0x0000000000402ef0 fgets@@GLIBC_2.2.5 - 0x0000000000402f00 strcmp@@GLIBC_2.2.5 - 0x0000000000402f10 time@@GLIBC_2.2.5 - 0x0000000000402f20 getsockopt@@GLIBC_2.2.5 - 0x0000000000402f30 connect@@GLIBC_2.2.5 - 0x0000000000402f40 abort@@GLIBC_2.2.5 - 0x0000000000402f50 setsockopt@@GLIBC_2.2.5 - 0x0000000000402f60 realloc@@GLIBC_2.2.5 - 0x0000000000402f70 _exit@@GLIBC_2.2.5 - 0x0000000000402f80 _IO_getc@@GLIBC_2.2.5 - 0x0000000000402f90 fflush@@GLIBC_2.2.5 - 0x0000000000402fa0 ntohl@@GLIBC_2.2.5 - 0x0000000000402fb0 sscanf@@GLIBC_2.2.5 - 0x0000000000402fc0 setlocale@@GLIBC_2.2.5 - 0x0000000000402fd0 sleep@@GLIBC_2.2.5 - 0x0000000000402fe0 xdr_char@@GLIBC_2.2.5 - 0x0000000000402ff0 rindex@@GLIBC_2.2.5 - 0x0000000000403000 index@@GLIBC_2.2.5 - 0x0000000000403010 recv@@GLIBC_2.2.5 - 0x0000000000403020 printf@@GLIBC_2.2.5 - 0x0000000000403030 fileno@@GLIBC_2.2.5 - 0x0000000000403040 open@@GLIBC_2.2.5 - 0x0000000000403050 writev@@GLIBC_2.2.5 - 0x0000000000403060 ctime@@GLIBC_2.2.5 - 0x0000000000403070 xdr_double@@GLIBC_2.2.5 - 0x0000000000403080 uname@@GLIBC_2.2.5 - 0x0000000000403090 atoi@@GLIBC_2.2.5 - 0x00000000004030a0 bzero@@GLIBC_2.2.5 - 0x00000000004030b0 ntohs@@GLIBC_2.2.5 - 0x00000000004030c0 signal@@GLIBC_2.2.5 - 0x00000000004030d0 catopen@@GLIBC_2.2.5 - 0x00000000004030e0 __strtol_internal@@GLIBC_2.2.5 - 0x00000000004030f0 setitimer@@GLIBC_2.2.5 - 0x0000000000403100 nice@@GLIBC_2.2.5 - 0x0000000000403110 strchr@@GLIBC_2.2.5 - 0x0000000000403120 memset@@GLIBC_2.2.5 - 0x0000000000403130 sendto@@GLIBC_2.2.5 - 0x0000000000403140 xdr_short@@GLIBC_2.2.5 - 0x0000000000403150 strerror@@GLIBC_2.2.5 - 0x0000000000403160 unlink@@GLIBC_2.2.5 - 0x0000000000403170 isspace@@GLIBC_2.2.5 - 0x0000000000403180 clearerr@@GLIBC_2.2.5 - 0x0000000000403190 __strtod_internal@@GLIBC_2.2.5 - 0x00000000004031a0 getpid@@GLIBC_2.2.5 - 0x00000000004031b0 dup2@@GLIBC_2.2.5 - 0x00000000004031c0 fputc@@GLIBC_2.2.5 - 0x00000000004031d0 isatty@@GLIBC_2.2.5 - 0x00000000004031e0 fputs@@GLIBC_2.2.5 - 0x00000000004031f0 waitpid@@GLIBC_2.2.5 - 0x0000000000403200 exit@@GLIBC_2.2.5 - 0x0000000000403210 xdr_int@@GLIBC_2.2.5 - 0x0000000000403220 getpwuid@@GLIBC_2.2.5 - 0x0000000000403230 bind@@GLIBC_2.2.5 - 0x0000000000403240 xdr_u_short@@GLIBC_2.2.5 - 0x0000000000403250 calloc@@GLIBC_2.2.5 - 0x0000000000403260 access@@GLIBC_2.2.5 - 0x0000000000403270 sprintf@@GLIBC_2.2.5 - 0x0000000000403280 sigprocmask@@GLIBC_2.2.5 - 0x0000000000403290 __fxstat@@GLIBC_2.2.5 - 0x00000000004032a0 gethostbyname@@GLIBC_2.2.5 - 0x00000000004032b0 ioctl@@GLIBC_2.2.5 - 0x00000000004032c0 close@@GLIBC_2.2.5 - 0x00000000004032d0 __errno_location@@GLIBC_2.2.5 - 0x00000000004032e0 xdr_long@@GLIBC_2.2.5 - 0x00000000004032f0 xdr_u_char@@GLIBC_2.2.5 - 0x0000000000403300 puts@@GLIBC_2.2.5 - 0x0000000000403310 xdrmem_create@@GLIBC_2.2.5 - 0x0000000000403320 free@@GLIBC_2.2.5 - 0x0000000000403330 gettimeofday@@GLIBC_2.2.5 - 0x0000000000403340 fopen@@GLIBC_2.2.5 - 0x0000000000403350 bcmp@@GLIBC_2.2.5 - 0x0000000000403360 shutdown@@GLIBC_2.2.5 - 0x0000000000403370 putchar@@GLIBC_2.2.5 - 0x0000000000403380 strtok@@GLIBC_2.2.5 - 0x0000000000403390 strstr@@GLIBC_2.2.5 - 0x00000000004033a0 sbrk@@GLIBC_2.2.5 - 0x00000000004033b0 getuid@@GLIBC_2.2.5 - 0x00000000004033c0 __ctype_b_loc@@GLIBC_2.3 - 0x00000000004033d0 strcat@@GLIBC_2.2.5 - 0x00000000004033e0 getppid@@GLIBC_2.2.5 - -.text 0x00000000004033f0 0x167528 - *(.text .stub .text.* .gnu.linkonce.t.*) - .text 0x00000000004033f0 0x2c /usr/lib64/crt1.o - 0x00000000004033f0 _start - .text 0x000000000040341c 0x17 /usr/lib64/crti.o - *fill* 0x0000000000403433 0xd 90909090 - .text 0x0000000000403440 0x66 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - *fill* 0x00000000004034a6 0x2 90909090 - .text 0x00000000004034a8 0x64 /usr/pgi/linux86-64/6.0/lib/f90main.o - 0x00000000004034a8 main - *fill* 0x000000000040350c 0x4 90909090 - .text 0x0000000000403510 0x4652 main_clust.o - 0x0000000000406910 difconf_ - 0x00000000004075e0 distout_ - 0x0000000000403520 MAIN_ - *fill* 0x0000000000407b62 0xe 90909090 - .text 0x0000000000407b70 0x97 arcos.o - 0x0000000000407b80 arcos_ - *fill* 0x0000000000407c07 0x9 90909090 - .text 0x0000000000407c10 0x642 cartprint.o - 0x0000000000407c20 cartprint_ - *fill* 0x0000000000408252 0xe 90909090 - .text 0x0000000000408260 0x6492 chainbuild.o - 0x000000000040d3f0 locate_side_chain_ - 0x000000000040b110 locate_next_res_ - 0x0000000000408270 chainbuild_ - 0x0000000000408e00 orig_frame_ - *fill* 0x000000000040e6f2 0xe 90909090 - .text 0x000000000040e700 0xa92 convert.o - 0x000000000040ec80 var_to_geom_ - 0x000000000040e710 geom_to_var_ - *fill* 0x000000000040f192 0xe 90909090 - .text 0x000000000040f1a0 0x4092 initialize_p.o - 0x000000000040f1b0 initialize_ - 0x0000000000412d30 int_partition_ - 0x0000000000410f30 nazwy_ - 0x0000000000413210 hpb_partition_ - 0x0000000000410f40 init_int_table_ - *fill* 0x0000000000413232 0xe 90909090 - .text 0x0000000000413240 0x3f2 matmult.o - 0x0000000000413250 matmult_ - *fill* 0x0000000000413632 0xe 90909090 - .text 0x0000000000413640 0x6662 readrtns.o - 0x0000000000417dc0 read_angles_ - 0x0000000000413d20 molread_ - 0x0000000000416c50 seq_comp_ - 0x0000000000418640 reada_ - 0x0000000000418d90 openunits_ - 0x0000000000413650 read_control_ - 0x0000000000418740 multreada_ - 0x00000000004189f0 readi_ - 0x0000000000416d70 read_bridge_ - 0x0000000000418ae0 card_concat_ - *fill* 0x0000000000419ca2 0xe 90909090 - .text 0x0000000000419cb0 0xa7 pinorm.o - 0x0000000000419cc0 pinorm_ - *fill* 0x0000000000419d57 0x9 90909090 - .text 0x0000000000419d60 0x22b rescode.o - 0x0000000000419d70 rescode_ - *fill* 0x0000000000419f8b 0x5 90909090 - .text 0x0000000000419f90 0x1bc7 intcor.o - 0x0000000000419fa0 alpha_ - 0x000000000041b730 dist_ - 0x000000000041a830 beta_ - *fill* 0x000000000041bb57 0x9 90909090 - .text 0x000000000041bb60 0x2d2 timing.o - 0x000000000041bba0 stopx_ - 0x000000000041bc60 dajczas_ - 0x000000000041bb70 set_timers_ - 0x000000000041bbf0 ovrtim_ - 0x000000000041bc40 tcpu_ - *fill* 0x000000000041be32 0xe 90909090 - .text 0x000000000041be40 0xba2 misc.o - 0x000000000041c1e0 iblnk_ - 0x000000000041c250 ilen_ - 0x000000000041c430 lcase_ - 0x000000000041be50 find_arg_ - 0x000000000041c8e0 ucase_ - 0x000000000041bf40 find_group_ - 0x000000000041c5f0 lower_case_ - 0x000000000041c7e0 numstr_ - 0x000000000041c540 lcom_ - 0x000000000041c2b0 in_keywd_set_ - 0x000000000041c660 mykey_ - *fill* 0x000000000041c9e2 0xe 90909090 - .text 0x000000000041c9f0 0x3b02 geomout.o - 0x000000000041f0d0 briefout_ - 0x000000000041fc20 cartout_ - 0x000000000041ca00 pdbout_ - 0x000000000041eae0 intout_ - 0x000000000041dab0 mol2out_ - *fill* 0x00000000004204f2 0xe 90909090 - .text 0x0000000000420500 0x2d02 readpdb.o - 0x0000000000423030 sccenter_ - 0x0000000000420510 readpdb_ - 0x0000000000421fe0 int_from_cart_ - *fill* 0x0000000000423202 0xe 90909090 - .text 0x0000000000423210 0x6102 read_coords.o - 0x0000000000427c10 receive_and_pass_cconf_ - 0x0000000000423220 read_coords_ - 0x0000000000424800 add_new_cconf_ - 0x0000000000427310 store_cconf_from_file_ - 0x0000000000428c30 dawrite_ccoords_ - 0x0000000000427780 write_and_send_cconf_ - 0x0000000000428590 daread_ccoords_ - *fill* 0x0000000000429312 0xe 90909090 - .text 0x0000000000429320 0x172f9 parmread.o - 0x0000000000429330 parmread_ - *fill* 0x0000000000440619 0x7 90909090 - .text 0x0000000000440620 0x2ef2 probabl.o - 0x0000000000440630 probabl_ - 0x0000000000443140 mysort1_ - *fill* 0x0000000000443512 0xe 90909090 - .text 0x0000000000443520 0x8652 fitsq.o - 0x000000000044b420 mmmul_ - 0x000000000044ae60 mvvad_ - 0x000000000044a770 switch_ - 0x0000000000449d10 givns_ - 0x0000000000444a80 sivade_ - 0x000000000044b7c0 matvec_ - 0x000000000044b100 det_ - 0x0000000000443530 fitsq_ - *fill* 0x000000000044bb72 0xe 90909090 - .text 0x000000000044bb80 0x4590 hc.o - 0x000000000044d5d0 ioffset_ - 0x000000000044bb90 hc_ - 0x000000000044d620 hcass_ - 0x000000000044ef40 hcden_ - .text 0x0000000000450110 0x3ee9 track.o - 0x0000000000450120 track_ - 0x00000000004506d0 writrack_ - 0x0000000000450c90 plotree_ - *fill* 0x0000000000453ff9 0x7 90909090 - .text 0x0000000000454000 0x3a40 wrtclust.o - 0x0000000000454010 wrtclust_ - .text 0x0000000000457a40 0x1842 srtclust.o - 0x0000000000457a50 srtclust_ - *fill* 0x0000000000459282 0xe 90909090 - .text 0x0000000000459290 0x195 noyes.o - 0x00000000004592a0 noyes_ - *fill* 0x0000000000459425 0xb 90909090 - .text 0x0000000000459430 0xbb7 contact.o - 0x0000000000459440 contact_ - 0x0000000000459ce0 contact_fract_ - *fill* 0x0000000000459fe7 0x9 90909090 - .text 0x0000000000459ff0 0x6f2 printmat.o - 0x000000000045a000 printmat_ - *fill* 0x000000000045a6e2 0xe 90909090 - .text 0x000000000045a6f0 0x1602 int_from_cart1.o - 0x000000000045a700 int_from_cart1_ - *fill* 0x000000000045bcf2 0xe 90909090 - .text 0x000000000045bd00 0xa8597 energy_p_new.o - 0x00000000004a01e0 unormderiv_ - 0x000000000046f370 vec_and_deriv_test_ - 0x00000000004a2360 ssbond_ene_ - 0x00000000004b1be0 ehbcorr_ - 0x00000000004a6810 esc_ - 0x00000000004aea40 multibody_ - 0x0000000000463600 egb_ - 0x0000000000477540 check_vecgrad_ - 0x00000000004b39c0 dipole_ - 0x0000000000460950 eljk_ - 0x00000000004aa250 enesc_bound_ - 0x00000000004af230 esccorr_ - 0x00000000004652f0 egbv_ - 0x000000000045dea0 enerprint_ - 0x00000000004e5570 eello6_graph1_ - 0x00000000004cfc50 eello4_ - 0x0000000000500ff0 transpose2_ - 0x00000000004d29b0 eello5_ - 0x0000000000461f30 ebp_ - 0x00000000004ad050 etor_d_ - 0x0000000000468030 vec_and_deriv_ - 0x00000000004ab4e0 spline1_ - 0x0000000000493090 eturn34_ - 0x00000000004a6640 mixder_ - 0x00000000004b55a0 calc_eello_ - 0x00000000004a1970 edis_ - 0x00000000004fa7f0 eello_turn6_ - 0x00000000004ab630 spline2_ - 0x00000000004f0ca0 eello6_graph3_ - 0x00000000004ceea0 kernel_ - 0x00000000005014d0 transpose_ - 0x0000000000480ce0 eelec_ - 0x000000000045ee00 elj_ - 0x00000000004b0070 multibody_hb_ - 0x00000000004ffe20 matvec2_ - 0x0000000000478a90 set_matrices_ - 0x00000000004ab750 etor_ - 0x0000000000504190 scalar_ - 0x0000000000500e80 scalar2_ - 0x00000000005016d0 prodmat3_ - 0x00000000004a0590 escp_ - 0x00000000004ab290 gcont_ - 0x000000000045bd10 etotal_ - 0x00000000004e3230 eello6_ - 0x00000000004a3fc0 ebond_ - 0x00000000004f4020 eello6_graph4_ - 0x0000000000467200 sc_grad_ - 0x00000000004a8b20 enesc_ - 0x0000000000500280 matmat2_ - 0x00000000004a5cd0 theteng_ - 0x00000000004a4640 ebend_ - 0x0000000000466a90 sc_angular_ - 0x000000000049fd10 vecpr_ - 0x00000000004eb350 eello6_graph2_ - 0x00000000004ab400 splinthet_ - 0x00000000004b09d0 multibody_eello_ - *fill* 0x0000000000504297 0x9 90909090 - .text 0x00000000005042a0 0x75 icant.o - 0x00000000005042b0 icant_ - *fill* 0x0000000000504315 0x3 90909090 - .text 0x0000000000504318 0x267 proc_proc.o - 0x00000000005043d7 dsvrgp__ - 0x0000000000504318 proc_proc_ - 0x00000000005043c6 proc_conv_r__ - 0x0000000000504391 proc_conv__ - *fill* 0x000000000050457f 0x1 90909090 - .text 0x0000000000504580 0xca2 work_partition.o - 0x0000000000504590 work_partition_ - *fill* 0x0000000000505222 0xe 90909090 - .text 0x0000000000505230 0x272 setup_var.o - 0x0000000000505240 setup_var_ - *fill* 0x00000000005054a2 0xe 90909090 - .text 0x00000000005054b0 0x1d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) - 0x00000000005054b0 pmpi_abort_ - 0x00000000005054b0 mpi_abort_ - *fill* 0x00000000005054cd 0x3 90909090 - .text 0x00000000005054d0 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) - 0x00000000005054d0 pmpi_allgather_ - 0x00000000005054d0 mpi_allgather_ - *fill* 0x00000000005054fc 0x4 90909090 - .text 0x0000000000505500 0x22 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) - 0x0000000000505500 pmpi_bcast_ - 0x0000000000505500 mpi_bcast_ - *fill* 0x0000000000505522 0xe 90909090 - .text 0x0000000000505530 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) - 0x0000000000505530 mpi_comm_rank_ - 0x0000000000505530 pmpi_comm_rank_ - *fill* 0x000000000050555c 0x4 90909090 - .text 0x0000000000505560 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) - 0x0000000000505560 mpi_comm_size_ - 0x0000000000505560 pmpi_comm_size_ - *fill* 0x000000000050558c 0x4 90909090 - .text 0x0000000000505590 0x4b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) - 0x0000000000505590 mpi_dup_fn_ - 0x0000000000505590 pmpi_dup_fn_ - *fill* 0x00000000005055db 0x5 90909090 - .text 0x00000000005055e0 0x19 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) - 0x00000000005055e0 mpi_finalize_ - 0x00000000005055e0 pmpi_finalize_ - *fill* 0x00000000005055f9 0x7 90909090 - .text 0x0000000000505600 0x10f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) - 0x0000000000505600 mpi_gatherv_ - 0x0000000000505600 pmpi_gatherv_ - *fill* 0x000000000050570f 0x1 90909090 - .text 0x0000000000505710 0x1ea /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - 0x0000000000505710 pmpi_init_ - 0x0000000000505710 mpi_init_ - *fill* 0x00000000005058fa 0x6 90909090 - .text 0x0000000000505900 0x1f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_copyfnf.o) - 0x0000000000505900 mpi_null_copy_fn_ - 0x0000000000505900 pmpi_null_copy_fn_ - *fill* 0x000000000050591f 0x1 90909090 - .text 0x0000000000505920 0xd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_del_fnf.o) - 0x0000000000505920 mpi_null_delete_fn_ - 0x0000000000505920 pmpi_null_delete_fn_ - *fill* 0x000000000050592d 0x3 90909090 - .text 0x0000000000505930 0x42 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) - 0x0000000000505930 pmpi_recv_ - 0x0000000000505930 mpi_recv_ - *fill* 0x0000000000505972 0xe 90909090 - .text 0x0000000000505980 0x1d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) - 0x0000000000505980 mpi_send_ - 0x0000000000505980 pmpi_send_ - *fill* 0x000000000050599d 0x3 90909090 - .text 0x00000000005059a0 0xb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) - 0x00000000005059a0 mpi_wtick_ - 0x00000000005059a0 pmpi_wtick_ - *fill* 0x00000000005059ab 0x5 90909090 - .text 0x00000000005059b0 0xb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) - 0x00000000005059b0 mpi_wtime_ - 0x00000000005059b0 pmpi_wtime_ - *fill* 0x00000000005059bb 0x5 90909090 - .text 0x00000000005059c0 0x25 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) - 0x00000000005059d0 mpir_getarg_ - 0x00000000005059c0 mpir_iargc_ - *fill* 0x00000000005059e5 0xb 90909090 - .text 0x00000000005059f0 0x646 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - 0x0000000000505bb0 mpir_init_bottom_ - 0x0000000000505b60 MPIR_Free_Fortran_keyvals - 0x0000000000506030 mpir_init_fsize_ - 0x00000000005059f0 MPIR_InitFortran - 0x0000000000505bf0 MPIR_InitFortranDatatypes - 0x0000000000505fb0 MPIR_Free_Fortran_dtes - *fill* 0x0000000000506036 0xa 90909090 - .text 0x0000000000506040 0x32 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfcmn.o) - 0x0000000000506060 mpir_init_flog_ - 0x0000000000506040 mpir_init_fcm_ - *fill* 0x0000000000506072 0xe 90909090 - .text 0x0000000000506080 0x5c2 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - 0x0000000000506360 MPIR_Error - 0x0000000000506080 MPIR_Errors_are_fatal - 0x0000000000506500 MPIR_Set_Status_error_array - 0x0000000000506210 MPIR_Errors_warn - 0x0000000000506200 MPIR_Errors_return - *fill* 0x0000000000506642 0xe 90909090 - .text 0x0000000000506650 0x31f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - 0x0000000000506650 MPI_Send - 0x0000000000506650 PMPI_Send - *fill* 0x000000000050696f 0x1 90909090 - .text 0x0000000000506970 0x336 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - 0x0000000000506970 PMPI_Recv - 0x0000000000506970 MPI_Recv - *fill* 0x0000000000506ca6 0xa 90909090 - .text 0x0000000000506cb0 0x35c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - 0x0000000000506f30 MPIR_Type_get_limits - 0x0000000000506cc0 MPIR_Type_permanent - 0x0000000000506cb0 MPIR_Type_dup - 0x0000000000506ce0 MPIR_Type_free - 0x0000000000506ff0 MPIR_Datatype_iscontig - 0x0000000000506f80 MPIR_Free_struct_internals - 0x0000000000506f50 MPIR_Free_perm_type - *fill* 0x000000000050700c 0x4 90909090 - .text 0x0000000000507010 0xd7 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - 0x0000000000507010 MPI_Abort - 0x0000000000507010 PMPI_Abort - *fill* 0x00000000005070e7 0x9 90909090 - .text 0x00000000005070f0 0xb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) - 0x00000000005070f0 MPI_Init - 0x00000000005070f0 PMPI_Init - *fill* 0x00000000005070fb 0x5 90909090 - .text 0x0000000000507100 0xdc0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - 0x0000000000507100 MPIR_Init - 0x0000000000507e80 MPIR_Errhandler_mark - 0x0000000000507df0 MPIR_Errhandler_create - .text 0x0000000000507ec0 0x29c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) - 0x0000000000507ec0 MPI_Finalize - 0x0000000000507ec0 PMPI_Finalize - *fill* 0x000000000050815c 0x4 90909090 - .text 0x0000000000508160 0x55 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errorstring.o) - 0x0000000000508160 MPI_Error_string - 0x0000000000508160 PMPI_Error_string - *fill* 0x00000000005081b5 0xb 90909090 - .text 0x00000000005081c0 0x6f9 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - 0x0000000000508650 MPIR_Free_dtes - 0x0000000000508890 MPIR_Type_contiguous - 0x0000000000508740 MPIR_Setup_base_datatype - 0x0000000000508800 MPIR_Setup_complex_datatype - 0x00000000005081c0 MPIR_Init_dtes - *fill* 0x00000000005088b9 0x7 90909090 - .text 0x00000000005088c0 0x104 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - 0x00000000005088c0 PMPI_Errhandler_free - 0x00000000005088c0 MPI_Errhandler_free - *fill* 0x00000000005089c4 0xc 90909090 - .text 0x00000000005089d0 0xb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtime.o) - 0x00000000005089d0 PMPI_Wtime - 0x00000000005089d0 MPI_Wtime - *fill* 0x00000000005089db 0x5 90909090 - .text 0x00000000005089e0 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) - 0x00000000005089e0 MPI_Wtick - 0x00000000005089e0 PMPI_Wtick - *fill* 0x00000000005089f8 0x8 90909090 - .text 0x0000000000508a00 0x97e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - 0x0000000000508f00 MPIR_Get_error_string - 0x0000000000508e10 MPIR_GetErrorMessage - 0x0000000000509050 MPIR_GetNLSMsg - 0x0000000000508aa0 MPIR_Err_setmsg - 0x0000000000508cc0 MPIR_Err_map_code_to_string - *fill* 0x000000000050937e 0x2 90909090 - .text 0x0000000000509380 0x6 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(msgqdllloc.o) - 0x0000000000509380 MPIR_Msg_queue_export - *fill* 0x0000000000509386 0xa 90909090 - .text 0x0000000000509390 0xabb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - 0x0000000000509560 MPIR_HBT_free_tree - 0x00000000005094f0 MPIR_HBT_free_node - 0x0000000000509470 MPIR_HBT_new_node - 0x00000000005098e0 MPIR_HBT_delete - 0x0000000000509410 MPIR_HBT_new_tree - 0x0000000000509390 MPIR_HBT_Init - 0x0000000000509610 MPIR_HBT_insert - 0x00000000005093e0 MPIR_HBT_Free - 0x00000000005095b0 MPIR_HBT_lookup - 0x0000000000509520 MPIR_HBT_free_subtree - *fill* 0x0000000000509e4b 0x5 90909090 - .text 0x0000000000509e50 0xce6 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - 0x0000000000509fa0 MPIR_DestroyPointer - 0x000000000050a910 MPIR_DumpPointers - 0x000000000050a190 MPIR_FromPointer - 0x0000000000509e70 MPIR_PointerOpts - 0x0000000000509e50 MPIR_PointerPerm - 0x000000000050a6e0 MPIR_RegPointerIdx - 0x000000000050a410 MPIR_RmPointer - 0x000000000050a010 MPIR_ToPointer - 0x000000000050a5d0 MPIR_UsePointer - *fill* 0x000000000050ab36 0xa 90909090 - .text 0x000000000050ab40 0x974 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - 0x000000000050ac00 MPIR_BsendRelease - 0x000000000050b330 MPIR_IbsendDatatype - 0x000000000050ab40 MPIR_BsendInitBuffer - *fill* 0x000000000050b4b4 0xc 90909090 - .text 0x000000000050b4c0 0x1da /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - 0x000000000050b4c0 PMPI_Keyval_free - 0x000000000050b4c0 MPI_Keyval_free - *fill* 0x000000000050b69a 0x6 90909090 - .text 0x000000000050b6a0 0x17d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - 0x000000000050b6a0 PMPI_Attr_get - 0x000000000050b6a0 MPI_Attr_get - *fill* 0x000000000050b81d 0x3 90909090 - .text 0x000000000050b820 0x682 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - 0x000000000050bca0 MPIR_Attr_free_tree - 0x000000000050be90 MPIR_Attr_make_perm - 0x000000000050b820 MPIR_Attr_copy_node - 0x000000000050baf0 MPIR_Attr_free_node - 0x000000000050ba90 MPIR_Attr_copy - 0x000000000050bc20 MPIR_Attr_free_subtree - 0x000000000050b9f0 MPIR_Attr_copy_subtree - 0x000000000050bd70 MPIR_Keyval_create - 0x000000000050bd40 MPIR_Attr_create_tree - 0x000000000050bd20 MPIR_Attr_dup_tree - *fill* 0x000000000050bea2 0xe 90909090 - .text 0x000000000050beb0 0x2cd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - 0x000000000050beb0 PMPI_Attr_put - 0x000000000050beb0 MPI_Attr_put - *fill* 0x000000000050c17d 0x3 90909090 - .text 0x000000000050c180 0x1bb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - 0x000000000050c180 PMPI_Group_free - 0x000000000050c180 MPI_Group_free - *fill* 0x000000000050c33b 0x5 90909090 - .text 0x000000000050c340 0x3ed /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - 0x000000000050c340 MPIR_CreateGroup - 0x000000000050c480 MPIR_SetToIdentity - 0x000000000050c620 MPIR_Dump_ranges - 0x000000000050c5a0 MPIR_Dump_ranks - 0x000000000050c6b0 MPIR_Powers_of_2 - 0x000000000050c430 MPIR_FreeGroup - 0x000000000050c4d0 MPIR_Dump_group - 0x000000000050c720 MPIR_Group_N2_prev - *fill* 0x000000000050c72d 0x3 90909090 - .text 0x000000000050c730 0x295 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - 0x000000000050c730 MPI_Comm_free - 0x000000000050c730 PMPI_Comm_free - *fill* 0x000000000050c9c5 0xb 90909090 - .text 0x000000000050c9d0 0xc5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - 0x000000000050c9d0 PMPI_Comm_rank - 0x000000000050c9d0 MPI_Comm_rank - *fill* 0x000000000050ca95 0xb 90909090 - .text 0x000000000050caa0 0x1db /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - 0x000000000050caa0 PMPI_Comm_set_name - 0x000000000050caa0 MPI_Comm_set_name - *fill* 0x000000000050cc7b 0x5 90909090 - .text 0x000000000050cc80 0x129 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - 0x000000000050cc80 MPI_Comm_size - 0x000000000050cc80 PMPI_Comm_size - *fill* 0x000000000050cda9 0x7 90909090 - .text 0x000000000050cdb0 0x604 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - 0x000000000050cf40 MPIR_Comm_N2_prev - 0x000000000050d2d0 MPIR_Sort_split_table - 0x000000000050d210 MPIR_Comm_remember - 0x000000000050d290 MPIR_Comm_collops_init - 0x000000000050cdb0 MPIR_Comm_make_coll - 0x000000000050d180 MPIR_Comm_init - 0x000000000050d080 MPIR_Intercomm_high - 0x000000000050d240 MPIR_Comm_forget - 0x000000000050cf60 MPIR_Dump_comm - *fill* 0x000000000050d3b4 0xc 90909090 - .text 0x000000000050d3c0 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - 0x000000000050d3c0 MPIR_Context_alloc - 0x000000000050d4f0 MPIR_Context_dealloc - *fill* 0x000000000050d4f8 0x8 90909090 - .text 0x000000000050d500 0x12 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fn.o) - 0x000000000050d500 MPIR_dup_fn - *fill* 0x000000000050d512 0xe 90909090 - .text 0x000000000050d520 0x11c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - 0x000000000050d520 PMPI_Barrier - 0x000000000050d520 MPI_Barrier - *fill* 0x000000000050d63c 0x4 90909090 - .text 0x000000000050d640 0x2bf /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - 0x000000000050d640 PMPI_Bcast - 0x000000000050d640 MPI_Bcast - *fill* 0x000000000050d8ff 0x1 90909090 - .text 0x000000000050d900 0x395 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - 0x000000000050d900 MPI_Gatherv - 0x000000000050d900 PMPI_Gatherv - *fill* 0x000000000050dc95 0xb 90909090 - .text 0x000000000050dca0 0x3a5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - 0x000000000050dca0 MPI_Allgather - 0x000000000050dca0 PMPI_Allgather - *fill* 0x000000000050e045 0xb 90909090 - .text 0x000000000050e050 0x2cf /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - 0x000000000050e050 PMPI_Allreduce - 0x000000000050e050 MPI_Allreduce - *fill* 0x000000000050e31f 0x1 90909090 - .text 0x000000000050e320 0x54f0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - 0x0000000000510ed0 MPIR_LXOR - 0x000000000050ef30 MPIR_SUM - 0x0000000000510b10 MPIR_BOR - 0x0000000000510450 MPIR_LOR - 0x000000000050e920 MPIR_MINF - 0x000000000050f450 MPIR_PROD - 0x0000000000511b80 MPIR_MAXLOC - 0x000000000050e320 MPIR_MAXF - 0x0000000000510090 MPIR_BAND - 0x00000000005117c0 MPIR_BXOR - 0x00000000005129c0 MPIR_MINLOC - 0x000000000050f9d0 MPIR_LAND - .text 0x0000000000513810 0x159 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - 0x0000000000513810 PMPI_Op_free - 0x0000000000513810 MPI_Op_free - *fill* 0x0000000000513969 0x7 90909090 - .text 0x0000000000513970 0x91 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - 0x0000000000513970 MPIR_Op_setup - *fill* 0x0000000000513a01 0xf 90909090 - .text 0x0000000000513a10 0x2cd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - *fill* 0x0000000000513cdd 0x3 90909090 - .text 0x0000000000513ce0 0x5e67 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - *fill* 0x0000000000519b47 0x9 90909090 - .text 0x0000000000519b50 0x400 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - 0x0000000000519b50 MPIR_intra_Scan - .text 0x0000000000519f50 0x335 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - 0x000000000051a270 MPIR_Topology_finalize - 0x000000000051a240 MPIR_Topology_init - 0x0000000000519fa0 MPIR_Topology_copy_fn - 0x0000000000519f80 MPIR_Topology_Free - 0x0000000000519f50 MPIR_Topology_Init - 0x000000000051a1e0 MPIR_Topology_delete_fn - *fill* 0x000000000051a285 0xb 90909090 - .text 0x000000000051a290 0x8c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - 0x000000000051a290 PMPI_Status_c2f - 0x000000000051a290 MPI_Status_c2f - *fill* 0x000000000051a31c 0x4 90909090 - .text 0x000000000051a320 0x1bf0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - 0x000000000051ad60 in_same_cluster - 0x000000000051a670 p4_get_cluster_masters - 0x000000000051a6f0 p4_get_my_id_from_proc - 0x000000000051a320 p4_post_init - 0x000000000051bb00 get_qualified_hostname - 0x000000000051a630 p4_global_barrier - 0x000000000051a360 p4_machine_type - 0x000000000051acb0 p4_get_my_cluster_id - 0x000000000051a5d0 p4_num_cluster_ids - 0x000000000051bbc0 same_data_representation - 0x000000000051ada0 p4_cluster_shmem_sync - 0x000000000051a5c0 p4_shfree - 0x000000000051a570 p4_shmalloc - 0x000000000051bca0 put_execer_port - 0x000000000051ad00 p4_am_i_cluster_master - 0x000000000051b670 fork_p4 - 0x000000000051ac90 p4_get_my_id - 0x000000000051a5f0 p4_num_total_ids - 0x000000000051b750 zap_p4_processes - 0x000000000051b080 p4_accept_wait_timeout - 0x000000000051bda0 init_usclock - 0x000000000051bd90 clean_execer_port - 0x000000000051ae20 get_pipe - 0x000000000051ae80 setup_conntab - 0x000000000051a330 p4_version - 0x000000000051a6d0 p4_get_cluster_ids - 0x000000000051a610 p4_num_total_slaves - 0x000000000051bc20 p4_proc_info - 0x000000000051a390 p4_initenv - 0x000000000051b0b0 p4_wait_for_end - 0x000000000051bdf0 p4_usclock - 0x000000000051b7d0 zap_remote_p4_processes - .text 0x000000000051bf10 0x121e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - 0x000000000051cef0 send_proc_table - 0x000000000051c1c0 p4_startup - 0x000000000051bf10 bm_start - 0x000000000051c100 p4_create_procgroup - 0x000000000051cd90 sync_with_remotes - 0x000000000051c400 create_bm_processes - 0x000000000051cb10 procgroup_to_proctable - *fill* 0x000000000051d12e 0x2 90909090 - .text 0x000000000051d130 0x10a5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - 0x000000000051e010 receive_proc_table - 0x000000000051d840 create_rm_processes - 0x000000000051d130 rm_start - *fill* 0x000000000051e1d5 0xb 90909090 - .text 0x000000000051e1e0 0x1f79 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - 0x000000000051ee20 net_conn_to_listener - 0x000000000051fbe0 get_inet_addr - 0x000000000051eaa0 net_accept - 0x0000000000520120 p4_make_socket_nonblocking - 0x000000000051f420 net_send - 0x000000000051fc60 p4_print_sock_params - 0x000000000051ff70 mpiexec_reopen_stdin - 0x000000000051fc30 get_inet_addr_str - 0x000000000051fa60 p4_timein_hostbyname - 0x000000000051e270 p4_socket_control - 0x000000000051fef0 dump_sockinfo - 0x000000000051f5d0 net_send_w - 0x000000000051e790 net_setup_listener - 0x000000000051f0e0 net_recv - 0x000000000051fe70 dump_sockaddr - 0x000000000051fa80 gethostbyname_p4 - 0x000000000051e900 net_setup_anon_listener - 0x000000000051f7b0 net_send2 - 0x000000000051fbd0 gethostname_p4 - 0x000000000051e610 net_set_sockbuf_size - 0x000000000051f950 p4_socket_stat - *fill* 0x0000000000520159 0x7 90909090 - .text 0x0000000000520160 0x12e2 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - 0x0000000000520820 p4_accept_sigchild - 0x0000000000520370 net_slave_info - 0x00000000005208d0 net_create_slave - 0x0000000000520780 p4_accept_timeout - 0x0000000000520160 create_remote_processes - *fill* 0x0000000000521442 0xe 90909090 - .text 0x0000000000521450 0xb74 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - 0x00000000005214d0 p4_establish_all_conns - 0x0000000000521450 p4_has_timedout - 0x0000000000521570 establish_connection - 0x0000000000521a40 handle_connection_interrupt - 0x0000000000521680 request_connection - *fill* 0x0000000000521fc4 0xc 90909090 - .text 0x0000000000521fd0 0x1a35 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - 0x00000000005229e0 socket_recv_on_fd - 0x0000000000522d10 sock_msg_avail_on_fd - 0x0000000000522670 socket_recv - 0x0000000000523330 p4_sockets_ready - 0x0000000000523750 p4_look_for_close - 0x0000000000523290 shutdown_p4_socks - 0x0000000000522c60 socket_msgs_available - 0x0000000000522e90 xdr_recv - 0x0000000000523140 wait_for_ack - 0x0000000000523830 p4_wait_for_socket_msg - 0x0000000000522590 socket_close_conn - 0x0000000000521fd0 xdr_send - 0x00000000005231f0 send_ack - 0x00000000005223c0 socket_send - *fill* 0x0000000000523a05 0xb 90909090 - .text 0x0000000000523a10 0xcb1 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - 0x0000000000524440 net_recv_timeout - 0x0000000000523a10 listener - *fill* 0x00000000005246c1 0xf 90909090 - .text 0x00000000005246d0 0xbac /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - 0x00000000005246d0 start_slave - 0x00000000005251c0 getpw_ss - *fill* 0x000000000052527c 0x4 90909090 - .text 0x0000000000525280 0x88 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - 0x00000000005252d0 usc_MD_clock - 0x0000000000525280 usc_init - *fill* 0x0000000000525308 0x8 90909090 - .text 0x0000000000525310 0xc68 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - 0x0000000000525ea0 MPID_SetPktSize - 0x0000000000525f00 MPID_WaitForCompleteRecv - 0x0000000000525650 MPID_Abort - 0x0000000000525310 MPID_Init - 0x0000000000525f40 MPID_Version_name - 0x0000000000525ca0 MPID_Complete_pending - 0x0000000000525ec0 MPID_WaitForCompleteSend - 0x0000000000525830 MPID_End - 0x0000000000525990 MPID_DeviceCheck - *fill* 0x0000000000525f78 0x8 90909090 - .text 0x0000000000525f80 0x348 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) - 0x0000000000525f80 MPID_SendDatatype - 0x0000000000526100 MPID_IsendDatatype - *fill* 0x00000000005262c8 0x8 90909090 - .text 0x00000000005262d0 0x57f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - 0x0000000000526360 MPID_IrecvDatatype - 0x00000000005262d0 MPID_RecvDatatype - *fill* 0x000000000052684f 0x1 90909090 - .text 0x0000000000526850 0x4bb /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - 0x00000000005269e0 MPID_Msg_act - 0x0000000000526850 MPID_Msg_rep - 0x0000000000526b70 MPID_Pack - 0x0000000000526af0 MPID_Pack_size - 0x0000000000526c90 MPID_Unpack - *fill* 0x0000000000526d0b 0x5 90909090 - .text 0x0000000000526d10 0x2f5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - 0x0000000000526d10 MPID_PackMessage - 0x0000000000526e10 MPID_PackMessageFree - 0x0000000000526e50 MPID_UnpackMessageSetup - 0x0000000000526ed0 MPID_UnpackMessageComplete - *fill* 0x0000000000527005 0xb 90909090 - .text 0x0000000000527010 0x13e5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - 0x0000000000527890 MPID_Mem_XDR_ByteDecode - 0x0000000000527e20 MPID_Type_XDR_decode - 0x00000000005272f0 MPID_Type_swap_inplace - 0x0000000000527460 MPID_Mem_convert_len - 0x00000000005274b0 MPID_Mem_XDR_Len - 0x0000000000527010 MPID_BSwap_N_inplace - 0x0000000000527a90 MPID_Type_XDR_encode - 0x0000000000527950 MPID_Mem_XDR_Decode_Logical - 0x0000000000527670 MPID_Mem_XDR_Encode_Logical - 0x0000000000527500 MPID_Mem_XDR_Encode - 0x0000000000527120 MPID_Type_swap_copy - 0x00000000005274c0 MPID_Mem_XDR_Init - 0x00000000005274e0 MPID_Mem_XDR_Free - 0x00000000005275d0 MPID_Mem_XDR_ByteEncode - 0x0000000000527770 MPID_Mem_XDR_Decode - 0x00000000005270b0 MPID_BSwap_N_copy - *fill* 0x00000000005283f5 0xb 90909090 - .text 0x0000000000528400 0xae6 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - 0x0000000000528d60 MPID_SetMsgDebugFlag - 0x0000000000528af0 MPID_Print_Send_Handle - 0x0000000000528da0 MPID_Print_rhandle - 0x0000000000528880 MPID_Get_print_pkt - 0x0000000000528400 MPID_Rndv_print_pkt - 0x0000000000528e10 MPID_Print_Short_data - 0x00000000005285e0 MPID_Print_packet - 0x0000000000528b30 MPID_SetDebugFile - 0x0000000000528890 MPID_Print_mode - 0x0000000000528a20 MPID_Print_pkt_data - 0x0000000000528d90 MPID_PrintMsgDebug - 0x0000000000528d40 MPID_SetDebugFlag - 0x0000000000528dd0 MPID_Print_shandle - 0x0000000000528530 MPID_Cancel_print_pkt - 0x0000000000528c30 MPID_Set_tracefile - 0x0000000000528d30 MPID_SetSpaceDebugFlag - 0x0000000000528d80 MPID_GetMsgDebugFlag - *fill* 0x0000000000528ee6 0xa 90909090 - .text 0x0000000000528ef0 0x4b8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - 0x0000000000529130 MPID_CH_Abort - 0x0000000000528ef0 MPID_CH_InitMsgPass - 0x00000000005291e0 MPID_CH_End - 0x0000000000529370 MPID_CH_Version_name - *fill* 0x00000000005293a8 0x8 90909090 - .text 0x00000000005293b0 0x832 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - 0x0000000000529a60 MPID_CH_Pkt_unpack - 0x0000000000529b50 MPID_GetByteOrder - 0x0000000000529960 MPID_CH_Pkt_pack - 0x00000000005298a0 MPID_CH_Comm_msgrep - 0x00000000005293b0 MPID_CH_Init_hetero - 0x0000000000529b30 MPID_CH_Hetero_free - 0x0000000000529b90 MPID_ByteSwapInt - *fill* 0x0000000000529be2 0xe 90909090 - .text 0x0000000000529bf0 0xd0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - 0x0000000000529bf0 MPID_CH_Wtick - .text 0x0000000000529cc0 0x51b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - 0x000000000052a1a0 MPID_P4_End - 0x0000000000529cc0 MPID_P4_Init - *fill* 0x000000000052a1db 0x5 90909090 - .text 0x000000000052a1e0 0x8da /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - 0x000000000052a790 MPID_Search_unexpected_queue - 0x000000000052a9e0 MPID_Search_unexpected_queue_and_post - 0x000000000052a8a0 MPID_Msg_arrived - 0x000000000052a1e0 MPID_Dump_queues - 0x000000000052a6e0 MPID_Search_unexpected_for_request - 0x000000000052aa60 MPID_InitQueue - 0x000000000052a200 MPID_Dump_queue - 0x000000000052a5a0 MPID_Dequeue - *fill* 0x000000000052aaba 0x6 90909090 - .text 0x000000000052aac0 0x632 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - 0x000000000052aac0 MPID_GetIntParameter - 0x000000000052aaf0 MPID_ArgSqueeze - 0x000000000052ab70 MPID_ProcessArgs - *fill* 0x000000000052b0f2 0xe 90909090 - .text 0x000000000052b100 0x3ee /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - 0x000000000052b300 MPID_SBdestroy - 0x000000000052b100 MPID_SBinit - 0x000000000052b4a0 MPID_SBReleaseAvail - 0x000000000052b440 MPID_SBDump - 0x000000000052b290 MPID_SBalloc - 0x000000000052b1c0 MPID_SBiAllocate - 0x000000000052b360 MPID_SBrelease - 0x000000000052b2e0 MPID_SBPrealloc - 0x000000000052b1a0 MPID_SBfree - 0x000000000052b3b0 MPID_SBFlush - *fill* 0x000000000052b4ee 0x2 90909090 - .text 0x000000000052b4f0 0x52 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - 0x000000000052b4f0 MPID_Process_group_init - *fill* 0x000000000052b542 0xe 90909090 - .text 0x000000000052b550 0xc0a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - 0x000000000052b610 MPID_SendProtoAck - 0x000000000052bd90 MPID_FinishRecvPackets - 0x000000000052b550 MPID_PacketFlowSetup - 0x000000000052b880 MPID_RecvProtoAck - 0x000000000052c130 MPID_PackDelete - *fill* 0x000000000052c15a 0x6 90909090 - .text 0x000000000052c160 0x9fc /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - 0x000000000052c380 MPID_SendCancelOkPacket - 0x000000000052c160 MPID_SendCancelPacket - 0x000000000052c900 MPID_FinishCancelPackets - 0x000000000052c680 MPID_RecvCancelOkPacket - *fill* 0x000000000052cb5c 0x4 90909090 - .text 0x000000000052cb60 0x3b1 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - 0x000000000052cb60 PMPI_Isend - 0x000000000052cb60 MPI_Isend - *fill* 0x000000000052cf11 0xf 90909090 - .text 0x000000000052cf20 0x3c1 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - 0x000000000052cf20 PMPI_Irecv - 0x000000000052cf20 MPI_Irecv - *fill* 0x000000000052d2e1 0xf 90909090 - .text 0x000000000052d2f0 0xad /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - 0x000000000052d2f0 PMPI_Wait - 0x000000000052d2f0 MPI_Wait - *fill* 0x000000000052d39d 0x3 90909090 - .text 0x000000000052d3a0 0xf5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - 0x000000000052d3a0 PMPI_Test - 0x000000000052d3a0 MPI_Test - *fill* 0x000000000052d495 0xb 90909090 - .text 0x000000000052d4a0 0x269 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - 0x000000000052d4a0 MPI_Cancel - 0x000000000052d4a0 PMPI_Cancel - *fill* 0x000000000052d709 0x7 90909090 - .text 0x000000000052d710 0x5fc /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - 0x000000000052d710 PMPI_Waitall - 0x000000000052d710 MPI_Waitall - *fill* 0x000000000052dd0c 0x4 90909090 - .text 0x000000000052dd10 0x271 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - 0x000000000052dd10 PMPI_Sendrecv - 0x000000000052dd10 MPI_Sendrecv - *fill* 0x000000000052df81 0xf 90909090 - .text 0x000000000052df90 0x5df /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - 0x000000000052df90 MPI_Testall - 0x000000000052df90 PMPI_Testall - *fill* 0x000000000052e56f 0x1 90909090 - .text 0x000000000052e570 0x195 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - 0x000000000052e570 PMPI_Get_count - 0x000000000052e570 MPI_Get_count - *fill* 0x000000000052e705 0xb 90909090 - .text 0x000000000052e710 0x21f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - 0x000000000052e710 MPI_Type_commit - 0x000000000052e710 PMPI_Type_commit - *fill* 0x000000000052e92f 0x1 90909090 - .text 0x000000000052e930 0x408 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - 0x000000000052e930 PMPI_Type_contiguous - 0x000000000052e930 MPI_Type_contiguous - *fill* 0x000000000052ed38 0x8 90909090 - .text 0x000000000052ed40 0xe3 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - 0x000000000052ed40 MPI_Type_extent - 0x000000000052ed40 PMPI_Type_extent - *fill* 0x000000000052ee23 0xd 90909090 - .text 0x000000000052ee30 0x1c9 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - 0x000000000052ee30 MPI_Type_free - 0x000000000052ee30 PMPI_Type_free - *fill* 0x000000000052eff9 0x7 90909090 - .text 0x000000000052f000 0x382 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - 0x000000000052f000 MPI_Type_indexed - 0x000000000052f000 PMPI_Type_indexed - *fill* 0x000000000052f382 0xe 90909090 - .text 0x000000000052f390 0x137 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - 0x000000000052f390 MPI_Type_lb - 0x000000000052f390 PMPI_Type_lb - *fill* 0x000000000052f4c7 0x9 90909090 - .text 0x000000000052f4d0 0x146 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - 0x000000000052f4d0 MPI_Type_size - 0x000000000052f4d0 PMPI_Type_size - *fill* 0x000000000052f616 0xa 90909090 - .text 0x000000000052f620 0x8fe /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - 0x000000000052f620 MPI_Type_struct - 0x000000000052f620 PMPI_Type_struct - *fill* 0x000000000052ff1e 0x2 90909090 - .text 0x000000000052ff20 0x266 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - 0x000000000052ff20 PMPI_Pack_size - 0x000000000052ff20 MPI_Pack_size - *fill* 0x0000000000530186 0xa 90909090 - .text 0x0000000000530190 0x3af /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - 0x0000000000530190 PMPI_Pack - 0x0000000000530190 MPI_Pack - *fill* 0x000000000053053f 0x1 90909090 - .text 0x0000000000530540 0x393 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - 0x0000000000530540 PMPI_Unpack - 0x0000000000530540 MPI_Unpack - *fill* 0x00000000005308d3 0xd 90909090 - .text 0x00000000005308e0 0x172 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - 0x00000000005308f0 MPIR_Breakpoint - *fill* 0x0000000000530a52 0xe 90909090 - .text 0x0000000000530a60 0x1ae /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - 0x0000000000530a60 PMPI_Errhandler_set - 0x0000000000530a60 MPI_Errhandler_set - *fill* 0x0000000000530c0e 0x2 90909090 - .text 0x0000000000530c10 0xe1c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - 0x00000000005311b0 MPIR_Unpack2 - 0x00000000005318f0 MPIR_PrintDatatypeUnpack - 0x0000000000531680 MPIR_Elementcnt - 0x0000000000530c10 MPIR_Unpack - 0x00000000005317b0 MPIR_Printcontig2a - 0x0000000000530d00 MPIR_Pack2 - 0x00000000005316f0 MPIR_Printcontig - 0x0000000000531820 MPIR_PrintDatatypePack - 0x0000000000531750 MPIR_Printcontig2 - *fill* 0x0000000000531a2c 0x4 90909090 - .text 0x0000000000531a30 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyvalcreate.o) - 0x0000000000531a30 PMPI_Keyval_create - 0x0000000000531a30 MPI_Keyval_create - *fill* 0x0000000000531a44 0xc 90909090 - .text 0x0000000000531a50 0x2df /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - 0x0000000000531a50 PMPI_Reduce - 0x0000000000531a50 MPI_Reduce - *fill* 0x0000000000531d2f 0x1 90909090 - .text 0x0000000000531d30 0x520 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - 0x0000000000531d40 MD_initenv - 0x0000000000531d70 MD_shfree - 0x0000000000531d50 MD_malloc_hint - 0x0000000000531d60 MD_shmalloc - 0x0000000000531db0 MD_clock - 0x0000000000531d80 MD_set_reference_time - 0x0000000000531e10 data_representation - 0x0000000000531d30 MD_initmem - .text 0x0000000000532250 0x6a2 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - 0x00000000005328e0 p4_set_hard_errors - 0x0000000000532250 p4_soft_errors - 0x0000000000532600 trap_sig_errs - 0x00000000005322a0 p4_error - *fill* 0x00000000005328f2 0xe 90909090 - .text 0x0000000000532900 0xbfd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - 0x0000000000532900 process_args - *fill* 0x00000000005334fd 0x3 90909090 - .text 0x0000000000533500 0x99d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - 0x0000000000533ad0 free_p4_msg - 0x0000000000533820 init_avail_buffs - 0x00000000005335f0 alloc_local_rm - 0x0000000000533930 alloc_p4_msg - 0x0000000000533500 alloc_local_bm - 0x0000000000533720 alloc_local_slave - 0x0000000000533c20 free_avail_buffs - 0x00000000005336d0 alloc_local_listener - 0x0000000000533e10 alloc_listener_info - 0x0000000000533880 p4_print_avail_buffs - 0x0000000000533cb0 alloc_global - 0x00000000005337f0 p4_set_avail_buff - *fill* 0x0000000000533e9d 0x3 90909090 - .text 0x0000000000533ea0 0x7de /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - 0x0000000000534270 dump_local - 0x0000000000534130 dump_global - 0x00000000005343a0 print_conn_type - 0x0000000000533ff0 p4_dprint_last - 0x0000000000533ed0 p4_dprintf - 0x0000000000533ea0 p4_get_dbg_level - 0x00000000005345c0 dump_conntab - 0x0000000000534580 dump_tmsg - 0x0000000000533eb0 p4_set_dbg_level - 0x00000000005344e0 dump_procgroup - 0x0000000000534000 p4_dprintfl - 0x0000000000534480 dump_listener - *fill* 0x000000000053467e 0x2 90909090 - .text 0x0000000000534680 0x4ad /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - 0x00000000005346e0 read_procgroup - 0x0000000000534680 p4_alloc_procgroup - 0x00000000005349e0 install_in_proctable - *fill* 0x0000000000534b2d 0x3 90909090 - .text 0x0000000000534b30 0xc01 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - 0x0000000000535530 initialize_msg_queue - 0x0000000000535550 alloc_quel - 0x0000000000535130 queue_p4_message - 0x00000000005354f0 p4_msg_alloc - 0x0000000000535430 get_tmsg - 0x0000000000535660 free_avail_quels - 0x0000000000535190 send_message - 0x0000000000534f10 recv_message - 0x00000000005356d0 p4_yield - 0x0000000000535510 p4_msg_free - 0x0000000000534f50 p4_any_messages_available - 0x0000000000535620 free_quel - 0x0000000000535000 p4_messages_available - 0x0000000000534b30 search_p4_queue - 0x00000000005356e0 p4_waitformsg - 0x0000000000534d30 p4_recv - *fill* 0x0000000000535731 0xf 90909090 - .text 0x0000000000535740 0x4d3 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - 0x00000000005359d0 p4_askfor - 0x0000000000535b80 p4_progend - 0x0000000000535940 p4_barrier_init - 0x0000000000535860 num_in_mon_queue - 0x0000000000535800 p4_mexit - 0x0000000000535830 p4_mcontinue - 0x0000000000535810 p4_mdelay - 0x0000000000535880 p4_getsub_init - 0x0000000000535b40 p4_probend - 0x0000000000535960 p4_barrier - 0x00000000005358a0 p4_getsubs - 0x00000000005357f0 p4_menter - 0x0000000000535af0 p4_update - 0x00000000005359b0 p4_askfor_init - 0x0000000000535740 p4_moninit - 0x0000000000535bc0 p4_create - *fill* 0x0000000000535c13 0xd 90909090 - .text 0x0000000000535c20 0x1188 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - 0x0000000000536a30 p4_flt_absmin_op - 0x0000000000536cc0 p4_int_absmin_op - 0x0000000000536950 p4_flt_absmax_op - 0x00000000005364d0 p4_dbl_sum_op - 0x00000000005365c0 p4_dbl_min_op - 0x0000000000536220 p4_global_op - 0x0000000000536710 p4_dbl_absmin_op - 0x0000000000536810 p4_flt_sum_op - 0x0000000000536860 p4_flt_mult_op - 0x0000000000535c20 p4_broadcastx - 0x0000000000536520 p4_dbl_mult_op - 0x0000000000535cf0 subtree_broadcast_p4 - 0x0000000000536b90 p4_int_max_op - 0x0000000000536bd0 p4_int_min_op - 0x0000000000536c10 p4_int_absmax_op - 0x0000000000536b10 p4_int_sum_op - 0x0000000000536610 p4_dbl_absmax_op - 0x0000000000536b50 p4_int_mult_op - 0x0000000000536900 p4_flt_min_op - 0x0000000000536570 p4_dbl_max_op - 0x00000000005368b0 p4_flt_max_op - *fill* 0x0000000000536da8 0x8 90909090 - .text 0x0000000000536db0 0x948 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - 0x0000000000537480 MPID_RecvComplete - 0x0000000000536e40 MPID_IrecvContig - 0x00000000005376f0 MPID_Status_set_bytes - 0x0000000000537220 MPID_RecvIcomplete - 0x0000000000536db0 MPID_RecvContig - *fill* 0x00000000005376f8 0x8 90909090 - .text 0x0000000000537700 0x763 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - 0x0000000000537b40 MPID_SendIcomplete - 0x0000000000537700 MPID_SendContig - 0x0000000000537c30 MPID_SendComplete - 0x0000000000537a00 MPID_BsendContig - 0x0000000000537870 MPID_IsendContig - *fill* 0x0000000000537e63 0xd 90909090 - .text 0x0000000000537e70 0x479 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - 0x0000000000538150 MPID_RecvCancel - 0x0000000000537e70 MPID_SendCancel - *fill* 0x00000000005382e9 0x7 90909090 - .text 0x00000000005382f0 0x1976 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - 0x0000000000539ba0 MPID_CH_Eagerb_delete - 0x00000000005382f0 MPID_CH_Eagerb_send - 0x0000000000539bb0 MPID_CH_Eagerb_setup - 0x0000000000539870 MPID_CH_Eagerb_cancel_send - 0x0000000000538960 MPID_CH_Eagerb_recv - 0x0000000000539880 MPID_CH_Eagerb_irecv - 0x00000000005391d0 MPID_CH_Eagerb_isend - 0x0000000000538ea0 MPID_CH_Eagerb_save - 0x0000000000538c60 MPID_CH_Eagerb_unxrecv_start - *fill* 0x0000000000539c66 0xa 90909090 - .text 0x0000000000539c70 0x25a0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - 0x000000000053bd80 MPID_CH_Rndvb_save_self - 0x0000000000539c70 MPID_CH_Rndvb_isend - 0x000000000053b8c0 MPID_CH_Rndvb_ack - 0x000000000053a1f0 MPID_CH_Rndvb_send - 0x000000000053a2f0 MPID_CH_Rndvb_irecv - 0x000000000053ac80 MPID_CH_Rndvb_ok_to_send - 0x000000000053c150 MPID_CH_Rndvb_delete - 0x000000000053aa70 MPID_CH_Rndvb_save - 0x000000000053b5d0 MPID_CH_Rndvb_unxrecv_test_end - 0x000000000053c160 MPID_CH_Rndvb_setup - 0x000000000053bea0 MPID_CH_Rndvb_unxrecv_start_self - 0x000000000053aea0 MPID_CH_Rndvb_unxrecv_start - 0x000000000053b1b0 MPID_CH_Rndvb_unxrecv_end - .text 0x000000000053c210 0xf63 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - 0x000000000053c210 MPID_CH_Check_incoming - *fill* 0x000000000053d173 0xd 90909090 - .text 0x000000000053d180 0x18ca /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - 0x000000000053e9a0 MPID_CH_Short_setup - 0x000000000053e4b0 MPID_CH_Eagerb_unxrecv_start_short - 0x000000000053d9c0 MPID_CH_Eagerb_isend_short - 0x000000000053e6f0 MPID_CH_Eagerb_save_short - 0x000000000053e220 MPID_CH_Eagerb_recv_short - 0x000000000053d180 MPID_CH_Eagerb_send_short - 0x000000000053e990 MPID_CH_Eagerb_short_delete - *fill* 0x000000000053ea4a 0x6 90909090 - .text 0x000000000053ea50 0x4be /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - 0x000000000053ea70 MPID_SendFlowPacket - 0x000000000053edd0 MPID_FlowDelete - 0x000000000053ec30 MPID_RecvFlowPacket - 0x000000000053edf0 MPID_FlowDump - 0x000000000053ea50 MPID_FlowDebug - 0x000000000053ecd0 MPID_FlowSetup - *fill* 0x000000000053ef0e 0x2 90909090 - .text 0x000000000053ef10 0x61e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - 0x000000000053ef10 PMPI_Type_hindexed - 0x000000000053ef10 MPI_Type_hindexed - *fill* 0x000000000053f52e 0x2 90909090 - .text 0x000000000053f530 0x48c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dmpipk.o) - 0x000000000053f530 MPIR_Pack_Hvector - 0x000000000053f9b0 MPIR_HvectorLen - 0x000000000053f770 MPIR_UnPack_Hvector - .text 0x000000000053f9bc 0x2f4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - 0x000000000053fc2c __hpfio_cleanup - 0x000000000053fc05 pgcrf90io_close - 0x000000000053fb87 pgf90io_close - 0x000000000053faa3 __hpfio_close - .text 0x000000000053fcb0 0xc0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) - 0x000000000053fd10 pghpfio_usw_read - 0x000000000053fce0 pghpfio_ldr - 0x000000000053fd28 pghpfio_usw_write - 0x000000000053fcc8 pghpfio_fmt_write - 0x000000000053fcb0 pghpfio_fmt_read - 0x000000000053fcf8 pghpfio_ldw - 0x000000000053fd58 pghpfio_unf_write - 0x000000000053fd40 pghpfio_unf_read - .text 0x000000000053fd70 0xace /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - 0x000000000054081b pgcrf90io_encode_fmtv - 0x00000000005407f3 pgf90io_encode_fmtv - 0x00000000005407cc pgcrf90io_encode_fmt - 0x00000000005407a0 pgf90io_encode_fmt - *fill* 0x000000000054083e 0x2 90909090 - .text 0x0000000000540840 0x9ba /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - 0x0000000000540aff __hpfio_errmsg - 0x0000000000540cb7 __hpfio_eorerr - 0x0000000000540f05 pgf90io_src_info - 0x0000000000540f1b pgcrf90io_src_info - 0x00000000005408e0 __hpfio_error - 0x0000000000540840 __hpfio_errinit - 0x00000000005411c5 __hpfio_check_format - 0x0000000000540b90 __hpfio_eoferr - *fill* 0x00000000005411fa 0x2 90909090 - .text 0x00000000005411fc 0x2759 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - 0x0000000000541a85 pgf90io_fmt_read_a - 0x000000000054170c pgcrf90io_fmtr_intern_init - 0x0000000000541adb pgcrf90io_fmt_read - 0x0000000000541794 pgcrf90io_fmtr_intern_initv - 0x000000000054139d pgf90io_fmtr_init - 0x000000000054181f pgcrf90io_fmtr_intern_inite - 0x00000000005418c5 __f90io_fmt_read - 0x00000000005417a5 pgf90io_fmtr_intern_inite - 0x0000000000543947 pgcrf90io_fmtr_end - 0x0000000000541833 pgf90io_fmtr_intern_initev - 0x0000000000541443 pgcrf90io_fmtr_init - 0x0000000000543939 pgf90io_fmtr_end - 0x000000000054147a pgf90io_fmtr_initv - 0x0000000000541ab1 pgf90io_fmt_read64_a - 0x0000000000541a59 pgf90io_fmt_read - 0x000000000054171a pgf90io_fmtr_intern_initv - 0x00000000005418ae pgcrf90io_fmtr_intern_initev - 0x0000000000541693 pgf90io_fmtr_intern_init - 0x0000000000541520 pgcrf90io_fmtr_initv - *fill* 0x0000000000543955 0x3 90909090 - .text 0x0000000000543958 0x2390 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - 0x0000000000543bb7 pgcrf90io_fmtw_init - 0x0000000000543b14 pgf90io_fmtw_init - 0x0000000000543edd pgf90io_fmtw_intern_inite - 0x000000000054419c pgcrf90io_fmt_write - 0x0000000000543e31 pgf90io_fmtw_intern_initv - 0x0000000000543ebb pgcrf90io_fmtw_intern_initv - 0x0000000000544177 pgf90io_fmt_write64_a - 0x0000000000544152 pgf90io_fmt_write_a - 0x0000000000545ccc pgf90io_fmtw_end - 0x0000000000543c8f pgcrf90io_fmtw_initv - 0x0000000000543f92 pgf90io_fmtw_intern_initev - 0x0000000000543e12 pgcrf90io_fmtw_intern_init - 0x0000000000543bec pgf90io_fmtw_initv - 0x000000000054412d pgf90io_fmt_write - 0x0000000000543d88 pgf90io_fmtw_intern_init - 0x0000000000545cda pgcrf90io_fmtw_end - 0x0000000000543f6a pgcrf90io_fmtw_intern_inite - 0x000000000054401f pgcrf90io_fmtw_intern_initev - 0x000000000054404a __f90io_fmt_write - .text 0x0000000000545ce8 0x24a /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - 0x0000000000545f11 pgcrf90_pause - 0x0000000000545df8 pgcrf90_stop - 0x0000000000545dd7 pgf90_stop - 0x0000000000545d16 pgcrf90_exit - 0x0000000000545ce8 pgf90_exit - 0x0000000000545ee6 pgf90_pause - *fill* 0x0000000000545f32 0x2 90909090 - .text 0x0000000000545f34 0x1008 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - 0x0000000000546f2e pgcrf90io_ldr_end - 0x000000000054636b pgcrf90io_ldr - 0x0000000000546126 pgf90io_ldr_intern_inite - 0x0000000000546030 pgcrf90io_ldr_init - 0x0000000000546315 pgf90io_ldr_a - 0x00000000005460b1 pgf90io_ldr_intern_init - 0x000000000054618e pgcrf90io_ldr_intern_inite - 0x000000000054603e f90io_ldr_intern_init - 0x0000000000546f20 pgf90io_ldr_end - 0x0000000000545fd7 pgf90io_ldr_init - 0x0000000000546341 pgf90io_ldr64_a - 0x0000000000546118 pgcrf90io_ldr_intern_init - 0x00000000005462e9 pgf90io_ldr - 0x00000000005461d5 __f90io_ldr - .text 0x0000000000546f3c 0x918 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - 0x000000000054747f pgcrf90io_ldw - 0x0000000000547127 pgf90io_ldw_intern_init - 0x0000000000547262 __f90io_ldw - 0x0000000000547841 pgcrf90io_ldw_end - 0x000000000054745a pgf90io_ldw64_a - 0x0000000000547410 pgf90io_ldw - 0x000000000054723a pgcrf90io_ldw_intern_inite - 0x00000000005471be pgf90io_ldw_intern_inite - 0x0000000000547079 pgcrf90io_ldw_init - 0x0000000000547016 pgf90io_ldw_init - 0x000000000054782e pgf90io_ldw_end - 0x0000000000547435 pgf90io_ldw_a - 0x000000000054719f pgcrf90io_ldw_intern_init - .text 0x0000000000547854 0xfe8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - 0x0000000000547854 __hpfio_open - 0x000000000054855b pgf90io_open_cvt - 0x0000000000548367 pgf90io_open - 0x0000000000548616 pgcrf90io_open - 0x0000000000548786 pgcrf90io_open_cvt - .text 0x000000000054883c 0xfd /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - 0x000000000054892b pgcrf90io_rewind - 0x00000000005488e4 pgf90io_rewind - *fill* 0x0000000000548939 0x3 90909090 - .text 0x000000000054893c 0x1b8f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - 0x0000000000548e44 pgf90io_unf_read_a - 0x0000000000548ed8 __f90io_unf_write - 0x0000000000548bc5 __f90io_unf_read - 0x0000000000548e6e pgf90io_unf_read64_a - 0x0000000000549350 pgf90io_byte_write64 - 0x00000000005498d4 __f90io_usw_read - 0x0000000000549304 pgf90io_unf_write64_a - 0x000000000054a074 pgf90io_usw_write - 0x00000000005492da pgf90io_unf_write_a - 0x0000000000549c06 __f90io_usw_write - 0x0000000000549bb2 pgf90io_usw_read_a - 0x0000000000548eba pgf90io_byte_read64 - 0x000000000054936e __f90io_unf_end - 0x0000000000548e98 pgf90io_byte_read - 0x000000000054a4bd pgf90io_usw_end - 0x0000000000548b5e pgf90io_unf_init - 0x00000000005497c0 __f90io_usw_init - 0x000000000054986d pgf90io_usw_init - 0x00000000005497b2 pgf90io_unf_end - 0x00000000005492b0 pgf90io_unf_write - 0x000000000054932e pgf90io_byte_write - 0x0000000000548e1a pgf90io_unf_read - 0x000000000054a09e pgf90io_usw_write_a - 0x0000000000549bdc pgf90io_usw_read64_a - 0x0000000000548983 __f90io_unf_init - 0x0000000000549b88 pgf90io_usw_read - 0x000000000054a0c8 pgf90io_usw_write64_a - 0x000000000054a0f2 __f90io_usw_end - *fill* 0x000000000054a4cb 0x1 90909090 - .text 0x000000000054a4cc 0x682 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - 0x000000000054a910 __hpfio_zeropad - 0x000000000054a4cc __hpfio_alloc_fcb - 0x000000000054a985 __hpfio_eq_str - 0x000000000054a586 __hpfio_rwinit - 0x000000000054a8f1 __hpfio_find_unit - 0x000000000054a540 __hpfio_free_fcb - 0x000000000054a9ee __hpfio_swap_bytes - *fill* 0x000000000054ab4e 0x2 90909090 - .text 0x000000000054ab50 0xb21 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - 0x000000000054ab50 __hpf_atoxi32 - 0x000000000054ad6b __hpf_atoxi64 - 0x000000000054adaa __hpf_i64toax - *fill* 0x000000000054b671 0x3 90909090 - .text 0x000000000054b674 0x97f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - 0x000000000054bd31 pgf90_ptr_calloc - 0x000000000054b774 pghpf_ptr_offset - 0x000000000054b7a8 __hpf_alloc - 0x000000000054ba90 ftn_allocate - 0x000000000054bdb0 __hpf_dealloc - 0x000000000054bd88 __hpf_local_allocate - 0x000000000054bcd3 pgf90_calloc - 0x000000000054b6be __hpf_ptr_offset - 0x000000000054bfc3 __hpf_deallocate - 0x000000000054bb0d pgf90_alloc - 0x000000000054becd ftn_dealloc - 0x000000000054bfa7 pgf90_deallocx - 0x000000000054ba31 ftn_allocated - 0x000000000054bfdb __hpf_local_deallocate - 0x000000000054ba6f pgf90_kallocated - 0x000000000054bee0 pgf90_dealloc - 0x000000000054bd60 __hpf_allocate - 0x000000000054b674 __hpf_ptr_aligned - 0x000000000054b9c7 __hpf_allocated - 0x000000000054ba50 pgf90_allocated - 0x000000000054bb0c __f90_allo_term - 0x000000000054beba ftn_deallocate - 0x000000000054bd02 pgf90_ptr_alloc - 0x000000000054bad0 ftn_alloc - *fill* 0x000000000054bff3 0x1 90909090 - .text 0x000000000054bff4 0x9ad /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - 0x000000000054c8aa __hpf_entry_asend_done - 0x000000000054c5f2 __hpf_entry_recv - 0x000000000054c24c pghpf_line_entry - 0x000000000054c6e0 __hpf_entry_send_done - 0x000000000054bff4 __hpf_entry_init - 0x000000000054c5ad pghpf_tracecall - 0x000000000054c970 __hpf_entry_term - 0x000000000054c68a __hpf_entry_send - 0x000000000054c099 pghpf_function_entry - 0x000000000054c8ec __hpf_entry_await - 0x000000000054c92e __hpf_entry_await_done - 0x000000000054c276 __hpf_traceback - 0x000000000054c3fa __hpf_tracecall - 0x000000000054c722 __hpf_entry_copy - 0x000000000054c207 pghpf_function_exit - 0x000000000054c801 __hpf_entry_arecv_done - 0x000000000054c3e7 pghpf_traceback - 0x000000000054c79a __hpf_entry_arecv - 0x000000000054c758 __hpf_entry_copy_done - 0x000000000054c648 __hpf_entry_recv_done - 0x000000000054c843 __hpf_entry_asend - *fill* 0x000000000054c9a1 0x3 90909090 - .text 0x000000000054c9a4 0x1d0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - 0x000000000054cacb __hpfio_stat_bcst - 0x000000000054cabb __hpfio_stat_init - 0x000000000054c9a4 __hpfio_loop - 0x000000000054ca11 __hpf_status_init - 0x000000000054ca21 __hpf_status_bcst - .text 0x000000000054cb74 0x227 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) - 0x000000000054cc6b __hpfio_main - *fill* 0x000000000054cd9b 0x1 90909090 - .text 0x000000000054cd9c 0xeed /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - 0x000000000054cda3 __hpf_ncpus - 0x000000000054d055 __hpf_getopt - 0x000000000054cd9c __hpf_myprocnum - 0x000000000054ce33 __hpf_abortp - 0x000000000054cdb1 __hpf_is_ioproc - 0x000000000054d86e __hpf_passargs - 0x000000000054db22 pghpf_init - 0x000000000054cdaa __hpf_getioproc - 0x000000000054cdc4 __hpf_abort - 0x000000000054d2a4 __hpf_getoptb - 0x000000000054dc62 pgf90_compiled - 0x000000000054ce68 __hpf_exit - 0x000000000054dc01 __hpf_pull_them_in - 0x000000000054d734 __hpf_procargs - 0x000000000054d22c __hpf_getoptn - 0x000000000054cf21 __hpf_getenv - *fill* 0x000000000054dc89 0x3 90909090 - .text 0x000000000054dc8c 0x788 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - 0x000000000054dc8c __hpf_malloc_without_abort - 0x000000000054dd9c __hpf_calloc_without_abort - 0x000000000054de25 __hpf_free - 0x000000000054e396 __hpf_gmalloc - 0x000000000054e406 __hpf_gfree - 0x000000000054e3f8 __hpf_gcalloc - 0x000000000054dd01 __hpf_realloc - 0x000000000054ddeb __hpf_calloc - 0x000000000054dce4 __hpf_malloc - 0x000000000054e32d __hpf_gmalloc_without_abort - 0x000000000054e3e0 __hpf_gcalloc_without_abort - 0x000000000054e3d2 __hpf_grealloc - .text 0x000000000054e414 0xe58 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - 0x000000000054e463 pghpf_nullify - 0x000000000054e4e0 pghpf_nullify_char - 0x000000000054f113 pghpf_associated - 0x000000000054f233 pgf90_ptrchk - 0x000000000054ea02 pghpf_ptr_assign - 0x000000000054ee67 pghpf_ptr_in_char - 0x000000000054eee6 pghpf_ptr_out - 0x000000000054f151 pghpf_associated_char - 0x000000000054f013 __hpf_associated - 0x000000000054ef95 pghpf_ptr_out_char - 0x000000000054f261 pgf90_ptrcp - 0x000000000054f17f pgf90_subchk - 0x000000000054eca0 pghpf_ptr_assign_charx - 0x000000000054ee4a pghpf_ptr_in - 0x000000000054f1d7 pgf90_subchk64 - 0x000000000054e54e pghpf_nullifyx - 0x000000000054eaf3 pghpf_ptr_assign_char - 0x000000000054e700 pghpf_ptr_asgn - 0x000000000054e7e1 pghpf_ptr_asgn_char - 0x000000000054ebb6 pghpf_ptr_assignx - .text 0x000000000054f26c 0x30de /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - 0x00000000005505ff pghpf_template - 0x0000000000550fcf pgf90_template3 - 0x0000000000550391 __hpf_copy_out - 0x0000000000551bb8 pgf90_copy_f77_argsl - 0x000000000055184c pgf90_copy_f77_argw - 0x000000000054f5e8 pghpf_qopy_in - 0x00000000005515e3 pghpf_freen - 0x00000000005512ff pgf90_template3v - 0x0000000000551575 pghpf_free - 0x000000000055145d pghpf_instance - 0x00000000005511f6 pgf90_template2v - 0x0000000000551142 pgf90_template1v - 0x000000000054f26c __hpf_stored_alike - 0x0000000000551dd6 pgf90_copy_f90_arg - 0x0000000000550eb7 pgf90_template2 - 0x0000000000552086 pgf90_copy_f90_argl - 0x000000000054f55d is_nonsequential_section - 0x000000000055057c pghpf_check_block_size - 0x0000000000550dfa pgf90_template1 - 0x0000000000550556 pghpf_copy_out - 0x00000000005516a9 pgf90_copy_f77_arg - 0x0000000000550c2d pgf90_template - 0x00000000005519fb pgf90_copy_f77_argl - *fill* 0x000000000055234a 0x2 90909090 - .text 0x000000000055234c 0x1ff /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) - 0x0000000000552416 __hpf_rrecv - 0x0000000000552532 __hpf_rbcst - 0x000000000055234c __hpf_rrecvl - 0x0000000000552448 __hpf_rbcstl - 0x000000000055242f __hpf_rsend - 0x00000000005523b1 __hpf_rsendl - *fill* 0x000000000055254b 0x1 90909090 - .text 0x000000000055254c 0x64 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - 0x000000000055254c __hpf_print_version - .text 0x00000000005525b0 0x796 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - 0x0000000000552c62 __hpf_chn_prune - 0x0000000000552c0e __hpf_getgbuf - 0x00000000005529bc __hpf_chain_em_up - 0x0000000000552652 __hpf_frechn - 0x000000000055270d __hpf_rstchn - 0x0000000000552be8 __hpf_setbase - 0x00000000005525b0 __hpf_allchn - 0x0000000000552891 __hpf_recvl - 0x00000000005529dd __hpf_adjbase - 0x0000000000552766 __hpf_sendl - *fill* 0x0000000000552d46 0x2 90909090 - .text 0x0000000000552d48 0x241 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - 0x0000000000552d90 __hpf_gettb - 0x0000000000552d48 __hpf_setarg - 0x0000000000552f12 __hpf_second - *fill* 0x0000000000552f89 0x3 90909090 - .text 0x0000000000552f8c 0x9a3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - 0x00000000005532e5 __hpf_allocated_i8 - 0x00000000005538ff __hpf_deallocate_i8 - 0x00000000005533ae ftn_allocate_i8 - 0x0000000000553602 pgf90_calloc_i8 - 0x000000000055381b pgf90_dealloc_i8 - 0x00000000005536eb __hpf_dealloc_i8 - 0x00000000005533f1 ftn_alloc_i8 - 0x0000000000552f8c __hpf_ptr_aligned_i8 - 0x000000000055308a pghpf_ptr_offset_i8 - 0x0000000000553664 pgf90_ptr_calloc_i8 - 0x00000000005538e3 pgf90_deallocx_i8 - 0x000000000055338d pgf90_kallocated_i8 - 0x0000000000553633 pgf90_ptr_alloc_i8 - 0x00000000005536c0 __hpf_local_allocate_i8 - 0x0000000000553917 __hpf_local_deallocate_i8 - 0x0000000000553430 __f90_allo_term_i8 - 0x0000000000553431 pgf90_alloc_i8 - 0x00000000005537f5 ftn_deallocate_i8 - 0x0000000000552fd5 __hpf_ptr_offset_i8 - 0x000000000055336e pgf90_allocated_i8 - 0x0000000000553808 ftn_dealloc_i8 - 0x0000000000553695 __hpf_allocate_i8 - 0x000000000055334f ftn_allocated_i8 - 0x00000000005530be __hpf_alloc_i8 - *fill* 0x000000000055392f 0x1 90909090 - .text 0x0000000000553930 0x2de /usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - 0x0000000000553930 __hpfio_assign - *fill* 0x0000000000553c0e 0x2 90909090 - .text 0x0000000000553c10 0x18d3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x00000000005548ef __hpfio_fmt_e - 0x0000000000554a17 __hpfio_fmt_f - 0x0000000000553c28 __hpfio_default_convert - 0x0000000000554293 __hpfio_fmt_i8 - 0x0000000000554122 __hpfio_fmt_i - 0x0000000000554585 __hpfio_fmt_d - 0x0000000000555426 __hpfio_chk_f - 0x0000000000553c10 __hpfio_printbigreal - 0x0000000000554677 __hpfio_fmt_g - *fill* 0x00000000005554e3 0x1 90909090 - .text 0x00000000005554e4 0x359 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - 0x00000000005554e4 __hpfio_getnum - *fill* 0x000000000055583d 0x3 90909090 - .text 0x0000000000555840 0x13da /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - 0x0000000000556a9d __hpfio_fcvt - 0x00000000005569b5 __hpfio_ecvt - 0x000000000055695a __hpfio_strtod - *fill* 0x0000000000556c1a 0x2 90909090 - .text 0x0000000000556c1c 0xcf /usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - 0x0000000000556c1c __hpf_atol - 0x0000000000556c6a __hpf_strtol - *fill* 0x0000000000556ceb 0x1 90909090 - .text 0x0000000000556cec 0x582d /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - 0x0000000000556ee7 pghpf_owner - 0x000000000055b1d7 pghpf_kuboundaz - 0x0000000000557a4c __hpf_defaultproc - 0x0000000000557ba4 __hpf_set_alignment - 0x000000000055701e __hpf_next_owner - 0x000000000055745d __hpf_cycle_bounds - 0x000000000055b031 pghpf_lboundaz - 0x0000000000557b3d __hpf_localproc - 0x000000000055b224 pghpf_size - 0x0000000000558241 pgf90_sect - 0x0000000000557e07 __hpf_finish_section - 0x000000000055acfc __hpf_copy_descriptor - 0x0000000000557d88 __hpf_set_section - 0x0000000000557740 pghpf_localize_bounds - 0x0000000000559190 pgf90_sect2v - 0x0000000000556cec __hpf_new_gen_block - 0x000000000055a863 pghpf_sect3v - 0x000000000055b359 pghpf_kshape - 0x000000000055b29d pghpf_ksize - 0x0000000000557508 pghpf_cyclic_loop - 0x000000000055746c __hpf_cyclic_loop - 0x0000000000559d13 pgf90_sect3v - 0x000000000055b074 pghpf_klbounda - 0x0000000000557399 pghpf_localize_index - 0x0000000000556cf2 __hpf_gen_block_bounds - 0x000000000055b316 pghpf_shape - 0x000000000055758a block_setup - 0x0000000000556fbf __hpf_describe_replication - 0x000000000055ae4b pghpf_lbound - 0x0000000000557c67 __hpf_finish_descriptor - 0x0000000000558cb6 pgf90_sect2 - 0x0000000000557cec __hpf_set_sectionx - 0x000000000055a350 pghpf_sect3 - 0x000000000055716b __hpf_localize - 0x0000000000557c37 __hpf_use_allocation - 0x000000000055b18e pghpf_kubounda - 0x0000000000557c3f __hpf_set_single - 0x0000000000556de1 int_mult_upper - 0x000000000055ad96 pghpf_glextent - 0x000000000055af81 pghpf_kubound - 0x000000000055aeb0 pghpf_klbound - 0x00000000005595ed pgf90_sect3 - 0x0000000000557941 pghpf_processors - 0x000000000055b0b7 pghpf_klboundaz - 0x000000000055afee pghpf_lbounda - 0x0000000000556df0 _int_mult_upper - 0x000000000055723d __hpf_local_offset - 0x000000000055b0fc pghpf_ubounda - 0x000000000055af16 pghpf_ubound - 0x0000000000556e02 __hpf_gcd - 0x0000000000557069 pghpf_islocal_idx - 0x0000000000557070 __hpf_islocal - 0x000000000055ad7f pghpf_extent - 0x0000000000558729 pgf90_sect1 - 0x00000000005589ff pgf90_sect1v - 0x000000000055b39e __hpf_reverse_array - 0x0000000000557e2e pghpf_sect - 0x0000000000557082 pghpf_islocal - 0x0000000000557231 pghpf_localize_dim - 0x000000000055b145 pghpf_uboundaz - 0x000000000055768e __hpf_block_loop - 0x0000000000556eb2 __hpf_lcm - 0x0000000000556ee1 __hpf_owner - 0x000000000055764b pghpf_block_loop - 0x00000000005572a0 __hpf_local_address - 0x000000000055ad34 __hpf_inherit_template - 0x00000000005576e9 __hpf_block_bounds - *fill* 0x000000000055c519 0x3 90909090 - .text 0x000000000055c51c 0x218 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - 0x000000000055c55b __hpf_comm_sked - 0x000000000055c65f pghpf_comm_free - 0x000000000055c59a pghpf_comm_start - 0x000000000055c5c7 pghpf_comm_execute - 0x000000000055c5c6 pghpf_comm_finish - .text 0x000000000055c734 0x105f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - 0x000000000055d39a pghpf_transpose - 0x000000000055d240 pghpf_copy_section - 0x000000000055d2ec pghpf_comm_copy - 0x000000000055cbed __hpf_copy - 0x000000000055d47a pghpf_copy_scalar - 0x000000000055d0e0 pghpf_permute_section - 0x000000000055cb61 copy_setup - *fill* 0x000000000055d793 0x1 90909090 - .text 0x000000000055d794 0x5a /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - 0x000000000055d7ac __hpf_endpar - 0x000000000055d7e9 __hpf_barrier - 0x000000000055d7eb pghpf_tid - 0x000000000055d7ad __hpf_begpar - 0x000000000055d7ea pghpf_barrier - 0x000000000055d794 __hpf_abortx - *fill* 0x000000000055d7ee 0x2 90909090 - .text 0x000000000055d7f0 0xc9 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - 0x000000000055d803 __hpf_esend - 0x000000000055d816 __hpf_ebcopys - 0x000000000055d7f0 __hpf_erecv - 0x000000000055d859 __hpf_doit - *fill* 0x000000000055d8b9 0x3 90909090 - .text 0x000000000055d8bc 0x7a /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - 0x000000000055d8bc __pgget_hpfio_cnfg_default_name - 0x000000000055d8e2 __hpfio_scratch_name - 0x000000000055d8c4 __pgget_hpfio_cnfg_true_mask - 0x000000000055d8d3 __pgget_hpfio_cnfg_ftn_true - 0x000000000055d8da __pgget_hpfio_cnfg_ftn_true_addr - 0x000000000055d8cb __pgget_hpfio_cnfg_true_mask_addr - *fill* 0x000000000055d936 0x2 90909090 - .text 0x000000000055d938 0x13 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopy.o) - 0x000000000055d938 __hpf_bcopy - *fill* 0x000000000055d94b 0x1 90909090 - .text 0x000000000055d94c 0x3d7 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopys.o) - 0x000000000055d94c __hpf_bcopysl - *fill* 0x000000000055dd23 0x1 90909090 - .text 0x000000000055dd24 0x183 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - 0x000000000055de53 __hpf_zwrite - 0x000000000055de8e __hpf_zclose - 0x000000000055dd24 __hpf_zopen - 0x000000000055de87 __hpf_ztell - *fill* 0x000000000055dea7 0x1 90909090 - .text 0x000000000055dea8 0x28b /usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) - 0x000000000055dea8 __hpf_chn_1to1 - *fill* 0x000000000055e133 0x1 90909090 - .text 0x000000000055e134 0x166 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x000000000055e134 __hpf_init_consts - *fill* 0x000000000055e29a 0x2 90909090 - .text 0x000000000055e29c 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof.o) - 0x000000000055e29c __hpf_prof_init - 0x000000000055e2a8 __hpf_prof_copy - 0x000000000055e2a7 __hpf_prof_send_done - 0x000000000055e2a2 __hpf_prof_function_entry - 0x000000000055e2a9 __hpf_prof_copy_done - 0x000000000055e2aa __hpf_prof_function_exit - 0x000000000055e2a6 __hpf_prof_send - 0x000000000055e2a4 __hpf_prof_recv - 0x000000000055e2a3 __hpf_prof_line_entry - 0x000000000055e2a5 __hpf_prof_recv_done - 0x000000000055e2ab __hpf_prof_term - .text 0x000000000055e2ac 0x6 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof2.o) - 0x000000000055e2af __hpf_prof_asend_done - 0x000000000055e2b1 __hpf_prof_await_done - 0x000000000055e2ac __hpf_prof_arecv - 0x000000000055e2ae __hpf_prof_asend - 0x000000000055e2ad __hpf_prof_arecv_done - 0x000000000055e2b0 __hpf_prof_await - *fill* 0x000000000055e2b2 0x2 90909090 - .text 0x000000000055e2b4 0x17e /usr/pgi/linux86-64/6.0/lib/libpgf902.a(genlist.o) - 0x000000000055e384 __hpf_genlist - 0x000000000055e2b4 __hpf_initndx - 0x000000000055e34f __hpf_findndx - *fill* 0x000000000055e432 0x2 90909090 - .text 0x000000000055e434 0x1b7 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - 0x000000000055e434 __hpf_psignal - 0x000000000055e530 __hpf_sethand - *fill* 0x000000000055e5eb 0x1 90909090 - .text 0x000000000055e5ec 0xea6 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - 0x000000000055f3a4 __hpf_stat_recv_done - 0x000000000055f403 __hpf_stat_arecv - 0x000000000055e63a __hpf_stat_init - 0x000000000055f490 __hpf_stat_line_entry - 0x000000000055f3d3 __hpf_stat_send_done - 0x000000000055f462 __hpf_stat_await_done - 0x000000000055e5ec pghpf_times - 0x000000000055f376 __hpf_stat_recv - 0x000000000055f432 __hpf_stat_asend - 0x000000000055f3a5 __hpf_stat_send - 0x000000000055f1da __hpf_stat_term - 0x000000000055f461 __hpf_stat_await - 0x000000000055f3d4 __hpf_stat_copy - 0x000000000055f460 __hpf_stat_asend_done - 0x000000000055f491 __hpf_stat_function_exit - 0x000000000055f431 __hpf_stat_arecv_done - 0x000000000055f463 pghpf_msgstats - 0x000000000055f402 __hpf_stat_copy_done - 0x000000000055f48f __hpf_stat_function_entry - *fill* 0x000000000055f492 0x2 90909090 - .text 0x000000000055f494 0xec /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - 0x000000000055f571 __hpf_trac_line_entry - 0x000000000055f575 __hpf_trac_send_done - 0x000000000055f57f __hpf_trac_term - 0x000000000055f573 __hpf_trac_recv_done - 0x000000000055f577 __hpf_trac_copy_done - 0x000000000055f578 __hpf_trac_function_exit - 0x000000000055f576 __hpf_trac_copy - 0x000000000055f511 __hpf_trac_function_entry - 0x000000000055f574 __hpf_trac_send - 0x000000000055f572 __hpf_trac_recv - 0x000000000055f494 __hpf_trac_init - .text 0x000000000055f580 0x6 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace2.o) - 0x000000000055f584 __hpf_trac_await - 0x000000000055f581 __hpf_trac_arecv_done - 0x000000000055f585 __hpf_trac_await_done - 0x000000000055f583 __hpf_trac_asend_done - 0x000000000055f580 __hpf_trac_arecv - 0x000000000055f582 __hpf_trac_asend - *fill* 0x000000000055f586 0x2 90909090 - .text 0x000000000055f588 0x1c /usr/pgi/linux86-64/6.0/lib/libpgf902.a(xfer_heap_dum.o) - 0x000000000055f59e __hpf_hrecv - 0x000000000055f597 __hpf_hinit - 0x000000000055f588 __hpf_sbrk - 0x000000000055f598 __hpf_hsend - 0x000000000055f596 __hpf_verghp - .text 0x000000000055f5a4 0xe /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(dacos.o) - 0x000000000055f5a4 __mth_i_dacos - *fill* 0x000000000055f5b2 0x2 90909090 - .text 0x000000000055f5b4 0x4f2 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - 0x000000000055f9f9 ftn_str_malloc - 0x000000000055f85f ftn_str_index - 0x000000000055f5b4 ftn_str_copy - 0x000000000055fa89 ftn_str_free - 0x000000000055f8ca ftn_strcmp - *fill* 0x000000000055faa6 0x2 90909090 - .text 0x000000000055faa8 0x22 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(flush3f.o) - 0x000000000055faa8 flush_ - *fill* 0x000000000055faca 0x2 90909090 - .text 0x000000000055facc 0x67 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) - 0x000000000055facc getenv_ - *fill* 0x000000000055fb33 0x1 90909090 - .text 0x000000000055fb34 0x53 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(fdate3f.o) - 0x000000000055fb34 fdate_ - *fill* 0x000000000055fb87 0x1 90909090 - .text 0x000000000055fb88 0x8c /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getarg3f.o) - 0x000000000055fc13 pgftn_arg_init - 0x000000000055fb88 getarg_ - 0x000000000055fbfe iargc_ - .text 0x000000000055fc14 0x3f1 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - 0x000000000055ffd1 fcvt - 0x000000000055ff9d ecvt - *fill* 0x0000000000560005 0x3 90909090 - .text 0x0000000000560008 0x135 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(utils3f.o) - 0x000000000056005d __cstr_free - 0x0000000000560070 __fcp_cstr - 0x0000000000560008 __fstr2cstr - 0x00000000005600ae __isatty3f - 0x00000000005600f7 __getfile3f - *fill* 0x000000000056013d 0x3 90909090 - .text 0x0000000000560140 0x80c /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - 0x0000000000560810 __fio_swap_bytes - 0x000000000056078f __fio_putwchar - 0x00000000005601b9 __fio_free_fcb - 0x000000000056072d __fio_num_euc - 0x000000000056051c __fio_zeropad - 0x0000000000560683 __fio_euc2wchar - 0x00000000005601ff __fio_rwinit - 0x00000000005604fd __fio_find_unit - 0x0000000000560140 __fio_alloc_fcb - 0x0000000000560591 __fio_eq_str - 0x00000000005605fa __fio_wchar2euc - .text 0x000000000056094c 0x86f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - 0x000000000056094c __fio_errinit - 0x00000000005609cc __fio_error - 0x0000000000560bda __fio_errmsg - 0x0000000000561186 __fio_check_format - 0x0000000000560f1f fio_src_info - 0x0000000000560c75 __fio_eoferr - *fill* 0x00000000005611bb 0x1 90909090 - .text 0x00000000005611bc 0x58 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - 0x00000000005611bc ftn_exit - .text 0x0000000000561214 0xb47 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - 0x0000000000561214 fio_open - 0x00000000005615df __fio_open - 0x0000000000561b7e fio_nopen - 0x0000000000561ca5 fio_open_cvt - *fill* 0x0000000000561d5b 0x1 90909090 - .text 0x0000000000561d5c 0x1c0 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - 0x0000000000561e5d __fio_close - 0x0000000000561d5c fio_close - .text 0x0000000000561f1c 0x90 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - 0x0000000000561f1c __fio_scratch_name - .text 0x0000000000561fac 0x1 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - 0x0000000000561fac __pc_set_tmp - *fill* 0x0000000000561fad 0x3 90909090 - .text 0x0000000000561fb0 0x99 /usr/lib64/libc_nonshared.a(elf-init.oS) - 0x0000000000562010 __libc_csu_fini - 0x0000000000561fb0 __libc_csu_init - *fill* 0x0000000000562049 0x7 90909090 - .text 0x0000000000562050 0x18 /usr/lib64/libc_nonshared.a(atexit.oS) - 0x0000000000562050 atexit - *fill* 0x0000000000562068 0x8 90909090 - .text 0x0000000000562070 0x12e /usr/pgi/linux86-64/6.0/lib/libnspgc.a(pgdbg_utils.o) - 0x0000000000562100 __set_xmmreg - 0x0000000000562190 __pgdbg_stub - 0x0000000000562070 __get_xmmreg - *fill* 0x000000000056219e 0x2 90909090 - .text 0x00000000005621a0 0x16f7 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - 0x00000000005637e6 __utl_i_dflt64 - 0x00000000005621a0 __utl_i_add64 - 0x000000000056385a __utl_i_flt64 - 0x00000000005637af __utl_i_dfix64 - 0x00000000005624f5 __utl_i_udiv64 - 0x00000000005622a9 __utl_i_mul64 - 0x000000000056230a __utl_i_div64 - 0x000000000056381d __utl_i_fix64 - 0x0000000000562220 __utl_i_sub64 - *fill* 0x0000000000563897 0x1 90909090 - .text 0x0000000000563898 0x84 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - 0x0000000000563898 __mth_i_dpowi - *fill* 0x000000000056391c 0x4 90909090 - .text 0x0000000000563920 0x26 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dfloatuk.o) - 0x0000000000563920 __mth_i_dfloatuk - *fill* 0x0000000000563946 0xa 90909090 - .text 0x0000000000563950 0x5c /usr/pgi/linux86-64/6.0/lib/libpgc.a(dint.o) - 0x0000000000563950 __mth_i_dint - .text 0x00000000005639ac 0x1fa /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) - 0x00000000005639ac __pgio_environ - 0x0000000000563b44 __pgio_fwrite - 0x0000000000563a89 __pgio_ferror - 0x0000000000563acb __pgio_binary_mode - 0x0000000000563a72 __pgio_feof - 0x00000000005639b9 __pgio_errno - 0x0000000000563ab1 __pgio_isatty - 0x0000000000563aa0 __pgio_getfd - 0x0000000000563a1e __pgio_putc - 0x0000000000563b73 __pgio_timezone - 0x00000000005639fa __pgio_stderr - 0x00000000005639e0 __pgio_stdin - 0x0000000000563a46 __pgio_putchar - 0x0000000000563a3b __pgio_getchar - 0x00000000005639c6 __pgio_set_errno - 0x0000000000563ada __pgio_ispipe - 0x0000000000563a5b __pgio_clearerr - 0x0000000000563a07 __pgio_getc - 0x00000000005639ed __pgio_stdout - *fill* 0x0000000000563ba6 0x2 90909090 - .text 0x0000000000563ba8 0xfc /usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - 0x0000000000563c2a _mp_realloc - 0x0000000000563be5 _mp_calloc - 0x0000000000563ba8 _mp_malloc - 0x0000000000563c6f _mp_free - .text 0x0000000000563ca4 0x2e /usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - 0x0000000000563cbd _mp_ecs_stdio - 0x0000000000563ca4 _mp_bcs_stdio - *fill* 0x0000000000563cd2 0x2 90909090 - .text 0x0000000000563cd4 0x257 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - 0x0000000000563ee7 __pgio_tempnam - *fill* 0x0000000000563f2b 0x1 90909090 - .text 0x0000000000563f2c 0x660 /usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - 0x00000000005642df __builtin_va_memarg - 0x000000000056434e __builtin_va_genarg - 0x000000000056419d __builtin_va_fparg1 - 0x0000000000564067 __builtin_va_gparg1 - 0x0000000000564212 __builtin_va_fpargs - 0x00000000005640d6 __builtin_va_gpargs - 0x0000000000563f2c dmp_va_list - .text 0x000000000056458c 0x40 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - 0x000000000056458c __pgio_get_argv - 0x00000000005645ba __pgio_set_argc - 0x00000000005645ae __pgio_get_argc - 0x0000000000564599 __pgio_set_argv - *fill* 0x00000000005645cc 0x4 90909090 - .text 0x00000000005645d0 0x217a /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - 0x00000000005645d0 __mth_dsincos - 0x0000000000565510 __mth_i_dsin - 0x0000000000565bd0 __mth_i_dcos - *fill* 0x000000000056674a 0x6 90909090 - .text 0x0000000000566750 0xa5f /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - 0x0000000000566750 __mth_i_dtan - *fill* 0x00000000005671af 0x1 90909090 - .text 0x00000000005671b0 0x2be /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - 0x00000000005671b0 __mth_i_datan - *fill* 0x000000000056746e 0x2 90909090 - .text 0x0000000000567470 0x33fc /usr/pgi/linux86-64/6.0/lib/libpgc.a(fastmath.o) - 0x0000000000568480 __fmth_i_exp - 0x0000000000568ba0 __fmth_i_dlog - 0x0000000000567f50 __fmth_i_dexp - 0x0000000000568570 __fvsexp - 0x000000000056a6a0 __fmth_i_alog - 0x0000000000567a20 __fmth_i_dpowd - 0x0000000000567910 __fvdpow - 0x0000000000569bd0 __fvslog - 0x0000000000567580 __fmth_i_rpowr - 0x00000000005682e0 __fvdexp - 0x0000000000567470 __fvspow - 0x0000000000569380 __fvdlog - *fill* 0x000000000056a86c 0x4 90909090 - .text 0x000000000056a870 0x54 /usr/pgi/linux86-64/6.0/lib/libpgc.a(crit_dum.o) - 0x000000000056a890 _mp_p - 0x000000000056a880 _mp_ecs - 0x000000000056a870 _mp_bcs - 0x000000000056a8a0 _mp_v - 0x000000000056a8c0 _mp_incr - 0x000000000056a8b0 _mp_ptest - *fill* 0x000000000056a8c4 0xc 90909090 - .text 0x000000000056a8d0 0xf /usr/lib64/libc_nonshared.a(fstat.oS) - 0x000000000056a8d0 fstat - 0x000000000056a8d0 __fstat - *fill* 0x000000000056a8df 0x1 90909090 - .text 0x000000000056a8e0 0x36 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - *fill* 0x000000000056a916 0x2 90909090 - *(.text.*personality*) - *(.gnu.warning) - -.fini 0x000000000056a918 0xe - *(.fini) - .fini 0x000000000056a918 0x4 /usr/lib64/crti.o - 0x000000000056a918 _fini - .fini 0x000000000056a91c 0x5 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - .fini 0x000000000056a921 0x5 /usr/lib64/crtn.o - 0x000000000056a926 PROVIDE (__etext, .) - 0x000000000056a926 PROVIDE (_etext, .) - 0x000000000056a926 PROVIDE (etext, .) - -.rodata 0x000000000056a940 0x5560 - *(.rodata .rodata.* .gnu.linkonce.r.*) - .rodata 0x000000000056a940 0x4 /usr/lib64/crt1.o - 0x000000000056a940 _IO_stdin_used - .rodata 0x000000000056a944 0x3 proc_proc.o - .rodata.str1.1 - 0x000000000056a947 0x17 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - *fill* 0x000000000056a95e 0x2 00 - .rodata 0x000000000056a960 0x390 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - .rodata.str1.1 - 0x000000000056acf0 0x2f3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - 0x2f7 (size before relaxing) - *fill* 0x000000000056afe3 0x1d 00 - .rodata.str1.32 - 0x000000000056b000 0x127f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - *fill* 0x000000000056c27f 0x1 00 - .rodata 0x000000000056c280 0x31 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - .rodata.str1.1 - 0x000000000056c2b1 0x3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - 0x12 (size before relaxing) - *fill* 0x000000000056c2b4 0x4 00 - .rodata 0x000000000056c2b8 0x634 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - .rodata.str1.1 - 0x000000000056c8ec 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - 0x21 (size before relaxing) - *fill* 0x000000000056c8f4 0x4 00 - .rodata 0x000000000056c8f8 0x4e0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - .rodata.str1.1 - 0x000000000056cdd8 0x51 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - 0x57 (size before relaxing) - *fill* 0x000000000056ce29 0x17 00 - .rodata.str1.32 - 0x000000000056ce40 0x36 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - .rodata.str1.1 - 0x000000000056ce76 0x13 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - *fill* 0x000000000056ce89 0x7 00 - .rodata 0x000000000056ce90 0x4e8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - .rodata.str1.1 - 0x000000000056d378 0x1d /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - 0x35 (size before relaxing) - .rodata.str1.1 - 0x000000000056d395 0xbe /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - 0xea (size before relaxing) - .rodata.str1.1 - 0x000000000056d453 0x0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - 0x7 (size before relaxing) - .rodata.str1.1 - 0x000000000056d453 0x23 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - *fill* 0x000000000056d476 0xa 00 - .rodata.str1.32 - 0x000000000056d480 0x67 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - .rodata.str1.1 - 0x000000000056d4e7 0x43 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - .rodata.str1.1 - 0x000000000056d52a 0xca /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - 0xde (size before relaxing) - *fill* 0x000000000056d5f4 0xc 00 - .rodata.str1.32 - 0x000000000056d600 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - .rodata.str1.32 - 0x000000000056d6a0 0xaf /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - .rodata.str1.1 - 0x000000000056d74f 0xe /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - *fill* 0x000000000056d75d 0x3 00 - .rodata.str1.32 - 0x000000000056d760 0x30f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - .rodata.str1.1 - 0x000000000056da6f 0xa9 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - .rodata.str1.1 - 0x000000000056db18 0x59 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - 0x5d (size before relaxing) - *fill* 0x000000000056db71 0xf 00 - .rodata.str1.32 - 0x000000000056db80 0x503 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - .rodata.str1.1 - 0x000000000056e083 0x32 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - 0x36 (size before relaxing) - *fill* 0x000000000056e0b5 0xb 00 - .rodata.str1.32 - 0x000000000056e0c0 0x88 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - *fill* 0x000000000056e148 0x18 00 - .rodata.str1.32 - 0x000000000056e160 0x22 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - *fill* 0x000000000056e182 0x6 00 - .rodata.cst8 0x000000000056e188 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - 0x18 (size before relaxing) - .rodata.str1.1 - 0x000000000056e198 0xd /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - .rodata.str1.32 - 0x000000000056e1a5 0x0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - 0x67 (size before relaxing) - *fill* 0x000000000056e1a5 0x3 00 - .rodata 0x000000000056e1a8 0x2d8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - .rodata.str1.1 - 0x000000000056e480 0x41 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x47 (size before relaxing) - *fill* 0x000000000056e4c1 0x7 00 - .rodata 0x000000000056e4c8 0xc8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - .rodata.cst8 0x000000000056e590 0x0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x8 (size before relaxing) - .rodata.str1.1 - 0x000000000056e590 0xb /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - *fill* 0x000000000056e59b 0x5 00 - .rodata 0x000000000056e5a0 0x270 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - *fill* 0x000000000056e810 0x10 00 - .rodata.str1.32 - 0x000000000056e820 0x332 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - .rodata.str1.1 - 0x000000000056eb52 0x54 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - *fill* 0x000000000056eba6 0x2 00 - .rodata 0x000000000056eba8 0xc0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - *fill* 0x000000000056ec68 0x18 00 - .rodata.str1.32 - 0x000000000056ec80 0x5f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - .rodata.str1.1 - 0x000000000056ecdf 0xb3 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - *fill* 0x000000000056ed92 0xe 00 - .rodata.str1.32 - 0x000000000056eda0 0x4a7 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - .rodata.str1.1 - 0x000000000056f247 0x0 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - 0x5 (size before relaxing) - .rodata.str1.1 - 0x000000000056f247 0x3a /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - *fill* 0x000000000056f281 0x1f 00 - .rodata.str1.32 - 0x000000000056f2a0 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - .rodata.str1.1 - 0x000000000056f2bf 0xc /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - .rodata.str1.1 - 0x000000000056f2cb 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - .rodata.str1.1 - 0x000000000056f2ea 0x115 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x13f (size before relaxing) - .rodata.str1.1 - 0x000000000056f3ff 0x87 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - 0x8f (size before relaxing) - *fill* 0x000000000056f486 0x1a 00 - .rodata.str1.32 - 0x000000000056f4a0 0x61 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - .rodata.str1.1 - 0x000000000056f501 0x57 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - 0x59 (size before relaxing) - .rodata.cst8 0x000000000056f558 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - 0x70 (size before relaxing) - .rodata.str1.32 - 0x000000000056f580 0x34f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - .rodata.str1.1 - 0x000000000056f8cf 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - *fill* 0x000000000056f8ef 0x11 00 - .rodata.str1.32 - 0x000000000056f900 0x31 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - *fill* 0x000000000056f931 0xf 00 - .rodata.str1.32 - 0x000000000056f940 0x39 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - *fill* 0x000000000056f979 0x7 00 - .rodata 0x000000000056f980 0x30 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - .rodata.str1.1 - 0x000000000056f9b0 0x12 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - 0x309 (size before relaxing) - *fill* 0x000000000056f9c2 0x1e 00 - .rodata.str1.32 - 0x000000000056f9e0 0x4f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - 0x11ff (size before relaxing) - *fill* 0x000000000056fa2f 0x11 00 - .rodata 0x000000000056fa40 0x31 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - .rodata.str1.1 - 0x000000000056fa71 0xb /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - 0xaf (size before relaxing) - .rodata.str1.1 - 0x000000000056fa7c 0x0 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - 0x17 (size before relaxing) - .rodata.str1.1 - 0x000000000056fa7c 0x11 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - 0x1d (size before relaxing) - *fill* 0x000000000056fa8d 0x3 00 - .rodata 0x000000000056fa90 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - .rodata 0x000000000056fa98 0x12 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - *fill* 0x000000000056faaa 0x6 00 - .rodata 0x000000000056fab0 0x90 /usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - .rodata 0x000000000056fb40 0x128 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - .rodata.cst8 0x000000000056fc68 0xe0 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - 0x278 (size before relaxing) - .rodata 0x000000000056fd48 0x68 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - .rodata.cst8 0x000000000056fdb0 0x68 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - 0xf8 (size before relaxing) - .rodata.cst8 0x000000000056fe18 0x88 /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - 0xc8 (size before relaxing) - -.rodata1 - *(.rodata1) - -.eh_frame_hdr - *(.eh_frame_hdr) - -.eh_frame - *(.eh_frame) - -.gcc_except_table - *(.gcc_except_table) - *(.gcc_except_table.*) - 0x000000000056fea0 . = (ALIGN (0x100000) - ((0x100000 - .) & 0xfffff)) - 0x0000000000670000 . = (0x100000 DATA_SEGMENT_ALIGN 0x1000) - -.eh_frame 0x0000000000670000 0x6d2c - *(.eh_frame) - .eh_frame 0x0000000000670000 0x38 /usr/pgi/linux86-64/6.0/lib/f90main.o - .eh_frame 0x0000000000670038 0x80 proc_proc.o - 0x98 (size before relaxing) - .eh_frame 0x00000000006700b8 0xb8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - 0xd0 (size before relaxing) - .eh_frame 0x0000000000670170 0x100 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) - 0x118 (size before relaxing) - .eh_frame 0x0000000000670270 0x1c8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - 0x1e0 (size before relaxing) - .eh_frame 0x0000000000670438 0x168 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - 0x180 (size before relaxing) - .eh_frame 0x00000000006705a0 0x580 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - 0x598 (size before relaxing) - .eh_frame 0x0000000000670b20 0x588 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - 0x5a0 (size before relaxing) - .eh_frame 0x00000000006710a8 0x108 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - 0x120 (size before relaxing) - .eh_frame 0x00000000006711b0 0x3c8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - 0x3e0 (size before relaxing) - .eh_frame 0x0000000000671578 0x290 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - 0x2a8 (size before relaxing) - .eh_frame 0x0000000000671808 0x138 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - 0x150 (size before relaxing) - .eh_frame 0x0000000000671940 0x68 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - 0x80 (size before relaxing) - .eh_frame 0x00000000006719a8 0x4c0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - 0x4d8 (size before relaxing) - .eh_frame 0x0000000000671e68 0x108 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - 0x120 (size before relaxing) - .eh_frame 0x0000000000671f70 0x108 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - 0x120 (size before relaxing) - .eh_frame 0x0000000000672078 0x320 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - 0x338 (size before relaxing) - .eh_frame 0x0000000000672398 0x300 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - 0x318 (size before relaxing) - .eh_frame 0x0000000000672698 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - 0xb8 (size before relaxing) - .eh_frame 0x0000000000672738 0x78 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) - 0x90 (size before relaxing) - .eh_frame 0x00000000006727b0 0x368 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - 0x380 (size before relaxing) - .eh_frame 0x0000000000672b18 0x260 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - 0x278 (size before relaxing) - .eh_frame 0x0000000000672d78 0x3e0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - 0x3f8 (size before relaxing) - .eh_frame 0x0000000000673158 0x4d0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - 0x4e8 (size before relaxing) - .eh_frame 0x0000000000673628 0xd0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) - 0xe8 (size before relaxing) - .eh_frame 0x00000000006736f8 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000673718 0x198 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - 0x1b0 (size before relaxing) - .eh_frame 0x00000000006738b0 0x88 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - 0xa0 (size before relaxing) - .eh_frame 0x0000000000673938 0x320 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - 0x338 (size before relaxing) - .eh_frame 0x0000000000673c58 0x88 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - 0xa0 (size before relaxing) - .eh_frame 0x0000000000673ce0 0x370 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x388 (size before relaxing) - .eh_frame 0x0000000000674050 0x40 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - 0x58 (size before relaxing) - .eh_frame 0x0000000000674090 0x320 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - 0x338 (size before relaxing) - .eh_frame 0x00000000006743b0 0x40 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - 0x58 (size before relaxing) - .eh_frame 0x00000000006743f0 0xa68 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - 0xa80 (size before relaxing) - .eh_frame 0x0000000000674e58 0xe8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - 0x100 (size before relaxing) - .eh_frame 0x0000000000674f40 0x228 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - 0x240 (size before relaxing) - .eh_frame 0x0000000000675168 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - 0xb8 (size before relaxing) - .eh_frame 0x0000000000675208 0x90 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - 0xa8 (size before relaxing) - .eh_frame 0x0000000000675298 0x98 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - 0xb0 (size before relaxing) - .eh_frame 0x0000000000675330 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopy.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000675350 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopys.o) - 0x40 (size before relaxing) - .eh_frame 0x0000000000675378 0x80 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - 0x98 (size before relaxing) - .eh_frame 0x00000000006753f8 0x40 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) - 0x58 (size before relaxing) - .eh_frame 0x0000000000675438 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x40 (size before relaxing) - .eh_frame 0x0000000000675460 0x108 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof.o) - 0x120 (size before relaxing) - .eh_frame 0x0000000000675568 0x90 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof2.o) - 0xa8 (size before relaxing) - .eh_frame 0x00000000006755f8 0x68 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(genlist.o) - 0x80 (size before relaxing) - .eh_frame 0x0000000000675660 0x68 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - 0x80 (size before relaxing) - .eh_frame 0x00000000006756c8 0x2e0 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - 0x2f8 (size before relaxing) - .eh_frame 0x00000000006759a8 0x118 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - 0x130 (size before relaxing) - .eh_frame 0x0000000000675ac0 0x90 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace2.o) - 0xa8 (size before relaxing) - .eh_frame 0x0000000000675b50 0x80 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(xfer_heap_dum.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000675bd0 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(dacos.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000675bf0 0xc0 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - 0xd8 (size before relaxing) - .eh_frame 0x0000000000675cb0 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(flush3f.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000675cd0 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) - 0x40 (size before relaxing) - .eh_frame 0x0000000000675cf8 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(fdate3f.o) - 0x40 (size before relaxing) - .eh_frame 0x0000000000675d20 0x60 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getarg3f.o) - 0x78 (size before relaxing) - .eh_frame 0x0000000000675d80 0x80 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000675e00 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(utils3f.o) - 0xb8 (size before relaxing) - .eh_frame 0x0000000000675ea0 0x168 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - 0x180 (size before relaxing) - .eh_frame 0x0000000000676008 0x118 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - 0x130 (size before relaxing) - .eh_frame 0x0000000000676120 0x20 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000676140 0xe0 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - 0xf8 (size before relaxing) - .eh_frame 0x0000000000676220 0x48 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - 0x60 (size before relaxing) - .eh_frame 0x0000000000676268 0x20 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - 0x38 (size before relaxing) - .eh_frame 0x0000000000676288 0x18 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - 0x30 (size before relaxing) - .eh_frame 0x00000000006762a0 0x58 /usr/lib64/libc_nonshared.a(elf-init.oS) - .eh_frame 0x00000000006762f8 0x18 /usr/lib64/libc_nonshared.a(atexit.oS) - 0x30 (size before relaxing) - .eh_frame 0x0000000000676310 0x388 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - .eh_frame 0x0000000000676698 0x20 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - 0x38 (size before relaxing) - .eh_frame 0x00000000006766b8 0x260 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) - 0x278 (size before relaxing) - .eh_frame 0x0000000000676918 0x80 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000676998 0x40 /usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - 0x58 (size before relaxing) - .eh_frame 0x00000000006769d8 0x80 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000676a58 0xe0 /usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - 0xf8 (size before relaxing) - .eh_frame 0x0000000000676b38 0x80 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - 0x98 (size before relaxing) - .eh_frame 0x0000000000676bb8 0xc8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - .eh_frame 0x0000000000676c80 0x78 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - 0x90 (size before relaxing) - .eh_frame 0x0000000000676cf8 0x18 /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - 0x30 (size before relaxing) - .eh_frame 0x0000000000676d10 0x18 /usr/lib64/libc_nonshared.a(fstat.oS) - 0x30 (size before relaxing) - .eh_frame 0x0000000000676d28 0x4 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - -.gcc_except_table - *(.gcc_except_table) - *(.gcc_except_table.*) - -.tdata - *(.tdata .tdata.* .gnu.linkonce.td.*) - -.tbss - *(.tbss .tbss.* .gnu.linkonce.tb.*) - *(.tcommon) - 0x0000000000676d30 . = ALIGN (0x8) - 0x0000000000676d30 PROVIDE (__preinit_array_start, .) - -.preinit_array - *(.preinit_array) - 0x0000000000676d30 PROVIDE (__preinit_array_end, .) - 0x0000000000676d30 PROVIDE (__init_array_start, .) - -.init_array - *(.init_array) - 0x0000000000676d30 PROVIDE (__init_array_end, .) - 0x0000000000676d30 PROVIDE (__fini_array_start, .) - -.fini_array - *(.fini_array) - 0x0000000000676d30 PROVIDE (__fini_array_end, .) - -.ctors 0x0000000000676d30 0x10 - *crtbegin*.o(.ctors) - *(EXCLUDE_FILE(*crtend*.o) .ctors) - .ctors 0x0000000000676d30 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - *(SORT(.ctors.*)) - *(.ctors) - .ctors 0x0000000000676d38 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - -.dtors 0x0000000000676d40 0x10 - *crtbegin*.o(.dtors) - *(EXCLUDE_FILE(*crtend*.o) .dtors) - .dtors 0x0000000000676d40 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - *(SORT(.dtors.*)) - *(.dtors) - .dtors 0x0000000000676d48 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - -.jcr 0x0000000000676d50 0x8 - *(.jcr) - .jcr 0x0000000000676d50 0x8 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - -.data.rel.ro - *(.data.rel.ro.local) - *(.data.rel.ro*) - -.dynamic 0x0000000000676d58 0x1b0 - *(.dynamic) - .dynamic 0x0000000000676d58 0x1b0 /usr/lib64/crt1.o - 0x0000000000676d58 _DYNAMIC - -.got 0x0000000000676f08 0x10 - *(.got) - .got 0x0000000000676f08 0x10 /usr/lib64/crt1.o - 0x0000000000676f18 . = (. DATA_SEGMENT_RELRO_END 0x18) - -.got.plt 0x0000000000676f18 0x4b0 - *(.got.plt) - .got.plt 0x0000000000676f18 0x4b0 /usr/lib64/crt1.o - 0x0000000000676f18 _GLOBAL_OFFSET_TABLE_ - -.data 0x00000000006773e0 0x229f8 - *(.data .data.* .gnu.linkonce.d.*) - .data 0x00000000006773e0 0x4 /usr/lib64/crt1.o - 0x00000000006773e0 data_start - 0x00000000006773e0 __data_start - *fill* 0x00000000006773e4 0x4 00 - .data 0x00000000006773e8 0x10 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - 0x00000000006773e8 __dso_handle - *fill* 0x00000000006773f8 0x8 00 - .data 0x0000000000677400 0x920 main_clust.o - .data 0x0000000000677d20 0x30 arcos.o - *fill* 0x0000000000677d50 0x10 00 - .data 0x0000000000677d60 0x1d8 cartprint.o - *fill* 0x0000000000677f38 0x8 00 - .data 0x0000000000677f40 0x268 chainbuild.o - .data 0x00000000006781a8 0x60 convert.o - *fill* 0x0000000000678208 0x18 00 - .data 0x0000000000678220 0x570 initialize_p.o - 0x0000000000678580 names_ - 0x0000000000678350 potentials_ - 0x0000000000678360 namterm_ - .data 0x0000000000678790 0x30 matmult.o - .data 0x00000000006787c0 0xdc0 readrtns.o - .data 0x0000000000679580 0x20 pinorm.o - .data 0x00000000006795a0 0xb8 rescode.o - *fill* 0x0000000000679658 0x8 00 - .data 0x0000000000679660 0x80 intcor.o - .data 0x00000000006796e0 0x118 timing.o - *fill* 0x00000000006797f8 0x8 00 - .data 0x0000000000679800 0xa0 misc.o - .data 0x00000000006798a0 0x7e8 geomout.o - *fill* 0x000000000067a088 0x8 00 - .data 0x000000000067a090 0x240 readpdb.o - .data 0x000000000067a2d0 0x6d0 read_coords.o - .data 0x000000000067a9a0 0xdb8 parmread.o - *fill* 0x000000000067b758 0x8 00 - .data 0x000000000067b760 0x148 probabl.o - *fill* 0x000000000067b8a8 0x18 00 - .data 0x000000000067b8c0 0x2f0 fitsq.o - *fill* 0x000000000067bbb0 0x10 00 - .data 0x000000000067bbc0 0x410 hc.o - .data 0x000000000067bfd0 0x3a0 track.o - *fill* 0x000000000067c370 0x10 00 - .data 0x000000000067c380 0x5f0 wrtclust.o - .data 0x000000000067c970 0x130 srtclust.o - .data 0x000000000067caa0 0x70 noyes.o - .data 0x000000000067cb10 0xc8 contact.o - *fill* 0x000000000067cbd8 0x8 00 - .data 0x000000000067cbe0 0x118 printmat.o - *fill* 0x000000000067ccf8 0x8 00 - .data 0x000000000067cd00 0x198 int_from_cart1.o - *fill* 0x000000000067ce98 0x8 00 - .data 0x000000000067cea0 0x2828 energy_p_new.o - .data 0x000000000067f6c8 0x10 icant.o - *fill* 0x000000000067f6d8 0x8 00 - .data 0x000000000067f6e0 0x130 work_partition.o - .data 0x000000000067f810 0x28 setup_var.o - .data 0x000000000067f838 0x22 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - *fill* 0x000000000067f85a 0x2 00 - *fill* 0x000000000067f85c 0x4 00 - .data 0x000000000067f860 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - 0x000000000067f8a0 MPIR_F_STATUSES_IGNORE - 0x000000000067f860 MPIR_F_TRUE - 0x000000000067f870 MPIR_F_FALSE - 0x000000000067f880 MPIR_F_MPI_BOTTOM - 0x000000000067f890 MPIR_F_STATUS_IGNORE - *fill* 0x000000000067f8c4 0xc 00 - .data 0x000000000067f8d0 0x154 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - *fill* 0x000000000067fa24 0xc 00 - .data 0x000000000067fa30 0x39 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - *fill* 0x000000000067fa69 0x7 00 - .data 0x000000000067fa70 0x39 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - *fill* 0x000000000067faa9 0x7 00 - .data 0x000000000067fab0 0x3e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - *fill* 0x000000000067faee 0x2 00 - .data 0x000000000067faf0 0x3a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - *fill* 0x000000000067fb2a 0x2 00 - *fill* 0x000000000067fb2c 0x4 00 - .data 0x000000000067fb30 0x299 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - 0x000000000067fd90 MPIR_Dump_Ptrs - 0x000000000067fda0 MPICHX_QOS_BANDWIDTH - 0x000000000067fdb0 MPICHX_QOS_PARAMETERS - 0x000000000067fd40 MPIR_COMM_SELF - 0x000000000067fd20 MPIR_Infotable_max - 0x000000000067fd70 MPIR_Print_queues - 0x000000000067fd30 MPIR_COMM_WORLD - 0x000000000067fd10 MPIR_Infotable_ptr - 0x000000000067fd80 MPIR_Dump_Mem - 0x000000000067fd00 MPIR_Infotable - 0x000000000067fd60 MPIR_Has_been_initialized - 0x000000000067fd50 MPIR_GROUP_EMPTY - *fill* 0x000000000067fdc9 0x3 00 - *fill* 0x000000000067fdcc 0x4 00 - .data 0x000000000067fdd0 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - 0x000000000067fdd0 MPIR_PACKED_PTR - *fill* 0x000000000067fdd8 0x8 00 - .data 0x000000000067fde0 0x34 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - *fill* 0x000000000067fe14 0xc 00 - .data 0x000000000067fe20 0x3a54 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - *fill* 0x0000000000683874 0xc 00 - .data 0x0000000000683880 0x378 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - *fill* 0x0000000000683bf8 0x8 00 - .data 0x0000000000683c00 0x174 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - *fill* 0x0000000000683d74 0xc 00 - .data 0x0000000000683d80 0x40 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - .data 0x0000000000683dc0 0x3d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - *fill* 0x0000000000683dfd 0x3 00 - .data 0x0000000000683e00 0xb2 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - *fill* 0x0000000000683eb2 0xe 00 - .data 0x0000000000683ec0 0x5d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - *fill* 0x0000000000683f1d 0x3 00 - .data 0x0000000000683f20 0x4f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - *fill* 0x0000000000683f6f 0x1 00 - .data 0x0000000000683f70 0x115 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - *fill* 0x0000000000684085 0xb 00 - .data 0x0000000000684090 0x4e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - *fill* 0x00000000006840de 0x2 00 - .data 0x00000000006840e0 0x2e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - *fill* 0x000000000068410e 0x2 00 - .data 0x0000000000684110 0x84 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - *fill* 0x0000000000684194 0xc 00 - .data 0x00000000006841a0 0x3e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - *fill* 0x00000000006841de 0x2 00 - .data 0x00000000006841e0 0xf3 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - *fill* 0x00000000006842d3 0xd 00 - .data 0x00000000006842e0 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - *fill* 0x00000000006842e4 0xc 00 - .data 0x00000000006842f0 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - *fill* 0x000000000068431c 0x4 00 - .data 0x0000000000684320 0x3a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - *fill* 0x000000000068435a 0x6 00 - .data 0x0000000000684360 0x6c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - *fill* 0x00000000006843cc 0x4 00 - .data 0x00000000006843d0 0x6e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - *fill* 0x000000000068443e 0x2 00 - .data 0x0000000000684440 0x5e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - *fill* 0x000000000068449e 0x2 00 - .data 0x00000000006844a0 0xb40 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - .data 0x0000000000684fe0 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - .data 0x000000000068500c 0x17 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - *fill* 0x0000000000685023 0x1d 00 - .data 0x0000000000685040 0x208 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - 0x0000000000685240 MPIR_inter_collops - *fill* 0x0000000000685248 0x18 00 - .data 0x0000000000685260 0x433 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - 0x00000000006855e0 MPIR_intra_collops - *fill* 0x0000000000685693 0xd 00 - .data 0x00000000006856a0 0x39 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - *fill* 0x00000000006856d9 0x7 00 - .data 0x00000000006856e0 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - 0x00000000006856e0 MPIR_TOPOLOGY_KEYVAL - .data 0x00000000006856e4 0x1b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - *fill* 0x00000000006856ff 0x1 00 - .data 0x0000000000685700 0xb64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - .data 0x0000000000686264 0x3f3 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - *fill* 0x0000000000686657 0x1 00 - .data 0x0000000000686658 0x469 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - *fill* 0x0000000000686ac1 0xf 00 - .data 0x0000000000686ad0 0xb14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - *fill* 0x00000000006875e4 0xc 00 - .data 0x00000000006875f0 0x5d4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - *fill* 0x0000000000687bc4 0xc 00 - .data 0x0000000000687bd0 0x6f4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - .data 0x00000000006882c4 0x593 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - *fill* 0x0000000000688857 0x9 00 - .data 0x0000000000688860 0x4b8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - *fill* 0x0000000000688d18 0x8 00 - .data 0x0000000000688d20 0x168 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - 0x0000000000688e80 start_prog_error - *fill* 0x0000000000688e88 0x8 00 - .data 0x0000000000688e90 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - 0x0000000000688e90 usc_MD_rollover_val - *fill* 0x0000000000688e98 0x8 00 - .data 0x0000000000688ea0 0x1f4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - 0x0000000000689060 MPID_Print_queues - 0x0000000000689080 MPID_devset - 0x0000000000689070 MPID_n_pending - .data 0x0000000000689094 0x159 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - *fill* 0x00000000006891ed 0x3 00 - .data 0x00000000006891f0 0xbd /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - *fill* 0x00000000006892ad 0x3 00 - .data 0x00000000006892b0 0x3b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - *fill* 0x00000000006892eb 0x15 00 - .data 0x0000000000689300 0x508 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - *fill* 0x0000000000689808 0x18 00 - .data 0x0000000000689820 0x580 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - 0x0000000000689c80 MPID_TRACE_FILE - 0x0000000000689c90 MPID_DEBUG_FILE - 0x0000000000689ca0 MPID_UseDebugFile - 0x0000000000689cb0 MPID_DebugFlag - .data 0x0000000000689da0 0x101 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - *fill* 0x0000000000689ea1 0xf 00 - .data 0x0000000000689eb0 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - 0x0000000000689f10 MPID_IS_HETERO - 0x0000000000689f00 MPID_procinfo - *fill* 0x0000000000689f14 0xc 00 - .data 0x0000000000689f20 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - *fill* 0x0000000000689f28 0x8 00 - .data 0x0000000000689f30 0x108 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - *fill* 0x000000000068a038 0x8 00 - .data 0x000000000068a040 0x164 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - .data 0x000000000068a1a4 0x1f1 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - *fill* 0x000000000068a395 0x3 00 - .data 0x000000000068a398 0x2d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - *fill* 0x000000000068a3c5 0x3 00 - .data 0x000000000068a3c8 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - .data 0x000000000068a3e0 0x3e5 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - *fill* 0x000000000068a7c5 0xb 00 - .data 0x000000000068a7d0 0x2f4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - 0x000000000068aac0 expect_cancel_ack - *fill* 0x000000000068aac4 0xc 00 - .data 0x000000000068aad0 0x4a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - *fill* 0x000000000068ab1a 0x6 00 - .data 0x000000000068ab20 0x4a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - *fill* 0x000000000068ab6a 0x2 00 - .data 0x000000000068ab6c 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - .data 0x000000000068ab7c 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - *fill* 0x000000000068ab8c 0x4 00 - .data 0x000000000068ab90 0x4b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - *fill* 0x000000000068abdb 0x5 00 - .data 0x000000000068abe0 0x4c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - *fill* 0x000000000068ac2c 0x4 00 - .data 0x000000000068ac30 0x4d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - *fill* 0x000000000068ac7d 0x3 00 - .data 0x000000000068ac80 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - *fill* 0x000000000068acac 0x4 00 - .data 0x000000000068acb0 0x3e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - *fill* 0x000000000068acee 0x2 00 - .data 0x000000000068acf0 0x30 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - .data 0x000000000068ad20 0x74 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - *fill* 0x000000000068ad94 0xc 00 - .data 0x000000000068ada0 0x30 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - .data 0x000000000068add0 0x4e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - *fill* 0x000000000068ae1e 0x2 00 - .data 0x000000000068ae20 0x71 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - *fill* 0x000000000068ae91 0xf 00 - .data 0x000000000068aea0 0x2c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - *fill* 0x000000000068aecc 0x4 00 - .data 0x000000000068aed0 0x3e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - *fill* 0x000000000068af0e 0x2 00 - .data 0x000000000068af10 0xd0 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - .data 0x000000000068afe0 0x5e /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - *fill* 0x000000000068b03e 0x2 00 - .data 0x000000000068b040 0xa9 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - *fill* 0x000000000068b0e9 0x7 00 - .data 0x000000000068b0f0 0x5b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - *fill* 0x000000000068b14b 0x5 00 - .data 0x000000000068b150 0x60 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - 0x000000000068b190 MPIR_debug_abort_string - 0x000000000068b1a0 MPIR_being_debugged - 0x000000000068b150 MPIR_proctable - 0x000000000068b180 MPIR_debug_gate - 0x000000000068b160 MPIR_proctable_size - 0x000000000068b170 MPIR_debug_state - *fill* 0x000000000068b1b0 0x10 00 - .data 0x000000000068b1c0 0x33 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - *fill* 0x000000000068b1f3 0xd 00 - .data 0x000000000068b200 0x110 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - .data 0x000000000068b310 0x4b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - *fill* 0x000000000068b35b 0x1 00 - .data 0x000000000068b35c 0x13f /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - *fill* 0x000000000068b49b 0x5 00 - .data 0x000000000068b4a0 0x234 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - 0x000000000068b670 p4_hard_errors - .data 0x000000000068b6d4 0x412 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - *fill* 0x000000000068bae6 0x1a 00 - .data 0x000000000068bb00 0x360 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - .data 0x000000000068be60 0x390 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - .data 0x000000000068c1f0 0x1be /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - *fill* 0x000000000068c3ae 0x2 00 - .data 0x000000000068c3b0 0x334 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - .data 0x000000000068c6e4 0x67 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - *fill* 0x000000000068c74b 0x1 00 - .data 0x000000000068c74c 0x211 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - *fill* 0x000000000068c95d 0x3 00 - .data 0x000000000068c960 0x234 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - .data 0x000000000068cb94 0x1af /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - *fill* 0x000000000068cd43 0x1 00 - .data 0x000000000068cd44 0x155 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - *fill* 0x000000000068ce99 0x3 00 - .data 0x000000000068ce9c 0x733 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - *fill* 0x000000000068d5cf 0x1 00 - .data 0x000000000068d5d0 0xb24 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - *fill* 0x000000000068e0f4 0xc 00 - .data 0x000000000068e100 0x5e4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - .data 0x000000000068e6e4 0x79c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - .data 0x000000000068ee80 0x194 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - 0x000000000068f010 MPID_DebugFlow - 0x000000000068f000 MPID_flow_info - *fill* 0x000000000068f014 0xc 00 - .data 0x000000000068f020 0x72 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - *fill* 0x000000000068f092 0x2 00 - *fill* 0x000000000068f094 0x4 00 - .data 0x000000000068f098 0xc /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - *fill* 0x000000000068f0a4 0x1c 00 - .data 0x000000000068f0c0 0x398 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - *fill* 0x000000000068f458 0x8 00 - .data 0x000000000068f460 0x84 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - *fill* 0x000000000068f4e4 0x1c 00 - .data 0x000000000068f500 0x98 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - *fill* 0x000000000068f598 0x8 00 - .data 0x000000000068f5a0 0x60 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - .data 0x000000000068f600 0x11 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - *fill* 0x000000000068f611 0x3 00 - *fill* 0x000000000068f614 0xc 00 - .data 0x000000000068f620 0x70 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(pgifiodf.o) - 0x000000000068f660 __hpfio_type_size - 0x000000000068f620 pghpfio - *fill* 0x000000000068f690 0x10 00 - .data 0x000000000068f6a0 0x228 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - .data 0x000000000068f8c8 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - *fill* 0x000000000068f8f0 0x10 00 - .data 0x000000000068f900 0x4014 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - *fill* 0x0000000000693914 0x4 00 - .data 0x0000000000693918 0xc /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - *fill* 0x0000000000693924 0x4 00 - .data 0x0000000000693928 0x1c /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - *fill* 0x0000000000693944 0x1c 00 - .data 0x0000000000693960 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - .data 0x0000000000693980 0x28 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - 0x0000000000693980 version - .data 0x00000000006939a8 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - *fill* 0x00000000006939b0 0x10 00 - .data 0x00000000006939c0 0x401c /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - *fill* 0x00000000006979dc 0x4 00 - .data 0x00000000006979e0 0x68 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - .data 0x0000000000697a48 0xc /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - *fill* 0x0000000000697a54 0xc 00 - .data 0x0000000000697a60 0x578 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - .data 0x0000000000697fd8 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) - 0x0000000000697fe0 f90DummyGenBlockPtr - 0x0000000000697fd8 f90DummyGenBlock - *fill* 0x0000000000697fe8 0x18 00 - .data 0x0000000000698000 0xdc /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - *fill* 0x00000000006980dc 0x4 00 - .data 0x00000000006980e0 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - .data 0x0000000000698100 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - 0x0000000000698108 __hpf_transnam - .data 0x0000000000698110 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - 0x0000000000698110 __hpf_minxfer - *fill* 0x0000000000698114 0xc 00 - .data 0x0000000000698120 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - 0x0000000000698120 __hpfio_cnfg_ - *fill* 0x0000000000698130 0x10 00 - .data 0x0000000000698140 0x950 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x0000000000698420 __hpf_one - 0x0000000000698440 __hpf_zed - 0x00000000006984a0 __hpf_maxs - 0x0000000000698300 pghpf_type_ - 0x00000000006985e0 __hpf_mins - 0x0000000000698850 __hpf_true_log - 0x00000000006981e0 __hpf_typenames - 0x0000000000698860 __hpf_trues - 0x0000000000698740 __hpf_units - 0x0000000000698980 __hpf_masks - 0x0000000000698140 __hpf_size_of - *fill* 0x0000000000698a90 0x10 00 - .data 0x0000000000698aa0 0xd0 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - *fill* 0x0000000000698b70 0x10 00 - .data 0x0000000000698b80 0x328 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - *fill* 0x0000000000698ea8 0x8 00 - .data 0x0000000000698eb0 0x25 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - *fill* 0x0000000000698ed5 0x3 00 - *fill* 0x0000000000698ed8 0x8 00 - .data 0x0000000000698ee0 0x228 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - *fill* 0x0000000000699108 0x18 00 - .data 0x0000000000699120 0x68 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgifiodf.o) - 0x0000000000699120 pgi_fio - 0x0000000000699160 __fio_type_size - *fill* 0x0000000000699188 0x18 00 - .data 0x00000000006991a0 0x398 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - *fill* 0x0000000000699538 0x8 00 - .data 0x0000000000699540 0x10 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - 0x0000000000699540 __fio_cnfg_ - .data 0x0000000000699550 0x8 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - 0x0000000000699554 __PC_DOS - 0x0000000000699550 __PC_DATA - *fill* 0x0000000000699558 0x8 00 - .data 0x0000000000699560 0x10 /usr/pgi/linux86-64/6.0/lib/libnspgc.a(pgdbg_utils.o) - .data 0x0000000000699570 0x10 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - .data 0x0000000000699580 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - .data 0x0000000000699588 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - *fill* 0x0000000000699590 0x10 00 - .data 0x00000000006995a0 0x3f /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - *fill* 0x00000000006995df 0x1 00 - .data 0x00000000006995e0 0x3f0 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - *fill* 0x00000000006999d0 0x10 00 - .data 0x00000000006999e0 0x3f0 /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - .data 0x0000000000699dd0 0x8 /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - *(.gnu.linkonce.d.*personality*) - -.data1 - *(.data1) - 0x0000000000699dd8 _edata = . - 0x0000000000699dd8 PROVIDE (edata, .) - 0x0000000000699dd8 __bss_start = . - -.bss 0x0000000000699de0 0x6a9f2968 - *(.dynbss) - .dynbss 0x0000000000699de0 0x28 /usr/lib64/crt1.o - 0x0000000000699de0 timezone@@GLIBC_2.2.5 - 0x0000000000699de8 stderr@@GLIBC_2.2.5 - 0x0000000000699df0 _environ@@GLIBC_2.2.5 - 0x0000000000699df8 stdin@@GLIBC_2.2.5 - 0x0000000000699df0 __environ@@GLIBC_2.2.5 - 0x0000000000699de0 __timezone@@GLIBC_2.2.5 - 0x0000000000699e00 stdout@@GLIBC_2.2.5 - 0x0000000000699df0 environ@@GLIBC_2.2.5 - *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x0000000000699e08 0x1 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - *fill* 0x0000000000699e09 0x3 00 - *fill* 0x0000000000699e0c 0x14 00 - .bss 0x0000000000699e20 0x4d4adea8 main_clust.o - *fill* 0x000000004db47cc8 0x18 00 - .bss 0x000000004db47ce0 0x18 chainbuild.o - *fill* 0x000000004db47cf8 0x8 00 - .bss 0x000000004db47d00 0x24 matmult.o - *fill* 0x000000004db47d24 0x1c 00 - .bss 0x000000004db47d40 0x2720 readrtns.o - .bss 0x000000004db4a460 0x3e8 geomout.o - *fill* 0x000000004db4a848 0x18 00 - .bss 0x000000004db4a860 0x3c0 readpdb.o - .bss 0x000000004db4ac20 0x1910 read_coords.o - *fill* 0x000000004db4c530 0x10 00 - .bss 0x000000004db4c540 0x120 parmread.o - .bss 0x000000004db4c660 0x131e8 probabl.o - *fill* 0x000000004db5f848 0x18 00 - .bss 0x000000004db5f860 0x2a8 fitsq.o - *fill* 0x000000004db5fb08 0x18 00 - .bss 0x000000004db5fb20 0x605040 track.o - .bss 0x000000004e164b60 0xbb80 srtclust.o - .bss 0x000000004e1706e0 0x161e0 energy_p_new.o - .bss 0x000000004e1868c0 0x10 proc_proc.o - .bss 0x000000004e1868d0 0x34 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - *fill* 0x000000004e186904 0x1c 00 - .bss 0x000000004e186920 0x2060 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - .bss 0x000000004e188980 0x6800 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - .bss 0x000000004e18f180 0x1070 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - .bss 0x000000004e1901f0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - *fill* 0x000000004e190204 0xc 00 - .bss 0x000000004e190210 0x10 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - .bss 0x000000004e190220 0x200 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - .bss 0x000000004e190420 0x8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - *fill* 0x000000004e190428 0x18 00 - .bss 0x000000004e190440 0x4fa /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - *fill* 0x000000004e19093a 0x2 00 - *fill* 0x000000004e19093c 0x4 00 - .bss 0x000000004e190940 0x48 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - *fill* 0x000000004e190988 0x8 00 - .bss 0x000000004e190990 0x28 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - *fill* 0x000000004e1909b8 0x8 00 - .bss 0x000000004e1909c0 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - *fill* 0x000000004e1909c4 0x1c 00 - .bss 0x000000004e1909e0 0x64 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - *fill* 0x000000004e190a44 0x1c 00 - .bss 0x000000004e190a60 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - *fill* 0x000000004e190a74 0xc 00 - .bss 0x000000004e190a80 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - *fill* 0x000000004e190a98 0x8 00 - .bss 0x000000004e190aa0 0x75 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - *fill* 0x000000004e190b15 0xb 00 - .bss 0x000000004e190b20 0xa4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - *fill* 0x000000004e190bc4 0x1c 00 - .bss 0x000000004e190be0 0x118 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - *fill* 0x000000004e190cf8 0x8 00 - .bss 0x000000004e190d00 0x110 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - *fill* 0x000000004e190e10 0x10 00 - .bss 0x000000004e190e20 0x220 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - .bss 0x000000004e191040 0x48 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - .bss 0x000000004e191088 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - *fill* 0x000000004e191090 0x10 00 - .bss 0x000000004e1910a0 0x1050 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - .bss 0x000000004e1920f0 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - *fill* 0x000000004e1920f4 0x4 00 - .bss 0x000000004e1920f8 0x24 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - *fill* 0x000000004e19211c 0x4 00 - .bss 0x000000004e192120 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - *fill* 0x000000004e192130 0x10 00 - .bss 0x000000004e192140 0x428 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - *fill* 0x000000004e192568 0x18 00 - .bss 0x000000004e192580 0x288 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - .bss 0x000000004e192808 0x10 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - .bss 0x000000004e192818 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - *fill* 0x000000004e19281c 0x4 00 - .bss 0x000000004e192820 0x100 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - .bss 0x000000004e192920 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - .bss 0x000000004e1929c0 0x220 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - .bss 0x000000004e192be0 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - .bss 0x000000004e192be8 0x20 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - *fill* 0x000000004e192c08 0x8 00 - .bss 0x000000004e192c10 0x90 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - .bss 0x000000004e192ca0 0x200 /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - .bss 0x000000004e192ea0 0xa0 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - .bss 0x000000004e192f40 0x4 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - *fill* 0x000000004e192f44 0x4 00 - .bss 0x000000004e192f48 0x8 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - .bss 0x000000004e192f50 0x4 /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - .bss 0x000000004e192f54 0x4 /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - .bss 0x000000004e192f58 0x4 /usr/pgi/linux86-64/6.0/lib/libpgc.a(crit_dum.o) - *(COMMON) - *fill* 0x000000004e192f5c 0x4 00 - COMMON 0x000000004e192f60 0xf34d471 main_clust.o - 0x000000004e192f60 fnames_ - 0x000000004e193e70 stoptim_ - 0x000000004e193e80 csaunits_ - 0x000000004e193ec0 geo_ - 0x000000004e193f00 stretch_ - 0x000000004e194060 mpi_data_ - 0x000000004e1942a0 csafiles_ - 0x000000004e194ea0 mpipriv_ - 0x000000004e194ee0 varref_ - 0x000000004e197600 refstruct_ - 0x000000004e19a520 pghpf_me_ - 0x000000004e19a540 body_ - 0x000000004e1a1140 interact_ - 0x000000004e1a70c0 clu_ - 0x00000000527a21c0 var_ - 0x00000000527a77c0 free_ - 0x00000000527a77e0 pghpf_0l_ - 0x00000000527a7800 header_ - 0x00000000527a7850 pghpf_0_ - 0x00000000527a7860 time1_ - 0x00000000527a78a0 cntrl_ - 0x00000000527a78f0 pghpf_lineno_ - 0x00000000527a7900 clu1_ - 0x000000005b1366a0 parfiles_ - 0x000000005b1370a0 rotmat_ - 0x000000005b1489e0 pghpf_np_ - 0x000000005b148a00 iounits_ - 0x000000005b148a60 chain_ - 0x000000005b154620 alles_ - 0x000000005d4e03d0 pghpf_0c_ - *fill* 0x000000005d4e03d1 0xf 00 - COMMON 0x000000005d4e03e0 0x3c2c chainbuild.o - 0x000000005d4e03e0 indices_ - 0x000000005d4e0400 peptbond_ - 0x000000005d4e0440 invlen_ - 0x000000005d4e13e0 thetas_ - 0x000000005d4e1d40 sclocal_ - *fill* 0x000000005d4e400c 0x14 00 - COMMON 0x000000005d4e4020 0x31e340 initialize_p.o - 0x000000005d4e4020 torsion_ - 0x000000005d4e5000 minimm_ - 0x000000005d4e5020 restraints_ - 0x000000005d4e5040 ffield_ - 0x000000005d4e51a0 derivat_ - 0x000000005d7ed7f0 links_split_ - 0x000000005d7ed800 deriv_loc_ - 0x000000005d7ed9e0 links_ - 0x000000005d7edbe0 sbridge_ - 0x000000005d7edc60 fourier_ - 0x000000005d7edfc0 fourier1_ - 0x000000005d7ee160 torsiond_ - COMMON 0x000000005d802360 0x4ef9f20 readrtns.o - 0x000000005d802360 contacts_ - 0x000000005d80df00 contacts_hb_ - 0x000000005e5a5300 rotat_old_ - 0x000000005e5a81e0 contacts1_ - 0x000000005e7cdae0 precomp2_ - 0x000000005e7e51e0 precomp1_ - 0x000000005e7fb940 diploc_ - 0x000000005e7ff280 rotat_ - 0x000000005e80ae00 dipint_ - 0x0000000060877a80 dipmat_ - COMMON 0x00000000626fc280 0x89776b4 track.o - 0x00000000626fc280 previous_ - 0x000000006b056460 history_ - *fill* 0x000000006b073934 0xc 00 - COMMON 0x000000006b073940 0x164c0 energy_p_new.o - 0x000000006b073940 calcthet_ - 0x000000006b0739e0 locel_ - 0x000000006b073c00 sccalc_ - 0x000000006b073c30 kutas_ - 0x000000006b073c40 torcnstr_ - 0x000000006b0753c0 srutu_ - 0x000000006b0753e0 calc_ - 0x000000006b0755e0 vectors_ - COMMON 0x000000006b089e00 0xbe8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - 0x000000006b089e00 MPIR_real4_dte - 0x000000006b089ec0 MPIR_I_2COMPLEX - 0x000000006b089f80 MPIR_I_2DOUBLE_PRECISION - 0x000000006b08a040 MPIR_I_COMPLEX - 0x000000006b08a100 MPIR_I_INTEGER - 0x000000006b08a1c0 MPIR_int1_dte - 0x000000006b08a280 MPIR_I_DOUBLE_PRECISION - 0x000000006b08a340 MPIR_I_REAL - 0x000000006b08a400 MPIR_I_LOGICAL - 0x000000006b08a4c0 MPIR_I_2DCOMPLEX - 0x000000006b08a580 MPIR_I_2INTEGER - 0x000000006b08a640 MPIR_int4_dte - 0x000000006b08a700 MPIR_real8_dte - 0x000000006b08a7c0 MPIR_I_DCOMPLEX - 0x000000006b08a880 MPIR_int2_dte - 0x000000006b08a940 MPIR_I_2REAL - *fill* 0x000000006b08a9e8 0x8 00 - COMMON 0x000000006b08a9f0 0x48 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - 0x000000006b08a9f0 MPIR_errhandlers - 0x000000006b08aa00 MPIR_fdtels - 0x000000006b08aa10 MPIR_tid - 0x000000006b08aa20 MPIR_qels - 0x000000006b08aa30 MPIR_topo_els - *fill* 0x000000006b08aa38 0x8 00 - COMMON 0x000000006b08aa40 0x11e8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - 0x000000006b08aa40 MPIR_I_DOUBLE - 0x000000006b08aaf0 MPI_FLOAT_INT_var - 0x000000006b08ab00 MPIR_I_LONG_LONG_INT - 0x000000006b08abb0 MPI_SHORT_INT_var - 0x000000006b08abc0 MPIR_I_LB - 0x000000006b08ac80 MPIR_I_PACKED - 0x000000006b08ad30 MPI_LONG_INT_var - 0x000000006b08ad40 MPIR_I_LONG_INT - 0x000000006b08ae00 MPIR_I_LONG_DOUBLE_INT - 0x000000006b08aec0 MPIR_I_INT - 0x000000006b08af80 MPIR_I_SHORT - 0x000000006b08b040 MPIR_I_DOUBLE_INT - 0x000000006b08b0f0 MPI_DOUBLE_INT_var - 0x000000006b08b100 MPIR_I_LONG_DOUBLE - 0x000000006b08b1b0 MPI_LONG_DOUBLE_INT_var - 0x000000006b08b1c0 MPIR_I_2DOUBLE - 0x000000006b08b280 MPIR_I_UB - 0x000000006b08b340 MPIR_I_2FLOAT - 0x000000006b08b400 MPIR_I_FLOAT - 0x000000006b08b4c0 MPIR_I_2INT - 0x000000006b08b580 MPIR_I_BYTE - 0x000000006b08b640 MPIR_I_CHAR - 0x000000006b08b700 MPIR_I_FLOAT_INT - 0x000000006b08b7b0 MPIR_dtes - 0x000000006b08b7c0 MPIR_I_USHORT - 0x000000006b08b880 MPIR_I_UCHAR - 0x000000006b08b940 MPIR_I_ULONG - 0x000000006b08ba00 MPIR_I_SHORT_INT - 0x000000006b08bac0 MPIR_I_LONG - 0x000000006b08bb80 MPIR_I_UINT - *fill* 0x000000006b08bc28 0x8 00 - COMMON 0x000000006b08bc30 0x18 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - 0x000000006b08bc30 MPIR_hbt_els - 0x000000006b08bc40 MPIR_hbts - *fill* 0x000000006b08bc48 0x8 00 - COMMON 0x000000006b08bc50 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - 0x000000006b08bc50 MPIR_Op_errno - *fill* 0x000000006b08bc54 0xc 00 - COMMON 0x000000006b08bc60 0x12 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - 0x000000006b08bc60 tty_orig - *fill* 0x000000006b08bc72 0xe 00 - COMMON 0x000000006b08bc80 0xb4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - 0x000000006b08bc80 MPIR_rhandles - 0x000000006b08bc90 MPIR_shandles - 0x000000006b08bca0 ch_debug_buf - 0x000000006b08bd20 MPID_MyWorldRank - 0x000000006b08bd30 MPID_MyWorldSize - *fill* 0x000000006b08bd34 0xc 00 - COMMON 0x000000006b08bd40 0x4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - 0x000000006b08bd40 MPID_byte_order - *fill* 0x000000006b08bd44 0xc 00 - COMMON 0x000000006b08bd50 0x34 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - 0x000000006b08bd50 __P4LEN - 0x000000006b08bd60 __P4FROM - 0x000000006b08bd70 __P4GLOBALTYPE - 0x000000006b08bd80 __P4TYPE - *fill* 0x000000006b08bd84 0x1c 00 - COMMON 0x000000006b08bda0 0x20 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - 0x000000006b08bda0 MPID_recvs - COMMON 0x000000006b08bdc0 0x30 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - 0x000000006b08bdc0 total_pack_unacked - 0x000000006b08bdd0 expect_ack - 0x000000006b08bde0 MPID_pack_info - COMMON 0x000000006b08bdf0 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - 0x000000006b08bdf0 MPIR_debug_cl - 0x000000006b08be00 MPIR_debug_s - 0x000000006b08be10 MPIR_debug_c - 0x000000006b08be20 MPIR_debug_sqel - 0x000000006b08be30 MPIR_debug_qh - 0x000000006b08be40 MPIR_All_communicators - 0x000000006b08be50 MPIR_debug_q - 0x000000006b08be60 MPIR_debug_sq - 0x000000006b08be70 MPIR_debug_qel - 0x000000006b08be80 MPIR_debug_rh - *fill* 0x000000006b08be88 0x18 00 - COMMON 0x000000006b08bea0 0x6e4 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) - 0x000000006b08bea0 execer_mynodenum - 0x000000006b08beb0 p4_global - 0x000000006b08bec0 logging_flag - 0x000000006b08bed0 p4_remote_debug_level - 0x000000006b08bee0 execer_mastport - 0x000000006b08bef0 execer_numtotnodes - 0x000000006b08bf00 execer_masthost - 0x000000006b08bf80 procgroup_file - 0x000000006b08c080 rm_outfile_head - 0x000000006b08c0f0 sserver_port - 0x000000006b08c100 listener_info - 0x000000006b08c120 whoami_p4 - 0x000000006b08c1a0 execer_myhost - 0x000000006b08c210 p4_debug_level - 0x000000006b08c220 p4_local - 0x000000006b08c230 execer_starting_remotes - 0x000000006b08c240 p4_myname_in_procgroup - 0x000000006b08c280 local_domain - 0x000000006b08c300 execer_id - 0x000000006b08c390 p4_rm_rank - 0x000000006b08c3a0 execer_mynumprocs - 0x000000006b08c3b0 hand_start_remotes - 0x000000006b08c3c0 p4_brdcst_info - 0x000000006b08c3e0 execer_pg - 0x000000006b08c400 bm_outfile - 0x000000006b08c480 p4_wd - 0x000000006b08c580 globmemsize - *fill* 0x000000006b08c584 0x4 00 - COMMON 0x000000006b08c588 0x8 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - 0x000000006b08c588 envar_fortranopt - COMMON 0x000000006b08c590 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - 0x000000006b08c590 __ftn_32in64_ - COMMON 0x000000006b08c594 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - 0x000000006b08c594 __hpf_entry_mflag - COMMON 0x000000006b08c598 0x40 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - 0x000000006b08c598 __hpf_zmem - 0x000000006b08c59c __hpf_np2 - 0x000000006b08c5a0 __hpf_tids - 0x000000006b08c5a8 __hpf_ioproc - 0x000000006b08c5ac __hpf_tcpus - 0x000000006b08c5b0 __hpf_quiet - 0x000000006b08c5b4 __hpf_pario - 0x000000006b08c5b8 __hpf_lcpu - 0x000000006b08c5c0 __hpf_heapz - 0x000000006b08c5c8 __hpf_debug - 0x000000006b08c5cc __hpf_debugn - 0x000000006b08c5d0 __hpf_heap_block - *fill* 0x000000006b08c5d8 0x8 00 - COMMON 0x000000006b08c5e0 0x60 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - 0x000000006b08c5e0 __f90io_conv_buf - COMMON 0x000000006b08c640 0x4 /usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) - 0x000000006b08c640 __hpf_test - *fill* 0x000000006b08c644 0x1c 00 - COMMON 0x000000006b08c660 0xd8 /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - 0x000000006b08c660 __hpf_true_log4 - 0x000000006b08c664 __hpf_mask_log4 - 0x000000006b08c668 __hpf_mask_int1 - 0x000000006b08c680 __hpf_shifts - 0x000000006b08c708 __hpf_true_log1 - 0x000000006b08c70c __hpf_mask_log - 0x000000006b08c710 __hpf_mask_int4 - 0x000000006b08c718 __hpf_true_log8 - 0x000000006b08c720 __hpf_mask_int8 - 0x000000006b08c728 __hpf_mask_log1 - 0x000000006b08c72a __hpf_mask_int2 - 0x000000006b08c72c __hpf_mask_log2 - 0x000000006b08c72e __hpf_true_log2 - 0x000000006b08c730 __hpf_mask_log8 - COMMON 0x000000006b08c738 0xc /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - 0x000000006b08c738 __argv_save - 0x000000006b08c740 __argc_save - 0x000000006b08c748 . = ALIGN (0x8) - *fill* 0x000000006b08c744 0x4 00 - *fill* 0x000000006b08c748 0x0 00 - *fill* 0x000000006b08c748 0x0 00 - *fill* 0x000000006b08c748 0x0 00 - 0x000000006b08c748 . = ALIGN (0x8) - 0x000000006b08c748 _end = . - 0x000000006b08c748 PROVIDE (end, .) - 0x000000006b08c748 . = DATA_SEGMENT_END (.) - -.stab - *(.stab) - -.stabstr - *(.stabstr) - -.stab.excl - *(.stab.excl) - -.stab.exclstr - *(.stab.exclstr) - -.stab.index - *(.stab.index) - -.stab.indexstr - *(.stab.indexstr) - -.comment 0x0000000000000000 0xaf5 - *(.comment) - .comment 0x0000000000000000 0x31 /usr/lib64/crt1.o - .comment 0x0000000000000031 0x31 /usr/lib64/crti.o - .comment 0x0000000000000062 0x31 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtbegin.o - .comment 0x0000000000000093 0x1f /usr/pgi/linux86-64/6.0/lib/f90main.o - .comment 0x00000000000000b2 0x31 proc_proc.o - .comment 0x00000000000000e3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(close.o) - .comment 0x0000000000000102 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(desc.o) - .comment 0x0000000000000121 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(encodefmt.o) - .comment 0x0000000000000140 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(error.o) - .comment 0x000000000000015f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtread.o) - .comment 0x000000000000017e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtwrite.o) - .comment 0x000000000000019d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ftnexit.o) - .comment 0x00000000000001bc 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldread.o) - .comment 0x00000000000001db 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ldwrite.o) - .comment 0x00000000000001fa 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(open.o) - .comment 0x0000000000000219 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(pgifiodf.o) - .comment 0x0000000000000238 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rewind.o) - .comment 0x0000000000000257 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(unf.o) - .comment 0x0000000000000276 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utils.o) - .comment 0x0000000000000295 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(utilsi64.o) - .comment 0x00000000000002b4 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo.o) - .comment 0x00000000000002d3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(entry.o) - .comment 0x00000000000002f2 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio.o) - .comment 0x0000000000000311 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(hpfio_hpf.o) - .comment 0x0000000000000330 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(initpar.o) - .comment 0x000000000000034f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(malloc.o) - .comment 0x000000000000036e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(ptr.o) - .comment 0x000000000000038d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rdst.o) - .comment 0x00000000000003ac 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(rw.o) - .comment 0x00000000000003cb 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(version.o) - .comment 0x00000000000003ea 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(xfer.o) - .comment 0x0000000000000409 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(stat_linux.o) - .comment 0x0000000000000428 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(allo_i8.o) - .comment 0x0000000000000447 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(assign.o) - .comment 0x0000000000000466 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtconv.o) - .comment 0x0000000000000485 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fmtgetnum.o) - .comment 0x00000000000004a4 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(fpcvt.o) - .comment 0x00000000000004c3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(atol.o) - .comment 0x00000000000004e2 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(defs.o) - .comment 0x0000000000000501 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(dist.o) - .comment 0x0000000000000520 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(comm.o) - .comment 0x000000000000053f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90.a(copy.o) - .comment 0x000000000000055e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(init_rpm1.o) - .comment 0x000000000000057d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90_rpm1.a(xfer_rpm1.o) - .comment 0x000000000000059c 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cnfg.o) - .comment 0x00000000000005bb 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopy.o) - .comment 0x00000000000005da 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(bcopys.o) - .comment 0x00000000000005f9 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(buffer.o) - .comment 0x0000000000000618 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(chn1t1.o) - .comment 0x0000000000000637 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(const.o) - .comment 0x0000000000000656 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof.o) - .comment 0x0000000000000675 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(cprof2.o) - .comment 0x0000000000000694 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(genlist.o) - .comment 0x00000000000006b3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(hand.o) - .comment 0x00000000000006d2 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(stat.o) - .comment 0x00000000000006f1 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace.o) - .comment 0x0000000000000710 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(trace2.o) - .comment 0x000000000000072f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf902.a(xfer_heap_dum.o) - .comment 0x000000000000074e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(dacos.o) - .comment 0x000000000000076d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(ftncharsup.o) - .comment 0x000000000000078c 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(flush3f.o) - .comment 0x00000000000007ab 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getenv3f.o) - .comment 0x00000000000007ca 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(fdate3f.o) - .comment 0x00000000000007e9 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(getarg3f.o) - .comment 0x0000000000000808 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(cvt.o) - .comment 0x0000000000000827 0x1f /usr/pgi/linux86-64/6.0/lib/libpgf90rtl.a(utils3f.o) - .comment 0x0000000000000846 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(utils.o) - .comment 0x0000000000000865 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgifiodf.o) - .comment 0x0000000000000884 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(error.o) - .comment 0x00000000000008a3 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(ftnexit.o) - .comment 0x00000000000008c2 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(open.o) - .comment 0x00000000000008e1 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(close.o) - .comment 0x0000000000000900 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(cnfg.o) - .comment 0x000000000000091f 0x1f /usr/pgi/linux86-64/6.0/lib/libpgftnrtl.a(pgdummy.o) - .comment 0x000000000000093e 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(mthi64.o) - .comment 0x000000000000095d 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(dpowi.o) - .comment 0x000000000000097c 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgstdinit.o) - .comment 0x000000000000099b 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(mpmalloc.o) - .comment 0x00000000000009ba 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(rtcrit.o) - .comment 0x00000000000009d9 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgtempnam.o) - .comment 0x00000000000009f8 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(va_arg.o) - .comment 0x0000000000000a17 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(pgargs.o) - .comment 0x0000000000000a36 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(dsincosp.o) - .comment 0x0000000000000a55 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(dtan.o) - .comment 0x0000000000000a74 0x1f /usr/pgi/linux86-64/6.0/lib/libpgc.a(datan.o) - .comment 0x0000000000000a93 0x31 /usr/lib/gcc/x86_64-redhat-linux/3.4.2/crtend.o - .comment 0x0000000000000ac4 0x31 /usr/lib64/crtn.o - -.debug - *(.debug) - -.line - *(.line) - -.debug_srcinfo - *(.debug_srcinfo) - -.debug_sfnames - *(.debug_sfnames) - -.debug_aranges 0x0000000000000000 0xa00 - *(.debug_aranges) - .debug_aranges - 0x0000000000000000 0x50 main_clust.o - .debug_aranges - 0x0000000000000050 0x50 arcos.o - .debug_aranges - 0x00000000000000a0 0x50 cartprint.o - .debug_aranges - 0x00000000000000f0 0x50 chainbuild.o - .debug_aranges - 0x0000000000000140 0x50 convert.o - .debug_aranges - 0x0000000000000190 0x50 initialize_p.o - .debug_aranges - 0x00000000000001e0 0x50 matmult.o - .debug_aranges - 0x0000000000000230 0x50 readrtns.o - .debug_aranges - 0x0000000000000280 0x50 pinorm.o - .debug_aranges - 0x00000000000002d0 0x50 rescode.o - .debug_aranges - 0x0000000000000320 0x50 intcor.o - .debug_aranges - 0x0000000000000370 0x50 timing.o - .debug_aranges - 0x00000000000003c0 0x50 misc.o - .debug_aranges - 0x0000000000000410 0x50 geomout.o - .debug_aranges - 0x0000000000000460 0x50 readpdb.o - .debug_aranges - 0x00000000000004b0 0x50 read_coords.o - .debug_aranges - 0x0000000000000500 0x50 parmread.o - .debug_aranges - 0x0000000000000550 0x50 probabl.o - .debug_aranges - 0x00000000000005a0 0x50 fitsq.o - .debug_aranges - 0x00000000000005f0 0x50 hc.o - .debug_aranges - 0x0000000000000640 0x50 track.o - .debug_aranges - 0x0000000000000690 0x50 wrtclust.o - .debug_aranges - 0x00000000000006e0 0x50 srtclust.o - .debug_aranges - 0x0000000000000730 0x50 noyes.o - .debug_aranges - 0x0000000000000780 0x50 contact.o - .debug_aranges - 0x00000000000007d0 0x50 printmat.o - .debug_aranges - 0x0000000000000820 0x50 int_from_cart1.o - .debug_aranges - 0x0000000000000870 0x50 energy_p_new.o - .debug_aranges - 0x00000000000008c0 0x50 icant.o - .debug_aranges - 0x0000000000000910 0x50 work_partition.o - .debug_aranges - 0x0000000000000960 0x50 setup_var.o - .debug_aranges - 0x00000000000009b0 0x50 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_pubnames - 0x0000000000000000 0xb1a - *(.debug_pubnames) - .debug_pubnames - 0x0000000000000000 0x33 main_clust.o - .debug_pubnames - 0x0000000000000033 0x1c arcos.o - .debug_pubnames - 0x000000000000004f 0x20 cartprint.o - .debug_pubnames - 0x000000000000006f 0x5a chainbuild.o - .debug_pubnames - 0x00000000000000c9 0x32 convert.o - .debug_pubnames - 0x00000000000000fb 0x58 initialize_p.o - .debug_pubnames - 0x0000000000000153 0x1e matmult.o - .debug_pubnames - 0x0000000000000171 0x9c readrtns.o - .debug_pubnames - 0x000000000000020d 0x1d pinorm.o - .debug_pubnames - 0x000000000000022a 0x1e rescode.o - .debug_pubnames - 0x0000000000000248 0x2e intcor.o - .debug_pubnames - 0x0000000000000276 0x4b timing.o - .debug_pubnames - 0x00000000000002c1 0x93 misc.o - .debug_pubnames - 0x0000000000000354 0x4d geomout.o - .debug_pubnames - 0x00000000000003a1 0x3d readpdb.o - .debug_pubnames - 0x00000000000003de 0xa9 read_coords.o - .debug_pubnames - 0x0000000000000487 0x1f parmread.o - .debug_pubnames - 0x00000000000004a6 0x2a probabl.o - .debug_pubnames - 0x00000000000004d0 0x63 fitsq.o - .debug_pubnames - 0x0000000000000533 0x39 hc.o - .debug_pubnames - 0x000000000000056c 0x35 track.o - .debug_pubnames - 0x00000000000005a1 0x1f wrtclust.o - .debug_pubnames - 0x00000000000005c0 0x1f srtclust.o - .debug_pubnames - 0x00000000000005df 0x1c noyes.o - .debug_pubnames - 0x00000000000005fb 0x30 contact.o - .debug_pubnames - 0x000000000000062b 0x1f printmat.o - .debug_pubnames - 0x000000000000064a 0x25 int_from_cart1.o - .debug_pubnames - 0x000000000000066f 0x2df energy_p_new.o - .debug_pubnames - 0x000000000000094e 0x1c icant.o - .debug_pubnames - 0x000000000000096a 0x25 work_partition.o - .debug_pubnames - 0x000000000000098f 0x20 setup_var.o - .debug_pubnames - 0x00000000000009af 0x16b /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_info 0x0000000000000000 0xd920c - *(.debug_info .gnu.linkonce.wi.*) - .debug_info 0x0000000000000000 0x5ee0 main_clust.o - .debug_info 0x0000000000005ee0 0x174 arcos.o - .debug_info 0x0000000000006054 0x168c cartprint.o - .debug_info 0x00000000000076e0 0x6937 chainbuild.o - .debug_info 0x000000000000e017 0xee2 convert.o - .debug_info 0x000000000000eef9 0x80c1 initialize_p.o - .debug_info 0x0000000000016fba 0x30e matmult.o - .debug_info 0x00000000000172c8 0xb255 readrtns.o - .debug_info 0x000000000002251d 0x17f pinorm.o - .debug_info 0x000000000002269c 0xae7 rescode.o - .debug_info 0x0000000000023183 0x12a1 intcor.o - .debug_info 0x0000000000024424 0x1528 timing.o - .debug_info 0x000000000002594c 0x725 misc.o - .debug_info 0x0000000000026071 0x9528 geomout.o - .debug_info 0x000000000002f599 0x4364 readpdb.o - .debug_info 0x00000000000338fd 0x13ada read_coords.o - .debug_info 0x00000000000473d7 0x2a9a parmread.o - .debug_info 0x0000000000049e71 0x3637 probabl.o - .debug_info 0x000000000004d4a8 0x1457 fitsq.o - .debug_info 0x000000000004e8ff 0x17e5 hc.o - .debug_info 0x00000000000500e4 0x2afe track.o - .debug_info 0x0000000000052be2 0x1a13 wrtclust.o - .debug_info 0x00000000000545f5 0x1072 srtclust.o - .debug_info 0x0000000000055667 0xb8 noyes.o - .debug_info 0x000000000005571f 0x24d6 contact.o - .debug_info 0x0000000000057bf5 0x177 printmat.o - .debug_info 0x0000000000057d6c 0x1f2e int_from_cart1.o - .debug_info 0x0000000000059c9a 0x78f44 energy_p_new.o - .debug_info 0x00000000000d2bde 0xb0 icant.o - .debug_info 0x00000000000d2c8e 0x1fe7 work_partition.o - .debug_info 0x00000000000d4c75 0x194a setup_var.o - .debug_info 0x00000000000d65bf 0x2c4d /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_abbrev 0x0000000000000000 0x5338a - *(.debug_abbrev) - .debug_abbrev 0x0000000000000000 0x2782 main_clust.o - .debug_abbrev 0x0000000000002782 0xb8 arcos.o - .debug_abbrev 0x000000000000283a 0x8be cartprint.o - .debug_abbrev 0x00000000000030f8 0x293c chainbuild.o - .debug_abbrev 0x0000000000005a34 0x632 convert.o - .debug_abbrev 0x0000000000006066 0x3730 initialize_p.o - .debug_abbrev 0x0000000000009796 0x1b2 matmult.o - .debug_abbrev 0x0000000000009948 0x49d0 readrtns.o - .debug_abbrev 0x000000000000e318 0xbc pinorm.o - .debug_abbrev 0x000000000000e3d4 0x54a rescode.o - .debug_abbrev 0x000000000000e91e 0x986 intcor.o - .debug_abbrev 0x000000000000f2a4 0xa88 timing.o - .debug_abbrev 0x000000000000fd2c 0x476 misc.o - .debug_abbrev 0x00000000000101a2 0x3abe geomout.o - .debug_abbrev 0x0000000000013c60 0x1aae readpdb.o - .debug_abbrev 0x000000000001570e 0x832e read_coords.o - .debug_abbrev 0x000000000001da3c 0x110e parmread.o - .debug_abbrev 0x000000000001eb4a 0x1800 probabl.o - .debug_abbrev 0x000000000002034a 0xaa6 fitsq.o - .debug_abbrev 0x0000000000020df0 0xc16 hc.o - .debug_abbrev 0x0000000000021a06 0x13fe track.o - .debug_abbrev 0x0000000000022e04 0xbc6 wrtclust.o - .debug_abbrev 0x00000000000239ca 0x7c2 srtclust.o - .debug_abbrev 0x000000000002418c 0x5e noyes.o - .debug_abbrev 0x00000000000241ea 0x1014 contact.o - .debug_abbrev 0x00000000000251fe 0xcf printmat.o - .debug_abbrev 0x00000000000252cd 0xc1a int_from_cart1.o - .debug_abbrev 0x0000000000025ee7 0x2aac4 energy_p_new.o - .debug_abbrev 0x00000000000509ab 0x5b icant.o - .debug_abbrev 0x0000000000050a06 0xed6 work_partition.o - .debug_abbrev 0x00000000000518dc 0xa12 setup_var.o - .debug_abbrev 0x00000000000522ee 0x109c /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_line 0x0000000000000000 0x14996 - *(.debug_line) - .debug_line 0x0000000000000000 0xc09 main_clust.o - .debug_line 0x0000000000000c09 0xa0 arcos.o - .debug_line 0x0000000000000ca9 0xa4 cartprint.o - .debug_line 0x0000000000000d4d 0x7e9 chainbuild.o - .debug_line 0x0000000000001536 0x1c2 convert.o - .debug_line 0x00000000000016f8 0xe6f initialize_p.o - .debug_line 0x0000000000002567 0xf6 matmult.o - .debug_line 0x000000000000265d 0xff7 readrtns.o - .debug_line 0x0000000000003654 0xc5 pinorm.o - .debug_line 0x0000000000003719 0x132 rescode.o - .debug_line 0x000000000000384b 0x2b1 intcor.o - .debug_line 0x0000000000003afc 0x1c1 timing.o - .debug_line 0x0000000000003cbd 0x67b misc.o - .debug_line 0x0000000000004338 0x4da geomout.o - .debug_line 0x0000000000004812 0x61e readpdb.o - .debug_line 0x0000000000004e30 0x9ca read_coords.o - .debug_line 0x00000000000057fa 0x1303 parmread.o - .debug_line 0x0000000000006afd 0x55e probabl.o - .debug_line 0x000000000000705b 0xd90 fitsq.o - .debug_line 0x0000000000007deb 0xaf9 hc.o - .debug_line 0x00000000000088e4 0x7f0 track.o - .debug_line 0x00000000000090d4 0x787 wrtclust.o - .debug_line 0x000000000000985b 0x3df srtclust.o - .debug_line 0x0000000000009c3a 0xe8 noyes.o - .debug_line 0x0000000000009d22 0x22e contact.o - .debug_line 0x0000000000009f50 0xd3 printmat.o - .debug_line 0x000000000000a023 0x271 int_from_cart1.o - .debug_line 0x000000000000a294 0xa187 energy_p_new.o - .debug_line 0x000000000001441b 0xac icant.o - .debug_line 0x00000000000144c7 0x259 work_partition.o - .debug_line 0x0000000000014720 0x14c setup_var.o - .debug_line 0x000000000001486c 0x12a /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - -.debug_frame 0x0000000000000000 0x6940 - *(.debug_frame) - .debug_frame 0x0000000000000000 0x78 main_clust.o - .debug_frame 0x0000000000000078 0x38 arcos.o - .debug_frame 0x00000000000000b0 0x38 cartprint.o - .debug_frame 0x00000000000000e8 0x98 chainbuild.o - .debug_frame 0x0000000000000180 0x58 convert.o - .debug_frame 0x00000000000001d8 0x98 initialize_p.o - .debug_frame 0x0000000000000270 0x38 matmult.o - .debug_frame 0x00000000000002a8 0x158 readrtns.o - .debug_frame 0x0000000000000400 0x38 pinorm.o - .debug_frame 0x0000000000000438 0x38 rescode.o - .debug_frame 0x0000000000000470 0x78 intcor.o - .debug_frame 0x00000000000004e8 0xb8 timing.o - .debug_frame 0x00000000000005a0 0x178 misc.o - .debug_frame 0x0000000000000718 0xb8 geomout.o - .debug_frame 0x00000000000007d0 0x78 readpdb.o - .debug_frame 0x0000000000000848 0xf8 read_coords.o - .debug_frame 0x0000000000000940 0x38 parmread.o - .debug_frame 0x0000000000000978 0x58 probabl.o - .debug_frame 0x00000000000009d0 0x118 fitsq.o - .debug_frame 0x0000000000000ae8 0x98 hc.o - .debug_frame 0x0000000000000b80 0x78 track.o - .debug_frame 0x0000000000000bf8 0x38 wrtclust.o - .debug_frame 0x0000000000000c30 0x38 srtclust.o - .debug_frame 0x0000000000000c68 0x38 noyes.o - .debug_frame 0x0000000000000ca0 0x58 contact.o - .debug_frame 0x0000000000000cf8 0x38 printmat.o - .debug_frame 0x0000000000000d30 0x38 int_from_cart1.o - .debug_frame 0x0000000000000d68 0x718 energy_p_new.o - .debug_frame 0x0000000000001480 0x38 icant.o - .debug_frame 0x00000000000014b8 0x38 work_partition.o - .debug_frame 0x00000000000014f0 0x38 setup_var.o - .debug_frame 0x0000000000001528 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) - .debug_frame 0x0000000000001560 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) - .debug_frame 0x0000000000001598 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) - .debug_frame 0x00000000000015d0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) - .debug_frame 0x0000000000001608 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) - .debug_frame 0x0000000000001640 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) - .debug_frame 0x0000000000001678 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) - .debug_frame 0x00000000000016b0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) - .debug_frame 0x00000000000016e8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - .debug_frame 0x0000000000001720 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_copyfnf.o) - .debug_frame 0x0000000000001758 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_del_fnf.o) - .debug_frame 0x0000000000001790 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) - .debug_frame 0x00000000000017c8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) - .debug_frame 0x0000000000001800 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) - .debug_frame 0x0000000000001838 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) - .debug_frame 0x0000000000001870 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) - .debug_frame 0x00000000000018c8 0xd8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - .debug_frame 0x00000000000019a0 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfcmn.o) - .debug_frame 0x00000000000019f8 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - .debug_frame 0x0000000000001ab0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - .debug_frame 0x0000000000001ae8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - .debug_frame 0x0000000000001b20 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - .debug_frame 0x0000000000001c18 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - .debug_frame 0x0000000000001c50 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) - .debug_frame 0x0000000000001c88 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - .debug_frame 0x0000000000001d00 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) - .debug_frame 0x0000000000001d38 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errorstring.o) - .debug_frame 0x0000000000001d70 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - .debug_frame 0x0000000000001e28 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - .debug_frame 0x0000000000001e60 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtime.o) - .debug_frame 0x0000000000001e98 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) - .debug_frame 0x0000000000001ed0 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - .debug_frame 0x0000000000001fc8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(msgqdllloc.o) - .debug_frame 0x0000000000002000 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - .debug_frame 0x0000000000002158 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - .debug_frame 0x00000000000022b0 0xd8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - .debug_frame 0x0000000000002388 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - .debug_frame 0x00000000000023c0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - .debug_frame 0x00000000000023f8 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - .debug_frame 0x0000000000002550 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - .debug_frame 0x0000000000002588 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - .debug_frame 0x00000000000025c0 0x118 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - .debug_frame 0x00000000000026d8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - .debug_frame 0x0000000000002710 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - .debug_frame 0x0000000000002748 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - .debug_frame 0x00000000000027a0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - .debug_frame 0x00000000000027d8 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - .debug_frame 0x0000000000002910 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - .debug_frame 0x0000000000002968 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fn.o) - .debug_frame 0x00000000000029a0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - .debug_frame 0x00000000000029d8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - .debug_frame 0x0000000000002a10 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - .debug_frame 0x0000000000002a48 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - .debug_frame 0x0000000000002a80 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - .debug_frame 0x0000000000002ab8 0x198 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - .debug_frame 0x0000000000002c50 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - .debug_frame 0x0000000000002c88 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - .debug_frame 0x0000000000002cc0 0x1f8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - .debug_frame 0x0000000000002eb8 0x1b8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - .debug_frame 0x0000000000003070 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - .debug_frame 0x00000000000030a8 0xd8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - .debug_frame 0x0000000000003180 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - .debug_frame 0x00000000000031b8 0x418 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - .debug_frame 0x00000000000035d0 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - .debug_frame 0x00000000000036c8 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - .debug_frame 0x0000000000003740 0x2f8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - .debug_frame 0x0000000000003a38 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - .debug_frame 0x0000000000003af0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - .debug_frame 0x0000000000003ba8 0x1d8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - .debug_frame 0x0000000000003d80 0x118 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - .debug_frame 0x0000000000003e98 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - .debug_frame 0x0000000000003f90 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - .debug_frame 0x0000000000003fe8 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - .debug_frame 0x0000000000004120 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) - .debug_frame 0x0000000000004178 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - .debug_frame 0x00000000000041d0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - .debug_frame 0x0000000000004288 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - .debug_frame 0x0000000000004320 0x218 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - .debug_frame 0x0000000000004538 0x238 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - .debug_frame 0x0000000000004770 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - .debug_frame 0x0000000000004808 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - .debug_frame 0x0000000000004900 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - .debug_frame 0x0000000000004938 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - .debug_frame 0x0000000000004990 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - .debug_frame 0x0000000000004ae8 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - .debug_frame 0x0000000000004b60 0x158 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - .debug_frame 0x0000000000004cb8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - .debug_frame 0x0000000000004cf0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - .debug_frame 0x0000000000004da8 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - .debug_frame 0x0000000000004e40 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - .debug_frame 0x0000000000004e78 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - .debug_frame 0x0000000000004eb0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - .debug_frame 0x0000000000004ee8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - .debug_frame 0x0000000000004f20 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - .debug_frame 0x0000000000004f58 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - .debug_frame 0x0000000000004f90 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - .debug_frame 0x0000000000004fc8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - .debug_frame 0x0000000000005000 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - .debug_frame 0x0000000000005038 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - .debug_frame 0x0000000000005070 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - .debug_frame 0x00000000000050a8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - .debug_frame 0x00000000000050e0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - .debug_frame 0x0000000000005118 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - .debug_frame 0x0000000000005150 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - .debug_frame 0x0000000000005188 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - .debug_frame 0x00000000000051c0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - .debug_frame 0x00000000000051f8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - .debug_frame 0x0000000000005230 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - .debug_frame 0x0000000000005268 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - .debug_frame 0x00000000000052a0 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - .debug_frame 0x00000000000052d8 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - .debug_frame 0x0000000000005310 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - .debug_frame 0x0000000000005448 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyvalcreate.o) - .debug_frame 0x0000000000005480 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - .debug_frame 0x00000000000054b8 0x118 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - .debug_frame 0x00000000000055d0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - .debug_frame 0x0000000000005688 0x98 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - .debug_frame 0x0000000000005720 0x198 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - .debug_frame 0x00000000000058b8 0x198 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - .debug_frame 0x0000000000005a50 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - .debug_frame 0x0000000000005ac8 0x218 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - .debug_frame 0x0000000000005ce0 0x218 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - .debug_frame 0x0000000000005ef8 0x2d8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - .debug_frame 0x00000000000061d0 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - .debug_frame 0x0000000000006288 0xb8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - .debug_frame 0x0000000000006340 0x58 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - .debug_frame 0x0000000000006398 0x138 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - .debug_frame 0x00000000000064d0 0x1b8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - .debug_frame 0x0000000000006688 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - .debug_frame 0x00000000000066c0 0xf8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - .debug_frame 0x00000000000067b8 0xd8 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - .debug_frame 0x0000000000006890 0x38 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - .debug_frame 0x00000000000068c8 0x78 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dmpipk.o) - -.debug_str - *(.debug_str) - -.debug_loc - *(.debug_loc) - -.debug_macinfo - *(.debug_macinfo) - -.debug_weaknames - *(.debug_weaknames) - -.debug_funcnames - *(.debug_funcnames) - -.debug_typenames - *(.debug_typenames) - -.debug_varnames - *(.debug_varnames) - -/DISCARD/ - *(.note.GNU-stack) -OUTPUT(/users/adam/ZSCOREZ/bin/unres_clustMD_MPI elf64-x86-64) - -.note 0x0000000000000000 0xce4 - .note 0x0000000000000000 0x14 main_clust.o - .note 0x0000000000000014 0x14 arcos.o - .note 0x0000000000000028 0x14 cartprint.o - .note 0x000000000000003c 0x14 chainbuild.o - .note 0x0000000000000050 0x14 convert.o - .note 0x0000000000000064 0x14 initialize_p.o - .note 0x0000000000000078 0x14 matmult.o - .note 0x000000000000008c 0x14 readrtns.o - .note 0x00000000000000a0 0x14 pinorm.o - .note 0x00000000000000b4 0x14 rescode.o - .note 0x00000000000000c8 0x14 intcor.o - .note 0x00000000000000dc 0x14 timing.o - .note 0x00000000000000f0 0x14 misc.o - .note 0x0000000000000104 0x14 geomout.o - .note 0x0000000000000118 0x14 readpdb.o - .note 0x000000000000012c 0x14 read_coords.o - .note 0x0000000000000140 0x14 parmread.o - .note 0x0000000000000154 0x14 probabl.o - .note 0x0000000000000168 0x14 fitsq.o - .note 0x000000000000017c 0x14 hc.o - .note 0x0000000000000190 0x14 track.o - .note 0x00000000000001a4 0x14 wrtclust.o - .note 0x00000000000001b8 0x14 srtclust.o - .note 0x00000000000001cc 0x14 noyes.o - .note 0x00000000000001e0 0x14 contact.o - .note 0x00000000000001f4 0x14 printmat.o - .note 0x0000000000000208 0x14 int_from_cart1.o - .note 0x000000000000021c 0x14 energy_p_new.o - .note 0x0000000000000230 0x14 icant.o - .note 0x0000000000000244 0x14 work_partition.o - .note 0x0000000000000258 0x14 setup_var.o - .note 0x000000000000026c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abortf.o) - .note 0x0000000000000280 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgatherf.o) - .note 0x0000000000000294 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcastf.o) - .note 0x00000000000002a8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rankf.o) - .note 0x00000000000002bc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_sizef.o) - .note 0x00000000000002d0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fnf.o) - .note 0x00000000000002e4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalizef.o) - .note 0x00000000000002f8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gathervf.o) - .note 0x000000000000030c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initf.o) - .note 0x0000000000000320 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_copyfnf.o) - .note 0x0000000000000334 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(null_del_fnf.o) - .note 0x0000000000000348 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recvf.o) - .note 0x000000000000035c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendf.o) - .note 0x0000000000000370 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtickf.o) - .note 0x0000000000000384 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtimef.o) - .note 0x0000000000000398 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(farg.o) - .note 0x00000000000003ac 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfutil.o) - .note 0x00000000000003c0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initfcmn.o) - .note 0x00000000000003d4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(mperror.o) - .note 0x00000000000003e8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(send.o) - .note 0x00000000000003fc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(recv.o) - .note 0x0000000000000410 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_util.o) - .note 0x0000000000000424 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(abort.o) - .note 0x0000000000000438 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(init.o) - .note 0x000000000000044c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initutil.o) - .note 0x0000000000000460 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(finalize.o) - .note 0x0000000000000474 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errorstring.o) - .note 0x0000000000000488 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(initdte.o) - .note 0x000000000000049c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errfree.o) - .note 0x00000000000004b0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtime.o) - .note 0x00000000000004c4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wtick.o) - .note 0x00000000000004d8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(nerrmsg.o) - .note 0x00000000000004ec 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(msgqdllloc.o) - .note 0x0000000000000500 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(util_hbt.o) - .note 0x0000000000000514 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(ptrcvt.o) - .note 0x0000000000000528 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bsendutil2.o) - .note 0x000000000000053c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyval_free.o) - .note 0x0000000000000550 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_getval.o) - .note 0x0000000000000564 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_util.o) - .note 0x0000000000000578 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(attr_putval.o) - .note 0x000000000000058c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_free.o) - .note 0x00000000000005a0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(group_util.o) - .note 0x00000000000005b4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_free.o) - .note 0x00000000000005c8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_rank.o) - .note 0x00000000000005dc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_name_put.o) - .note 0x00000000000005f0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_size.o) - .note 0x0000000000000604 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(comm_util.o) - .note 0x0000000000000618 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(context_util.o) - .note 0x000000000000062c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dup_fn.o) - .note 0x0000000000000640 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(barrier.o) - .note 0x0000000000000654 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bcast.o) - .note 0x0000000000000668 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(gatherv.o) - .note 0x000000000000067c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allgather.o) - .note 0x0000000000000690 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(allreduce.o) - .note 0x00000000000006a4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(global_ops.o) - .note 0x00000000000006b8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(opfree.o) - .note 0x00000000000006cc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(oputil.o) - .note 0x00000000000006e0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(inter_fns.o) - .note 0x00000000000006f4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_fns_new.o) - .note 0x0000000000000708 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(intra_scan.o) - .note 0x000000000000071c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(topo_util.o) - .note 0x0000000000000730 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(statusc2f.o) - .note 0x0000000000000744 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_utils.o) - .note 0x0000000000000758 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_bm.o) - .note 0x000000000000076c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_rm.o) - .note 0x0000000000000780 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_util.o) - .note 0x0000000000000794 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_cr.o) - .note 0x00000000000007a8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_conn.o) - .note 0x00000000000007bc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_sr.o) - .note 0x00000000000007d0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_sock_list.o) - .note 0x00000000000007e4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_secure.o) - .note 0x00000000000007f8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(usc.o) - .note 0x000000000000080c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2init.o) - .note 0x0000000000000820 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hsend.o) - .note 0x0000000000000834 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2hrecv.o) - .note 0x0000000000000848 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2pack.o) - .note 0x000000000000085c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2mpack.o) - .note 0x0000000000000870 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(bswap2.o) - .note 0x0000000000000884 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chdebug.o) - .note 0x0000000000000898 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chinit.o) - .note 0x00000000000008ac 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chhetero.o) - .note 0x00000000000008c0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chtick.o) - .note 0x00000000000008d4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4priv.o) - .note 0x00000000000008e8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(queue.o) - .note 0x00000000000008fc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cmnargs.o) - .note 0x0000000000000910 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sbcnst2.o) - .note 0x0000000000000924 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(session.o) - .note 0x0000000000000938 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chpackflow.o) - .note 0x000000000000094c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chcancel.o) - .note 0x0000000000000960 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(isend.o) - .note 0x0000000000000974 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(irecv.o) - .note 0x0000000000000988 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(wait.o) - .note 0x000000000000099c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(test.o) - .note 0x00000000000009b0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(cancel.o) - .note 0x00000000000009c4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(waitall.o) - .note 0x00000000000009d8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(sendrecv.o) - .note 0x00000000000009ec 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(testall.o) - .note 0x0000000000000a00 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(getcount.o) - .note 0x0000000000000a14 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_commit.o) - .note 0x0000000000000a28 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_contig.o) - .note 0x0000000000000a3c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_extent.o) - .note 0x0000000000000a50 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_free.o) - .note 0x0000000000000a64 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_ind.o) - .note 0x0000000000000a78 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_lb.o) - .note 0x0000000000000a8c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_size.o) - .note 0x0000000000000aa0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_struct.o) - .note 0x0000000000000ab4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack_size.o) - .note 0x0000000000000ac8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pack.o) - .note 0x0000000000000adc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(unpack.o) - .note 0x0000000000000af0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(debugutil.o) - .note 0x0000000000000b04 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(errset.o) - .note 0x0000000000000b18 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(pkutil.o) - .note 0x0000000000000b2c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(keyvalcreate.o) - .note 0x0000000000000b40 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(reduce.o) - .note 0x0000000000000b54 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_globals.o) - .note 0x0000000000000b68 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_MD.o) - .note 0x0000000000000b7c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_error.o) - .note 0x0000000000000b90 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_args.o) - .note 0x0000000000000ba4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_alloc.o) - .note 0x0000000000000bb8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_debug.o) - .note 0x0000000000000bcc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_procgroup.o) - .note 0x0000000000000be0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_tsr.o) - .note 0x0000000000000bf4 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_mon.o) - .note 0x0000000000000c08 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(p4_broadcast.o) - .note 0x0000000000000c1c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2recv.o) - .note 0x0000000000000c30 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2send.o) - .note 0x0000000000000c44 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(adi2cancel.o) - .note 0x0000000000000c58 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbeager.o) - .note 0x0000000000000c6c 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chbrndv.o) - .note 0x0000000000000c80 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chchkdev.o) - .note 0x0000000000000c94 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chshort.o) - .note 0x0000000000000ca8 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(chflow.o) - .note 0x0000000000000cbc 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(type_hind.o) - .note 0x0000000000000cd0 0x14 /usr/local/mpich-1.2.5.2_pgi64-6.0-4_ssh/lib/libmpich.a(dmpipk.o) diff --git a/source/cluster/wham/src/proc_proc.c b/source/cluster/wham/src/proc_proc.c index d77c5a4..f023520 100644 --- a/source/cluster/wham/src/proc_proc.c +++ b/source/cluster/wham/src/proc_proc.c @@ -1,5 +1,6 @@ #include #include +#include #ifdef CRAY void PROC_PROC(long int *f, int *i) diff --git a/source/lib/xdrf-Argonne/Makefile b/source/lib/xdrf-Argonne/Makefile new file mode 100644 index 0000000..f03276e --- /dev/null +++ b/source/lib/xdrf-Argonne/Makefile @@ -0,0 +1,27 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +CC = cc +CFLAGS = -O + +M4 = m4 +M4FILE = underscore.m4 + +libxdrf.a: libxdrf.o ftocstr.o + ar cr libxdrf.a $? + +clean: + rm -f libxdrf.o ftocstr.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c + rm -f libxdrf.c + diff --git a/source/lib/xdrf-Argonne/Makefile_jubl b/source/lib/xdrf-Argonne/Makefile_jubl new file mode 100644 index 0000000..8dc35cf --- /dev/null +++ b/source/lib/xdrf-Argonne/Makefile_jubl @@ -0,0 +1,31 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +BGLSYS = /bgl/BlueLight/ppcfloor/bglsys + +CC = /usr/bin/blrts_xlc +CPPC = /usr/bin/blrts_xlc + +CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 + +M4 = m4 +M4FILE = RS6K.m4 + +libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o + ar cr libxdrf.a $? + +clean: + rm -f *.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c +# rm -f libxdrf.c + diff --git a/source/lib/xdrf-Argonne/Makefile_linux b/source/lib/xdrf-Argonne/Makefile_linux new file mode 100644 index 0000000..f03276e --- /dev/null +++ b/source/lib/xdrf-Argonne/Makefile_linux @@ -0,0 +1,27 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +CC = cc +CFLAGS = -O + +M4 = m4 +M4FILE = underscore.m4 + +libxdrf.a: libxdrf.o ftocstr.o + ar cr libxdrf.a $? + +clean: + rm -f libxdrf.o ftocstr.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c + rm -f libxdrf.c + diff --git a/source/lib/xdrf-Argonne/RS6K.m4 b/source/lib/xdrf-Argonne/RS6K.m4 new file mode 100644 index 0000000..0331d97 --- /dev/null +++ b/source/lib/xdrf-Argonne/RS6K.m4 @@ -0,0 +1,20 @@ +divert(-1) +undefine(`len') +# +# do nothing special to FORTRAN function names +# +define(`FUNCTION',`$1') +# +# FORTRAN character strings are passed as follows: +# a pointer to the base of the string is passed in the normal +# argument list, and the length is passed by value as an extra +# argument, after all of the other arguments. +# +define(`ARGS',`($1`'undivert(1))') +define(`SAVE',`divert(1)$1`'divert(0)') +define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') +define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') +define(`STRING_LEN',`$1_len') +define(`STRING_PTR',`$1_ptr') +divert(0) + diff --git a/source/lib/xdrf-Argonne/ftocstr.c b/source/lib/xdrf-Argonne/ftocstr.c new file mode 100644 index 0000000..ed2113f --- /dev/null +++ b/source/lib/xdrf-Argonne/ftocstr.c @@ -0,0 +1,35 @@ + + +int ftocstr(ds, dl, ss, sl) + char *ds, *ss; /* dst, src ptrs */ + int dl; /* dst max len */ + int sl; /* src len */ +{ + char *p; + + for (p = ss + sl; --p >= ss && *p == ' '; ) ; + sl = p - ss + 1; + dl--; + ds[0] = 0; + if (sl > dl) + return 1; + while (sl--) + (*ds++ = *ss++); + *ds = '\0'; + return 0; +} + + +int ctofstr(ds, dl, ss) + char *ds; /* dest space */ + int dl; /* max dest length */ + char *ss; /* src string (0-term) */ +{ + while (dl && *ss) { + *ds++ = *ss++; + dl--; + } + while (dl--) + *ds++ = ' '; + return 0; +} diff --git a/source/lib/xdrf-Argonne/libxdrf.m4 b/source/lib/xdrf-Argonne/libxdrf.m4 new file mode 100644 index 0000000..a6da458 --- /dev/null +++ b/source/lib/xdrf-Argonne/libxdrf.m4 @@ -0,0 +1,1238 @@ +/*____________________________________________________________________________ + | + | libxdrf - portable fortran interface to xdr. some xdr routines + | are C routines for compressed coordinates + | + | version 1.1 + | + | This collection of routines is intended to write and read + | data in a portable way to a file, so data written on one type + | of machine can be read back on a different type. + | + | all fortran routines use an integer 'xdrid', which is an id to the + | current xdr file, and is set by xdrfopen. + | most routines have in integer 'ret' which is the return value. + | The value of 'ret' is zero on failure, and most of the time one + | on succes. + | + | There are three routines useful for C users: + | xdropen(), xdrclose(), xdr3dfcoord(). + | The first two replace xdrstdio_create and xdr_destroy, and *must* be + | used when you plan to use xdr3dfcoord(). (they are also a bit + | easier to interface). For writing data other than compressed coordinates + | you should use the standard C xdr routines (see xdr man page) + | + | xdrfopen(xdrid, filename, mode, ret) + | character *(*) filename + | character *(*) mode + | + | this will open the file with the given filename (string) + | and the given mode, it returns an id in xdrid, which is + | to be used in all other calls to xdrf routines. + | mode is 'w' to create, or update an file, for all other + | values of mode the file is opened for reading + | + | you need to call xdrfclose to flush the output and close + | the file. + | Note that you should not use xdrstdio_create, which comes with the + | standard xdr library + | + | xdrfclose(xdrid, ret) + | flush the data to the file, and closes the file; + | You should not use xdr_destroy (which comes standard with + | the xdr libraries. + | + | xdrfbool(xdrid, bp, ret) + | integer pb + | + | This filter produces values of either 1 or 0 + | + | xdrfchar(xdrid, cp, ret) + | character cp + | + | filter that translate between characters and their xdr representation + | Note that the characters in not compressed and occupies 4 bytes. + | + | xdrfdouble(xdrid, dp, ret) + | double dp + | + | read/write a double. + | + | xdrffloat(xdrid, fp, ret) + | float fp + | + | read/write a float. + | + | xdrfint(xdrid, ip, ret) + | integer ip + | + | read/write integer. + | + | xdrflong(xdrid, lp, ret) + | integer lp + | + | this routine has a possible portablility problem due to 64 bits longs. + | + | xdrfshort(xdrid, sp, ret) + | integer *2 sp + | + | xdrfstring(xdrid, sp, maxsize, ret) + | character *(*) + | integer maxsize + | + | read/write a string, with maximum length given by maxsize + | + | xdrfwrapstring(xdris, sp, ret) + | character *(*) + | + | read/write a string (it is the same as xdrfstring accept that it finds + | the stringlength itself. + | + | xdrfvector(xdrid, cp, size, xdrfproc, ret) + | character *(*) + | integer size + | external xdrfproc + | + | read/write an array pointed to by cp, with number of elements + | defined by 'size'. the routine 'xdrfproc' is the name + | of one of the above routines to read/write data (like xdrfdouble) + | In contrast with the c-version you don't need to specify the + | byte size of an element. + | xdrfstring is not allowed here (it is in the c version) + | + | xdrf3dfcoord(xdrid, fp, size, precision, ret) + | real (*) fp + | real precision + | integer size + | + | this is *NOT* a standard xdr routine. I named it this way, because + | it invites people to use the other xdr routines. + | It is introduced to store specifically 3d coordinates of molecules + | (as found in molecular dynamics) and it writes it in a compressed way. + | It starts by multiplying all numbers by precision and + | rounding the result to integer. effectively converting + | all floating point numbers to fixed point. + | it uses an algorithm for compression that is optimized for + | molecular data, but could be used for other 3d coordinates + | as well. There is subtantial overhead involved, so call this + | routine only if you have a large number of coordinates to read/write + | + | ________________________________________________________________________ + | + | Below are the routines to be used by C programmers. Use the 'normal' + | xdr routines to write integers, floats, etc (see man xdr) + | + | int xdropen(XDR *xdrs, const char *filename, const char *type) + | This will open the file with the given filename and the + | given mode. You should pass it an allocated XDR struct + | in xdrs, to be used in all other calls to xdr routines. + | Mode is 'w' to create, or update an file, and for all + | other values of mode the file is opened for reading. + | You need to call xdrclose to flush the output and close + | the file. + | + | Note that you should not use xdrstdio_create, which + | comes with the standard xdr library. + | + | int xdrclose(XDR *xdrs) + | Flush the data to the file, and close the file; + | You should not use xdr_destroy (which comes standard + | with the xdr libraries). + | + | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) + | This is \fInot\fR a standard xdr routine. I named it this + | way, because it invites people to use the other xdr + | routines. + | + | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl +*/ + + +#include +#include +#include +/* #include +#include */ +#include "xdr.h" +#include +#include +#include "xdrf.h" + +int ftocstr(char *, int, char *, int); +int ctofstr(char *, int, char *); + +#define MAXID 20 +static FILE *xdrfiles[MAXID]; +static XDR *xdridptr[MAXID]; +static char xdrmodes[MAXID]; +static unsigned int cnt; + +typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); + +void +FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') +int *xdrid, *ret; +int *pb; +{ + *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); + cnt += sizeof(int); +} + +void +FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') +int *xdrid, *ret; +char *cp; +{ + *ret = xdr_char(xdridptr[*xdrid], cp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') +int *xdrid, *ret; +double *dp; +{ + *ret = xdr_double(xdridptr[*xdrid], dp); + cnt += sizeof(double); +} + +void +FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') +int *xdrid, *ret; +float *fp; +{ + *ret = xdr_float(xdridptr[*xdrid], fp); + cnt += sizeof(float); +} + +void +FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') +int *xdrid, *ret; +int *ip; +{ + *ret = xdr_int(xdridptr[*xdrid], ip); + cnt += sizeof(int); +} + +void +FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') +int *xdrid, *ret; +long *lp; +{ + *ret = xdr_long(xdridptr[*xdrid], lp); + cnt += sizeof(long); +} + +void +FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') +int *xdrid, *ret; +short *sp; +{ + *ret = xdr_short(xdridptr[*xdrid], sp); + cnt += sizeof(sp); +} + +void +FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') +int *xdrid, *ret; +char *ucp; +{ + *ret = xdr_u_char(xdridptr[*xdrid], ucp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') +int *xdrid, *ret; +unsigned long *ulp; +{ + *ret = xdr_u_long(xdridptr[*xdrid], ulp); + cnt += sizeof(unsigned long); +} + +void +FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') +int *xdrid, *ret; +unsigned short *usp; +{ + *ret = xdr_u_short(xdridptr[*xdrid], usp); + cnt += sizeof(unsigned short); +} + +void +FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') +int *xdrid, *ret; +float *fp; +int *size; +float *precision; +{ + *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); +} + +void +FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +int *maxsize; +{ + char *tsp; + + tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += *maxsize; + free(tsp); +} + +void +FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +{ + char *tsp; + int maxsize; + maxsize = (STRING_LEN(sp)) + 1; + tsp = (char*) malloc(maxsize * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += maxsize; + free(tsp); +} + +void +FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') +int *xdrid, *ret; +caddr_t *cp; +int *ccnt; +{ + *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); + cnt += *ccnt; +} + +void +FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') +int *xdrid, *ret; +int *pos; +{ + *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); +} + +void +FUNCTION(xdrf) ARGS(`xdrid, pos') +int *xdrid, *pos; +{ + *pos = xdr_getpos(xdridptr[*xdrid]); +} + +void +FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') +int *xdrid, *ret; +char *cp; +int *size; +FUNCTION(xdrfproc) elproc; +{ + int lcnt; + cnt = 0; + for (lcnt = 0; lcnt < *size; lcnt++) { + elproc(xdrid, (cp+cnt) , ret); + } +} + + +void +FUNCTION(xdrfclose) ARGS(`xdrid, ret') +int *xdrid; +int *ret; +{ + *ret = xdrclose(xdridptr[*xdrid]); + cnt = 0; +} + +void +FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') +int *xdrid; +STRING_ARG_DECL(fp); +STRING_ARG_DECL(mode); +int *ret; +{ + char fname[512]; + char fmode[3]; + + if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { + *ret = 0; + } + if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), + STRING_LEN(mode))) { + *ret = 0; + } + + *xdrid = xdropen(NULL, fname, fmode); + if (*xdrid == 0) + *ret = 0; + else + *ret = 1; +} + +/*___________________________________________________________________________ + | + | what follows are the C routines for opening, closing xdr streams + | and the routine to read/write compressed coordinates together + | with some routines to assist in this task (those are marked + | static and cannot be called from user programs) +*/ +#define MAXABS INT_MAX-2 + +#ifndef MIN +#define MIN(x,y) ((x) < (y) ? (x):(y)) +#endif +#ifndef MAX +#define MAX(x,y) ((x) > (y) ? (x):(y)) +#endif +#ifndef SQR +#define SQR(x) ((x)*(x)) +#endif +static int magicints[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, + 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, + 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, + 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, + 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, + 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, + 8388607, 10568983, 13316085, 16777216 }; + +#define FIRSTIDX 9 +/* note that magicints[FIRSTIDX-1] == 0 */ +#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) + + +/*__________________________________________________________________________ + | + | xdropen - open xdr file + | + | This versions differs from xdrstdio_create, because I need to know + | the state of the file (read or write) so I can use xdr3dfcoord + | in eigther read or write mode, and the file descriptor + | so I can close the file (something xdr_destroy doesn't do). + | +*/ + +int xdropen(XDR *xdrs, const char *filename, const char *type) { + static int init_done = 0; + enum xdr_op lmode; + const char *type1; + int xdrid; + + if (init_done == 0) { + for (xdrid = 1; xdrid < MAXID; xdrid++) { + xdridptr[xdrid] = NULL; + } + init_done = 1; + } + xdrid = 1; + while (xdrid < MAXID && xdridptr[xdrid] != NULL) { + xdrid++; + } + if (xdrid == MAXID) { + return 0; + } + if (*type == 'w' || *type == 'W') { + type = "w+"; + type1 = "w+"; + lmode = XDR_ENCODE; + } else if (*type == 'a' || *type == 'A') { + type = "w+"; + type1 = "a+"; + lmode = XDR_ENCODE; + } else { + type = "r"; + type1 = "r"; + lmode = XDR_DECODE; + } + xdrfiles[xdrid] = fopen(filename, type1); + if (xdrfiles[xdrid] == NULL) { + xdrs = NULL; + return 0; + } + xdrmodes[xdrid] = *type; + /* next test isn't usefull in the case of C language + * but is used for the Fortran interface + * (C users are expected to pass the address of an already allocated + * XDR staructure) + */ + if (xdrs == NULL) { + xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); + xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); + } else { + xdridptr[xdrid] = xdrs; + xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); + } + return xdrid; +} + +/*_________________________________________________________________________ + | + | xdrclose - close a xdr file + | + | This will flush the xdr buffers, and destroy the xdr stream. + | It also closes the associated file descriptor (this is *not* + | done by xdr_destroy). + | +*/ + +int xdrclose(XDR *xdrs) { + int xdrid; + + if (xdrs == NULL) { + fprintf(stderr, "xdrclose: passed a NULL pointer\n"); + exit(1); + } + for (xdrid = 1; xdrid < MAXID; xdrid++) { + if (xdridptr[xdrid] == xdrs) { + + xdr_destroy(xdrs); + fclose(xdrfiles[xdrid]); + xdridptr[xdrid] = NULL; + return 1; + } + } + fprintf(stderr, "xdrclose: no such open xdr file\n"); + exit(1); + +} + +/*____________________________________________________________________________ + | + | sendbits - encode num into buf using the specified number of bits + | + | This routines appends the value of num to the bits already present in + | the array buf. You need to give it the number of bits to use and you + | better make sure that this number of bits is enough to hold the value + | Also num must be positive. + | +*/ + +static void sendbits(int buf[], int num_of_bits, int num) { + + unsigned int cnt, lastbyte; + int lastbits; + unsigned char * cbuf; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = (unsigned int) buf[0]; + lastbits = buf[1]; + lastbyte =(unsigned int) buf[2]; + while (num_of_bits >= 8) { + lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); + cbuf[cnt++] = lastbyte >> lastbits; + num_of_bits -= 8; + } + if (num_of_bits > 0) { + lastbyte = (lastbyte << num_of_bits) | num; + lastbits += num_of_bits; + if (lastbits >= 8) { + lastbits -= 8; + cbuf[cnt++] = lastbyte >> lastbits; + } + } + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + if (lastbits>0) { + cbuf[cnt] = lastbyte << (8 - lastbits); + } +} + +/*_________________________________________________________________________ + | + | sizeofint - calculate bitsize of an integer + | + | return the number of bits needed to store an integer with given max size + | +*/ + +static int sizeofint(const int size) { + unsigned int num = 1; + int num_of_bits = 0; + + while (size >= num && num_of_bits < 32) { + num_of_bits++; + num <<= 1; + } + return num_of_bits; +} + +/*___________________________________________________________________________ + | + | sizeofints - calculate 'bitsize' of compressed ints + | + | given the number of small unsigned integers and the maximum value + | return the number of bits needed to read or write them with the + | routines receiveints and sendints. You need this parameter when + | calling these routines. Note that for many calls I can use + | the variable 'smallidx' which is exactly the number of bits, and + | So I don't need to call 'sizeofints for those calls. +*/ + +static int sizeofints( const int num_of_ints, unsigned int sizes[]) { + int i, num; + unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; + num_of_bytes = 1; + bytes[0] = 1; + num_of_bits = 0; + for (i=0; i < num_of_ints; i++) { + tmp = 0; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + num = 1; + num_of_bytes--; + while (bytes[num_of_bytes] >= num) { + num_of_bits++; + num *= 2; + } + return num_of_bits + num_of_bytes * 8; + +} + +/*____________________________________________________________________________ + | + | sendints - send a small set of small integers in compressed format + | + | this routine is used internally by xdr3dfcoord, to send a set of + | small integers to the buffer. + | Multiplication with fixed (specified maximum ) sizes is used to get + | to one big, multibyte integer. Allthough the routine could be + | modified to handle sizes bigger than 16777216, or more than just + | a few integers, this is not done, because the gain in compression + | isn't worth the effort. Note that overflowing the multiplication + | or the byte buffer (32 bytes) is unchecked and causes bad results. + | + */ + +static void sendints(int buf[], const int num_of_ints, const int num_of_bits, + unsigned int sizes[], unsigned int nums[]) { + + int i; + unsigned int bytes[32], num_of_bytes, bytecnt, tmp; + + tmp = nums[0]; + num_of_bytes = 0; + do { + bytes[num_of_bytes++] = tmp & 0xff; + tmp >>= 8; + } while (tmp != 0); + + for (i = 1; i < num_of_ints; i++) { + if (nums[i] >= sizes[i]) { + fprintf(stderr,"major breakdown in sendints num %d doesn't " + "match size %d\n", nums[i], sizes[i]); + exit(1); + } + /* use one step multiply */ + tmp = nums[i]; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + if (num_of_bits >= num_of_bytes * 8) { + for (i = 0; i < num_of_bytes; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits - num_of_bytes * 8, 0); + } else { + for (i = 0; i < num_of_bytes-1; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); + } +} + + +/*___________________________________________________________________________ + | + | receivebits - decode number from buf using specified number of bits + | + | extract the number of bits from the array buf and construct an integer + | from it. Return that value. + | +*/ + +static int receivebits(int buf[], int num_of_bits) { + + int cnt, num; + unsigned int lastbits, lastbyte; + unsigned char * cbuf; + int mask = (1 << num_of_bits) -1; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = buf[0]; + lastbits = (unsigned int) buf[1]; + lastbyte = (unsigned int) buf[2]; + + num = 0; + while (num_of_bits >= 8) { + lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; + num |= (lastbyte >> lastbits) << (num_of_bits - 8); + num_of_bits -=8; + } + if (num_of_bits > 0) { + if (lastbits < num_of_bits) { + lastbits += 8; + lastbyte = (lastbyte << 8) | cbuf[cnt++]; + } + lastbits -= num_of_bits; + num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); + } + num &= mask; + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + return num; +} + +/*____________________________________________________________________________ + | + | receiveints - decode 'small' integers from the buf array + | + | this routine is the inverse from sendints() and decodes the small integers + | written to buf by calculating the remainder and doing divisions with + | the given sizes[]. You need to specify the total number of bits to be + | used from buf in num_of_bits. + | +*/ + +static void receiveints(int buf[], const int num_of_ints, int num_of_bits, + unsigned int sizes[], int nums[]) { + int bytes[32]; + int i, j, num_of_bytes, p, num; + + bytes[1] = bytes[2] = bytes[3] = 0; + num_of_bytes = 0; + while (num_of_bits > 8) { + bytes[num_of_bytes++] = receivebits(buf, 8); + num_of_bits -= 8; + } + if (num_of_bits > 0) { + bytes[num_of_bytes++] = receivebits(buf, num_of_bits); + } + for (i = num_of_ints-1; i > 0; i--) { + num = 0; + for (j = num_of_bytes-1; j >=0; j--) { + num = (num << 8) | bytes[j]; + p = num / sizes[i]; + bytes[j] = p; + num = num - p * sizes[i]; + } + nums[i] = num; + } + nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); +} + +/*____________________________________________________________________________ + | + | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. + | + | this routine reads or writes (depending on how you opened the file with + | xdropen() ) a large number of 3d coordinates (stored in *fp). + | The number of coordinates triplets to write is given by *size. On + | read this number may be zero, in which case it reads as many as were written + | or it may specify the number if triplets to read (which should match the + | number written). + | Compression is achieved by first converting all floating numbers to integer + | using multiplication by *precision and rounding to the nearest integer. + | Then the minimum and maximum value are calculated to determine the range. + | The limited range of integers so found, is used to compress the coordinates. + | In addition the differences between succesive coordinates is calculated. + | If the difference happens to be 'small' then only the difference is saved, + | compressing the data even more. The notion of 'small' is changed dynamically + | and is enlarged or reduced whenever needed or possible. + | Extra compression is achieved in the case of GROMOS and coordinates of + | water molecules. GROMOS first writes out the Oxygen position, followed by + | the two hydrogens. In order to make the differences smaller (and thereby + | compression the data better) the order is changed into first one hydrogen + | then the oxygen, followed by the other hydrogen. This is rather special, but + | it shouldn't harm in the general case. + | + */ + +int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { + + + static int *ip = NULL; + static int oldsize; + static int *buf; + + int minint[3], maxint[3], mindiff, *lip, diff; + int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; + int minidx, maxidx; + unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; + int flag, k; + int small, smaller, larger, i, is_small, is_smaller, run, prevrun; + float *lfp, lf; + int tmp, *thiscoord, prevcoord[3]; + unsigned int tmpcoord[30]; + + int bufsize, xdrid, lsize; + unsigned int bitsize; + float inv_precision; + int errval = 1; + + /* find out if xdrs is opened for reading or for writing */ + xdrid = 0; + while (xdridptr[xdrid] != xdrs) { + xdrid++; + if (xdrid >= MAXID) { + fprintf(stderr, "xdr error. no open xdr stream\n"); + exit (1); + } + } + if (xdrmodes[xdrid] == 'w') { + + /* xdrs is open for writing */ + + if (xdr_int(xdrs, size) == 0) + return 0; + size3 = *size * 3; + /* when the number of coordinates is small, don't try to compress; just + * write them as floats using xdr_vector + */ + if (*size <= 9 ) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + /* buf[0-2] are special and do not contain actual data */ + buf[0] = buf[1] = buf[2] = 0; + minint[0] = minint[1] = minint[2] = INT_MAX; + maxint[0] = maxint[1] = maxint[2] = INT_MIN; + prevrun = -1; + lfp = fp; + lip = ip; + mindiff = INT_MAX; + oldlint1 = oldlint2 = oldlint3 = 0; + while(lfp < fp + size3 ) { + /* find nearest integer */ + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint1 = lf; + if (lint1 < minint[0]) minint[0] = lint1; + if (lint1 > maxint[0]) maxint[0] = lint1; + *lip++ = lint1; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint2 = lf; + if (lint2 < minint[1]) minint[1] = lint2; + if (lint2 > maxint[1]) maxint[1] = lint2; + *lip++ = lint2; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint3 = lf; + if (lint3 < minint[2]) minint[2] = lint3; + if (lint3 > maxint[2]) maxint[2] = lint3; + *lip++ = lint3; + lfp++; + diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); + if (diff < mindiff && lfp > fp + 3) + mindiff = diff; + oldlint1 = lint1; + oldlint2 = lint2; + oldlint3 = lint3; + } + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + if ((float)maxint[0] - (float)minint[0] >= MAXABS || + (float)maxint[1] - (float)minint[1] >= MAXABS || + (float)maxint[2] - (float)minint[2] >= MAXABS) { + /* turning value in unsigned by subtracting minint + * would cause overflow + */ + errval = 0; + } + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + lip = ip; + luip = (unsigned int *) ip; + smallidx = FIRSTIDX; + while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { + smallidx++; + } + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + larger = magicints[maxidx] / 2; + i = 0; + while (i < *size) { + is_small = 0; + thiscoord = (int *)(luip) + i * 3; + if (smallidx < maxidx && i >= 1 && + abs(thiscoord[0] - prevcoord[0]) < larger && + abs(thiscoord[1] - prevcoord[1]) < larger && + abs(thiscoord[2] - prevcoord[2]) < larger) { + is_smaller = 1; + } else if (smallidx > minidx) { + is_smaller = -1; + } else { + is_smaller = 0; + } + if (i + 1 < *size) { + if (abs(thiscoord[0] - thiscoord[3]) < small && + abs(thiscoord[1] - thiscoord[4]) < small && + abs(thiscoord[2] - thiscoord[5]) < small) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; + thiscoord[3] = tmp; + tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; + thiscoord[4] = tmp; + tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; + thiscoord[5] = tmp; + is_small = 1; + } + + } + tmpcoord[0] = thiscoord[0] - minint[0]; + tmpcoord[1] = thiscoord[1] - minint[1]; + tmpcoord[2] = thiscoord[2] - minint[2]; + if (bitsize == 0) { + sendbits(buf, bitsizeint[0], tmpcoord[0]); + sendbits(buf, bitsizeint[1], tmpcoord[1]); + sendbits(buf, bitsizeint[2], tmpcoord[2]); + } else { + sendints(buf, 3, bitsize, sizeint, tmpcoord); + } + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + thiscoord = thiscoord + 3; + i++; + + run = 0; + if (is_small == 0 && is_smaller == -1) + is_smaller = 0; + while (is_small && run < 8*3) { + if (is_smaller == -1 && ( + SQR(thiscoord[0] - prevcoord[0]) + + SQR(thiscoord[1] - prevcoord[1]) + + SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { + is_smaller = 0; + } + + tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; + tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; + tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + i++; + thiscoord = thiscoord + 3; + is_small = 0; + if (i < *size && + abs(thiscoord[0] - prevcoord[0]) < small && + abs(thiscoord[1] - prevcoord[1]) < small && + abs(thiscoord[2] - prevcoord[2]) < small) { + is_small = 1; + } + } + if (run != prevrun || is_smaller != 0) { + prevrun = run; + sendbits(buf, 1, 1); /* flag the change in run-length */ + sendbits(buf, 5, run+is_smaller+1); + } else { + sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ + } + for (k=0; k < run; k+=3) { + sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); + } + if (is_smaller != 0) { + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + smaller = magicints[smallidx-1] / 2; + } else { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + } + } + if (buf[1] != 0) buf[0]++;; + xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ + return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); + } else { + + /* xdrs is open for reading */ + + if (xdr_int(xdrs, &lsize) == 0) + return 0; + if (*size != 0 && lsize != *size) { + fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " + "%d arg vs %d in file", *size, lsize); + } + *size = lsize; + size3 = *size * 3; + if (*size <= 9) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + buf[0] = buf[1] = buf[2] = 0; + + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + larger = magicints[maxidx]; + + /* buf[0] holds the length in bytes */ + + if (xdr_int(xdrs, &(buf[0])) == 0) + return 0; + if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) + return 0; + buf[0] = buf[1] = buf[2] = 0; + + lfp = fp; + inv_precision = 1.0 / * precision; + run = 0; + i = 0; + lip = ip; + while ( i < lsize ) { + thiscoord = (int *)(lip) + i * 3; + + if (bitsize == 0) { + thiscoord[0] = receivebits(buf, bitsizeint[0]); + thiscoord[1] = receivebits(buf, bitsizeint[1]); + thiscoord[2] = receivebits(buf, bitsizeint[2]); + } else { + receiveints(buf, 3, bitsize, sizeint, thiscoord); + } + + i++; + thiscoord[0] += minint[0]; + thiscoord[1] += minint[1]; + thiscoord[2] += minint[2]; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + + flag = receivebits(buf, 1); + is_smaller = 0; + if (flag == 1) { + run = receivebits(buf, 5); + is_smaller = run % 3; + run -= is_smaller; + is_smaller--; + } + if (run > 0) { + thiscoord += 3; + for (k = 0; k < run; k+=3) { + receiveints(buf, 3, smallidx, sizesmall, thiscoord); + i++; + thiscoord[0] += prevcoord[0] - small; + thiscoord[1] += prevcoord[1] - small; + thiscoord[2] += prevcoord[2] - small; + if (k == 0) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; + prevcoord[0] = tmp; + tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; + prevcoord[1] = tmp; + tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; + prevcoord[2] = tmp; + *lfp++ = prevcoord[0] * inv_precision; + *lfp++ = prevcoord[1] * inv_precision; + *lfp++ = prevcoord[2] * inv_precision; + } else { + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + } + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + } else { + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + if (smallidx > FIRSTIDX) { + smaller = magicints[smallidx - 1] /2; + } else { + smaller = 0; + } + } else if (is_smaller > 0) { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + } + } + return 1; +} + + + diff --git a/source/lib/xdrf-Argonne/libxdrf.m4.org b/source/lib/xdrf-Argonne/libxdrf.m4.org new file mode 100644 index 0000000..b14b374 --- /dev/null +++ b/source/lib/xdrf-Argonne/libxdrf.m4.org @@ -0,0 +1,1230 @@ +/*____________________________________________________________________________ + | + | libxdrf - portable fortran interface to xdr. some xdr routines + | are C routines for compressed coordinates + | + | version 1.1 + | + | This collection of routines is intended to write and read + | data in a portable way to a file, so data written on one type + | of machine can be read back on a different type. + | + | all fortran routines use an integer 'xdrid', which is an id to the + | current xdr file, and is set by xdrfopen. + | most routines have in integer 'ret' which is the return value. + | The value of 'ret' is zero on failure, and most of the time one + | on succes. + | + | There are three routines useful for C users: + | xdropen(), xdrclose(), xdr3dfcoord(). + | The first two replace xdrstdio_create and xdr_destroy, and *must* be + | used when you plan to use xdr3dfcoord(). (they are also a bit + | easier to interface). For writing data other than compressed coordinates + | you should use the standard C xdr routines (see xdr man page) + | + | xdrfopen(xdrid, filename, mode, ret) + | character *(*) filename + | character *(*) mode + | + | this will open the file with the given filename (string) + | and the given mode, it returns an id in xdrid, which is + | to be used in all other calls to xdrf routines. + | mode is 'w' to create, or update an file, for all other + | values of mode the file is opened for reading + | + | you need to call xdrfclose to flush the output and close + | the file. + | Note that you should not use xdrstdio_create, which comes with the + | standard xdr library + | + | xdrfclose(xdrid, ret) + | flush the data to the file, and closes the file; + | You should not use xdr_destroy (which comes standard with + | the xdr libraries. + | + | xdrfbool(xdrid, bp, ret) + | integer pb + | + | This filter produces values of either 1 or 0 + | + | xdrfchar(xdrid, cp, ret) + | character cp + | + | filter that translate between characters and their xdr representation + | Note that the characters in not compressed and occupies 4 bytes. + | + | xdrfdouble(xdrid, dp, ret) + | double dp + | + | read/write a double. + | + | xdrffloat(xdrid, fp, ret) + | float fp + | + | read/write a float. + | + | xdrfint(xdrid, ip, ret) + | integer ip + | + | read/write integer. + | + | xdrflong(xdrid, lp, ret) + | integer lp + | + | this routine has a possible portablility problem due to 64 bits longs. + | + | xdrfshort(xdrid, sp, ret) + | integer *2 sp + | + | xdrfstring(xdrid, sp, maxsize, ret) + | character *(*) + | integer maxsize + | + | read/write a string, with maximum length given by maxsize + | + | xdrfwrapstring(xdris, sp, ret) + | character *(*) + | + | read/write a string (it is the same as xdrfstring accept that it finds + | the stringlength itself. + | + | xdrfvector(xdrid, cp, size, xdrfproc, ret) + | character *(*) + | integer size + | external xdrfproc + | + | read/write an array pointed to by cp, with number of elements + | defined by 'size'. the routine 'xdrfproc' is the name + | of one of the above routines to read/write data (like xdrfdouble) + | In contrast with the c-version you don't need to specify the + | byte size of an element. + | xdrfstring is not allowed here (it is in the c version) + | + | xdrf3dfcoord(xdrid, fp, size, precision, ret) + | real (*) fp + | real precision + | integer size + | + | this is *NOT* a standard xdr routine. I named it this way, because + | it invites people to use the other xdr routines. + | It is introduced to store specifically 3d coordinates of molecules + | (as found in molecular dynamics) and it writes it in a compressed way. + | It starts by multiplying all numbers by precision and + | rounding the result to integer. effectively converting + | all floating point numbers to fixed point. + | it uses an algorithm for compression that is optimized for + | molecular data, but could be used for other 3d coordinates + | as well. There is subtantial overhead involved, so call this + | routine only if you have a large number of coordinates to read/write + | + | ________________________________________________________________________ + | + | Below are the routines to be used by C programmers. Use the 'normal' + | xdr routines to write integers, floats, etc (see man xdr) + | + | int xdropen(XDR *xdrs, const char *filename, const char *type) + | This will open the file with the given filename and the + | given mode. You should pass it an allocated XDR struct + | in xdrs, to be used in all other calls to xdr routines. + | Mode is 'w' to create, or update an file, and for all + | other values of mode the file is opened for reading. + | You need to call xdrclose to flush the output and close + | the file. + | + | Note that you should not use xdrstdio_create, which + | comes with the standard xdr library. + | + | int xdrclose(XDR *xdrs) + | Flush the data to the file, and close the file; + | You should not use xdr_destroy (which comes standard + | with the xdr libraries). + | + | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) + | This is \fInot\fR a standard xdr routine. I named it this + | way, because it invites people to use the other xdr + | routines. + | + | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include "xdrf.h" + +int ftocstr(char *, int, char *, int); +int ctofstr(char *, int, char *); + +#define MAXID 20 +static FILE *xdrfiles[MAXID]; +static XDR *xdridptr[MAXID]; +static char xdrmodes[MAXID]; +static unsigned int cnt; + +typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); + +void +FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') +int *xdrid, *ret; +int *pb; +{ + *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); + cnt += sizeof(int); +} + +void +FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') +int *xdrid, *ret; +char *cp; +{ + *ret = xdr_char(xdridptr[*xdrid], cp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') +int *xdrid, *ret; +double *dp; +{ + *ret = xdr_double(xdridptr[*xdrid], dp); + cnt += sizeof(double); +} + +void +FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') +int *xdrid, *ret; +float *fp; +{ + *ret = xdr_float(xdridptr[*xdrid], fp); + cnt += sizeof(float); +} + +void +FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') +int *xdrid, *ret; +int *ip; +{ + *ret = xdr_int(xdridptr[*xdrid], ip); + cnt += sizeof(int); +} + +void +FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') +int *xdrid, *ret; +long *lp; +{ + *ret = xdr_long(xdridptr[*xdrid], lp); + cnt += sizeof(long); +} + +void +FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') +int *xdrid, *ret; +short *sp; +{ + *ret = xdr_short(xdridptr[*xdrid], sp); + cnt += sizeof(sp); +} + +void +FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') +int *xdrid, *ret; +char *ucp; +{ + *ret = xdr_u_char(xdridptr[*xdrid], ucp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') +int *xdrid, *ret; +unsigned long *ulp; +{ + *ret = xdr_u_long(xdridptr[*xdrid], ulp); + cnt += sizeof(unsigned long); +} + +void +FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') +int *xdrid, *ret; +unsigned short *usp; +{ + *ret = xdr_u_short(xdridptr[*xdrid], usp); + cnt += sizeof(unsigned short); +} + +void +FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') +int *xdrid, *ret; +float *fp; +int *size; +float *precision; +{ + *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); +} + +void +FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +int *maxsize; +{ + char *tsp; + + tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += *maxsize; + free(tsp); +} + +void +FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +{ + char *tsp; + int maxsize; + maxsize = (STRING_LEN(sp)) + 1; + tsp = (char*) malloc(maxsize * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += maxsize; + free(tsp); +} + +void +FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') +int *xdrid, *ret; +caddr_t *cp; +int *ccnt; +{ + *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); + cnt += *ccnt; +} + +void +FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') +int *xdrid, *ret; +int *pos; +{ + *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); +} + +void +FUNCTION(xdrf) ARGS(`xdrid, pos') +int *xdrid, *pos; +{ + *pos = xdr_getpos(xdridptr[*xdrid]); +} + +void +FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') +int *xdrid, *ret; +char *cp; +int *size; +FUNCTION(xdrfproc) elproc; +{ + int lcnt; + cnt = 0; + for (lcnt = 0; lcnt < *size; lcnt++) { + elproc(xdrid, (cp+cnt) , ret); + } +} + + +void +FUNCTION(xdrfclose) ARGS(`xdrid, ret') +int *xdrid; +int *ret; +{ + *ret = xdrclose(xdridptr[*xdrid]); + cnt = 0; +} + +void +FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') +int *xdrid; +STRING_ARG_DECL(fp); +STRING_ARG_DECL(mode); +int *ret; +{ + char fname[512]; + char fmode[3]; + + if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { + *ret = 0; + } + if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), + STRING_LEN(mode))) { + *ret = 0; + } + + *xdrid = xdropen(NULL, fname, fmode); + if (*xdrid == 0) + *ret = 0; + else + *ret = 1; +} + +/*___________________________________________________________________________ + | + | what follows are the C routines for opening, closing xdr streams + | and the routine to read/write compressed coordinates together + | with some routines to assist in this task (those are marked + | static and cannot be called from user programs) +*/ +#define MAXABS INT_MAX-2 + +#ifndef MIN +#define MIN(x,y) ((x) < (y) ? (x):(y)) +#endif +#ifndef MAX +#define MAX(x,y) ((x) > (y) ? (x):(y)) +#endif +#ifndef SQR +#define SQR(x) ((x)*(x)) +#endif +static int magicints[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, + 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, + 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, + 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, + 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, + 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, + 8388607, 10568983, 13316085, 16777216 }; + +#define FIRSTIDX 9 +/* note that magicints[FIRSTIDX-1] == 0 */ +#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) + + +/*__________________________________________________________________________ + | + | xdropen - open xdr file + | + | This versions differs from xdrstdio_create, because I need to know + | the state of the file (read or write) so I can use xdr3dfcoord + | in eigther read or write mode, and the file descriptor + | so I can close the file (something xdr_destroy doesn't do). + | +*/ + +int xdropen(XDR *xdrs, const char *filename, const char *type) { + static int init_done = 0; + enum xdr_op lmode; + int xdrid; + + if (init_done == 0) { + for (xdrid = 1; xdrid < MAXID; xdrid++) { + xdridptr[xdrid] = NULL; + } + init_done = 1; + } + xdrid = 1; + while (xdrid < MAXID && xdridptr[xdrid] != NULL) { + xdrid++; + } + if (xdrid == MAXID) { + return 0; + } + if (*type == 'w' || *type == 'W') { + type = "w+"; + lmode = XDR_ENCODE; + } else { + type = "r"; + lmode = XDR_DECODE; + } + xdrfiles[xdrid] = fopen(filename, type); + if (xdrfiles[xdrid] == NULL) { + xdrs = NULL; + return 0; + } + xdrmodes[xdrid] = *type; + /* next test isn't usefull in the case of C language + * but is used for the Fortran interface + * (C users are expected to pass the address of an already allocated + * XDR staructure) + */ + if (xdrs == NULL) { + xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); + xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); + } else { + xdridptr[xdrid] = xdrs; + xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); + } + return xdrid; +} + +/*_________________________________________________________________________ + | + | xdrclose - close a xdr file + | + | This will flush the xdr buffers, and destroy the xdr stream. + | It also closes the associated file descriptor (this is *not* + | done by xdr_destroy). + | +*/ + +int xdrclose(XDR *xdrs) { + int xdrid; + + if (xdrs == NULL) { + fprintf(stderr, "xdrclose: passed a NULL pointer\n"); + exit(1); + } + for (xdrid = 1; xdrid < MAXID; xdrid++) { + if (xdridptr[xdrid] == xdrs) { + + xdr_destroy(xdrs); + fclose(xdrfiles[xdrid]); + xdridptr[xdrid] = NULL; + return 1; + } + } + fprintf(stderr, "xdrclose: no such open xdr file\n"); + exit(1); + +} + +/*____________________________________________________________________________ + | + | sendbits - encode num into buf using the specified number of bits + | + | This routines appends the value of num to the bits already present in + | the array buf. You need to give it the number of bits to use and you + | better make sure that this number of bits is enough to hold the value + | Also num must be positive. + | +*/ + +static void sendbits(int buf[], int num_of_bits, int num) { + + unsigned int cnt, lastbyte; + int lastbits; + unsigned char * cbuf; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = (unsigned int) buf[0]; + lastbits = buf[1]; + lastbyte =(unsigned int) buf[2]; + while (num_of_bits >= 8) { + lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); + cbuf[cnt++] = lastbyte >> lastbits; + num_of_bits -= 8; + } + if (num_of_bits > 0) { + lastbyte = (lastbyte << num_of_bits) | num; + lastbits += num_of_bits; + if (lastbits >= 8) { + lastbits -= 8; + cbuf[cnt++] = lastbyte >> lastbits; + } + } + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + if (lastbits>0) { + cbuf[cnt] = lastbyte << (8 - lastbits); + } +} + +/*_________________________________________________________________________ + | + | sizeofint - calculate bitsize of an integer + | + | return the number of bits needed to store an integer with given max size + | +*/ + +static int sizeofint(const int size) { + unsigned int num = 1; + int num_of_bits = 0; + + while (size >= num && num_of_bits < 32) { + num_of_bits++; + num <<= 1; + } + return num_of_bits; +} + +/*___________________________________________________________________________ + | + | sizeofints - calculate 'bitsize' of compressed ints + | + | given the number of small unsigned integers and the maximum value + | return the number of bits needed to read or write them with the + | routines receiveints and sendints. You need this parameter when + | calling these routines. Note that for many calls I can use + | the variable 'smallidx' which is exactly the number of bits, and + | So I don't need to call 'sizeofints for those calls. +*/ + +static int sizeofints( const int num_of_ints, unsigned int sizes[]) { + int i, num; + unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; + num_of_bytes = 1; + bytes[0] = 1; + num_of_bits = 0; + for (i=0; i < num_of_ints; i++) { + tmp = 0; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + num = 1; + num_of_bytes--; + while (bytes[num_of_bytes] >= num) { + num_of_bits++; + num *= 2; + } + return num_of_bits + num_of_bytes * 8; + +} + +/*____________________________________________________________________________ + | + | sendints - send a small set of small integers in compressed format + | + | this routine is used internally by xdr3dfcoord, to send a set of + | small integers to the buffer. + | Multiplication with fixed (specified maximum ) sizes is used to get + | to one big, multibyte integer. Allthough the routine could be + | modified to handle sizes bigger than 16777216, or more than just + | a few integers, this is not done, because the gain in compression + | isn't worth the effort. Note that overflowing the multiplication + | or the byte buffer (32 bytes) is unchecked and causes bad results. + | + */ + +static void sendints(int buf[], const int num_of_ints, const int num_of_bits, + unsigned int sizes[], unsigned int nums[]) { + + int i; + unsigned int bytes[32], num_of_bytes, bytecnt, tmp; + + tmp = nums[0]; + num_of_bytes = 0; + do { + bytes[num_of_bytes++] = tmp & 0xff; + tmp >>= 8; + } while (tmp != 0); + + for (i = 1; i < num_of_ints; i++) { + if (nums[i] >= sizes[i]) { + fprintf(stderr,"major breakdown in sendints num %d doesn't " + "match size %d\n", nums[i], sizes[i]); + exit(1); + } + /* use one step multiply */ + tmp = nums[i]; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + if (num_of_bits >= num_of_bytes * 8) { + for (i = 0; i < num_of_bytes; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits - num_of_bytes * 8, 0); + } else { + for (i = 0; i < num_of_bytes-1; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); + } +} + + +/*___________________________________________________________________________ + | + | receivebits - decode number from buf using specified number of bits + | + | extract the number of bits from the array buf and construct an integer + | from it. Return that value. + | +*/ + +static int receivebits(int buf[], int num_of_bits) { + + int cnt, num; + unsigned int lastbits, lastbyte; + unsigned char * cbuf; + int mask = (1 << num_of_bits) -1; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = buf[0]; + lastbits = (unsigned int) buf[1]; + lastbyte = (unsigned int) buf[2]; + + num = 0; + while (num_of_bits >= 8) { + lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; + num |= (lastbyte >> lastbits) << (num_of_bits - 8); + num_of_bits -=8; + } + if (num_of_bits > 0) { + if (lastbits < num_of_bits) { + lastbits += 8; + lastbyte = (lastbyte << 8) | cbuf[cnt++]; + } + lastbits -= num_of_bits; + num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); + } + num &= mask; + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + return num; +} + +/*____________________________________________________________________________ + | + | receiveints - decode 'small' integers from the buf array + | + | this routine is the inverse from sendints() and decodes the small integers + | written to buf by calculating the remainder and doing divisions with + | the given sizes[]. You need to specify the total number of bits to be + | used from buf in num_of_bits. + | +*/ + +static void receiveints(int buf[], const int num_of_ints, int num_of_bits, + unsigned int sizes[], int nums[]) { + int bytes[32]; + int i, j, num_of_bytes, p, num; + + bytes[1] = bytes[2] = bytes[3] = 0; + num_of_bytes = 0; + while (num_of_bits > 8) { + bytes[num_of_bytes++] = receivebits(buf, 8); + num_of_bits -= 8; + } + if (num_of_bits > 0) { + bytes[num_of_bytes++] = receivebits(buf, num_of_bits); + } + for (i = num_of_ints-1; i > 0; i--) { + num = 0; + for (j = num_of_bytes-1; j >=0; j--) { + num = (num << 8) | bytes[j]; + p = num / sizes[i]; + bytes[j] = p; + num = num - p * sizes[i]; + } + nums[i] = num; + } + nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); +} + +/*____________________________________________________________________________ + | + | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. + | + | this routine reads or writes (depending on how you opened the file with + | xdropen() ) a large number of 3d coordinates (stored in *fp). + | The number of coordinates triplets to write is given by *size. On + | read this number may be zero, in which case it reads as many as were written + | or it may specify the number if triplets to read (which should match the + | number written). + | Compression is achieved by first converting all floating numbers to integer + | using multiplication by *precision and rounding to the nearest integer. + | Then the minimum and maximum value are calculated to determine the range. + | The limited range of integers so found, is used to compress the coordinates. + | In addition the differences between succesive coordinates is calculated. + | If the difference happens to be 'small' then only the difference is saved, + | compressing the data even more. The notion of 'small' is changed dynamically + | and is enlarged or reduced whenever needed or possible. + | Extra compression is achieved in the case of GROMOS and coordinates of + | water molecules. GROMOS first writes out the Oxygen position, followed by + | the two hydrogens. In order to make the differences smaller (and thereby + | compression the data better) the order is changed into first one hydrogen + | then the oxygen, followed by the other hydrogen. This is rather special, but + | it shouldn't harm in the general case. + | + */ + +int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { + + + static int *ip = NULL; + static int oldsize; + static int *buf; + + int minint[3], maxint[3], mindiff, *lip, diff; + int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; + int minidx, maxidx; + unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; + int flag, k; + int small, smaller, larger, i, is_small, is_smaller, run, prevrun; + float *lfp, lf; + int tmp, *thiscoord, prevcoord[3]; + unsigned int tmpcoord[30]; + + int bufsize, xdrid, lsize; + unsigned int bitsize; + float inv_precision; + int errval = 1; + + /* find out if xdrs is opened for reading or for writing */ + xdrid = 0; + while (xdridptr[xdrid] != xdrs) { + xdrid++; + if (xdrid >= MAXID) { + fprintf(stderr, "xdr error. no open xdr stream\n"); + exit (1); + } + } + if (xdrmodes[xdrid] == 'w') { + + /* xdrs is open for writing */ + + if (xdr_int(xdrs, size) == 0) + return 0; + size3 = *size * 3; + /* when the number of coordinates is small, don't try to compress; just + * write them as floats using xdr_vector + */ + if (*size <= 9 ) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + /* buf[0-2] are special and do not contain actual data */ + buf[0] = buf[1] = buf[2] = 0; + minint[0] = minint[1] = minint[2] = INT_MAX; + maxint[0] = maxint[1] = maxint[2] = INT_MIN; + prevrun = -1; + lfp = fp; + lip = ip; + mindiff = INT_MAX; + oldlint1 = oldlint2 = oldlint3 = 0; + while(lfp < fp + size3 ) { + /* find nearest integer */ + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint1 = lf; + if (lint1 < minint[0]) minint[0] = lint1; + if (lint1 > maxint[0]) maxint[0] = lint1; + *lip++ = lint1; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint2 = lf; + if (lint2 < minint[1]) minint[1] = lint2; + if (lint2 > maxint[1]) maxint[1] = lint2; + *lip++ = lint2; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint3 = lf; + if (lint3 < minint[2]) minint[2] = lint3; + if (lint3 > maxint[2]) maxint[2] = lint3; + *lip++ = lint3; + lfp++; + diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); + if (diff < mindiff && lfp > fp + 3) + mindiff = diff; + oldlint1 = lint1; + oldlint2 = lint2; + oldlint3 = lint3; + } + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + if ((float)maxint[0] - (float)minint[0] >= MAXABS || + (float)maxint[1] - (float)minint[1] >= MAXABS || + (float)maxint[2] - (float)minint[2] >= MAXABS) { + /* turning value in unsigned by subtracting minint + * would cause overflow + */ + errval = 0; + } + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + lip = ip; + luip = (unsigned int *) ip; + smallidx = FIRSTIDX; + while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { + smallidx++; + } + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + larger = magicints[maxidx] / 2; + i = 0; + while (i < *size) { + is_small = 0; + thiscoord = (int *)(luip) + i * 3; + if (smallidx < maxidx && i >= 1 && + abs(thiscoord[0] - prevcoord[0]) < larger && + abs(thiscoord[1] - prevcoord[1]) < larger && + abs(thiscoord[2] - prevcoord[2]) < larger) { + is_smaller = 1; + } else if (smallidx > minidx) { + is_smaller = -1; + } else { + is_smaller = 0; + } + if (i + 1 < *size) { + if (abs(thiscoord[0] - thiscoord[3]) < small && + abs(thiscoord[1] - thiscoord[4]) < small && + abs(thiscoord[2] - thiscoord[5]) < small) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; + thiscoord[3] = tmp; + tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; + thiscoord[4] = tmp; + tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; + thiscoord[5] = tmp; + is_small = 1; + } + + } + tmpcoord[0] = thiscoord[0] - minint[0]; + tmpcoord[1] = thiscoord[1] - minint[1]; + tmpcoord[2] = thiscoord[2] - minint[2]; + if (bitsize == 0) { + sendbits(buf, bitsizeint[0], tmpcoord[0]); + sendbits(buf, bitsizeint[1], tmpcoord[1]); + sendbits(buf, bitsizeint[2], tmpcoord[2]); + } else { + sendints(buf, 3, bitsize, sizeint, tmpcoord); + } + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + thiscoord = thiscoord + 3; + i++; + + run = 0; + if (is_small == 0 && is_smaller == -1) + is_smaller = 0; + while (is_small && run < 8*3) { + if (is_smaller == -1 && ( + SQR(thiscoord[0] - prevcoord[0]) + + SQR(thiscoord[1] - prevcoord[1]) + + SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { + is_smaller = 0; + } + + tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; + tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; + tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + i++; + thiscoord = thiscoord + 3; + is_small = 0; + if (i < *size && + abs(thiscoord[0] - prevcoord[0]) < small && + abs(thiscoord[1] - prevcoord[1]) < small && + abs(thiscoord[2] - prevcoord[2]) < small) { + is_small = 1; + } + } + if (run != prevrun || is_smaller != 0) { + prevrun = run; + sendbits(buf, 1, 1); /* flag the change in run-length */ + sendbits(buf, 5, run+is_smaller+1); + } else { + sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ + } + for (k=0; k < run; k+=3) { + sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); + } + if (is_smaller != 0) { + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + smaller = magicints[smallidx-1] / 2; + } else { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + } + } + if (buf[1] != 0) buf[0]++;; + xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ + return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); + } else { + + /* xdrs is open for reading */ + + if (xdr_int(xdrs, &lsize) == 0) + return 0; + if (*size != 0 && lsize != *size) { + fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " + "%d arg vs %d in file", *size, lsize); + } + *size = lsize; + size3 = *size * 3; + if (*size <= 9) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + buf[0] = buf[1] = buf[2] = 0; + + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + larger = magicints[maxidx]; + + /* buf[0] holds the length in bytes */ + + if (xdr_int(xdrs, &(buf[0])) == 0) + return 0; + if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) + return 0; + buf[0] = buf[1] = buf[2] = 0; + + lfp = fp; + inv_precision = 1.0 / * precision; + run = 0; + i = 0; + lip = ip; + while ( i < lsize ) { + thiscoord = (int *)(lip) + i * 3; + + if (bitsize == 0) { + thiscoord[0] = receivebits(buf, bitsizeint[0]); + thiscoord[1] = receivebits(buf, bitsizeint[1]); + thiscoord[2] = receivebits(buf, bitsizeint[2]); + } else { + receiveints(buf, 3, bitsize, sizeint, thiscoord); + } + + i++; + thiscoord[0] += minint[0]; + thiscoord[1] += minint[1]; + thiscoord[2] += minint[2]; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + + flag = receivebits(buf, 1); + is_smaller = 0; + if (flag == 1) { + run = receivebits(buf, 5); + is_smaller = run % 3; + run -= is_smaller; + is_smaller--; + } + if (run > 0) { + thiscoord += 3; + for (k = 0; k < run; k+=3) { + receiveints(buf, 3, smallidx, sizesmall, thiscoord); + i++; + thiscoord[0] += prevcoord[0] - small; + thiscoord[1] += prevcoord[1] - small; + thiscoord[2] += prevcoord[2] - small; + if (k == 0) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; + prevcoord[0] = tmp; + tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; + prevcoord[1] = tmp; + tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; + prevcoord[2] = tmp; + *lfp++ = prevcoord[0] * inv_precision; + *lfp++ = prevcoord[1] * inv_precision; + *lfp++ = prevcoord[2] * inv_precision; + } else { + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + } + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + } else { + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + if (smallidx > FIRSTIDX) { + smaller = magicints[smallidx - 1] /2; + } else { + smaller = 0; + } + } else if (is_smaller > 0) { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + } + } + return 1; +} + + + diff --git a/source/lib/xdrf-Argonne/types.h b/source/lib/xdrf-Argonne/types.h new file mode 100644 index 0000000..871f3fd --- /dev/null +++ b/source/lib/xdrf-Argonne/types.h @@ -0,0 +1,99 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +/* fixincludes should not add extern "C" to this file */ +/* + * Rpc additions to + */ +#ifndef _RPC_TYPES_H +#define _RPC_TYPES_H 1 + +typedef int bool_t; +typedef int enum_t; +/* This needs to be changed to uint32_t in the future */ +typedef unsigned long rpcprog_t; +typedef unsigned long rpcvers_t; +typedef unsigned long rpcproc_t; +typedef unsigned long rpcprot_t; +typedef unsigned long rpcport_t; + +#define __dontcare__ -1 + +#ifndef FALSE +# define FALSE (0) +#endif + +#ifndef TRUE +# define TRUE (1) +#endif + +#ifndef NULL +# define NULL 0 +#endif + +#include /* For malloc decl. */ +#define mem_alloc(bsize) malloc(bsize) +/* + * XXX: This must not use the second argument, or code in xdr_array.c needs + * to be modified. + */ +#define mem_free(ptr, bsize) free(ptr) + +#ifndef makedev /* ie, we haven't already included it */ +#include +#endif + +#ifndef __u_char_defined +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; +# define __u_char_defined +#endif +#ifndef __daddr_t_defined +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; +# define __daddr_t_defined +#endif + +#include +#include + +#include + +#ifndef INADDR_LOOPBACK +#define INADDR_LOOPBACK (u_long)0x7F000001 +#endif +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + +#endif /* rpc/types.h */ diff --git a/source/lib/xdrf-Argonne/underscore.m4 b/source/lib/xdrf-Argonne/underscore.m4 new file mode 100644 index 0000000..4d620a0 --- /dev/null +++ b/source/lib/xdrf-Argonne/underscore.m4 @@ -0,0 +1,19 @@ +divert(-1) +undefine(`len') +# +# append an underscore to FORTRAN function names +# +define(`FUNCTION',`$1_') +# +# FORTRAN character strings are passed as follows: +# a pointer to the base of the string is passed in the normal +# argument list, and the length is passed by value as an extra +# argument, after all of the other arguments. +# +define(`ARGS',`($1`'undivert(1))') +define(`SAVE',`divert(1)$1`'divert(0)') +define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') +define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') +define(`STRING_LEN',`$1_len') +define(`STRING_PTR',`$1_ptr') +divert(0) diff --git a/source/lib/xdrf-Argonne/xdr.c b/source/lib/xdrf-Argonne/xdr.c new file mode 100644 index 0000000..33b8544 --- /dev/null +++ b/source/lib/xdrf-Argonne/xdr.c @@ -0,0 +1,752 @@ +# define INTUSE(name) name +# define INTDEF(name) +/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; +#endif + +/* + * xdr.c, Generic XDR routines implementation. + * + * Copyright (C) 1986, Sun Microsystems, Inc. + * + * These are the "generic" xdr routines used to serialize and de-serialize + * most common data items. See xdr.h for more info on the interface to + * xdr. + */ + +#include +#include +#include +#include + +#include "types.h" +#include "xdr.h" + +#ifdef USE_IN_LIBIO +# include +#endif + +/* + * constants specific to the xdr "protocol" + */ +#define XDR_FALSE ((long) 0) +#define XDR_TRUE ((long) 1) +#define LASTUNSIGNED ((u_int) 0-1) + +/* + * for unit alignment + */ +static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; + +/* + * Free a data structure using XDR + * Not a filter, but a convenient utility nonetheless + */ +void +xdr_free (xdrproc_t proc, char *objp) +{ + XDR x; + + x.x_op = XDR_FREE; + (*proc) (&x, objp); +} + +/* + * XDR nothing + */ +bool_t +xdr_void (void) +{ + return TRUE; +} +INTDEF(xdr_void) + +/* + * XDR integers + */ +bool_t +xdr_int (XDR *xdrs, int *ip) +{ + +#if INT_MAX < LONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (long) *ip; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *ip = (int) l; + case XDR_FREE: + return TRUE; + } + return FALSE; +#elif INT_MAX == LONG_MAX + return INTUSE(xdr_long) (xdrs, (long *) ip); +#elif INT_MAX == SHRT_MAX + return INTUSE(xdr_short) (xdrs, (short *) ip); +#else +#error unexpected integer sizes in_xdr_int() +#endif +} +INTDEF(xdr_int) + +/* + * XDR unsigned integers + */ +bool_t +xdr_u_int (XDR *xdrs, u_int *up) +{ +#if UINT_MAX < ULONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (u_long) * up; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *up = (u_int) (u_long) l; + case XDR_FREE: + return TRUE; + } + return FALSE; +#elif UINT_MAX == ULONG_MAX + return INTUSE(xdr_u_long) (xdrs, (u_long *) up); +#elif UINT_MAX == USHRT_MAX + return INTUSE(xdr_short) (xdrs, (short *) up); +#else +#error unexpected integer sizes in_xdr_u_int() +#endif +} +INTDEF(xdr_u_int) + +/* + * XDR long integers + * The definition of xdr_long() is kept for backward + * compatibility. Instead xdr_int() should be used. + */ +bool_t +xdr_long (XDR *xdrs, long *lp) +{ + + if (xdrs->x_op == XDR_ENCODE + && (sizeof (int32_t) == sizeof (long) + || (int32_t) *lp == *lp)) + return XDR_PUTLONG (xdrs, lp); + + if (xdrs->x_op == XDR_DECODE) + return XDR_GETLONG (xdrs, lp); + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_long) + +/* + * XDR unsigned long integers + * The definition of xdr_u_long() is kept for backward + * compatibility. Instead xdr_u_int() should be used. + */ +bool_t +xdr_u_long (XDR *xdrs, u_long *ulp) +{ + switch (xdrs->x_op) + { + case XDR_DECODE: + { + long int tmp; + + if (XDR_GETLONG (xdrs, &tmp) == FALSE) + return FALSE; + + *ulp = (uint32_t) tmp; + return TRUE; + } + + case XDR_ENCODE: + if (sizeof (uint32_t) != sizeof (u_long) + && (uint32_t) *ulp != *ulp) + return FALSE; + + return XDR_PUTLONG (xdrs, (long *) ulp); + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_u_long) + +/* + * XDR hyper integers + * same as xdr_u_hyper - open coded to save a proc call! + */ +bool_t +xdr_hyper (XDR *xdrs, quad_t *llp) +{ + long int t1, t2; + + if (xdrs->x_op == XDR_ENCODE) + { + t1 = (long) ((*llp) >> 32); + t2 = (long) (*llp); + return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); + } + + if (xdrs->x_op == XDR_DECODE) + { + if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) + return FALSE; + *llp = ((quad_t) t1) << 32; + *llp |= (uint32_t) t2; + return TRUE; + } + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_hyper) + + +/* + * XDR hyper integers + * same as xdr_hyper - open coded to save a proc call! + */ +bool_t +xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) +{ + long int t1, t2; + + if (xdrs->x_op == XDR_ENCODE) + { + t1 = (unsigned long) ((*ullp) >> 32); + t2 = (unsigned long) (*ullp); + return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); + } + + if (xdrs->x_op == XDR_DECODE) + { + if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) + return FALSE; + *ullp = ((u_quad_t) t1) << 32; + *ullp |= (uint32_t) t2; + return TRUE; + } + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_u_hyper) + +bool_t +xdr_longlong_t (XDR *xdrs, quad_t *llp) +{ + return INTUSE(xdr_hyper) (xdrs, llp); +} + +bool_t +xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) +{ + return INTUSE(xdr_u_hyper) (xdrs, ullp); +} + +/* + * XDR short integers + */ +bool_t +xdr_short (XDR *xdrs, short *sp) +{ + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (long) *sp; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *sp = (short) l; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_short) + +/* + * XDR unsigned short integers + */ +bool_t +xdr_u_short (XDR *xdrs, u_short *usp) +{ + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (u_long) * usp; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *usp = (u_short) (u_long) l; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_u_short) + + +/* + * XDR a char + */ +bool_t +xdr_char (XDR *xdrs, char *cp) +{ + int i; + + i = (*cp); + if (!INTUSE(xdr_int) (xdrs, &i)) + { + return FALSE; + } + *cp = i; + return TRUE; +} + +/* + * XDR an unsigned char + */ +bool_t +xdr_u_char (XDR *xdrs, u_char *cp) +{ + u_int u; + + u = (*cp); + if (!INTUSE(xdr_u_int) (xdrs, &u)) + { + return FALSE; + } + *cp = u; + return TRUE; +} + +/* + * XDR booleans + */ +bool_t +xdr_bool (XDR *xdrs, bool_t *bp) +{ + long lb; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + lb = *bp ? XDR_TRUE : XDR_FALSE; + return XDR_PUTLONG (xdrs, &lb); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &lb)) + { + return FALSE; + } + *bp = (lb == XDR_FALSE) ? FALSE : TRUE; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_bool) + +/* + * XDR enumerations + */ +bool_t +xdr_enum (XDR *xdrs, enum_t *ep) +{ + enum sizecheck + { + SIZEVAL + }; /* used to find the size of an enum */ + + /* + * enums are treated as ints + */ + if (sizeof (enum sizecheck) == 4) + { +#if INT_MAX < LONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = *ep; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *ep = l; + case XDR_FREE: + return TRUE; + + } + return FALSE; +#else + return INTUSE(xdr_long) (xdrs, (long *) ep); +#endif + } + else if (sizeof (enum sizecheck) == sizeof (short)) + { + return INTUSE(xdr_short) (xdrs, (short *) ep); + } + else + { + return FALSE; + } +} +INTDEF(xdr_enum) + +/* + * XDR opaque data + * Allows the specification of a fixed size sequence of opaque bytes. + * cp points to the opaque object and cnt gives the byte length. + */ +bool_t +xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) +{ + u_int rndup; + static char crud[BYTES_PER_XDR_UNIT]; + + /* + * if no data we are done + */ + if (cnt == 0) + return TRUE; + + /* + * round byte count to full xdr units + */ + rndup = cnt % BYTES_PER_XDR_UNIT; + if (rndup > 0) + rndup = BYTES_PER_XDR_UNIT - rndup; + + switch (xdrs->x_op) + { + case XDR_DECODE: + if (!XDR_GETBYTES (xdrs, cp, cnt)) + { + return FALSE; + } + if (rndup == 0) + return TRUE; + return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); + + case XDR_ENCODE: + if (!XDR_PUTBYTES (xdrs, cp, cnt)) + { + return FALSE; + } + if (rndup == 0) + return TRUE; + return XDR_PUTBYTES (xdrs, xdr_zero, rndup); + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_opaque) + +/* + * XDR counted bytes + * *cpp is a pointer to the bytes, *sizep is the count. + * If *cpp is NULL maxsize bytes are allocated + */ +bool_t +xdr_bytes (xdrs, cpp, sizep, maxsize) + XDR *xdrs; + char **cpp; + u_int *sizep; + u_int maxsize; +{ + char *sp = *cpp; /* sp is the actual string pointer */ + u_int nodesize; + + /* + * first deal with the length since xdr bytes are counted + */ + if (!INTUSE(xdr_u_int) (xdrs, sizep)) + { + return FALSE; + } + nodesize = *sizep; + if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) + { + return FALSE; + } + + /* + * now deal with the actual bytes + */ + switch (xdrs->x_op) + { + case XDR_DECODE: + if (nodesize == 0) + { + return TRUE; + } + if (sp == NULL) + { + *cpp = sp = (char *) mem_alloc (nodesize); + } + if (sp == NULL) + { + fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); + return FALSE; + } + /* fall into ... */ + + case XDR_ENCODE: + return INTUSE(xdr_opaque) (xdrs, sp, nodesize); + + case XDR_FREE: + if (sp != NULL) + { + mem_free (sp, nodesize); + *cpp = NULL; + } + return TRUE; + } + return FALSE; +} +INTDEF(xdr_bytes) + +/* + * Implemented here due to commonality of the object. + */ +bool_t +xdr_netobj (xdrs, np) + XDR *xdrs; + struct netobj *np; +{ + + return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); +} +INTDEF(xdr_netobj) + +/* + * XDR a discriminated union + * Support routine for discriminated unions. + * You create an array of xdrdiscrim structures, terminated with + * an entry with a null procedure pointer. The routine gets + * the discriminant value and then searches the array of xdrdiscrims + * looking for that value. It calls the procedure given in the xdrdiscrim + * to handle the discriminant. If there is no specific routine a default + * routine may be called. + * If there is no specific or default routine an error is returned. + */ +bool_t +xdr_union (xdrs, dscmp, unp, choices, dfault) + XDR *xdrs; + enum_t *dscmp; /* enum to decide which arm to work on */ + char *unp; /* the union itself */ + const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ + xdrproc_t dfault; /* default xdr routine */ +{ + enum_t dscm; + + /* + * we deal with the discriminator; it's an enum + */ + if (!INTUSE(xdr_enum) (xdrs, dscmp)) + { + return FALSE; + } + dscm = *dscmp; + + /* + * search choices for a value that matches the discriminator. + * if we find one, execute the xdr routine for that value. + */ + for (; choices->proc != NULL_xdrproc_t; choices++) + { + if (choices->value == dscm) + return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); + } + + /* + * no match - execute the default xdr routine if there is one + */ + return ((dfault == NULL_xdrproc_t) ? FALSE : + (*dfault) (xdrs, unp, LASTUNSIGNED)); +} +INTDEF(xdr_union) + + +/* + * Non-portable xdr primitives. + * Care should be taken when moving these routines to new architectures. + */ + + +/* + * XDR null terminated ASCII strings + * xdr_string deals with "C strings" - arrays of bytes that are + * terminated by a NULL character. The parameter cpp references a + * pointer to storage; If the pointer is null, then the necessary + * storage is allocated. The last parameter is the max allowed length + * of the string as specified by a protocol. + */ +bool_t +xdr_string (xdrs, cpp, maxsize) + XDR *xdrs; + char **cpp; + u_int maxsize; +{ + char *sp = *cpp; /* sp is the actual string pointer */ + u_int size; + u_int nodesize; + + /* + * first deal with the length since xdr strings are counted-strings + */ + switch (xdrs->x_op) + { + case XDR_FREE: + if (sp == NULL) + { + return TRUE; /* already free */ + } + /* fall through... */ + case XDR_ENCODE: + if (sp == NULL) + return FALSE; + size = strlen (sp); + break; + case XDR_DECODE: + break; + } + if (!INTUSE(xdr_u_int) (xdrs, &size)) + { + return FALSE; + } + if (size > maxsize) + { + return FALSE; + } + nodesize = size + 1; + if (nodesize == 0) + { + /* This means an overflow. It a bug in the caller which + provided a too large maxsize but nevertheless catch it + here. */ + return FALSE; + } + + /* + * now deal with the actual bytes + */ + switch (xdrs->x_op) + { + case XDR_DECODE: + if (sp == NULL) + *cpp = sp = (char *) mem_alloc (nodesize); + if (sp == NULL) + { + fprintf (NULL, "%s", "xdr_string: out of memory\n"); + return FALSE; + } + sp[size] = 0; + /* fall into ... */ + + case XDR_ENCODE: + return INTUSE(xdr_opaque) (xdrs, sp, size); + + case XDR_FREE: + mem_free (sp, nodesize); + *cpp = NULL; + return TRUE; + } + return FALSE; +} +INTDEF(xdr_string) + +/* + * Wrapper for xdr_string that can be called directly from + * routines like clnt_call + */ +bool_t +xdr_wrapstring (xdrs, cpp) + XDR *xdrs; + char **cpp; +{ + if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) + { + return TRUE; + } + return FALSE; +} diff --git a/source/lib/xdrf-Argonne/xdr.h b/source/lib/xdrf-Argonne/xdr.h new file mode 100644 index 0000000..2602ad9 --- /dev/null +++ b/source/lib/xdrf-Argonne/xdr.h @@ -0,0 +1,379 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * xdr.h, External Data Representation Serialization Routines. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + */ + +#ifndef _RPC_XDR_H +#define _RPC_XDR_H 1 + +#include +#include +#include "types.h" + +/* We need FILE. */ +#include + +__BEGIN_DECLS + +/* + * XDR provides a conventional way for converting between C data + * types and an external bit-string representation. Library supplied + * routines provide for the conversion on built-in C data types. These + * routines and utility routines defined here are used to help implement + * a type encode/decode routine for each user-defined type. + * + * Each data type provides a single procedure which takes two arguments: + * + * bool_t + * xdrproc(xdrs, argresp) + * XDR *xdrs; + * *argresp; + * + * xdrs is an instance of a XDR handle, to which or from which the data + * type is to be converted. argresp is a pointer to the structure to be + * converted. The XDR handle contains an operation field which indicates + * which of the operations (ENCODE, DECODE * or FREE) is to be performed. + * + * XDR_DECODE may allocate space if the pointer argresp is null. This + * data can be freed with the XDR_FREE operation. + * + * We write only one procedure per data type to make it easy + * to keep the encode and decode procedures for a data type consistent. + * In many cases the same code performs all operations on a user defined type, + * because all the hard work is done in the component type routines. + * decode as a series of calls on the nested data types. + */ + +/* + * Xdr operations. XDR_ENCODE causes the type to be encoded into the + * stream. XDR_DECODE causes the type to be extracted from the stream. + * XDR_FREE can be used to release the space allocated by an XDR_DECODE + * request. + */ +enum xdr_op { + XDR_ENCODE = 0, + XDR_DECODE = 1, + XDR_FREE = 2 +}; + +/* + * This is the number of bytes per unit of external data. + */ +#define BYTES_PER_XDR_UNIT (4) +/* + * This only works if the above is a power of 2. But it's defined to be + * 4 by the appropriate RFCs. So it will work. And it's normally quicker + * than the old routine. + */ +#if 1 +#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) +#else /* this is the old routine */ +#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ + * BYTES_PER_XDR_UNIT) +#endif + +/* + * The XDR handle. + * Contains operation which is being applied to the stream, + * an operations vector for the particular implementation (e.g. see xdr_mem.c), + * and two private fields for the use of the particular implementation. + */ +typedef struct XDR XDR; +struct XDR + { + enum xdr_op x_op; /* operation; fast additional param */ + struct xdr_ops + { + bool_t (*x_getlong) (XDR *__xdrs, long *__lp); + /* get a long from underlying stream */ + bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); + /* put a long to " */ + bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); + /* get some bytes from " */ + bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); + /* put some bytes to " */ + u_int (*x_getpostn) (__const XDR *__xdrs); + /* returns bytes off from beginning */ + bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); + /* lets you reposition the stream */ + int32_t *(*x_inline) (XDR *__xdrs, u_int __len); + /* buf quick ptr to buffered data */ + void (*x_destroy) (XDR *__xdrs); + /* free privates of this xdr_stream */ + bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); + /* get a int from underlying stream */ + bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); + /* put a int to " */ + } + *x_ops; + caddr_t x_public; /* users' data */ + caddr_t x_private; /* pointer to private data */ + caddr_t x_base; /* private used for position info */ + u_int x_handy; /* extra private word */ + }; + +/* + * A xdrproc_t exists for each data type which is to be encoded or decoded. + * + * The second argument to the xdrproc_t is a pointer to an opaque pointer. + * The opaque pointer generally points to a structure of the data type + * to be decoded. If this pointer is 0, then the type routines should + * allocate dynamic storage of the appropriate size and return it. + * bool_t (*xdrproc_t)(XDR *, caddr_t *); + */ +typedef bool_t (*xdrproc_t) (XDR *, void *,...); + + +/* + * Operations defined on a XDR handle + * + * XDR *xdrs; + * int32_t *int32p; + * long *longp; + * caddr_t addr; + * u_int len; + * u_int pos; + */ +#define XDR_GETINT32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) +#define xdr_getint32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) + +#define XDR_PUTINT32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) +#define xdr_putint32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) + +#define XDR_GETLONG(xdrs, longp) \ + (*(xdrs)->x_ops->x_getlong)(xdrs, longp) +#define xdr_getlong(xdrs, longp) \ + (*(xdrs)->x_ops->x_getlong)(xdrs, longp) + +#define XDR_PUTLONG(xdrs, longp) \ + (*(xdrs)->x_ops->x_putlong)(xdrs, longp) +#define xdr_putlong(xdrs, longp) \ + (*(xdrs)->x_ops->x_putlong)(xdrs, longp) + +#define XDR_GETBYTES(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) +#define xdr_getbytes(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) + +#define XDR_PUTBYTES(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) +#define xdr_putbytes(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) + +#define XDR_GETPOS(xdrs) \ + (*(xdrs)->x_ops->x_getpostn)(xdrs) +#define xdr_getpos(xdrs) \ + (*(xdrs)->x_ops->x_getpostn)(xdrs) + +#define XDR_SETPOS(xdrs, pos) \ + (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) +#define xdr_setpos(xdrs, pos) \ + (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) + +#define XDR_INLINE(xdrs, len) \ + (*(xdrs)->x_ops->x_inline)(xdrs, len) +#define xdr_inline(xdrs, len) \ + (*(xdrs)->x_ops->x_inline)(xdrs, len) + +#define XDR_DESTROY(xdrs) \ + do { \ + if ((xdrs)->x_ops->x_destroy) \ + (*(xdrs)->x_ops->x_destroy)(xdrs); \ + } while (0) +#define xdr_destroy(xdrs) \ + do { \ + if ((xdrs)->x_ops->x_destroy) \ + (*(xdrs)->x_ops->x_destroy)(xdrs); \ + } while (0) + +/* + * Support struct for discriminated unions. + * You create an array of xdrdiscrim structures, terminated with + * a entry with a null procedure pointer. The xdr_union routine gets + * the discriminant value and then searches the array of structures + * for a matching value. If a match is found the associated xdr routine + * is called to handle that part of the union. If there is + * no match, then a default routine may be called. + * If there is no match and no default routine it is an error. + */ +#define NULL_xdrproc_t ((xdrproc_t)0) +struct xdr_discrim +{ + int value; + xdrproc_t proc; +}; + +/* + * Inline routines for fast encode/decode of primitive data types. + * Caveat emptor: these use single memory cycles to get the + * data from the underlying buffer, and will fail to operate + * properly if the data is not aligned. The standard way to use these + * is to say: + * if ((buf = XDR_INLINE(xdrs, count)) == NULL) + * return (FALSE); + * <<< macro calls >>> + * where ``count'' is the number of bytes of data occupied + * by the primitive data types. + * + * N.B. and frozen for all time: each data type here uses 4 bytes + * of external representation. + */ + +#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) +#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) +#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) +#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) + +/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms + * and shouldn't be used any longer. Code which use this defines or longs + * in the RPC code will not work on 64bit Solaris platforms ! + */ +#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) +#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) +#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) +#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) + + +#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) +#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) +#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) +#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) + +#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) + +/* + * These are the "generic" xdr routines. + * None of these can have const applied because it's not possible to + * know whether the call is a read or a write to the passed parameter + * also, the XDR structure is always updated by some of these calls. + */ +extern bool_t xdr_void (void) __THROW; +extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; +extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; +extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; +extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; +extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; +extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; +extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; +extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; +extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; +extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; +extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; +extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; +extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; +extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; +extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; +extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; +extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; +extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; +extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; +extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; +extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; +extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; +extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, + u_int __maxsize, u_int __elsize, xdrproc_t __elproc) + __THROW; +extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, + u_int __maxsize) __THROW; +extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; +extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; +extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, + __const struct xdr_discrim *__choices, + xdrproc_t dfault) __THROW; +extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; +extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; +extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, + u_int __elemsize, xdrproc_t __xdr_elem) __THROW; +extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; +extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; +extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, + xdrproc_t __proc) __THROW; +extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, + u_int __obj_size, xdrproc_t __xdr_obj) __THROW; +extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; +extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; + +/* + * Common opaque bytes objects used by many rpc protocols; + * declared here due to commonality. + */ +#define MAX_NETOBJ_SZ 1024 +struct netobj +{ + u_int n_len; + char *n_bytes; +}; +typedef struct netobj netobj; +extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; + +/* + * These are the public routines for the various implementations of + * xdr streams. + */ + +/* XDR using memory buffers */ +extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, + u_int __size, enum xdr_op __xop) __THROW; + +/* XDR using stdio library */ +extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) + __THROW; + +/* XDR pseudo records for tcp */ +extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, + u_int __recvsize, caddr_t __tcp_handle, + int (*__readit) (char *, char *, int), + int (*__writeit) (char *, char *, int)) __THROW; + +/* make end of xdr record */ +extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; + +/* move to beginning of next record */ +extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; + +/* true if no more input */ +extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; + +/* free memory buffers for xdr */ +extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; + +__END_DECLS + +#endif /* rpc/xdr.h */ diff --git a/source/lib/xdrf-Argonne/xdr_array.c b/source/lib/xdrf-Argonne/xdr_array.c new file mode 100644 index 0000000..836405c --- /dev/null +++ b/source/lib/xdrf-Argonne/xdr_array.c @@ -0,0 +1,174 @@ +# define INTUSE(name) name +# define INTDEF(name) +/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; +#endif + +/* + * xdr_array.c, Generic XDR routines implementation. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * These are the "non-trivial" xdr primitives used to serialize and de-serialize + * arrays. See xdr.h for more info on the interface to xdr. + */ + +#include +#include +#include "types.h" +#include "xdr.h" +#include +#include + +#ifdef USE_IN_LIBIO +# include +#endif + +#define LASTUNSIGNED ((u_int)0-1) + + +/* + * XDR an array of arbitrary elements + * *addrp is a pointer to the array, *sizep is the number of elements. + * If addrp is NULL (*sizep * elsize) bytes are allocated. + * elsize is the size (in bytes) of each element, and elproc is the + * xdr procedure to call to handle each element of the array. + */ +bool_t +xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) + XDR *xdrs; + caddr_t *addrp; /* array pointer */ + u_int *sizep; /* number of elements */ + u_int maxsize; /* max numberof elements */ + u_int elsize; /* size in bytes of each element */ + xdrproc_t elproc; /* xdr routine to handle each element */ +{ + u_int i; + caddr_t target = *addrp; + u_int c; /* the actual element count */ + bool_t stat = TRUE; + u_int nodesize; + + /* like strings, arrays are really counted arrays */ + if (!INTUSE(xdr_u_int) (xdrs, sizep)) + { + return FALSE; + } + c = *sizep; + /* + * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() + * doesn't actually use its second argument anyway. + */ + if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) + { + return FALSE; + } + nodesize = c * elsize; + + /* + * if we are deserializing, we may need to allocate an array. + * We also save time by checking for a null array if we are freeing. + */ + if (target == NULL) + switch (xdrs->x_op) + { + case XDR_DECODE: + if (c == 0) + return TRUE; + *addrp = target = mem_alloc (nodesize); + if (target == NULL) + { + fprintf (stderr, "%s", "xdr_array: out of memory\n"); + return FALSE; + } + __bzero (target, nodesize); + break; + + case XDR_FREE: + return TRUE; + default: + break; + } + + /* + * now we xdr each element of array + */ + for (i = 0; (i < c) && stat; i++) + { + stat = (*elproc) (xdrs, target, LASTUNSIGNED); + target += elsize; + } + + /* + * the array may need freeing + */ + if (xdrs->x_op == XDR_FREE) + { + mem_free (*addrp, nodesize); + *addrp = NULL; + } + return stat; +} +INTDEF(xdr_array) + +/* + * xdr_vector(): + * + * XDR a fixed length array. Unlike variable-length arrays, + * the storage of fixed length arrays is static and unfreeable. + * > basep: base of the array + * > size: size of the array + * > elemsize: size of each element + * > xdr_elem: routine to XDR each element + */ +bool_t +xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) + XDR *xdrs; + char *basep; + u_int nelem; + u_int elemsize; + xdrproc_t xdr_elem; +{ + u_int i; + char *elptr; + + elptr = basep; + for (i = 0; i < nelem; i++) + { + if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) + { + return FALSE; + } + elptr += elemsize; + } + return TRUE; +} diff --git a/source/lib/xdrf-Argonne/xdr_float.c b/source/lib/xdrf-Argonne/xdr_float.c new file mode 100644 index 0000000..15d3c88 --- /dev/null +++ b/source/lib/xdrf-Argonne/xdr_float.c @@ -0,0 +1,307 @@ +/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; +#endif + +/* + * xdr_float.c, Generic XDR routines implementation. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * These are the "floating point" xdr routines used to (de)serialize + * most common data items. See xdr.h for more info on the interface to + * xdr. + */ + +#include +#include + +#include "types.h" +#include "xdr.h" + +/* + * NB: Not portable. + * This routine works on Suns (Sky / 68000's) and Vaxen. + */ + +#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) + +#ifdef vax + +/* What IEEE single precision floating point looks like on a Vax */ +struct ieee_single { + unsigned int mantissa: 23; + unsigned int exp : 8; + unsigned int sign : 1; +}; + +/* Vax single precision floating point */ +struct vax_single { + unsigned int mantissa1 : 7; + unsigned int exp : 8; + unsigned int sign : 1; + unsigned int mantissa2 : 16; +}; + +#define VAX_SNG_BIAS 0x81 +#define IEEE_SNG_BIAS 0x7f + +static struct sgl_limits { + struct vax_single s; + struct ieee_single ieee; +} sgl_limits[2] = { + {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ + { 0x0, 0xff, 0x0 }}, /* Max IEEE */ + {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ + { 0x0, 0x0, 0x0 }} /* Min IEEE */ +}; +#endif /* vax */ + +bool_t +xdr_float(xdrs, fp) + XDR *xdrs; + float *fp; +{ +#ifdef vax + struct ieee_single is; + struct vax_single vs, *vsp; + struct sgl_limits *lim; + int i; +#endif + switch (xdrs->x_op) { + + case XDR_ENCODE: +#ifdef vax + vs = *((struct vax_single *)fp); + for (i = 0, lim = sgl_limits; + i < sizeof(sgl_limits)/sizeof(struct sgl_limits); + i++, lim++) { + if ((vs.mantissa2 == lim->s.mantissa2) && + (vs.exp == lim->s.exp) && + (vs.mantissa1 == lim->s.mantissa1)) { + is = lim->ieee; + goto shipit; + } + } + is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; + is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; + shipit: + is.sign = vs.sign; + return (XDR_PUTLONG(xdrs, (long *)&is)); +#else + if (sizeof(float) == sizeof(long)) + return (XDR_PUTLONG(xdrs, (long *)fp)); + else if (sizeof(float) == sizeof(int)) { + long tmp = *(int *)fp; + return (XDR_PUTLONG(xdrs, &tmp)); + } + break; +#endif + + case XDR_DECODE: +#ifdef vax + vsp = (struct vax_single *)fp; + if (!XDR_GETLONG(xdrs, (long *)&is)) + return (FALSE); + for (i = 0, lim = sgl_limits; + i < sizeof(sgl_limits)/sizeof(struct sgl_limits); + i++, lim++) { + if ((is.exp == lim->ieee.exp) && + (is.mantissa == lim->ieee.mantissa)) { + *vsp = lim->s; + goto doneit; + } + } + vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; + vsp->mantissa2 = is.mantissa; + vsp->mantissa1 = (is.mantissa >> 16); + doneit: + vsp->sign = is.sign; + return (TRUE); +#else + if (sizeof(float) == sizeof(long)) + return (XDR_GETLONG(xdrs, (long *)fp)); + else if (sizeof(float) == sizeof(int)) { + long tmp; + if (XDR_GETLONG(xdrs, &tmp)) { + *(int *)fp = tmp; + return (TRUE); + } + } + break; +#endif + + case XDR_FREE: + return (TRUE); + } + return (FALSE); +} + +/* + * This routine works on Suns (Sky / 68000's) and Vaxen. + */ + +#ifdef vax +/* What IEEE double precision floating point looks like on a Vax */ +struct ieee_double { + unsigned int mantissa1 : 20; + unsigned int exp : 11; + unsigned int sign : 1; + unsigned int mantissa2 : 32; +}; + +/* Vax double precision floating point */ +struct vax_double { + unsigned int mantissa1 : 7; + unsigned int exp : 8; + unsigned int sign : 1; + unsigned int mantissa2 : 16; + unsigned int mantissa3 : 16; + unsigned int mantissa4 : 16; +}; + +#define VAX_DBL_BIAS 0x81 +#define IEEE_DBL_BIAS 0x3ff +#define MASK(nbits) ((1 << nbits) - 1) + +static struct dbl_limits { + struct vax_double d; + struct ieee_double ieee; +} dbl_limits[2] = { + {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ + { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ + {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ + { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ +}; + +#endif /* vax */ + + +bool_t +xdr_double(xdrs, dp) + XDR *xdrs; + double *dp; +{ +#ifdef vax + struct ieee_double id; + struct vax_double vd; + register struct dbl_limits *lim; + int i; +#endif + + switch (xdrs->x_op) { + + case XDR_ENCODE: +#ifdef vax + vd = *((struct vax_double *)dp); + for (i = 0, lim = dbl_limits; + i < sizeof(dbl_limits)/sizeof(struct dbl_limits); + i++, lim++) { + if ((vd.mantissa4 == lim->d.mantissa4) && + (vd.mantissa3 == lim->d.mantissa3) && + (vd.mantissa2 == lim->d.mantissa2) && + (vd.mantissa1 == lim->d.mantissa1) && + (vd.exp == lim->d.exp)) { + id = lim->ieee; + goto shipit; + } + } + id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; + id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); + id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | + (vd.mantissa3 << 13) | + ((vd.mantissa4 >> 3) & MASK(13)); + shipit: + id.sign = vd.sign; + dp = (double *)&id; +#endif + if (2*sizeof(long) == sizeof(double)) { + long *lp = (long *)dp; + return (XDR_PUTLONG(xdrs, lp+!LSW) && + XDR_PUTLONG(xdrs, lp+LSW)); + } else if (2*sizeof(int) == sizeof(double)) { + int *ip = (int *)dp; + long tmp[2]; + tmp[0] = ip[!LSW]; + tmp[1] = ip[LSW]; + return (XDR_PUTLONG(xdrs, tmp) && + XDR_PUTLONG(xdrs, tmp+1)); + } + break; + + case XDR_DECODE: +#ifdef vax + lp = (long *)&id; + if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) + return (FALSE); + for (i = 0, lim = dbl_limits; + i < sizeof(dbl_limits)/sizeof(struct dbl_limits); + i++, lim++) { + if ((id.mantissa2 == lim->ieee.mantissa2) && + (id.mantissa1 == lim->ieee.mantissa1) && + (id.exp == lim->ieee.exp)) { + vd = lim->d; + goto doneit; + } + } + vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; + vd.mantissa1 = (id.mantissa1 >> 13); + vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | + (id.mantissa2 >> 29); + vd.mantissa3 = (id.mantissa2 >> 13); + vd.mantissa4 = (id.mantissa2 << 3); + doneit: + vd.sign = id.sign; + *dp = *((double *)&vd); + return (TRUE); +#else + if (2*sizeof(long) == sizeof(double)) { + long *lp = (long *)dp; + return (XDR_GETLONG(xdrs, lp+!LSW) && + XDR_GETLONG(xdrs, lp+LSW)); + } else if (2*sizeof(int) == sizeof(double)) { + int *ip = (int *)dp; + long tmp[2]; + if (XDR_GETLONG(xdrs, tmp+!LSW) && + XDR_GETLONG(xdrs, tmp+LSW)) { + ip[0] = tmp[0]; + ip[1] = tmp[1]; + return (TRUE); + } + } + break; +#endif + + case XDR_FREE: + return (TRUE); + } + return (FALSE); +} diff --git a/source/lib/xdrf-Argonne/xdr_stdio.c b/source/lib/xdrf-Argonne/xdr_stdio.c new file mode 100644 index 0000000..12b1709 --- /dev/null +++ b/source/lib/xdrf-Argonne/xdr_stdio.c @@ -0,0 +1,196 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * xdr_stdio.c, XDR implementation on standard i/o file. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * This set of routines implements a XDR on a stdio stream. + * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes + * from the stream. + */ + +#include "types.h" +#include +#include "xdr.h" + +#ifdef USE_IN_LIBIO +# include +# define fflush(s) INTUSE(_IO_fflush) (s) +# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) +# define ftell(s) INTUSE(_IO_ftell) (s) +# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) +#endif + +static bool_t xdrstdio_getlong (XDR *, long *); +static bool_t xdrstdio_putlong (XDR *, const long *); +static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); +static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); +static u_int xdrstdio_getpos (const XDR *); +static bool_t xdrstdio_setpos (XDR *, u_int); +static int32_t *xdrstdio_inline (XDR *, u_int); +static void xdrstdio_destroy (XDR *); +static bool_t xdrstdio_getint32 (XDR *, int32_t *); +static bool_t xdrstdio_putint32 (XDR *, const int32_t *); + +/* + * Ops vector for stdio type XDR + */ +static const struct xdr_ops xdrstdio_ops = +{ + xdrstdio_getlong, /* deserialize a long int */ + xdrstdio_putlong, /* serialize a long int */ + xdrstdio_getbytes, /* deserialize counted bytes */ + xdrstdio_putbytes, /* serialize counted bytes */ + xdrstdio_getpos, /* get offset in the stream */ + xdrstdio_setpos, /* set offset in the stream */ + xdrstdio_inline, /* prime stream for inline macros */ + xdrstdio_destroy, /* destroy stream */ + xdrstdio_getint32, /* deserialize a int */ + xdrstdio_putint32 /* serialize a int */ +}; + +/* + * Initialize a stdio xdr stream. + * Sets the xdr stream handle xdrs for use on the stream file. + * Operation flag is set to op. + */ +void +xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) +{ + xdrs->x_op = op; + /* We have to add the const since the `struct xdr_ops' in `struct XDR' + is not `const'. */ + xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; + xdrs->x_private = (caddr_t) file; + xdrs->x_handy = 0; + xdrs->x_base = 0; +} + +/* + * Destroy a stdio xdr stream. + * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. + */ +static void +xdrstdio_destroy (XDR *xdrs) +{ + (void) fflush ((FILE *) xdrs->x_private); + /* xx should we close the file ?? */ +}; + +static bool_t +xdrstdio_getlong (XDR *xdrs, long *lp) +{ + u_int32_t mycopy; + + if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + *lp = (long) ntohl (mycopy); + return TRUE; +} + +static bool_t +xdrstdio_putlong (XDR *xdrs, const long *lp) +{ + int32_t mycopy = htonl ((u_int32_t) *lp); + + if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + return TRUE; +} + +static bool_t +xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) +{ + if ((len != 0) && (fread (addr, (int) len, 1, + (FILE *) xdrs->x_private) != 1)) + return FALSE; + return TRUE; +} + +static bool_t +xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) +{ + if ((len != 0) && (fwrite (addr, (int) len, 1, + (FILE *) xdrs->x_private) != 1)) + return FALSE; + return TRUE; +} + +static u_int +xdrstdio_getpos (const XDR *xdrs) +{ + return (u_int) ftell ((FILE *) xdrs->x_private); +} + +static bool_t +xdrstdio_setpos (XDR *xdrs, u_int pos) +{ + return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; +} + +static int32_t * +xdrstdio_inline (XDR *xdrs, u_int len) +{ + /* + * Must do some work to implement this: must insure + * enough data in the underlying stdio buffer, + * that the buffer is aligned so that we can indirect through a + * long *, and stuff this pointer in xdrs->x_buf. Doing + * a fread or fwrite to a scratch buffer would defeat + * most of the gains to be had here and require storage + * management on this buffer, so we don't do this. + */ + return NULL; +} + +static bool_t +xdrstdio_getint32 (XDR *xdrs, int32_t *ip) +{ + int32_t mycopy; + + if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + *ip = ntohl (mycopy); + return TRUE; +} + +static bool_t +xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) +{ + int32_t mycopy = htonl (*ip); + + ip = &mycopy; + if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + return TRUE; +} + +/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/lib/xdrf-Argonne/xdrf.h b/source/lib/xdrf-Argonne/xdrf.h new file mode 100644 index 0000000..dedf5a2 --- /dev/null +++ b/source/lib/xdrf-Argonne/xdrf.h @@ -0,0 +1,10 @@ +/*_________________________________________________________________ + | + | xdrf.h - include file for C routines that want to use the + | functions below. +*/ + +int xdropen(XDR *xdrs, const char *filename, const char *type); +int xdrclose(XDR *xdrs) ; +int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; + diff --git a/source/lib/xdrf/CMakeLists.txt b/source/lib/xdrf/CMakeLists.txt new file mode 100644 index 0000000..26baa36 --- /dev/null +++ b/source/lib/xdrf/CMakeLists.txt @@ -0,0 +1,19 @@ +# +# CMake project file for UNRESPACK +# + +# m4 macro processor +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/libxdrf.c + COMMAND m4 + ARGS ${CMAKE_CURRENT_SOURCE_DIR}/underscore.m4 ${CMAKE_CURRENT_SOURCE_DIR}/libxdrf.m4 > ${CMAKE_CURRENT_BINARY_DIR}/libxdrf.c + VERBATIM +) + +# add headers from current dir +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +# compile the libxdrf library +add_library(xdrf STATIC ${CMAKE_CURRENT_BINARY_DIR}/libxdrf.c ftocstr.c) +set(UNRES_XDRFLIB ${CMAKE_CURRENT_BINARY_DIR}/libxdrf.a PARENT_SCOPE) + +#add_dependencies( ${UNRES_BIN} xdrf ) diff --git a/source/lib/xdrf/Makefile b/source/lib/xdrf/Makefile new file mode 100644 index 0000000..02c29f6 --- /dev/null +++ b/source/lib/xdrf/Makefile @@ -0,0 +1,27 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +CC = gcc +CFLAGS = -O + +M4 = m4 +M4FILE = underscore.m4 + +libxdrf.a: libxdrf.o ftocstr.o + ar cr libxdrf.a $? + +clean: + rm -f libxdrf.o ftocstr.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c + rm -f libxdrf.c + diff --git a/source/lib/xdrf/Makefile_jubl b/source/lib/xdrf/Makefile_jubl new file mode 100644 index 0000000..8dc35cf --- /dev/null +++ b/source/lib/xdrf/Makefile_jubl @@ -0,0 +1,31 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +BGLSYS = /bgl/BlueLight/ppcfloor/bglsys + +CC = /usr/bin/blrts_xlc +CPPC = /usr/bin/blrts_xlc + +CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 + +M4 = m4 +M4FILE = RS6K.m4 + +libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o + ar cr libxdrf.a $? + +clean: + rm -f *.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c +# rm -f libxdrf.c + diff --git a/source/lib/xdrf/Makefile_linux b/source/lib/xdrf/Makefile_linux new file mode 100644 index 0000000..f03276e --- /dev/null +++ b/source/lib/xdrf/Makefile_linux @@ -0,0 +1,27 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +CC = cc +CFLAGS = -O + +M4 = m4 +M4FILE = underscore.m4 + +libxdrf.a: libxdrf.o ftocstr.o + ar cr libxdrf.a $? + +clean: + rm -f libxdrf.o ftocstr.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c + rm -f libxdrf.c + diff --git a/source/lib/xdrf/RS6K.m4 b/source/lib/xdrf/RS6K.m4 new file mode 100644 index 0000000..0331d97 --- /dev/null +++ b/source/lib/xdrf/RS6K.m4 @@ -0,0 +1,20 @@ +divert(-1) +undefine(`len') +# +# do nothing special to FORTRAN function names +# +define(`FUNCTION',`$1') +# +# FORTRAN character strings are passed as follows: +# a pointer to the base of the string is passed in the normal +# argument list, and the length is passed by value as an extra +# argument, after all of the other arguments. +# +define(`ARGS',`($1`'undivert(1))') +define(`SAVE',`divert(1)$1`'divert(0)') +define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') +define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') +define(`STRING_LEN',`$1_len') +define(`STRING_PTR',`$1_ptr') +divert(0) + diff --git a/source/lib/xdrf/ftocstr.c b/source/lib/xdrf/ftocstr.c new file mode 100644 index 0000000..ed2113f --- /dev/null +++ b/source/lib/xdrf/ftocstr.c @@ -0,0 +1,35 @@ + + +int ftocstr(ds, dl, ss, sl) + char *ds, *ss; /* dst, src ptrs */ + int dl; /* dst max len */ + int sl; /* src len */ +{ + char *p; + + for (p = ss + sl; --p >= ss && *p == ' '; ) ; + sl = p - ss + 1; + dl--; + ds[0] = 0; + if (sl > dl) + return 1; + while (sl--) + (*ds++ = *ss++); + *ds = '\0'; + return 0; +} + + +int ctofstr(ds, dl, ss) + char *ds; /* dest space */ + int dl; /* max dest length */ + char *ss; /* src string (0-term) */ +{ + while (dl && *ss) { + *ds++ = *ss++; + dl--; + } + while (dl--) + *ds++ = ' '; + return 0; +} diff --git a/source/lib/xdrf/libxdrf.m4 b/source/lib/xdrf/libxdrf.m4 new file mode 100644 index 0000000..a6da458 --- /dev/null +++ b/source/lib/xdrf/libxdrf.m4 @@ -0,0 +1,1238 @@ +/*____________________________________________________________________________ + | + | libxdrf - portable fortran interface to xdr. some xdr routines + | are C routines for compressed coordinates + | + | version 1.1 + | + | This collection of routines is intended to write and read + | data in a portable way to a file, so data written on one type + | of machine can be read back on a different type. + | + | all fortran routines use an integer 'xdrid', which is an id to the + | current xdr file, and is set by xdrfopen. + | most routines have in integer 'ret' which is the return value. + | The value of 'ret' is zero on failure, and most of the time one + | on succes. + | + | There are three routines useful for C users: + | xdropen(), xdrclose(), xdr3dfcoord(). + | The first two replace xdrstdio_create and xdr_destroy, and *must* be + | used when you plan to use xdr3dfcoord(). (they are also a bit + | easier to interface). For writing data other than compressed coordinates + | you should use the standard C xdr routines (see xdr man page) + | + | xdrfopen(xdrid, filename, mode, ret) + | character *(*) filename + | character *(*) mode + | + | this will open the file with the given filename (string) + | and the given mode, it returns an id in xdrid, which is + | to be used in all other calls to xdrf routines. + | mode is 'w' to create, or update an file, for all other + | values of mode the file is opened for reading + | + | you need to call xdrfclose to flush the output and close + | the file. + | Note that you should not use xdrstdio_create, which comes with the + | standard xdr library + | + | xdrfclose(xdrid, ret) + | flush the data to the file, and closes the file; + | You should not use xdr_destroy (which comes standard with + | the xdr libraries. + | + | xdrfbool(xdrid, bp, ret) + | integer pb + | + | This filter produces values of either 1 or 0 + | + | xdrfchar(xdrid, cp, ret) + | character cp + | + | filter that translate between characters and their xdr representation + | Note that the characters in not compressed and occupies 4 bytes. + | + | xdrfdouble(xdrid, dp, ret) + | double dp + | + | read/write a double. + | + | xdrffloat(xdrid, fp, ret) + | float fp + | + | read/write a float. + | + | xdrfint(xdrid, ip, ret) + | integer ip + | + | read/write integer. + | + | xdrflong(xdrid, lp, ret) + | integer lp + | + | this routine has a possible portablility problem due to 64 bits longs. + | + | xdrfshort(xdrid, sp, ret) + | integer *2 sp + | + | xdrfstring(xdrid, sp, maxsize, ret) + | character *(*) + | integer maxsize + | + | read/write a string, with maximum length given by maxsize + | + | xdrfwrapstring(xdris, sp, ret) + | character *(*) + | + | read/write a string (it is the same as xdrfstring accept that it finds + | the stringlength itself. + | + | xdrfvector(xdrid, cp, size, xdrfproc, ret) + | character *(*) + | integer size + | external xdrfproc + | + | read/write an array pointed to by cp, with number of elements + | defined by 'size'. the routine 'xdrfproc' is the name + | of one of the above routines to read/write data (like xdrfdouble) + | In contrast with the c-version you don't need to specify the + | byte size of an element. + | xdrfstring is not allowed here (it is in the c version) + | + | xdrf3dfcoord(xdrid, fp, size, precision, ret) + | real (*) fp + | real precision + | integer size + | + | this is *NOT* a standard xdr routine. I named it this way, because + | it invites people to use the other xdr routines. + | It is introduced to store specifically 3d coordinates of molecules + | (as found in molecular dynamics) and it writes it in a compressed way. + | It starts by multiplying all numbers by precision and + | rounding the result to integer. effectively converting + | all floating point numbers to fixed point. + | it uses an algorithm for compression that is optimized for + | molecular data, but could be used for other 3d coordinates + | as well. There is subtantial overhead involved, so call this + | routine only if you have a large number of coordinates to read/write + | + | ________________________________________________________________________ + | + | Below are the routines to be used by C programmers. Use the 'normal' + | xdr routines to write integers, floats, etc (see man xdr) + | + | int xdropen(XDR *xdrs, const char *filename, const char *type) + | This will open the file with the given filename and the + | given mode. You should pass it an allocated XDR struct + | in xdrs, to be used in all other calls to xdr routines. + | Mode is 'w' to create, or update an file, and for all + | other values of mode the file is opened for reading. + | You need to call xdrclose to flush the output and close + | the file. + | + | Note that you should not use xdrstdio_create, which + | comes with the standard xdr library. + | + | int xdrclose(XDR *xdrs) + | Flush the data to the file, and close the file; + | You should not use xdr_destroy (which comes standard + | with the xdr libraries). + | + | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) + | This is \fInot\fR a standard xdr routine. I named it this + | way, because it invites people to use the other xdr + | routines. + | + | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl +*/ + + +#include +#include +#include +/* #include +#include */ +#include "xdr.h" +#include +#include +#include "xdrf.h" + +int ftocstr(char *, int, char *, int); +int ctofstr(char *, int, char *); + +#define MAXID 20 +static FILE *xdrfiles[MAXID]; +static XDR *xdridptr[MAXID]; +static char xdrmodes[MAXID]; +static unsigned int cnt; + +typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); + +void +FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') +int *xdrid, *ret; +int *pb; +{ + *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); + cnt += sizeof(int); +} + +void +FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') +int *xdrid, *ret; +char *cp; +{ + *ret = xdr_char(xdridptr[*xdrid], cp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') +int *xdrid, *ret; +double *dp; +{ + *ret = xdr_double(xdridptr[*xdrid], dp); + cnt += sizeof(double); +} + +void +FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') +int *xdrid, *ret; +float *fp; +{ + *ret = xdr_float(xdridptr[*xdrid], fp); + cnt += sizeof(float); +} + +void +FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') +int *xdrid, *ret; +int *ip; +{ + *ret = xdr_int(xdridptr[*xdrid], ip); + cnt += sizeof(int); +} + +void +FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') +int *xdrid, *ret; +long *lp; +{ + *ret = xdr_long(xdridptr[*xdrid], lp); + cnt += sizeof(long); +} + +void +FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') +int *xdrid, *ret; +short *sp; +{ + *ret = xdr_short(xdridptr[*xdrid], sp); + cnt += sizeof(sp); +} + +void +FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') +int *xdrid, *ret; +char *ucp; +{ + *ret = xdr_u_char(xdridptr[*xdrid], ucp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') +int *xdrid, *ret; +unsigned long *ulp; +{ + *ret = xdr_u_long(xdridptr[*xdrid], ulp); + cnt += sizeof(unsigned long); +} + +void +FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') +int *xdrid, *ret; +unsigned short *usp; +{ + *ret = xdr_u_short(xdridptr[*xdrid], usp); + cnt += sizeof(unsigned short); +} + +void +FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') +int *xdrid, *ret; +float *fp; +int *size; +float *precision; +{ + *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); +} + +void +FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +int *maxsize; +{ + char *tsp; + + tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += *maxsize; + free(tsp); +} + +void +FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +{ + char *tsp; + int maxsize; + maxsize = (STRING_LEN(sp)) + 1; + tsp = (char*) malloc(maxsize * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += maxsize; + free(tsp); +} + +void +FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') +int *xdrid, *ret; +caddr_t *cp; +int *ccnt; +{ + *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); + cnt += *ccnt; +} + +void +FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') +int *xdrid, *ret; +int *pos; +{ + *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); +} + +void +FUNCTION(xdrf) ARGS(`xdrid, pos') +int *xdrid, *pos; +{ + *pos = xdr_getpos(xdridptr[*xdrid]); +} + +void +FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') +int *xdrid, *ret; +char *cp; +int *size; +FUNCTION(xdrfproc) elproc; +{ + int lcnt; + cnt = 0; + for (lcnt = 0; lcnt < *size; lcnt++) { + elproc(xdrid, (cp+cnt) , ret); + } +} + + +void +FUNCTION(xdrfclose) ARGS(`xdrid, ret') +int *xdrid; +int *ret; +{ + *ret = xdrclose(xdridptr[*xdrid]); + cnt = 0; +} + +void +FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') +int *xdrid; +STRING_ARG_DECL(fp); +STRING_ARG_DECL(mode); +int *ret; +{ + char fname[512]; + char fmode[3]; + + if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { + *ret = 0; + } + if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), + STRING_LEN(mode))) { + *ret = 0; + } + + *xdrid = xdropen(NULL, fname, fmode); + if (*xdrid == 0) + *ret = 0; + else + *ret = 1; +} + +/*___________________________________________________________________________ + | + | what follows are the C routines for opening, closing xdr streams + | and the routine to read/write compressed coordinates together + | with some routines to assist in this task (those are marked + | static and cannot be called from user programs) +*/ +#define MAXABS INT_MAX-2 + +#ifndef MIN +#define MIN(x,y) ((x) < (y) ? (x):(y)) +#endif +#ifndef MAX +#define MAX(x,y) ((x) > (y) ? (x):(y)) +#endif +#ifndef SQR +#define SQR(x) ((x)*(x)) +#endif +static int magicints[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, + 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, + 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, + 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, + 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, + 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, + 8388607, 10568983, 13316085, 16777216 }; + +#define FIRSTIDX 9 +/* note that magicints[FIRSTIDX-1] == 0 */ +#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) + + +/*__________________________________________________________________________ + | + | xdropen - open xdr file + | + | This versions differs from xdrstdio_create, because I need to know + | the state of the file (read or write) so I can use xdr3dfcoord + | in eigther read or write mode, and the file descriptor + | so I can close the file (something xdr_destroy doesn't do). + | +*/ + +int xdropen(XDR *xdrs, const char *filename, const char *type) { + static int init_done = 0; + enum xdr_op lmode; + const char *type1; + int xdrid; + + if (init_done == 0) { + for (xdrid = 1; xdrid < MAXID; xdrid++) { + xdridptr[xdrid] = NULL; + } + init_done = 1; + } + xdrid = 1; + while (xdrid < MAXID && xdridptr[xdrid] != NULL) { + xdrid++; + } + if (xdrid == MAXID) { + return 0; + } + if (*type == 'w' || *type == 'W') { + type = "w+"; + type1 = "w+"; + lmode = XDR_ENCODE; + } else if (*type == 'a' || *type == 'A') { + type = "w+"; + type1 = "a+"; + lmode = XDR_ENCODE; + } else { + type = "r"; + type1 = "r"; + lmode = XDR_DECODE; + } + xdrfiles[xdrid] = fopen(filename, type1); + if (xdrfiles[xdrid] == NULL) { + xdrs = NULL; + return 0; + } + xdrmodes[xdrid] = *type; + /* next test isn't usefull in the case of C language + * but is used for the Fortran interface + * (C users are expected to pass the address of an already allocated + * XDR staructure) + */ + if (xdrs == NULL) { + xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); + xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); + } else { + xdridptr[xdrid] = xdrs; + xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); + } + return xdrid; +} + +/*_________________________________________________________________________ + | + | xdrclose - close a xdr file + | + | This will flush the xdr buffers, and destroy the xdr stream. + | It also closes the associated file descriptor (this is *not* + | done by xdr_destroy). + | +*/ + +int xdrclose(XDR *xdrs) { + int xdrid; + + if (xdrs == NULL) { + fprintf(stderr, "xdrclose: passed a NULL pointer\n"); + exit(1); + } + for (xdrid = 1; xdrid < MAXID; xdrid++) { + if (xdridptr[xdrid] == xdrs) { + + xdr_destroy(xdrs); + fclose(xdrfiles[xdrid]); + xdridptr[xdrid] = NULL; + return 1; + } + } + fprintf(stderr, "xdrclose: no such open xdr file\n"); + exit(1); + +} + +/*____________________________________________________________________________ + | + | sendbits - encode num into buf using the specified number of bits + | + | This routines appends the value of num to the bits already present in + | the array buf. You need to give it the number of bits to use and you + | better make sure that this number of bits is enough to hold the value + | Also num must be positive. + | +*/ + +static void sendbits(int buf[], int num_of_bits, int num) { + + unsigned int cnt, lastbyte; + int lastbits; + unsigned char * cbuf; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = (unsigned int) buf[0]; + lastbits = buf[1]; + lastbyte =(unsigned int) buf[2]; + while (num_of_bits >= 8) { + lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); + cbuf[cnt++] = lastbyte >> lastbits; + num_of_bits -= 8; + } + if (num_of_bits > 0) { + lastbyte = (lastbyte << num_of_bits) | num; + lastbits += num_of_bits; + if (lastbits >= 8) { + lastbits -= 8; + cbuf[cnt++] = lastbyte >> lastbits; + } + } + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + if (lastbits>0) { + cbuf[cnt] = lastbyte << (8 - lastbits); + } +} + +/*_________________________________________________________________________ + | + | sizeofint - calculate bitsize of an integer + | + | return the number of bits needed to store an integer with given max size + | +*/ + +static int sizeofint(const int size) { + unsigned int num = 1; + int num_of_bits = 0; + + while (size >= num && num_of_bits < 32) { + num_of_bits++; + num <<= 1; + } + return num_of_bits; +} + +/*___________________________________________________________________________ + | + | sizeofints - calculate 'bitsize' of compressed ints + | + | given the number of small unsigned integers and the maximum value + | return the number of bits needed to read or write them with the + | routines receiveints and sendints. You need this parameter when + | calling these routines. Note that for many calls I can use + | the variable 'smallidx' which is exactly the number of bits, and + | So I don't need to call 'sizeofints for those calls. +*/ + +static int sizeofints( const int num_of_ints, unsigned int sizes[]) { + int i, num; + unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; + num_of_bytes = 1; + bytes[0] = 1; + num_of_bits = 0; + for (i=0; i < num_of_ints; i++) { + tmp = 0; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + num = 1; + num_of_bytes--; + while (bytes[num_of_bytes] >= num) { + num_of_bits++; + num *= 2; + } + return num_of_bits + num_of_bytes * 8; + +} + +/*____________________________________________________________________________ + | + | sendints - send a small set of small integers in compressed format + | + | this routine is used internally by xdr3dfcoord, to send a set of + | small integers to the buffer. + | Multiplication with fixed (specified maximum ) sizes is used to get + | to one big, multibyte integer. Allthough the routine could be + | modified to handle sizes bigger than 16777216, or more than just + | a few integers, this is not done, because the gain in compression + | isn't worth the effort. Note that overflowing the multiplication + | or the byte buffer (32 bytes) is unchecked and causes bad results. + | + */ + +static void sendints(int buf[], const int num_of_ints, const int num_of_bits, + unsigned int sizes[], unsigned int nums[]) { + + int i; + unsigned int bytes[32], num_of_bytes, bytecnt, tmp; + + tmp = nums[0]; + num_of_bytes = 0; + do { + bytes[num_of_bytes++] = tmp & 0xff; + tmp >>= 8; + } while (tmp != 0); + + for (i = 1; i < num_of_ints; i++) { + if (nums[i] >= sizes[i]) { + fprintf(stderr,"major breakdown in sendints num %d doesn't " + "match size %d\n", nums[i], sizes[i]); + exit(1); + } + /* use one step multiply */ + tmp = nums[i]; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + if (num_of_bits >= num_of_bytes * 8) { + for (i = 0; i < num_of_bytes; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits - num_of_bytes * 8, 0); + } else { + for (i = 0; i < num_of_bytes-1; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); + } +} + + +/*___________________________________________________________________________ + | + | receivebits - decode number from buf using specified number of bits + | + | extract the number of bits from the array buf and construct an integer + | from it. Return that value. + | +*/ + +static int receivebits(int buf[], int num_of_bits) { + + int cnt, num; + unsigned int lastbits, lastbyte; + unsigned char * cbuf; + int mask = (1 << num_of_bits) -1; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = buf[0]; + lastbits = (unsigned int) buf[1]; + lastbyte = (unsigned int) buf[2]; + + num = 0; + while (num_of_bits >= 8) { + lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; + num |= (lastbyte >> lastbits) << (num_of_bits - 8); + num_of_bits -=8; + } + if (num_of_bits > 0) { + if (lastbits < num_of_bits) { + lastbits += 8; + lastbyte = (lastbyte << 8) | cbuf[cnt++]; + } + lastbits -= num_of_bits; + num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); + } + num &= mask; + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + return num; +} + +/*____________________________________________________________________________ + | + | receiveints - decode 'small' integers from the buf array + | + | this routine is the inverse from sendints() and decodes the small integers + | written to buf by calculating the remainder and doing divisions with + | the given sizes[]. You need to specify the total number of bits to be + | used from buf in num_of_bits. + | +*/ + +static void receiveints(int buf[], const int num_of_ints, int num_of_bits, + unsigned int sizes[], int nums[]) { + int bytes[32]; + int i, j, num_of_bytes, p, num; + + bytes[1] = bytes[2] = bytes[3] = 0; + num_of_bytes = 0; + while (num_of_bits > 8) { + bytes[num_of_bytes++] = receivebits(buf, 8); + num_of_bits -= 8; + } + if (num_of_bits > 0) { + bytes[num_of_bytes++] = receivebits(buf, num_of_bits); + } + for (i = num_of_ints-1; i > 0; i--) { + num = 0; + for (j = num_of_bytes-1; j >=0; j--) { + num = (num << 8) | bytes[j]; + p = num / sizes[i]; + bytes[j] = p; + num = num - p * sizes[i]; + } + nums[i] = num; + } + nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); +} + +/*____________________________________________________________________________ + | + | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. + | + | this routine reads or writes (depending on how you opened the file with + | xdropen() ) a large number of 3d coordinates (stored in *fp). + | The number of coordinates triplets to write is given by *size. On + | read this number may be zero, in which case it reads as many as were written + | or it may specify the number if triplets to read (which should match the + | number written). + | Compression is achieved by first converting all floating numbers to integer + | using multiplication by *precision and rounding to the nearest integer. + | Then the minimum and maximum value are calculated to determine the range. + | The limited range of integers so found, is used to compress the coordinates. + | In addition the differences between succesive coordinates is calculated. + | If the difference happens to be 'small' then only the difference is saved, + | compressing the data even more. The notion of 'small' is changed dynamically + | and is enlarged or reduced whenever needed or possible. + | Extra compression is achieved in the case of GROMOS and coordinates of + | water molecules. GROMOS first writes out the Oxygen position, followed by + | the two hydrogens. In order to make the differences smaller (and thereby + | compression the data better) the order is changed into first one hydrogen + | then the oxygen, followed by the other hydrogen. This is rather special, but + | it shouldn't harm in the general case. + | + */ + +int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { + + + static int *ip = NULL; + static int oldsize; + static int *buf; + + int minint[3], maxint[3], mindiff, *lip, diff; + int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; + int minidx, maxidx; + unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; + int flag, k; + int small, smaller, larger, i, is_small, is_smaller, run, prevrun; + float *lfp, lf; + int tmp, *thiscoord, prevcoord[3]; + unsigned int tmpcoord[30]; + + int bufsize, xdrid, lsize; + unsigned int bitsize; + float inv_precision; + int errval = 1; + + /* find out if xdrs is opened for reading or for writing */ + xdrid = 0; + while (xdridptr[xdrid] != xdrs) { + xdrid++; + if (xdrid >= MAXID) { + fprintf(stderr, "xdr error. no open xdr stream\n"); + exit (1); + } + } + if (xdrmodes[xdrid] == 'w') { + + /* xdrs is open for writing */ + + if (xdr_int(xdrs, size) == 0) + return 0; + size3 = *size * 3; + /* when the number of coordinates is small, don't try to compress; just + * write them as floats using xdr_vector + */ + if (*size <= 9 ) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + /* buf[0-2] are special and do not contain actual data */ + buf[0] = buf[1] = buf[2] = 0; + minint[0] = minint[1] = minint[2] = INT_MAX; + maxint[0] = maxint[1] = maxint[2] = INT_MIN; + prevrun = -1; + lfp = fp; + lip = ip; + mindiff = INT_MAX; + oldlint1 = oldlint2 = oldlint3 = 0; + while(lfp < fp + size3 ) { + /* find nearest integer */ + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint1 = lf; + if (lint1 < minint[0]) minint[0] = lint1; + if (lint1 > maxint[0]) maxint[0] = lint1; + *lip++ = lint1; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint2 = lf; + if (lint2 < minint[1]) minint[1] = lint2; + if (lint2 > maxint[1]) maxint[1] = lint2; + *lip++ = lint2; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint3 = lf; + if (lint3 < minint[2]) minint[2] = lint3; + if (lint3 > maxint[2]) maxint[2] = lint3; + *lip++ = lint3; + lfp++; + diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); + if (diff < mindiff && lfp > fp + 3) + mindiff = diff; + oldlint1 = lint1; + oldlint2 = lint2; + oldlint3 = lint3; + } + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + if ((float)maxint[0] - (float)minint[0] >= MAXABS || + (float)maxint[1] - (float)minint[1] >= MAXABS || + (float)maxint[2] - (float)minint[2] >= MAXABS) { + /* turning value in unsigned by subtracting minint + * would cause overflow + */ + errval = 0; + } + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + lip = ip; + luip = (unsigned int *) ip; + smallidx = FIRSTIDX; + while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { + smallidx++; + } + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + larger = magicints[maxidx] / 2; + i = 0; + while (i < *size) { + is_small = 0; + thiscoord = (int *)(luip) + i * 3; + if (smallidx < maxidx && i >= 1 && + abs(thiscoord[0] - prevcoord[0]) < larger && + abs(thiscoord[1] - prevcoord[1]) < larger && + abs(thiscoord[2] - prevcoord[2]) < larger) { + is_smaller = 1; + } else if (smallidx > minidx) { + is_smaller = -1; + } else { + is_smaller = 0; + } + if (i + 1 < *size) { + if (abs(thiscoord[0] - thiscoord[3]) < small && + abs(thiscoord[1] - thiscoord[4]) < small && + abs(thiscoord[2] - thiscoord[5]) < small) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; + thiscoord[3] = tmp; + tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; + thiscoord[4] = tmp; + tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; + thiscoord[5] = tmp; + is_small = 1; + } + + } + tmpcoord[0] = thiscoord[0] - minint[0]; + tmpcoord[1] = thiscoord[1] - minint[1]; + tmpcoord[2] = thiscoord[2] - minint[2]; + if (bitsize == 0) { + sendbits(buf, bitsizeint[0], tmpcoord[0]); + sendbits(buf, bitsizeint[1], tmpcoord[1]); + sendbits(buf, bitsizeint[2], tmpcoord[2]); + } else { + sendints(buf, 3, bitsize, sizeint, tmpcoord); + } + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + thiscoord = thiscoord + 3; + i++; + + run = 0; + if (is_small == 0 && is_smaller == -1) + is_smaller = 0; + while (is_small && run < 8*3) { + if (is_smaller == -1 && ( + SQR(thiscoord[0] - prevcoord[0]) + + SQR(thiscoord[1] - prevcoord[1]) + + SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { + is_smaller = 0; + } + + tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; + tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; + tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + i++; + thiscoord = thiscoord + 3; + is_small = 0; + if (i < *size && + abs(thiscoord[0] - prevcoord[0]) < small && + abs(thiscoord[1] - prevcoord[1]) < small && + abs(thiscoord[2] - prevcoord[2]) < small) { + is_small = 1; + } + } + if (run != prevrun || is_smaller != 0) { + prevrun = run; + sendbits(buf, 1, 1); /* flag the change in run-length */ + sendbits(buf, 5, run+is_smaller+1); + } else { + sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ + } + for (k=0; k < run; k+=3) { + sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); + } + if (is_smaller != 0) { + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + smaller = magicints[smallidx-1] / 2; + } else { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + } + } + if (buf[1] != 0) buf[0]++;; + xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ + return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); + } else { + + /* xdrs is open for reading */ + + if (xdr_int(xdrs, &lsize) == 0) + return 0; + if (*size != 0 && lsize != *size) { + fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " + "%d arg vs %d in file", *size, lsize); + } + *size = lsize; + size3 = *size * 3; + if (*size <= 9) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + buf[0] = buf[1] = buf[2] = 0; + + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + larger = magicints[maxidx]; + + /* buf[0] holds the length in bytes */ + + if (xdr_int(xdrs, &(buf[0])) == 0) + return 0; + if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) + return 0; + buf[0] = buf[1] = buf[2] = 0; + + lfp = fp; + inv_precision = 1.0 / * precision; + run = 0; + i = 0; + lip = ip; + while ( i < lsize ) { + thiscoord = (int *)(lip) + i * 3; + + if (bitsize == 0) { + thiscoord[0] = receivebits(buf, bitsizeint[0]); + thiscoord[1] = receivebits(buf, bitsizeint[1]); + thiscoord[2] = receivebits(buf, bitsizeint[2]); + } else { + receiveints(buf, 3, bitsize, sizeint, thiscoord); + } + + i++; + thiscoord[0] += minint[0]; + thiscoord[1] += minint[1]; + thiscoord[2] += minint[2]; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + + flag = receivebits(buf, 1); + is_smaller = 0; + if (flag == 1) { + run = receivebits(buf, 5); + is_smaller = run % 3; + run -= is_smaller; + is_smaller--; + } + if (run > 0) { + thiscoord += 3; + for (k = 0; k < run; k+=3) { + receiveints(buf, 3, smallidx, sizesmall, thiscoord); + i++; + thiscoord[0] += prevcoord[0] - small; + thiscoord[1] += prevcoord[1] - small; + thiscoord[2] += prevcoord[2] - small; + if (k == 0) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; + prevcoord[0] = tmp; + tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; + prevcoord[1] = tmp; + tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; + prevcoord[2] = tmp; + *lfp++ = prevcoord[0] * inv_precision; + *lfp++ = prevcoord[1] * inv_precision; + *lfp++ = prevcoord[2] * inv_precision; + } else { + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + } + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + } else { + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + if (smallidx > FIRSTIDX) { + smaller = magicints[smallidx - 1] /2; + } else { + smaller = 0; + } + } else if (is_smaller > 0) { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + } + } + return 1; +} + + + diff --git a/source/lib/xdrf/types.h b/source/lib/xdrf/types.h new file mode 100644 index 0000000..871f3fd --- /dev/null +++ b/source/lib/xdrf/types.h @@ -0,0 +1,99 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +/* fixincludes should not add extern "C" to this file */ +/* + * Rpc additions to + */ +#ifndef _RPC_TYPES_H +#define _RPC_TYPES_H 1 + +typedef int bool_t; +typedef int enum_t; +/* This needs to be changed to uint32_t in the future */ +typedef unsigned long rpcprog_t; +typedef unsigned long rpcvers_t; +typedef unsigned long rpcproc_t; +typedef unsigned long rpcprot_t; +typedef unsigned long rpcport_t; + +#define __dontcare__ -1 + +#ifndef FALSE +# define FALSE (0) +#endif + +#ifndef TRUE +# define TRUE (1) +#endif + +#ifndef NULL +# define NULL 0 +#endif + +#include /* For malloc decl. */ +#define mem_alloc(bsize) malloc(bsize) +/* + * XXX: This must not use the second argument, or code in xdr_array.c needs + * to be modified. + */ +#define mem_free(ptr, bsize) free(ptr) + +#ifndef makedev /* ie, we haven't already included it */ +#include +#endif + +#ifndef __u_char_defined +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; +# define __u_char_defined +#endif +#ifndef __daddr_t_defined +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; +# define __daddr_t_defined +#endif + +#include +#include + +#include + +#ifndef INADDR_LOOPBACK +#define INADDR_LOOPBACK (u_long)0x7F000001 +#endif +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + +#endif /* rpc/types.h */ diff --git a/source/lib/xdrf/underscore.m4 b/source/lib/xdrf/underscore.m4 new file mode 100644 index 0000000..4d620a0 --- /dev/null +++ b/source/lib/xdrf/underscore.m4 @@ -0,0 +1,19 @@ +divert(-1) +undefine(`len') +# +# append an underscore to FORTRAN function names +# +define(`FUNCTION',`$1_') +# +# FORTRAN character strings are passed as follows: +# a pointer to the base of the string is passed in the normal +# argument list, and the length is passed by value as an extra +# argument, after all of the other arguments. +# +define(`ARGS',`($1`'undivert(1))') +define(`SAVE',`divert(1)$1`'divert(0)') +define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') +define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') +define(`STRING_LEN',`$1_len') +define(`STRING_PTR',`$1_ptr') +divert(0) diff --git a/source/lib/xdrf/xdr.c b/source/lib/xdrf/xdr.c new file mode 100644 index 0000000..33b8544 --- /dev/null +++ b/source/lib/xdrf/xdr.c @@ -0,0 +1,752 @@ +# define INTUSE(name) name +# define INTDEF(name) +/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; +#endif + +/* + * xdr.c, Generic XDR routines implementation. + * + * Copyright (C) 1986, Sun Microsystems, Inc. + * + * These are the "generic" xdr routines used to serialize and de-serialize + * most common data items. See xdr.h for more info on the interface to + * xdr. + */ + +#include +#include +#include +#include + +#include "types.h" +#include "xdr.h" + +#ifdef USE_IN_LIBIO +# include +#endif + +/* + * constants specific to the xdr "protocol" + */ +#define XDR_FALSE ((long) 0) +#define XDR_TRUE ((long) 1) +#define LASTUNSIGNED ((u_int) 0-1) + +/* + * for unit alignment + */ +static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; + +/* + * Free a data structure using XDR + * Not a filter, but a convenient utility nonetheless + */ +void +xdr_free (xdrproc_t proc, char *objp) +{ + XDR x; + + x.x_op = XDR_FREE; + (*proc) (&x, objp); +} + +/* + * XDR nothing + */ +bool_t +xdr_void (void) +{ + return TRUE; +} +INTDEF(xdr_void) + +/* + * XDR integers + */ +bool_t +xdr_int (XDR *xdrs, int *ip) +{ + +#if INT_MAX < LONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (long) *ip; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *ip = (int) l; + case XDR_FREE: + return TRUE; + } + return FALSE; +#elif INT_MAX == LONG_MAX + return INTUSE(xdr_long) (xdrs, (long *) ip); +#elif INT_MAX == SHRT_MAX + return INTUSE(xdr_short) (xdrs, (short *) ip); +#else +#error unexpected integer sizes in_xdr_int() +#endif +} +INTDEF(xdr_int) + +/* + * XDR unsigned integers + */ +bool_t +xdr_u_int (XDR *xdrs, u_int *up) +{ +#if UINT_MAX < ULONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (u_long) * up; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *up = (u_int) (u_long) l; + case XDR_FREE: + return TRUE; + } + return FALSE; +#elif UINT_MAX == ULONG_MAX + return INTUSE(xdr_u_long) (xdrs, (u_long *) up); +#elif UINT_MAX == USHRT_MAX + return INTUSE(xdr_short) (xdrs, (short *) up); +#else +#error unexpected integer sizes in_xdr_u_int() +#endif +} +INTDEF(xdr_u_int) + +/* + * XDR long integers + * The definition of xdr_long() is kept for backward + * compatibility. Instead xdr_int() should be used. + */ +bool_t +xdr_long (XDR *xdrs, long *lp) +{ + + if (xdrs->x_op == XDR_ENCODE + && (sizeof (int32_t) == sizeof (long) + || (int32_t) *lp == *lp)) + return XDR_PUTLONG (xdrs, lp); + + if (xdrs->x_op == XDR_DECODE) + return XDR_GETLONG (xdrs, lp); + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_long) + +/* + * XDR unsigned long integers + * The definition of xdr_u_long() is kept for backward + * compatibility. Instead xdr_u_int() should be used. + */ +bool_t +xdr_u_long (XDR *xdrs, u_long *ulp) +{ + switch (xdrs->x_op) + { + case XDR_DECODE: + { + long int tmp; + + if (XDR_GETLONG (xdrs, &tmp) == FALSE) + return FALSE; + + *ulp = (uint32_t) tmp; + return TRUE; + } + + case XDR_ENCODE: + if (sizeof (uint32_t) != sizeof (u_long) + && (uint32_t) *ulp != *ulp) + return FALSE; + + return XDR_PUTLONG (xdrs, (long *) ulp); + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_u_long) + +/* + * XDR hyper integers + * same as xdr_u_hyper - open coded to save a proc call! + */ +bool_t +xdr_hyper (XDR *xdrs, quad_t *llp) +{ + long int t1, t2; + + if (xdrs->x_op == XDR_ENCODE) + { + t1 = (long) ((*llp) >> 32); + t2 = (long) (*llp); + return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); + } + + if (xdrs->x_op == XDR_DECODE) + { + if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) + return FALSE; + *llp = ((quad_t) t1) << 32; + *llp |= (uint32_t) t2; + return TRUE; + } + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_hyper) + + +/* + * XDR hyper integers + * same as xdr_hyper - open coded to save a proc call! + */ +bool_t +xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) +{ + long int t1, t2; + + if (xdrs->x_op == XDR_ENCODE) + { + t1 = (unsigned long) ((*ullp) >> 32); + t2 = (unsigned long) (*ullp); + return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); + } + + if (xdrs->x_op == XDR_DECODE) + { + if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) + return FALSE; + *ullp = ((u_quad_t) t1) << 32; + *ullp |= (uint32_t) t2; + return TRUE; + } + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_u_hyper) + +bool_t +xdr_longlong_t (XDR *xdrs, quad_t *llp) +{ + return INTUSE(xdr_hyper) (xdrs, llp); +} + +bool_t +xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) +{ + return INTUSE(xdr_u_hyper) (xdrs, ullp); +} + +/* + * XDR short integers + */ +bool_t +xdr_short (XDR *xdrs, short *sp) +{ + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (long) *sp; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *sp = (short) l; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_short) + +/* + * XDR unsigned short integers + */ +bool_t +xdr_u_short (XDR *xdrs, u_short *usp) +{ + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (u_long) * usp; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *usp = (u_short) (u_long) l; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_u_short) + + +/* + * XDR a char + */ +bool_t +xdr_char (XDR *xdrs, char *cp) +{ + int i; + + i = (*cp); + if (!INTUSE(xdr_int) (xdrs, &i)) + { + return FALSE; + } + *cp = i; + return TRUE; +} + +/* + * XDR an unsigned char + */ +bool_t +xdr_u_char (XDR *xdrs, u_char *cp) +{ + u_int u; + + u = (*cp); + if (!INTUSE(xdr_u_int) (xdrs, &u)) + { + return FALSE; + } + *cp = u; + return TRUE; +} + +/* + * XDR booleans + */ +bool_t +xdr_bool (XDR *xdrs, bool_t *bp) +{ + long lb; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + lb = *bp ? XDR_TRUE : XDR_FALSE; + return XDR_PUTLONG (xdrs, &lb); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &lb)) + { + return FALSE; + } + *bp = (lb == XDR_FALSE) ? FALSE : TRUE; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_bool) + +/* + * XDR enumerations + */ +bool_t +xdr_enum (XDR *xdrs, enum_t *ep) +{ + enum sizecheck + { + SIZEVAL + }; /* used to find the size of an enum */ + + /* + * enums are treated as ints + */ + if (sizeof (enum sizecheck) == 4) + { +#if INT_MAX < LONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = *ep; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *ep = l; + case XDR_FREE: + return TRUE; + + } + return FALSE; +#else + return INTUSE(xdr_long) (xdrs, (long *) ep); +#endif + } + else if (sizeof (enum sizecheck) == sizeof (short)) + { + return INTUSE(xdr_short) (xdrs, (short *) ep); + } + else + { + return FALSE; + } +} +INTDEF(xdr_enum) + +/* + * XDR opaque data + * Allows the specification of a fixed size sequence of opaque bytes. + * cp points to the opaque object and cnt gives the byte length. + */ +bool_t +xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) +{ + u_int rndup; + static char crud[BYTES_PER_XDR_UNIT]; + + /* + * if no data we are done + */ + if (cnt == 0) + return TRUE; + + /* + * round byte count to full xdr units + */ + rndup = cnt % BYTES_PER_XDR_UNIT; + if (rndup > 0) + rndup = BYTES_PER_XDR_UNIT - rndup; + + switch (xdrs->x_op) + { + case XDR_DECODE: + if (!XDR_GETBYTES (xdrs, cp, cnt)) + { + return FALSE; + } + if (rndup == 0) + return TRUE; + return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); + + case XDR_ENCODE: + if (!XDR_PUTBYTES (xdrs, cp, cnt)) + { + return FALSE; + } + if (rndup == 0) + return TRUE; + return XDR_PUTBYTES (xdrs, xdr_zero, rndup); + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_opaque) + +/* + * XDR counted bytes + * *cpp is a pointer to the bytes, *sizep is the count. + * If *cpp is NULL maxsize bytes are allocated + */ +bool_t +xdr_bytes (xdrs, cpp, sizep, maxsize) + XDR *xdrs; + char **cpp; + u_int *sizep; + u_int maxsize; +{ + char *sp = *cpp; /* sp is the actual string pointer */ + u_int nodesize; + + /* + * first deal with the length since xdr bytes are counted + */ + if (!INTUSE(xdr_u_int) (xdrs, sizep)) + { + return FALSE; + } + nodesize = *sizep; + if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) + { + return FALSE; + } + + /* + * now deal with the actual bytes + */ + switch (xdrs->x_op) + { + case XDR_DECODE: + if (nodesize == 0) + { + return TRUE; + } + if (sp == NULL) + { + *cpp = sp = (char *) mem_alloc (nodesize); + } + if (sp == NULL) + { + fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); + return FALSE; + } + /* fall into ... */ + + case XDR_ENCODE: + return INTUSE(xdr_opaque) (xdrs, sp, nodesize); + + case XDR_FREE: + if (sp != NULL) + { + mem_free (sp, nodesize); + *cpp = NULL; + } + return TRUE; + } + return FALSE; +} +INTDEF(xdr_bytes) + +/* + * Implemented here due to commonality of the object. + */ +bool_t +xdr_netobj (xdrs, np) + XDR *xdrs; + struct netobj *np; +{ + + return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); +} +INTDEF(xdr_netobj) + +/* + * XDR a discriminated union + * Support routine for discriminated unions. + * You create an array of xdrdiscrim structures, terminated with + * an entry with a null procedure pointer. The routine gets + * the discriminant value and then searches the array of xdrdiscrims + * looking for that value. It calls the procedure given in the xdrdiscrim + * to handle the discriminant. If there is no specific routine a default + * routine may be called. + * If there is no specific or default routine an error is returned. + */ +bool_t +xdr_union (xdrs, dscmp, unp, choices, dfault) + XDR *xdrs; + enum_t *dscmp; /* enum to decide which arm to work on */ + char *unp; /* the union itself */ + const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ + xdrproc_t dfault; /* default xdr routine */ +{ + enum_t dscm; + + /* + * we deal with the discriminator; it's an enum + */ + if (!INTUSE(xdr_enum) (xdrs, dscmp)) + { + return FALSE; + } + dscm = *dscmp; + + /* + * search choices for a value that matches the discriminator. + * if we find one, execute the xdr routine for that value. + */ + for (; choices->proc != NULL_xdrproc_t; choices++) + { + if (choices->value == dscm) + return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); + } + + /* + * no match - execute the default xdr routine if there is one + */ + return ((dfault == NULL_xdrproc_t) ? FALSE : + (*dfault) (xdrs, unp, LASTUNSIGNED)); +} +INTDEF(xdr_union) + + +/* + * Non-portable xdr primitives. + * Care should be taken when moving these routines to new architectures. + */ + + +/* + * XDR null terminated ASCII strings + * xdr_string deals with "C strings" - arrays of bytes that are + * terminated by a NULL character. The parameter cpp references a + * pointer to storage; If the pointer is null, then the necessary + * storage is allocated. The last parameter is the max allowed length + * of the string as specified by a protocol. + */ +bool_t +xdr_string (xdrs, cpp, maxsize) + XDR *xdrs; + char **cpp; + u_int maxsize; +{ + char *sp = *cpp; /* sp is the actual string pointer */ + u_int size; + u_int nodesize; + + /* + * first deal with the length since xdr strings are counted-strings + */ + switch (xdrs->x_op) + { + case XDR_FREE: + if (sp == NULL) + { + return TRUE; /* already free */ + } + /* fall through... */ + case XDR_ENCODE: + if (sp == NULL) + return FALSE; + size = strlen (sp); + break; + case XDR_DECODE: + break; + } + if (!INTUSE(xdr_u_int) (xdrs, &size)) + { + return FALSE; + } + if (size > maxsize) + { + return FALSE; + } + nodesize = size + 1; + if (nodesize == 0) + { + /* This means an overflow. It a bug in the caller which + provided a too large maxsize but nevertheless catch it + here. */ + return FALSE; + } + + /* + * now deal with the actual bytes + */ + switch (xdrs->x_op) + { + case XDR_DECODE: + if (sp == NULL) + *cpp = sp = (char *) mem_alloc (nodesize); + if (sp == NULL) + { + fprintf (NULL, "%s", "xdr_string: out of memory\n"); + return FALSE; + } + sp[size] = 0; + /* fall into ... */ + + case XDR_ENCODE: + return INTUSE(xdr_opaque) (xdrs, sp, size); + + case XDR_FREE: + mem_free (sp, nodesize); + *cpp = NULL; + return TRUE; + } + return FALSE; +} +INTDEF(xdr_string) + +/* + * Wrapper for xdr_string that can be called directly from + * routines like clnt_call + */ +bool_t +xdr_wrapstring (xdrs, cpp) + XDR *xdrs; + char **cpp; +{ + if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) + { + return TRUE; + } + return FALSE; +} diff --git a/source/lib/xdrf/xdr.h b/source/lib/xdrf/xdr.h new file mode 100644 index 0000000..2602ad9 --- /dev/null +++ b/source/lib/xdrf/xdr.h @@ -0,0 +1,379 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * xdr.h, External Data Representation Serialization Routines. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + */ + +#ifndef _RPC_XDR_H +#define _RPC_XDR_H 1 + +#include +#include +#include "types.h" + +/* We need FILE. */ +#include + +__BEGIN_DECLS + +/* + * XDR provides a conventional way for converting between C data + * types and an external bit-string representation. Library supplied + * routines provide for the conversion on built-in C data types. These + * routines and utility routines defined here are used to help implement + * a type encode/decode routine for each user-defined type. + * + * Each data type provides a single procedure which takes two arguments: + * + * bool_t + * xdrproc(xdrs, argresp) + * XDR *xdrs; + * *argresp; + * + * xdrs is an instance of a XDR handle, to which or from which the data + * type is to be converted. argresp is a pointer to the structure to be + * converted. The XDR handle contains an operation field which indicates + * which of the operations (ENCODE, DECODE * or FREE) is to be performed. + * + * XDR_DECODE may allocate space if the pointer argresp is null. This + * data can be freed with the XDR_FREE operation. + * + * We write only one procedure per data type to make it easy + * to keep the encode and decode procedures for a data type consistent. + * In many cases the same code performs all operations on a user defined type, + * because all the hard work is done in the component type routines. + * decode as a series of calls on the nested data types. + */ + +/* + * Xdr operations. XDR_ENCODE causes the type to be encoded into the + * stream. XDR_DECODE causes the type to be extracted from the stream. + * XDR_FREE can be used to release the space allocated by an XDR_DECODE + * request. + */ +enum xdr_op { + XDR_ENCODE = 0, + XDR_DECODE = 1, + XDR_FREE = 2 +}; + +/* + * This is the number of bytes per unit of external data. + */ +#define BYTES_PER_XDR_UNIT (4) +/* + * This only works if the above is a power of 2. But it's defined to be + * 4 by the appropriate RFCs. So it will work. And it's normally quicker + * than the old routine. + */ +#if 1 +#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) +#else /* this is the old routine */ +#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ + * BYTES_PER_XDR_UNIT) +#endif + +/* + * The XDR handle. + * Contains operation which is being applied to the stream, + * an operations vector for the particular implementation (e.g. see xdr_mem.c), + * and two private fields for the use of the particular implementation. + */ +typedef struct XDR XDR; +struct XDR + { + enum xdr_op x_op; /* operation; fast additional param */ + struct xdr_ops + { + bool_t (*x_getlong) (XDR *__xdrs, long *__lp); + /* get a long from underlying stream */ + bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); + /* put a long to " */ + bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); + /* get some bytes from " */ + bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); + /* put some bytes to " */ + u_int (*x_getpostn) (__const XDR *__xdrs); + /* returns bytes off from beginning */ + bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); + /* lets you reposition the stream */ + int32_t *(*x_inline) (XDR *__xdrs, u_int __len); + /* buf quick ptr to buffered data */ + void (*x_destroy) (XDR *__xdrs); + /* free privates of this xdr_stream */ + bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); + /* get a int from underlying stream */ + bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); + /* put a int to " */ + } + *x_ops; + caddr_t x_public; /* users' data */ + caddr_t x_private; /* pointer to private data */ + caddr_t x_base; /* private used for position info */ + u_int x_handy; /* extra private word */ + }; + +/* + * A xdrproc_t exists for each data type which is to be encoded or decoded. + * + * The second argument to the xdrproc_t is a pointer to an opaque pointer. + * The opaque pointer generally points to a structure of the data type + * to be decoded. If this pointer is 0, then the type routines should + * allocate dynamic storage of the appropriate size and return it. + * bool_t (*xdrproc_t)(XDR *, caddr_t *); + */ +typedef bool_t (*xdrproc_t) (XDR *, void *,...); + + +/* + * Operations defined on a XDR handle + * + * XDR *xdrs; + * int32_t *int32p; + * long *longp; + * caddr_t addr; + * u_int len; + * u_int pos; + */ +#define XDR_GETINT32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) +#define xdr_getint32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) + +#define XDR_PUTINT32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) +#define xdr_putint32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) + +#define XDR_GETLONG(xdrs, longp) \ + (*(xdrs)->x_ops->x_getlong)(xdrs, longp) +#define xdr_getlong(xdrs, longp) \ + (*(xdrs)->x_ops->x_getlong)(xdrs, longp) + +#define XDR_PUTLONG(xdrs, longp) \ + (*(xdrs)->x_ops->x_putlong)(xdrs, longp) +#define xdr_putlong(xdrs, longp) \ + (*(xdrs)->x_ops->x_putlong)(xdrs, longp) + +#define XDR_GETBYTES(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) +#define xdr_getbytes(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) + +#define XDR_PUTBYTES(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) +#define xdr_putbytes(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) + +#define XDR_GETPOS(xdrs) \ + (*(xdrs)->x_ops->x_getpostn)(xdrs) +#define xdr_getpos(xdrs) \ + (*(xdrs)->x_ops->x_getpostn)(xdrs) + +#define XDR_SETPOS(xdrs, pos) \ + (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) +#define xdr_setpos(xdrs, pos) \ + (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) + +#define XDR_INLINE(xdrs, len) \ + (*(xdrs)->x_ops->x_inline)(xdrs, len) +#define xdr_inline(xdrs, len) \ + (*(xdrs)->x_ops->x_inline)(xdrs, len) + +#define XDR_DESTROY(xdrs) \ + do { \ + if ((xdrs)->x_ops->x_destroy) \ + (*(xdrs)->x_ops->x_destroy)(xdrs); \ + } while (0) +#define xdr_destroy(xdrs) \ + do { \ + if ((xdrs)->x_ops->x_destroy) \ + (*(xdrs)->x_ops->x_destroy)(xdrs); \ + } while (0) + +/* + * Support struct for discriminated unions. + * You create an array of xdrdiscrim structures, terminated with + * a entry with a null procedure pointer. The xdr_union routine gets + * the discriminant value and then searches the array of structures + * for a matching value. If a match is found the associated xdr routine + * is called to handle that part of the union. If there is + * no match, then a default routine may be called. + * If there is no match and no default routine it is an error. + */ +#define NULL_xdrproc_t ((xdrproc_t)0) +struct xdr_discrim +{ + int value; + xdrproc_t proc; +}; + +/* + * Inline routines for fast encode/decode of primitive data types. + * Caveat emptor: these use single memory cycles to get the + * data from the underlying buffer, and will fail to operate + * properly if the data is not aligned. The standard way to use these + * is to say: + * if ((buf = XDR_INLINE(xdrs, count)) == NULL) + * return (FALSE); + * <<< macro calls >>> + * where ``count'' is the number of bytes of data occupied + * by the primitive data types. + * + * N.B. and frozen for all time: each data type here uses 4 bytes + * of external representation. + */ + +#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) +#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) +#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) +#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) + +/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms + * and shouldn't be used any longer. Code which use this defines or longs + * in the RPC code will not work on 64bit Solaris platforms ! + */ +#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) +#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) +#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) +#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) + + +#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) +#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) +#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) +#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) + +#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) + +/* + * These are the "generic" xdr routines. + * None of these can have const applied because it's not possible to + * know whether the call is a read or a write to the passed parameter + * also, the XDR structure is always updated by some of these calls. + */ +extern bool_t xdr_void (void) __THROW; +extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; +extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; +extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; +extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; +extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; +extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; +extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; +extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; +extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; +extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; +extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; +extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; +extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; +extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; +extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; +extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; +extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; +extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; +extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; +extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; +extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; +extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; +extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, + u_int __maxsize, u_int __elsize, xdrproc_t __elproc) + __THROW; +extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, + u_int __maxsize) __THROW; +extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; +extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; +extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, + __const struct xdr_discrim *__choices, + xdrproc_t dfault) __THROW; +extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; +extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; +extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, + u_int __elemsize, xdrproc_t __xdr_elem) __THROW; +extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; +extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; +extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, + xdrproc_t __proc) __THROW; +extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, + u_int __obj_size, xdrproc_t __xdr_obj) __THROW; +extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; +extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; + +/* + * Common opaque bytes objects used by many rpc protocols; + * declared here due to commonality. + */ +#define MAX_NETOBJ_SZ 1024 +struct netobj +{ + u_int n_len; + char *n_bytes; +}; +typedef struct netobj netobj; +extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; + +/* + * These are the public routines for the various implementations of + * xdr streams. + */ + +/* XDR using memory buffers */ +extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, + u_int __size, enum xdr_op __xop) __THROW; + +/* XDR using stdio library */ +extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) + __THROW; + +/* XDR pseudo records for tcp */ +extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, + u_int __recvsize, caddr_t __tcp_handle, + int (*__readit) (char *, char *, int), + int (*__writeit) (char *, char *, int)) __THROW; + +/* make end of xdr record */ +extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; + +/* move to beginning of next record */ +extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; + +/* true if no more input */ +extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; + +/* free memory buffers for xdr */ +extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; + +__END_DECLS + +#endif /* rpc/xdr.h */ diff --git a/source/lib/xdrf/xdr_array.c b/source/lib/xdrf/xdr_array.c new file mode 100644 index 0000000..836405c --- /dev/null +++ b/source/lib/xdrf/xdr_array.c @@ -0,0 +1,174 @@ +# define INTUSE(name) name +# define INTDEF(name) +/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; +#endif + +/* + * xdr_array.c, Generic XDR routines implementation. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * These are the "non-trivial" xdr primitives used to serialize and de-serialize + * arrays. See xdr.h for more info on the interface to xdr. + */ + +#include +#include +#include "types.h" +#include "xdr.h" +#include +#include + +#ifdef USE_IN_LIBIO +# include +#endif + +#define LASTUNSIGNED ((u_int)0-1) + + +/* + * XDR an array of arbitrary elements + * *addrp is a pointer to the array, *sizep is the number of elements. + * If addrp is NULL (*sizep * elsize) bytes are allocated. + * elsize is the size (in bytes) of each element, and elproc is the + * xdr procedure to call to handle each element of the array. + */ +bool_t +xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) + XDR *xdrs; + caddr_t *addrp; /* array pointer */ + u_int *sizep; /* number of elements */ + u_int maxsize; /* max numberof elements */ + u_int elsize; /* size in bytes of each element */ + xdrproc_t elproc; /* xdr routine to handle each element */ +{ + u_int i; + caddr_t target = *addrp; + u_int c; /* the actual element count */ + bool_t stat = TRUE; + u_int nodesize; + + /* like strings, arrays are really counted arrays */ + if (!INTUSE(xdr_u_int) (xdrs, sizep)) + { + return FALSE; + } + c = *sizep; + /* + * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() + * doesn't actually use its second argument anyway. + */ + if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) + { + return FALSE; + } + nodesize = c * elsize; + + /* + * if we are deserializing, we may need to allocate an array. + * We also save time by checking for a null array if we are freeing. + */ + if (target == NULL) + switch (xdrs->x_op) + { + case XDR_DECODE: + if (c == 0) + return TRUE; + *addrp = target = mem_alloc (nodesize); + if (target == NULL) + { + fprintf (stderr, "%s", "xdr_array: out of memory\n"); + return FALSE; + } + __bzero (target, nodesize); + break; + + case XDR_FREE: + return TRUE; + default: + break; + } + + /* + * now we xdr each element of array + */ + for (i = 0; (i < c) && stat; i++) + { + stat = (*elproc) (xdrs, target, LASTUNSIGNED); + target += elsize; + } + + /* + * the array may need freeing + */ + if (xdrs->x_op == XDR_FREE) + { + mem_free (*addrp, nodesize); + *addrp = NULL; + } + return stat; +} +INTDEF(xdr_array) + +/* + * xdr_vector(): + * + * XDR a fixed length array. Unlike variable-length arrays, + * the storage of fixed length arrays is static and unfreeable. + * > basep: base of the array + * > size: size of the array + * > elemsize: size of each element + * > xdr_elem: routine to XDR each element + */ +bool_t +xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) + XDR *xdrs; + char *basep; + u_int nelem; + u_int elemsize; + xdrproc_t xdr_elem; +{ + u_int i; + char *elptr; + + elptr = basep; + for (i = 0; i < nelem; i++) + { + if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) + { + return FALSE; + } + elptr += elemsize; + } + return TRUE; +} diff --git a/source/lib/xdrf/xdr_float.c b/source/lib/xdrf/xdr_float.c new file mode 100644 index 0000000..15d3c88 --- /dev/null +++ b/source/lib/xdrf/xdr_float.c @@ -0,0 +1,307 @@ +/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; +#endif + +/* + * xdr_float.c, Generic XDR routines implementation. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * These are the "floating point" xdr routines used to (de)serialize + * most common data items. See xdr.h for more info on the interface to + * xdr. + */ + +#include +#include + +#include "types.h" +#include "xdr.h" + +/* + * NB: Not portable. + * This routine works on Suns (Sky / 68000's) and Vaxen. + */ + +#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) + +#ifdef vax + +/* What IEEE single precision floating point looks like on a Vax */ +struct ieee_single { + unsigned int mantissa: 23; + unsigned int exp : 8; + unsigned int sign : 1; +}; + +/* Vax single precision floating point */ +struct vax_single { + unsigned int mantissa1 : 7; + unsigned int exp : 8; + unsigned int sign : 1; + unsigned int mantissa2 : 16; +}; + +#define VAX_SNG_BIAS 0x81 +#define IEEE_SNG_BIAS 0x7f + +static struct sgl_limits { + struct vax_single s; + struct ieee_single ieee; +} sgl_limits[2] = { + {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ + { 0x0, 0xff, 0x0 }}, /* Max IEEE */ + {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ + { 0x0, 0x0, 0x0 }} /* Min IEEE */ +}; +#endif /* vax */ + +bool_t +xdr_float(xdrs, fp) + XDR *xdrs; + float *fp; +{ +#ifdef vax + struct ieee_single is; + struct vax_single vs, *vsp; + struct sgl_limits *lim; + int i; +#endif + switch (xdrs->x_op) { + + case XDR_ENCODE: +#ifdef vax + vs = *((struct vax_single *)fp); + for (i = 0, lim = sgl_limits; + i < sizeof(sgl_limits)/sizeof(struct sgl_limits); + i++, lim++) { + if ((vs.mantissa2 == lim->s.mantissa2) && + (vs.exp == lim->s.exp) && + (vs.mantissa1 == lim->s.mantissa1)) { + is = lim->ieee; + goto shipit; + } + } + is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; + is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; + shipit: + is.sign = vs.sign; + return (XDR_PUTLONG(xdrs, (long *)&is)); +#else + if (sizeof(float) == sizeof(long)) + return (XDR_PUTLONG(xdrs, (long *)fp)); + else if (sizeof(float) == sizeof(int)) { + long tmp = *(int *)fp; + return (XDR_PUTLONG(xdrs, &tmp)); + } + break; +#endif + + case XDR_DECODE: +#ifdef vax + vsp = (struct vax_single *)fp; + if (!XDR_GETLONG(xdrs, (long *)&is)) + return (FALSE); + for (i = 0, lim = sgl_limits; + i < sizeof(sgl_limits)/sizeof(struct sgl_limits); + i++, lim++) { + if ((is.exp == lim->ieee.exp) && + (is.mantissa == lim->ieee.mantissa)) { + *vsp = lim->s; + goto doneit; + } + } + vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; + vsp->mantissa2 = is.mantissa; + vsp->mantissa1 = (is.mantissa >> 16); + doneit: + vsp->sign = is.sign; + return (TRUE); +#else + if (sizeof(float) == sizeof(long)) + return (XDR_GETLONG(xdrs, (long *)fp)); + else if (sizeof(float) == sizeof(int)) { + long tmp; + if (XDR_GETLONG(xdrs, &tmp)) { + *(int *)fp = tmp; + return (TRUE); + } + } + break; +#endif + + case XDR_FREE: + return (TRUE); + } + return (FALSE); +} + +/* + * This routine works on Suns (Sky / 68000's) and Vaxen. + */ + +#ifdef vax +/* What IEEE double precision floating point looks like on a Vax */ +struct ieee_double { + unsigned int mantissa1 : 20; + unsigned int exp : 11; + unsigned int sign : 1; + unsigned int mantissa2 : 32; +}; + +/* Vax double precision floating point */ +struct vax_double { + unsigned int mantissa1 : 7; + unsigned int exp : 8; + unsigned int sign : 1; + unsigned int mantissa2 : 16; + unsigned int mantissa3 : 16; + unsigned int mantissa4 : 16; +}; + +#define VAX_DBL_BIAS 0x81 +#define IEEE_DBL_BIAS 0x3ff +#define MASK(nbits) ((1 << nbits) - 1) + +static struct dbl_limits { + struct vax_double d; + struct ieee_double ieee; +} dbl_limits[2] = { + {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ + { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ + {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ + { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ +}; + +#endif /* vax */ + + +bool_t +xdr_double(xdrs, dp) + XDR *xdrs; + double *dp; +{ +#ifdef vax + struct ieee_double id; + struct vax_double vd; + register struct dbl_limits *lim; + int i; +#endif + + switch (xdrs->x_op) { + + case XDR_ENCODE: +#ifdef vax + vd = *((struct vax_double *)dp); + for (i = 0, lim = dbl_limits; + i < sizeof(dbl_limits)/sizeof(struct dbl_limits); + i++, lim++) { + if ((vd.mantissa4 == lim->d.mantissa4) && + (vd.mantissa3 == lim->d.mantissa3) && + (vd.mantissa2 == lim->d.mantissa2) && + (vd.mantissa1 == lim->d.mantissa1) && + (vd.exp == lim->d.exp)) { + id = lim->ieee; + goto shipit; + } + } + id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; + id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); + id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | + (vd.mantissa3 << 13) | + ((vd.mantissa4 >> 3) & MASK(13)); + shipit: + id.sign = vd.sign; + dp = (double *)&id; +#endif + if (2*sizeof(long) == sizeof(double)) { + long *lp = (long *)dp; + return (XDR_PUTLONG(xdrs, lp+!LSW) && + XDR_PUTLONG(xdrs, lp+LSW)); + } else if (2*sizeof(int) == sizeof(double)) { + int *ip = (int *)dp; + long tmp[2]; + tmp[0] = ip[!LSW]; + tmp[1] = ip[LSW]; + return (XDR_PUTLONG(xdrs, tmp) && + XDR_PUTLONG(xdrs, tmp+1)); + } + break; + + case XDR_DECODE: +#ifdef vax + lp = (long *)&id; + if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) + return (FALSE); + for (i = 0, lim = dbl_limits; + i < sizeof(dbl_limits)/sizeof(struct dbl_limits); + i++, lim++) { + if ((id.mantissa2 == lim->ieee.mantissa2) && + (id.mantissa1 == lim->ieee.mantissa1) && + (id.exp == lim->ieee.exp)) { + vd = lim->d; + goto doneit; + } + } + vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; + vd.mantissa1 = (id.mantissa1 >> 13); + vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | + (id.mantissa2 >> 29); + vd.mantissa3 = (id.mantissa2 >> 13); + vd.mantissa4 = (id.mantissa2 << 3); + doneit: + vd.sign = id.sign; + *dp = *((double *)&vd); + return (TRUE); +#else + if (2*sizeof(long) == sizeof(double)) { + long *lp = (long *)dp; + return (XDR_GETLONG(xdrs, lp+!LSW) && + XDR_GETLONG(xdrs, lp+LSW)); + } else if (2*sizeof(int) == sizeof(double)) { + int *ip = (int *)dp; + long tmp[2]; + if (XDR_GETLONG(xdrs, tmp+!LSW) && + XDR_GETLONG(xdrs, tmp+LSW)) { + ip[0] = tmp[0]; + ip[1] = tmp[1]; + return (TRUE); + } + } + break; +#endif + + case XDR_FREE: + return (TRUE); + } + return (FALSE); +} diff --git a/source/lib/xdrf/xdr_stdio.c b/source/lib/xdrf/xdr_stdio.c new file mode 100644 index 0000000..12b1709 --- /dev/null +++ b/source/lib/xdrf/xdr_stdio.c @@ -0,0 +1,196 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * xdr_stdio.c, XDR implementation on standard i/o file. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * This set of routines implements a XDR on a stdio stream. + * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes + * from the stream. + */ + +#include "types.h" +#include +#include "xdr.h" + +#ifdef USE_IN_LIBIO +# include +# define fflush(s) INTUSE(_IO_fflush) (s) +# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) +# define ftell(s) INTUSE(_IO_ftell) (s) +# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) +#endif + +static bool_t xdrstdio_getlong (XDR *, long *); +static bool_t xdrstdio_putlong (XDR *, const long *); +static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); +static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); +static u_int xdrstdio_getpos (const XDR *); +static bool_t xdrstdio_setpos (XDR *, u_int); +static int32_t *xdrstdio_inline (XDR *, u_int); +static void xdrstdio_destroy (XDR *); +static bool_t xdrstdio_getint32 (XDR *, int32_t *); +static bool_t xdrstdio_putint32 (XDR *, const int32_t *); + +/* + * Ops vector for stdio type XDR + */ +static const struct xdr_ops xdrstdio_ops = +{ + xdrstdio_getlong, /* deserialize a long int */ + xdrstdio_putlong, /* serialize a long int */ + xdrstdio_getbytes, /* deserialize counted bytes */ + xdrstdio_putbytes, /* serialize counted bytes */ + xdrstdio_getpos, /* get offset in the stream */ + xdrstdio_setpos, /* set offset in the stream */ + xdrstdio_inline, /* prime stream for inline macros */ + xdrstdio_destroy, /* destroy stream */ + xdrstdio_getint32, /* deserialize a int */ + xdrstdio_putint32 /* serialize a int */ +}; + +/* + * Initialize a stdio xdr stream. + * Sets the xdr stream handle xdrs for use on the stream file. + * Operation flag is set to op. + */ +void +xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) +{ + xdrs->x_op = op; + /* We have to add the const since the `struct xdr_ops' in `struct XDR' + is not `const'. */ + xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; + xdrs->x_private = (caddr_t) file; + xdrs->x_handy = 0; + xdrs->x_base = 0; +} + +/* + * Destroy a stdio xdr stream. + * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. + */ +static void +xdrstdio_destroy (XDR *xdrs) +{ + (void) fflush ((FILE *) xdrs->x_private); + /* xx should we close the file ?? */ +}; + +static bool_t +xdrstdio_getlong (XDR *xdrs, long *lp) +{ + u_int32_t mycopy; + + if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + *lp = (long) ntohl (mycopy); + return TRUE; +} + +static bool_t +xdrstdio_putlong (XDR *xdrs, const long *lp) +{ + int32_t mycopy = htonl ((u_int32_t) *lp); + + if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + return TRUE; +} + +static bool_t +xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) +{ + if ((len != 0) && (fread (addr, (int) len, 1, + (FILE *) xdrs->x_private) != 1)) + return FALSE; + return TRUE; +} + +static bool_t +xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) +{ + if ((len != 0) && (fwrite (addr, (int) len, 1, + (FILE *) xdrs->x_private) != 1)) + return FALSE; + return TRUE; +} + +static u_int +xdrstdio_getpos (const XDR *xdrs) +{ + return (u_int) ftell ((FILE *) xdrs->x_private); +} + +static bool_t +xdrstdio_setpos (XDR *xdrs, u_int pos) +{ + return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; +} + +static int32_t * +xdrstdio_inline (XDR *xdrs, u_int len) +{ + /* + * Must do some work to implement this: must insure + * enough data in the underlying stdio buffer, + * that the buffer is aligned so that we can indirect through a + * long *, and stuff this pointer in xdrs->x_buf. Doing + * a fread or fwrite to a scratch buffer would defeat + * most of the gains to be had here and require storage + * management on this buffer, so we don't do this. + */ + return NULL; +} + +static bool_t +xdrstdio_getint32 (XDR *xdrs, int32_t *ip) +{ + int32_t mycopy; + + if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + *ip = ntohl (mycopy); + return TRUE; +} + +static bool_t +xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) +{ + int32_t mycopy = htonl (*ip); + + ip = &mycopy; + if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + return TRUE; +} + +/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/lib/xdrf/xdrf.h b/source/lib/xdrf/xdrf.h new file mode 100644 index 0000000..dedf5a2 --- /dev/null +++ b/source/lib/xdrf/xdrf.h @@ -0,0 +1,10 @@ +/*_________________________________________________________________ + | + | xdrf.h - include file for C routines that want to use the + | functions below. +*/ + +int xdropen(XDR *xdrs, const char *filename, const char *type); +int xdrclose(XDR *xdrs) ; +int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; + diff --git a/source/lib/xdrf_em64/Makefile b/source/lib/xdrf_em64/Makefile new file mode 100644 index 0000000..f03276e --- /dev/null +++ b/source/lib/xdrf_em64/Makefile @@ -0,0 +1,27 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +CC = cc +CFLAGS = -O + +M4 = m4 +M4FILE = underscore.m4 + +libxdrf.a: libxdrf.o ftocstr.o + ar cr libxdrf.a $? + +clean: + rm -f libxdrf.o ftocstr.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c + rm -f libxdrf.c + diff --git a/source/lib/xdrf_em64/Makefile_jubl b/source/lib/xdrf_em64/Makefile_jubl new file mode 100644 index 0000000..8dc35cf --- /dev/null +++ b/source/lib/xdrf_em64/Makefile_jubl @@ -0,0 +1,31 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +BGLSYS = /bgl/BlueLight/ppcfloor/bglsys + +CC = /usr/bin/blrts_xlc +CPPC = /usr/bin/blrts_xlc + +CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 + +M4 = m4 +M4FILE = RS6K.m4 + +libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o + ar cr libxdrf.a $? + +clean: + rm -f *.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c +# rm -f libxdrf.c + diff --git a/source/lib/xdrf_em64/Makefile_linux b/source/lib/xdrf_em64/Makefile_linux new file mode 100644 index 0000000..f03276e --- /dev/null +++ b/source/lib/xdrf_em64/Makefile_linux @@ -0,0 +1,27 @@ +# This make file is part of the xdrf package. +# +# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl +# +# 2006 modified by Cezary Czaplewski + +# Set C compiler and flags for ARCH +CC = cc +CFLAGS = -O + +M4 = m4 +M4FILE = underscore.m4 + +libxdrf.a: libxdrf.o ftocstr.o + ar cr libxdrf.a $? + +clean: + rm -f libxdrf.o ftocstr.o libxdrf.a + +ftocstr.o: ftocstr.c + $(CC) $(CFLAGS) -c ftocstr.c + +libxdrf.o: libxdrf.m4 $(M4FILE) + $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c + $(CC) $(CFLAGS) -c libxdrf.c + rm -f libxdrf.c + diff --git a/source/lib/xdrf_em64/RS6K.m4 b/source/lib/xdrf_em64/RS6K.m4 new file mode 100644 index 0000000..0331d97 --- /dev/null +++ b/source/lib/xdrf_em64/RS6K.m4 @@ -0,0 +1,20 @@ +divert(-1) +undefine(`len') +# +# do nothing special to FORTRAN function names +# +define(`FUNCTION',`$1') +# +# FORTRAN character strings are passed as follows: +# a pointer to the base of the string is passed in the normal +# argument list, and the length is passed by value as an extra +# argument, after all of the other arguments. +# +define(`ARGS',`($1`'undivert(1))') +define(`SAVE',`divert(1)$1`'divert(0)') +define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') +define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') +define(`STRING_LEN',`$1_len') +define(`STRING_PTR',`$1_ptr') +divert(0) + diff --git a/source/lib/xdrf_em64/ftocstr.c b/source/lib/xdrf_em64/ftocstr.c new file mode 100644 index 0000000..ed2113f --- /dev/null +++ b/source/lib/xdrf_em64/ftocstr.c @@ -0,0 +1,35 @@ + + +int ftocstr(ds, dl, ss, sl) + char *ds, *ss; /* dst, src ptrs */ + int dl; /* dst max len */ + int sl; /* src len */ +{ + char *p; + + for (p = ss + sl; --p >= ss && *p == ' '; ) ; + sl = p - ss + 1; + dl--; + ds[0] = 0; + if (sl > dl) + return 1; + while (sl--) + (*ds++ = *ss++); + *ds = '\0'; + return 0; +} + + +int ctofstr(ds, dl, ss) + char *ds; /* dest space */ + int dl; /* max dest length */ + char *ss; /* src string (0-term) */ +{ + while (dl && *ss) { + *ds++ = *ss++; + dl--; + } + while (dl--) + *ds++ = ' '; + return 0; +} diff --git a/source/lib/xdrf_em64/libxdrf.m4 b/source/lib/xdrf_em64/libxdrf.m4 new file mode 100644 index 0000000..a6da458 --- /dev/null +++ b/source/lib/xdrf_em64/libxdrf.m4 @@ -0,0 +1,1238 @@ +/*____________________________________________________________________________ + | + | libxdrf - portable fortran interface to xdr. some xdr routines + | are C routines for compressed coordinates + | + | version 1.1 + | + | This collection of routines is intended to write and read + | data in a portable way to a file, so data written on one type + | of machine can be read back on a different type. + | + | all fortran routines use an integer 'xdrid', which is an id to the + | current xdr file, and is set by xdrfopen. + | most routines have in integer 'ret' which is the return value. + | The value of 'ret' is zero on failure, and most of the time one + | on succes. + | + | There are three routines useful for C users: + | xdropen(), xdrclose(), xdr3dfcoord(). + | The first two replace xdrstdio_create and xdr_destroy, and *must* be + | used when you plan to use xdr3dfcoord(). (they are also a bit + | easier to interface). For writing data other than compressed coordinates + | you should use the standard C xdr routines (see xdr man page) + | + | xdrfopen(xdrid, filename, mode, ret) + | character *(*) filename + | character *(*) mode + | + | this will open the file with the given filename (string) + | and the given mode, it returns an id in xdrid, which is + | to be used in all other calls to xdrf routines. + | mode is 'w' to create, or update an file, for all other + | values of mode the file is opened for reading + | + | you need to call xdrfclose to flush the output and close + | the file. + | Note that you should not use xdrstdio_create, which comes with the + | standard xdr library + | + | xdrfclose(xdrid, ret) + | flush the data to the file, and closes the file; + | You should not use xdr_destroy (which comes standard with + | the xdr libraries. + | + | xdrfbool(xdrid, bp, ret) + | integer pb + | + | This filter produces values of either 1 or 0 + | + | xdrfchar(xdrid, cp, ret) + | character cp + | + | filter that translate between characters and their xdr representation + | Note that the characters in not compressed and occupies 4 bytes. + | + | xdrfdouble(xdrid, dp, ret) + | double dp + | + | read/write a double. + | + | xdrffloat(xdrid, fp, ret) + | float fp + | + | read/write a float. + | + | xdrfint(xdrid, ip, ret) + | integer ip + | + | read/write integer. + | + | xdrflong(xdrid, lp, ret) + | integer lp + | + | this routine has a possible portablility problem due to 64 bits longs. + | + | xdrfshort(xdrid, sp, ret) + | integer *2 sp + | + | xdrfstring(xdrid, sp, maxsize, ret) + | character *(*) + | integer maxsize + | + | read/write a string, with maximum length given by maxsize + | + | xdrfwrapstring(xdris, sp, ret) + | character *(*) + | + | read/write a string (it is the same as xdrfstring accept that it finds + | the stringlength itself. + | + | xdrfvector(xdrid, cp, size, xdrfproc, ret) + | character *(*) + | integer size + | external xdrfproc + | + | read/write an array pointed to by cp, with number of elements + | defined by 'size'. the routine 'xdrfproc' is the name + | of one of the above routines to read/write data (like xdrfdouble) + | In contrast with the c-version you don't need to specify the + | byte size of an element. + | xdrfstring is not allowed here (it is in the c version) + | + | xdrf3dfcoord(xdrid, fp, size, precision, ret) + | real (*) fp + | real precision + | integer size + | + | this is *NOT* a standard xdr routine. I named it this way, because + | it invites people to use the other xdr routines. + | It is introduced to store specifically 3d coordinates of molecules + | (as found in molecular dynamics) and it writes it in a compressed way. + | It starts by multiplying all numbers by precision and + | rounding the result to integer. effectively converting + | all floating point numbers to fixed point. + | it uses an algorithm for compression that is optimized for + | molecular data, but could be used for other 3d coordinates + | as well. There is subtantial overhead involved, so call this + | routine only if you have a large number of coordinates to read/write + | + | ________________________________________________________________________ + | + | Below are the routines to be used by C programmers. Use the 'normal' + | xdr routines to write integers, floats, etc (see man xdr) + | + | int xdropen(XDR *xdrs, const char *filename, const char *type) + | This will open the file with the given filename and the + | given mode. You should pass it an allocated XDR struct + | in xdrs, to be used in all other calls to xdr routines. + | Mode is 'w' to create, or update an file, and for all + | other values of mode the file is opened for reading. + | You need to call xdrclose to flush the output and close + | the file. + | + | Note that you should not use xdrstdio_create, which + | comes with the standard xdr library. + | + | int xdrclose(XDR *xdrs) + | Flush the data to the file, and close the file; + | You should not use xdr_destroy (which comes standard + | with the xdr libraries). + | + | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) + | This is \fInot\fR a standard xdr routine. I named it this + | way, because it invites people to use the other xdr + | routines. + | + | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl +*/ + + +#include +#include +#include +/* #include +#include */ +#include "xdr.h" +#include +#include +#include "xdrf.h" + +int ftocstr(char *, int, char *, int); +int ctofstr(char *, int, char *); + +#define MAXID 20 +static FILE *xdrfiles[MAXID]; +static XDR *xdridptr[MAXID]; +static char xdrmodes[MAXID]; +static unsigned int cnt; + +typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); + +void +FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') +int *xdrid, *ret; +int *pb; +{ + *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); + cnt += sizeof(int); +} + +void +FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') +int *xdrid, *ret; +char *cp; +{ + *ret = xdr_char(xdridptr[*xdrid], cp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') +int *xdrid, *ret; +double *dp; +{ + *ret = xdr_double(xdridptr[*xdrid], dp); + cnt += sizeof(double); +} + +void +FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') +int *xdrid, *ret; +float *fp; +{ + *ret = xdr_float(xdridptr[*xdrid], fp); + cnt += sizeof(float); +} + +void +FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') +int *xdrid, *ret; +int *ip; +{ + *ret = xdr_int(xdridptr[*xdrid], ip); + cnt += sizeof(int); +} + +void +FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') +int *xdrid, *ret; +long *lp; +{ + *ret = xdr_long(xdridptr[*xdrid], lp); + cnt += sizeof(long); +} + +void +FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') +int *xdrid, *ret; +short *sp; +{ + *ret = xdr_short(xdridptr[*xdrid], sp); + cnt += sizeof(sp); +} + +void +FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') +int *xdrid, *ret; +char *ucp; +{ + *ret = xdr_u_char(xdridptr[*xdrid], ucp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') +int *xdrid, *ret; +unsigned long *ulp; +{ + *ret = xdr_u_long(xdridptr[*xdrid], ulp); + cnt += sizeof(unsigned long); +} + +void +FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') +int *xdrid, *ret; +unsigned short *usp; +{ + *ret = xdr_u_short(xdridptr[*xdrid], usp); + cnt += sizeof(unsigned short); +} + +void +FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') +int *xdrid, *ret; +float *fp; +int *size; +float *precision; +{ + *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); +} + +void +FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +int *maxsize; +{ + char *tsp; + + tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += *maxsize; + free(tsp); +} + +void +FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +{ + char *tsp; + int maxsize; + maxsize = (STRING_LEN(sp)) + 1; + tsp = (char*) malloc(maxsize * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += maxsize; + free(tsp); +} + +void +FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') +int *xdrid, *ret; +caddr_t *cp; +int *ccnt; +{ + *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); + cnt += *ccnt; +} + +void +FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') +int *xdrid, *ret; +int *pos; +{ + *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); +} + +void +FUNCTION(xdrf) ARGS(`xdrid, pos') +int *xdrid, *pos; +{ + *pos = xdr_getpos(xdridptr[*xdrid]); +} + +void +FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') +int *xdrid, *ret; +char *cp; +int *size; +FUNCTION(xdrfproc) elproc; +{ + int lcnt; + cnt = 0; + for (lcnt = 0; lcnt < *size; lcnt++) { + elproc(xdrid, (cp+cnt) , ret); + } +} + + +void +FUNCTION(xdrfclose) ARGS(`xdrid, ret') +int *xdrid; +int *ret; +{ + *ret = xdrclose(xdridptr[*xdrid]); + cnt = 0; +} + +void +FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') +int *xdrid; +STRING_ARG_DECL(fp); +STRING_ARG_DECL(mode); +int *ret; +{ + char fname[512]; + char fmode[3]; + + if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { + *ret = 0; + } + if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), + STRING_LEN(mode))) { + *ret = 0; + } + + *xdrid = xdropen(NULL, fname, fmode); + if (*xdrid == 0) + *ret = 0; + else + *ret = 1; +} + +/*___________________________________________________________________________ + | + | what follows are the C routines for opening, closing xdr streams + | and the routine to read/write compressed coordinates together + | with some routines to assist in this task (those are marked + | static and cannot be called from user programs) +*/ +#define MAXABS INT_MAX-2 + +#ifndef MIN +#define MIN(x,y) ((x) < (y) ? (x):(y)) +#endif +#ifndef MAX +#define MAX(x,y) ((x) > (y) ? (x):(y)) +#endif +#ifndef SQR +#define SQR(x) ((x)*(x)) +#endif +static int magicints[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, + 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, + 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, + 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, + 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, + 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, + 8388607, 10568983, 13316085, 16777216 }; + +#define FIRSTIDX 9 +/* note that magicints[FIRSTIDX-1] == 0 */ +#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) + + +/*__________________________________________________________________________ + | + | xdropen - open xdr file + | + | This versions differs from xdrstdio_create, because I need to know + | the state of the file (read or write) so I can use xdr3dfcoord + | in eigther read or write mode, and the file descriptor + | so I can close the file (something xdr_destroy doesn't do). + | +*/ + +int xdropen(XDR *xdrs, const char *filename, const char *type) { + static int init_done = 0; + enum xdr_op lmode; + const char *type1; + int xdrid; + + if (init_done == 0) { + for (xdrid = 1; xdrid < MAXID; xdrid++) { + xdridptr[xdrid] = NULL; + } + init_done = 1; + } + xdrid = 1; + while (xdrid < MAXID && xdridptr[xdrid] != NULL) { + xdrid++; + } + if (xdrid == MAXID) { + return 0; + } + if (*type == 'w' || *type == 'W') { + type = "w+"; + type1 = "w+"; + lmode = XDR_ENCODE; + } else if (*type == 'a' || *type == 'A') { + type = "w+"; + type1 = "a+"; + lmode = XDR_ENCODE; + } else { + type = "r"; + type1 = "r"; + lmode = XDR_DECODE; + } + xdrfiles[xdrid] = fopen(filename, type1); + if (xdrfiles[xdrid] == NULL) { + xdrs = NULL; + return 0; + } + xdrmodes[xdrid] = *type; + /* next test isn't usefull in the case of C language + * but is used for the Fortran interface + * (C users are expected to pass the address of an already allocated + * XDR staructure) + */ + if (xdrs == NULL) { + xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); + xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); + } else { + xdridptr[xdrid] = xdrs; + xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); + } + return xdrid; +} + +/*_________________________________________________________________________ + | + | xdrclose - close a xdr file + | + | This will flush the xdr buffers, and destroy the xdr stream. + | It also closes the associated file descriptor (this is *not* + | done by xdr_destroy). + | +*/ + +int xdrclose(XDR *xdrs) { + int xdrid; + + if (xdrs == NULL) { + fprintf(stderr, "xdrclose: passed a NULL pointer\n"); + exit(1); + } + for (xdrid = 1; xdrid < MAXID; xdrid++) { + if (xdridptr[xdrid] == xdrs) { + + xdr_destroy(xdrs); + fclose(xdrfiles[xdrid]); + xdridptr[xdrid] = NULL; + return 1; + } + } + fprintf(stderr, "xdrclose: no such open xdr file\n"); + exit(1); + +} + +/*____________________________________________________________________________ + | + | sendbits - encode num into buf using the specified number of bits + | + | This routines appends the value of num to the bits already present in + | the array buf. You need to give it the number of bits to use and you + | better make sure that this number of bits is enough to hold the value + | Also num must be positive. + | +*/ + +static void sendbits(int buf[], int num_of_bits, int num) { + + unsigned int cnt, lastbyte; + int lastbits; + unsigned char * cbuf; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = (unsigned int) buf[0]; + lastbits = buf[1]; + lastbyte =(unsigned int) buf[2]; + while (num_of_bits >= 8) { + lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); + cbuf[cnt++] = lastbyte >> lastbits; + num_of_bits -= 8; + } + if (num_of_bits > 0) { + lastbyte = (lastbyte << num_of_bits) | num; + lastbits += num_of_bits; + if (lastbits >= 8) { + lastbits -= 8; + cbuf[cnt++] = lastbyte >> lastbits; + } + } + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + if (lastbits>0) { + cbuf[cnt] = lastbyte << (8 - lastbits); + } +} + +/*_________________________________________________________________________ + | + | sizeofint - calculate bitsize of an integer + | + | return the number of bits needed to store an integer with given max size + | +*/ + +static int sizeofint(const int size) { + unsigned int num = 1; + int num_of_bits = 0; + + while (size >= num && num_of_bits < 32) { + num_of_bits++; + num <<= 1; + } + return num_of_bits; +} + +/*___________________________________________________________________________ + | + | sizeofints - calculate 'bitsize' of compressed ints + | + | given the number of small unsigned integers and the maximum value + | return the number of bits needed to read or write them with the + | routines receiveints and sendints. You need this parameter when + | calling these routines. Note that for many calls I can use + | the variable 'smallidx' which is exactly the number of bits, and + | So I don't need to call 'sizeofints for those calls. +*/ + +static int sizeofints( const int num_of_ints, unsigned int sizes[]) { + int i, num; + unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; + num_of_bytes = 1; + bytes[0] = 1; + num_of_bits = 0; + for (i=0; i < num_of_ints; i++) { + tmp = 0; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + num = 1; + num_of_bytes--; + while (bytes[num_of_bytes] >= num) { + num_of_bits++; + num *= 2; + } + return num_of_bits + num_of_bytes * 8; + +} + +/*____________________________________________________________________________ + | + | sendints - send a small set of small integers in compressed format + | + | this routine is used internally by xdr3dfcoord, to send a set of + | small integers to the buffer. + | Multiplication with fixed (specified maximum ) sizes is used to get + | to one big, multibyte integer. Allthough the routine could be + | modified to handle sizes bigger than 16777216, or more than just + | a few integers, this is not done, because the gain in compression + | isn't worth the effort. Note that overflowing the multiplication + | or the byte buffer (32 bytes) is unchecked and causes bad results. + | + */ + +static void sendints(int buf[], const int num_of_ints, const int num_of_bits, + unsigned int sizes[], unsigned int nums[]) { + + int i; + unsigned int bytes[32], num_of_bytes, bytecnt, tmp; + + tmp = nums[0]; + num_of_bytes = 0; + do { + bytes[num_of_bytes++] = tmp & 0xff; + tmp >>= 8; + } while (tmp != 0); + + for (i = 1; i < num_of_ints; i++) { + if (nums[i] >= sizes[i]) { + fprintf(stderr,"major breakdown in sendints num %d doesn't " + "match size %d\n", nums[i], sizes[i]); + exit(1); + } + /* use one step multiply */ + tmp = nums[i]; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + if (num_of_bits >= num_of_bytes * 8) { + for (i = 0; i < num_of_bytes; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits - num_of_bytes * 8, 0); + } else { + for (i = 0; i < num_of_bytes-1; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); + } +} + + +/*___________________________________________________________________________ + | + | receivebits - decode number from buf using specified number of bits + | + | extract the number of bits from the array buf and construct an integer + | from it. Return that value. + | +*/ + +static int receivebits(int buf[], int num_of_bits) { + + int cnt, num; + unsigned int lastbits, lastbyte; + unsigned char * cbuf; + int mask = (1 << num_of_bits) -1; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = buf[0]; + lastbits = (unsigned int) buf[1]; + lastbyte = (unsigned int) buf[2]; + + num = 0; + while (num_of_bits >= 8) { + lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; + num |= (lastbyte >> lastbits) << (num_of_bits - 8); + num_of_bits -=8; + } + if (num_of_bits > 0) { + if (lastbits < num_of_bits) { + lastbits += 8; + lastbyte = (lastbyte << 8) | cbuf[cnt++]; + } + lastbits -= num_of_bits; + num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); + } + num &= mask; + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + return num; +} + +/*____________________________________________________________________________ + | + | receiveints - decode 'small' integers from the buf array + | + | this routine is the inverse from sendints() and decodes the small integers + | written to buf by calculating the remainder and doing divisions with + | the given sizes[]. You need to specify the total number of bits to be + | used from buf in num_of_bits. + | +*/ + +static void receiveints(int buf[], const int num_of_ints, int num_of_bits, + unsigned int sizes[], int nums[]) { + int bytes[32]; + int i, j, num_of_bytes, p, num; + + bytes[1] = bytes[2] = bytes[3] = 0; + num_of_bytes = 0; + while (num_of_bits > 8) { + bytes[num_of_bytes++] = receivebits(buf, 8); + num_of_bits -= 8; + } + if (num_of_bits > 0) { + bytes[num_of_bytes++] = receivebits(buf, num_of_bits); + } + for (i = num_of_ints-1; i > 0; i--) { + num = 0; + for (j = num_of_bytes-1; j >=0; j--) { + num = (num << 8) | bytes[j]; + p = num / sizes[i]; + bytes[j] = p; + num = num - p * sizes[i]; + } + nums[i] = num; + } + nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); +} + +/*____________________________________________________________________________ + | + | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. + | + | this routine reads or writes (depending on how you opened the file with + | xdropen() ) a large number of 3d coordinates (stored in *fp). + | The number of coordinates triplets to write is given by *size. On + | read this number may be zero, in which case it reads as many as were written + | or it may specify the number if triplets to read (which should match the + | number written). + | Compression is achieved by first converting all floating numbers to integer + | using multiplication by *precision and rounding to the nearest integer. + | Then the minimum and maximum value are calculated to determine the range. + | The limited range of integers so found, is used to compress the coordinates. + | In addition the differences between succesive coordinates is calculated. + | If the difference happens to be 'small' then only the difference is saved, + | compressing the data even more. The notion of 'small' is changed dynamically + | and is enlarged or reduced whenever needed or possible. + | Extra compression is achieved in the case of GROMOS and coordinates of + | water molecules. GROMOS first writes out the Oxygen position, followed by + | the two hydrogens. In order to make the differences smaller (and thereby + | compression the data better) the order is changed into first one hydrogen + | then the oxygen, followed by the other hydrogen. This is rather special, but + | it shouldn't harm in the general case. + | + */ + +int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { + + + static int *ip = NULL; + static int oldsize; + static int *buf; + + int minint[3], maxint[3], mindiff, *lip, diff; + int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; + int minidx, maxidx; + unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; + int flag, k; + int small, smaller, larger, i, is_small, is_smaller, run, prevrun; + float *lfp, lf; + int tmp, *thiscoord, prevcoord[3]; + unsigned int tmpcoord[30]; + + int bufsize, xdrid, lsize; + unsigned int bitsize; + float inv_precision; + int errval = 1; + + /* find out if xdrs is opened for reading or for writing */ + xdrid = 0; + while (xdridptr[xdrid] != xdrs) { + xdrid++; + if (xdrid >= MAXID) { + fprintf(stderr, "xdr error. no open xdr stream\n"); + exit (1); + } + } + if (xdrmodes[xdrid] == 'w') { + + /* xdrs is open for writing */ + + if (xdr_int(xdrs, size) == 0) + return 0; + size3 = *size * 3; + /* when the number of coordinates is small, don't try to compress; just + * write them as floats using xdr_vector + */ + if (*size <= 9 ) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + /* buf[0-2] are special and do not contain actual data */ + buf[0] = buf[1] = buf[2] = 0; + minint[0] = minint[1] = minint[2] = INT_MAX; + maxint[0] = maxint[1] = maxint[2] = INT_MIN; + prevrun = -1; + lfp = fp; + lip = ip; + mindiff = INT_MAX; + oldlint1 = oldlint2 = oldlint3 = 0; + while(lfp < fp + size3 ) { + /* find nearest integer */ + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint1 = lf; + if (lint1 < minint[0]) minint[0] = lint1; + if (lint1 > maxint[0]) maxint[0] = lint1; + *lip++ = lint1; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint2 = lf; + if (lint2 < minint[1]) minint[1] = lint2; + if (lint2 > maxint[1]) maxint[1] = lint2; + *lip++ = lint2; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint3 = lf; + if (lint3 < minint[2]) minint[2] = lint3; + if (lint3 > maxint[2]) maxint[2] = lint3; + *lip++ = lint3; + lfp++; + diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); + if (diff < mindiff && lfp > fp + 3) + mindiff = diff; + oldlint1 = lint1; + oldlint2 = lint2; + oldlint3 = lint3; + } + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + if ((float)maxint[0] - (float)minint[0] >= MAXABS || + (float)maxint[1] - (float)minint[1] >= MAXABS || + (float)maxint[2] - (float)minint[2] >= MAXABS) { + /* turning value in unsigned by subtracting minint + * would cause overflow + */ + errval = 0; + } + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + lip = ip; + luip = (unsigned int *) ip; + smallidx = FIRSTIDX; + while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { + smallidx++; + } + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + larger = magicints[maxidx] / 2; + i = 0; + while (i < *size) { + is_small = 0; + thiscoord = (int *)(luip) + i * 3; + if (smallidx < maxidx && i >= 1 && + abs(thiscoord[0] - prevcoord[0]) < larger && + abs(thiscoord[1] - prevcoord[1]) < larger && + abs(thiscoord[2] - prevcoord[2]) < larger) { + is_smaller = 1; + } else if (smallidx > minidx) { + is_smaller = -1; + } else { + is_smaller = 0; + } + if (i + 1 < *size) { + if (abs(thiscoord[0] - thiscoord[3]) < small && + abs(thiscoord[1] - thiscoord[4]) < small && + abs(thiscoord[2] - thiscoord[5]) < small) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; + thiscoord[3] = tmp; + tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; + thiscoord[4] = tmp; + tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; + thiscoord[5] = tmp; + is_small = 1; + } + + } + tmpcoord[0] = thiscoord[0] - minint[0]; + tmpcoord[1] = thiscoord[1] - minint[1]; + tmpcoord[2] = thiscoord[2] - minint[2]; + if (bitsize == 0) { + sendbits(buf, bitsizeint[0], tmpcoord[0]); + sendbits(buf, bitsizeint[1], tmpcoord[1]); + sendbits(buf, bitsizeint[2], tmpcoord[2]); + } else { + sendints(buf, 3, bitsize, sizeint, tmpcoord); + } + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + thiscoord = thiscoord + 3; + i++; + + run = 0; + if (is_small == 0 && is_smaller == -1) + is_smaller = 0; + while (is_small && run < 8*3) { + if (is_smaller == -1 && ( + SQR(thiscoord[0] - prevcoord[0]) + + SQR(thiscoord[1] - prevcoord[1]) + + SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { + is_smaller = 0; + } + + tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; + tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; + tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + i++; + thiscoord = thiscoord + 3; + is_small = 0; + if (i < *size && + abs(thiscoord[0] - prevcoord[0]) < small && + abs(thiscoord[1] - prevcoord[1]) < small && + abs(thiscoord[2] - prevcoord[2]) < small) { + is_small = 1; + } + } + if (run != prevrun || is_smaller != 0) { + prevrun = run; + sendbits(buf, 1, 1); /* flag the change in run-length */ + sendbits(buf, 5, run+is_smaller+1); + } else { + sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ + } + for (k=0; k < run; k+=3) { + sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); + } + if (is_smaller != 0) { + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + smaller = magicints[smallidx-1] / 2; + } else { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + } + } + if (buf[1] != 0) buf[0]++;; + xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ + return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); + } else { + + /* xdrs is open for reading */ + + if (xdr_int(xdrs, &lsize) == 0) + return 0; + if (*size != 0 && lsize != *size) { + fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " + "%d arg vs %d in file", *size, lsize); + } + *size = lsize; + size3 = *size * 3; + if (*size <= 9) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + buf[0] = buf[1] = buf[2] = 0; + + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + larger = magicints[maxidx]; + + /* buf[0] holds the length in bytes */ + + if (xdr_int(xdrs, &(buf[0])) == 0) + return 0; + if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) + return 0; + buf[0] = buf[1] = buf[2] = 0; + + lfp = fp; + inv_precision = 1.0 / * precision; + run = 0; + i = 0; + lip = ip; + while ( i < lsize ) { + thiscoord = (int *)(lip) + i * 3; + + if (bitsize == 0) { + thiscoord[0] = receivebits(buf, bitsizeint[0]); + thiscoord[1] = receivebits(buf, bitsizeint[1]); + thiscoord[2] = receivebits(buf, bitsizeint[2]); + } else { + receiveints(buf, 3, bitsize, sizeint, thiscoord); + } + + i++; + thiscoord[0] += minint[0]; + thiscoord[1] += minint[1]; + thiscoord[2] += minint[2]; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + + flag = receivebits(buf, 1); + is_smaller = 0; + if (flag == 1) { + run = receivebits(buf, 5); + is_smaller = run % 3; + run -= is_smaller; + is_smaller--; + } + if (run > 0) { + thiscoord += 3; + for (k = 0; k < run; k+=3) { + receiveints(buf, 3, smallidx, sizesmall, thiscoord); + i++; + thiscoord[0] += prevcoord[0] - small; + thiscoord[1] += prevcoord[1] - small; + thiscoord[2] += prevcoord[2] - small; + if (k == 0) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; + prevcoord[0] = tmp; + tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; + prevcoord[1] = tmp; + tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; + prevcoord[2] = tmp; + *lfp++ = prevcoord[0] * inv_precision; + *lfp++ = prevcoord[1] * inv_precision; + *lfp++ = prevcoord[2] * inv_precision; + } else { + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + } + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + } else { + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + if (smallidx > FIRSTIDX) { + smaller = magicints[smallidx - 1] /2; + } else { + smaller = 0; + } + } else if (is_smaller > 0) { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + } + } + return 1; +} + + + diff --git a/source/lib/xdrf_em64/libxdrf.m4.org b/source/lib/xdrf_em64/libxdrf.m4.org new file mode 100644 index 0000000..b14b374 --- /dev/null +++ b/source/lib/xdrf_em64/libxdrf.m4.org @@ -0,0 +1,1230 @@ +/*____________________________________________________________________________ + | + | libxdrf - portable fortran interface to xdr. some xdr routines + | are C routines for compressed coordinates + | + | version 1.1 + | + | This collection of routines is intended to write and read + | data in a portable way to a file, so data written on one type + | of machine can be read back on a different type. + | + | all fortran routines use an integer 'xdrid', which is an id to the + | current xdr file, and is set by xdrfopen. + | most routines have in integer 'ret' which is the return value. + | The value of 'ret' is zero on failure, and most of the time one + | on succes. + | + | There are three routines useful for C users: + | xdropen(), xdrclose(), xdr3dfcoord(). + | The first two replace xdrstdio_create and xdr_destroy, and *must* be + | used when you plan to use xdr3dfcoord(). (they are also a bit + | easier to interface). For writing data other than compressed coordinates + | you should use the standard C xdr routines (see xdr man page) + | + | xdrfopen(xdrid, filename, mode, ret) + | character *(*) filename + | character *(*) mode + | + | this will open the file with the given filename (string) + | and the given mode, it returns an id in xdrid, which is + | to be used in all other calls to xdrf routines. + | mode is 'w' to create, or update an file, for all other + | values of mode the file is opened for reading + | + | you need to call xdrfclose to flush the output and close + | the file. + | Note that you should not use xdrstdio_create, which comes with the + | standard xdr library + | + | xdrfclose(xdrid, ret) + | flush the data to the file, and closes the file; + | You should not use xdr_destroy (which comes standard with + | the xdr libraries. + | + | xdrfbool(xdrid, bp, ret) + | integer pb + | + | This filter produces values of either 1 or 0 + | + | xdrfchar(xdrid, cp, ret) + | character cp + | + | filter that translate between characters and their xdr representation + | Note that the characters in not compressed and occupies 4 bytes. + | + | xdrfdouble(xdrid, dp, ret) + | double dp + | + | read/write a double. + | + | xdrffloat(xdrid, fp, ret) + | float fp + | + | read/write a float. + | + | xdrfint(xdrid, ip, ret) + | integer ip + | + | read/write integer. + | + | xdrflong(xdrid, lp, ret) + | integer lp + | + | this routine has a possible portablility problem due to 64 bits longs. + | + | xdrfshort(xdrid, sp, ret) + | integer *2 sp + | + | xdrfstring(xdrid, sp, maxsize, ret) + | character *(*) + | integer maxsize + | + | read/write a string, with maximum length given by maxsize + | + | xdrfwrapstring(xdris, sp, ret) + | character *(*) + | + | read/write a string (it is the same as xdrfstring accept that it finds + | the stringlength itself. + | + | xdrfvector(xdrid, cp, size, xdrfproc, ret) + | character *(*) + | integer size + | external xdrfproc + | + | read/write an array pointed to by cp, with number of elements + | defined by 'size'. the routine 'xdrfproc' is the name + | of one of the above routines to read/write data (like xdrfdouble) + | In contrast with the c-version you don't need to specify the + | byte size of an element. + | xdrfstring is not allowed here (it is in the c version) + | + | xdrf3dfcoord(xdrid, fp, size, precision, ret) + | real (*) fp + | real precision + | integer size + | + | this is *NOT* a standard xdr routine. I named it this way, because + | it invites people to use the other xdr routines. + | It is introduced to store specifically 3d coordinates of molecules + | (as found in molecular dynamics) and it writes it in a compressed way. + | It starts by multiplying all numbers by precision and + | rounding the result to integer. effectively converting + | all floating point numbers to fixed point. + | it uses an algorithm for compression that is optimized for + | molecular data, but could be used for other 3d coordinates + | as well. There is subtantial overhead involved, so call this + | routine only if you have a large number of coordinates to read/write + | + | ________________________________________________________________________ + | + | Below are the routines to be used by C programmers. Use the 'normal' + | xdr routines to write integers, floats, etc (see man xdr) + | + | int xdropen(XDR *xdrs, const char *filename, const char *type) + | This will open the file with the given filename and the + | given mode. You should pass it an allocated XDR struct + | in xdrs, to be used in all other calls to xdr routines. + | Mode is 'w' to create, or update an file, and for all + | other values of mode the file is opened for reading. + | You need to call xdrclose to flush the output and close + | the file. + | + | Note that you should not use xdrstdio_create, which + | comes with the standard xdr library. + | + | int xdrclose(XDR *xdrs) + | Flush the data to the file, and close the file; + | You should not use xdr_destroy (which comes standard + | with the xdr libraries). + | + | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) + | This is \fInot\fR a standard xdr routine. I named it this + | way, because it invites people to use the other xdr + | routines. + | + | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include "xdrf.h" + +int ftocstr(char *, int, char *, int); +int ctofstr(char *, int, char *); + +#define MAXID 20 +static FILE *xdrfiles[MAXID]; +static XDR *xdridptr[MAXID]; +static char xdrmodes[MAXID]; +static unsigned int cnt; + +typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); + +void +FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') +int *xdrid, *ret; +int *pb; +{ + *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); + cnt += sizeof(int); +} + +void +FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') +int *xdrid, *ret; +char *cp; +{ + *ret = xdr_char(xdridptr[*xdrid], cp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') +int *xdrid, *ret; +double *dp; +{ + *ret = xdr_double(xdridptr[*xdrid], dp); + cnt += sizeof(double); +} + +void +FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') +int *xdrid, *ret; +float *fp; +{ + *ret = xdr_float(xdridptr[*xdrid], fp); + cnt += sizeof(float); +} + +void +FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') +int *xdrid, *ret; +int *ip; +{ + *ret = xdr_int(xdridptr[*xdrid], ip); + cnt += sizeof(int); +} + +void +FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') +int *xdrid, *ret; +long *lp; +{ + *ret = xdr_long(xdridptr[*xdrid], lp); + cnt += sizeof(long); +} + +void +FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') +int *xdrid, *ret; +short *sp; +{ + *ret = xdr_short(xdridptr[*xdrid], sp); + cnt += sizeof(sp); +} + +void +FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') +int *xdrid, *ret; +char *ucp; +{ + *ret = xdr_u_char(xdridptr[*xdrid], ucp); + cnt += sizeof(char); +} + +void +FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') +int *xdrid, *ret; +unsigned long *ulp; +{ + *ret = xdr_u_long(xdridptr[*xdrid], ulp); + cnt += sizeof(unsigned long); +} + +void +FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') +int *xdrid, *ret; +unsigned short *usp; +{ + *ret = xdr_u_short(xdridptr[*xdrid], usp); + cnt += sizeof(unsigned short); +} + +void +FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') +int *xdrid, *ret; +float *fp; +int *size; +float *precision; +{ + *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); +} + +void +FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +int *maxsize; +{ + char *tsp; + + tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += *maxsize; + free(tsp); +} + +void +FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') +int *xdrid, *ret; +STRING_ARG_DECL(sp); +{ + char *tsp; + int maxsize; + maxsize = (STRING_LEN(sp)) + 1; + tsp = (char*) malloc(maxsize * sizeof(char)); + if (tsp == NULL) { + *ret = -1; + return; + } + if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { + *ret = -1; + free(tsp); + return; + } + *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); + ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); + cnt += maxsize; + free(tsp); +} + +void +FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') +int *xdrid, *ret; +caddr_t *cp; +int *ccnt; +{ + *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); + cnt += *ccnt; +} + +void +FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') +int *xdrid, *ret; +int *pos; +{ + *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); +} + +void +FUNCTION(xdrf) ARGS(`xdrid, pos') +int *xdrid, *pos; +{ + *pos = xdr_getpos(xdridptr[*xdrid]); +} + +void +FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') +int *xdrid, *ret; +char *cp; +int *size; +FUNCTION(xdrfproc) elproc; +{ + int lcnt; + cnt = 0; + for (lcnt = 0; lcnt < *size; lcnt++) { + elproc(xdrid, (cp+cnt) , ret); + } +} + + +void +FUNCTION(xdrfclose) ARGS(`xdrid, ret') +int *xdrid; +int *ret; +{ + *ret = xdrclose(xdridptr[*xdrid]); + cnt = 0; +} + +void +FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') +int *xdrid; +STRING_ARG_DECL(fp); +STRING_ARG_DECL(mode); +int *ret; +{ + char fname[512]; + char fmode[3]; + + if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { + *ret = 0; + } + if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), + STRING_LEN(mode))) { + *ret = 0; + } + + *xdrid = xdropen(NULL, fname, fmode); + if (*xdrid == 0) + *ret = 0; + else + *ret = 1; +} + +/*___________________________________________________________________________ + | + | what follows are the C routines for opening, closing xdr streams + | and the routine to read/write compressed coordinates together + | with some routines to assist in this task (those are marked + | static and cannot be called from user programs) +*/ +#define MAXABS INT_MAX-2 + +#ifndef MIN +#define MIN(x,y) ((x) < (y) ? (x):(y)) +#endif +#ifndef MAX +#define MAX(x,y) ((x) > (y) ? (x):(y)) +#endif +#ifndef SQR +#define SQR(x) ((x)*(x)) +#endif +static int magicints[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, + 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, + 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, + 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, + 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, + 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, + 8388607, 10568983, 13316085, 16777216 }; + +#define FIRSTIDX 9 +/* note that magicints[FIRSTIDX-1] == 0 */ +#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) + + +/*__________________________________________________________________________ + | + | xdropen - open xdr file + | + | This versions differs from xdrstdio_create, because I need to know + | the state of the file (read or write) so I can use xdr3dfcoord + | in eigther read or write mode, and the file descriptor + | so I can close the file (something xdr_destroy doesn't do). + | +*/ + +int xdropen(XDR *xdrs, const char *filename, const char *type) { + static int init_done = 0; + enum xdr_op lmode; + int xdrid; + + if (init_done == 0) { + for (xdrid = 1; xdrid < MAXID; xdrid++) { + xdridptr[xdrid] = NULL; + } + init_done = 1; + } + xdrid = 1; + while (xdrid < MAXID && xdridptr[xdrid] != NULL) { + xdrid++; + } + if (xdrid == MAXID) { + return 0; + } + if (*type == 'w' || *type == 'W') { + type = "w+"; + lmode = XDR_ENCODE; + } else { + type = "r"; + lmode = XDR_DECODE; + } + xdrfiles[xdrid] = fopen(filename, type); + if (xdrfiles[xdrid] == NULL) { + xdrs = NULL; + return 0; + } + xdrmodes[xdrid] = *type; + /* next test isn't usefull in the case of C language + * but is used for the Fortran interface + * (C users are expected to pass the address of an already allocated + * XDR staructure) + */ + if (xdrs == NULL) { + xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); + xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); + } else { + xdridptr[xdrid] = xdrs; + xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); + } + return xdrid; +} + +/*_________________________________________________________________________ + | + | xdrclose - close a xdr file + | + | This will flush the xdr buffers, and destroy the xdr stream. + | It also closes the associated file descriptor (this is *not* + | done by xdr_destroy). + | +*/ + +int xdrclose(XDR *xdrs) { + int xdrid; + + if (xdrs == NULL) { + fprintf(stderr, "xdrclose: passed a NULL pointer\n"); + exit(1); + } + for (xdrid = 1; xdrid < MAXID; xdrid++) { + if (xdridptr[xdrid] == xdrs) { + + xdr_destroy(xdrs); + fclose(xdrfiles[xdrid]); + xdridptr[xdrid] = NULL; + return 1; + } + } + fprintf(stderr, "xdrclose: no such open xdr file\n"); + exit(1); + +} + +/*____________________________________________________________________________ + | + | sendbits - encode num into buf using the specified number of bits + | + | This routines appends the value of num to the bits already present in + | the array buf. You need to give it the number of bits to use and you + | better make sure that this number of bits is enough to hold the value + | Also num must be positive. + | +*/ + +static void sendbits(int buf[], int num_of_bits, int num) { + + unsigned int cnt, lastbyte; + int lastbits; + unsigned char * cbuf; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = (unsigned int) buf[0]; + lastbits = buf[1]; + lastbyte =(unsigned int) buf[2]; + while (num_of_bits >= 8) { + lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); + cbuf[cnt++] = lastbyte >> lastbits; + num_of_bits -= 8; + } + if (num_of_bits > 0) { + lastbyte = (lastbyte << num_of_bits) | num; + lastbits += num_of_bits; + if (lastbits >= 8) { + lastbits -= 8; + cbuf[cnt++] = lastbyte >> lastbits; + } + } + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + if (lastbits>0) { + cbuf[cnt] = lastbyte << (8 - lastbits); + } +} + +/*_________________________________________________________________________ + | + | sizeofint - calculate bitsize of an integer + | + | return the number of bits needed to store an integer with given max size + | +*/ + +static int sizeofint(const int size) { + unsigned int num = 1; + int num_of_bits = 0; + + while (size >= num && num_of_bits < 32) { + num_of_bits++; + num <<= 1; + } + return num_of_bits; +} + +/*___________________________________________________________________________ + | + | sizeofints - calculate 'bitsize' of compressed ints + | + | given the number of small unsigned integers and the maximum value + | return the number of bits needed to read or write them with the + | routines receiveints and sendints. You need this parameter when + | calling these routines. Note that for many calls I can use + | the variable 'smallidx' which is exactly the number of bits, and + | So I don't need to call 'sizeofints for those calls. +*/ + +static int sizeofints( const int num_of_ints, unsigned int sizes[]) { + int i, num; + unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; + num_of_bytes = 1; + bytes[0] = 1; + num_of_bits = 0; + for (i=0; i < num_of_ints; i++) { + tmp = 0; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + num = 1; + num_of_bytes--; + while (bytes[num_of_bytes] >= num) { + num_of_bits++; + num *= 2; + } + return num_of_bits + num_of_bytes * 8; + +} + +/*____________________________________________________________________________ + | + | sendints - send a small set of small integers in compressed format + | + | this routine is used internally by xdr3dfcoord, to send a set of + | small integers to the buffer. + | Multiplication with fixed (specified maximum ) sizes is used to get + | to one big, multibyte integer. Allthough the routine could be + | modified to handle sizes bigger than 16777216, or more than just + | a few integers, this is not done, because the gain in compression + | isn't worth the effort. Note that overflowing the multiplication + | or the byte buffer (32 bytes) is unchecked and causes bad results. + | + */ + +static void sendints(int buf[], const int num_of_ints, const int num_of_bits, + unsigned int sizes[], unsigned int nums[]) { + + int i; + unsigned int bytes[32], num_of_bytes, bytecnt, tmp; + + tmp = nums[0]; + num_of_bytes = 0; + do { + bytes[num_of_bytes++] = tmp & 0xff; + tmp >>= 8; + } while (tmp != 0); + + for (i = 1; i < num_of_ints; i++) { + if (nums[i] >= sizes[i]) { + fprintf(stderr,"major breakdown in sendints num %d doesn't " + "match size %d\n", nums[i], sizes[i]); + exit(1); + } + /* use one step multiply */ + tmp = nums[i]; + for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { + tmp = bytes[bytecnt] * sizes[i] + tmp; + bytes[bytecnt] = tmp & 0xff; + tmp >>= 8; + } + while (tmp != 0) { + bytes[bytecnt++] = tmp & 0xff; + tmp >>= 8; + } + num_of_bytes = bytecnt; + } + if (num_of_bits >= num_of_bytes * 8) { + for (i = 0; i < num_of_bytes; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits - num_of_bytes * 8, 0); + } else { + for (i = 0; i < num_of_bytes-1; i++) { + sendbits(buf, 8, bytes[i]); + } + sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); + } +} + + +/*___________________________________________________________________________ + | + | receivebits - decode number from buf using specified number of bits + | + | extract the number of bits from the array buf and construct an integer + | from it. Return that value. + | +*/ + +static int receivebits(int buf[], int num_of_bits) { + + int cnt, num; + unsigned int lastbits, lastbyte; + unsigned char * cbuf; + int mask = (1 << num_of_bits) -1; + + cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); + cnt = buf[0]; + lastbits = (unsigned int) buf[1]; + lastbyte = (unsigned int) buf[2]; + + num = 0; + while (num_of_bits >= 8) { + lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; + num |= (lastbyte >> lastbits) << (num_of_bits - 8); + num_of_bits -=8; + } + if (num_of_bits > 0) { + if (lastbits < num_of_bits) { + lastbits += 8; + lastbyte = (lastbyte << 8) | cbuf[cnt++]; + } + lastbits -= num_of_bits; + num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); + } + num &= mask; + buf[0] = cnt; + buf[1] = lastbits; + buf[2] = lastbyte; + return num; +} + +/*____________________________________________________________________________ + | + | receiveints - decode 'small' integers from the buf array + | + | this routine is the inverse from sendints() and decodes the small integers + | written to buf by calculating the remainder and doing divisions with + | the given sizes[]. You need to specify the total number of bits to be + | used from buf in num_of_bits. + | +*/ + +static void receiveints(int buf[], const int num_of_ints, int num_of_bits, + unsigned int sizes[], int nums[]) { + int bytes[32]; + int i, j, num_of_bytes, p, num; + + bytes[1] = bytes[2] = bytes[3] = 0; + num_of_bytes = 0; + while (num_of_bits > 8) { + bytes[num_of_bytes++] = receivebits(buf, 8); + num_of_bits -= 8; + } + if (num_of_bits > 0) { + bytes[num_of_bytes++] = receivebits(buf, num_of_bits); + } + for (i = num_of_ints-1; i > 0; i--) { + num = 0; + for (j = num_of_bytes-1; j >=0; j--) { + num = (num << 8) | bytes[j]; + p = num / sizes[i]; + bytes[j] = p; + num = num - p * sizes[i]; + } + nums[i] = num; + } + nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); +} + +/*____________________________________________________________________________ + | + | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. + | + | this routine reads or writes (depending on how you opened the file with + | xdropen() ) a large number of 3d coordinates (stored in *fp). + | The number of coordinates triplets to write is given by *size. On + | read this number may be zero, in which case it reads as many as were written + | or it may specify the number if triplets to read (which should match the + | number written). + | Compression is achieved by first converting all floating numbers to integer + | using multiplication by *precision and rounding to the nearest integer. + | Then the minimum and maximum value are calculated to determine the range. + | The limited range of integers so found, is used to compress the coordinates. + | In addition the differences between succesive coordinates is calculated. + | If the difference happens to be 'small' then only the difference is saved, + | compressing the data even more. The notion of 'small' is changed dynamically + | and is enlarged or reduced whenever needed or possible. + | Extra compression is achieved in the case of GROMOS and coordinates of + | water molecules. GROMOS first writes out the Oxygen position, followed by + | the two hydrogens. In order to make the differences smaller (and thereby + | compression the data better) the order is changed into first one hydrogen + | then the oxygen, followed by the other hydrogen. This is rather special, but + | it shouldn't harm in the general case. + | + */ + +int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { + + + static int *ip = NULL; + static int oldsize; + static int *buf; + + int minint[3], maxint[3], mindiff, *lip, diff; + int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; + int minidx, maxidx; + unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; + int flag, k; + int small, smaller, larger, i, is_small, is_smaller, run, prevrun; + float *lfp, lf; + int tmp, *thiscoord, prevcoord[3]; + unsigned int tmpcoord[30]; + + int bufsize, xdrid, lsize; + unsigned int bitsize; + float inv_precision; + int errval = 1; + + /* find out if xdrs is opened for reading or for writing */ + xdrid = 0; + while (xdridptr[xdrid] != xdrs) { + xdrid++; + if (xdrid >= MAXID) { + fprintf(stderr, "xdr error. no open xdr stream\n"); + exit (1); + } + } + if (xdrmodes[xdrid] == 'w') { + + /* xdrs is open for writing */ + + if (xdr_int(xdrs, size) == 0) + return 0; + size3 = *size * 3; + /* when the number of coordinates is small, don't try to compress; just + * write them as floats using xdr_vector + */ + if (*size <= 9 ) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + /* buf[0-2] are special and do not contain actual data */ + buf[0] = buf[1] = buf[2] = 0; + minint[0] = minint[1] = minint[2] = INT_MAX; + maxint[0] = maxint[1] = maxint[2] = INT_MIN; + prevrun = -1; + lfp = fp; + lip = ip; + mindiff = INT_MAX; + oldlint1 = oldlint2 = oldlint3 = 0; + while(lfp < fp + size3 ) { + /* find nearest integer */ + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint1 = lf; + if (lint1 < minint[0]) minint[0] = lint1; + if (lint1 > maxint[0]) maxint[0] = lint1; + *lip++ = lint1; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint2 = lf; + if (lint2 < minint[1]) minint[1] = lint2; + if (lint2 > maxint[1]) maxint[1] = lint2; + *lip++ = lint2; + lfp++; + if (*lfp >= 0.0) + lf = *lfp * *precision + 0.5; + else + lf = *lfp * *precision - 0.5; + if (fabs(lf) > MAXABS) { + /* scaling would cause overflow */ + errval = 0; + } + lint3 = lf; + if (lint3 < minint[2]) minint[2] = lint3; + if (lint3 > maxint[2]) maxint[2] = lint3; + *lip++ = lint3; + lfp++; + diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); + if (diff < mindiff && lfp > fp + 3) + mindiff = diff; + oldlint1 = lint1; + oldlint2 = lint2; + oldlint3 = lint3; + } + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + if ((float)maxint[0] - (float)minint[0] >= MAXABS || + (float)maxint[1] - (float)minint[1] >= MAXABS || + (float)maxint[2] - (float)minint[2] >= MAXABS) { + /* turning value in unsigned by subtracting minint + * would cause overflow + */ + errval = 0; + } + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + lip = ip; + luip = (unsigned int *) ip; + smallidx = FIRSTIDX; + while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { + smallidx++; + } + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + larger = magicints[maxidx] / 2; + i = 0; + while (i < *size) { + is_small = 0; + thiscoord = (int *)(luip) + i * 3; + if (smallidx < maxidx && i >= 1 && + abs(thiscoord[0] - prevcoord[0]) < larger && + abs(thiscoord[1] - prevcoord[1]) < larger && + abs(thiscoord[2] - prevcoord[2]) < larger) { + is_smaller = 1; + } else if (smallidx > minidx) { + is_smaller = -1; + } else { + is_smaller = 0; + } + if (i + 1 < *size) { + if (abs(thiscoord[0] - thiscoord[3]) < small && + abs(thiscoord[1] - thiscoord[4]) < small && + abs(thiscoord[2] - thiscoord[5]) < small) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; + thiscoord[3] = tmp; + tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; + thiscoord[4] = tmp; + tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; + thiscoord[5] = tmp; + is_small = 1; + } + + } + tmpcoord[0] = thiscoord[0] - minint[0]; + tmpcoord[1] = thiscoord[1] - minint[1]; + tmpcoord[2] = thiscoord[2] - minint[2]; + if (bitsize == 0) { + sendbits(buf, bitsizeint[0], tmpcoord[0]); + sendbits(buf, bitsizeint[1], tmpcoord[1]); + sendbits(buf, bitsizeint[2], tmpcoord[2]); + } else { + sendints(buf, 3, bitsize, sizeint, tmpcoord); + } + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + thiscoord = thiscoord + 3; + i++; + + run = 0; + if (is_small == 0 && is_smaller == -1) + is_smaller = 0; + while (is_small && run < 8*3) { + if (is_smaller == -1 && ( + SQR(thiscoord[0] - prevcoord[0]) + + SQR(thiscoord[1] - prevcoord[1]) + + SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { + is_smaller = 0; + } + + tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; + tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; + tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + i++; + thiscoord = thiscoord + 3; + is_small = 0; + if (i < *size && + abs(thiscoord[0] - prevcoord[0]) < small && + abs(thiscoord[1] - prevcoord[1]) < small && + abs(thiscoord[2] - prevcoord[2]) < small) { + is_small = 1; + } + } + if (run != prevrun || is_smaller != 0) { + prevrun = run; + sendbits(buf, 1, 1); /* flag the change in run-length */ + sendbits(buf, 5, run+is_smaller+1); + } else { + sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ + } + for (k=0; k < run; k+=3) { + sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); + } + if (is_smaller != 0) { + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + smaller = magicints[smallidx-1] / 2; + } else { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; + } + } + if (buf[1] != 0) buf[0]++;; + xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ + return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); + } else { + + /* xdrs is open for reading */ + + if (xdr_int(xdrs, &lsize) == 0) + return 0; + if (*size != 0 && lsize != *size) { + fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " + "%d arg vs %d in file", *size, lsize); + } + *size = lsize; + size3 = *size * 3; + if (*size <= 9) { + return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), + (xdrproc_t)xdr_float)); + } + xdr_float(xdrs, precision); + if (ip == NULL) { + ip = (int *)malloc(size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)malloc(bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } else if (*size > oldsize) { + ip = (int *)realloc(ip, size3 * sizeof(*ip)); + if (ip == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + bufsize = size3 * 1.2; + buf = (int *)realloc(buf, bufsize * sizeof(*buf)); + if (buf == NULL) { + fprintf(stderr,"malloc failed\n"); + exit(1); + } + oldsize = *size; + } + buf[0] = buf[1] = buf[2] = 0; + + xdr_int(xdrs, &(minint[0])); + xdr_int(xdrs, &(minint[1])); + xdr_int(xdrs, &(minint[2])); + + xdr_int(xdrs, &(maxint[0])); + xdr_int(xdrs, &(maxint[1])); + xdr_int(xdrs, &(maxint[2])); + + sizeint[0] = maxint[0] - minint[0]+1; + sizeint[1] = maxint[1] - minint[1]+1; + sizeint[2] = maxint[2] - minint[2]+1; + + /* check if one of the sizes is to big to be multiplied */ + if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { + bitsizeint[0] = sizeofint(sizeint[0]); + bitsizeint[1] = sizeofint(sizeint[1]); + bitsizeint[2] = sizeofint(sizeint[2]); + bitsize = 0; /* flag the use of large sizes */ + } else { + bitsize = sizeofints(3, sizeint); + } + + xdr_int(xdrs, &smallidx); + maxidx = MIN(LASTIDX, smallidx + 8) ; + minidx = maxidx - 8; /* often this equal smallidx */ + smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; + small = magicints[smallidx] / 2; + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + larger = magicints[maxidx]; + + /* buf[0] holds the length in bytes */ + + if (xdr_int(xdrs, &(buf[0])) == 0) + return 0; + if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) + return 0; + buf[0] = buf[1] = buf[2] = 0; + + lfp = fp; + inv_precision = 1.0 / * precision; + run = 0; + i = 0; + lip = ip; + while ( i < lsize ) { + thiscoord = (int *)(lip) + i * 3; + + if (bitsize == 0) { + thiscoord[0] = receivebits(buf, bitsizeint[0]); + thiscoord[1] = receivebits(buf, bitsizeint[1]); + thiscoord[2] = receivebits(buf, bitsizeint[2]); + } else { + receiveints(buf, 3, bitsize, sizeint, thiscoord); + } + + i++; + thiscoord[0] += minint[0]; + thiscoord[1] += minint[1]; + thiscoord[2] += minint[2]; + + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + + + flag = receivebits(buf, 1); + is_smaller = 0; + if (flag == 1) { + run = receivebits(buf, 5); + is_smaller = run % 3; + run -= is_smaller; + is_smaller--; + } + if (run > 0) { + thiscoord += 3; + for (k = 0; k < run; k+=3) { + receiveints(buf, 3, smallidx, sizesmall, thiscoord); + i++; + thiscoord[0] += prevcoord[0] - small; + thiscoord[1] += prevcoord[1] - small; + thiscoord[2] += prevcoord[2] - small; + if (k == 0) { + /* interchange first with second atom for better + * compression of water molecules + */ + tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; + prevcoord[0] = tmp; + tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; + prevcoord[1] = tmp; + tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; + prevcoord[2] = tmp; + *lfp++ = prevcoord[0] * inv_precision; + *lfp++ = prevcoord[1] * inv_precision; + *lfp++ = prevcoord[2] * inv_precision; + } else { + prevcoord[0] = thiscoord[0]; + prevcoord[1] = thiscoord[1]; + prevcoord[2] = thiscoord[2]; + } + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + } else { + *lfp++ = thiscoord[0] * inv_precision; + *lfp++ = thiscoord[1] * inv_precision; + *lfp++ = thiscoord[2] * inv_precision; + } + smallidx += is_smaller; + if (is_smaller < 0) { + small = smaller; + if (smallidx > FIRSTIDX) { + smaller = magicints[smallidx - 1] /2; + } else { + smaller = 0; + } + } else if (is_smaller > 0) { + smaller = small; + small = magicints[smallidx] / 2; + } + sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; + } + } + return 1; +} + + + diff --git a/source/lib/xdrf_em64/types.h b/source/lib/xdrf_em64/types.h new file mode 100644 index 0000000..871f3fd --- /dev/null +++ b/source/lib/xdrf_em64/types.h @@ -0,0 +1,99 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +/* fixincludes should not add extern "C" to this file */ +/* + * Rpc additions to + */ +#ifndef _RPC_TYPES_H +#define _RPC_TYPES_H 1 + +typedef int bool_t; +typedef int enum_t; +/* This needs to be changed to uint32_t in the future */ +typedef unsigned long rpcprog_t; +typedef unsigned long rpcvers_t; +typedef unsigned long rpcproc_t; +typedef unsigned long rpcprot_t; +typedef unsigned long rpcport_t; + +#define __dontcare__ -1 + +#ifndef FALSE +# define FALSE (0) +#endif + +#ifndef TRUE +# define TRUE (1) +#endif + +#ifndef NULL +# define NULL 0 +#endif + +#include /* For malloc decl. */ +#define mem_alloc(bsize) malloc(bsize) +/* + * XXX: This must not use the second argument, or code in xdr_array.c needs + * to be modified. + */ +#define mem_free(ptr, bsize) free(ptr) + +#ifndef makedev /* ie, we haven't already included it */ +#include +#endif + +#ifndef __u_char_defined +typedef __u_char u_char; +typedef __u_short u_short; +typedef __u_int u_int; +typedef __u_long u_long; +typedef __quad_t quad_t; +typedef __u_quad_t u_quad_t; +typedef __fsid_t fsid_t; +# define __u_char_defined +#endif +#ifndef __daddr_t_defined +typedef __daddr_t daddr_t; +typedef __caddr_t caddr_t; +# define __daddr_t_defined +#endif + +#include +#include + +#include + +#ifndef INADDR_LOOPBACK +#define INADDR_LOOPBACK (u_long)0x7F000001 +#endif +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + +#endif /* rpc/types.h */ diff --git a/source/lib/xdrf_em64/underscore.m4 b/source/lib/xdrf_em64/underscore.m4 new file mode 100644 index 0000000..4d620a0 --- /dev/null +++ b/source/lib/xdrf_em64/underscore.m4 @@ -0,0 +1,19 @@ +divert(-1) +undefine(`len') +# +# append an underscore to FORTRAN function names +# +define(`FUNCTION',`$1_') +# +# FORTRAN character strings are passed as follows: +# a pointer to the base of the string is passed in the normal +# argument list, and the length is passed by value as an extra +# argument, after all of the other arguments. +# +define(`ARGS',`($1`'undivert(1))') +define(`SAVE',`divert(1)$1`'divert(0)') +define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') +define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') +define(`STRING_LEN',`$1_len') +define(`STRING_PTR',`$1_ptr') +divert(0) diff --git a/source/lib/xdrf_em64/xdr.c b/source/lib/xdrf_em64/xdr.c new file mode 100644 index 0000000..33b8544 --- /dev/null +++ b/source/lib/xdrf_em64/xdr.c @@ -0,0 +1,752 @@ +# define INTUSE(name) name +# define INTDEF(name) +/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; +#endif + +/* + * xdr.c, Generic XDR routines implementation. + * + * Copyright (C) 1986, Sun Microsystems, Inc. + * + * These are the "generic" xdr routines used to serialize and de-serialize + * most common data items. See xdr.h for more info on the interface to + * xdr. + */ + +#include +#include +#include +#include + +#include "types.h" +#include "xdr.h" + +#ifdef USE_IN_LIBIO +# include +#endif + +/* + * constants specific to the xdr "protocol" + */ +#define XDR_FALSE ((long) 0) +#define XDR_TRUE ((long) 1) +#define LASTUNSIGNED ((u_int) 0-1) + +/* + * for unit alignment + */ +static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; + +/* + * Free a data structure using XDR + * Not a filter, but a convenient utility nonetheless + */ +void +xdr_free (xdrproc_t proc, char *objp) +{ + XDR x; + + x.x_op = XDR_FREE; + (*proc) (&x, objp); +} + +/* + * XDR nothing + */ +bool_t +xdr_void (void) +{ + return TRUE; +} +INTDEF(xdr_void) + +/* + * XDR integers + */ +bool_t +xdr_int (XDR *xdrs, int *ip) +{ + +#if INT_MAX < LONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (long) *ip; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *ip = (int) l; + case XDR_FREE: + return TRUE; + } + return FALSE; +#elif INT_MAX == LONG_MAX + return INTUSE(xdr_long) (xdrs, (long *) ip); +#elif INT_MAX == SHRT_MAX + return INTUSE(xdr_short) (xdrs, (short *) ip); +#else +#error unexpected integer sizes in_xdr_int() +#endif +} +INTDEF(xdr_int) + +/* + * XDR unsigned integers + */ +bool_t +xdr_u_int (XDR *xdrs, u_int *up) +{ +#if UINT_MAX < ULONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (u_long) * up; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *up = (u_int) (u_long) l; + case XDR_FREE: + return TRUE; + } + return FALSE; +#elif UINT_MAX == ULONG_MAX + return INTUSE(xdr_u_long) (xdrs, (u_long *) up); +#elif UINT_MAX == USHRT_MAX + return INTUSE(xdr_short) (xdrs, (short *) up); +#else +#error unexpected integer sizes in_xdr_u_int() +#endif +} +INTDEF(xdr_u_int) + +/* + * XDR long integers + * The definition of xdr_long() is kept for backward + * compatibility. Instead xdr_int() should be used. + */ +bool_t +xdr_long (XDR *xdrs, long *lp) +{ + + if (xdrs->x_op == XDR_ENCODE + && (sizeof (int32_t) == sizeof (long) + || (int32_t) *lp == *lp)) + return XDR_PUTLONG (xdrs, lp); + + if (xdrs->x_op == XDR_DECODE) + return XDR_GETLONG (xdrs, lp); + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_long) + +/* + * XDR unsigned long integers + * The definition of xdr_u_long() is kept for backward + * compatibility. Instead xdr_u_int() should be used. + */ +bool_t +xdr_u_long (XDR *xdrs, u_long *ulp) +{ + switch (xdrs->x_op) + { + case XDR_DECODE: + { + long int tmp; + + if (XDR_GETLONG (xdrs, &tmp) == FALSE) + return FALSE; + + *ulp = (uint32_t) tmp; + return TRUE; + } + + case XDR_ENCODE: + if (sizeof (uint32_t) != sizeof (u_long) + && (uint32_t) *ulp != *ulp) + return FALSE; + + return XDR_PUTLONG (xdrs, (long *) ulp); + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_u_long) + +/* + * XDR hyper integers + * same as xdr_u_hyper - open coded to save a proc call! + */ +bool_t +xdr_hyper (XDR *xdrs, quad_t *llp) +{ + long int t1, t2; + + if (xdrs->x_op == XDR_ENCODE) + { + t1 = (long) ((*llp) >> 32); + t2 = (long) (*llp); + return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); + } + + if (xdrs->x_op == XDR_DECODE) + { + if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) + return FALSE; + *llp = ((quad_t) t1) << 32; + *llp |= (uint32_t) t2; + return TRUE; + } + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_hyper) + + +/* + * XDR hyper integers + * same as xdr_hyper - open coded to save a proc call! + */ +bool_t +xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) +{ + long int t1, t2; + + if (xdrs->x_op == XDR_ENCODE) + { + t1 = (unsigned long) ((*ullp) >> 32); + t2 = (unsigned long) (*ullp); + return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); + } + + if (xdrs->x_op == XDR_DECODE) + { + if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) + return FALSE; + *ullp = ((u_quad_t) t1) << 32; + *ullp |= (uint32_t) t2; + return TRUE; + } + + if (xdrs->x_op == XDR_FREE) + return TRUE; + + return FALSE; +} +INTDEF(xdr_u_hyper) + +bool_t +xdr_longlong_t (XDR *xdrs, quad_t *llp) +{ + return INTUSE(xdr_hyper) (xdrs, llp); +} + +bool_t +xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) +{ + return INTUSE(xdr_u_hyper) (xdrs, ullp); +} + +/* + * XDR short integers + */ +bool_t +xdr_short (XDR *xdrs, short *sp) +{ + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (long) *sp; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *sp = (short) l; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_short) + +/* + * XDR unsigned short integers + */ +bool_t +xdr_u_short (XDR *xdrs, u_short *usp) +{ + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = (u_long) * usp; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *usp = (u_short) (u_long) l; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_u_short) + + +/* + * XDR a char + */ +bool_t +xdr_char (XDR *xdrs, char *cp) +{ + int i; + + i = (*cp); + if (!INTUSE(xdr_int) (xdrs, &i)) + { + return FALSE; + } + *cp = i; + return TRUE; +} + +/* + * XDR an unsigned char + */ +bool_t +xdr_u_char (XDR *xdrs, u_char *cp) +{ + u_int u; + + u = (*cp); + if (!INTUSE(xdr_u_int) (xdrs, &u)) + { + return FALSE; + } + *cp = u; + return TRUE; +} + +/* + * XDR booleans + */ +bool_t +xdr_bool (XDR *xdrs, bool_t *bp) +{ + long lb; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + lb = *bp ? XDR_TRUE : XDR_FALSE; + return XDR_PUTLONG (xdrs, &lb); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &lb)) + { + return FALSE; + } + *bp = (lb == XDR_FALSE) ? FALSE : TRUE; + return TRUE; + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_bool) + +/* + * XDR enumerations + */ +bool_t +xdr_enum (XDR *xdrs, enum_t *ep) +{ + enum sizecheck + { + SIZEVAL + }; /* used to find the size of an enum */ + + /* + * enums are treated as ints + */ + if (sizeof (enum sizecheck) == 4) + { +#if INT_MAX < LONG_MAX + long l; + + switch (xdrs->x_op) + { + case XDR_ENCODE: + l = *ep; + return XDR_PUTLONG (xdrs, &l); + + case XDR_DECODE: + if (!XDR_GETLONG (xdrs, &l)) + { + return FALSE; + } + *ep = l; + case XDR_FREE: + return TRUE; + + } + return FALSE; +#else + return INTUSE(xdr_long) (xdrs, (long *) ep); +#endif + } + else if (sizeof (enum sizecheck) == sizeof (short)) + { + return INTUSE(xdr_short) (xdrs, (short *) ep); + } + else + { + return FALSE; + } +} +INTDEF(xdr_enum) + +/* + * XDR opaque data + * Allows the specification of a fixed size sequence of opaque bytes. + * cp points to the opaque object and cnt gives the byte length. + */ +bool_t +xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) +{ + u_int rndup; + static char crud[BYTES_PER_XDR_UNIT]; + + /* + * if no data we are done + */ + if (cnt == 0) + return TRUE; + + /* + * round byte count to full xdr units + */ + rndup = cnt % BYTES_PER_XDR_UNIT; + if (rndup > 0) + rndup = BYTES_PER_XDR_UNIT - rndup; + + switch (xdrs->x_op) + { + case XDR_DECODE: + if (!XDR_GETBYTES (xdrs, cp, cnt)) + { + return FALSE; + } + if (rndup == 0) + return TRUE; + return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); + + case XDR_ENCODE: + if (!XDR_PUTBYTES (xdrs, cp, cnt)) + { + return FALSE; + } + if (rndup == 0) + return TRUE; + return XDR_PUTBYTES (xdrs, xdr_zero, rndup); + + case XDR_FREE: + return TRUE; + } + return FALSE; +} +INTDEF(xdr_opaque) + +/* + * XDR counted bytes + * *cpp is a pointer to the bytes, *sizep is the count. + * If *cpp is NULL maxsize bytes are allocated + */ +bool_t +xdr_bytes (xdrs, cpp, sizep, maxsize) + XDR *xdrs; + char **cpp; + u_int *sizep; + u_int maxsize; +{ + char *sp = *cpp; /* sp is the actual string pointer */ + u_int nodesize; + + /* + * first deal with the length since xdr bytes are counted + */ + if (!INTUSE(xdr_u_int) (xdrs, sizep)) + { + return FALSE; + } + nodesize = *sizep; + if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) + { + return FALSE; + } + + /* + * now deal with the actual bytes + */ + switch (xdrs->x_op) + { + case XDR_DECODE: + if (nodesize == 0) + { + return TRUE; + } + if (sp == NULL) + { + *cpp = sp = (char *) mem_alloc (nodesize); + } + if (sp == NULL) + { + fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); + return FALSE; + } + /* fall into ... */ + + case XDR_ENCODE: + return INTUSE(xdr_opaque) (xdrs, sp, nodesize); + + case XDR_FREE: + if (sp != NULL) + { + mem_free (sp, nodesize); + *cpp = NULL; + } + return TRUE; + } + return FALSE; +} +INTDEF(xdr_bytes) + +/* + * Implemented here due to commonality of the object. + */ +bool_t +xdr_netobj (xdrs, np) + XDR *xdrs; + struct netobj *np; +{ + + return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); +} +INTDEF(xdr_netobj) + +/* + * XDR a discriminated union + * Support routine for discriminated unions. + * You create an array of xdrdiscrim structures, terminated with + * an entry with a null procedure pointer. The routine gets + * the discriminant value and then searches the array of xdrdiscrims + * looking for that value. It calls the procedure given in the xdrdiscrim + * to handle the discriminant. If there is no specific routine a default + * routine may be called. + * If there is no specific or default routine an error is returned. + */ +bool_t +xdr_union (xdrs, dscmp, unp, choices, dfault) + XDR *xdrs; + enum_t *dscmp; /* enum to decide which arm to work on */ + char *unp; /* the union itself */ + const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ + xdrproc_t dfault; /* default xdr routine */ +{ + enum_t dscm; + + /* + * we deal with the discriminator; it's an enum + */ + if (!INTUSE(xdr_enum) (xdrs, dscmp)) + { + return FALSE; + } + dscm = *dscmp; + + /* + * search choices for a value that matches the discriminator. + * if we find one, execute the xdr routine for that value. + */ + for (; choices->proc != NULL_xdrproc_t; choices++) + { + if (choices->value == dscm) + return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); + } + + /* + * no match - execute the default xdr routine if there is one + */ + return ((dfault == NULL_xdrproc_t) ? FALSE : + (*dfault) (xdrs, unp, LASTUNSIGNED)); +} +INTDEF(xdr_union) + + +/* + * Non-portable xdr primitives. + * Care should be taken when moving these routines to new architectures. + */ + + +/* + * XDR null terminated ASCII strings + * xdr_string deals with "C strings" - arrays of bytes that are + * terminated by a NULL character. The parameter cpp references a + * pointer to storage; If the pointer is null, then the necessary + * storage is allocated. The last parameter is the max allowed length + * of the string as specified by a protocol. + */ +bool_t +xdr_string (xdrs, cpp, maxsize) + XDR *xdrs; + char **cpp; + u_int maxsize; +{ + char *sp = *cpp; /* sp is the actual string pointer */ + u_int size; + u_int nodesize; + + /* + * first deal with the length since xdr strings are counted-strings + */ + switch (xdrs->x_op) + { + case XDR_FREE: + if (sp == NULL) + { + return TRUE; /* already free */ + } + /* fall through... */ + case XDR_ENCODE: + if (sp == NULL) + return FALSE; + size = strlen (sp); + break; + case XDR_DECODE: + break; + } + if (!INTUSE(xdr_u_int) (xdrs, &size)) + { + return FALSE; + } + if (size > maxsize) + { + return FALSE; + } + nodesize = size + 1; + if (nodesize == 0) + { + /* This means an overflow. It a bug in the caller which + provided a too large maxsize but nevertheless catch it + here. */ + return FALSE; + } + + /* + * now deal with the actual bytes + */ + switch (xdrs->x_op) + { + case XDR_DECODE: + if (sp == NULL) + *cpp = sp = (char *) mem_alloc (nodesize); + if (sp == NULL) + { + fprintf (NULL, "%s", "xdr_string: out of memory\n"); + return FALSE; + } + sp[size] = 0; + /* fall into ... */ + + case XDR_ENCODE: + return INTUSE(xdr_opaque) (xdrs, sp, size); + + case XDR_FREE: + mem_free (sp, nodesize); + *cpp = NULL; + return TRUE; + } + return FALSE; +} +INTDEF(xdr_string) + +/* + * Wrapper for xdr_string that can be called directly from + * routines like clnt_call + */ +bool_t +xdr_wrapstring (xdrs, cpp) + XDR *xdrs; + char **cpp; +{ + if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) + { + return TRUE; + } + return FALSE; +} diff --git a/source/lib/xdrf_em64/xdr.h b/source/lib/xdrf_em64/xdr.h new file mode 100644 index 0000000..2602ad9 --- /dev/null +++ b/source/lib/xdrf_em64/xdr.h @@ -0,0 +1,379 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * xdr.h, External Data Representation Serialization Routines. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + */ + +#ifndef _RPC_XDR_H +#define _RPC_XDR_H 1 + +#include +#include +#include "types.h" + +/* We need FILE. */ +#include + +__BEGIN_DECLS + +/* + * XDR provides a conventional way for converting between C data + * types and an external bit-string representation. Library supplied + * routines provide for the conversion on built-in C data types. These + * routines and utility routines defined here are used to help implement + * a type encode/decode routine for each user-defined type. + * + * Each data type provides a single procedure which takes two arguments: + * + * bool_t + * xdrproc(xdrs, argresp) + * XDR *xdrs; + * *argresp; + * + * xdrs is an instance of a XDR handle, to which or from which the data + * type is to be converted. argresp is a pointer to the structure to be + * converted. The XDR handle contains an operation field which indicates + * which of the operations (ENCODE, DECODE * or FREE) is to be performed. + * + * XDR_DECODE may allocate space if the pointer argresp is null. This + * data can be freed with the XDR_FREE operation. + * + * We write only one procedure per data type to make it easy + * to keep the encode and decode procedures for a data type consistent. + * In many cases the same code performs all operations on a user defined type, + * because all the hard work is done in the component type routines. + * decode as a series of calls on the nested data types. + */ + +/* + * Xdr operations. XDR_ENCODE causes the type to be encoded into the + * stream. XDR_DECODE causes the type to be extracted from the stream. + * XDR_FREE can be used to release the space allocated by an XDR_DECODE + * request. + */ +enum xdr_op { + XDR_ENCODE = 0, + XDR_DECODE = 1, + XDR_FREE = 2 +}; + +/* + * This is the number of bytes per unit of external data. + */ +#define BYTES_PER_XDR_UNIT (4) +/* + * This only works if the above is a power of 2. But it's defined to be + * 4 by the appropriate RFCs. So it will work. And it's normally quicker + * than the old routine. + */ +#if 1 +#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) +#else /* this is the old routine */ +#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ + * BYTES_PER_XDR_UNIT) +#endif + +/* + * The XDR handle. + * Contains operation which is being applied to the stream, + * an operations vector for the particular implementation (e.g. see xdr_mem.c), + * and two private fields for the use of the particular implementation. + */ +typedef struct XDR XDR; +struct XDR + { + enum xdr_op x_op; /* operation; fast additional param */ + struct xdr_ops + { + bool_t (*x_getlong) (XDR *__xdrs, long *__lp); + /* get a long from underlying stream */ + bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); + /* put a long to " */ + bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); + /* get some bytes from " */ + bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); + /* put some bytes to " */ + u_int (*x_getpostn) (__const XDR *__xdrs); + /* returns bytes off from beginning */ + bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); + /* lets you reposition the stream */ + int32_t *(*x_inline) (XDR *__xdrs, u_int __len); + /* buf quick ptr to buffered data */ + void (*x_destroy) (XDR *__xdrs); + /* free privates of this xdr_stream */ + bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); + /* get a int from underlying stream */ + bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); + /* put a int to " */ + } + *x_ops; + caddr_t x_public; /* users' data */ + caddr_t x_private; /* pointer to private data */ + caddr_t x_base; /* private used for position info */ + u_int x_handy; /* extra private word */ + }; + +/* + * A xdrproc_t exists for each data type which is to be encoded or decoded. + * + * The second argument to the xdrproc_t is a pointer to an opaque pointer. + * The opaque pointer generally points to a structure of the data type + * to be decoded. If this pointer is 0, then the type routines should + * allocate dynamic storage of the appropriate size and return it. + * bool_t (*xdrproc_t)(XDR *, caddr_t *); + */ +typedef bool_t (*xdrproc_t) (XDR *, void *,...); + + +/* + * Operations defined on a XDR handle + * + * XDR *xdrs; + * int32_t *int32p; + * long *longp; + * caddr_t addr; + * u_int len; + * u_int pos; + */ +#define XDR_GETINT32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) +#define xdr_getint32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) + +#define XDR_PUTINT32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) +#define xdr_putint32(xdrs, int32p) \ + (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) + +#define XDR_GETLONG(xdrs, longp) \ + (*(xdrs)->x_ops->x_getlong)(xdrs, longp) +#define xdr_getlong(xdrs, longp) \ + (*(xdrs)->x_ops->x_getlong)(xdrs, longp) + +#define XDR_PUTLONG(xdrs, longp) \ + (*(xdrs)->x_ops->x_putlong)(xdrs, longp) +#define xdr_putlong(xdrs, longp) \ + (*(xdrs)->x_ops->x_putlong)(xdrs, longp) + +#define XDR_GETBYTES(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) +#define xdr_getbytes(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) + +#define XDR_PUTBYTES(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) +#define xdr_putbytes(xdrs, addr, len) \ + (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) + +#define XDR_GETPOS(xdrs) \ + (*(xdrs)->x_ops->x_getpostn)(xdrs) +#define xdr_getpos(xdrs) \ + (*(xdrs)->x_ops->x_getpostn)(xdrs) + +#define XDR_SETPOS(xdrs, pos) \ + (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) +#define xdr_setpos(xdrs, pos) \ + (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) + +#define XDR_INLINE(xdrs, len) \ + (*(xdrs)->x_ops->x_inline)(xdrs, len) +#define xdr_inline(xdrs, len) \ + (*(xdrs)->x_ops->x_inline)(xdrs, len) + +#define XDR_DESTROY(xdrs) \ + do { \ + if ((xdrs)->x_ops->x_destroy) \ + (*(xdrs)->x_ops->x_destroy)(xdrs); \ + } while (0) +#define xdr_destroy(xdrs) \ + do { \ + if ((xdrs)->x_ops->x_destroy) \ + (*(xdrs)->x_ops->x_destroy)(xdrs); \ + } while (0) + +/* + * Support struct for discriminated unions. + * You create an array of xdrdiscrim structures, terminated with + * a entry with a null procedure pointer. The xdr_union routine gets + * the discriminant value and then searches the array of structures + * for a matching value. If a match is found the associated xdr routine + * is called to handle that part of the union. If there is + * no match, then a default routine may be called. + * If there is no match and no default routine it is an error. + */ +#define NULL_xdrproc_t ((xdrproc_t)0) +struct xdr_discrim +{ + int value; + xdrproc_t proc; +}; + +/* + * Inline routines for fast encode/decode of primitive data types. + * Caveat emptor: these use single memory cycles to get the + * data from the underlying buffer, and will fail to operate + * properly if the data is not aligned. The standard way to use these + * is to say: + * if ((buf = XDR_INLINE(xdrs, count)) == NULL) + * return (FALSE); + * <<< macro calls >>> + * where ``count'' is the number of bytes of data occupied + * by the primitive data types. + * + * N.B. and frozen for all time: each data type here uses 4 bytes + * of external representation. + */ + +#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) +#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) +#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) +#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) + +/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms + * and shouldn't be used any longer. Code which use this defines or longs + * in the RPC code will not work on 64bit Solaris platforms ! + */ +#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) +#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) +#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) +#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) + + +#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) +#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) +#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) +#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) + +#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) +#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) + +/* + * These are the "generic" xdr routines. + * None of these can have const applied because it's not possible to + * know whether the call is a read or a write to the passed parameter + * also, the XDR structure is always updated by some of these calls. + */ +extern bool_t xdr_void (void) __THROW; +extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; +extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; +extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; +extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; +extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; +extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; +extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; +extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; +extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; +extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; +extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; +extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; +extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; +extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; +extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; +extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; +extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; +extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; +extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; +extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; +extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; +extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; +extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, + u_int __maxsize, u_int __elsize, xdrproc_t __elproc) + __THROW; +extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, + u_int __maxsize) __THROW; +extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; +extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; +extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, + __const struct xdr_discrim *__choices, + xdrproc_t dfault) __THROW; +extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; +extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; +extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, + u_int __elemsize, xdrproc_t __xdr_elem) __THROW; +extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; +extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; +extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, + xdrproc_t __proc) __THROW; +extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, + u_int __obj_size, xdrproc_t __xdr_obj) __THROW; +extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; +extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; + +/* + * Common opaque bytes objects used by many rpc protocols; + * declared here due to commonality. + */ +#define MAX_NETOBJ_SZ 1024 +struct netobj +{ + u_int n_len; + char *n_bytes; +}; +typedef struct netobj netobj; +extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; + +/* + * These are the public routines for the various implementations of + * xdr streams. + */ + +/* XDR using memory buffers */ +extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, + u_int __size, enum xdr_op __xop) __THROW; + +/* XDR using stdio library */ +extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) + __THROW; + +/* XDR pseudo records for tcp */ +extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, + u_int __recvsize, caddr_t __tcp_handle, + int (*__readit) (char *, char *, int), + int (*__writeit) (char *, char *, int)) __THROW; + +/* make end of xdr record */ +extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; + +/* move to beginning of next record */ +extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; + +/* true if no more input */ +extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; + +/* free memory buffers for xdr */ +extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; + +__END_DECLS + +#endif /* rpc/xdr.h */ diff --git a/source/lib/xdrf_em64/xdr_array.c b/source/lib/xdrf_em64/xdr_array.c new file mode 100644 index 0000000..836405c --- /dev/null +++ b/source/lib/xdrf_em64/xdr_array.c @@ -0,0 +1,174 @@ +# define INTUSE(name) name +# define INTDEF(name) +/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; +#endif + +/* + * xdr_array.c, Generic XDR routines implementation. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * These are the "non-trivial" xdr primitives used to serialize and de-serialize + * arrays. See xdr.h for more info on the interface to xdr. + */ + +#include +#include +#include "types.h" +#include "xdr.h" +#include +#include + +#ifdef USE_IN_LIBIO +# include +#endif + +#define LASTUNSIGNED ((u_int)0-1) + + +/* + * XDR an array of arbitrary elements + * *addrp is a pointer to the array, *sizep is the number of elements. + * If addrp is NULL (*sizep * elsize) bytes are allocated. + * elsize is the size (in bytes) of each element, and elproc is the + * xdr procedure to call to handle each element of the array. + */ +bool_t +xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) + XDR *xdrs; + caddr_t *addrp; /* array pointer */ + u_int *sizep; /* number of elements */ + u_int maxsize; /* max numberof elements */ + u_int elsize; /* size in bytes of each element */ + xdrproc_t elproc; /* xdr routine to handle each element */ +{ + u_int i; + caddr_t target = *addrp; + u_int c; /* the actual element count */ + bool_t stat = TRUE; + u_int nodesize; + + /* like strings, arrays are really counted arrays */ + if (!INTUSE(xdr_u_int) (xdrs, sizep)) + { + return FALSE; + } + c = *sizep; + /* + * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() + * doesn't actually use its second argument anyway. + */ + if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) + { + return FALSE; + } + nodesize = c * elsize; + + /* + * if we are deserializing, we may need to allocate an array. + * We also save time by checking for a null array if we are freeing. + */ + if (target == NULL) + switch (xdrs->x_op) + { + case XDR_DECODE: + if (c == 0) + return TRUE; + *addrp = target = mem_alloc (nodesize); + if (target == NULL) + { + fprintf (stderr, "%s", "xdr_array: out of memory\n"); + return FALSE; + } + __bzero (target, nodesize); + break; + + case XDR_FREE: + return TRUE; + default: + break; + } + + /* + * now we xdr each element of array + */ + for (i = 0; (i < c) && stat; i++) + { + stat = (*elproc) (xdrs, target, LASTUNSIGNED); + target += elsize; + } + + /* + * the array may need freeing + */ + if (xdrs->x_op == XDR_FREE) + { + mem_free (*addrp, nodesize); + *addrp = NULL; + } + return stat; +} +INTDEF(xdr_array) + +/* + * xdr_vector(): + * + * XDR a fixed length array. Unlike variable-length arrays, + * the storage of fixed length arrays is static and unfreeable. + * > basep: base of the array + * > size: size of the array + * > elemsize: size of each element + * > xdr_elem: routine to XDR each element + */ +bool_t +xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) + XDR *xdrs; + char *basep; + u_int nelem; + u_int elemsize; + xdrproc_t xdr_elem; +{ + u_int i; + char *elptr; + + elptr = basep; + for (i = 0; i < nelem; i++) + { + if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) + { + return FALSE; + } + elptr += elemsize; + } + return TRUE; +} diff --git a/source/lib/xdrf_em64/xdr_float.c b/source/lib/xdrf_em64/xdr_float.c new file mode 100644 index 0000000..15d3c88 --- /dev/null +++ b/source/lib/xdrf_em64/xdr_float.c @@ -0,0 +1,307 @@ +/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ +#if !defined(lint) && defined(SCCSIDS) +static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; +#endif + +/* + * xdr_float.c, Generic XDR routines implementation. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * These are the "floating point" xdr routines used to (de)serialize + * most common data items. See xdr.h for more info on the interface to + * xdr. + */ + +#include +#include + +#include "types.h" +#include "xdr.h" + +/* + * NB: Not portable. + * This routine works on Suns (Sky / 68000's) and Vaxen. + */ + +#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) + +#ifdef vax + +/* What IEEE single precision floating point looks like on a Vax */ +struct ieee_single { + unsigned int mantissa: 23; + unsigned int exp : 8; + unsigned int sign : 1; +}; + +/* Vax single precision floating point */ +struct vax_single { + unsigned int mantissa1 : 7; + unsigned int exp : 8; + unsigned int sign : 1; + unsigned int mantissa2 : 16; +}; + +#define VAX_SNG_BIAS 0x81 +#define IEEE_SNG_BIAS 0x7f + +static struct sgl_limits { + struct vax_single s; + struct ieee_single ieee; +} sgl_limits[2] = { + {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ + { 0x0, 0xff, 0x0 }}, /* Max IEEE */ + {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ + { 0x0, 0x0, 0x0 }} /* Min IEEE */ +}; +#endif /* vax */ + +bool_t +xdr_float(xdrs, fp) + XDR *xdrs; + float *fp; +{ +#ifdef vax + struct ieee_single is; + struct vax_single vs, *vsp; + struct sgl_limits *lim; + int i; +#endif + switch (xdrs->x_op) { + + case XDR_ENCODE: +#ifdef vax + vs = *((struct vax_single *)fp); + for (i = 0, lim = sgl_limits; + i < sizeof(sgl_limits)/sizeof(struct sgl_limits); + i++, lim++) { + if ((vs.mantissa2 == lim->s.mantissa2) && + (vs.exp == lim->s.exp) && + (vs.mantissa1 == lim->s.mantissa1)) { + is = lim->ieee; + goto shipit; + } + } + is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; + is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; + shipit: + is.sign = vs.sign; + return (XDR_PUTLONG(xdrs, (long *)&is)); +#else + if (sizeof(float) == sizeof(long)) + return (XDR_PUTLONG(xdrs, (long *)fp)); + else if (sizeof(float) == sizeof(int)) { + long tmp = *(int *)fp; + return (XDR_PUTLONG(xdrs, &tmp)); + } + break; +#endif + + case XDR_DECODE: +#ifdef vax + vsp = (struct vax_single *)fp; + if (!XDR_GETLONG(xdrs, (long *)&is)) + return (FALSE); + for (i = 0, lim = sgl_limits; + i < sizeof(sgl_limits)/sizeof(struct sgl_limits); + i++, lim++) { + if ((is.exp == lim->ieee.exp) && + (is.mantissa == lim->ieee.mantissa)) { + *vsp = lim->s; + goto doneit; + } + } + vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; + vsp->mantissa2 = is.mantissa; + vsp->mantissa1 = (is.mantissa >> 16); + doneit: + vsp->sign = is.sign; + return (TRUE); +#else + if (sizeof(float) == sizeof(long)) + return (XDR_GETLONG(xdrs, (long *)fp)); + else if (sizeof(float) == sizeof(int)) { + long tmp; + if (XDR_GETLONG(xdrs, &tmp)) { + *(int *)fp = tmp; + return (TRUE); + } + } + break; +#endif + + case XDR_FREE: + return (TRUE); + } + return (FALSE); +} + +/* + * This routine works on Suns (Sky / 68000's) and Vaxen. + */ + +#ifdef vax +/* What IEEE double precision floating point looks like on a Vax */ +struct ieee_double { + unsigned int mantissa1 : 20; + unsigned int exp : 11; + unsigned int sign : 1; + unsigned int mantissa2 : 32; +}; + +/* Vax double precision floating point */ +struct vax_double { + unsigned int mantissa1 : 7; + unsigned int exp : 8; + unsigned int sign : 1; + unsigned int mantissa2 : 16; + unsigned int mantissa3 : 16; + unsigned int mantissa4 : 16; +}; + +#define VAX_DBL_BIAS 0x81 +#define IEEE_DBL_BIAS 0x3ff +#define MASK(nbits) ((1 << nbits) - 1) + +static struct dbl_limits { + struct vax_double d; + struct ieee_double ieee; +} dbl_limits[2] = { + {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ + { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ + {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ + { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ +}; + +#endif /* vax */ + + +bool_t +xdr_double(xdrs, dp) + XDR *xdrs; + double *dp; +{ +#ifdef vax + struct ieee_double id; + struct vax_double vd; + register struct dbl_limits *lim; + int i; +#endif + + switch (xdrs->x_op) { + + case XDR_ENCODE: +#ifdef vax + vd = *((struct vax_double *)dp); + for (i = 0, lim = dbl_limits; + i < sizeof(dbl_limits)/sizeof(struct dbl_limits); + i++, lim++) { + if ((vd.mantissa4 == lim->d.mantissa4) && + (vd.mantissa3 == lim->d.mantissa3) && + (vd.mantissa2 == lim->d.mantissa2) && + (vd.mantissa1 == lim->d.mantissa1) && + (vd.exp == lim->d.exp)) { + id = lim->ieee; + goto shipit; + } + } + id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; + id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); + id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | + (vd.mantissa3 << 13) | + ((vd.mantissa4 >> 3) & MASK(13)); + shipit: + id.sign = vd.sign; + dp = (double *)&id; +#endif + if (2*sizeof(long) == sizeof(double)) { + long *lp = (long *)dp; + return (XDR_PUTLONG(xdrs, lp+!LSW) && + XDR_PUTLONG(xdrs, lp+LSW)); + } else if (2*sizeof(int) == sizeof(double)) { + int *ip = (int *)dp; + long tmp[2]; + tmp[0] = ip[!LSW]; + tmp[1] = ip[LSW]; + return (XDR_PUTLONG(xdrs, tmp) && + XDR_PUTLONG(xdrs, tmp+1)); + } + break; + + case XDR_DECODE: +#ifdef vax + lp = (long *)&id; + if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) + return (FALSE); + for (i = 0, lim = dbl_limits; + i < sizeof(dbl_limits)/sizeof(struct dbl_limits); + i++, lim++) { + if ((id.mantissa2 == lim->ieee.mantissa2) && + (id.mantissa1 == lim->ieee.mantissa1) && + (id.exp == lim->ieee.exp)) { + vd = lim->d; + goto doneit; + } + } + vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; + vd.mantissa1 = (id.mantissa1 >> 13); + vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | + (id.mantissa2 >> 29); + vd.mantissa3 = (id.mantissa2 >> 13); + vd.mantissa4 = (id.mantissa2 << 3); + doneit: + vd.sign = id.sign; + *dp = *((double *)&vd); + return (TRUE); +#else + if (2*sizeof(long) == sizeof(double)) { + long *lp = (long *)dp; + return (XDR_GETLONG(xdrs, lp+!LSW) && + XDR_GETLONG(xdrs, lp+LSW)); + } else if (2*sizeof(int) == sizeof(double)) { + int *ip = (int *)dp; + long tmp[2]; + if (XDR_GETLONG(xdrs, tmp+!LSW) && + XDR_GETLONG(xdrs, tmp+LSW)) { + ip[0] = tmp[0]; + ip[1] = tmp[1]; + return (TRUE); + } + } + break; +#endif + + case XDR_FREE: + return (TRUE); + } + return (FALSE); +} diff --git a/source/lib/xdrf_em64/xdr_stdio.c b/source/lib/xdrf_em64/xdr_stdio.c new file mode 100644 index 0000000..12b1709 --- /dev/null +++ b/source/lib/xdrf_em64/xdr_stdio.c @@ -0,0 +1,196 @@ +/* + * Sun RPC is a product of Sun Microsystems, Inc. and is provided for + * unrestricted use provided that this legend is included on all tape + * media and as a part of the software program in whole or part. Users + * may copy or modify Sun RPC without charge, but are not authorized + * to license or distribute it to anyone else except as part of a product or + * program developed by the user. + * + * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE + * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR + * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. + * + * Sun RPC is provided with no support and without any obligation on the + * part of Sun Microsystems, Inc. to assist in its use, correction, + * modification or enhancement. + * + * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE + * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC + * OR ANY PART THEREOF. + * + * In no event will Sun Microsystems, Inc. be liable for any lost revenue + * or profits or other special, indirect and consequential damages, even if + * Sun has been advised of the possibility of such damages. + * + * Sun Microsystems, Inc. + * 2550 Garcia Avenue + * Mountain View, California 94043 + */ + +/* + * xdr_stdio.c, XDR implementation on standard i/o file. + * + * Copyright (C) 1984, Sun Microsystems, Inc. + * + * This set of routines implements a XDR on a stdio stream. + * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes + * from the stream. + */ + +#include "types.h" +#include +#include "xdr.h" + +#ifdef USE_IN_LIBIO +# include +# define fflush(s) INTUSE(_IO_fflush) (s) +# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) +# define ftell(s) INTUSE(_IO_ftell) (s) +# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) +#endif + +static bool_t xdrstdio_getlong (XDR *, long *); +static bool_t xdrstdio_putlong (XDR *, const long *); +static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); +static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); +static u_int xdrstdio_getpos (const XDR *); +static bool_t xdrstdio_setpos (XDR *, u_int); +static int32_t *xdrstdio_inline (XDR *, u_int); +static void xdrstdio_destroy (XDR *); +static bool_t xdrstdio_getint32 (XDR *, int32_t *); +static bool_t xdrstdio_putint32 (XDR *, const int32_t *); + +/* + * Ops vector for stdio type XDR + */ +static const struct xdr_ops xdrstdio_ops = +{ + xdrstdio_getlong, /* deserialize a long int */ + xdrstdio_putlong, /* serialize a long int */ + xdrstdio_getbytes, /* deserialize counted bytes */ + xdrstdio_putbytes, /* serialize counted bytes */ + xdrstdio_getpos, /* get offset in the stream */ + xdrstdio_setpos, /* set offset in the stream */ + xdrstdio_inline, /* prime stream for inline macros */ + xdrstdio_destroy, /* destroy stream */ + xdrstdio_getint32, /* deserialize a int */ + xdrstdio_putint32 /* serialize a int */ +}; + +/* + * Initialize a stdio xdr stream. + * Sets the xdr stream handle xdrs for use on the stream file. + * Operation flag is set to op. + */ +void +xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) +{ + xdrs->x_op = op; + /* We have to add the const since the `struct xdr_ops' in `struct XDR' + is not `const'. */ + xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; + xdrs->x_private = (caddr_t) file; + xdrs->x_handy = 0; + xdrs->x_base = 0; +} + +/* + * Destroy a stdio xdr stream. + * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. + */ +static void +xdrstdio_destroy (XDR *xdrs) +{ + (void) fflush ((FILE *) xdrs->x_private); + /* xx should we close the file ?? */ +}; + +static bool_t +xdrstdio_getlong (XDR *xdrs, long *lp) +{ + u_int32_t mycopy; + + if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + *lp = (long) ntohl (mycopy); + return TRUE; +} + +static bool_t +xdrstdio_putlong (XDR *xdrs, const long *lp) +{ + int32_t mycopy = htonl ((u_int32_t) *lp); + + if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + return TRUE; +} + +static bool_t +xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) +{ + if ((len != 0) && (fread (addr, (int) len, 1, + (FILE *) xdrs->x_private) != 1)) + return FALSE; + return TRUE; +} + +static bool_t +xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) +{ + if ((len != 0) && (fwrite (addr, (int) len, 1, + (FILE *) xdrs->x_private) != 1)) + return FALSE; + return TRUE; +} + +static u_int +xdrstdio_getpos (const XDR *xdrs) +{ + return (u_int) ftell ((FILE *) xdrs->x_private); +} + +static bool_t +xdrstdio_setpos (XDR *xdrs, u_int pos) +{ + return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; +} + +static int32_t * +xdrstdio_inline (XDR *xdrs, u_int len) +{ + /* + * Must do some work to implement this: must insure + * enough data in the underlying stdio buffer, + * that the buffer is aligned so that we can indirect through a + * long *, and stuff this pointer in xdrs->x_buf. Doing + * a fread or fwrite to a scratch buffer would defeat + * most of the gains to be had here and require storage + * management on this buffer, so we don't do this. + */ + return NULL; +} + +static bool_t +xdrstdio_getint32 (XDR *xdrs, int32_t *ip) +{ + int32_t mycopy; + + if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + *ip = ntohl (mycopy); + return TRUE; +} + +static bool_t +xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) +{ + int32_t mycopy = htonl (*ip); + + ip = &mycopy; + if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) + return FALSE; + return TRUE; +} + +/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/lib/xdrf_em64/xdrf.h b/source/lib/xdrf_em64/xdrf.h new file mode 100644 index 0000000..dedf5a2 --- /dev/null +++ b/source/lib/xdrf_em64/xdrf.h @@ -0,0 +1,10 @@ +/*_________________________________________________________________ + | + | xdrf.h - include file for C routines that want to use the + | functions below. +*/ + +int xdropen(XDR *xdrs, const char *filename, const char *type); +int xdrclose(XDR *xdrs) ; +int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; + diff --git a/source/unres/CMakeLists.txt b/source/unres/CMakeLists.txt deleted file mode 100644 index 41e1c5a..0000000 --- a/source/unres/CMakeLists.txt +++ /dev/null @@ -1,5 +0,0 @@ -# -# CMake project file for UNRES -# - -add_subdirectory(src_MD) diff --git a/source/unres/src_CSA/CMakeLists.txt b/source/unres/src_CSA/CMakeLists.txt new file mode 100644 index 0000000..48133b8 --- /dev/null +++ b/source/unres/src_CSA/CMakeLists.txt @@ -0,0 +1,311 @@ +# +# CMake project file for UNRES CSA version +# + +enable_language (Fortran) + +#================================ +# Set source file lists +#================================ +set(UNRES_CSA_SRC0 + arcos.f + banach.f + bank.F + cartder.F + cartprint.f + chainbuild.F + checkder_p.F + cinfo.f + contact.f + convert.f + cored.f + csa.f + dfa.F + diff12.f + distfit.f + djacob.f + econstr_local.F + elecont.f + energy_p_new_barrier.F + fitsq.f + gen_rand_conf.F + geomout_min.F + gradient_p.F + indexx.f + initialize_p.F + intcartderiv.F + intcor.f + intlocal.f + int_to_cart.f + local_move.f + matmult.f + minimize_p.F + minim_jlee.F + minim_mult.F + misc.f + MP.F + newconf.f + parmread.F + pinorm.f + printmat.f + prng_32.F + randgens.f + ran.f + readpdb.F + readrtns_csa.F + rescode.f + rmdd.f + rmsd.F + sc_move.F + shift.F + sumsld.f + test.F + timing.F + TMscore_subroutine.f + together.F + unres_csa.F +) + +set(UNRES_CSA_SRC3 energy_p_new_barrier.F gradient_p.F ) + +set(UNRES_CSA_PP_SRC + bank.F + cartder.F + chainbuild.F + checkder_p.F + dfa.F + econstr_local.F + energy_p_new_barrier.F + gen_rand_conf.F + geomout_min.F + gradient_p.F + initialize_p.F + intcartderiv.F + minimize_p.F + minim_jlee.F + minim_mult.F + MP.F + parmread.F + prng_32.F + readpdb.F + readrtns_csa.F + rmsd.F + sc_move.F + shift.F + test.F + timing.F + together.F + unres_csa.F +) + + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(FFLAGS0 "-c -ip -w" ) + set(FFLAGS1 "-c -w -g -d2 -CA -CB" ) + set(FFLAGS2 "-c -w -g -00 ") + #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" ) + set(FFLAGS3 "-c -w -ipo " ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-c -I. " ) + set(FFLAGS1 "-c -g -I. " ) + set(FFLAGS2 "-c -I. ") + #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" ) + set(FFLAGS3 "-c -I. " ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +# Add MPI compiler flags +if(UNRES_WITH_MPI) + set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS1 "${FFLAGS1} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS2 "${FFLAGS2} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS3 "${FFLAGS3} -I${MPIF_INCLUDE_DIRECTORIES}") +endif(UNRES_WITH_MPI) + +set_property(SOURCE ${UNRES_CSA_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} ) +set_property(SOURCE ${UNRES_CSA_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} ) +set_property(SOURCE ${UNRES_CSA_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} ) +set_property(SOURCE ${UNRES_CSA_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} ) + +#========================================= +# Settings for CSA force fields +#========================================= + +if(UNRES_CSA_FF STREQUAL "CASP3" ) + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_TOR -DCRYST_BOND -DCRYST_THETA -DCRYST_SC -DMOMENT" ) +elseif(UNRES_CSA_FF STREQUAL "ALPHA") + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DMOMENT -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +elseif(UNRES_CSA_FF STREQUAL "BETA") + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DMOMENT -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +elseif(UNRES_CSA_FF STREQUAL "ALPHABETA") + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DMOMENT -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +elseif(UNRES_CSA_FF STREQUAL "CASP5") + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +elseif(UNRES_CSA_FF STREQUAL "3P") + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +elseif(UNRES_CSA_FF STREQUAL "4P") + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) +endif(UNRES_CSA_FF STREQUAL "CASP3") + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +#========================================= +# Compiler specific flags +#========================================= + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + # Add ifort preprocessor flags + set(CPPFLAGS "${CPPFLAGS} -DPGI") +elseif (Fortran_COMPILER_NAME STREQUAL "f95") + # Add new gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + # Add old gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + +#========================================= +# Add MPI preprocessor flags +#========================================= +set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") + +# Apply preprocesor flags to *.F files +set_property(SOURCE ${UNRES_CSA_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + +#======================================== +# Setting binary name +#======================================== +set(UNRES_BIN "unresCSA_${Fortran_COMPILER_NAME}_${UNRES_CSA_FF}.exe") + +#========================================= +# cinfo.f stupid workaround for cmake +# - shame on me ]:) +#========================================= +set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" ) +add_executable(compinfo-csa compinfo.c) +set_target_properties(compinfo-csa PROPERTIES OUTPUT_NAME compinfo) + +set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true + DEPENDS compinfo-csa ) +set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# Set full unres CSA sources +#========================================= +set(UNRES_CSA_SRCS ${UNRES_CSA_SRC0} ${UNRES_CSA_SRC3} ${UNRES_CINFO_DIR}/cinfo.f ) + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_BIN-CSA ${UNRES_CSA_SRCS} ) +set_target_properties(UNRES_BIN-CSA PROPERTIES OUTPUT_NAME ${UNRES_BIN}) + +#set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD ) +#add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB}) + +#========================================= +# Link libraries +#========================================= +# link MPI library (libmpich.a) +target_link_libraries( UNRES_BIN-CSA ${MPIF_LIBRARIES} ) +# link libxdrf.a +#target_link_libraries( ${UNRES_BIN} xdrf ) + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= +# test_single_ala.sh +#========================================= + +#FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh +#"#!/bin/sh +#export POT=GB +#export PREFIX=ala10 +#----------------------------------------------------------------------------- +#UNRES_BIN=./${UNRES_BIN} +#----------------------------------------------------------------------------- +#DD=${CMAKE_SOURCE_DIR}/PARAM +#export BONDPAR=$DD/bond.parm +#export THETPAR=$DD/thetaml.5parm +#export ROTPAR=$DD/scgauss.parm +#export TORPAR=$DD/torsion_631Gdp.parm +#export TORDPAR=$DD/torsion_double_631Gdp.parm +#export ELEPAR=$DD/electr_631Gdp.parm +#export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k +#export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3 +#export SCPPAR=$DD/scp.parm +#export SCCORPAR=$DD/rotcorr_AM1.parm +#export PATTERN=$DD/patterns.cart +#----------------------------------------------------------------------------- +#$UNRES_BIN +#") + +#========================================= +# ala10.inp +#========================================= + +#file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp +#"ala10 unblocked +#SEED=-1111333 MD ONE_LETTER rescale_mode=2 PDBOUT +#nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0 & +#reset_moment=1000 reset_vel=1000 MDPDB +#WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873 & +#WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000 & +#WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000 & +#WVDWPP=0.11371 WHPB=1.00000 & +#CUTOFF=7.00000 WCORR4=0.00000 +#12 +#XAAAAAAAAAAX +# 0 +# 0 +# 90.0000 90.0000 90.0000 90.000 90.000 90.000 90.000 90.000 +# 90.0000 90.0000 +# 180.0000 180.0000 180.0000 180.000 180.000 180.000 180.000 180.000 +# 180.0000 +# 110.0000 110.0000 110.0000 100.000 110.000 100.000 110.000 110.000 +# 110.0000 110.0000 +# -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000 +# -120.0000 -120.0000 +#") + + +# Add tests + +#if(NOT UNRES_WITH_MPI) + +# add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) + +#endif(NOT UNRES_WITH_MPI) + diff --git a/source/unres/src_CSA/cinfo.f.new b/source/unres/src_CSA/cinfo.f.new deleted file mode 100644 index e69de29..0000000 diff --git a/source/unres/src_CSA/compinfo.c b/source/unres/src_CSA/compinfo.c index 813cf31..e28f686 100644 --- a/source/unres/src_CSA/compinfo.c +++ b/source/unres/src_CSA/compinfo.c @@ -14,10 +14,10 @@ time_t Tp; in=fopen("cinfo.f","r"); out=fopen("cinfo.f.new","w"); -fgets(buf,498,in); -fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); -fgets(buf,498,in); -sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); +if (fgets(buf,498,in) != NULL) + fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); +if (fgets(buf,498,in) != NULL) + sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); iv3++; fprintf(out,"C %d %d %d\n",iv1,iv2,iv3); fprintf(out," subroutine cinfo\n"); @@ -26,18 +26,22 @@ fprintf(out," write(iout,*)'++++ Compile info ++++'\n"); fprintf(out," write(iout,*)'Version %d.%-d build %d'\n",iv1,iv2,iv3); uname(&Name); time(&Tp); -system("rm tmptmp; whoami > tmptmp"); +system("whoami > tmptmp"); in1=fopen("tmptmp","r"); -fscanf(in1,"%s",buf1); -fclose(in1); +if (fscanf(in1,"%s",buf1) != EOF) +{ p1=ctime(&Tp); p1[strlen(p1)-1]='\0'; fprintf(out," write(iout,*)'compiled %s'\n",p1); fprintf(out," write(iout,*)'compiled by %s@%s'\n",buf1,Name.nodename); fprintf(out," write(iout,*)'OS name: %s '\n",Name.sysname); fprintf(out," write(iout,*)'OS release: %s '\n",Name.release); -fprintf(out," write(iout,*)'OS version: %s '\n",Name.version); +fprintf(out," write(iout,*)'OS version:',\n"); +fprintf(out," & ' %s '\n",Name.version); fprintf(out," write(iout,*)'flags:'\n"); +} +system("rm tmptmp"); +fclose(in1); in1=fopen("Makefile","r"); while(fgets(buf,498,in1) != NULL) { @@ -55,8 +59,8 @@ while(fgets(buf,498,in1) != NULL) { strcat(buf,"\\"); fprintf(out," write(iout,*)'%s'\n",buf); - fgets(buf,498,in1); - buf[strlen(buf)-1]='\0'; + if (fgets(buf,498,in1) != NULL) + buf[strlen(buf)-1]='\0'; if(strlen(buf) > 49) { buf[47]='\0'; diff --git a/source/unres/src_CSA/energy_p_new_barrier.F b/source/unres/src_CSA/energy_p_new_barrier.F index a46c47d..f0f93ef 100644 --- a/source/unres/src_CSA/energy_p_new_barrier.F +++ b/source/unres/src_CSA/energy_p_new_barrier.F @@ -7966,18 +7966,18 @@ c-------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ /j\ -C / \ / \ -C /| o | | o |\ -C \ j|/k\| / \ |/k\|l / -C \ / \ / \ / \ / -C o o o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ /j\ C +C / \ / \ C +C /| o | | o |\ C +C \ j|/k\| / \ |/k\|l / C +C \ / \ / \ / \ / C +C o o o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC itk=itortyp(itype(k)) s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i)) @@ -8071,18 +8071,18 @@ c---------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C \ /l\ /j\ / -C \ / \ / \ / -C o| o | | o |o -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C \ /l\ /j\ / C +C \ / \ / \ / C +C o| o | | o |o C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l C AL 7/4/01 s1 would occur in the sixth-order moment, @@ -8253,18 +8253,18 @@ c---------------------------------------------------------------------------- double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C j|/k\| / |/k\|l / -C / \ / / \ / -C / o / o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C j|/k\| / |/k\|l / C +C / \ / / \ / C +C / o / o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective @@ -8370,18 +8370,18 @@ c---------------------------------------------------------------------------- & auxvec1(2),auxmat1(2,2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o \ o \ -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o \ o \ C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective diff --git a/source/unres/src_MD-M/.symbolsizes.txt.swp b/source/unres/src_MD-M/.symbolsizes.txt.swp deleted file mode 100644 index 57d99fd..0000000 Binary files a/source/unres/src_MD-M/.symbolsizes.txt.swp and /dev/null differ diff --git a/source/unres/src_MD-M/CMakeLists.txt b/source/unres/src_MD-M/CMakeLists.txt new file mode 100644 index 0000000..8307560 --- /dev/null +++ b/source/unres/src_MD-M/CMakeLists.txt @@ -0,0 +1,343 @@ +# +# CMake project file for UNRES with MD for single chains +# + +enable_language (Fortran) + +#================================ +# build the xdrf library +#================================ +#add_subdirectory(xdrf) + +#================================ +# Set source file lists +#================================ +set(UNRES_MDM_SRC0 + add.f + arcos.f + banach.f + bank.F + blas.f + bond_move.f + cartder.F + cartprint.f + chainbuild.F + check_bond.f + checkder_p.F + check_sc_distr.f + compare_s1.F + contact.f + convert.f + cored.f + csa.f + dihed_cons.F + diff12.f + distfit.f + djacob.f + econstr_local.F + eigen.f + elecont.f + energy_split-sep.F + entmcm.F + fitsq.f + gauss.f + gen_rand_conf.F + geomout.F + gnmr1.f + indexx.f + initialize_p.F + intcartderiv.F + intcor.f + intlocal.f + int_to_cart.f + kinetic_lesyng.f + lagrangian_lesyng.F + local_move.f + map.f + matmult.f + mc.F + mcm.F + MD_A-MTS.F + minimize_p.F + minim_jlee.F + minim_mcmf.F + misc.f + moments.f + MP.F + MREMD.F + muca_md.f + newconf.f + parmread.F + permut.F + pinorm.f + printmat.f + q_measure.F + ran.f + randgens.f + rattle.F + readpdb.F + readrtns_CSA.F + refsys.f + regularize.F + rescode.f + rmdd.f + rmsd.F + sc_move.F + shift.F + sort.f + stochfric.F + sumsld.f + surfatom.f + test.F + thread.F + timing.F + together.F + unres.F +) + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(UNRES_MDM_SRC0 ${UNRES_MDM_SRC0} prng.f ) +else() + set(UNRES_MDM_SRC0 ${UNRES_MDM_SRC0} prng_32.F ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +set(UNRES_MDM_SRC3 energy_p_new_barrier.F energy_p_new-sep_barrier.F gradient_p.F ) + +set(UNRES_MDM_PP_SRC + bank.F + cartder.F + chainbuild.F + checkder_p.F + compare_s1.F + cored.f + csa.f + dihed_cons.F + diff12.f + econstr_local.F + energy_p_new.F + energy_p_new_barrier.F + energy_p_new-sep_barrier.F + energy_split-sep.F + entmcm.F + gen_rand_conf.F + geomout.F + gradient_p.F + intcor.f + initialize_p.F + intcartderiv.F + lagrangian_lesyng.F + matmult.f + mc.F + mcm.F + MD_A-MTS.F + minimize_p.F + minim_jlee.F + minim_mcmf.F + MP.F + MREMD.F + newconf.f + parmread.F + permut.F + q_measure1.F + q_measure3.F + q_measure.F + ran.f + rattle.F + readpdb.F + readrtns_CSA.F + regularize.F + rmdd.f + rmsd.F + sc_move.F + shift.F + stochfric.F + sumsld.f + test.F + thread.F + timing.F + together.F + unres.F + proc_proc.c +) + + +if(NOT Fortran_COMPILER_NAME STREQUAL "ifort") + set(UNRES_MDM_PP_SRC "${UNRES_MDM_PP_SRC} prng_32.F") +endif(NOT Fortran_COMPILER_NAME STREQUAL "ifort") + + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(FFLAGS0 "-ip -w" ) + set(FFLAGS1 "-w -g -d2 -CA -CB" ) + set(FFLAGS2 "-w -g -00 ") + #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" ) + set(FFLAGS3 "-w -ipo " ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-I. " ) + set(FFLAGS1 "-g -I. " ) + set(FFLAGS2 "-I. ") + #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" ) + set(FFLAGS3 "-I. " ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +# Add MPI compiler flags +if(UNRES_WITH_MPI) + set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS1 "${FFLAGS1} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS2 "${FFLAGS2} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS3 "${FFLAGS3} -I${MPIF_INCLUDE_DIRECTORIES}") +endif(UNRES_WITH_MPI) + +set_property(SOURCE ${UNRES_MDM_SRC0} APPEND PROPERTY COMPILE_FLAGS ${FFLAGS0} ) +#set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} ) +#set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} ) +set_property(SOURCE ${UNRES_MDM_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} ) + +#========================================= +# Settings for GAB force field +#========================================= +if(UNRES_MD_FF STREQUAL "GAB" ) + # set preprocesor flags + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) + +#========================================= +# Settings for E0LL2Y force field +#========================================= +elseif(UNRES_MD_FF STREQUAL "E0LL2Y") + # set preprocesor flags + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0" ) +endif(UNRES_MD_FF STREQUAL "GAB") + + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + + +#========================================= +# Compiler specific flags +#========================================= + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + # Add ifort preprocessor flags + set(CPPFLAGS "${CPPFLAGS} -DPGI") +elseif (Fortran_COMPILER_NAME STREQUAL "f95") + # Add new gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + # Add old gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +#========================================= +# Add MPI preprocessor flags +#========================================= +if (UNRES_WITH_MPI) + set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") +endif(UNRES_WITH_MPI) + + +# add 64-bit specific preprocessor flags +if (architektura STREQUAL "64") + set(CPPFLAGS "${CPPFLAGS} -DAMD64") +endif (architektura STREQUAL "64") + + + +# Apply preprocesor flags to *.F files +set_property(SOURCE ${UNRES_MDM_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + +# Apply preprocesor flags to proc_proc.c +set_property(SOURCE proc_proc.c PROPERTY COMPILE_DEFINITIONS "SGI" ) + + +#======================================== +# Setting binary name +#======================================== +if(UNRES_WITH_MPI) + # binary with mpi + set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_MPICH_${UNRES_FF}.exe") +else(UNRES_WITH_MPI) + # binary without mpi + set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_single_${UNRES_FF}.exe") +endif(UNRES_WITH_MPI) + +#========================================= +# cinfo.f stupid workaround for cmake +# - shame on me ]:) +#========================================= +set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" ) +add_executable(compinfo-mdm compinfo.c) +set_target_properties(compinfo-mdm PROPERTIES OUTPUT_NAME compinfo) + +set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true + DEPENDS compinfo-mdm ) +set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# Set full unres MD-M sources +#========================================= +set(UNRES_MDM_SRCS ${UNRES_MDM_SRC0} ${UNRES_MDM_SRC3} ${UNRES_CINFO_DIR}/cinfo.f proc_proc.c ) + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_BIN-MD-M ${UNRES_MDM_SRCS} ) +set_target_properties(UNRES_BIN-MD-M PROPERTIES OUTPUT_NAME ${UNRES_BIN}) + +#set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD ) +#add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB}) + +#========================================= +# Link libraries +#========================================= +# link MPI library (libmpich.a) +if(UNRES_WITH_MPI) + target_link_libraries( UNRES_BIN-MD-M ${MPIF_LIBRARIES} ) +endif(UNRES_WITH_MPI) +# link libxdrf.a +#message("UNRES_XDRFLIB=${UNRES_XDRFLIB}") +target_link_libraries( UNRES_BIN-MD-M xdrf ) + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= + +#if(NOT UNRES_WITH_MPI) + +# add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) + +#endif(NOT UNRES_WITH_MPI) + diff --git a/source/unres/src_MD-M/a b/source/unres/src_MD-M/a deleted file mode 100644 index a1d1e12..0000000 --- a/source/unres/src_MD-M/a +++ /dev/null @@ -1,2361 +0,0 @@ -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 unres.F -** _main === End of Compilation 1 === -** exec_md === End of Compilation 2 === -** exec_mremd === End of Compilation 3 === -** exec_eeval_or_minim === End of Compilation 4 === -** exec_regularize === End of Compilation 5 === -** exec_thread === End of Compilation 6 === -** exec_mc === End of Compilation 7 === -** exec_mult_eeval_or_minim === End of Compilation 8 === -** exec_checkgrad === End of Compilation 9 === -** exec_map === End of Compilation 10 === -** exec_csa === End of Compilation 11 === -** exec_softreg === End of Compilation 12 === -1501-510 Compilation successful for file unres.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o arcos.o arcos.f -** arcos === End of Compilation 1 === -1501-510 Compilation successful for file arcos.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o cartprint.o cartprint.f -** cartprint === End of Compilation 1 === -1501-510 Compilation successful for file cartprint.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 chainbuild.F -** chainbuild === End of Compilation 1 === -** orig_frame === End of Compilation 2 === -** locate_next_res === End of Compilation 3 === -** locate_side_chain === End of Compilation 4 === -1501-510 Compilation successful for file chainbuild.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o convert.o convert.f -** geom_to_var === End of Compilation 1 === -** var_to_geom === End of Compilation 2 === -** convert_side === End of Compilation 3 === -** reduce === End of Compilation 4 === -** thetnorm === End of Compilation 5 === -** var_to_geom_restr === End of Compilation 6 === -1501-510 Compilation successful for file convert.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 initialize_p.F -** (block) === End of Compilation 1 === -** initialize === End of Compilation 2 === -** nazwy === End of Compilation 3 === -** init_int_table === End of Compilation 4 === -** int_bounds === End of Compilation 5 === -** int_bounds1 === End of Compilation 6 === -** int_partition === End of Compilation 7 === -** hpb_partition === End of Compilation 8 === -1501-510 Compilation successful for file initialize_p.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 matmult.f -** matmult === End of Compilation 1 === -1501-510 Compilation successful for file matmult.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 readrtns_CSA.F -** readrtns === End of Compilation 1 === -** read_control === End of Compilation 2 === -** read_remdpar === End of Compilation 3 === -** read_mdpar === End of Compilation 4 === -** molread === End of Compilation 5 === -** seq_comp === End of Compilation 6 === -** read_bridge === End of Compilation 7 === -** read_x === End of Compilation 8 === -** read_threadbase === End of Compilation 9 === -** setup_var === End of Compilation 10 === -** gen_dist_constr === End of Compilation 11 === -** map_read === End of Compilation 12 === -** csaread === End of Compilation 13 === -** mcmread === End of Compilation 14 === -** read_minim === End of Compilation 15 === -** read_angles === End of Compilation 16 === -** reada === End of Compilation 17 === -** readi === End of Compilation 18 === -** multreadi === End of Compilation 19 === -** multreada === End of Compilation 20 === -** openunits === End of Compilation 21 === -** card_concat === End of Compilation 22 === -** readrst === End of Compilation 23 === -** read_fragments === End of Compilation 24 === -** read_dist_constr === End of Compilation 25 === -** flush === End of Compilation 26 === -** copy_to_tmp === End of Compilation 27 === -** move_from_tmp === End of Compilation 28 === -** random_init === End of Compilation 29 === -1501-510 Compilation successful for file readrtns_CSA.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 parmread.F -** parmread === End of Compilation 1 === -** getenv_loc === End of Compilation 2 === -1501-510 Compilation successful for file parmread.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 gen_rand_conf.F -** gen_rand_conf === End of Compilation 1 === -** overlap === End of Compilation 2 === -** gen_phi === End of Compilation 3 === -** gen_theta === End of Compilation 4 === -** gen_side === End of Compilation 5 === -** ran_number === End of Compilation 6 === -** iran_num === End of Compilation 7 === -** binorm === End of Compilation 8 === -** anorm_distr === End of Compilation 9 === -** mult_norm === End of Compilation 10 === -** mult_norm1 === End of Compilation 11 === -** overlap_sc === End of Compilation 12 === -** overlap_sc_list === End of Compilation 13 === -1501-510 Compilation successful for file gen_rand_conf.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o printmat.o printmat.f -** printmat === End of Compilation 1 === -1501-510 Compilation successful for file printmat.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o map.o map.f -** map === End of Compilation 1 === -1501-510 Compilation successful for file map.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o pinorm.o pinorm.f -** pinorm === End of Compilation 1 === -1501-510 Compilation successful for file pinorm.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o randgens.o randgens.f -** vrnd === End of Compilation 1 === -** rndv === End of Compilation 2 === -** vrndst === End of Compilation 3 === -** vrndin === End of Compilation 4 === -** vrndou === End of Compilation 5 === -** rnunf === End of Compilation 6 === -1501-510 Compilation successful for file randgens.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o rescode.o rescode.f -** rescode === End of Compilation 1 === -1501-510 Compilation successful for file rescode.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 intcor.f -** alpha === End of Compilation 1 === -** beta === End of Compilation 2 === -** dist === End of Compilation 3 === -1501-510 Compilation successful for file intcor.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 timing.F -** set_timers === End of Compilation 1 === -** stopx === End of Compilation 2 === -** ovrtim === End of Compilation 3 === -** tcpu === End of Compilation 4 === -** dajczas === End of Compilation 5 === -1501-510 Compilation successful for file timing.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o misc.o misc.f -** find_arg === End of Compilation 1 === -** find_group === End of Compilation 2 === -** iblnk === End of Compilation 3 === -** ilen === End of Compilation 4 === -** in_keywd_set === End of Compilation 5 === -** lcase === End of Compilation 6 === -** lcom === End of Compilation 7 === -** lower_case === End of Compilation 8 === -** mykey === End of Compilation 9 === -** numstr === End of Compilation 10 === -** ucase === End of Compilation 11 === -1501-510 Compilation successful for file misc.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o intlocal.o intlocal.f -** integral === End of Compilation 1 === -** integral3 === End of Compilation 2 === -** integral5 === End of Compilation 3 === -** integral_turn6 === End of Compilation 4 === -** integral6 === End of Compilation 5 === -** integral3a === End of Compilation 6 === -** integral4a === End of Compilation 7 === -** elocal === End of Compilation 8 === -** ele === End of Compilation 9 === -1501-510 Compilation successful for file intlocal.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 cartder.F -** cartder === End of Compilation 1 === -1501-510 Compilation successful for file cartder.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 checkder_p.F -** check_cartgrad === End of Compilation 1 === -** check_ecart === End of Compilation 2 === -** check_ecartint === End of Compilation 3 === -** int_from_cart1 === End of Compilation 4 === -** check_eint === End of Compilation 5 === -1501-510 Compilation successful for file checkder_p.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 econstr_local.F -** econstr_back === End of Compilation 1 === -1501-510 Compilation successful for file econstr_local.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 energy_p_new.F -** etotal === End of Compilation 1 === -** sum_energy === End of Compilation 2 === -** sum_gradient === End of Compilation 3 === -** rescale_weights === End of Compilation 4 === -** enerprint === End of Compilation 5 === -** elj === End of Compilation 6 === -** eljk === End of Compilation 7 === -** ebp === End of Compilation 8 === -** egb === End of Compilation 9 === -** egbv === End of Compilation 10 === -** sc_angular === End of Compilation 11 === -** sc_grad === End of Compilation 12 === -** e_softsphere === End of Compilation 13 === -** eelec_soft_sphere === End of Compilation 14 === -** vec_and_deriv === End of Compilation 15 === -** check_vecgrad === End of Compilation 16 === -** set_matrices === End of Compilation 17 === -** eelec === End of Compilation 18 === -** eelecij === End of Compilation 19 === -** eturn3 === End of Compilation 20 === -** eturn4 === End of Compilation 21 === -** vecpr === End of Compilation 22 === -** unormderiv === End of Compilation 23 === -** escp_soft_sphere === End of Compilation 24 === -** escp === End of Compilation 25 === -** edis === End of Compilation 26 === -** ssbond_ene === End of Compilation 27 === -** ebond === End of Compilation 28 === -** ebend === End of Compilation 29 === -** esc === End of Compilation 30 === -** enesc === End of Compilation 31 === -** gcont === End of Compilation 32 === -** splinthet === End of Compilation 33 === -** spline1 === End of Compilation 34 === -** spline2 === End of Compilation 35 === -** etor === End of Compilation 36 === -** etor_d === End of Compilation 37 === -** eback_sc_corr === End of Compilation 38 === -** multibody === End of Compilation 39 === -** esccorr === End of Compilation 40 === -** pack_buffer === End of Compilation 41 === -** unpack_buffer === End of Compilation 42 === -** multibody_hb === End of Compilation 43 === -** multibody_eello === End of Compilation 44 === -** ehbcorr === End of Compilation 45 === -** calc_eello === End of Compilation 46 === -** kernel === End of Compilation 47 === -** eello4 === End of Compilation 48 === -** eello5 === End of Compilation 49 === -** eello6 === End of Compilation 50 === -** eello6_graph1 === End of Compilation 51 === -** eello6_graph2 === End of Compilation 52 === -** eello6_graph3 === End of Compilation 53 === -** eello6_graph4 === End of Compilation 54 === -** eello_turn6 === End of Compilation 55 === -** scalar === End of Compilation 56 === -** matvec2 === End of Compilation 57 === -** matmat2 === End of Compilation 58 === -** scalar2 === End of Compilation 59 === -** transpose2 === End of Compilation 60 === -** transpose === End of Compilation 61 === -** prodmat3 === End of Compilation 62 === -1501-510 Compilation successful for file energy_p_new.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 energy_p_new-sep.F -** sscale === End of Compilation 1 === -** elj_long === End of Compilation 2 === -** elj_short === End of Compilation 3 === -** eljk_long === End of Compilation 4 === -** eljk_short === End of Compilation 5 === -** ebp_long === End of Compilation 6 === -** ebp_short === End of Compilation 7 === -** egb_long === End of Compilation 8 === -** egb_short === End of Compilation 9 === -** egbv_long === End of Compilation 10 === -** egbv_short === End of Compilation 11 === -** sc_grad_scale === End of Compilation 12 === -** eelec_scale === End of Compilation 13 === -** eelecij_scale === End of Compilation 14 === -** evdwpp_long === End of Compilation 15 === -** evdwpp_short === End of Compilation 16 === -** escp_long === End of Compilation 17 === -** escp_short === End of Compilation 18 === -1501-510 Compilation successful for file energy_p_new-sep.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 gradient_p.F -** gradient === End of Compilation 1 === -** grad_restr === End of Compilation 2 === -** cartgrad === End of Compilation 3 === -** zerograd === End of Compilation 4 === -** fdum === End of Compilation 5 === -1501-510 Compilation successful for file gradient_p.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 minimize_p.F -** minimize === End of Compilation 1 === -** ergastulum === End of Compilation 2 === -** func === End of Compilation 3 === -** func_restr === End of Compilation 4 === -** x2xx === End of Compilation 5 === -** xx2x === End of Compilation 6 === -** minim_dc === End of Compilation 7 === -** func_dc === End of Compilation 8 === -** grad_dc === End of Compilation 9 === -1501-510 Compilation successful for file minimize_p.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 sumsld.f -** sumsl === End of Compilation 1 === -** sumit === End of Compilation 2 === -** dbdog === End of Compilation 3 === -** ltvmul === End of Compilation 4 === -** lupdat === End of Compilation 5 === -** lvmul === End of Compilation 6 === -** vvmulp === End of Compilation 7 === -** wzbfgs === End of Compilation 8 === -1501-510 Compilation successful for file sumsld.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 cored.f -** assst === End of Compilation 1 === -** deflt === End of Compilation 2 === -** dotprd === End of Compilation 3 === -** itsum === End of Compilation 4 === -** litvmu === End of Compilation 5 === -** livmul === End of Compilation 6 === -** parck === End of Compilation 7 === -** reldst === End of Compilation 8 === -** vaxpy === End of Compilation 9 === -** vcopy === End of Compilation 10 === -** vdflt === End of Compilation 11 === -** vscopy === End of Compilation 12 === -** v2norm === End of Compilation 13 === -** humsl === End of Compilation 14 === -** humit === End of Compilation 15 === -** dupdu === End of Compilation 16 === -** gqtst === End of Compilation 17 === -** lsqrt === End of Compilation 18 === -** lsvmin === End of Compilation 19 === -** slvmul === End of Compilation 20 === -1501-510 Compilation successful for file cored.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 rmdd.f -** imdcon === End of Compilation 1 === -** rmdcon === End of Compilation 2 === -1501-510 Compilation successful for file rmdd.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 geomout.F -** pdbout === End of Compilation 1 === -** mol2out === End of Compilation 2 === -** intout === End of Compilation 3 === -** briefout === End of Compilation 4 === -** cartoutx === End of Compilation 5 === -** cartout === End of Compilation 6 === -** statout === End of Compilation 7 === -** gyrate === End of Compilation 8 === -1501-510 Compilation successful for file geomout.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 readpdb.f -** readpdb === End of Compilation 1 === -** int_from_cart === End of Compilation 2 === -** sc_loc_geom === End of Compilation 3 === -** sccenter === End of Compilation 4 === -** bond_regular === End of Compilation 5 === -1501-510 Compilation successful for file readpdb.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 regularize.F -** regularize === End of Compilation 1 === -1501-510 Compilation successful for file regularize.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 thread.F -** thread_seq === End of Compilation 1 === -** write_thread_summary === End of Compilation 2 === -** sc_conf === End of Compilation 3 === -** write_stat_thread === End of Compilation 4 === -1501-510 Compilation successful for file thread.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o fitsq.o fitsq.f -** fitsq === End of Compilation 1 === -** sivade === End of Compilation 2 === -** givns === End of Compilation 3 === -** switch === End of Compilation 4 === -** mvvad === End of Compilation 5 === -** det === End of Compilation 6 === -** mmmul === End of Compilation 7 === -** matvec === End of Compilation 8 === -1501-510 Compilation successful for file fitsq.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 mcm.F -** mcm_setup === End of Compilation 1 === -** do_mcm === End of Compilation 2 === -** execute_slave === End of Compilation 3 === -** statprint === End of Compilation 4 === -** heat === End of Compilation 5 === -** cool === End of Compilation 6 === -** zapis === End of Compilation 7 === -** perturb === End of Compilation 8 === -** selectmove === End of Compilation 9 === -** gen_psi === End of Compilation 10 === -** metropolis === End of Compilation 11 === -** conf_comp === End of Compilation 12 === -** dif_ang === End of Compilation 13 === -** add2cache === End of Compilation 14 === -** rm_from_cache === End of Compilation 15 === -1501-510 Compilation successful for file mcm.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 mc.F -** monte_carlo === End of Compilation 1 === -** accept_mc === End of Compilation 2 === -** icialosc === End of Compilation 3 === -** entropia === End of Compilation 4 === -1501-510 Compilation successful for file mc.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o bond_move.o bond_move.f -** bond_move === End of Compilation 1 === -1501-510 Compilation successful for file bond_move.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o refsys.o refsys.f -** refsys === End of Compilation 1 === -1501-510 Compilation successful for file refsys.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o check_sc_distr.o check_sc_distr.f -"check_sc_distr.f", line 30.16: 1513-029 (W) The number of arguments to "gen_side" differs from the number of arguments in a previous reference. You should use the OPTIONAL attribute and an explicit interface to define a procedure with optional arguments. -** check_sc_distr === End of Compilation 1 === -1501-510 Compilation successful for file check_sc_distr.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o check_bond.o check_bond.f -** check_bond === End of Compilation 1 === -1501-510 Compilation successful for file check_bond.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o contact.o contact.f -** contact === End of Compilation 1 === -** contact_fract === End of Compilation 2 === -** contact_fract_nn === End of Compilation 3 === -** hairpin === End of Compilation 4 === -1501-510 Compilation successful for file contact.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o djacob.o djacob.f -** djacob === End of Compilation 1 === -1501-510 Compilation successful for file djacob.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 eigen.f -** einvit === End of Compilation 1 === -** elau === End of Compilation 2 === -** epslon === End of Compilation 3 === -** eqlrat === End of Compilation 4 === -** estpi1 === End of Compilation 5 === -** etrbk3 === End of Compilation 6 === -** etred3 === End of Compilation 7 === -** evvrsp === End of Compilation 8 === -** freda === End of Compilation 9 === -** giveis === End of Compilation 10 === -** gldiag === End of Compilation 11 === -** imtqlv === End of Compilation 12 === -** jacdg === End of Compilation 13 === -** jacdia === End of Compilation 14 === -** jacord === End of Compilation 15 === -** tinvtb === End of Compilation 16 === -** tql2 === End of Compilation 17 === -** trbk3b === End of Compilation 18 === -** tred3b === End of Compilation 19 === -1501-510 Compilation successful for file eigen.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 blas.f -** dasum === End of Compilation 1 === -** daxpy === End of Compilation 2 === -** dcopy === End of Compilation 3 === -** ddot === End of Compilation 4 === -** dnrm2 === End of Compilation 5 === -** drot === End of Compilation 6 === -** drotg === End of Compilation 7 === -** dscal === End of Compilation 8 === -** dswap === End of Compilation 9 === -** idamax === End of Compilation 10 === -** dgemv === End of Compilation 11 === -1501-510 Compilation successful for file blas.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 add.f -** abrt === End of Compilation 1 === -** vclr === End of Compilation 2 === -1501-510 Compilation successful for file add.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 entmcm.F -** entmcm === End of Compilation 1 === -** accepting === End of Compilation 2 === -** read_pool === End of Compilation 3 === -1501-510 Compilation successful for file entmcm.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 minim_mcmf.F -** minim_mcmf === End of Compilation 1 === -1501-510 Compilation successful for file minim_mcmf.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 together.F -** together === End of Compilation 1 === -** feedin === End of Compilation 2 === -** getx === End of Compilation 3 === -** putx === End of Compilation 4 === -** putx2 === End of Compilation 5 === -** prune_bank === End of Compilation 6 === -** reminimize === End of Compilation 7 === -** send === End of Compilation 8 === -** recv === End of Compilation 9 === -** history_append === End of Compilation 10 === -1501-510 Compilation successful for file together.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 csa.f -** make_array === End of Compilation 1 === -** make_ranvar === End of Compilation 2 === -** make_ranvar_reg === End of Compilation 3 === -** from_pdb === End of Compilation 4 === -** from_int === End of Compilation 5 === -** dihang_to_c === End of Compilation 6 === -1501-510 Compilation successful for file csa.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 minim_jlee.F -** minim_jlee === End of Compilation 1 === -** check_var === End of Compilation 2 === -1501-510 Compilation successful for file minim_jlee.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 shift.F -** csa_read === End of Compilation 1 === -** initial_write === End of Compilation 2 === -** restart_write === End of Compilation 3 === -1501-510 Compilation successful for file shift.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 diff12.f -** get_diff12 === End of Compilation 1 === -1501-510 Compilation successful for file diff12.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 bank.F -** refresh_bank === End of Compilation 1 === -** replace_bvar === End of Compilation 2 === -** write_rbank === End of Compilation 3 === -** read_rbank === End of Compilation 4 === -** write_bank === End of Compilation 5 === -** write_bank_reminimized === End of Compilation 6 === -** read_bank === End of Compilation 7 === -** write_bank1 === End of Compilation 8 === -** save_is === End of Compilation 9 === -** select_is === End of Compilation 10 === -** get_is_ran === End of Compilation 11 === -** get_is === End of Compilation 12 === -** select_iseed_max === End of Compilation 13 === -** select_iseed_min === End of Compilation 14 === -** select_iseed_far === End of Compilation 15 === -** find_min === End of Compilation 16 === -** write_csa_pdb === End of Compilation 17 === -** find_max === End of Compilation 18 === -** get_diff === End of Compilation 19 === -** estimate_cutdif === End of Compilation 20 === -** get_is_max === End of Compilation 21 === -1501-510 Compilation successful for file bank.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 newconf.f -** make_var === End of Compilation 1 === -** check_old === End of Compilation 2 === -** newconf1rr === End of Compilation 3 === -** newconf1br === End of Compilation 4 === -** newconf1bb === End of Compilation 5 === -** newconf1arr === End of Compilation 6 === -** newconf1abr === End of Compilation 7 === -** newconf1abb === End of Compilation 8 === -** newconf_residue === End of Compilation 9 === -** newconf_copy === End of Compilation 10 === -** newconf_residue_hairpin === End of Compilation 11 === -** gen_hairpin === End of Compilation 12 === -** select_frag === End of Compilation 13 === -1501-510 Compilation successful for file newconf.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 ran.f -** ran0 === End of Compilation 1 === -** ran1 === End of Compilation 2 === -** ran2 === End of Compilation 3 === -** ran3 === End of Compilation 4 === -1501-510 Compilation successful for file ran.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o indexx.o indexx.f -** indexx === End of Compilation 1 === -1501-510 Compilation successful for file indexx.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 MP.F -** init_task === End of Compilation 1 === -** finish_task === End of Compilation 2 === -** pattern_receive === End of Compilation 3 === -** pattern_send === End of Compilation 4 === -** send_stop_sig === End of Compilation 5 === -** recv_stop_sig === End of Compilation 6 === -** send_mcm_info === End of Compilation 7 === -** receive_mcm_info === End of Compilation 8 === -** send_thread_results === End of Compilation 9 === -** receive_thread_results === End of Compilation 10 === -1501-510 Compilation successful for file MP.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 compare_s1.F -** compare_s1 === End of Compilation 1 === -1501-510 Compilation successful for file compare_s1.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o prng.o prng.f -"prng.f", line 54.45: 1513-041 (W) Arguments of the wrong type were specified for the INTRINSIC procedure "ishft". -** prng_next === End of Compilation 1 === -"prng.f", line 81.44: 1513-041 (W) Arguments of the wrong type were specified for the INTRINSIC procedure "ishft". -** vprng === End of Compilation 2 === -** prng_chkpnt === End of Compilation 3 === -** prng_restart === End of Compilation 4 === -** prngblk === End of Compilation 5 === -1501-510 Compilation successful for file prng.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 test.F -** test === End of Compilation 1 === -** test_n16 === End of Compilation 2 === -** test_local === End of Compilation 3 === -** test_sc === End of Compilation 4 === -** bgrow === End of Compilation 5 === -** test11 === End of Compilation 6 === -** test3 === End of Compilation 7 === -** test__ === End of Compilation 8 === -** secondary === End of Compilation 9 === -** write_pdb === End of Compilation 10 === -** contact_cp2 === End of Compilation 11 === -** contact_cp === End of Compilation 12 === -** contact_cp_min === End of Compilation 13 === -** softreg === End of Compilation 14 === -** beta_slide === End of Compilation 15 === -** beta_zip === End of Compilation 16 === -1501-510 Compilation successful for file test.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o banach.o banach.f -** banach === End of Compilation 1 === -** banaii === End of Compilation 2 === -** matinvert === End of Compilation 3 === -1501-510 Compilation successful for file banach.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o distfit.o distfit.f -** distfit === End of Compilation 1 === -** rdif === End of Compilation 2 === -** rderiv === End of Compilation 3 === -** heval === End of Compilation 4 === -** vec === End of Compilation 5 === -** transfer === End of Compilation 6 === -1501-510 Compilation successful for file distfit.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 rmsd.F -** rms_nac_nnc === End of Compilation 1 === -** rmsd === End of Compilation 2 === -** rmsd_csa === End of Compilation 3 === -1501-510 Compilation successful for file rmsd.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o elecont.o elecont.f -** elecont === End of Compilation 1 === -** secondary2 === End of Compilation 2 === -** freeres === End of Compilation 3 === -1501-510 Compilation successful for file elecont.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 dihed_cons.F -** secstrp2dihc === End of Compilation 1 === -** read_secstr_pred === End of Compilation 2 === -1501-510 Compilation successful for file dihed_cons.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 sc_move.F -** sc_move === End of Compilation 1 === -** single_sc_move === End of Compilation 2 === -** sc_minimize === End of Compilation 3 === -** minimize_sc1 === End of Compilation 4 === -** func_restr1 === End of Compilation 5 === -** grad_restr1 === End of Compilation 6 === -** egb1 === End of Compilation 7 === -1501-510 Compilation successful for file sc_move.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o local_move.o local_move.f -** local_move_init === End of Compilation 1 === -** local_move === End of Compilation 2 === -** output_tabs === End of Compilation 3 === -** angles2tab === End of Compilation 4 === -** minmax_angles === End of Compilation 5 === -** construct_tab === End of Compilation 6 === -** construct_ranges === End of Compilation 7 === -** fix_no_moves === End of Compilation 8 === -** move_res === End of Compilation 9 === -** loc_test === End of Compilation 10 === -1501-510 Compilation successful for file local_move.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 intcartderiv.F -** intcartderiv === End of Compilation 1 === -** checkintcartgrad === End of Compilation 2 === -** chainbuild_cart === End of Compilation 3 === -1501-510 Compilation successful for file intcartderiv.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 lagrangian_lesyng.F -** lagrangian === End of Compilation 1 === -** setup_md_matrices === End of Compilation 2 === -** eigout === End of Compilation 3 === -** matout === End of Compilation 4 === -** matout1 === End of Compilation 5 === -** matout2 === End of Compilation 6 === -** ginv_mult === End of Compilation 7 === -** fricmat_mult === End of Compilation 8 === -1501-510 Compilation successful for file lagrangian_lesyng.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 stochfric.F -** friction_force === End of Compilation 1 === -** stochastic_force === End of Compilation 2 === -** setup_fricmat === End of Compilation 3 === -** sdarea === End of Compilation 4 === -1501-510 Compilation successful for file stochfric.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o kinetic_lesyng.o kinetic_lesyng.f -** kinetic === End of Compilation 1 === -1501-510 Compilation successful for file kinetic_lesyng.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 MD_A-MTS.F -** md === End of Compilation 1 === -** velverlet_step === End of Compilation 2 === -** respa_step === End of Compilation 3 === -** respa_vel === End of Compilation 4 === -** verlet1 === End of Compilation 5 === -** verlet2 === End of Compilation 6 === -** sddir_precalc === End of Compilation 7 === -** sddir_verlet1 === End of Compilation 8 === -** sddir_verlet2 === End of Compilation 9 === -** max_accel === End of Compilation 10 === -** predict_edrift === End of Compilation 11 === -** verlet_bath === End of Compilation 12 === -** init_md === End of Compilation 13 === -** random_vel === End of Compilation 14 === -1501-510 Compilation successful for file MD_A-MTS.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o moments.o moments.f -** inertia_tensor === End of Compilation 1 === -** angmom === End of Compilation 2 === -** vcm_vel === End of Compilation 3 === -1501-510 Compilation successful for file moments.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o int_to_cart.o int_to_cart.f -** int_to_cart === End of Compilation 1 === -1501-510 Compilation successful for file int_to_cart.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o surfatom.o surfatom.f -** surfatom === End of Compilation 1 === -1501-510 Compilation successful for file surfatom.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o sort.o sort.f -** sort === End of Compilation 1 === -** sort2 === End of Compilation 2 === -** sort3 === End of Compilation 3 === -** sort4 === End of Compilation 4 === -** sort5 === End of Compilation 5 === -** sort6 === End of Compilation 6 === -** sort7 === End of Compilation 7 === -** sort8 === End of Compilation 8 === -** sort9 === End of Compilation 9 === -1501-510 Compilation successful for file sort.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o muca_md.o muca_md.f -** muca_delta === End of Compilation 1 === -** muca_ene === End of Compilation 2 === -** read_muca === End of Compilation 3 === -** print_muca === End of Compilation 4 === -** muca_update === End of Compilation 5 === -** muca_factor === End of Compilation 6 === -** spline === End of Compilation 7 === -** splint === End of Compilation 8 === -1501-510 Compilation successful for file muca_md.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 MREMD.F -** mremd === End of Compilation 1 === -** write1rst === End of Compilation 2 === -** write1traj === End of Compilation 3 === -** read1restart === End of Compilation 4 === -** read1restart_old === End of Compilation 5 === -1501-510 Compilation successful for file MREMD.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 rattle.F -** rattle1 === End of Compilation 1 === -** rattle2 === End of Compilation 2 === -** rattle_brown === End of Compilation 3 === -1501-510 Compilation successful for file rattle.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o gauss.o gauss.f -** gauss === End of Compilation 1 === -1501-510 Compilation successful for file gauss.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 energy_split-sep.F -** etotal_long === End of Compilation 1 === -** etotal_short === End of Compilation 2 === -1501-510 Compilation successful for file energy_split-sep.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -WF,-DAIX -WF,-DISNAN -WF,-DUNRES -WF,-DMP -WF,-DMPI -WF,-DPGI -WF,-DSPLITELE -WF,-DPROCOR -WF,-DAMD64 -WF,-DLANG0 q_measure.F -** qwolynes === End of Compilation 1 === -** qwolynes_prim === End of Compilation 2 === -** qwol_num === End of Compilation 3 === -** econstrq === End of Compilation 4 === -** deconstrq_num === End of Compilation 5 === -1501-510 Compilation successful for file q_measure.F. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include -c -o gnmr1.o gnmr1.f -** gnmr1 === End of Compilation 1 === -** gnmr1prim === End of Compilation 2 === -** harmonic === End of Compilation 3 === -** harmonicprim === End of Compilation 4 === -1501-510 Compilation successful for file gnmr1.f. -cc -o compinfo compinfo.c -./compinfo | true -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -c -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace -I/include cinfo.f -** cinfo === End of Compilation 1 === -1501-510 Compilation successful for file cinfo.f. -/bgsys/drivers/ppcfloor/comm/bin/mpixlf77 -O0 -C -g -qarch=450 -qtune=450 -qdebug=function_trace unres.o arcos.o cartprint.o chainbuild.o convert.o initialize_p.o matmult.o readrtns_CSA.o parmread.o gen_rand_conf.o printmat.o map.o pinorm.o randgens.o rescode.o intcor.o timing.o misc.o intlocal.o cartder.o checkder_p.o econstr_local.o energy_p_new.o energy_p_new-sep.o gradient_p.o minimize_p.o sumsld.o cored.o rmdd.o geomout.o readpdb.o regularize.o thread.o fitsq.o mcm.o mc.o bond_move.o refsys.o check_sc_distr.o check_bond.o contact.o djacob.o eigen.o blas.o add.o entmcm.o minim_mcmf.o together.o csa.o minim_jlee.o shift.o diff12.o bank.o newconf.o ran.o indexx.o MP.o compare_s1.o prng.o test.o banach.o distfit.o rmsd.o elecont.o dihed_cons.o sc_move.o local_move.o intcartderiv.o lagrangian_lesyng.o stochfric.o kinetic_lesyng.o MD_A-MTS.o moments.o int_to_cart.o surfatom.o sort.o muca_md.o MREMD.o rattle.o gauss.o energy_split-sep.o q_measure.o gnmr1.o cinfo.o xdrf/libxdrf.a -o ../bin/unres_MD_Tc_procor-newparm-O4-notau1.exe -unres.o: In function `_main': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:53: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:167: undefined reference to `__func_trace_exit' -unres.o: In function `exec_md': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:169: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:182: undefined reference to `__func_trace_exit' -unres.o: In function `exec_mremd': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:184: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:207: undefined reference to `__func_trace_exit' -unres.o: In function `exec_eeval_or_minim': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:209: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:310: undefined reference to `__func_trace_exit' -unres.o: In function `exec_regularize': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:312: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:350: undefined reference to `__func_trace_exit' -unres.o: In function `exec_thread': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:352: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:360: undefined reference to `__func_trace_exit' -unres.o: In function `exec_mc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:362: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:391: undefined reference to `__func_trace_exit' -unres.o: In function `exec_mult_eeval_or_minim': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:393: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:688: undefined reference to `__func_trace_exit' -unres.o: In function `exec_checkgrad': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:690: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:754: undefined reference to `__func_trace_exit' -unres.o: In function `exec_map': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:756: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:761: undefined reference to `__func_trace_exit' -unres.o: In function `exec_csa': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:763: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:777: undefined reference to `__func_trace_exit' -unres.o: In function `exec_softreg': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:779: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/unres.F:804: undefined reference to `__func_trace_exit' -arcos.o: In function `arcos': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/arcos.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/arcos.f:6: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/arcos.f:8: undefined reference to `__func_trace_exit' -cartprint.o: In function `cartprint': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cartprint.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cartprint.f:19: undefined reference to `__func_trace_exit' -chainbuild.o: In function `chainbuild': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/chainbuild.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/chainbuild.F:64: undefined reference to `__func_trace_exit' -chainbuild.o: In function `orig_frame': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/chainbuild.F:66: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/chainbuild.F:134: undefined reference to `__func_trace_exit' -chainbuild.o: In function `locate_next_res': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/chainbuild.F:136: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/chainbuild.F:207: undefined reference to `__func_trace_exit' -chainbuild.o: In function `locate_side_chain': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/chainbuild.F:209: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/chainbuild.F:274: undefined reference to `__func_trace_exit' -convert.o: In function `geom_to_var': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:37: undefined reference to `__func_trace_exit' -convert.o: In function `var_to_geom': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:39: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:69: undefined reference to `__func_trace_exit' -convert.o: In function `convert_side': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:71: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:83: undefined reference to `__func_trace_exit' -convert.o: In function `reduce': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:86: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:112: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:151: undefined reference to `__func_trace_exit' -convert.o: In function `thetnorm': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:154: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:163: undefined reference to `__func_trace_exit' -convert.o: In function `var_to_geom_restr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:166: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/convert.f:195: undefined reference to `__func_trace_exit' -initialize_p.o: In function `(block data)_(block)': -(.text+0x2c): undefined reference to `__func_trace_enter' -initialize_p.o: In function `(block data)_(block)': -(.text+0x40): undefined reference to `__func_trace_exit' -initialize_p.o: In function `initialize': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:13: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:246: undefined reference to `__func_trace_exit' -initialize_p.o: In function `(block data)_nazwy': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:246: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:246: undefined reference to `__func_trace_exit' -initialize_p.o: In function `init_int_table': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:274: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:818: undefined reference to `__func_trace_exit' -initialize_p.o: In function `int_bounds': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:821: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:843: undefined reference to `__func_trace_exit' -initialize_p.o: In function `int_bounds1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:845: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:867: undefined reference to `__func_trace_exit' -initialize_p.o: In function `int_partition': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:869: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:900: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:906: undefined reference to `__func_trace_exit' -initialize_p.o: In function `hpb_partition': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:910: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/initialize_p.F:930: undefined reference to `__func_trace_exit' -matmult.o: In function `matmult': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/matmult.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/matmult.f:18: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `readrtns': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:54: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_control': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:56: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:219: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_remdpar': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:221: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:299: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_mdpar': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:301: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:501: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `molread': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:503: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1070: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `seq_comp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1072: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1079: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1083: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_bridge': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1086: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1170: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_x': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1172: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1207: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1208: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_threadbase': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1211: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1254: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `setup_var': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1256: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1294: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `gen_dist_constr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1296: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1347: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `map_read': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1349: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1393: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `csaread': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1395: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1456: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `mcmread': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1558: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1622: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_minim': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1624: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1645: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_angles': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1647: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1671: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1672: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `reada': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1675: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1691: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `readi': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1693: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1709: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `multreadi': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1711: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1727: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `multreada': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1729: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1745: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `openunits': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:1747: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2074: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `card_concat': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2076: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2093: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `readrst': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2095: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2114: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_fragments': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2116: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2157: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `read_dist_constr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2159: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2267: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `flush': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2275: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2278: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `copy_to_tmp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2281: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2298: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `move_from_tmp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2300: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2311: undefined reference to `__func_trace_exit' -readrtns_CSA.o: In function `random_init': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2313: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readrtns_CSA.F:2397: undefined reference to `__func_trace_exit' -parmread.o: In function `parmread': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/parmread.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/parmread.F:907: undefined reference to `__func_trace_exit' -parmread.o: In function `getenv_loc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/parmread.F:910: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/parmread.F:953: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `gen_rand_conf': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:30: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:55: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:74: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:86: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:103: undefined reference to `__func_trace_exit' -gen_rand_conf.o:/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:118: more undefined references to `__func_trace_exit' follow -gen_rand_conf.o: In function `overlap': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:127: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:136: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:152: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:167: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:180: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:197: undefined reference to `__func_trace_exit' -gen_rand_conf.o:/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:201: more undefined references to `__func_trace_exit' follow -gen_rand_conf.o: In function `gen_phi': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:204: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:212: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `gen_theta': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:215: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:257: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `gen_side': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:260: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:535: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `ran_number': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:537: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:551: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `iran_num': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:554: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:573: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `binorm': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:576: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:589: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `anorm_distr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:592: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:601: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `mult_norm': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:604: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:658: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `mult_norm1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:660: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:724: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `overlap_sc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:727: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:795: undefined reference to `__func_trace_exit' -gen_rand_conf.o: In function `overlap_sc_list': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:797: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gen_rand_conf.F:885: undefined reference to `__func_trace_exit' -printmat.o: In function `printmat': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/printmat.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/printmat.f:16: undefined reference to `__func_trace_exit' -map.o: In function `map': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/map.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/map.f:89: undefined reference to `__func_trace_exit' -pinorm.o: In function `pinorm': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/pinorm.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/pinorm.f:16: undefined reference to `__func_trace_exit' -randgens.o: In function `vrnd': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:9: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:26: undefined reference to `__func_trace_exit' -randgens.o: In function `rndv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:29: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:57: undefined reference to `__func_trace_exit' -randgens.o: In function `vrndst': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:61: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:72: undefined reference to `__func_trace_exit' -randgens.o: In function `vrndin': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:75: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:80: undefined reference to `__func_trace_exit' -randgens.o: In function `vrndou': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:83: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:89: undefined reference to `__func_trace_exit' -randgens.o: In function `rnunf': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:90: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/randgens.f:98: undefined reference to `__func_trace_exit' -rescode.o: In function `rescode': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rescode.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rescode.f:13: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rescode.f:22: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rescode.f:31: undefined reference to `__func_trace_exit' -intcor.o: In function `alpha': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcor.f:4: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcor.f:22: undefined reference to `__func_trace_exit' -intcor.o: In function `beta': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcor.f:27: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcor.f:72: undefined reference to `__func_trace_exit' -intcor.o: In function `dist': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcor.f:77: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcor.f:89: undefined reference to `__func_trace_exit' -timing.o: In function `set_timers': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:6: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:45: undefined reference to `__func_trace_exit' -timing.o: In function `stopx': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:47: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:127: undefined reference to `__func_trace_exit' -timing.o: In function `ovrtim': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:130: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:152: undefined reference to `__func_trace_exit' -timing.o: In function `tcpu': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:155: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:241: undefined reference to `__func_trace_exit' -timing.o: In function `dajczas': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:244: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/timing.F:262: undefined reference to `__func_trace_exit' -misc.o: In function `find_arg': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:6: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:29: undefined reference to `__func_trace_exit' -misc.o: In function `find_group': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:31: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:45: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:47: undefined reference to `__func_trace_exit' -misc.o: In function `iblnk': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:49: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:54: undefined reference to `__func_trace_exit' -misc.o: In function `ilen': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:56: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:67: undefined reference to `__func_trace_exit' -misc.o: In function `in_keywd_set': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:69: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:76: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:81: undefined reference to `__func_trace_exit' -misc.o: In function `lcase': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:83: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:106: undefined reference to `__func_trace_exit' -misc.o: In function `lcom': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:107: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:114: undefined reference to `__func_trace_exit' -misc.o: In function `lower_case': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:116: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:119: undefined reference to `__func_trace_exit' -misc.o: In function `mykey': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:121: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:161: undefined reference to `__func_trace_exit' -misc.o: In function `numstr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:162: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:179: undefined reference to `__func_trace_exit' -misc.o: In function `ucase': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:180: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/misc.f:203: undefined reference to `__func_trace_exit' -intlocal.o: In function `integral': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:59: undefined reference to `__func_trace_exit' -intlocal.o: In function `integral3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:61: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:149: undefined reference to `__func_trace_exit' -intlocal.o: In function `integral5': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:151: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:226: undefined reference to `__func_trace_exit' -intlocal.o: In function `integral_turn6': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:228: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:281: undefined reference to `__func_trace_exit' -intlocal.o: In function `integral6': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:283: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:374: undefined reference to `__func_trace_exit' -intlocal.o: In function `integral3a': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:376: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:423: undefined reference to `__func_trace_exit' -intlocal.o: In function `integral4a': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:425: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:476: undefined reference to `__func_trace_exit' -intlocal.o: In function `elocal': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:478: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:503: undefined reference to `__func_trace_exit' -intlocal.o: In function `ele': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:506: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intlocal.f:516: undefined reference to `__func_trace_exit' -cartder.o: In function `cartder': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cartder.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cartder.F:313: undefined reference to `__func_trace_exit' -checkder_p.o: In function `check_cartgrad': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:172: undefined reference to `__func_trace_exit' -checkder_p.o: In function `check_ecart': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:174: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:249: undefined reference to `__func_trace_exit' -checkder_p.o: In function `check_ecartint': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:251: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:397: undefined reference to `__func_trace_exit' -checkder_p.o: In function `int_from_cart1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:399: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:514: undefined reference to `__func_trace_exit' -checkder_p.o: In function `check_eint': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:516: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/checkder_p.F:599: undefined reference to `__func_trace_exit' -econstr_local.o: In function `econstr_back': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/econstr_local.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/econstr_local.F:91: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `etotal': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:287: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `sum_energy': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:289: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:401: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `sum_gradient': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:403: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:696: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `rescale_weights': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:698: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:752: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `enerprint': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:754: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:856: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `elj': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:858: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1010: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eljk': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1012: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1092: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `ebp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1094: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1213: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `egb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1215: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1357: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `egbv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1359: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1481: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `sc_angular': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1483: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1549: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `sc_grad': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1551: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1605: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `e_softsphere': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1607: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1680: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eelec_soft_sphere': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1682: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1771: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `vec_and_deriv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1773: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1953: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `check_vecgrad': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:1955: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:2037: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `set_matrices': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:2039: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:2511: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eelec': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:2513: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:2672: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eelecij': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:2674: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3312: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eturn3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3314: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3412: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eturn4': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3414: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3587: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `vecpr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3589: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3596: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `unormderiv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3598: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3620: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `escp_soft_sphere': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3622: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3711: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `escp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3713: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3825: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `edis': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3827: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3897: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `ssbond_ene': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3899: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3981: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `ebond': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:3983: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:4059: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `ebend': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:4275: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:4460: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `esc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:4753: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5070: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `enesc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5072: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5107: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `gcont': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5111: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5142: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `splinthet': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5144: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5158: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `spline1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5160: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5173: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `spline2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5175: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5187: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `etor': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5287: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5378: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `etor_d': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5380: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5445: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eback_sc_corr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5448: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5496: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `multibody': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5498: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5554: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `esccorr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5556: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5592: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `pack_buffer': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5596: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5621: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `unpack_buffer': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5623: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5650: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `multibody_hb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5653: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5845: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `multibody_eello': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:5847: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6104: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `ehbcorr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6106: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6171: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `calc_eello': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6237: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6569: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `kernel': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6571: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6615: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eello4': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6617: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6728: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eello5': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:6731: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7114: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eello6': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7117: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7248: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eello6_graph1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7251: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7352: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eello6_graph2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7355: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7537: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eello6_graph3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7540: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7651: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eello6_graph4': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7654: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7895: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `eello_turn6': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:7898: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8216: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `scalar': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8220: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8236: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `matvec2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8239: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8259: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `matmat2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8261: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8287: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `scalar2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8290: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8297: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `transpose2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8302: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8314: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `transpose': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8316: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8326: undefined reference to `__func_trace_exit' -energy_p_new.o: In function `prodmat3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8328: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new.F:8374: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `sscale': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:13: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `elj_long': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:16: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:100: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `elj_short': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:102: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:186: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `eljk_long': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:188: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:274: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `eljk_short': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:276: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:362: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `ebp_long': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:364: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:490: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `ebp_short': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:492: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:618: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `egb_long': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:620: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:771: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `egb_short': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:773: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:923: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `egbv_long': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:925: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:1055: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `egbv_short': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:1057: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:1187: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `sc_grad_scale': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:1189: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:1240: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `eelec_scale': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:1242: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:1392: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `eelecij_scale': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:1394: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2075: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `evdwpp_long': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2077: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2174: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `evdwpp_short': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2176: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2273: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `escp_long': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2275: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2389: undefined reference to `__func_trace_exit' -energy_p_new-sep.o: In function `escp_short': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2391: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_p_new-sep.F:2505: undefined reference to `__func_trace_exit' -gradient_p.o: In function `gradient': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:100: undefined reference to `__func_trace_exit' -gradient_p.o: In function `grad_restr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:102: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:250: undefined reference to `__func_trace_exit' -gradient_p.o: In function `cartgrad': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:252: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:319: undefined reference to `__func_trace_exit' -gradient_p.o: In function `zerograd': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:321: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:389: undefined reference to `__func_trace_exit' -gradient_p.o: In function `fdum': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:391: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gradient_p.F:393: undefined reference to `__func_trace_exit' -minimize_p.o: In function `minimize': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:117: undefined reference to `__func_trace_exit' -minimize_p.o: In function `ergastulum': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:120: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:223: undefined reference to `__func_trace_exit' -minimize_p.o: In function `func': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:226: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:259: undefined reference to `__func_trace_exit' -minimize_p.o: In function `func_restr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:261: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:293: undefined reference to `__func_trace_exit' -minimize_p.o: In function `x2xx': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:295: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:340: undefined reference to `__func_trace_exit' -minimize_p.o: In function `xx2x': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:342: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:385: undefined reference to `__func_trace_exit' -minimize_p.o: In function `minim_dc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:388: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:505: undefined reference to `__func_trace_exit' -minimize_p.o: In function `func_dc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:507: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:553: undefined reference to `__func_trace_exit' -minimize_p.o: In function `grad_dc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:555: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minimize_p.F:625: undefined reference to `__func_trace_exit' -sumsld.o: In function `sumsl': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:479: undefined reference to `__func_trace_exit' -sumsld.o: In function `sumit': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:480: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:927: undefined reference to `__func_trace_exit' -sumsld.o: In function `dbdog': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:928: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1136: undefined reference to `__func_trace_exit' -sumsld.o: In function `ltvmul': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1137: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1167: undefined reference to `__func_trace_exit' -sumsld.o: In function `lupdat': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1168: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1310: undefined reference to `__func_trace_exit' -sumsld.o: In function `lvmul': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1311: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1343: undefined reference to `__func_trace_exit' -sumsld.o: In function `vvmulp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1344: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1361: undefined reference to `__func_trace_exit' -sumsld.o: In function `wzbfgs': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1362: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sumsld.f:1446: undefined reference to `__func_trace_exit' -cored.o: In function `assst': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:514: undefined reference to `__func_trace_exit' -cored.o: In function `deflt': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:515: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:627: undefined reference to `__func_trace_exit' -cored.o: In function `dotprd': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:628: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:666: undefined reference to `__func_trace_exit' -cored.o: In function `itsum': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:669: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:929: undefined reference to `__func_trace_exit' -cored.o: In function `litvmu': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:930: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:966: undefined reference to `__func_trace_exit' -cored.o: In function `livmul': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:967: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1002: undefined reference to `__func_trace_exit' -cored.o: In function `parck': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1003: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1328: undefined reference to `__func_trace_exit' -cored.o: In function `reldst': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1329: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1357: undefined reference to `__func_trace_exit' -cored.o: In function `vaxpy': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1383: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1395: undefined reference to `__func_trace_exit' -cored.o: In function `vcopy': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1396: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1408: undefined reference to `__func_trace_exit' -cored.o: In function `vdflt': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1409: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1514: undefined reference to `__func_trace_exit' -cored.o: In function `vscopy': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1515: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1527: undefined reference to `__func_trace_exit' -cored.o: In function `v2norm': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1528: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1586: undefined reference to `__func_trace_exit' -cored.o: In function `humsl': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1589: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1728: undefined reference to `__func_trace_exit' -cored.o: In function `humit': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:1729: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:2177: undefined reference to `__func_trace_exit' -cored.o: In function `dupdu': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:2178: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:2225: undefined reference to `__func_trace_exit' -cored.o: In function `gqtst': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:2226: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:2852: undefined reference to `__func_trace_exit' -cored.o: In function `lsqrt': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:2853: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:2922: undefined reference to `__func_trace_exit' -cored.o: In function `lsvmin': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:2923: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:3102: undefined reference to `__func_trace_exit' -cored.o: In function `slvmul': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:3105: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cored.f:3151: undefined reference to `__func_trace_exit' -rmdd.o: In function `imdcon': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmdd.f:4: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmdd.f:29: undefined reference to `__func_trace_exit' -rmdd.o: In function `rmdcon': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmdd.f:32: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmdd.f:157: undefined reference to `__func_trace_exit' -geomout.o: In function `pdbout': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:120: undefined reference to `__func_trace_exit' -geomout.o: In function `mol2out': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:122: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:177: undefined reference to `__func_trace_exit' -geomout.o: In function `intout': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:179: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:199: undefined reference to `__func_trace_exit' -geomout.o: In function `briefout': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:201: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:236: undefined reference to `__func_trace_exit' -geomout.o: In function `cartoutx': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:248: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:277: undefined reference to `__func_trace_exit' -geomout.o: In function `cartout': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:280: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:371: undefined reference to `__func_trace_exit' -geomout.o: In function `statout': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:374: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:443: undefined reference to `__func_trace_exit' -geomout.o: In function `gyrate': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:445: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/geomout.F:471: undefined reference to `__func_trace_exit' -readpdb.o: In function `readpdb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:192: undefined reference to `__func_trace_exit' -readpdb.o: In function `int_from_cart': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:194: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:285: undefined reference to `__func_trace_exit' -readpdb.o: In function `sc_loc_geom': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:287: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:374: undefined reference to `__func_trace_exit' -readpdb.o: In function `sccenter': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:376: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:389: undefined reference to `__func_trace_exit' -readpdb.o: In function `bond_regular': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:391: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/readpdb.f:407: undefined reference to `__func_trace_exit' -regularize.o: In function `regularize': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/regularize.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/regularize.F:76: undefined reference to `__func_trace_exit' -thread.o: In function `thread_seq': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/thread.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/thread.F:355: undefined reference to `__func_trace_exit' -thread.o: In function `write_thread_summary': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/thread.F:357: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/thread.F:460: undefined reference to `__func_trace_exit' -thread.o: In function `sc_conf': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/thread.F:462: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/thread.F:517: undefined reference to `__func_trace_exit' -thread.o: In function `write_stat_thread': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/thread.F:519: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/thread.F:549: undefined reference to `__func_trace_exit' -fitsq.o: In function `fitsq': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:87: undefined reference to `__func_trace_exit' -fitsq.o: In function `sivade': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:88: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:270: undefined reference to `__func_trace_exit' -fitsq.o: In function `givns': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:271: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:292: undefined reference to `__func_trace_exit' -fitsq.o: In function `switch': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:293: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:309: undefined reference to `__func_trace_exit' -fitsq.o: In function `mvvad': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:310: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:323: undefined reference to `__func_trace_exit' -fitsq.o: In function `det': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:324: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:329: undefined reference to `__func_trace_exit' -fitsq.o: In function `mmmul': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:331: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:340: undefined reference to `__func_trace_exit' -fitsq.o: In function `matvec': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:341: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/fitsq.f:352: undefined reference to `__func_trace_exit' -mcm.o: In function `mcm_setup': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:87: undefined reference to `__func_trace_exit' -mcm.o: In function `do_mcm': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:412: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:777: undefined reference to `__func_trace_exit' -mcm.o: In function `execute_slave': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:779: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:872: undefined reference to `__func_trace_exit' -mcm.o: In function `statprint': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:875: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:913: undefined reference to `__func_trace_exit' -mcm.o: In function `heat': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:915: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:952: undefined reference to `__func_trace_exit' -mcm.o: In function `cool': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:954: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:968: undefined reference to `__func_trace_exit' -mcm.o: In function `zapis': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:970: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1003: undefined reference to `__func_trace_exit' -mcm.o: In function `perturb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1005: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1216: undefined reference to `__func_trace_exit' -mcm.o: In function `selectmove': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1218: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1235: undefined reference to `__func_trace_exit' -mcm.o: In function `gen_psi': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1237: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1248: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1253: undefined reference to `__func_trace_exit' -mcm.o: In function `metropolis': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1256: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1336: undefined reference to `__func_trace_exit' -mcm.o: In function `conf_comp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1338: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1374: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1379: undefined reference to `__func_trace_exit' -mcm.o: In function `dif_ang': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1382: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1399: undefined reference to `__func_trace_exit' -mcm.o: In function `add2cache': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1402: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1448: undefined reference to `__func_trace_exit' -mcm.o: In function `rm_from_cache': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1450: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mcm.F:1480: undefined reference to `__func_trace_exit' -mc.o: In function `monte_carlo': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mc.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mc.F:719: undefined reference to `__func_trace_exit' -mc.o: In function `accept_mc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mc.F:721: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mc.F:783: undefined reference to `__func_trace_exit' -mc.o: In function `icialosc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mc.F:785: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mc.F:792: undefined reference to `__func_trace_exit' -mc.o: In function `entropia': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mc.F:795: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/mc.F:819: undefined reference to `__func_trace_exit' -bond_move.o: In function `bond_move': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bond_move.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bond_move.f:125: undefined reference to `__func_trace_exit' -refsys.o: In function `refsys': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/refsys.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/refsys.f:67: undefined reference to `__func_trace_exit' -check_sc_distr.o: In function `check_sc_distr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/check_sc_distr.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/check_sc_distr.f:43: undefined reference to `__func_trace_exit' -check_bond.o: In function `check_bond': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/check_bond.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/check_bond.f:20: undefined reference to `__func_trace_exit' -contact.o: In function `contact': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/contact.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/contact.f:51: undefined reference to `__func_trace_exit' -contact.o: In function `contact_fract': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/contact.f:53: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/contact.f:74: undefined reference to `__func_trace_exit' -contact.o: In function `contact_fract_nn': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/contact.f:77: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/contact.f:98: undefined reference to `__func_trace_exit' -contact.o: In function `hairpin': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/contact.f:101: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/contact.f:193: undefined reference to `__func_trace_exit' -djacob.o: In function `djacob': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/djacob.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/djacob.f:107: undefined reference to `__func_trace_exit' -eigen.o: In function `einvit': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:25: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:372: undefined reference to `__func_trace_exit' -eigen.o: In function `elau': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:374: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:421: undefined reference to `__func_trace_exit' -eigen.o: In function `epslon': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:423: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:481: undefined reference to `__func_trace_exit' -eigen.o: In function `eqlrat': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:484: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:653: undefined reference to `__func_trace_exit' -eigen.o: In function `estpi1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:655: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:710: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:736: undefined reference to `__func_trace_exit' -eigen.o: In function `etrbk3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:739: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:830: undefined reference to `__func_trace_exit' -eigen.o: In function `etred3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:832: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:985: undefined reference to `__func_trace_exit' -eigen.o: In function `evvrsp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:987: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1201: undefined reference to `__func_trace_exit' -eigen.o: In function `freda': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1203: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1226: undefined reference to `__func_trace_exit' -eigen.o: In function `giveis': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1228: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1307: undefined reference to `__func_trace_exit' -eigen.o: In function `gldiag': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1309: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1370: undefined reference to `__func_trace_exit' -eigen.o: In function `imtqlv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1372: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1524: undefined reference to `__func_trace_exit' -eigen.o: In function `jacdg': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1526: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1558: undefined reference to `__func_trace_exit' -eigen.o: In function `jacdia': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1560: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1724: undefined reference to `__func_trace_exit' -eigen.o: In function `jacord': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1726: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1748: undefined reference to `__func_trace_exit' -eigen.o: In function `tinvtb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1750: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1992: undefined reference to `__func_trace_exit' -eigen.o: In function `tql2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:1997: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:2156: undefined reference to `__func_trace_exit' -eigen.o: In function `trbk3b': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:2161: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:2229: undefined reference to `__func_trace_exit' -eigen.o: In function `tred3b': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:2234: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/eigen.f:2351: undefined reference to `__func_trace_exit' -blas.o: In function `dasum': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:14: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:24: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:34: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:53: undefined reference to `__func_trace_exit' -blas.o: In function `daxpy': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:56: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:102: undefined reference to `__func_trace_exit' -blas.o: In function `dcopy': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:104: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:152: undefined reference to `__func_trace_exit' -blas.o: In function `ddot': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:154: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:165: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:181: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:200: undefined reference to `__func_trace_exit' -blas.o: In function `dnrm2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:203: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:324: undefined reference to `__func_trace_exit' -blas.o: In function `drot': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:327: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:363: undefined reference to `__func_trace_exit' -blas.o: In function `drotg': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:365: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:397: undefined reference to `__func_trace_exit' -blas.o: In function `dscal': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:399: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:439: undefined reference to `__func_trace_exit' -blas.o: In function `dswap': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:441: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:495: undefined reference to `__func_trace_exit' -blas.o: In function `idamax': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:497: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:505: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:507: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:521: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:531: undefined reference to `__func_trace_exit' -blas.o: In function `dgemv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:534: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/blas.f:575: undefined reference to `__func_trace_exit' -add.o: In function `abrt': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/add.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/add.f:3: undefined reference to `__func_trace_exit' -add.o: In function `vclr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/add.f:5: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/add.f:28: undefined reference to `__func_trace_exit' -entmcm.o: In function `entmcm': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/entmcm.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/entmcm.F:571: undefined reference to `__func_trace_exit' -entmcm.o: In function `accepting': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/entmcm.F:573: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/entmcm.F:654: undefined reference to `__func_trace_exit' -entmcm.o: In function `read_pool': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/entmcm.F:656: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/entmcm.F:684: undefined reference to `__func_trace_exit' -minim_mcmf.o: In function `minim_mcmf': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minim_mcmf.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minim_mcmf.F:119: undefined reference to `__func_trace_exit' -together.o: In function `together': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:662: undefined reference to `__func_trace_exit' -together.o: In function `feedin': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:664: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:798: undefined reference to `__func_trace_exit' -together.o: In function `getx': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:800: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:865: undefined reference to `__func_trace_exit' -together.o: In function `putx': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:867: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:898: undefined reference to `__func_trace_exit' -together.o: In function `putx2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:900: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:927: undefined reference to `__func_trace_exit' -together.o: In function `prune_bank': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:930: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:984: undefined reference to `__func_trace_exit' -together.o: In function `reminimize': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:987: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:1049: undefined reference to `__func_trace_exit' -together.o: In function `send': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:1051: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:1132: undefined reference to `__func_trace_exit' -together.o: In function `recv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:1135: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:1207: undefined reference to `__func_trace_exit' -together.o: In function `history_append': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:1210: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/together.F:1221: undefined reference to `__func_trace_exit' -csa.o: In function `make_array': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:59: undefined reference to `__func_trace_exit' -csa.o: In function `make_ranvar': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:62: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:93: undefined reference to `__func_trace_exit' -csa.o: In function `make_ranvar_reg': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:96: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:132: undefined reference to `__func_trace_exit' -csa.o: In function `from_pdb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:135: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:203: undefined reference to `__func_trace_exit' -csa.o: In function `from_int': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:206: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:334: undefined reference to `__func_trace_exit' -csa.o: In function `dihang_to_c': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:337: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/csa.f:361: undefined reference to `__func_trace_exit' -minim_jlee.o: In function `minim_jlee': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minim_jlee.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minim_jlee.F:371: undefined reference to `__func_trace_exit' -minim_jlee.o: In function `check_var': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minim_jlee.F:373: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minim_jlee.F:406: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minim_jlee.F:431: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/minim_jlee.F:434: undefined reference to `__func_trace_exit' -shift.o: In function `csa_read': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/shift.F:2: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/shift.F:28: undefined reference to `__func_trace_exit' -shift.o: In function `initial_write': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/shift.F:30: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/shift.F:68: undefined reference to `__func_trace_exit' -shift.o: In function `restart_write': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/shift.F:70: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/shift.F:104: undefined reference to `__func_trace_exit' -diff12.o: In function `get_diff12': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/diff12.f:2: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/diff12.f:26: undefined reference to `__func_trace_exit' -bank.o: In function `refresh_bank': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:2: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:185: undefined reference to `__func_trace_exit' -bank.o: In function `replace_bvar': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:187: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:249: undefined reference to `__func_trace_exit' -bank.o: In function `write_rbank': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:251: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:279: undefined reference to `__func_trace_exit' -bank.o: In function `read_rbank': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:281: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:358: undefined reference to `__func_trace_exit' -bank.o: In function `write_bank': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:360: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:439: undefined reference to `__func_trace_exit' -bank.o: In function `write_bank_reminimized': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:441: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:488: undefined reference to `__func_trace_exit' -bank.o: In function `read_bank': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:490: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:604: undefined reference to `__func_trace_exit' -bank.o: In function `write_bank1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:606: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:636: undefined reference to `__func_trace_exit' -bank.o: In function `save_is': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:638: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:666: undefined reference to `__func_trace_exit' -bank.o: In function `select_is': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:668: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:739: undefined reference to `__func_trace_exit' -bank.o: In function `get_is_ran': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:741: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:763: undefined reference to `__func_trace_exit' -bank.o: In function `get_is': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:765: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:801: undefined reference to `__func_trace_exit' -bank.o: In function `select_iseed_max': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:803: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:848: undefined reference to `__func_trace_exit' -bank.o: In function `select_iseed_min': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:850: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:899: undefined reference to `__func_trace_exit' -bank.o: In function `select_iseed_far': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:901: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:926: undefined reference to `__func_trace_exit' -bank.o: In function `find_min': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:928: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:945: undefined reference to `__func_trace_exit' -bank.o: In function `write_csa_pdb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:947: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:994: undefined reference to `__func_trace_exit' -bank.o: In function `find_max': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:996: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:1013: undefined reference to `__func_trace_exit' -bank.o: In function `get_diff': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:1015: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:1045: undefined reference to `__func_trace_exit' -bank.o: In function `estimate_cutdif': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:1047: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:1063: undefined reference to `__func_trace_exit' -bank.o: In function `get_is_max': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:1065: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/bank.F:1084: undefined reference to `__func_trace_exit' -newconf.o: In function `make_var': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:3: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1570: undefined reference to `__func_trace_exit' -newconf.o: In function `check_old': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1573: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1605: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf1rr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1608: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1666: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf1br': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1669: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1752: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf1bb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1755: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1813: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf1arr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1816: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1874: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf1abr': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1877: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1944: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf1abb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:1947: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2014: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf_residue': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2017: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2086: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf_copy': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2090: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2124: undefined reference to `__func_trace_exit' -newconf.o: In function `newconf_residue_hairpin': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2127: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2235: undefined reference to `__func_trace_exit' -newconf.o: In function `gen_hairpin': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2238: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2288: undefined reference to `__func_trace_exit' -newconf.o: In function `select_frag': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2292: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/newconf.f:2454: undefined reference to `__func_trace_exit' -ran.o: In function `ran0': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/ran.f:2: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/ran.f:14: undefined reference to `__func_trace_exit' -ran.o: In function `ran1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/ran.f:18: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/ran.f:43: undefined reference to `__func_trace_exit' -ran.o: In function `ran2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/ran.f:47: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/ran.f:78: undefined reference to `__func_trace_exit' -ran.o: In function `ran3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/ran.f:82: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/ran.f:125: undefined reference to `__func_trace_exit' -indexx.o: In function `indexx': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/indexx.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/indexx.f:80: undefined reference to `__func_trace_exit' -MP.o: In function `init_task': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:2: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:130: undefined reference to `__func_trace_exit' -MP.o: In function `finish_task': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:132: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:199: undefined reference to `__func_trace_exit' -MP.o: In function `pattern_receive': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:201: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:230: undefined reference to `__func_trace_exit' -MP.o: In function `pattern_send': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:232: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:253: undefined reference to `__func_trace_exit' -MP.o: In function `send_stop_sig': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:255: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:287: undefined reference to `__func_trace_exit' -MP.o: In function `recv_stop_sig': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:289: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:315: undefined reference to `__func_trace_exit' -MP.o: In function `send_mcm_info': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:317: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:344: undefined reference to `__func_trace_exit' -MP.o: In function `receive_mcm_info': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:346: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:382: undefined reference to `__func_trace_exit' -MP.o: In function `send_thread_results': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:384: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:427: undefined reference to `__func_trace_exit' -MP.o: In function `receive_thread_results': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:429: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MP.F:494: undefined reference to `__func_trace_exit' -compare_s1.o: In function `compare_s1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/compare_s1.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/compare_s1.F:188: undefined reference to `__func_trace_exit' -prng.o: In function `prng_next': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:59: undefined reference to `__func_trace_exit' -prng.o: In function `vprng': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:63: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:87: undefined reference to `__func_trace_exit' -prng.o: In function `prng_chkpnt': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:99: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:115: undefined reference to `__func_trace_exit' -prng.o: In function `prng_restart': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:126: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:138: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:143: undefined reference to `__func_trace_exit' -prng.o: In function `(block data)_prngblk': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:143: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/prng.f:143: undefined reference to `__func_trace_exit' -test.o: In function `test': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:113: undefined reference to `__func_trace_exit' -test.o: In function `test_n16': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:116: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:179: undefined reference to `__func_trace_exit' -test.o: In function `test_local': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:182: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:219: undefined reference to `__func_trace_exit' -test.o: In function `test_sc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:221: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:252: undefined reference to `__func_trace_exit' -test.o: In function `bgrow': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:254: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:292: undefined reference to `__func_trace_exit' -test.o: In function `test11': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:296: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:991: undefined reference to `__func_trace_exit' -test.o: In function `test3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:994: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1172: undefined reference to `__func_trace_exit' -test.o: In function `test__': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1177: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1306: undefined reference to `__func_trace_exit' -test.o: In function `secondary': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1311: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1632: undefined reference to `__func_trace_exit' -test.o: In function `write_pdb': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1635: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1663: undefined reference to `__func_trace_exit' -test.o: In function `contact_cp2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1666: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1811: undefined reference to `__func_trace_exit' -test.o: In function `contact_cp': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1813: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1979: undefined reference to `__func_trace_exit' -test.o: In function `contact_cp_min': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:1981: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:2237: undefined reference to `__func_trace_exit' -test.o: In function `softreg': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:2239: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:2474: undefined reference to `__func_trace_exit' -test.o: In function `beta_slide': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:2477: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:2633: undefined reference to `__func_trace_exit' -test.o: In function `beta_zip': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:2635: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/test.F:2707: undefined reference to `__func_trace_exit' -banach.o: In function `banach': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/banach.f:3: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/banach.f:43: undefined reference to `__func_trace_exit' -banach.o: In function `banaii': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/banach.f:45: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/banach.f:68: undefined reference to `__func_trace_exit' -banach.o: In function `matinvert': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/banach.f:70: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/banach.f:97: undefined reference to `__func_trace_exit' -distfit.o: In function `distfit': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:82: undefined reference to `__func_trace_exit' -distfit.o: In function `rdif': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:84: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:108: undefined reference to `__func_trace_exit' -distfit.o: In function `rderiv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:111: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:145: undefined reference to `__func_trace_exit' -distfit.o: In function `heval': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:147: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:174: undefined reference to `__func_trace_exit' -distfit.o: In function `vec': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:177: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:197: undefined reference to `__func_trace_exit' -distfit.o: In function `transfer': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:199: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/distfit.f:206: undefined reference to `__func_trace_exit' -rmsd.o: In function `rms_nac_nnc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmsd.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmsd.F:23: undefined reference to `__func_trace_exit' -rmsd.o: In function `rmsd': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmsd.F:25: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmsd.F:76: undefined reference to `__func_trace_exit' -rmsd.o: In function `rmsd_csa': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmsd.F:79: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rmsd.F:128: undefined reference to `__func_trace_exit' -elecont.o: In function `elecont': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:199: undefined reference to `__func_trace_exit' -elecont.o: In function `secondary2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:201: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:491: undefined reference to `__func_trace_exit' -elecont.o: In function `freeres': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:493: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:499: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:500: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:503: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/elecont.f:507: undefined reference to `__func_trace_exit' -dihed_cons.o: In function `secstrp2dihc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/dihed_cons.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/dihed_cons.F:85: undefined reference to `__func_trace_exit' -dihed_cons.o: In function `read_secstr_pred': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/dihed_cons.F:87: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/dihed_cons.F:185: undefined reference to `__func_trace_exit' -sc_move.o: In function `sc_move': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:157: undefined reference to `__func_trace_exit' -sc_move.o: In function `single_sc_move': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:161: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:334: undefined reference to `__func_trace_exit' -sc_move.o: In function `sc_minimize': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:338: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:420: undefined reference to `__func_trace_exit' -sc_move.o: In function `minimize_sc1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:423: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:499: undefined reference to `__func_trace_exit' -sc_move.o: In function `func_restr1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:501: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:556: undefined reference to `__func_trace_exit' -sc_move.o: In function `grad_restr1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:558: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:691: undefined reference to `__func_trace_exit' -sc_move.o: In function `egb1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:693: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sc_move.F:820: undefined reference to `__func_trace_exit' -local_move.o: In function `local_move_init': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:3: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:38: undefined reference to `__func_trace_exit' -local_move.o: In function `local_move': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:42: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:161: undefined reference to `__func_trace_exit' -local_move.o: In function `output_tabs': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:165: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:192: undefined reference to `__func_trace_exit' -local_move.o: In function `angles2tab': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:196: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:270: undefined reference to `__func_trace_exit' -local_move.o: In function `minmax_angles': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:274: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:342: undefined reference to `__func_trace_exit' -local_move.o: In function `construct_tab': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:346: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:512: undefined reference to `__func_trace_exit' -local_move.o: In function `construct_ranges': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:516: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:596: undefined reference to `__func_trace_exit' -local_move.o: In function `fix_no_moves': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:600: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:685: undefined reference to `__func_trace_exit' -local_move.o: In function `move_res': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:689: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:801: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:898: undefined reference to `__func_trace_exit' -local_move.o: In function `loc_test': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:903: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/local_move.f:968: undefined reference to `__func_trace_exit' -intcartderiv.o: In function `intcartderiv': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcartderiv.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcartderiv.F:248: undefined reference to `__func_trace_exit' -intcartderiv.o: In function `checkintcartgrad': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcartderiv.F:250: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcartderiv.F:406: undefined reference to `__func_trace_exit' -intcartderiv.o: In function `chainbuild_cart': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcartderiv.F:408: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/intcartderiv.F:466: undefined reference to `__func_trace_exit' -lagrangian_lesyng.o: In function `lagrangian': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:113: undefined reference to `__func_trace_exit' -lagrangian_lesyng.o: In function `setup_md_matrices': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:115: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:334: undefined reference to `__func_trace_exit' -lagrangian_lesyng.o: In function `eigout': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:336: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:364: undefined reference to `__func_trace_exit' -lagrangian_lesyng.o: In function `matout': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:366: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:392: undefined reference to `__func_trace_exit' -lagrangian_lesyng.o: In function `matout1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:394: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:420: undefined reference to `__func_trace_exit' -lagrangian_lesyng.o: In function `matout2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:422: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:448: undefined reference to `__func_trace_exit' -lagrangian_lesyng.o: In function `ginv_mult': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:450: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:534: undefined reference to `__func_trace_exit' -lagrangian_lesyng.o: In function `fricmat_mult': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:578: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/lagrangian_lesyng.F:598: undefined reference to `__func_trace_exit' -stochfric.o: In function `friction_force': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/stochfric.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/stochfric.F:154: undefined reference to `__func_trace_exit' -stochfric.o: In function `stochastic_force': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/stochfric.F:156: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/stochfric.F:302: undefined reference to `__func_trace_exit' -stochfric.o: In function `setup_fricmat': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/stochfric.F:304: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/stochfric.F:461: undefined reference to `__func_trace_exit' -stochfric.o: In function `sdarea': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/stochfric.F:463: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/stochfric.F:553: undefined reference to `__func_trace_exit' -kinetic_lesyng.o: In function `kinetic': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/kinetic_lesyng.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/kinetic_lesyng.f:100: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `md': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:263: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `velverlet_step': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:265: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:547: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `respa_step': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:549: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:875: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `respa_vel': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:877: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:909: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `verlet1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:911: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:970: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `verlet2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:972: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1003: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `sddir_precalc': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1005: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1038: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `sddir_verlet1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1040: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1099: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `sddir_verlet2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1101: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1162: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `max_accel': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1164: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1237: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `predict_edrift': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1239: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1282: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `verlet_bath': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1284: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1324: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `init_md': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1326: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1638: undefined reference to `__func_trace_exit' -MD_A-MTS.o: In function `random_vel': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1640: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MD_A-MTS.F:1724: undefined reference to `__func_trace_exit' -moments.o: In function `inertia_tensor': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/moments.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/moments.f:194: undefined reference to `__func_trace_exit' -moments.o: In function `angmom': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/moments.f:196: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/moments.f:282: undefined reference to `__func_trace_exit' -moments.o: In function `vcm_vel': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/moments.f:284: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/moments.f:328: undefined reference to `__func_trace_exit' -int_to_cart.o: In function `int_to_cart': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/int_to_cart.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/int_to_cart.f:117: undefined reference to `__func_trace_exit' -surfatom.o: In function `surfatom': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/surfatom.f:35: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/surfatom.f:494: undefined reference to `__func_trace_exit' -sort.o: In function `sort': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:19: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:60: undefined reference to `__func_trace_exit' -sort.o: In function `sort2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:75: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:130: undefined reference to `__func_trace_exit' -sort.o: In function `sort3': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:145: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:201: undefined reference to `__func_trace_exit' -sort.o: In function `sort4': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:215: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:257: undefined reference to `__func_trace_exit' -sort.o: In function `sort5': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:271: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:326: undefined reference to `__func_trace_exit' -sort.o: In function `sort6': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:340: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:382: undefined reference to `__func_trace_exit' -sort.o: In function `sort7': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:397: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:453: undefined reference to `__func_trace_exit' -sort.o: In function `sort8': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:468: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:521: undefined reference to `__func_trace_exit' -sort.o: In function `sort9': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:536: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/sort.f:589: undefined reference to `__func_trace_exit' -muca_md.o: In function `muca_delta': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:20: undefined reference to `__func_trace_exit' -muca_md.o: In function `muca_ene': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:22: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:41: undefined reference to `__func_trace_exit' -muca_md.o: In function `read_muca': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:44: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:106: undefined reference to `__func_trace_exit' -muca_md.o: In function `print_muca': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:109: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:162: undefined reference to `__func_trace_exit' -muca_md.o: In function `muca_update': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:164: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:248: undefined reference to `__func_trace_exit' -muca_md.o: In function `muca_factor': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:250: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:270: undefined reference to `__func_trace_exit' -muca_md.o: In function `spline': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:274: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:306: undefined reference to `__func_trace_exit' -muca_md.o: In function `splint': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:309: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/muca_md.f:334: undefined reference to `__func_trace_exit' -MREMD.o: In function `mremd': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1215: undefined reference to `__func_trace_exit' -MREMD.o: In function `write1rst': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1218: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1392: undefined reference to `__func_trace_exit' -MREMD.o: In function `write1traj': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1395: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1605: undefined reference to `__func_trace_exit' -MREMD.o: In function `read1restart': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1608: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1791: undefined reference to `__func_trace_exit' -MREMD.o: In function `read1restart_old': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1793: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/MREMD.F:1860: undefined reference to `__func_trace_exit' -rattle.o: In function `rattle1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rattle.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rattle.F:267: undefined reference to `__func_trace_exit' -rattle.o: In function `rattle2': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rattle.F:269: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rattle.F:438: undefined reference to `__func_trace_exit' -rattle.o: In function `rattle_brown': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rattle.F:440: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/rattle.F:706: undefined reference to `__func_trace_exit' -gauss.o: In function `gauss': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gauss.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gauss.f:14: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gauss.f:18: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gauss.f:40: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gauss.f:55: undefined reference to `__func_trace_exit' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gauss.f:68: undefined reference to `__func_trace_exit' -energy_split-sep.o: In function `etotal_long': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_split-sep.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_split-sep.F:242: undefined reference to `__func_trace_exit' -energy_split-sep.o: In function `etotal_short': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_split-sep.F:244: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/energy_split-sep.F:459: undefined reference to `__func_trace_exit' -q_measure.o: In function `qwolynes': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:70: undefined reference to `__func_trace_exit' -q_measure.o: In function `qwolynes_prim': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:73: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:184: undefined reference to `__func_trace_exit' -q_measure.o: In function `qwol_num': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:186: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:227: undefined reference to `__func_trace_exit' -q_measure.o: In function `econstrq': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:229: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:362: undefined reference to `__func_trace_exit' -q_measure.o: In function `deconstrq_num': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:364: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/q_measure.F:486: undefined reference to `__func_trace_exit' -gnmr1.o: In function `gnmr1': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gnmr1.f:1: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gnmr1.f:12: undefined reference to `__func_trace_exit' -gnmr1.o: In function `gnmr1prim': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gnmr1.f:15: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gnmr1.f:26: undefined reference to `__func_trace_exit' -gnmr1.o: In function `harmonic': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gnmr1.f:29: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gnmr1.f:34: undefined reference to `__func_trace_exit' -gnmr1.o: In function `harmonicprim': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gnmr1.f:37: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/gnmr1.f:41: undefined reference to `__func_trace_exit' -cinfo.o: In function `cinfo': -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cinfo.f:3: undefined reference to `__func_trace_enter' -/gpfs/home/liwo/UNRES/src_TC_newmat.tau-timing/cinfo.f:35: undefined reference to `__func_trace_exit' -make: *** [unres] Error 1 diff --git a/source/unres/src_MD-M/b b/source/unres/src_MD-M/b deleted file mode 100644 index b8ffa64..0000000 --- a/source/unres/src_MD-M/b +++ /dev/null @@ -1,81 +0,0 @@ -add.* -arcos.* -banach.* -bank.* -blas.* -bond_move.* -cartder.* -cartprint.* -chainbuild.* -check_bond.* -checkder_p.* -check_sc_distr.* -cinfo.* -compare_s1.* -contact.* -convert.* -cored.* -csa.* -diff12.* -dihed_cons.* -distfit.* -djacob.* -econstr_local.* -eigen.* -elecont.* -energy_p_new.* -energy_p_new-sep.* -energy_split-sep.* -entmcm.* -fitsq.* -gauss.* -geomout.* -gnmr1.* -gradient_p.* -indexx.* -initialize_p.* -intcartderiv.* -intcor.* -intlocal.* -int_to_cart.* -kinetic_lesyng.* -lagrangian_lesyng.* -local_move.* -map.* -matmult.* -mcm.* -mc.* -MD_A-MTS.* -minimize_p.* -minim_jlee.* -minim_mcmf.* -misc.* -moments.* -MP.* -MREMD.* -muca_md.* -newconf.* -parmread.* -pinorm.* -printmat.* -q_measure.* -randgens.* -ran.* -rattle.* -readpdb.* -refsys.* -regularize.* -rescode.* -rmdd.* -rmsd.* -sc_move.* -shift.* -sort.* -stochfric.* -sumsld.* -surfatom.* -test.* -thread.* -timing.* -together.* -unres.* diff --git a/source/unres/src_MD-M/compinfo b/source/unres/src_MD-M/compinfo deleted file mode 100755 index a9d3c1d..0000000 Binary files a/source/unres/src_MD-M/compinfo and /dev/null differ diff --git a/source/unres/src_MD-M/compinfo.c b/source/unres/src_MD-M/compinfo.c index 813cf31..e28f686 100644 --- a/source/unres/src_MD-M/compinfo.c +++ b/source/unres/src_MD-M/compinfo.c @@ -14,10 +14,10 @@ time_t Tp; in=fopen("cinfo.f","r"); out=fopen("cinfo.f.new","w"); -fgets(buf,498,in); -fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); -fgets(buf,498,in); -sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); +if (fgets(buf,498,in) != NULL) + fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); +if (fgets(buf,498,in) != NULL) + sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); iv3++; fprintf(out,"C %d %d %d\n",iv1,iv2,iv3); fprintf(out," subroutine cinfo\n"); @@ -26,18 +26,22 @@ fprintf(out," write(iout,*)'++++ Compile info ++++'\n"); fprintf(out," write(iout,*)'Version %d.%-d build %d'\n",iv1,iv2,iv3); uname(&Name); time(&Tp); -system("rm tmptmp; whoami > tmptmp"); +system("whoami > tmptmp"); in1=fopen("tmptmp","r"); -fscanf(in1,"%s",buf1); -fclose(in1); +if (fscanf(in1,"%s",buf1) != EOF) +{ p1=ctime(&Tp); p1[strlen(p1)-1]='\0'; fprintf(out," write(iout,*)'compiled %s'\n",p1); fprintf(out," write(iout,*)'compiled by %s@%s'\n",buf1,Name.nodename); fprintf(out," write(iout,*)'OS name: %s '\n",Name.sysname); fprintf(out," write(iout,*)'OS release: %s '\n",Name.release); -fprintf(out," write(iout,*)'OS version: %s '\n",Name.version); +fprintf(out," write(iout,*)'OS version:',\n"); +fprintf(out," & ' %s '\n",Name.version); fprintf(out," write(iout,*)'flags:'\n"); +} +system("rm tmptmp"); +fclose(in1); in1=fopen("Makefile","r"); while(fgets(buf,498,in1) != NULL) { @@ -55,8 +59,8 @@ while(fgets(buf,498,in1) != NULL) { strcat(buf,"\\"); fprintf(out," write(iout,*)'%s'\n",buf); - fgets(buf,498,in1); - buf[strlen(buf)-1]='\0'; + if (fgets(buf,498,in1) != NULL) + buf[strlen(buf)-1]='\0'; if(strlen(buf) > 49) { buf[47]='\0'; diff --git a/source/unres/src_MD-M/dif b/source/unres/src_MD-M/dif deleted file mode 100644 index 6848da7..0000000 --- a/source/unres/src_MD-M/dif +++ /dev/null @@ -1,8088 +0,0 @@ -1,9c1,149 -< C----------------------------------------------------------------------- -< double precision function sscale(r) -< double precision r,gamm -< include "COMMON.SPLITELE" -< if(r.lt.r_cut-rlamb) then -< sscale=1.0d0 -< else if(r.le.r_cut.and.r.ge.r_cut-rlamb) then -< gamm=(r-(r_cut-rlamb))/rlamb -< sscale=1.0d0+gamm*gamm*(2*gamm-3.0d0) ---- -> subroutine etotal(energia) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> #ifndef ISNAN -> external proc_proc -> #ifdef WINPGI -> cMS$ATTRIBUTES C :: proc_proc -> #endif -> #endif -> #ifdef MPI -> include "mpif.h" -> double precision weights_(n_ene) -> #endif -> include 'COMMON.SETUP' -> include 'COMMON.IOUNITS' -> double precision energia(0:n_ene) -> include 'COMMON.LOCAL' -> include 'COMMON.FFIELD' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.SBRIDGE' -> include 'COMMON.CHAIN' -> include 'COMMON.VAR' -> include 'COMMON.MD' -> include 'COMMON.CONTROL' -> include 'COMMON.TIME1' -> if (modecalc.eq.12.or.modecalc.eq.14) then -> #ifdef MPI -> if (fg_rank.eq.0) call int_from_cart1(.false.) -> #else -> call int_from_cart1(.false.) -> #endif -> endif -> #ifdef MPI -> c print*,"ETOTAL Processor",fg_rank," absolute rank",myrank, -> c & " nfgtasks",nfgtasks -> if (nfgtasks.gt.1) then -> time00=MPI_Wtime() -> C FG slaves call the following matching MPI_Bcast in ERGASTULUM -> if (fg_rank.eq.0) then -> call MPI_Bcast(0,1,MPI_INTEGER,king,FG_COMM,IERROR) -> c print *,"Processor",myrank," BROADCAST iorder" -> C FG master sets up the WEIGHTS_ array which will be broadcast to the -> C FG slaves as WEIGHTS array. -> weights_(1)=wsc -> weights_(2)=wscp -> weights_(3)=welec -> weights_(4)=wcorr -> weights_(5)=wcorr5 -> weights_(6)=wcorr6 -> weights_(7)=wel_loc -> weights_(8)=wturn3 -> weights_(9)=wturn4 -> weights_(10)=wturn6 -> weights_(11)=wang -> weights_(12)=wscloc -> weights_(13)=wtor -> weights_(14)=wtor_d -> weights_(15)=wstrain -> weights_(16)=wvdwpp -> weights_(17)=wbond -> weights_(18)=scal14 -> weights_(21)=wsccor -> C FG Master broadcasts the WEIGHTS_ array -> call MPI_Bcast(weights_(1),n_ene, -> & MPI_DOUBLE_PRECISION,king,FG_COMM,IERROR) -> else -> C FG slaves receive the WEIGHTS array -> call MPI_Bcast(weights(1),n_ene, -> & MPI_DOUBLE_PRECISION,king,FG_COMM,IERROR) -> endif -> c print *,"Processor",myrank," BROADCAST weights" -> call MPI_Bcast(c(1,1),maxres6,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> c print *,"Processor",myrank," BROADCAST c" -> call MPI_Bcast(dc(1,1),maxres6,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> c print *,"Processor",myrank," BROADCAST dc" -> call MPI_Bcast(dc_norm(1,1),maxres6,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> c print *,"Processor",myrank," BROADCAST dc_norm" -> call MPI_Bcast(theta(1),nres,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> c print *,"Processor",myrank," BROADCAST theta" -> call MPI_Bcast(phi(1),nres,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> c print *,"Processor",myrank," BROADCAST phi" -> call MPI_Bcast(alph(1),nres,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> c print *,"Processor",myrank," BROADCAST alph" -> call MPI_Bcast(omeg(1),nres,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> c print *,"Processor",myrank," BROADCAST omeg" -> call MPI_Bcast(vbld(1),2*nres,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> c print *,"Processor",myrank," BROADCAST vbld" -> call MPI_Bcast(vbld_inv(1),2*nres,MPI_DOUBLE_PRECISION, -> & king,FG_COMM,IERR) -> time_Bcast=time_Bcast+MPI_Wtime()-time00 -> c print *,"Processor",myrank," BROADCAST vbld_inv" -> endif -> c print *,'Processor',myrank,' calling etotal ipot=',ipot -> c print *,'Processor',myrank,' nnt=',nnt,' nct=',nct -> #endif -> C -> C Compute the side-chain and electrostatic interaction energy -> C -> goto (101,102,103,104,105,106) ipot -> C Lennard-Jones potential. -> 101 call elj(evdw) -> cd print '(a)','Exit ELJ' -> goto 107 -> C Lennard-Jones-Kihara potential (shifted). -> 102 call eljk(evdw) -> goto 107 -> C Berne-Pechukas potential (dilated LJ, angular dependence). -> 103 call ebp(evdw) -> goto 107 -> C Gay-Berne potential (shifted LJ, angular dependence). -> 104 call egb(evdw) -> goto 107 -> C Gay-Berne-Vorobjev potential (shifted LJ, angular dependence). -> 105 call egbv(evdw) -> goto 107 -> C Soft-sphere potential -> 106 call e_softsphere(evdw) -> C -> C Calculate electrostatic (H-bonding) energy of the main chain. -> C -> 107 continue -> c print *,"Processor",myrank," computed USCSC" -> call vec_and_deriv -> c print *,"Processor",myrank," left VEC_AND_DERIV" -> if (ipot.lt.6) then -> #ifdef SPLITELE -> if (welec.gt.0d0.or.wvdwpp.gt.0d0.or.wel_loc.gt.0d0.or. -> & wturn3.gt.0d0.or.wturn4.gt.0d0) then -> #else -> if (welec.gt.0d0.or.wel_loc.gt.0d0.or. -> & wturn3.gt.0d0.or.wturn4.gt.0d0) then -> #endif -> call eelec(ees,evdw1,eel_loc,eello_turn3,eello_turn4) -> else -> ees=0 -> evdw1=0 -> eel_loc=0 -> eello_turn3=0 -> eello_turn4=0 -> endif -11c151,153 -< sscale=0d0 ---- -> c write (iout,*) "Soft-spheer ELEC potential" -> call eelec_soft_sphere(ees,evdw1,eel_loc,eello_turn3, -> & eello_turn4) -13,16c155 -< return -< end -< C----------------------------------------------------------------------- -< subroutine elj_long(evdw) ---- -> c print *,"Processor",myrank," computed UELEC" -18,19c157,261 -< C This subroutine calculates the interaction energy of nonbonded side chains -< C assuming the LJ potential of interaction. ---- -> C Calculate excluded-volume interaction energy between peptide groups -> C and side chains. -> C -> if (ipot.lt.6) then -> if(wscp.gt.0d0) then -> call escp(evdw2,evdw2_14) -> else -> evdw2=0 -> evdw2_14=0 -> endif -> else -> c write (iout,*) "Soft-sphere SCP potential" -> call escp_soft_sphere(evdw2,evdw2_14) -> endif -> c -> c Calculate the bond-stretching energy -> c -> call ebond(estr) -> C -> C Calculate the disulfide-bridge and other energy and the contributions -> C from other distance constraints. -> cd print *,'Calling EHPB' -> call edis(ehpb) -> cd print *,'EHPB exitted succesfully.' -> C -> C Calculate the virtual-bond-angle energy. -> C -> if (wang.gt.0d0) then -> call ebend(ebe) -> else -> ebe=0 -> endif -> c print *,"Processor",myrank," computed UB" -> C -> C Calculate the SC local energy. -> C -> call esc(escloc) -> c print *,"Processor",myrank," computed USC" -> C -> C Calculate the virtual-bond torsional energy. -> C -> cd print *,'nterm=',nterm -> if (wtor.gt.0) then -> call etor(etors,edihcnstr) -> else -> etors=0 -> edihcnstr=0 -> endif -> c print *,"Processor",myrank," computed Utor" -> C -> C 6/23/01 Calculate double-torsional energy -> C -> if (wtor_d.gt.0) then -> call etor_d(etors_d) -> else -> etors_d=0 -> endif -> c print *,"Processor",myrank," computed Utord" -> C -> C 21/5/07 Calculate local sicdechain correlation energy -> C -> if (wsccor.gt.0.0d0) then -> call eback_sc_corr(esccor) -> else -> esccor=0.0d0 -> endif -> c print *,"Processor",myrank," computed Usccorr" -> C -> C 12/1/95 Multi-body terms -> C -> n_corr=0 -> n_corr1=0 -> if ((wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0 -> & .or. wturn6.gt.0.0d0) .and. ipot.lt.6) then -> call multibody_eello(ecorr,ecorr5,ecorr6,eturn6,n_corr,n_corr1) -> c write (2,*) 'n_corr=',n_corr,' n_corr1=',n_corr1, -> c &" ecorr",ecorr," ecorr5",ecorr5," ecorr6",ecorr6," eturn6",eturn6 -> else -> ecorr=0 -> ecorr5=0 -> ecorr6=0 -> eturn6=0 -> endif -> if ((wcorr4.eq.0.0d0 .and. wcorr.gt.0.0d0) .and. ipot.lt.6) then -> call multibody_hb(ecorr,ecorr5,ecorr6,n_corr,n_corr1) -> else -> ecorr=0 -> ecorr5=0 -> ecorr6=0 -> eturn6=0 -> endif -> c print *,"Processor",myrank," computed Ucorr" -> C -> C If performing constraint dynamics, call the constraint energy -> C after the equilibration time -> if(usampl.and.totT.gt.eq_time) then -> call EconstrQ -> call Econstr_back -> else -> Uconst=0.0d0 -> Uconst_back=0.0d0 -> endif -> c print *,"Processor",myrank," computed Uconstr" -> c -> C Sum the energies -20a263,300 -> energia(1)=evdw -> #ifdef SCP14 -> energia(2)=evdw2-evdw2_14 -> energia(18)=evdw2_14 -> #else -> energia(2)=evdw2 -> energia(18)=0.0d0 -> #endif -> #ifdef SPLITELE -> energia(3)=ees -> energia(16)=evdw1 -> #else -> energia(3)=ees+evdw1 -> energia(16)=0.0d0 -> #endif -> energia(4)=ecorr -> energia(5)=ecorr5 -> energia(6)=ecorr6 -> energia(7)=eel_loc -> energia(8)=eello_turn3 -> energia(9)=eello_turn4 -> energia(10)=eturn6 -> energia(11)=ebe -> energia(12)=escloc -> energia(13)=etors -> energia(14)=etors_d -> energia(15)=ehpb -> energia(19)=edihcnstr -> energia(17)=estr -> energia(20)=Uconst+Uconst_back -> energia(21)=esccor -> c print *," Processor",myrank," calls SUM_ENERGY" -> call sum_energy(energia,.true.) -> c print *," Processor",myrank," left SUM_ENERGY" -> return -> end -> c------------------------------------------------------------------------------- -> subroutine sum_energy(energia,reduce) -23,27c303,315 -< parameter (accur=1.0d-10) -< include 'COMMON.GEO' -< include 'COMMON.VAR' -< include 'COMMON.LOCAL' -< include 'COMMON.CHAIN' ---- -> #ifndef ISNAN -> external proc_proc -> #ifdef WINPGI -> cMS$ATTRIBUTES C :: proc_proc -> #endif -> #endif -> #ifdef MPI -> include "mpif.h" -> #endif -> include 'COMMON.SETUP' -> include 'COMMON.IOUNITS' -> double precision energia(0:n_ene),enebuff(0:n_ene+1) -> include 'COMMON.FFIELD' -30d317 -< include 'COMMON.TORSION' -32c319,428 -< include 'COMMON.NAMES' ---- -> include 'COMMON.CHAIN' -> include 'COMMON.VAR' -> include 'COMMON.CONTROL' -> include 'COMMON.TIME1' -> logical reduce -> #ifdef MPI -> if (nfgtasks.gt.1 .and. reduce) then -> #ifdef DEBUG -> write (iout,*) "energies before REDUCE" -> call enerprint(energia) -> call flush(iout) -> #endif -> do i=0,n_ene -> enebuff(i)=energia(i) -> enddo -> time00=MPI_Wtime() -> call MPI_Reduce(enebuff(0),energia(0),n_ene+1, -> & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) -> #ifdef DEBUG -> write (iout,*) "energies after REDUCE" -> call enerprint(energia) -> call flush(iout) -> #endif -> time_Reduce=time_Reduce+MPI_Wtime()-time00 -> endif -> if (fg_rank.eq.0) then -> #endif -> evdw=energia(1) -> #ifdef SCP14 -> evdw2=energia(2)+energia(18) -> evdw2_14=energia(18) -> #else -> evdw2=energia(2) -> #endif -> #ifdef SPLITELE -> ees=energia(3) -> evdw1=energia(16) -> #else -> ees=energia(3) -> evdw1=0.0d0 -> #endif -> ecorr=energia(4) -> ecorr5=energia(5) -> ecorr6=energia(6) -> eel_loc=energia(7) -> eello_turn3=energia(8) -> eello_turn4=energia(9) -> eturn6=energia(10) -> ebe=energia(11) -> escloc=energia(12) -> etors=energia(13) -> etors_d=energia(14) -> ehpb=energia(15) -> edihcnstr=energia(19) -> estr=energia(17) -> Uconst=energia(20) -> esccor=energia(21) -> #ifdef SPLITELE -> etot=wsc*evdw+wscp*evdw2+welec*ees+wvdwpp*evdw1 -> & +wang*ebe+wtor*etors+wscloc*escloc -> & +wstrain*ehpb+nss*ebr+wcorr*ecorr+wcorr5*ecorr5 -> & +wcorr6*ecorr6+wturn4*eello_turn4+wturn3*eello_turn3 -> & +wturn6*eturn6+wel_loc*eel_loc+edihcnstr+wtor_d*etors_d -> & +wbond*estr+Uconst+wsccor*esccor -> #else -> etot=wsc*evdw+wscp*evdw2+welec*(ees+evdw1) -> & +wang*ebe+wtor*etors+wscloc*escloc -> & +wstrain*ehpb+nss*ebr+wcorr*ecorr+wcorr5*ecorr5 -> & +wcorr6*ecorr6+wturn4*eello_turn4+wturn3*eello_turn3 -> & +wturn6*eturn6+wel_loc*eel_loc+edihcnstr+wtor_d*etors_d -> & +wbond*estr+Uconst+wsccor*esccor -> #endif -> energia(0)=etot -> c detecting NaNQ -> #ifdef ISNAN -> #ifdef AIX -> if (isnan(etot).ne.0) energia(0)=1.0d+99 -> #else -> if (isnan(etot)) energia(0)=1.0d+99 -> #endif -> #else -> i=0 -> #ifdef WINPGI -> idumm=proc_proc(etot,i) -> #else -> call proc_proc(etot,i) -> #endif -> if(i.eq.1)energia(0)=1.0d+99 -> #endif -> #ifdef MPI -> endif -> #endif -> return -> end -> c------------------------------------------------------------------------------- -> subroutine sum_gradient -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> #ifndef ISNAN -> external proc_proc -> #ifdef WINPGI -> cMS$ATTRIBUTES C :: proc_proc -> #endif -> #endif -> #ifdef MPI -> include 'mpif.h' -> double precision gradbufc(3,maxres),gradbufx(3,maxres), -> & glocbuf(4*maxres) -> #endif -> include 'COMMON.SETUP' -34,45c430,438 -< include 'COMMON.CONTACTS' -< dimension gg(3) -< c write(iout,*)'Entering ELJ nnt=',nnt,' nct=',nct,' expon=',expon -< evdw=0.0D0 -< do i=iatsc_s,iatsc_e -< itypi=itype(i) -< itypi1=itype(i+1) -< xi=c(1,nres+i) -< yi=c(2,nres+i) -< zi=c(3,nres+i) -< C -< C Calculate SC interaction energy. ---- -> include 'COMMON.FFIELD' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.SBRIDGE' -> include 'COMMON.CHAIN' -> include 'COMMON.VAR' -> include 'COMMON.CONTROL' -> include 'COMMON.TIME1' -> include 'COMMON.MAXGRAD' -47,65c440 -< do iint=1,nint_gr(i) -< cd write (iout,*) 'i=',i,' iint=',iint,' istart=',istart(i,iint), -< cd & 'iend=',iend(i,iint) -< do j=istart(i,iint),iend(i,iint) -< itypj=itype(j) -< xj=c(1,nres+j)-xi -< yj=c(2,nres+j)-yi -< zj=c(3,nres+j)-zi -< rij=xj*xj+yj*yj+zj*zj -< sss=sscale(dsqrt(rij)/sigma(itypi,itypj)) -< if (sss.lt.1.0d0) then -< rrij=1.0D0/rij -< fac=rrij**expon2 -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=e1+e2 -< evdw=evdw+(1.0d0-sss)*evdwij -< C -< C Calculate the components of the gradient in DC and X ---- -> C Sum up the components of the Cartesian gradient. -67,83c442 -< fac=-rrij*(e1+evdwij)*(1.0d0-sss) -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac -< do k=1,3 -< gvdwx(k,i)=gvdwx(k,i)-gg(k) -< gvdwx(k,j)=gvdwx(k,j)+gg(k) -< enddo -< do k=i,j-1 -< do l=1,3 -< gvdwc(l,k)=gvdwc(l,k)+gg(l) -< enddo -< enddo -< endif -< enddo ! j -< enddo ! iint -< enddo ! i ---- -> #ifdef SPLITELE -86,87c445,484 -< gvdwc(j,i)=expon*gvdwc(j,i) -< gvdwx(j,i)=expon*gvdwx(j,i) ---- -> gradc(j,i,icg)=wsc*gvdwc(j,i)+wscp*gvdwc_scp(j,i)+ -> & welec*gelc(j,i)+wvdwpp*gvdwpp(j,i)+ -> & wbond*gradb(j,i)+ -> & wstrain*ghpbc(j,i)+ -> & wcorr*gradcorr(j,i)+ -> & wel_loc*gel_loc(j,i)+ -> & wturn3*gcorr3_turn(j,i)+ -> & wturn4*gcorr4_turn(j,i)+ -> & wcorr5*gradcorr5(j,i)+ -> & wcorr6*gradcorr6(j,i)+ -> & wturn6*gcorr6_turn(j,i)+ -> & wsccor*gsccorc(j,i) -> & +wscloc*gscloc(j,i) -> gradx(j,i,icg)=wsc*gvdwx(j,i)+wscp*gradx_scp(j,i)+ -> & wbond*gradbx(j,i)+ -> & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+ -> & wsccor*gsccorx(j,i) -> & +wscloc*gsclocx(j,i) -> enddo -> enddo -> #else -> do i=1,nct -> do j=1,3 -> gradc(j,i,icg)=wsc*gvdwc(j,i)+wscp*gvdwc_scp(j,i)+ -> & welec*gelc(j,i)+wstrain*ghpbc(j,i)+ -> & wbond*gradb(j,i)+ -> & wcorr*gradcorr(j,i)+ -> & wel_loc*gel_loc(j,i)+ -> & wturn3*gcorr3_turn(j,i)+ -> & wturn4*gcorr4_turn(j,i)+ -> & wcorr5*gradcorr5(j,i)+ -> & wcorr6*gradcorr6(j,i)+ -> & wturn6*gcorr6_turn(j,i)+ -> & wsccor*gsccorc(j,i) -> & +wscloc*gscloc(j,i) -> gradx(j,i,icg)=wsc*gvdwx(j,i)+wscp*gradx_scp(j,i)+ -> & wbond*gradbx(j,i)+ -> & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+ -> & wsccor*gsccorx(j,i) -> & +wscloc*gsclocx(j,i) -88a486,496 -> enddo -> #endif -> do i=1,nres-3 -> gloc(i,icg)=gloc(i,icg)+wcorr*gcorr_loc(i) -> & +wcorr5*g_corr5_loc(i) -> & +wcorr6*g_corr6_loc(i) -> & +wturn4*gel_loc_turn4(i) -> & +wturn3*gel_loc_turn3(i) -> & +wturn6*gel_loc_turn6(i) -> & +wel_loc*gel_loc_loc(i) -> & +wsccor*gsccor_loc(i) -90,98c498,790 -< C****************************************************************************** -< C -< C N O T E !!! -< C -< C To save time, the factor of EXPON has been extracted from ALL components -< C of GVDWC and GRADX. Remember to multiply them by this factor before further -< C use! -< C -< C****************************************************************************** ---- -> #ifdef MPI -> if (nfgtasks.gt.1) then -> do j=1,3 -> do i=1,nres -> gradbufc(j,i)=gradc(j,i,icg) -> gradbufx(j,i)=gradx(j,i,icg) -> enddo -> enddo -> do i=1,4*nres -> glocbuf(i)=gloc(i,icg) -> enddo -> C FG slaves call the following matching MPI_Bcast in ERGASTULUM -> if (fg_rank.eq.0) call MPI_Bcast(1,1,MPI_INTEGER, -> & king,FG_COMM,IERROR) -> time00=MPI_Wtime() -> call MPI_Reduce(gradbufc(1,1),gradc(1,1,icg),3*nres, -> & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) -> call MPI_Reduce(gradbufx(1,1),gradx(1,1,icg),3*nres, -> & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) -> call MPI_Reduce(glocbuf(1),gloc(1,icg),4*nres, -> & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) -> time_reduce=time_reduce+MPI_Wtime()-time00 -> endif -> #endif -> if (gnorm_check) then -> c -> c Compute the maximum elements of the gradient -> c -> gvdwc_max=0.0d0 -> gvdwc_scp_max=0.0d0 -> gelc_max=0.0d0 -> gvdwpp_max=0.0d0 -> gradb_max=0.0d0 -> ghpbc_max=0.0d0 -> gradcorr_max=0.0d0 -> gel_loc_max=0.0d0 -> gcorr3_turn_max=0.0d0 -> gcorr4_turn_max=0.0d0 -> gradcorr5_max=0.0d0 -> gradcorr6_max=0.0d0 -> gcorr6_turn_max=0.0d0 -> gsccorc_max=0.0d0 -> gscloc_max=0.0d0 -> gvdwx_max=0.0d0 -> gradx_scp_max=0.0d0 -> ghpbx_max=0.0d0 -> gradxorr_max=0.0d0 -> gsccorx_max=0.0d0 -> gsclocx_max=0.0d0 -> do i=1,nct -> gvdwc_norm=dsqrt(scalar(gvdwc(1,i),gvdwc(1,i))) -> if (gvdwc_norm.gt.gvdwc_max) gvdwc_max=gvdwc_norm -> gvdwc_scp_norm=dsqrt(scalar(gvdwc_scp(1,i),gvdwc_scp(1,i))) -> if (gvdwc_scp_norm.gt.gvdwc_scp_max) -> & gvdwc_scp_max=gvdwc_scp_norm -> gelc_norm=dsqrt(scalar(gelc(1,i),gelc(1,i))) -> if (gelc_norm.gt.gelc_max) gelc_max=gelc_norm -> gvdwpp_norm=dsqrt(scalar(gvdwpp(1,i),gvdwpp(1,i))) -> if (gvdwpp_norm.gt.gvdwpp_max) gvdwpp_max=gvdwpp_norm -> gradb_norm=dsqrt(scalar(gradb(1,i),gradb(1,i))) -> if (gradb_norm.gt.gradb_max) gradb_max=gradb_norm -> ghpbc_norm=dsqrt(scalar(ghpbc(1,i),ghpbc(1,i))) -> if (ghpbc_norm.gt.ghpbc_max) ghpbc_max=ghpbc_norm -> gradcorr_norm=dsqrt(scalar(gradcorr(1,i),gradcorr(1,i))) -> if (gradcorr_norm.gt.gradcorr_max) gradcorr_max=gradcorr_norm -> gel_loc_norm=dsqrt(scalar(gel_loc(1,i),gel_loc(1,i))) -> if (gel_loc_norm.gt.gel_loc_max) gel_loc_max=gel_loc_norm -> gcorr3_turn_norm=dsqrt(scalar(gcorr3_turn(1,i), -> & gcorr3_turn(1,i))) -> if (gcorr3_turn_norm.gt.gcorr3_turn_max) -> & gcorr3_turn_max=gcorr3_turn_norm -> gcorr4_turn_norm=dsqrt(scalar(gcorr4_turn(1,i), -> & gcorr4_turn(1,i))) -> if (gcorr4_turn_norm.gt.gcorr4_turn_max) -> & gcorr4_turn_max=gcorr4_turn_norm -> gradcorr5_norm=dsqrt(scalar(gradcorr5(1,i),gradcorr5(1,i))) -> if (gradcorr5_norm.gt.gradcorr5_max) -> & gradcorr5_max=gradcorr5_norm -> gradcorr6_norm=dsqrt(scalar(gradcorr6(1,i),gradcorr6(1,i))) -> if (gradcorr6_norm.gt.gradcorr6_max) gcorr6_max=gradcorr6_norm -> gcorr6_turn_norm=dsqrt(scalar(gcorr6_turn(1,i), -> & gcorr6_turn(1,i))) -> if (gcorr6_turn_norm.gt.gcorr6_turn_max) -> & gcorr6_turn_max=gcorr6_turn_norm -> gsccorr_norm=dsqrt(scalar(gsccorc(1,i),gsccorc(1,i))) -> if (gsccorr_norm.gt.gsccorr_max) gsccorr_max=gsccorr_norm -> gscloc_norm=dsqrt(scalar(gscloc(1,i),gscloc(1,i))) -> if (gscloc_norm.gt.gscloc_max) gscloc_max=gscloc_norm -> gvdwx_norm=dsqrt(scalar(gvdwx(1,i),gvdwx(1,i))) -> if (gvdwx_norm.gt.gvdwx_max) gvdwx_max=gvdwx_norm -> gradx_scp_norm=dsqrt(scalar(gradx_scp(1,i),gradx_scp(1,i))) -> if (gradx_scp_norm.gt.gradx_scp_max) -> & gradx_scp_max=gradx_scp_norm -> ghpbx_norm=dsqrt(scalar(ghpbx(1,i),ghpbx(1,i))) -> if (ghpbx_norm.gt.ghpbx_max) ghpbx_max=ghpbx_norm -> gradxorr_norm=dsqrt(scalar(gradxorr(1,i),gradxorr(1,i))) -> if (gradxorr_norm.gt.gradxorr_max) gradxorr_max=gradxorr_norm -> gsccorrx_norm=dsqrt(scalar(gsccorx(1,i),gsccorx(1,i))) -> if (gsccorrx_norm.gt.gsccorrx_max) gsccorrx_max=gsccorrx_norm -> gsclocx_norm=dsqrt(scalar(gsclocx(1,i),gsclocx(1,i))) -> if (gsclocx_norm.gt.gsclocx_max) gsclocx_max=gsclocx_norm -> enddo -> if (gradout) then -> #ifdef AIX -> open(istat,file=statname,position="append") -> #else -> open(istat,file=statname,access="append") -> #endif -> write (istat,'(1h#,21f10.2)') gvdwc_max,gvdwc_scp_max, -> & gelc_max,gvdwpp_max,gradb_max,ghpbc_max, -> & gradcorr_max,gel_loc_max,gcorr3_turn_max,gcorr4_turn_max, -> & gradcorr5_max,gradcorr6_max,gcorr6_turn_max,gsccorc_max, -> & gscloc_max,gvdwx_max,gradx_scp_max,ghpbx_max,gradxorr_max, -> & gsccorx_max,gsclocx_max -> close(istat) -> if (gvdwc_max.gt.1.0d4) then -> write (iout,*) "gvdwc gvdwx gradb gradbx" -> do i=nnt,nct -> write(iout,'(i5,4(3f10.2,5x))') i,(gvdwc(j,i),gvdwx(j,i), -> & gradb(j,i),gradbx(j,i),j=1,3) -> enddo -> call pdbout(0.0d0,'cipiszcze',iout) -> call flush(iout) -> endif -> endif -> endif -> #ifdef DEBUG -> write (iout,*) "gradc gradx gloc" -> do i=1,nres -> write (iout,'(i5,3f10.5,5x,3f10.5,5x,f10.5)') -> & i,(gradc(j,i,icg),j=1,3),(gradx(j,i,icg),j=1,3),gloc(i,icg) -> enddo -> #endif -> return -> end -> c------------------------------------------------------------------------------- -> subroutine rescale_weights(t_bath) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.SBRIDGE' -> double precision kfac /2.4d0/ -> double precision x,x2,x3,x4,x5,licznik /1.12692801104297249644/ -> c facT=temp0/t_bath -> c facT=2*temp0/(t_bath+temp0) -> if (rescale_mode.eq.0) then -> facT=1.0d0 -> facT2=1.0d0 -> facT3=1.0d0 -> facT4=1.0d0 -> facT5=1.0d0 -> else if (rescale_mode.eq.1) then -> facT=kfac/(kfac-1.0d0+t_bath/temp0) -> facT2=kfac**2/(kfac**2-1.0d0+(t_bath/temp0)**2) -> facT3=kfac**3/(kfac**3-1.0d0+(t_bath/temp0)**3) -> facT4=kfac**4/(kfac**4-1.0d0+(t_bath/temp0)**4) -> facT5=kfac**5/(kfac**5-1.0d0+(t_bath/temp0)**5) -> else if (rescale_mode.eq.2) then -> x=t_bath/temp0 -> x2=x*x -> x3=x2*x -> x4=x3*x -> x5=x4*x -> facT=licznik/dlog(dexp(x)+dexp(-x)) -> facT2=licznik/dlog(dexp(x2)+dexp(-x2)) -> facT3=licznik/dlog(dexp(x3)+dexp(-x3)) -> facT4=licznik/dlog(dexp(x4)+dexp(-x4)) -> facT5=licznik/dlog(dexp(x5)+dexp(-x5)) -> else -> write (iout,*) "Wrong RESCALE_MODE",rescale_mode -> write (*,*) "Wrong RESCALE_MODE",rescale_mode -> #ifdef MPI -> call MPI_Finalize(MPI_COMM_WORLD,IERROR) -> #endif -> stop 555 -> endif -> welec=weights(3)*fact -> wcorr=weights(4)*fact3 -> wcorr5=weights(5)*fact4 -> wcorr6=weights(6)*fact5 -> wel_loc=weights(7)*fact2 -> wturn3=weights(8)*fact2 -> wturn4=weights(9)*fact3 -> wturn6=weights(10)*fact5 -> wtor=weights(13)*fact -> wtor_d=weights(14)*fact2 -> wsccor=weights(21)*fact -> -> return -> end -> C------------------------------------------------------------------------ -> subroutine enerprint(energia) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.SBRIDGE' -> include 'COMMON.MD' -> double precision energia(0:n_ene) -> etot=energia(0) -> evdw=energia(1) -> evdw2=energia(2) -> #ifdef SCP14 -> evdw2=energia(2)+energia(18) -> #else -> evdw2=energia(2) -> #endif -> ees=energia(3) -> #ifdef SPLITELE -> evdw1=energia(16) -> #endif -> ecorr=energia(4) -> ecorr5=energia(5) -> ecorr6=energia(6) -> eel_loc=energia(7) -> eello_turn3=energia(8) -> eello_turn4=energia(9) -> eello_turn6=energia(10) -> ebe=energia(11) -> escloc=energia(12) -> etors=energia(13) -> etors_d=energia(14) -> ehpb=energia(15) -> edihcnstr=energia(19) -> estr=energia(17) -> Uconst=energia(20) -> esccor=energia(21) -> #ifdef SPLITELE -> write (iout,10) evdw,wsc,evdw2,wscp,ees,welec,evdw1,wvdwpp, -> & estr,wbond,ebe,wang, -> & escloc,wscloc,etors,wtor,etors_d,wtor_d,ehpb,wstrain, -> & ecorr,wcorr, -> & ecorr5,wcorr5,ecorr6,wcorr6,eel_loc,wel_loc,eello_turn3,wturn3, -> & eello_turn4,wturn4,eello_turn6,wturn6,esccor,wsccor, -> & edihcnstr,ebr*nss, -> & Uconst,etot -> 10 format (/'Virtual-chain energies:'// -> & 'EVDW= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC-SC)'/ -> & 'EVDW2= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC-p)'/ -> & 'EES= ',1pE16.6,' WEIGHT=',1pD16.6,' (p-p)'/ -> & 'EVDWPP=',1pE16.6,' WEIGHT=',1pD16.6,' (p-p VDW)'/ -> & 'ESTR= ',1pE16.6,' WEIGHT=',1pD16.6,' (stretching)'/ -> & 'EBE= ',1pE16.6,' WEIGHT=',1pD16.6,' (bending)'/ -> & 'ESC= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC local)'/ -> & 'ETORS= ',1pE16.6,' WEIGHT=',1pD16.6,' (torsional)'/ -> & 'ETORSD=',1pE16.6,' WEIGHT=',1pD16.6,' (double torsional)'/ -> & 'EHBP= ',1pE16.6,' WEIGHT=',1pD16.6, -> & ' (SS bridges & dist. cnstr.)'/ -> & 'ECORR4=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/ -> & 'ECORR5=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/ -> & 'ECORR6=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/ -> & 'EELLO= ',1pE16.6,' WEIGHT=',1pD16.6,' (electrostatic-local)'/ -> & 'ETURN3=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 3rd order)'/ -> & 'ETURN4=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 4th order)'/ -> & 'ETURN6=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 6th order)'/ -> & 'ESCCOR=',1pE16.6,' WEIGHT=',1pD16.6,' (backbone-rotamer corr)'/ -> & 'EDIHC= ',1pE16.6,' (dihedral angle constraints)'/ -> & 'ESS= ',1pE16.6,' (disulfide-bridge intrinsic energy)'/ -> & 'UCONST= ',1pE16.6,' (Constraint energy)'/ -> & 'ETOT= ',1pE16.6,' (total)') -> #else -> write (iout,10) evdw,wsc,evdw2,wscp,ees,welec, -> & estr,wbond,ebe,wang, -> & escloc,wscloc,etors,wtor,etors_d,wtor_d,ehpb,wstrain, -> & ecorr,wcorr, -> & ecorr5,wcorr5,ecorr6,wcorr6,eel_loc,wel_loc,eello_turn3,wturn3, -> & eello_turn4,wturn4,eello_turn6,wturn6,esccor,wsccro,edihcnstr, -> & ebr*nss,Uconst,etot -> 10 format (/'Virtual-chain energies:'// -> & 'EVDW= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC-SC)'/ -> & 'EVDW2= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC-p)'/ -> & 'EES= ',1pE16.6,' WEIGHT=',1pD16.6,' (p-p)'/ -> & 'ESTR= ',1pE16.6,' WEIGHT=',1pD16.6,' (stretching)'/ -> & 'EBE= ',1pE16.6,' WEIGHT=',1pD16.6,' (bending)'/ -> & 'ESC= ',1pE16.6,' WEIGHT=',1pD16.6,' (SC local)'/ -> & 'ETORS= ',1pE16.6,' WEIGHT=',1pD16.6,' (torsional)'/ -> & 'ETORSD=',1pE16.6,' WEIGHT=',1pD16.6,' (double torsional)'/ -> & 'EHBP= ',1pE16.6,' WEIGHT=',1pD16.6, -> & ' (SS bridges & dist. cnstr.)'/ -> & 'ECORR4=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/ -> & 'ECORR5=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/ -> & 'ECORR6=',1pE16.6,' WEIGHT=',1pD16.6,' (multi-body)'/ -> & 'EELLO= ',1pE16.6,' WEIGHT=',1pD16.6,' (electrostatic-local)'/ -> & 'ETURN3=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 3rd order)'/ -> & 'ETURN4=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 4th order)'/ -> & 'ETURN6=',1pE16.6,' WEIGHT=',1pD16.6,' (turns, 6th order)'/ -> & 'ESCCOR=',1pE16.6,' WEIGHT=',1pD16.6,' (backbone-rotamer corr)'/ -> & 'EDIHC= ',1pE16.6,' (dihedral angle constraints)'/ -> & 'ESS= ',1pE16.6,' (disulfide-bridge intrinsic energy)'/ -> & 'UCONST=',1pE16.6,' (Constraint energy)'/ -> & 'ETOT= ',1pE16.6,' (total)') -> #endif -102c794 -< subroutine elj_short(evdw) ---- -> subroutine elj(evdw) -129a822,823 -> C Change 12/1/95 -> num_conti=0 -140a835 -> C Change 12/1/95 to calculate four-body interactions -142,149c837,850 -< sss=sscale(dsqrt(rij)/sigma(itypi,itypj)) -< if (sss.gt.0.0d0) then -< rrij=1.0D0/rij -< fac=rrij**expon2 -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=e1+e2 -< evdw=evdw+sss*evdwij ---- -> rrij=1.0D0/rij -> c write (iout,*)'i=',i,' j=',j,' itypi=',itypi,' itypj=',itypj -> eps0ij=eps(itypi,itypj) -> fac=rrij**expon2 -> e1=fac*fac*aa(itypi,itypj) -> e2=fac*bb(itypi,itypj) -> evdwij=e1+e2 -> cd sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -> cd epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -> cd write (iout,'(2(a3,i3,2x),6(1pd12.4)/2(3(1pd12.4),5x)/)') -> cd & restyp(itypi),i,restyp(itypj),j,aa(itypi,itypj), -> cd & bb(itypi,itypj),1.0D0/dsqrt(rrij),evdwij,epsi,sigm, -> cd & (c(k,i),k=1,3),(c(k,j),k=1,3) -> evdw=evdw+evdwij -153,164c854,864 -< fac=-rrij*(e1+evdwij)*sss -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac -< do k=1,3 -< gvdwx(k,i)=gvdwx(k,i)-gg(k) -< gvdwx(k,j)=gvdwx(k,j)+gg(k) -< enddo -< do k=i,j-1 -< do l=1,3 -< gvdwc(l,k)=gvdwc(l,k)+gg(l) -< enddo ---- -> fac=-rrij*(e1+evdwij) -> gg(1)=xj*fac -> gg(2)=yj*fac -> gg(3)=zj*fac -> do k=1,3 -> gvdwx(k,i)=gvdwx(k,i)-gg(k) -> gvdwx(k,j)=gvdwx(k,j)+gg(k) -> enddo -> do k=i,j-1 -> do l=1,3 -> gvdwc(l,k)=gvdwc(l,k)+gg(l) -165a866,921 -> enddo -> C -> C 12/1/95, revised on 5/20/97 -> C -> C Calculate the contact function. The ith column of the array JCONT will -> C contain the numbers of atoms that make contacts with the atom I (of numbers -> C greater than I). The arrays FACONT and GACONT will contain the values of -> C the contact function and its derivative. -> C -> C Uncomment next line, if the correlation interactions include EVDW explicitly. -> c if (j.gt.i+1 .and. evdwij.le.0.0D0) then -> C Uncomment next line, if the correlation interactions are contact function only -> if (j.gt.i+1.and. eps0ij.gt.0.0D0) then -> rij=dsqrt(rij) -> sigij=sigma(itypi,itypj) -> r0ij=rs0(itypi,itypj) -> C -> C Check whether the SC's are not too far to make a contact. -> C -> rcut=1.5d0*r0ij -> call gcont(rij,rcut,1.0d0,0.2d0*rcut,fcont,fprimcont) -> C Add a new contact, if the SC's are close enough, but not too close (r C -> if (fcont.gt.0.0D0) then -> C If the SC-SC distance if close to sigma, apply spline. -> cAdam call gcont(-rij,-1.03d0*sigij,2.0d0*sigij,1.0d0, -> cAdam & fcont1,fprimcont1) -> cAdam fcont1=1.0d0-fcont1 -> cAdam if (fcont1.gt.0.0d0) then -> cAdam fprimcont=fprimcont*fcont1+fcont*fprimcont1 -> cAdam fcont=fcont*fcont1 -> cAdam endif -> C Uncomment following 4 lines to have the geometric average of the epsilon0's -> cga eps0ij=1.0d0/dsqrt(eps0ij) -> cga do k=1,3 -> cga gg(k)=gg(k)*eps0ij -> cga enddo -> cga eps0ij=-evdwij*eps0ij -> C Uncomment for AL's type of SC correlation interactions. -> cadam eps0ij=-evdwij -> num_conti=num_conti+1 -> jcont(num_conti,i)=j -> facont(num_conti,i)=fcont*eps0ij -> fprimcont=eps0ij*fprimcont/rij -> fcont=expon*fcont -> cAdam gacont(1,num_conti,i)=-fprimcont*xj+fcont*gg(1) -> cAdam gacont(2,num_conti,i)=-fprimcont*yj+fcont*gg(2) -> cAdam gacont(3,num_conti,i)=-fprimcont*zj+fcont*gg(3) -> C Uncomment following 3 lines for Skolnick's type of SC correlation. -> gacont(1,num_conti,i)=-fprimcont*xj -> gacont(2,num_conti,i)=-fprimcont*yj -> gacont(3,num_conti,i)=-fprimcont*zj -> cd write (iout,'(2i5,2f10.5)') i,j,rij,facont(num_conti,i) -> cd write (iout,'(2i3,3f10.5)') -> cd & i,j,(gacont(kk,num_conti,i),kk=1,3) -> endif -168a925,926 -> C Change 12/1/95 -> num_cont(i)=num_conti -188c946 -< subroutine eljk_long(evdw) ---- -> subroutine eljk(evdw) -227,243c985,997 -< sss=sscale(rij/sigma(itypi,itypj)) -< -< if (sss.lt.1.0d0) then -< -< r_shift_inv=1.0D0/(rij+r0(itypi,itypj)-sigma(itypi,itypj)) -< fac=r_shift_inv**expon -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=e_augm+e1+e2 -< cd sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< cd epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -< cd write (iout,'(2(a3,i3,2x),8(1pd12.4)/2(3(1pd12.4),5x)/)') -< cd & restyp(itypi),i,restyp(itypj),j,aa(itypi,itypj), -< cd & bb(itypi,itypj),augm(itypi,itypj),epsi,sigm, -< cd & sigma(itypi,itypj),1.0D0/dsqrt(rrij),evdwij, -< cd & (c(k,i),k=1,3),(c(k,j),k=1,3) -< evdw=evdw+evdwij*(1.0d0-sss) ---- -> r_shift_inv=1.0D0/(rij+r0(itypi,itypj)-sigma(itypi,itypj)) -> fac=r_shift_inv**expon -> e1=fac*fac*aa(itypi,itypj) -> e2=fac*bb(itypi,itypj) -> evdwij=e_augm+e1+e2 -> cd sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -> cd epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -> cd write (iout,'(2(a3,i3,2x),8(1pd12.4)/2(3(1pd12.4),5x)/)') -> cd & restyp(itypi),i,restyp(itypj),j,aa(itypi,itypj), -> cd & bb(itypi,itypj),augm(itypi,itypj),epsi,sigm, -> cd & sigma(itypi,itypj),1.0D0/dsqrt(rrij),evdwij, -> cd & (c(k,i),k=1,3),(c(k,j),k=1,3) -> evdw=evdw+evdwij -247,259c1001,1011 -< fac=-2.0D0*rrij*e_augm-r_inv_ij*r_shift_inv*(e1+e1+e2) -< fac=fac*(1.0d0-sss) -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac -< do k=1,3 -< gvdwx(k,i)=gvdwx(k,i)-gg(k) -< gvdwx(k,j)=gvdwx(k,j)+gg(k) -< enddo -< do k=i,j-1 -< do l=1,3 -< gvdwc(l,k)=gvdwc(l,k)+gg(l) -< enddo ---- -> fac=-2.0D0*rrij*e_augm-r_inv_ij*r_shift_inv*(e1+e1+e2) -> gg(1)=xj*fac -> gg(2)=yj*fac -> gg(3)=zj*fac -> do k=1,3 -> gvdwx(k,i)=gvdwx(k,i)-gg(k) -> gvdwx(k,j)=gvdwx(k,j)+gg(k) -> enddo -> do k=i,j-1 -> do l=1,3 -> gvdwc(l,k)=gvdwc(l,k)+gg(l) -261,263c1013 -< -< endif -< ---- -> enddo -276c1026 -< subroutine eljk_short(evdw) ---- -> subroutine ebp(evdw) -279c1029 -< C assuming the LJK potential of interaction. ---- -> C assuming the Berne-Pechukas potential of interaction. -287a1038 -> include 'COMMON.NAMES' -290,382c1041,1044 -< include 'COMMON.NAMES' -< dimension gg(3) -< logical scheck -< c print *,'Entering ELJK nnt=',nnt,' nct=',nct,' expon=',expon -< evdw=0.0D0 -< do i=iatsc_s,iatsc_e -< itypi=itype(i) -< itypi1=itype(i+1) -< xi=c(1,nres+i) -< yi=c(2,nres+i) -< zi=c(3,nres+i) -< C -< C Calculate SC interaction energy. -< C -< do iint=1,nint_gr(i) -< do j=istart(i,iint),iend(i,iint) -< itypj=itype(j) -< xj=c(1,nres+j)-xi -< yj=c(2,nres+j)-yi -< zj=c(3,nres+j)-zi -< rrij=1.0D0/(xj*xj+yj*yj+zj*zj) -< fac_augm=rrij**expon -< e_augm=augm(itypi,itypj)*fac_augm -< r_inv_ij=dsqrt(rrij) -< rij=1.0D0/r_inv_ij -< sss=sscale(rij/sigma(itypi,itypj)) -< -< if (sss.gt.0.0d0) then -< -< r_shift_inv=1.0D0/(rij+r0(itypi,itypj)-sigma(itypi,itypj)) -< fac=r_shift_inv**expon -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=e_augm+e1+e2 -< cd sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< cd epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -< cd write (iout,'(2(a3,i3,2x),8(1pd12.4)/2(3(1pd12.4),5x)/)') -< cd & restyp(itypi),i,restyp(itypj),j,aa(itypi,itypj), -< cd & bb(itypi,itypj),augm(itypi,itypj),epsi,sigm, -< cd & sigma(itypi,itypj),1.0D0/dsqrt(rrij),evdwij, -< cd & (c(k,i),k=1,3),(c(k,j),k=1,3) -< evdw=evdw+evdwij*sss -< C -< C Calculate the components of the gradient in DC and X -< C -< fac=-2.0D0*rrij*e_augm-r_inv_ij*r_shift_inv*(e1+e1+e2) -< fac=fac*sss -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac -< do k=1,3 -< gvdwx(k,i)=gvdwx(k,i)-gg(k) -< gvdwx(k,j)=gvdwx(k,j)+gg(k) -< enddo -< do k=i,j-1 -< do l=1,3 -< gvdwc(l,k)=gvdwc(l,k)+gg(l) -< enddo -< enddo -< -< endif -< -< enddo ! j -< enddo ! iint -< enddo ! i -< do i=1,nct -< do j=1,3 -< gvdwc(j,i)=expon*gvdwc(j,i) -< gvdwx(j,i)=expon*gvdwx(j,i) -< enddo -< enddo -< return -< end -< C----------------------------------------------------------------------------- -< subroutine ebp_long(evdw) -< C -< C This subroutine calculates the interaction energy of nonbonded side chains -< C assuming the Berne-Pechukas potential of interaction. -< C -< implicit real*8 (a-h,o-z) -< include 'DIMENSIONS' -< include 'COMMON.GEO' -< include 'COMMON.VAR' -< include 'COMMON.LOCAL' -< include 'COMMON.CHAIN' -< include 'COMMON.DERIV' -< include 'COMMON.NAMES' -< include 'COMMON.INTERACT' -< include 'COMMON.IOUNITS' -< include 'COMMON.CALC' -< common /srutu/ icall -< c double precision rrsave(maxdim) -< logical lprn ---- -> include 'COMMON.CALC' -> common /srutu/ icall -> c double precision rrsave(maxdim) -> logical lprn -444,447d1105 -< sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj))) -< -< if (sss.lt.1.0d0) then -< -449c1107 -< call sc_angular ---- -> call sc_angular -452,462c1110,1120 -< fac=(rrij*sigsq)**expon2 -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=eps1*eps2rt*eps3rt*(e1+e2) -< eps2der=evdwij*eps3rt -< eps3der=evdwij*eps2rt -< evdwij=evdwij*eps2rt*eps3rt -< evdw=evdw+evdwij*(1.0d0-sss) -< if (lprn) then -< sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< epsi=bb(itypi,itypj)**2/aa(itypi,itypj) ---- -> fac=(rrij*sigsq)**expon2 -> e1=fac*fac*aa(itypi,itypj) -> e2=fac*bb(itypi,itypj) -> evdwij=eps1*eps2rt*eps3rt*(e1+e2) -> eps2der=evdwij*eps3rt -> eps3der=evdwij*eps2rt -> evdwij=evdwij*eps2rt*eps3rt -> evdw=evdw+evdwij -> if (lprn) then -> sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -> epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -469,482d1126 -< endif -< C Calculate gradient components. -< e1=e1*eps1*eps2rt**2*eps3rt**2 -< fac=-expon*(e1+evdwij) -< sigder=fac/sigsq -< fac=rrij*fac -< C Calculate radial part of the gradient -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac -< C Calculate the angular part of the gradient and sum add the contributions -< C to the appropriate components of the Cartesian gradient. -< call sc_grad_scale(1.0d0-sss) -< -484,597d1127 -< -< enddo ! j -< enddo ! iint -< enddo ! i -< c stop -< return -< end -< C----------------------------------------------------------------------------- -< subroutine ebp_short(evdw) -< C -< C This subroutine calculates the interaction energy of nonbonded side chains -< C assuming the Berne-Pechukas potential of interaction. -< C -< implicit real*8 (a-h,o-z) -< include 'DIMENSIONS' -< include 'COMMON.GEO' -< include 'COMMON.VAR' -< include 'COMMON.LOCAL' -< include 'COMMON.CHAIN' -< include 'COMMON.DERIV' -< include 'COMMON.NAMES' -< include 'COMMON.INTERACT' -< include 'COMMON.IOUNITS' -< include 'COMMON.CALC' -< common /srutu/ icall -< c double precision rrsave(maxdim) -< logical lprn -< evdw=0.0D0 -< c print *,'Entering EBP nnt=',nnt,' nct=',nct,' expon=',expon -< evdw=0.0D0 -< c if (icall.eq.0) then -< c lprn=.true. -< c else -< lprn=.false. -< c endif -< ind=0 -< do i=iatsc_s,iatsc_e -< itypi=itype(i) -< itypi1=itype(i+1) -< xi=c(1,nres+i) -< yi=c(2,nres+i) -< zi=c(3,nres+i) -< dxi=dc_norm(1,nres+i) -< dyi=dc_norm(2,nres+i) -< dzi=dc_norm(3,nres+i) -< c dsci_inv=dsc_inv(itypi) -< dsci_inv=vbld_inv(i+nres) -< C -< C Calculate SC interaction energy. -< C -< do iint=1,nint_gr(i) -< do j=istart(i,iint),iend(i,iint) -< ind=ind+1 -< itypj=itype(j) -< c dscj_inv=dsc_inv(itypj) -< dscj_inv=vbld_inv(j+nres) -< chi1=chi(itypi,itypj) -< chi2=chi(itypj,itypi) -< chi12=chi1*chi2 -< chip1=chip(itypi) -< chip2=chip(itypj) -< chip12=chip1*chip2 -< alf1=alp(itypi) -< alf2=alp(itypj) -< alf12=0.5D0*(alf1+alf2) -< C For diagnostics only!!! -< c chi1=0.0D0 -< c chi2=0.0D0 -< c chi12=0.0D0 -< c chip1=0.0D0 -< c chip2=0.0D0 -< c chip12=0.0D0 -< c alf1=0.0D0 -< c alf2=0.0D0 -< c alf12=0.0D0 -< xj=c(1,nres+j)-xi -< yj=c(2,nres+j)-yi -< zj=c(3,nres+j)-zi -< dxj=dc_norm(1,nres+j) -< dyj=dc_norm(2,nres+j) -< dzj=dc_norm(3,nres+j) -< rrij=1.0D0/(xj*xj+yj*yj+zj*zj) -< cd if (icall.eq.0) then -< cd rrsave(ind)=rrij -< cd else -< cd rrij=rrsave(ind) -< cd endif -< rij=dsqrt(rrij) -< sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj))) -< -< if (sss.gt.0.0d0) then -< -< C Calculate the angle-dependent terms of energy & contributions to derivatives. -< call sc_angular -< C Calculate whole angle-dependent part of epsilon and contributions -< C to its derivatives -< fac=(rrij*sigsq)**expon2 -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=eps1*eps2rt*eps3rt*(e1+e2) -< eps2der=evdwij*eps3rt -< eps3der=evdwij*eps2rt -< evdwij=evdwij*eps2rt*eps3rt -< evdw=evdw+evdwij*sss -< if (lprn) then -< sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -< cd write (iout,'(2(a3,i3,2x),15(0pf7.3))') -< cd & restyp(itypi),i,restyp(itypj),j, -< cd & epsi,sigm,chi1,chi2,chip1,chip2, -< cd & eps1,eps2rt**2,eps3rt**2,1.0D0/dsqrt(sigsq), -< cd & om1,om2,om12,1.0D0/dsqrt(rrij), -< cd & evdwij -< endif -599,602c1129,1132 -< e1=e1*eps1*eps2rt**2*eps3rt**2 -< fac=-expon*(e1+evdwij) -< sigder=fac/sigsq -< fac=rrij*fac ---- -> e1=e1*eps1*eps2rt**2*eps3rt**2 -> fac=-expon*(e1+evdwij) -> sigder=fac/sigsq -> fac=rrij*fac -604,606c1134,1136 -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac ---- -> gg(1)=xj*fac -> gg(2)=yj*fac -> gg(3)=zj*fac -609,612c1139 -< call sc_grad_scale(sss) -< -< endif -< ---- -> call sc_grad -620c1147 -< subroutine egb_long(evdw) ---- -> subroutine egb(evdw) -701,706d1227 -< sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj))) -< c write(iout,*) "long",i,itypi,j,itypj," rij",1.0d0/rij, -< c & " sigmaii",sigmaii(itypi,itypj)," sss",sss -< -< if (sss.lt.1.0d0) then -< -709,712c1230,1233 -< call sc_angular -< sigsq=1.0D0/sigsq -< sig=sig0ij*dsqrt(sigsq) -< rij_shift=1.0D0/rij-sig+sig0ij ---- -> call sc_angular -> sigsq=1.0D0/sigsq -> sig=sig0ij*dsqrt(sigsq) -> rij_shift=1.0D0/rij-sig+sig0ij -714c1235 -< c rij_shift=1.2*sig0ij ---- -> c rij_shift=1.2*sig0ij -716,723c1237,1244 -< if (rij_shift.le.0.0D0) then -< evdw=1.0D20 -< cd write (iout,'(2(a3,i3,2x),17(0pf7.3))') -< cd & restyp(itypi),i,restyp(itypj),j, -< cd & rij_shift,1.0D0/rij,sig,sig0ij,sigsq,1-dsqrt(sigsq) -< return -< endif -< sigder=-sig*sigsq ---- -> if (rij_shift.le.0.0D0) then -> evdw=1.0D20 -> cd write (iout,'(2(a3,i3,2x),17(0pf7.3))') -> cd & restyp(itypi),i,restyp(itypj),j, -> cd & rij_shift,1.0D0/rij,sig,sig0ij,sigsq,1-dsqrt(sigsq) -> return -> endif -> sigder=-sig*sigsq -725,732c1246,1253 -< rij_shift=1.0D0/rij_shift -< fac=rij_shift**expon -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=eps1*eps2rt*eps3rt*(e1+e2) -< eps2der=evdwij*eps3rt -< eps3der=evdwij*eps2rt -< c write (iout,*) "sigsq",sigsq," sig",sig," eps2rt",eps2rt, ---- -> rij_shift=1.0D0/rij_shift -> fac=rij_shift**expon -> e1=fac*fac*aa(itypi,itypj) -> e2=fac*bb(itypi,itypj) -> evdwij=eps1*eps2rt*eps3rt*(e1+e2) -> eps2der=evdwij*eps3rt -> eps3der=evdwij*eps2rt -> c write (iout,*) "sigsq",sigsq," sig",sig," eps2rt",eps2rt, -734,746c1255,1266 -< evdwij=evdwij*eps2rt*eps3rt -< evdw=evdw+evdwij*(1.0d0-sss) -< c write (iout,*) "evdwij",evdwij," evdw",evdw -< if (lprn) then -< sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -< write (iout,'(2(a3,i3,2x),17(0pf7.3))') -< & restyp(itypi),i,restyp(itypj),j, -< & epsi,sigm,chi1,chi2,chip1,chip2, -< & eps1,eps2rt**2,eps3rt**2,sig,sig0ij, -< & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift, -< & evdwij -< endif ---- -> evdwij=evdwij*eps2rt*eps3rt -> evdw=evdw+evdwij -> if (lprn) then -> sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -> epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -> write (iout,'(2(a3,i3,2x),17(0pf7.3))') -> & restyp(itypi),i,restyp(itypj),j, -> & epsi,sigm,chi1,chi2,chip1,chip2, -> & eps1,eps2rt**2,eps3rt**2,sig,sig0ij, -> & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift, -> & evdwij -> endif -748c1268 -< if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') ---- -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -752,756c1272,1276 -< e1=e1*eps1*eps2rt**2*eps3rt**2 -< fac=-expon*(e1+evdwij)*rij_shift -< sigder=fac*sigder -< fac=rij*fac -< c fac=0.0d0 ---- -> e1=e1*eps1*eps2rt**2*eps3rt**2 -> fac=-expon*(e1+evdwij)*rij_shift -> sigder=fac*sigder -> fac=rij*fac -> c fac=0.0d0 -758,760c1278,1280 -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac ---- -> gg(1)=xj*fac -> gg(2)=yj*fac -> gg(3)=zj*fac -762,765c1282 -< call sc_grad_scale(1.0d0-sss) -< -< endif -< ---- -> call sc_grad -773c1290 -< subroutine egb_short(evdw) ---- -> subroutine egbv(evdw) -776c1293 -< C assuming the Gay-Berne potential of interaction. ---- -> C assuming the Gay-Berne-Vorobjev potential of interaction. -789c1306 -< include 'COMMON.CONTROL' ---- -> common /srutu/ icall -792d1308 -< ccccc energy_dec=.false. -796c1312 -< c if (icall.eq.0) lprn=.false. ---- -> c if (icall.eq.0) lprn=.true. -809,810d1324 -< c write (iout,*) "i",i,dsc_inv(itypi),dsci_inv,1.0d0/vbld(i+nres) -< c write (iout,*) "dcnori",dxi*dxi+dyi*dyi+dzi*dzi -820,822d1333 -< c write (iout,*) "j",j,dsc_inv(itypj),dscj_inv, -< c & 1.0d0/vbld(j+nres) -< c write (iout,*) "i",i," j", j," itype",itype(i),itype(j) -823a1335 -> r0ij=r0(itypi,itypj) -849,851d1360 -< c write (iout,*) "dcnorj",dxi*dxi+dyi*dyi+dzi*dzi -< c write (iout,*) "j",j," dc_norm", -< c & dc_norm(1,nres+j),dc_norm(2,nres+j),dc_norm(3,nres+j) -854,858d1362 -< sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj))) -< c write(iout,*) "short",i,itypi,j,itypj," rij",1.0d0/rij, -< c & " sigmaii",sigmaii(itypi,itypj)," sss",sss -< if (sss.gt.0.0d0) then -< -861,866c1365,1368 -< call sc_angular -< sigsq=1.0D0/sigsq -< sig=sig0ij*dsqrt(sigsq) -< rij_shift=1.0D0/rij-sig+sig0ij -< c for diagnostics; uncomment -< c rij_shift=1.2*sig0ij ---- -> call sc_angular -> sigsq=1.0D0/sigsq -> sig=sig0ij*dsqrt(sigsq) -> rij_shift=1.0D0/rij-sig+r0ij -868,875c1370,1374 -< if (rij_shift.le.0.0D0) then -< evdw=1.0D20 -< cd write (iout,'(2(a3,i3,2x),17(0pf7.3))') -< cd & restyp(itypi),i,restyp(itypj),j, -< cd & rij_shift,1.0D0/rij,sig,sig0ij,sigsq,1-dsqrt(sigsq) -< return -< endif -< sigder=-sig*sigsq ---- -> if (rij_shift.le.0.0D0) then -> evdw=1.0D20 -> return -> endif -> sigder=-sig*sigsq -877,902c1376,1397 -< rij_shift=1.0D0/rij_shift -< fac=rij_shift**expon -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=eps1*eps2rt*eps3rt*(e1+e2) -< eps2der=evdwij*eps3rt -< eps3der=evdwij*eps2rt -< c write (iout,*) "sigsq",sigsq," sig",sig," eps2rt",eps2rt, -< c & " eps3rt",eps3rt," eps1",eps1," e1",e1," e2",e2 -< evdwij=evdwij*eps2rt*eps3rt -< evdw=evdw+evdwij*sss -< c write (iout,*) "evdwij",evdwij," evdw",evdw -< if (lprn) then -< sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -< write (iout,'(2(a3,i3,2x),17(0pf7.3))') -< & restyp(itypi),i,restyp(itypj),j, -< & epsi,sigm,chi1,chi2,chip1,chip2, -< & eps1,eps2rt**2,eps3rt**2,sig,sig0ij, -< & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift, -< & evdwij -< endif -< -< if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -< & 'evdw',i,j,evdwij -< ---- -> rij_shift=1.0D0/rij_shift -> fac=rij_shift**expon -> e1=fac*fac*aa(itypi,itypj) -> e2=fac*bb(itypi,itypj) -> evdwij=eps1*eps2rt*eps3rt*(e1+e2) -> eps2der=evdwij*eps3rt -> eps3der=evdwij*eps2rt -> fac_augm=rrij**expon -> e_augm=augm(itypi,itypj)*fac_augm -> evdwij=evdwij*eps2rt*eps3rt -> evdw=evdw+evdwij+e_augm -> if (lprn) then -> sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -> epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -> write (iout,'(2(a3,i3,2x),17(0pf7.3))') -> & restyp(itypi),i,restyp(itypj),j, -> & epsi,sigm,sig,(augm(itypi,itypj)/epsi)**(1.0D0/12.0D0), -> & chi1,chi2,chip1,chip2, -> & eps1,eps2rt**2,eps3rt**2, -> & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift, -> & evdwij+e_augm -> endif -904,908c1399,1402 -< e1=e1*eps1*eps2rt**2*eps3rt**2 -< fac=-expon*(e1+evdwij)*rij_shift -< sigder=fac*sigder -< fac=rij*fac -< c fac=0.0d0 ---- -> e1=e1*eps1*eps2rt**2*eps3rt**2 -> fac=-expon*(e1+evdwij)*rij_shift -> sigder=fac*sigder -> fac=rij*fac-2*expon*rrij*e_augm -910,912c1404,1406 -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac ---- -> gg(1)=xj*fac -> gg(2)=yj*fac -> gg(3)=zj*fac -914,917c1408 -< call sc_grad_scale(sss) -< -< endif -< ---- -> call sc_grad -921,922d1411 -< cccc energy_dec=.false. -< return -925,1189c1414,1482 -< subroutine egbv_long(evdw) -< C -< C This subroutine calculates the interaction energy of nonbonded side chains -< C assuming the Gay-Berne-Vorobjev potential of interaction. -< C -< implicit real*8 (a-h,o-z) -< include 'DIMENSIONS' -< include 'COMMON.GEO' -< include 'COMMON.VAR' -< include 'COMMON.LOCAL' -< include 'COMMON.CHAIN' -< include 'COMMON.DERIV' -< include 'COMMON.NAMES' -< include 'COMMON.INTERACT' -< include 'COMMON.IOUNITS' -< include 'COMMON.CALC' -< common /srutu/ icall -< logical lprn -< evdw=0.0D0 -< c print *,'Entering EGB nnt=',nnt,' nct=',nct,' expon=',expon -< evdw=0.0D0 -< lprn=.false. -< c if (icall.eq.0) lprn=.true. -< ind=0 -< do i=iatsc_s,iatsc_e -< itypi=itype(i) -< itypi1=itype(i+1) -< xi=c(1,nres+i) -< yi=c(2,nres+i) -< zi=c(3,nres+i) -< dxi=dc_norm(1,nres+i) -< dyi=dc_norm(2,nres+i) -< dzi=dc_norm(3,nres+i) -< c dsci_inv=dsc_inv(itypi) -< dsci_inv=vbld_inv(i+nres) -< C -< C Calculate SC interaction energy. -< C -< do iint=1,nint_gr(i) -< do j=istart(i,iint),iend(i,iint) -< ind=ind+1 -< itypj=itype(j) -< c dscj_inv=dsc_inv(itypj) -< dscj_inv=vbld_inv(j+nres) -< sig0ij=sigma(itypi,itypj) -< r0ij=r0(itypi,itypj) -< chi1=chi(itypi,itypj) -< chi2=chi(itypj,itypi) -< chi12=chi1*chi2 -< chip1=chip(itypi) -< chip2=chip(itypj) -< chip12=chip1*chip2 -< alf1=alp(itypi) -< alf2=alp(itypj) -< alf12=0.5D0*(alf1+alf2) -< C For diagnostics only!!! -< c chi1=0.0D0 -< c chi2=0.0D0 -< c chi12=0.0D0 -< c chip1=0.0D0 -< c chip2=0.0D0 -< c chip12=0.0D0 -< c alf1=0.0D0 -< c alf2=0.0D0 -< c alf12=0.0D0 -< xj=c(1,nres+j)-xi -< yj=c(2,nres+j)-yi -< zj=c(3,nres+j)-zi -< dxj=dc_norm(1,nres+j) -< dyj=dc_norm(2,nres+j) -< dzj=dc_norm(3,nres+j) -< rrij=1.0D0/(xj*xj+yj*yj+zj*zj) -< rij=dsqrt(rrij) -< -< sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj))) -< -< if (sss.lt.1.0d0) then -< -< C Calculate angle-dependent terms of energy and contributions to their -< C derivatives. -< call sc_angular -< sigsq=1.0D0/sigsq -< sig=sig0ij*dsqrt(sigsq) -< rij_shift=1.0D0/rij-sig+r0ij -< C I hate to put IF's in the loops, but here don't have another choice!!!! -< if (rij_shift.le.0.0D0) then -< evdw=1.0D20 -< return -< endif -< sigder=-sig*sigsq -< c--------------------------------------------------------------- -< rij_shift=1.0D0/rij_shift -< fac=rij_shift**expon -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=eps1*eps2rt*eps3rt*(e1+e2) -< eps2der=evdwij*eps3rt -< eps3der=evdwij*eps2rt -< fac_augm=rrij**expon -< e_augm=augm(itypi,itypj)*fac_augm -< evdwij=evdwij*eps2rt*eps3rt -< evdw=evdw+(evdwij+e_augm)*(1.0d0-sss) -< if (lprn) then -< sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -< write (iout,'(2(a3,i3,2x),17(0pf7.3))') -< & restyp(itypi),i,restyp(itypj),j, -< & epsi,sigm,sig,(augm(itypi,itypj)/epsi)**(1.0D0/12.0D0), -< & chi1,chi2,chip1,chip2, -< & eps1,eps2rt**2,eps3rt**2, -< & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift, -< & evdwij+e_augm -< endif -< C Calculate gradient components. -< e1=e1*eps1*eps2rt**2*eps3rt**2 -< fac=-expon*(e1+evdwij)*rij_shift -< sigder=fac*sigder -< fac=rij*fac-2*expon*rrij*e_augm -< C Calculate the radial part of the gradient -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac -< C Calculate angular part of the gradient. -< call sc_grad_scale(1.0d0-sss) -< -< endif -< -< enddo ! j -< enddo ! iint -< enddo ! i -< end -< C----------------------------------------------------------------------------- -< subroutine egbv_short(evdw) -< C -< C This subroutine calculates the interaction energy of nonbonded side chains -< C assuming the Gay-Berne-Vorobjev potential of interaction. -< C -< implicit real*8 (a-h,o-z) -< include 'DIMENSIONS' -< include 'COMMON.GEO' -< include 'COMMON.VAR' -< include 'COMMON.LOCAL' -< include 'COMMON.CHAIN' -< include 'COMMON.DERIV' -< include 'COMMON.NAMES' -< include 'COMMON.INTERACT' -< include 'COMMON.IOUNITS' -< include 'COMMON.CALC' -< common /srutu/ icall -< logical lprn -< evdw=0.0D0 -< c print *,'Entering EGB nnt=',nnt,' nct=',nct,' expon=',expon -< evdw=0.0D0 -< lprn=.false. -< c if (icall.eq.0) lprn=.true. -< ind=0 -< do i=iatsc_s,iatsc_e -< itypi=itype(i) -< itypi1=itype(i+1) -< xi=c(1,nres+i) -< yi=c(2,nres+i) -< zi=c(3,nres+i) -< dxi=dc_norm(1,nres+i) -< dyi=dc_norm(2,nres+i) -< dzi=dc_norm(3,nres+i) -< c dsci_inv=dsc_inv(itypi) -< dsci_inv=vbld_inv(i+nres) -< C -< C Calculate SC interaction energy. -< C -< do iint=1,nint_gr(i) -< do j=istart(i,iint),iend(i,iint) -< ind=ind+1 -< itypj=itype(j) -< c dscj_inv=dsc_inv(itypj) -< dscj_inv=vbld_inv(j+nres) -< sig0ij=sigma(itypi,itypj) -< r0ij=r0(itypi,itypj) -< chi1=chi(itypi,itypj) -< chi2=chi(itypj,itypi) -< chi12=chi1*chi2 -< chip1=chip(itypi) -< chip2=chip(itypj) -< chip12=chip1*chip2 -< alf1=alp(itypi) -< alf2=alp(itypj) -< alf12=0.5D0*(alf1+alf2) -< C For diagnostics only!!! -< c chi1=0.0D0 -< c chi2=0.0D0 -< c chi12=0.0D0 -< c chip1=0.0D0 -< c chip2=0.0D0 -< c chip12=0.0D0 -< c alf1=0.0D0 -< c alf2=0.0D0 -< c alf12=0.0D0 -< xj=c(1,nres+j)-xi -< yj=c(2,nres+j)-yi -< zj=c(3,nres+j)-zi -< dxj=dc_norm(1,nres+j) -< dyj=dc_norm(2,nres+j) -< dzj=dc_norm(3,nres+j) -< rrij=1.0D0/(xj*xj+yj*yj+zj*zj) -< rij=dsqrt(rrij) -< -< sss=sscale(1.0d0/(rij*sigmaii(itypi,itypj))) -< -< if (sss.gt.0.0d0) then -< -< C Calculate angle-dependent terms of energy and contributions to their -< C derivatives. -< call sc_angular -< sigsq=1.0D0/sigsq -< sig=sig0ij*dsqrt(sigsq) -< rij_shift=1.0D0/rij-sig+r0ij -< C I hate to put IF's in the loops, but here don't have another choice!!!! -< if (rij_shift.le.0.0D0) then -< evdw=1.0D20 -< return -< endif -< sigder=-sig*sigsq -< c--------------------------------------------------------------- -< rij_shift=1.0D0/rij_shift -< fac=rij_shift**expon -< e1=fac*fac*aa(itypi,itypj) -< e2=fac*bb(itypi,itypj) -< evdwij=eps1*eps2rt*eps3rt*(e1+e2) -< eps2der=evdwij*eps3rt -< eps3der=evdwij*eps2rt -< fac_augm=rrij**expon -< e_augm=augm(itypi,itypj)*fac_augm -< evdwij=evdwij*eps2rt*eps3rt -< evdw=evdw+(evdwij+e_augm)*sss -< if (lprn) then -< sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -< write (iout,'(2(a3,i3,2x),17(0pf7.3))') -< & restyp(itypi),i,restyp(itypj),j, -< & epsi,sigm,sig,(augm(itypi,itypj)/epsi)**(1.0D0/12.0D0), -< & chi1,chi2,chip1,chip2, -< & eps1,eps2rt**2,eps3rt**2, -< & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift, -< & evdwij+e_augm -< endif -< C Calculate gradient components. -< e1=e1*eps1*eps2rt**2*eps3rt**2 -< fac=-expon*(e1+evdwij)*rij_shift -< sigder=fac*sigder -< fac=rij*fac-2*expon*rrij*e_augm -< C Calculate the radial part of the gradient -< gg(1)=xj*fac -< gg(2)=yj*fac -< gg(3)=zj*fac -< C Calculate angular part of the gradient. -< call sc_grad_scale(sss) -< -< endif -< -< enddo ! j -< enddo ! iint -< enddo ! i -< end -< C---------------------------------------------------------------------------- -< subroutine sc_grad_scale(scalfac) ---- -> subroutine sc_angular -> C Calculate eps1,eps2,eps3,sigma, and parts of their derivatives in om1,om2, -> C om12. Called by ebp, egb, and egbv. -> implicit none -> include 'COMMON.CALC' -> include 'COMMON.IOUNITS' -> erij(1)=xj*rij -> erij(2)=yj*rij -> erij(3)=zj*rij -> om1=dxi*erij(1)+dyi*erij(2)+dzi*erij(3) -> om2=dxj*erij(1)+dyj*erij(2)+dzj*erij(3) -> om12=dxi*dxj+dyi*dyj+dzi*dzj -> chiom12=chi12*om12 -> C Calculate eps1(om12) and its derivative in om12 -> faceps1=1.0D0-om12*chiom12 -> faceps1_inv=1.0D0/faceps1 -> eps1=dsqrt(faceps1_inv) -> C Following variable is eps1*deps1/dom12 -> eps1_om12=faceps1_inv*chiom12 -> c diagnostics only -> c faceps1_inv=om12 -> c eps1=om12 -> c eps1_om12=1.0d0 -> c write (iout,*) "om12",om12," eps1",eps1 -> C Calculate sigma(om1,om2,om12) and the derivatives of sigma**2 in om1,om2, -> C and om12. -> om1om2=om1*om2 -> chiom1=chi1*om1 -> chiom2=chi2*om2 -> facsig=om1*chiom1+om2*chiom2-2.0D0*om1om2*chiom12 -> sigsq=1.0D0-facsig*faceps1_inv -> sigsq_om1=(chiom1-chiom12*om2)*faceps1_inv -> sigsq_om2=(chiom2-chiom12*om1)*faceps1_inv -> sigsq_om12=-chi12*(om1om2*faceps1-om12*facsig)*faceps1_inv**2 -> c diagnostics only -> c sigsq=1.0d0 -> c sigsq_om1=0.0d0 -> c sigsq_om2=0.0d0 -> c sigsq_om12=0.0d0 -> c write (iout,*) "chiom1",chiom1," chiom2",chiom2," chiom12",chiom12 -> c write (iout,*) "faceps1",faceps1," faceps1_inv",faceps1_inv, -> c & " eps1",eps1 -> C Calculate eps2 and its derivatives in om1, om2, and om12. -> chipom1=chip1*om1 -> chipom2=chip2*om2 -> chipom12=chip12*om12 -> facp=1.0D0-om12*chipom12 -> facp_inv=1.0D0/facp -> facp1=om1*chipom1+om2*chipom2-2.0D0*om1om2*chipom12 -> c write (iout,*) "chipom1",chipom1," chipom2",chipom2, -> c & " chipom12",chipom12," facp",facp," facp_inv",facp_inv -> C Following variable is the square root of eps2 -> eps2rt=1.0D0-facp1*facp_inv -> C Following three variables are the derivatives of the square root of eps -> C in om1, om2, and om12. -> eps2rt_om1=-4.0D0*(chipom1-chipom12*om2)*facp_inv -> eps2rt_om2=-4.0D0*(chipom2-chipom12*om1)*facp_inv -> eps2rt_om12=4.0D0*chip12*(om1om2*facp-om12*facp1)*facp_inv**2 -> C Evaluate the "asymmetric" factor in the VDW constant, eps3 -> eps3rt=1.0D0-alf1*om1+alf2*om2-alf12*om12 -> c write (iout,*) "eps2rt",eps2rt," eps3rt",eps3rt -> c write (iout,*) "eps2rt_om1",eps2rt_om1," eps2rt_om2",eps2rt_om2, -> c & " eps2rt_om12",eps2rt_om12 -> C Calculate whole angle-dependent part of epsilon and contributions -> C to its derivatives -> return -> end -> C---------------------------------------------------------------------------- -> subroutine sc_grad -1197d1489 -< double precision scalfac -1216c1508 -< gg(k)=(gg(k)+eom1*dcosom1(k)+eom2*dcosom2(k))*scalfac ---- -> gg(k)=gg(k)+eom1*dcosom1(k)+eom2*dcosom2(k) -1221,1222c1513,1514 -< & +((eom12*(dc_norm(k,nres+j)-om12*dc_norm(k,nres+i)) -< & +eom1*(erij(k)-om1*dc_norm(k,nres+i)))*dsci_inv)*scalfac ---- -> & +(eom12*(dc_norm(k,nres+j)-om12*dc_norm(k,nres+i)) -> & +eom1*(erij(k)-om1*dc_norm(k,nres+i)))*dsci_inv -1224,1225c1516,1517 -< & +((eom12*(dc_norm(k,nres+i)-om12*dc_norm(k,nres+j)) -< & +eom2*(erij(k)-om2*dc_norm(k,nres+j)))*dscj_inv)*scalfac ---- -> & +(eom12*(dc_norm(k,nres+i)-om12*dc_norm(k,nres+j)) -> & +eom2*(erij(k)-om2*dc_norm(k,nres+j)))*dscj_inv -1240a1533,1605 -> C----------------------------------------------------------------------- -> subroutine e_softsphere(evdw) -> C -> C This subroutine calculates the interaction energy of nonbonded side chains -> C assuming the LJ potential of interaction. -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> parameter (accur=1.0d-10) -> include 'COMMON.GEO' -> include 'COMMON.VAR' -> include 'COMMON.LOCAL' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.TORSION' -> include 'COMMON.SBRIDGE' -> include 'COMMON.NAMES' -> include 'COMMON.IOUNITS' -> include 'COMMON.CONTACTS' -> dimension gg(3) -> cd print *,'Entering Esoft_sphere nnt=',nnt,' nct=',nct -> evdw=0.0D0 -> do i=iatsc_s,iatsc_e -> itypi=itype(i) -> itypi1=itype(i+1) -> xi=c(1,nres+i) -> yi=c(2,nres+i) -> zi=c(3,nres+i) -> C -> C Calculate SC interaction energy. -> C -> do iint=1,nint_gr(i) -> cd write (iout,*) 'i=',i,' iint=',iint,' istart=',istart(i,iint), -> cd & 'iend=',iend(i,iint) -> do j=istart(i,iint),iend(i,iint) -> itypj=itype(j) -> xj=c(1,nres+j)-xi -> yj=c(2,nres+j)-yi -> zj=c(3,nres+j)-zi -> rij=xj*xj+yj*yj+zj*zj -> c write (iout,*)'i=',i,' j=',j,' itypi=',itypi,' itypj=',itypj -> r0ij=r0(itypi,itypj) -> r0ijsq=r0ij*r0ij -> c print *,i,j,r0ij,dsqrt(rij) -> if (rij.lt.r0ijsq) then -> evdwij=0.25d0*(rij-r0ijsq)**2 -> fac=rij-r0ijsq -> else -> evdwij=0.0d0 -> fac=0.0d0 -> endif -> evdw=evdw+evdwij -> C -> C Calculate the components of the gradient in DC and X -> C -> gg(1)=xj*fac -> gg(2)=yj*fac -> gg(3)=zj*fac -> do k=1,3 -> gvdwx(k,i)=gvdwx(k,i)-gg(k) -> gvdwx(k,j)=gvdwx(k,j)+gg(k) -> enddo -> do k=i,j-1 -> do l=1,3 -> gvdwc(l,k)=gvdwc(l,k)+gg(l) -> enddo -> enddo -> enddo ! j -> enddo ! iint -> enddo ! i -> return -> end -1242c1607,1608 -< subroutine eelec_scale(ees,evdw1,eel_loc,eello_turn3,eello_turn4) ---- -> subroutine eelec_soft_sphere(ees,evdw1,eel_loc,eello_turn3, -> & eello_turn4) -1244,1248c1610 -< C This subroutine calculates the average interaction energy and its gradient -< C in the virtual-bond vectors between non-adjacent peptide groups, based on -< C the potential described in Liwo et al., Protein Sci., 1993, 2, 1715. -< C The potential depends both on the distance of peptide-group centers and on -< C the orientation of the CA-CA virtual bonds. ---- -> C Soft-sphere potential of p-p interaction -1264,1315c1626,1627 -< dimension ggg(3),gggp(3),gggm(3),erij(3),dcosb(3),dcosg(3), -< & erder(3,3),uryg(3,3),urzg(3,3),vryg(3,3),vrzg(3,3) -< double precision acipa(2,2),agg(3,4),aggi(3,4),aggi1(3,4), -< & aggj(3,4),aggj1(3,4),a_temp(2,2),muij(4) -< common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,j1,j2 -< c 4/26/02 - AL scaling factor for 1,4 repulsive VDW interactions -< #ifdef MOMENT -< double precision scal_el /1.0d0/ -< #else -< double precision scal_el /0.5d0/ -< #endif -< C 12/13/98 -< C 13-go grudnia roku pamietnego... -< double precision unmat(3,3) /1.0d0,0.0d0,0.0d0, -< & 0.0d0,1.0d0,0.0d0, -< & 0.0d0,0.0d0,1.0d0/ -< cd write(iout,*) 'In EELEC' -< cd do i=1,nloctyp -< cd write(iout,*) 'Type',i -< cd write(iout,*) 'B1',B1(:,i) -< cd write(iout,*) 'B2',B2(:,i) -< cd write(iout,*) 'CC',CC(:,:,i) -< cd write(iout,*) 'DD',DD(:,:,i) -< cd write(iout,*) 'EE',EE(:,:,i) -< cd enddo -< cd call check_vecgrad -< cd stop -< if (icheckgrad.eq.1) then -< do i=1,nres-1 -< fac=1.0d0/dsqrt(scalar(dc(1,i),dc(1,i))) -< do k=1,3 -< dc_norm(k,i)=dc(k,i)*fac -< enddo -< c write (iout,*) 'i',i,' fac',fac -< enddo -< endif -< if (wel_loc.gt.0.0d0 .or. wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 -< & .or. wcorr6.gt.0.0d0 .or. wturn3.gt.0.0d0 .or. -< & wturn4.gt.0.0d0 .or. wturn6.gt.0.0d0) then -< c call vec_and_deriv -< call set_matrices -< endif -< cd do i=1,nres-1 -< cd write (iout,*) 'i=',i -< cd do k=1,3 -< cd write (iout,'(i5,2f10.5)') k,uy(k,i),uz(k,i) -< cd enddo -< cd do k=1,3 -< cd write (iout,'(f10.5,2x,3f10.5,2x,3f10.5)') -< cd & uz(k,i),(uzgrad(k,l,1,i),l=1,3),(uzgrad(k,l,2,i),l=1,3) -< cd enddo -< cd enddo ---- -> dimension ggg(3) -> cd write(iout,*) 'In EELEC_soft_sphere' -1323,1373d1634 -< do i=1,nres -< num_cont_hb(i)=0 -< enddo -< cd print '(a)','Enter EELEC' -< cd write (iout,*) 'iatel_s=',iatel_s,' iatel_e=',iatel_e -< do i=1,nres -< gel_loc_loc(i)=0.0d0 -< gcorr_loc(i)=0.0d0 -< enddo -< cd do i=1,nres -< cd write (iout,'(i3,3f10.5,5x,3f10.5)') -< cd & i,(gel_loc(k,i),k=1,3),gel_loc_loc(i) -< cd enddo -< c -< c 9/27/08 AL Split the interaction loop to ensure load balancing of turn terms -< C -< C Loop over i,i+2 and i,i+3 pairs of the peptide groups -< C -< do i=iturn3_start,iturn3_end -< dxi=dc(1,i) -< dyi=dc(2,i) -< dzi=dc(3,i) -< dx_normi=dc_norm(1,i) -< dy_normi=dc_norm(2,i) -< dz_normi=dc_norm(3,i) -< xmedi=c(1,i)+0.5d0*dxi -< ymedi=c(2,i)+0.5d0*dyi -< zmedi=c(3,i)+0.5d0*dzi -< num_conti=0 -< call eelecij_scale(i,i+2,ees,evdw1,eel_loc) -< if (wturn3.gt.0.0d0) call eturn3(i,eello_turn3) -< num_cont_hb(i)=num_conti -< enddo -< do i=iturn4_start,iturn4_end -< dxi=dc(1,i) -< dyi=dc(2,i) -< dzi=dc(3,i) -< dx_normi=dc_norm(1,i) -< dy_normi=dc_norm(2,i) -< dz_normi=dc_norm(3,i) -< xmedi=c(1,i)+0.5d0*dxi -< ymedi=c(2,i)+0.5d0*dyi -< zmedi=c(3,i)+0.5d0*dzi -< num_conti=0 -< call eelecij_scale(i,i+3,ees,evdw1,eel_loc) -< if (wturn4.gt.0.0d0) call eturn4(i,eello_turn4) -< num_cont_hb(i)=num_cont_hb(i)+num_conti -< enddo ! i -< c -< c Loop over all pairs of interacting peptide groups except i,i+2 and i,i+3 -< c -1378,1380d1638 -< dx_normi=dc_norm(1,i) -< dy_normi=dc_norm(2,i) -< dz_normi=dc_norm(3,i) -1387c1645,1684 -< call eelecij_scale(i,j,ees,evdw1,eel_loc) ---- -> ind=ind+1 -> iteli=itel(i) -> itelj=itel(j) -> if (j.eq.i+2 .and. itelj.eq.2) iteli=2 -> r0ij=rpp(iteli,itelj) -> r0ijsq=r0ij*r0ij -> dxj=dc(1,j) -> dyj=dc(2,j) -> dzj=dc(3,j) -> xj=c(1,j)+0.5D0*dxj-xmedi -> yj=c(2,j)+0.5D0*dyj-ymedi -> zj=c(3,j)+0.5D0*dzj-zmedi -> rij=xj*xj+yj*yj+zj*zj -> if (rij.lt.r0ijsq) then -> evdw1ij=0.25d0*(rij-r0ijsq)**2 -> fac=rij-r0ijsq -> else -> evdw1ij=0.0d0 -> fac=0.0d0 -> endif -> evdw1=evdw1+evdw1ij -> C -> C Calculate contributions to the Cartesian gradient. -> C -> ggg(1)=fac*xj -> ggg(2)=fac*yj -> ggg(3)=fac*zj -> do k=1,3 -> ghalf=0.5D0*ggg(k) -> gelc(k,i)=gelc(k,i)+ghalf -> gelc(k,j)=gelc(k,j)+ghalf -> enddo -> * -> * Loop over residues i+1 thru j-1. -> * -> do k=i+1,j-1 -> do l=1,3 -> gelc(l,k)=gelc(l,k)+ggg(l) -> enddo -> enddo -1389d1685 -< num_cont_hb(i)=num_cont_hb(i)+num_conti -1393,1394c1689,2133 -< C------------------------------------------------------------------------------- -< subroutine eelecij_scale(i,j,ees,evdw1,eel_loc) ---- -> c------------------------------------------------------------------------------ -> subroutine vec_and_deriv -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> #ifdef MPI -> include 'mpif.h' -> #endif -> include 'COMMON.IOUNITS' -> include 'COMMON.GEO' -> include 'COMMON.VAR' -> include 'COMMON.LOCAL' -> include 'COMMON.CHAIN' -> include 'COMMON.VECTORS' -> include 'COMMON.SETUP' -> include 'COMMON.TIME1' -> dimension uyder(3,3,2),uzder(3,3,2),vbld_inv_temp(2) -> C Compute the local reference systems. For reference system (i), the -> C X-axis points from CA(i) to CA(i+1), the Y axis is in the -> C CA(i)-CA(i+1)-CA(i+2) plane, and the Z axis is perpendicular to this plane. -> c do i=1,nres-1 -> do i=ivec_start,ivec_end -> if (i.eq.nres-1) then -> C Case of the last full residue -> C Compute the Z-axis -> call vecpr(dc_norm(1,i),dc_norm(1,i-1),uz(1,i)) -> costh=dcos(pi-theta(nres)) -> fac=1.0d0/dsqrt(1.0d0-costh*costh) -> do k=1,3 -> uz(k,i)=fac*uz(k,i) -> enddo -> C Compute the derivatives of uz -> uzder(1,1,1)= 0.0d0 -> uzder(2,1,1)=-dc_norm(3,i-1) -> uzder(3,1,1)= dc_norm(2,i-1) -> uzder(1,2,1)= dc_norm(3,i-1) -> uzder(2,2,1)= 0.0d0 -> uzder(3,2,1)=-dc_norm(1,i-1) -> uzder(1,3,1)=-dc_norm(2,i-1) -> uzder(2,3,1)= dc_norm(1,i-1) -> uzder(3,3,1)= 0.0d0 -> uzder(1,1,2)= 0.0d0 -> uzder(2,1,2)= dc_norm(3,i) -> uzder(3,1,2)=-dc_norm(2,i) -> uzder(1,2,2)=-dc_norm(3,i) -> uzder(2,2,2)= 0.0d0 -> uzder(3,2,2)= dc_norm(1,i) -> uzder(1,3,2)= dc_norm(2,i) -> uzder(2,3,2)=-dc_norm(1,i) -> uzder(3,3,2)= 0.0d0 -> C Compute the Y-axis -> facy=fac -> do k=1,3 -> uy(k,i)=fac*(dc_norm(k,i-1)-costh*dc_norm(k,i)) -> enddo -> C Compute the derivatives of uy -> do j=1,3 -> do k=1,3 -> uyder(k,j,1)=2*dc_norm(k,i-1)*dc_norm(j,i) -> & -dc_norm(k,i)*dc_norm(j,i-1) -> uyder(k,j,2)=-dc_norm(j,i)*dc_norm(k,i) -> enddo -> uyder(j,j,1)=uyder(j,j,1)-costh -> uyder(j,j,2)=1.0d0+uyder(j,j,2) -> enddo -> do j=1,2 -> do k=1,3 -> do l=1,3 -> uygrad(l,k,j,i)=uyder(l,k,j) -> uzgrad(l,k,j,i)=uzder(l,k,j) -> enddo -> enddo -> enddo -> call unormderiv(uy(1,i),uyder(1,1,1),facy,uygrad(1,1,1,i)) -> call unormderiv(uy(1,i),uyder(1,1,2),facy,uygrad(1,1,2,i)) -> call unormderiv(uz(1,i),uzder(1,1,1),fac,uzgrad(1,1,1,i)) -> call unormderiv(uz(1,i),uzder(1,1,2),fac,uzgrad(1,1,2,i)) -> else -> C Other residues -> C Compute the Z-axis -> call vecpr(dc_norm(1,i),dc_norm(1,i+1),uz(1,i)) -> costh=dcos(pi-theta(i+2)) -> fac=1.0d0/dsqrt(1.0d0-costh*costh) -> do k=1,3 -> uz(k,i)=fac*uz(k,i) -> enddo -> C Compute the derivatives of uz -> uzder(1,1,1)= 0.0d0 -> uzder(2,1,1)=-dc_norm(3,i+1) -> uzder(3,1,1)= dc_norm(2,i+1) -> uzder(1,2,1)= dc_norm(3,i+1) -> uzder(2,2,1)= 0.0d0 -> uzder(3,2,1)=-dc_norm(1,i+1) -> uzder(1,3,1)=-dc_norm(2,i+1) -> uzder(2,3,1)= dc_norm(1,i+1) -> uzder(3,3,1)= 0.0d0 -> uzder(1,1,2)= 0.0d0 -> uzder(2,1,2)= dc_norm(3,i) -> uzder(3,1,2)=-dc_norm(2,i) -> uzder(1,2,2)=-dc_norm(3,i) -> uzder(2,2,2)= 0.0d0 -> uzder(3,2,2)= dc_norm(1,i) -> uzder(1,3,2)= dc_norm(2,i) -> uzder(2,3,2)=-dc_norm(1,i) -> uzder(3,3,2)= 0.0d0 -> C Compute the Y-axis -> facy=fac -> do k=1,3 -> uy(k,i)=facy*(dc_norm(k,i+1)-costh*dc_norm(k,i)) -> enddo -> C Compute the derivatives of uy -> do j=1,3 -> do k=1,3 -> uyder(k,j,1)=2*dc_norm(k,i+1)*dc_norm(j,i) -> & -dc_norm(k,i)*dc_norm(j,i+1) -> uyder(k,j,2)=-dc_norm(j,i)*dc_norm(k,i) -> enddo -> uyder(j,j,1)=uyder(j,j,1)-costh -> uyder(j,j,2)=1.0d0+uyder(j,j,2) -> enddo -> do j=1,2 -> do k=1,3 -> do l=1,3 -> uygrad(l,k,j,i)=uyder(l,k,j) -> uzgrad(l,k,j,i)=uzder(l,k,j) -> enddo -> enddo -> enddo -> call unormderiv(uy(1,i),uyder(1,1,1),facy,uygrad(1,1,1,i)) -> call unormderiv(uy(1,i),uyder(1,1,2),facy,uygrad(1,1,2,i)) -> call unormderiv(uz(1,i),uzder(1,1,1),fac,uzgrad(1,1,1,i)) -> call unormderiv(uz(1,i),uzder(1,1,2),fac,uzgrad(1,1,2,i)) -> endif -> enddo -> do i=1,nres-1 -> vbld_inv_temp(1)=vbld_inv(i+1) -> if (i.lt.nres-1) then -> vbld_inv_temp(2)=vbld_inv(i+2) -> else -> vbld_inv_temp(2)=vbld_inv(i) -> endif -> do j=1,2 -> do k=1,3 -> do l=1,3 -> uygrad(l,k,j,i)=vbld_inv_temp(j)*uygrad(l,k,j,i) -> uzgrad(l,k,j,i)=vbld_inv_temp(j)*uzgrad(l,k,j,i) -> enddo -> enddo -> enddo -> enddo -> #ifdef MPI -> if (nfgtasks.gt.1) then -> time00=MPI_Wtime() -> c print *,"Processor",fg_rank,kolor," ivec_start",ivec_start, -> c & " ivec_displ",(ivec_displ(i),i=0,nfgtasks-1), -> c & " ivec_count",(ivec_count(i),i=0,nfgtasks-1) -> call MPI_Allgatherv(uy(1,ivec_start),ivec_count(fg_rank), -> & MPI_UYZ,uy(1,1),ivec_count(0),ivec_displ(0),MPI_UYZ, -> & FG_COMM,IERR) -> call MPI_Allgatherv(uz(1,ivec_start),ivec_count(fg_rank), -> & MPI_UYZ,uz(1,1),ivec_count(0),ivec_displ(0),MPI_UYZ, -> & FG_COMM,IERR) -> call MPI_Allgatherv(uygrad(1,1,1,ivec_start), -> & ivec_count(fg_rank),MPI_UYZGRAD,uygrad(1,1,1,1),ivec_count(0), -> & ivec_displ(0),MPI_UYZGRAD,FG_COMM,IERR) -> call MPI_Allgatherv(uzgrad(1,1,1,ivec_start), -> & ivec_count(fg_rank),MPI_UYZGRAD,uzgrad(1,1,1,1),ivec_count(0), -> & ivec_displ(0),MPI_UYZGRAD,FG_COMM,IERR) -> endif -> time_gather=time_gather+MPI_Wtime()-time00 -> c if (fg_rank.eq.0) then -> c write (iout,*) "Arrays UY and UZ" -> c do i=1,nres-1 -> c write (iout,'(i5,3f10.5,5x,3f10.5)') i,(uy(k,i),k=1,3), -> c & (uz(k,i),k=1,3) -> c enddo -> c endif -> #endif -> return -> end -> C----------------------------------------------------------------------------- -> subroutine check_vecgrad -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.GEO' -> include 'COMMON.VAR' -> include 'COMMON.LOCAL' -> include 'COMMON.CHAIN' -> include 'COMMON.VECTORS' -> dimension uygradt(3,3,2,maxres),uzgradt(3,3,2,maxres) -> dimension uyt(3,maxres),uzt(3,maxres) -> dimension uygradn(3,3,2),uzgradn(3,3,2),erij(3) -> double precision delta /1.0d-7/ -> call vec_and_deriv -> cd do i=1,nres -> crc write(iout,'(2i5,2(3f10.5,5x))') i,1,dc_norm(:,i) -> crc write(iout,'(2i5,2(3f10.5,5x))') i,2,uy(:,i) -> crc write(iout,'(2i5,2(3f10.5,5x)/)')i,3,uz(:,i) -> cd write(iout,'(2i5,2(3f10.5,5x))') i,1, -> cd & (dc_norm(if90,i),if90=1,3) -> cd write(iout,'(2i5,2(3f10.5,5x))') i,2,(uy(if90,i),if90=1,3) -> cd write(iout,'(2i5,2(3f10.5,5x)/)')i,3,(uz(if90,i),if90=1,3) -> cd write(iout,'(a)') -> cd enddo -> do i=1,nres -> do j=1,2 -> do k=1,3 -> do l=1,3 -> uygradt(l,k,j,i)=uygrad(l,k,j,i) -> uzgradt(l,k,j,i)=uzgrad(l,k,j,i) -> enddo -> enddo -> enddo -> enddo -> call vec_and_deriv -> do i=1,nres -> do j=1,3 -> uyt(j,i)=uy(j,i) -> uzt(j,i)=uz(j,i) -> enddo -> enddo -> do i=1,nres -> cd write (iout,*) 'i=',i -> do k=1,3 -> erij(k)=dc_norm(k,i) -> enddo -> do j=1,3 -> do k=1,3 -> dc_norm(k,i)=erij(k) -> enddo -> dc_norm(j,i)=dc_norm(j,i)+delta -> c fac=dsqrt(scalar(dc_norm(1,i),dc_norm(1,i))) -> c do k=1,3 -> c dc_norm(k,i)=dc_norm(k,i)/fac -> c enddo -> c write (iout,*) (dc_norm(k,i),k=1,3) -> c write (iout,*) (erij(k),k=1,3) -> call vec_and_deriv -> do k=1,3 -> uygradn(k,j,1)=(uy(k,i)-uyt(k,i))/delta -> uygradn(k,j,2)=(uy(k,i-1)-uyt(k,i-1))/delta -> uzgradn(k,j,1)=(uz(k,i)-uzt(k,i))/delta -> uzgradn(k,j,2)=(uz(k,i-1)-uzt(k,i-1))/delta -> enddo -> c write (iout,'(i5,3f8.5,3x,3f8.5,5x,3f8.5,3x,3f8.5)') -> c & j,(uzgradt(k,j,1,i),k=1,3),(uzgradn(k,j,1),k=1,3), -> c & (uzgradt(k,j,2,i-1),k=1,3),(uzgradn(k,j,2),k=1,3) -> enddo -> do k=1,3 -> dc_norm(k,i)=erij(k) -> enddo -> cd do k=1,3 -> cd write (iout,'(i5,3f8.5,3x,3f8.5,5x,3f8.5,3x,3f8.5)') -> cd & k,(uygradt(k,l,1,i),l=1,3),(uygradn(k,l,1),l=1,3), -> cd & (uygradt(k,l,2,i-1),l=1,3),(uygradn(k,l,2),l=1,3) -> cd write (iout,'(i5,3f8.5,3x,3f8.5,5x,3f8.5,3x,3f8.5)') -> cd & k,(uzgradt(k,l,1,i),l=1,3),(uzgradn(k,l,1),l=1,3), -> cd & (uzgradt(k,l,2,i-1),l=1,3),(uzgradn(k,l,2),l=1,3) -> cd write (iout,'(a)') -> cd enddo -> enddo -> return -> end -> C-------------------------------------------------------------------------- -> subroutine set_matrices -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.GEO' -> include 'COMMON.VAR' -> include 'COMMON.LOCAL' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VECTORS' -> include 'COMMON.FFIELD' -> double precision auxvec(2),auxmat(2,2) -> C -> C Compute the virtual-bond-torsional-angle dependent quantities needed -> C to calculate the el-loc multibody terms of various order. -> C -> do i=3,nres+1 -> if (i .lt. nres+1) then -> sin1=dsin(phi(i)) -> cos1=dcos(phi(i)) -> sintab(i-2)=sin1 -> costab(i-2)=cos1 -> obrot(1,i-2)=cos1 -> obrot(2,i-2)=sin1 -> sin2=dsin(2*phi(i)) -> cos2=dcos(2*phi(i)) -> sintab2(i-2)=sin2 -> costab2(i-2)=cos2 -> obrot2(1,i-2)=cos2 -> obrot2(2,i-2)=sin2 -> Ug(1,1,i-2)=-cos1 -> Ug(1,2,i-2)=-sin1 -> Ug(2,1,i-2)=-sin1 -> Ug(2,2,i-2)= cos1 -> Ug2(1,1,i-2)=-cos2 -> Ug2(1,2,i-2)=-sin2 -> Ug2(2,1,i-2)=-sin2 -> Ug2(2,2,i-2)= cos2 -> else -> costab(i-2)=1.0d0 -> sintab(i-2)=0.0d0 -> obrot(1,i-2)=1.0d0 -> obrot(2,i-2)=0.0d0 -> obrot2(1,i-2)=0.0d0 -> obrot2(2,i-2)=0.0d0 -> Ug(1,1,i-2)=1.0d0 -> Ug(1,2,i-2)=0.0d0 -> Ug(2,1,i-2)=0.0d0 -> Ug(2,2,i-2)=1.0d0 -> Ug2(1,1,i-2)=0.0d0 -> Ug2(1,2,i-2)=0.0d0 -> Ug2(2,1,i-2)=0.0d0 -> Ug2(2,2,i-2)=0.0d0 -> endif -> if (i .gt. 3 .and. i .lt. nres+1) then -> obrot_der(1,i-2)=-sin1 -> obrot_der(2,i-2)= cos1 -> Ugder(1,1,i-2)= sin1 -> Ugder(1,2,i-2)=-cos1 -> Ugder(2,1,i-2)=-cos1 -> Ugder(2,2,i-2)=-sin1 -> dwacos2=cos2+cos2 -> dwasin2=sin2+sin2 -> obrot2_der(1,i-2)=-dwasin2 -> obrot2_der(2,i-2)= dwacos2 -> Ug2der(1,1,i-2)= dwasin2 -> Ug2der(1,2,i-2)=-dwacos2 -> Ug2der(2,1,i-2)=-dwacos2 -> Ug2der(2,2,i-2)=-dwasin2 -> else -> obrot_der(1,i-2)=0.0d0 -> obrot_der(2,i-2)=0.0d0 -> Ugder(1,1,i-2)=0.0d0 -> Ugder(1,2,i-2)=0.0d0 -> Ugder(2,1,i-2)=0.0d0 -> Ugder(2,2,i-2)=0.0d0 -> obrot2_der(1,i-2)=0.0d0 -> obrot2_der(2,i-2)=0.0d0 -> Ug2der(1,1,i-2)=0.0d0 -> Ug2der(1,2,i-2)=0.0d0 -> Ug2der(2,1,i-2)=0.0d0 -> Ug2der(2,2,i-2)=0.0d0 -> endif -> c if (i.gt. iatel_s+2 .and. i.lt.iatel_e+5) then -> if (i.gt. nnt+2 .and. i.lt.nct+2) then -> iti = itortyp(itype(i-2)) -> else -> iti=ntortyp+1 -> endif -> c if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then -> if (i.gt. nnt+1 .and. i.lt.nct+1) then -> iti1 = itortyp(itype(i-1)) -> else -> iti1=ntortyp+1 -> endif -> cd write (iout,*) '*******i',i,' iti1',iti -> cd write (iout,*) 'b1',b1(:,iti) -> cd write (iout,*) 'b2',b2(:,iti) -> cd write (iout,*) 'Ug',Ug(:,:,i-2) -> c if (i .gt. iatel_s+2) then -> if (i .gt. nnt+2) then -> call matvec2(Ug(1,1,i-2),b2(1,iti),Ub2(1,i-2)) -> call matmat2(EE(1,1,iti),Ug(1,1,i-2),EUg(1,1,i-2)) -> call matmat2(CC(1,1,iti),Ug(1,1,i-2),CUg(1,1,i-2)) -> call matmat2(DD(1,1,iti),Ug(1,1,i-2),DUg(1,1,i-2)) -> call matmat2(Dtilde(1,1,iti),Ug2(1,1,i-2),DtUg2(1,1,i-2)) -> call matvec2(Ctilde(1,1,iti1),obrot(1,i-2),Ctobr(1,i-2)) -> call matvec2(Dtilde(1,1,iti),obrot2(1,i-2),Dtobr2(1,i-2)) -> else -> do k=1,2 -> Ub2(k,i-2)=0.0d0 -> Ctobr(k,i-2)=0.0d0 -> Dtobr2(k,i-2)=0.0d0 -> do l=1,2 -> EUg(l,k,i-2)=0.0d0 -> CUg(l,k,i-2)=0.0d0 -> DUg(l,k,i-2)=0.0d0 -> DtUg2(l,k,i-2)=0.0d0 -> enddo -> enddo -> endif -> call matvec2(Ugder(1,1,i-2),b2(1,iti),Ub2der(1,i-2)) -> call matmat2(EE(1,1,iti),Ugder(1,1,i-2),EUgder(1,1,i-2)) -> call matmat2(CC(1,1,iti1),Ugder(1,1,i-2),CUgder(1,1,i-2)) -> call matmat2(DD(1,1,iti),Ugder(1,1,i-2),DUgder(1,1,i-2)) -> call matmat2(Dtilde(1,1,iti),Ug2der(1,1,i-2),DtUg2der(1,1,i-2)) -> call matvec2(Ctilde(1,1,iti1),obrot_der(1,i-2),Ctobrder(1,i-2)) -> call matvec2(Dtilde(1,1,iti),obrot2_der(1,i-2),Dtobr2der(1,i-2)) -> do k=1,2 -> muder(k,i-2)=Ub2der(k,i-2) -> enddo -> c if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then -> if (i.gt. nnt+1 .and. i.lt.nct+1) then -> iti1 = itortyp(itype(i-1)) -> else -> iti1=ntortyp+1 -> endif -> do k=1,2 -> mu(k,i-2)=Ub2(k,i-2)+b1(k,iti1) -> enddo -> C Vectors and matrices dependent on a single virtual-bond dihedral. -> call matvec2(DD(1,1,iti),b1tilde(1,iti1),auxvec(1)) -> call matvec2(Ug2(1,1,i-2),auxvec(1),Ug2Db1t(1,i-2)) -> call matvec2(Ug2der(1,1,i-2),auxvec(1),Ug2Db1tder(1,i-2)) -> call matvec2(CC(1,1,iti1),Ub2(1,i-2),CUgb2(1,i-2)) -> call matvec2(CC(1,1,iti1),Ub2der(1,i-2),CUgb2der(1,i-2)) -> call matmat2(EUg(1,1,i-2),CC(1,1,iti1),EUgC(1,1,i-2)) -> call matmat2(EUgder(1,1,i-2),CC(1,1,iti1),EUgCder(1,1,i-2)) -> call matmat2(EUg(1,1,i-2),DD(1,1,iti1),EUgD(1,1,i-2)) -> call matmat2(EUgder(1,1,i-2),DD(1,1,iti1),EUgDder(1,1,i-2)) -> cd write (iout,*) 'mu ',mu(:,i-2) -> cd write (iout,*) 'mu1',mu1(:,i-2) -> cd write (iout,*) 'mu2',mu2(:,i-2) -> enddo -> C Matrices dependent on two consecutive virtual-bond dihedrals. -> C The order of matrices is from left to right. -> do i=2,nres-1 -> call matmat2(DtUg2(1,1,i-1),EUg(1,1,i),DtUg2EUg(1,1,i)) -> call matmat2(DtUg2der(1,1,i-1),EUg(1,1,i),DtUg2EUgder(1,1,1,i)) -> call matmat2(DtUg2(1,1,i-1),EUgder(1,1,i),DtUg2EUgder(1,1,2,i)) -> call transpose2(DtUg2(1,1,i-1),auxmat(1,1)) -> call matmat2(auxmat(1,1),EUg(1,1,i),Ug2DtEUg(1,1,i)) -> call matmat2(auxmat(1,1),EUgder(1,1,i),Ug2DtEUgder(1,1,2,i)) -> call transpose2(DtUg2der(1,1,i-1),auxmat(1,1)) -> call matmat2(auxmat(1,1),EUg(1,1,i),Ug2DtEUgder(1,1,1,i)) -> enddo -> cd do i=1,nres -> cd iti = itortyp(itype(i)) -> cd write (iout,*) i -> cd do j=1,2 -> cd write (iout,'(2f10.5,5x,2f10.5,5x,2f10.5)') -> cd & (EE(j,k,iti),k=1,2),(Ug(j,k,i),k=1,2),(EUg(j,k,i),k=1,2) -> cd enddo -> cd enddo -> return -> end -> C-------------------------------------------------------------------------- -> subroutine eelec(ees,evdw1,eel_loc,eello_turn3,eello_turn4) -1420,1422c2159 -< common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,a22,a23,a32,a33, -< & dxi,dyi,dzi,dx_normi,dy_normi,dz_normi,xmedi,ymedi,zmedi, -< & num_conti,j1,j2 ---- -> common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,j1,j2 -1434,1485c2171,2284 -< ind=ind+1 -< iteli=itel(i) -< itelj=itel(j) -< if (j.eq.i+2 .and. itelj.eq.2) iteli=2 -< aaa=app(iteli,itelj) -< bbb=bpp(iteli,itelj) -< ael6i=ael6(iteli,itelj) -< ael3i=ael3(iteli,itelj) -< C Diagnostics only!!! -< c aaa=0.0D0 -< c bbb=0.0D0 -< c ael6i=0.0D0 -< c ael3i=0.0D0 -< C End diagnostics -< dxj=dc(1,j) -< dyj=dc(2,j) -< dzj=dc(3,j) -< dx_normj=dc_norm(1,j) -< dy_normj=dc_norm(2,j) -< dz_normj=dc_norm(3,j) -< xj=c(1,j)+0.5D0*dxj-xmedi -< yj=c(2,j)+0.5D0*dyj-ymedi -< zj=c(3,j)+0.5D0*dzj-zmedi -< rij=xj*xj+yj*yj+zj*zj -< rrmij=1.0D0/rij -< rij=dsqrt(rij) -< rmij=1.0D0/rij -< c For extracting the short-range part of Evdwpp -< sss=sscale(rij/rpp(iteli,itelj)) -< c -< r3ij=rrmij*rmij -< r6ij=r3ij*r3ij -< cosa=dx_normi*dx_normj+dy_normi*dy_normj+dz_normi*dz_normj -< cosb=(xj*dx_normi+yj*dy_normi+zj*dz_normi)*rmij -< cosg=(xj*dx_normj+yj*dy_normj+zj*dz_normj)*rmij -< fac=cosa-3.0D0*cosb*cosg -< ev1=aaa*r6ij*r6ij -< c 4/26/02 - AL scaling down 1,4 repulsive VDW interactions -< if (j.eq.i+2) ev1=scal_el*ev1 -< ev2=bbb*r6ij -< fac3=ael6i*r6ij -< fac4=ael3i*r3ij -< evdwij=ev1+ev2 -< el1=fac3*(4.0D0+fac*fac-3.0D0*(cosb*cosb+cosg*cosg)) -< el2=fac4*fac -< eesij=el1+el2 -< C 12/26/95 - for the evaluation of multi-body H-bonding interactions -< ees0ij=4.0D0+fac*fac-3.0D0*(cosb*cosb+cosg*cosg) -< ees=ees+eesij -< evdw1=evdw1+evdwij*(1.0d0-sss) -< cd write(iout,'(2(2i3,2x),7(1pd12.4)/2(3(1pd12.4),5x)/)') -< cd & iteli,i,itelj,j,aaa,bbb,ael6i,ael3i, ---- -> cd write(iout,*) 'In EELEC' -> cd do i=1,nloctyp -> cd write(iout,*) 'Type',i -> cd write(iout,*) 'B1',B1(:,i) -> cd write(iout,*) 'B2',B2(:,i) -> cd write(iout,*) 'CC',CC(:,:,i) -> cd write(iout,*) 'DD',DD(:,:,i) -> cd write(iout,*) 'EE',EE(:,:,i) -> cd enddo -> cd call check_vecgrad -> cd stop -> if (icheckgrad.eq.1) then -> do i=1,nres-1 -> fac=1.0d0/dsqrt(scalar(dc(1,i),dc(1,i))) -> do k=1,3 -> dc_norm(k,i)=dc(k,i)*fac -> enddo -> c write (iout,*) 'i',i,' fac',fac -> enddo -> endif -> if (wel_loc.gt.0.0d0 .or. wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 -> & .or. wcorr6.gt.0.0d0 .or. wturn3.gt.0.0d0 .or. -> & wturn4.gt.0.0d0 .or. wturn6.gt.0.0d0) then -> c call vec_and_deriv -> call set_matrices -> endif -> cd do i=1,nres-1 -> cd write (iout,*) 'i=',i -> cd do k=1,3 -> cd write (iout,'(i5,2f10.5)') k,uy(k,i),uz(k,i) -> cd enddo -> cd do k=1,3 -> cd write (iout,'(f10.5,2x,3f10.5,2x,3f10.5)') -> cd & uz(k,i),(uzgrad(k,l,1,i),l=1,3),(uzgrad(k,l,2,i),l=1,3) -> cd enddo -> cd enddo -> num_conti_hb=0 -> ees=0.0D0 -> evdw1=0.0D0 -> eel_loc=0.0d0 -> eello_turn3=0.0d0 -> eello_turn4=0.0d0 -> ind=0 -> do i=1,nres -> num_cont_hb(i)=0 -> enddo -> cd print '(a)','Enter EELEC' -> cd write (iout,*) 'iatel_s=',iatel_s,' iatel_e=',iatel_e -> do i=1,nres -> gel_loc_loc(i)=0.0d0 -> gcorr_loc(i)=0.0d0 -> enddo -> do i=iatel_s,iatel_e -> dxi=dc(1,i) -> dyi=dc(2,i) -> dzi=dc(3,i) -> dx_normi=dc_norm(1,i) -> dy_normi=dc_norm(2,i) -> dz_normi=dc_norm(3,i) -> xmedi=c(1,i)+0.5d0*dxi -> ymedi=c(2,i)+0.5d0*dyi -> zmedi=c(3,i)+0.5d0*dzi -> num_conti=0 -> c write (iout,*) 'i',i,' ielstart',ielstart(i),' ielend',ielend(i) -> do j=ielstart(i),ielend(i) -> ind=ind+1 -> iteli=itel(i) -> itelj=itel(j) -> if (j.eq.i+2 .and. itelj.eq.2) iteli=2 -> aaa=app(iteli,itelj) -> bbb=bpp(iteli,itelj) -> ael6i=ael6(iteli,itelj) -> ael3i=ael3(iteli,itelj) -> C Diagnostics only!!! -> c aaa=0.0D0 -> c bbb=0.0D0 -> c ael6i=0.0D0 -> c ael3i=0.0D0 -> C End diagnostics -> dxj=dc(1,j) -> dyj=dc(2,j) -> dzj=dc(3,j) -> dx_normj=dc_norm(1,j) -> dy_normj=dc_norm(2,j) -> dz_normj=dc_norm(3,j) -> xj=c(1,j)+0.5D0*dxj-xmedi -> yj=c(2,j)+0.5D0*dyj-ymedi -> zj=c(3,j)+0.5D0*dzj-zmedi -> rij=xj*xj+yj*yj+zj*zj -> rrmij=1.0D0/rij -> rij=dsqrt(rij) -> rmij=1.0D0/rij -> r3ij=rrmij*rmij -> r6ij=r3ij*r3ij -> cosa=dx_normi*dx_normj+dy_normi*dy_normj+dz_normi*dz_normj -> cosb=(xj*dx_normi+yj*dy_normi+zj*dz_normi)*rmij -> cosg=(xj*dx_normj+yj*dy_normj+zj*dz_normj)*rmij -> fac=cosa-3.0D0*cosb*cosg -> ev1=aaa*r6ij*r6ij -> c 4/26/02 - AL scaling down 1,4 repulsive VDW interactions -> if (j.eq.i+2) ev1=scal_el*ev1 -> ev2=bbb*r6ij -> fac3=ael6i*r6ij -> fac4=ael3i*r3ij -> evdwij=ev1+ev2 -> el1=fac3*(4.0D0+fac*fac-3.0D0*(cosb*cosb+cosg*cosg)) -> el2=fac4*fac -> eesij=el1+el2 -> C 12/26/95 - for the evaluation of multi-body H-bonding interactions -> ees0ij=4.0D0+fac*fac-3.0D0*(cosb*cosb+cosg*cosg) -> ees=ees+eesij -> evdw1=evdw1+evdwij -> cd write(iout,'(2(2i3,2x),7(1pd12.4)/2(3(1pd12.4),5x)/)') -> cd & iteli,i,itelj,j,aaa,bbb,ael6i,ael3i, -1498c2297 -< facvdw=-6*rrmij*(ev1+evdwij)*(1.0d0-sss) ---- -> facvdw=-6*rrmij*(ev1+evdwij) -1540c2339 -< facvdw=(ev1+evdwij)*(1.0d0-sss) ---- -> facvdw=ev1+evdwij -1876a2676,2683 -> if (wturn3.gt.0.0d0 .or. wturn4.gt.0.0d0) then -> C Contributions from turns -> a_temp(1,1)=a22 -> a_temp(1,2)=a23 -> a_temp(2,1)=a32 -> a_temp(2,2)=a33 -> call eturn34(i,j,eello_turn3,eello_turn4) -> endif -2073a2881,2889 -> enddo ! j -> num_cont_hb(i)=num_conti -> enddo ! i -> cd do i=1,nres -> cd write (iout,'(i3,3f10.5,5x,3f10.5)') -> cd & i,(gel_loc(k,i),k=1,3),gel_loc_loc(i) -> cd enddo -> c 12/7/99 Adam eello_turn3 will be considered as a separate energy term -> ccc eel_loc=eel_loc+eello_turn3 -2076,2080c2892,2894 -< C----------------------------------------------------------------------- -< subroutine evdwpp_long(evdw1) -< C -< C Compute Evdwpp -< C ---- -> C----------------------------------------------------------------------------- -> subroutine eturn34(i,j,eello_turn3,eello_turn4) -> C Third- and fourth-order contributions from turns -2083d2896 -< include 'COMMON.CONTROL' -2094a2908 -> include 'COMMON.CONTROL' -2096,2148c2910,2917 -< c 4/26/02 - AL scaling factor for 1,4 repulsive VDW interactions -< #ifdef MOMENT -< double precision scal_el /1.0d0/ -< #else -< double precision scal_el /0.5d0/ -< #endif -< evdw1=0.0D0 -< do i=iatel_s,iatel_e -< dxi=dc(1,i) -< dyi=dc(2,i) -< dzi=dc(3,i) -< dx_normi=dc_norm(1,i) -< dy_normi=dc_norm(2,i) -< dz_normi=dc_norm(3,i) -< xmedi=c(1,i)+0.5d0*dxi -< ymedi=c(2,i)+0.5d0*dyi -< zmedi=c(3,i)+0.5d0*dzi -< num_conti=0 -< c write (iout,*) 'i',i,' ielstart',ielstart(i),' ielend',ielend(i) -< do j=ielstart(i),ielend(i) -< ind=ind+1 -< iteli=itel(i) -< itelj=itel(j) -< if (j.eq.i+2 .and. itelj.eq.2) iteli=2 -< aaa=app(iteli,itelj) -< bbb=bpp(iteli,itelj) -< dxj=dc(1,j) -< dyj=dc(2,j) -< dzj=dc(3,j) -< dx_normj=dc_norm(1,j) -< dy_normj=dc_norm(2,j) -< dz_normj=dc_norm(3,j) -< xj=c(1,j)+0.5D0*dxj-xmedi -< yj=c(2,j)+0.5D0*dyj-ymedi -< zj=c(3,j)+0.5D0*dzj-zmedi -< rij=xj*xj+yj*yj+zj*zj -< rrmij=1.0D0/rij -< rij=dsqrt(rij) -< sss=sscale(rij/rpp(iteli,itelj)) -< if (sss.lt.1.0d0) then -< rmij=1.0D0/rij -< r3ij=rrmij*rmij -< r6ij=r3ij*r3ij -< ev1=aaa*r6ij*r6ij -< c 4/26/02 - AL scaling down 1,4 repulsive VDW interactions -< if (j.eq.i+2) ev1=scal_el*ev1 -< ev2=bbb*r6ij -< evdwij=ev1+ev2 -< if (energy_dec) then -< write (iout,'(a6,2i5,0pf7.3)') 'evdw1',i,j,evdwij -< write (iout,'(a6,2i5,0pf7.3)') 'ees',i,j,eesij -< endif -< evdw1=evdw1+evdwij*(1.0d0-sss) ---- -> double precision auxmat(2,2),auxmat1(2,2),auxmat2(2,2),pizda(2,2), -> & e1t(2,2),e2t(2,2),e3t(2,2),e1tder(2,2),e2tder(2,2),e3tder(2,2), -> & e1a(2,2),ae3(2,2),ae3e2(2,2),auxvec(2),auxvec1(2) -> double precision agg(3,4),aggi(3,4),aggi1(3,4), -> & aggj(3,4),aggj1(3,4),a_temp(2,2),auxmat3(2,2) -> common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,j1,j2 -> if (j.eq.i+2) then -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -2150c2919,2980 -< C Calculate contributions to the Cartesian gradient. ---- -> C Third-order contributions -> C -> C (i+2)o----(i+3) -> C | | -> C | | -> C (i+1)o----i -> C -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> cd call checkint_turn3(i,a_temp,eello_turn3_num) -> call matmat2(EUg(1,1,i+1),EUg(1,1,i+2),auxmat(1,1)) -> call transpose2(auxmat(1,1),auxmat1(1,1)) -> call matmat2(a_temp(1,1),auxmat1(1,1),pizda(1,1)) -> eello_turn3=eello_turn3+0.5d0*(pizda(1,1)+pizda(2,2)) -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'eturn3',i,j,0.5d0*(pizda(1,1)+pizda(2,2)) -> cd write (2,*) 'i,',i,' j',j,'eello_turn3', -> cd & 0.5d0*(pizda(1,1)+pizda(2,2)), -> cd & ' eello_turn3_num',4*eello_turn3_num -> C Derivatives in gamma(i) -> call matmat2(EUgder(1,1,i+1),EUg(1,1,i+2),auxmat2(1,1)) -> call transpose2(auxmat2(1,1),auxmat3(1,1)) -> call matmat2(a_temp(1,1),auxmat3(1,1),pizda(1,1)) -> gel_loc_turn3(i)=gel_loc_turn3(i)+0.5d0*(pizda(1,1)+pizda(2,2)) -> C Derivatives in gamma(i+1) -> call matmat2(EUg(1,1,i+1),EUgder(1,1,i+2),auxmat2(1,1)) -> call transpose2(auxmat2(1,1),auxmat3(1,1)) -> call matmat2(a_temp(1,1),auxmat3(1,1),pizda(1,1)) -> gel_loc_turn3(i+1)=gel_loc_turn3(i+1) -> & +0.5d0*(pizda(1,1)+pizda(2,2)) -> C Cartesian derivatives -> do l=1,3 -> a_temp(1,1)=aggi(l,1) -> a_temp(1,2)=aggi(l,2) -> a_temp(2,1)=aggi(l,3) -> a_temp(2,2)=aggi(l,4) -> call matmat2(a_temp(1,1),auxmat1(1,1),pizda(1,1)) -> gcorr3_turn(l,i)=gcorr3_turn(l,i) -> & +0.5d0*(pizda(1,1)+pizda(2,2)) -> a_temp(1,1)=aggi1(l,1) -> a_temp(1,2)=aggi1(l,2) -> a_temp(2,1)=aggi1(l,3) -> a_temp(2,2)=aggi1(l,4) -> call matmat2(a_temp(1,1),auxmat1(1,1),pizda(1,1)) -> gcorr3_turn(l,i+1)=gcorr3_turn(l,i+1) -> & +0.5d0*(pizda(1,1)+pizda(2,2)) -> a_temp(1,1)=aggj(l,1) -> a_temp(1,2)=aggj(l,2) -> a_temp(2,1)=aggj(l,3) -> a_temp(2,2)=aggj(l,4) -> call matmat2(a_temp(1,1),auxmat1(1,1),pizda(1,1)) -> gcorr3_turn(l,j)=gcorr3_turn(l,j) -> & +0.5d0*(pizda(1,1)+pizda(2,2)) -> a_temp(1,1)=aggj1(l,1) -> a_temp(1,2)=aggj1(l,2) -> a_temp(2,1)=aggj1(l,3) -> a_temp(2,2)=aggj1(l,4) -> call matmat2(a_temp(1,1),auxmat1(1,1),pizda(1,1)) -> gcorr3_turn(l,j1)=gcorr3_turn(l,j1) -> & +0.5d0*(pizda(1,1)+pizda(2,2)) -> enddo -> else if (j.eq.i+3) then -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -2152,2172c2982,3119 -< facvdw=-6*rrmij*(ev1+evdwij)*(1.0d0-sss) -< ggg(1)=facvdw*xj -< ggg(2)=facvdw*yj -< ggg(3)=facvdw*zj -< -< do k=1,3 -< ghalf=0.5D0*ggg(k) -< gvdwpp(k,i)=gvdwpp(k,i)+ghalf -< gvdwpp(k,j)=gvdwpp(k,j)+ghalf -< enddo -< * -< * Loop over residues i+1 thru j-1. -< * -< do k=i+1,j-1 -< do l=1,3 -< gvdwpp(l,k)=gvdwpp(l,k)+ggg(l) -< enddo -< enddo -< endif -< enddo ! j -< enddo ! i ---- -> C Fourth-order contributions -> C -> C (i+3)o----(i+4) -> C / | -> C (i+2)o | -> C \ | -> C (i+1)o----i -> C -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> cd call checkint_turn4(i,a_temp,eello_turn4_num) -> iti1=itortyp(itype(i+1)) -> iti2=itortyp(itype(i+2)) -> iti3=itortyp(itype(i+3)) -> call transpose2(EUg(1,1,i+1),e1t(1,1)) -> call transpose2(Eug(1,1,i+2),e2t(1,1)) -> call transpose2(Eug(1,1,i+3),e3t(1,1)) -> call matmat2(e1t(1,1),a_temp(1,1),e1a(1,1)) -> call matvec2(e1a(1,1),Ub2(1,i+3),auxvec(1)) -> s1=scalar2(b1(1,iti2),auxvec(1)) -> call matmat2(a_temp(1,1),e3t(1,1),ae3(1,1)) -> call matvec2(ae3(1,1),Ub2(1,i+2),auxvec(1)) -> s2=scalar2(b1(1,iti1),auxvec(1)) -> call matmat2(ae3(1,1),e2t(1,1),ae3e2(1,1)) -> call matmat2(ae3e2(1,1),e1t(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> eello_turn4=eello_turn4-(s1+s2+s3) -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'eturn4',i,j,-(s1+s2+s3) -> cd write (2,*) 'i,',i,' j',j,'eello_turn4',-(s1+s2+s3), -> cd & ' eello_turn4_num',8*eello_turn4_num -> C Derivatives in gamma(i) -> call transpose2(EUgder(1,1,i+1),e1tder(1,1)) -> call matmat2(e1tder(1,1),a_temp(1,1),auxmat(1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i+3),auxvec(1)) -> s1=scalar2(b1(1,iti2),auxvec(1)) -> call matmat2(ae3e2(1,1),e1tder(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> gel_loc_turn4(i)=gel_loc_turn4(i)-(s1+s3) -> C Derivatives in gamma(i+1) -> call transpose2(EUgder(1,1,i+2),e2tder(1,1)) -> call matvec2(ae3(1,1),Ub2der(1,i+2),auxvec(1)) -> s2=scalar2(b1(1,iti1),auxvec(1)) -> call matmat2(ae3(1,1),e2tder(1,1),auxmat(1,1)) -> call matmat2(auxmat(1,1),e1t(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> gel_loc_turn4(i+1)=gel_loc_turn4(i+1)-(s2+s3) -> C Derivatives in gamma(i+2) -> call transpose2(EUgder(1,1,i+3),e3tder(1,1)) -> call matvec2(e1a(1,1),Ub2der(1,i+3),auxvec(1)) -> s1=scalar2(b1(1,iti2),auxvec(1)) -> call matmat2(a_temp(1,1),e3tder(1,1),auxmat(1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i+2),auxvec(1)) -> s2=scalar2(b1(1,iti1),auxvec(1)) -> call matmat2(auxmat(1,1),e2t(1,1),auxmat3(1,1)) -> call matmat2(auxmat3(1,1),e1t(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> gel_loc_turn4(i+2)=gel_loc_turn4(i+2)-(s1+s2+s3) -> C Cartesian derivatives -> C Derivatives of this turn contributions in DC(i+2) -> if (j.lt.nres-1) then -> do l=1,3 -> a_temp(1,1)=agg(l,1) -> a_temp(1,2)=agg(l,2) -> a_temp(2,1)=agg(l,3) -> a_temp(2,2)=agg(l,4) -> call matmat2(e1t(1,1),a_temp(1,1),e1a(1,1)) -> call matvec2(e1a(1,1),Ub2(1,i+3),auxvec(1)) -> s1=scalar2(b1(1,iti2),auxvec(1)) -> call matmat2(a_temp(1,1),e3t(1,1),ae3(1,1)) -> call matvec2(ae3(1,1),Ub2(1,i+2),auxvec(1)) -> s2=scalar2(b1(1,iti1),auxvec(1)) -> call matmat2(ae3(1,1),e2t(1,1),ae3e2(1,1)) -> call matmat2(ae3e2(1,1),e1t(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> ggg(l)=-(s1+s2+s3) -> gcorr4_turn(l,i+2)=gcorr4_turn(l,i+2)-(s1+s2+s3) -> enddo -> endif -> C Remaining derivatives of this turn contribution -> do l=1,3 -> a_temp(1,1)=aggi(l,1) -> a_temp(1,2)=aggi(l,2) -> a_temp(2,1)=aggi(l,3) -> a_temp(2,2)=aggi(l,4) -> call matmat2(e1t(1,1),a_temp(1,1),e1a(1,1)) -> call matvec2(e1a(1,1),Ub2(1,i+3),auxvec(1)) -> s1=scalar2(b1(1,iti2),auxvec(1)) -> call matmat2(a_temp(1,1),e3t(1,1),ae3(1,1)) -> call matvec2(ae3(1,1),Ub2(1,i+2),auxvec(1)) -> s2=scalar2(b1(1,iti1),auxvec(1)) -> call matmat2(ae3(1,1),e2t(1,1),ae3e2(1,1)) -> call matmat2(ae3e2(1,1),e1t(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> gcorr4_turn(l,i)=gcorr4_turn(l,i)-(s1+s2+s3) -> a_temp(1,1)=aggi1(l,1) -> a_temp(1,2)=aggi1(l,2) -> a_temp(2,1)=aggi1(l,3) -> a_temp(2,2)=aggi1(l,4) -> call matmat2(e1t(1,1),a_temp(1,1),e1a(1,1)) -> call matvec2(e1a(1,1),Ub2(1,i+3),auxvec(1)) -> s1=scalar2(b1(1,iti2),auxvec(1)) -> call matmat2(a_temp(1,1),e3t(1,1),ae3(1,1)) -> call matvec2(ae3(1,1),Ub2(1,i+2),auxvec(1)) -> s2=scalar2(b1(1,iti1),auxvec(1)) -> call matmat2(ae3(1,1),e2t(1,1),ae3e2(1,1)) -> call matmat2(ae3e2(1,1),e1t(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> gcorr4_turn(l,i+1)=gcorr4_turn(l,i+1)-(s1+s2+s3) -> a_temp(1,1)=aggj(l,1) -> a_temp(1,2)=aggj(l,2) -> a_temp(2,1)=aggj(l,3) -> a_temp(2,2)=aggj(l,4) -> call matmat2(e1t(1,1),a_temp(1,1),e1a(1,1)) -> call matvec2(e1a(1,1),Ub2(1,i+3),auxvec(1)) -> s1=scalar2(b1(1,iti2),auxvec(1)) -> call matmat2(a_temp(1,1),e3t(1,1),ae3(1,1)) -> call matvec2(ae3(1,1),Ub2(1,i+2),auxvec(1)) -> s2=scalar2(b1(1,iti1),auxvec(1)) -> call matmat2(ae3(1,1),e2t(1,1),ae3e2(1,1)) -> call matmat2(ae3e2(1,1),e1t(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> gcorr4_turn(l,j)=gcorr4_turn(l,j)-(s1+s2+s3) -> a_temp(1,1)=aggj1(l,1) -> a_temp(1,2)=aggj1(l,2) -> a_temp(2,1)=aggj1(l,3) -> a_temp(2,2)=aggj1(l,4) -> call matmat2(e1t(1,1),a_temp(1,1),e1a(1,1)) -> call matvec2(e1a(1,1),Ub2(1,i+3),auxvec(1)) -> s1=scalar2(b1(1,iti2),auxvec(1)) -> call matmat2(a_temp(1,1),e3t(1,1),ae3(1,1)) -> call matvec2(ae3(1,1),Ub2(1,i+2),auxvec(1)) -> s2=scalar2(b1(1,iti1),auxvec(1)) -> call matmat2(ae3(1,1),e2t(1,1),ae3e2(1,1)) -> call matmat2(ae3e2(1,1),e1t(1,1),pizda(1,1)) -> s3=0.5d0*(pizda(1,1)+pizda(2,2)) -> gcorr4_turn(l,j1)=gcorr4_turn(l,j1)-(s1+s2+s3) -> enddo -> endif -2175,2176c3122,3160 -< C----------------------------------------------------------------------- -< subroutine evdwpp_short(evdw1) ---- -> C----------------------------------------------------------------------------- -> subroutine vecpr(u,v,w) -> implicit real*8(a-h,o-z) -> dimension u(3),v(3),w(3) -> w(1)=u(2)*v(3)-u(3)*v(2) -> w(2)=-u(1)*v(3)+u(3)*v(1) -> w(3)=u(1)*v(2)-u(2)*v(1) -> return -> end -> C----------------------------------------------------------------------------- -> subroutine unormderiv(u,ugrad,unorm,ungrad) -> C This subroutine computes the derivatives of a normalized vector u, given -> C the derivatives computed without normalization conditions, ugrad. Returns -> C ungrad. -> implicit none -> double precision u(3),ugrad(3,3),unorm,ungrad(3,3) -> double precision vec(3) -> double precision scalar -> integer i,j -> c write (2,*) 'ugrad',ugrad -> c write (2,*) 'u',u -> do i=1,3 -> vec(i)=scalar(ugrad(1,i),u(1)) -> enddo -> c write (2,*) 'vec',vec -> do i=1,3 -> do j=1,3 -> ungrad(j,i)=(ugrad(j,i)-u(j)*vec(i))*unorm -> enddo -> enddo -> c write (2,*) 'ungrad',ungrad -> return -> end -> C----------------------------------------------------------------------------- -> subroutine escp_soft_sphere(evdw2,evdw2_14) -> C -> C This subroutine calculates the excluded-volume interaction energy between -> C peptide-group centers and side chains and its gradient in virtual-bond and -> C side-chain vectors. -2178,2179d3161 -< C Compute Evdwpp -< C -2182,2183d3163 -< include 'COMMON.CONTROL' -< include 'COMMON.IOUNITS' -2190,2192d3169 -< include 'COMMON.CONTACTS' -< include 'COMMON.TORSION' -< include 'COMMON.VECTORS' -2194,2291c3171,3172 -< dimension ggg(3) -< c 4/26/02 - AL scaling factor for 1,4 repulsive VDW interactions -< #ifdef MOMENT -< double precision scal_el /1.0d0/ -< #else -< double precision scal_el /0.5d0/ -< #endif -< evdw1=0.0D0 -< do i=iatel_s,iatel_e -< dxi=dc(1,i) -< dyi=dc(2,i) -< dzi=dc(3,i) -< dx_normi=dc_norm(1,i) -< dy_normi=dc_norm(2,i) -< dz_normi=dc_norm(3,i) -< xmedi=c(1,i)+0.5d0*dxi -< ymedi=c(2,i)+0.5d0*dyi -< zmedi=c(3,i)+0.5d0*dzi -< num_conti=0 -< c write (iout,*) 'i',i,' ielstart',ielstart(i),' ielend',ielend(i) -< do j=ielstart(i),ielend(i) -< ind=ind+1 -< iteli=itel(i) -< itelj=itel(j) -< if (j.eq.i+2 .and. itelj.eq.2) iteli=2 -< aaa=app(iteli,itelj) -< bbb=bpp(iteli,itelj) -< dxj=dc(1,j) -< dyj=dc(2,j) -< dzj=dc(3,j) -< dx_normj=dc_norm(1,j) -< dy_normj=dc_norm(2,j) -< dz_normj=dc_norm(3,j) -< xj=c(1,j)+0.5D0*dxj-xmedi -< yj=c(2,j)+0.5D0*dyj-ymedi -< zj=c(3,j)+0.5D0*dzj-zmedi -< rij=xj*xj+yj*yj+zj*zj -< rrmij=1.0D0/rij -< rij=dsqrt(rij) -< sss=sscale(rij/rpp(iteli,itelj)) -< if (sss.gt.0.0d0) then -< rmij=1.0D0/rij -< r3ij=rrmij*rmij -< r6ij=r3ij*r3ij -< ev1=aaa*r6ij*r6ij -< c 4/26/02 - AL scaling down 1,4 repulsive VDW interactions -< if (j.eq.i+2) ev1=scal_el*ev1 -< ev2=bbb*r6ij -< evdwij=ev1+ev2 -< if (energy_dec) then -< write (iout,'(a6,2i5,0pf7.3)') 'evdw1',i,j,evdwij -< write (iout,'(a6,2i5,0pf7.3)') 'ees',i,j,eesij -< endif -< evdw1=evdw1+evdwij*sss -< C -< C Calculate contributions to the Cartesian gradient. -< C -< facvdw=-6*rrmij*(ev1+evdwij)*sss -< ggg(1)=facvdw*xj -< ggg(2)=facvdw*yj -< ggg(3)=facvdw*zj -< -< do k=1,3 -< ghalf=0.5D0*ggg(k) -< gvdwpp(k,i)=gvdwpp(k,i)+ghalf -< gvdwpp(k,j)=gvdwpp(k,j)+ghalf -< enddo -< * -< * Loop over residues i+1 thru j-1. -< * -< do k=i+1,j-1 -< do l=1,3 -< gvdwpp(l,k)=gvdwpp(l,k)+ggg(l) -< enddo -< enddo -< endif -< enddo ! j -< enddo ! i -< return -< end -< C----------------------------------------------------------------------------- -< subroutine escp_long(evdw2,evdw2_14) -< C -< C This subroutine calculates the excluded-volume interaction energy between -< C peptide-group centers and side chains and its gradient in virtual-bond and -< C side-chain vectors. -< C -< implicit real*8 (a-h,o-z) -< include 'DIMENSIONS' -< include 'COMMON.GEO' -< include 'COMMON.VAR' -< include 'COMMON.LOCAL' -< include 'COMMON.CHAIN' -< include 'COMMON.DERIV' -< include 'COMMON.INTERACT' -< include 'COMMON.FFIELD' -< include 'COMMON.IOUNITS' -< include 'COMMON.CONTROL' ---- -> include 'COMMON.IOUNITS' -> include 'COMMON.CONTROL' -2294a3176 -> r0_scp=4.5d0 -2315,2332c3197,3207 -< rrij=1.0D0/(xj*xj+yj*yj+zj*zj) -< -< sss=sscale(1.0d0/(dsqrt(rrij)*rscp(itypj,iteli))) -< -< if (sss.lt.1.0d0) then -< -< fac=rrij**expon2 -< e1=fac*fac*aad(itypj,iteli) -< e2=fac*bad(itypj,iteli) -< if (iabs(j-i) .le. 2) then -< e1=scal14*e1 -< e2=scal14*e2 -< evdw2_14=evdw2_14+(e1+e2)*(1.0d0-sss) -< endif -< evdwij=e1+e2 -< evdw2=evdw2+evdwij*(1.0d0-sss) -< if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -< & 'evdw2',i,j,evdwij ---- -> rij=xj*xj+yj*yj+zj*zj -> r0ij=r0_scp -> r0ijsq=r0ij*r0ij -> if (rij.lt.r0ijsq) then -> evdwij=0.25d0*(rij-r0ijsq)**2 -> fac=rij-r0ijsq -> else -> evdwij=0.0d0 -> fac=0.0d0 -> endif -> evdw2=evdw2+evdwij -2336,2341c3211,3215 -< fac=-(evdwij+e1)*rrij*(1.0d0-sss) -< ggg(1)=xj*fac -< ggg(2)=yj*fac -< ggg(3)=zj*fac -< if (j.lt.i) then -< cd write (iout,*) 'j ggg(1)=xj*fac -> ggg(2)=yj*fac -> ggg(3)=zj*fac -> if (j.lt.i) then -> cd write (iout,*) 'j c do k=1,3 -2345,2353c3219,3221 -< c enddo -< else -< cd write (iout,*) 'j>i' -< do k=1,3 -< ggg(k)=-ggg(k) -< C Uncomment following line for SC-p interactions -< c gradx_scp(k,j)=gradx_scp(k,j)-ggg(k) -< enddo -< endif ---- -> c enddo -> else -> cd write (iout,*) 'j>i' -2355c3223,3225 -< gvdwc_scp(k,i)=gvdwc_scp(k,i)-0.5D0*ggg(k) ---- -> ggg(k)=-ggg(k) -> C Uncomment following line for SC-p interactions -> c gradx_scp(k,j)=gradx_scp(k,j)-ggg(k) -2357,2358c3227,3232 -< kstart=min0(i+1,j) -< kend=max0(i-1,j-1) ---- -> endif -> do k=1,3 -> gvdwc_scp(k,i)=gvdwc_scp(k,i)-0.5D0*ggg(k) -> enddo -> kstart=min0(i+1,j) -> kend=max0(i-1,j-1) -2361,2364c3235,3237 -< do k=kstart,kend -< do l=1,3 -< gvdwc_scp(l,k)=gvdwc_scp(l,k)-ggg(l) -< enddo ---- -> do k=kstart,kend -> do l=1,3 -> gvdwc_scp(l,k)=gvdwc_scp(l,k)-ggg(l) -2366,2368c3239 -< -< endif -< ---- -> enddo -2373,2387d3243 -< do i=1,nct -< do j=1,3 -< gvdwc_scp(j,i)=expon*gvdwc_scp(j,i) -< gradx_scp(j,i)=expon*gradx_scp(j,i) -< enddo -< enddo -< C****************************************************************************** -< C -< C N O T E !!! -< C -< C To save time the factor EXPON has been extracted from ALL components -< C of GVDWC and GRADX. Remember to multiply them by this factor before further -< C use! -< C -< C****************************************************************************** -2391c3247 -< subroutine escp_short(evdw2,evdw2_14) ---- -> subroutine escp(evdw2,evdw2_14) -2432,2448c3288,3299 -< -< sss=sscale(1.0d0/(dsqrt(rrij)*rscp(itypj,iteli))) -< -< if (sss.gt.0.0d0) then -< -< fac=rrij**expon2 -< e1=fac*fac*aad(itypj,iteli) -< e2=fac*bad(itypj,iteli) -< if (iabs(j-i) .le. 2) then -< e1=scal14*e1 -< e2=scal14*e2 -< evdw2_14=evdw2_14+(e1+e2)*sss -< endif -< evdwij=e1+e2 -< evdw2=evdw2+evdwij*sss -< if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -< & 'evdw2',i,j,evdwij ---- -> fac=rrij**expon2 -> e1=fac*fac*aad(itypj,iteli) -> e2=fac*bad(itypj,iteli) -> if (iabs(j-i) .le. 2) then -> e1=scal14*e1 -> e2=scal14*e2 -> evdw2_14=evdw2_14+e1+e2 -> endif -> evdwij=e1+e2 -> evdw2=evdw2+evdwij -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'evdw2',i,j,evdwij -2452,2457c3303,3308 -< fac=-(evdwij+e1)*rrij*sss -< ggg(1)=xj*fac -< ggg(2)=yj*fac -< ggg(3)=zj*fac -< if (j.lt.i) then -< cd write (iout,*) 'j fac=-(evdwij+e1)*rrij -> ggg(1)=xj*fac -> ggg(2)=yj*fac -> ggg(3)=zj*fac -> if (j.lt.i) then -> cd write (iout,*) 'j c do k=1,3 -2461,2469c3312,3314 -< c enddo -< else -< cd write (iout,*) 'j>i' -< do k=1,3 -< ggg(k)=-ggg(k) -< C Uncomment following line for SC-p interactions -< c gradx_scp(k,j)=gradx_scp(k,j)-ggg(k) -< enddo -< endif ---- -> c enddo -> else -> cd write (iout,*) 'j>i' -2471c3316,3318 -< gvdwc_scp(k,i)=gvdwc_scp(k,i)-0.5D0*ggg(k) ---- -> ggg(k)=-ggg(k) -> C Uncomment following line for SC-p interactions -> c gradx_scp(k,j)=gradx_scp(k,j)-ggg(k) -2473,2474c3320,3325 -< kstart=min0(i+1,j) -< kend=max0(i-1,j-1) ---- -> endif -> do k=1,3 -> gvdwc_scp(k,i)=gvdwc_scp(k,i)-0.5D0*ggg(k) -> enddo -> kstart=min0(i+1,j) -> kend=max0(i-1,j-1) -2477,2480c3328,3330 -< do k=kstart,kend -< do l=1,3 -< gvdwc_scp(l,k)=gvdwc_scp(l,k)-ggg(l) -< enddo ---- -> do k=kstart,kend -> do l=1,3 -> gvdwc_scp(l,k)=gvdwc_scp(l,k)-ggg(l) -2482,2484c3332 -< -< endif -< ---- -> enddo -2505a3354,7899 -> C-------------------------------------------------------------------------- -> subroutine edis(ehpb) -> C -> C Evaluate bridge-strain energy and its gradient in virtual-bond and SC vectors. -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.SBRIDGE' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.VAR' -> include 'COMMON.INTERACT' -> dimension ggg(3) -> ehpb=0.0D0 -> cd print *,'edis: nhpb=',nhpb,' fbr=',fbr -> cd print *,'link_start=',link_start,' link_end=',link_end -> if (link_end.eq.0) return -> do i=link_start,link_end -> C If ihpb(i) and jhpb(i) > NRES, this is a SC-SC distance, otherwise a -> C CA-CA distance used in regularization of structure. -> ii=ihpb(i) -> jj=jhpb(i) -> C iii and jjj point to the residues for which the distance is assigned. -> if (ii.gt.nres) then -> iii=ii-nres -> jjj=jj-nres -> else -> iii=ii -> jjj=jj -> endif -> C 24/11/03 AL: SS bridges handled separately because of introducing a specific -> C distance and angle dependent SS bond potential. -> if (ii.gt.nres .and. itype(iii).eq.1 .and. itype(jjj).eq.1) then -> call ssbond_ene(iii,jjj,eij) -> ehpb=ehpb+2*eij -> else -> C Calculate the distance between the two points and its difference from the -> C target distance. -> dd=dist(ii,jj) -> rdis=dd-dhpb(i) -> C Get the force constant corresponding to this distance. -> waga=forcon(i) -> C Calculate the contribution to energy. -> ehpb=ehpb+waga*rdis*rdis -> C -> C Evaluate gradient. -> C -> fac=waga*rdis/dd -> cd print *,'i=',i,' ii=',ii,' jj=',jj,' dhpb=',dhpb(i),' dd=',dd, -> cd & ' waga=',waga,' fac=',fac -> do j=1,3 -> ggg(j)=fac*(c(j,jj)-c(j,ii)) -> enddo -> cd print '(i3,3(1pe14.5))',i,(ggg(j),j=1,3) -> C If this is a SC-SC distance, we need to calculate the contributions to the -> C Cartesian gradient in the SC vectors (ghpbx). -> if (iii.lt.ii) then -> do j=1,3 -> ghpbx(j,iii)=ghpbx(j,iii)-ggg(j) -> ghpbx(j,jjj)=ghpbx(j,jjj)+ggg(j) -> enddo -> endif -> do j=iii,jjj-1 -> do k=1,3 -> ghpbc(k,j)=ghpbc(k,j)+ggg(k) -> enddo -> enddo -> endif -> enddo -> ehpb=0.5D0*ehpb -> return -> end -> C-------------------------------------------------------------------------- -> subroutine ssbond_ene(i,j,eij) -> C -> C Calculate the distance and angle dependent SS-bond potential energy -> C using a free-energy function derived based on RHF/6-31G** ab initio -> C calculations of diethyl disulfide. -> C -> C A. Liwo and U. Kozlowska, 11/24/03 -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.SBRIDGE' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.LOCAL' -> include 'COMMON.INTERACT' -> include 'COMMON.VAR' -> include 'COMMON.IOUNITS' -> double precision erij(3),dcosom1(3),dcosom2(3),gg(3) -> itypi=itype(i) -> xi=c(1,nres+i) -> yi=c(2,nres+i) -> zi=c(3,nres+i) -> dxi=dc_norm(1,nres+i) -> dyi=dc_norm(2,nres+i) -> dzi=dc_norm(3,nres+i) -> dsci_inv=dsc_inv(itypi) -> itypj=itype(j) -> dscj_inv=dsc_inv(itypj) -> xj=c(1,nres+j)-xi -> yj=c(2,nres+j)-yi -> zj=c(3,nres+j)-zi -> dxj=dc_norm(1,nres+j) -> dyj=dc_norm(2,nres+j) -> dzj=dc_norm(3,nres+j) -> rrij=1.0D0/(xj*xj+yj*yj+zj*zj) -> rij=dsqrt(rrij) -> erij(1)=xj*rij -> erij(2)=yj*rij -> erij(3)=zj*rij -> om1=dxi*erij(1)+dyi*erij(2)+dzi*erij(3) -> om2=dxj*erij(1)+dyj*erij(2)+dzj*erij(3) -> om12=dxi*dxj+dyi*dyj+dzi*dzj -> do k=1,3 -> dcosom1(k)=rij*(dc_norm(k,nres+i)-om1*erij(k)) -> dcosom2(k)=rij*(dc_norm(k,nres+j)-om2*erij(k)) -> enddo -> rij=1.0d0/rij -> deltad=rij-d0cm -> deltat1=1.0d0-om1 -> deltat2=1.0d0+om2 -> deltat12=om2-om1+2.0d0 -> cosphi=om12-om1*om2 -> eij=akcm*deltad*deltad+akth*(deltat1*deltat1+deltat2*deltat2) -> & +akct*deltad*deltat12 -> & +v1ss*cosphi+v2ss*cosphi*cosphi+v3ss*cosphi*cosphi*cosphi -> c write(iout,*) i,j,"rij",rij,"d0cm",d0cm," akcm",akcm," akth",akth, -> c & " akct",akct," deltad",deltad," deltat",deltat1,deltat2, -> c & " deltat12",deltat12," eij",eij -> ed=2*akcm*deltad+akct*deltat12 -> pom1=akct*deltad -> pom2=v1ss+2*v2ss*cosphi+3*v3ss*cosphi*cosphi -> eom1=-2*akth*deltat1-pom1-om2*pom2 -> eom2= 2*akth*deltat2+pom1-om1*pom2 -> eom12=pom2 -> do k=1,3 -> gg(k)=ed*erij(k)+eom1*dcosom1(k)+eom2*dcosom2(k) -> enddo -> do k=1,3 -> ghpbx(k,i)=ghpbx(k,i)-gg(k) -> & +(eom12*dc_norm(k,nres+j)+eom1*erij(k))*dsci_inv -> ghpbx(k,j)=ghpbx(k,j)+gg(k) -> & +(eom12*dc_norm(k,nres+i)+eom2*erij(k))*dscj_inv -> enddo -> C -> C Calculate the components of the gradient in DC and X -> C -> do k=i,j-1 -> do l=1,3 -> ghpbc(l,k)=ghpbc(l,k)+gg(l) -> enddo -> enddo -> return -> end -> C-------------------------------------------------------------------------- -> subroutine ebond(estr) -> c -> c Evaluate the energy of stretching of the CA-CA and CA-SC virtual bonds -> c -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.LOCAL' -> include 'COMMON.GEO' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.VAR' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> include 'COMMON.SETUP' -> double precision u(3),ud(3) -> estr=0.0d0 -> do i=ibondp_start,ibondp_end -> diff = vbld(i)-vbldp0 -> c write (iout,*) i,vbld(i),vbldp0,diff,AKP*diff*diff -> estr=estr+diff*diff -> do j=1,3 -> gradb(j,i-1)=AKP*diff*dc(j,i-1)/vbld(i) -> enddo -> c write (iout,'(i5,3f10.5)') i,(gradb(j,i-1),j=1,3) -> enddo -> estr=0.5d0*AKP*estr -> c -> c 09/18/07 AL: multimodal bond potential based on AM1 CA-SC PMF's included -> c -> do i=ibond_start,ibond_end -> iti=itype(i) -> if (iti.ne.10) then -> nbi=nbondterm(iti) -> if (nbi.eq.1) then -> diff=vbld(i+nres)-vbldsc0(1,iti) -> c write (iout,*) i,iti,vbld(i+nres),vbldsc0(1,iti),diff, -> c & AKSC(1,iti),AKSC(1,iti)*diff*diff -> estr=estr+0.5d0*AKSC(1,iti)*diff*diff -> do j=1,3 -> gradbx(j,i)=AKSC(1,iti)*diff*dc(j,i+nres)/vbld(i+nres) -> enddo -> else -> do j=1,nbi -> diff=vbld(i+nres)-vbldsc0(j,iti) -> ud(j)=aksc(j,iti)*diff -> u(j)=abond0(j,iti)+0.5d0*ud(j)*diff -> enddo -> uprod=u(1) -> do j=2,nbi -> uprod=uprod*u(j) -> enddo -> usum=0.0d0 -> usumsqder=0.0d0 -> do j=1,nbi -> uprod1=1.0d0 -> uprod2=1.0d0 -> do k=1,nbi -> if (k.ne.j) then -> uprod1=uprod1*u(k) -> uprod2=uprod2*u(k)*u(k) -> endif -> enddo -> usum=usum+uprod1 -> usumsqder=usumsqder+ud(j)*uprod2 -> enddo -> estr=estr+uprod/usum -> do j=1,3 -> gradbx(j,i)=usumsqder/(usum*usum)*dc(j,i+nres)/vbld(i+nres) -> enddo -> endif -> endif -> enddo -> return -> end -> #ifdef CRYST_THETA -> C-------------------------------------------------------------------------- -> subroutine ebend(etheta) -> C -> C Evaluate the virtual-bond-angle energy given the virtual-bond dihedral -> C angles gamma and its derivatives in consecutive thetas and gammas. -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.LOCAL' -> include 'COMMON.GEO' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.VAR' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> common /calcthet/ term1,term2,termm,diffak,ratak, -> & ak,aktc,termpre,termexp,sigc,sig0i,time11,time12,sigcsq, -> & delthe0,sig0inv,sigtc,sigsqtc,delthec,it -> double precision y(2),z(2) -> delta=0.02d0*pi -> c time11=dexp(-2*time) -> c time12=1.0d0 -> etheta=0.0D0 -> c write (*,'(a,i2)') 'EBEND ICG=',icg -> do i=ithet_start,ithet_end -> C Zero the energy function and its derivative at 0 or pi. -> call splinthet(theta(i),0.5d0*delta,ss,ssd) -> it=itype(i-1) -> if (i.gt.3) then -> #ifdef OSF -> phii=phi(i) -> if (phii.ne.phii) phii=150.0 -> #else -> phii=phi(i) -> #endif -> y(1)=dcos(phii) -> y(2)=dsin(phii) -> else -> y(1)=0.0D0 -> y(2)=0.0D0 -> endif -> if (i.lt.nres) then -> #ifdef OSF -> phii1=phi(i+1) -> if (phii1.ne.phii1) phii1=150.0 -> phii1=pinorm(phii1) -> z(1)=cos(phii1) -> #else -> phii1=phi(i+1) -> z(1)=dcos(phii1) -> #endif -> z(2)=dsin(phii1) -> else -> z(1)=0.0D0 -> z(2)=0.0D0 -> endif -> C Calculate the "mean" value of theta from the part of the distribution -> C dependent on the adjacent virtual-bond-valence angles (gamma1 & gamma2). -> C In following comments this theta will be referred to as t_c. -> thet_pred_mean=0.0d0 -> do k=1,2 -> athetk=athet(k,it) -> bthetk=bthet(k,it) -> thet_pred_mean=thet_pred_mean+athetk*y(k)+bthetk*z(k) -> enddo -> dthett=thet_pred_mean*ssd -> thet_pred_mean=thet_pred_mean*ss+a0thet(it) -> C Derivatives of the "mean" values in gamma1 and gamma2. -> dthetg1=(-athet(1,it)*y(2)+athet(2,it)*y(1))*ss -> dthetg2=(-bthet(1,it)*z(2)+bthet(2,it)*z(1))*ss -> if (theta(i).gt.pi-delta) then -> call theteng(pi-delta,thet_pred_mean,theta0(it),f0,fprim0, -> & E_tc0) -> call mixder(pi-delta,thet_pred_mean,theta0(it),fprim_tc0) -> call theteng(pi,thet_pred_mean,theta0(it),f1,fprim1,E_tc1) -> call spline1(theta(i),pi-delta,delta,f0,f1,fprim0,ethetai, -> & E_theta) -> call spline2(theta(i),pi-delta,delta,E_tc0,E_tc1,fprim_tc0, -> & E_tc) -> else if (theta(i).lt.delta) then -> call theteng(delta,thet_pred_mean,theta0(it),f0,fprim0,E_tc0) -> call theteng(0.0d0,thet_pred_mean,theta0(it),f1,fprim1,E_tc1) -> call spline1(theta(i),delta,-delta,f0,f1,fprim0,ethetai, -> & E_theta) -> call mixder(delta,thet_pred_mean,theta0(it),fprim_tc0) -> call spline2(theta(i),delta,-delta,E_tc0,E_tc1,fprim_tc0, -> & E_tc) -> else -> call theteng(theta(i),thet_pred_mean,theta0(it),ethetai, -> & E_theta,E_tc) -> endif -> etheta=etheta+ethetai -> if (energy_dec) write (iout,'(a6,i5,0pf7.3)') -> & 'ebend',i,ethetai -> if (i.gt.3) gloc(i-3,icg)=gloc(i-3,icg)+wang*E_tc*dthetg1 -> if (i.lt.nres) gloc(i-2,icg)=gloc(i-2,icg)+wang*E_tc*dthetg2 -> gloc(nphi+i-2,icg)=wang*(E_theta+E_tc*dthett) -> enddo -> C Ufff.... We've done all this!!! -> return -> end -> C--------------------------------------------------------------------------- -> subroutine theteng(thetai,thet_pred_mean,theta0i,ethetai,E_theta, -> & E_tc) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.LOCAL' -> include 'COMMON.IOUNITS' -> common /calcthet/ term1,term2,termm,diffak,ratak, -> & ak,aktc,termpre,termexp,sigc,sig0i,time11,time12,sigcsq, -> & delthe0,sig0inv,sigtc,sigsqtc,delthec,it -> C Calculate the contributions to both Gaussian lobes. -> C 6/6/97 - Deform the Gaussians using the factor of 1/(1+time) -> C The "polynomial part" of the "standard deviation" of this part of -> C the distribution. -> sig=polthet(3,it) -> do j=2,0,-1 -> sig=sig*thet_pred_mean+polthet(j,it) -> enddo -> C Derivative of the "interior part" of the "standard deviation of the" -> C gamma-dependent Gaussian lobe in t_c. -> sigtc=3*polthet(3,it) -> do j=2,1,-1 -> sigtc=sigtc*thet_pred_mean+j*polthet(j,it) -> enddo -> sigtc=sig*sigtc -> C Set the parameters of both Gaussian lobes of the distribution. -> C "Standard deviation" of the gamma-dependent Gaussian lobe (sigtc) -> fac=sig*sig+sigc0(it) -> sigcsq=fac+fac -> sigc=1.0D0/sigcsq -> C Following variable (sigsqtc) is -(1/2)d[sigma(t_c)**(-2))]/dt_c -> sigsqtc=-4.0D0*sigcsq*sigtc -> c print *,i,sig,sigtc,sigsqtc -> C Following variable (sigtc) is d[sigma(t_c)]/dt_c -> sigtc=-sigtc/(fac*fac) -> C Following variable is sigma(t_c)**(-2) -> sigcsq=sigcsq*sigcsq -> sig0i=sig0(it) -> sig0inv=1.0D0/sig0i**2 -> delthec=thetai-thet_pred_mean -> delthe0=thetai-theta0i -> term1=-0.5D0*sigcsq*delthec*delthec -> term2=-0.5D0*sig0inv*delthe0*delthe0 -> C Following fuzzy logic is to avoid underflows in dexp and subsequent INFs and -> C NaNs in taking the logarithm. We extract the largest exponent which is added -> C to the energy (this being the log of the distribution) at the end of energy -> C term evaluation for this virtual-bond angle. -> if (term1.gt.term2) then -> termm=term1 -> term2=dexp(term2-termm) -> term1=1.0d0 -> else -> termm=term2 -> term1=dexp(term1-termm) -> term2=1.0d0 -> endif -> C The ratio between the gamma-independent and gamma-dependent lobes of -> C the distribution is a Gaussian function of thet_pred_mean too. -> diffak=gthet(2,it)-thet_pred_mean -> ratak=diffak/gthet(3,it)**2 -> ak=dexp(gthet(1,it)-0.5D0*diffak*ratak) -> C Let's differentiate it in thet_pred_mean NOW. -> aktc=ak*ratak -> C Now put together the distribution terms to make complete distribution. -> termexp=term1+ak*term2 -> termpre=sigc+ak*sig0i -> C Contribution of the bending energy from this theta is just the -log of -> C the sum of the contributions from the two lobes and the pre-exponential -> C factor. Simple enough, isn't it? -> ethetai=(-dlog(termexp)-termm+dlog(termpre)) -> C NOW the derivatives!!! -> C 6/6/97 Take into account the deformation. -> E_theta=(delthec*sigcsq*term1 -> & +ak*delthe0*sig0inv*term2)/termexp -> E_tc=((sigtc+aktc*sig0i)/termpre -> & -((delthec*sigcsq+delthec*delthec*sigsqtc)*term1+ -> & aktc*term2)/termexp) -> return -> end -> c----------------------------------------------------------------------------- -> subroutine mixder(thetai,thet_pred_mean,theta0i,E_tc_t) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.LOCAL' -> include 'COMMON.IOUNITS' -> common /calcthet/ term1,term2,termm,diffak,ratak, -> & ak,aktc,termpre,termexp,sigc,sig0i,time11,time12,sigcsq, -> & delthe0,sig0inv,sigtc,sigsqtc,delthec,it -> delthec=thetai-thet_pred_mean -> delthe0=thetai-theta0i -> C "Thank you" to MAPLE (probably spared one day of hand-differentiation). -> t3 = thetai-thet_pred_mean -> t6 = t3**2 -> t9 = term1 -> t12 = t3*sigcsq -> t14 = t12+t6*sigsqtc -> t16 = 1.0d0 -> t21 = thetai-theta0i -> t23 = t21**2 -> t26 = term2 -> t27 = t21*t26 -> t32 = termexp -> t40 = t32**2 -> E_tc_t = -((sigcsq+2.D0*t3*sigsqtc)*t9-t14*sigcsq*t3*t16*t9 -> & -aktc*sig0inv*t27)/t32+(t14*t9+aktc*t26)/t40 -> & *(-t12*t9-ak*sig0inv*t27) -> return -> end -> #else -> C-------------------------------------------------------------------------- -> subroutine ebend(etheta) -> C -> C Evaluate the virtual-bond-angle energy given the virtual-bond dihedral -> C angles gamma and its derivatives in consecutive thetas and gammas. -> C ab initio-derived potentials from -> c Kozlowska et al., J. Phys.: Condens. Matter 19 (2007) 285203 -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.LOCAL' -> include 'COMMON.GEO' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.VAR' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> double precision coskt(mmaxtheterm),sinkt(mmaxtheterm), -> & cosph1(maxsingle),sinph1(maxsingle),cosph2(maxsingle), -> & sinph2(maxsingle),cosph1ph2(maxdouble,maxdouble), -> & sinph1ph2(maxdouble,maxdouble) -> logical lprn /.false./, lprn1 /.false./ -> etheta=0.0D0 -> do i=ithet_start,ithet_end -> dethetai=0.0d0 -> dephii=0.0d0 -> dephii1=0.0d0 -> theti2=0.5d0*theta(i) -> ityp2=ithetyp(itype(i-1)) -> do k=1,nntheterm -> coskt(k)=dcos(k*theti2) -> sinkt(k)=dsin(k*theti2) -> enddo -> if (i.gt.3) then -> #ifdef OSF -> phii=phi(i) -> if (phii.ne.phii) phii=150.0 -> #else -> phii=phi(i) -> #endif -> ityp1=ithetyp(itype(i-2)) -> do k=1,nsingle -> cosph1(k)=dcos(k*phii) -> sinph1(k)=dsin(k*phii) -> enddo -> else -> phii=0.0d0 -> ityp1=nthetyp+1 -> do k=1,nsingle -> cosph1(k)=0.0d0 -> sinph1(k)=0.0d0 -> enddo -> endif -> if (i.lt.nres) then -> #ifdef OSF -> phii1=phi(i+1) -> if (phii1.ne.phii1) phii1=150.0 -> phii1=pinorm(phii1) -> #else -> phii1=phi(i+1) -> #endif -> ityp3=ithetyp(itype(i)) -> do k=1,nsingle -> cosph2(k)=dcos(k*phii1) -> sinph2(k)=dsin(k*phii1) -> enddo -> else -> phii1=0.0d0 -> ityp3=nthetyp+1 -> do k=1,nsingle -> cosph2(k)=0.0d0 -> sinph2(k)=0.0d0 -> enddo -> endif -> ethetai=aa0thet(ityp1,ityp2,ityp3) -> do k=1,ndouble -> do l=1,k-1 -> ccl=cosph1(l)*cosph2(k-l) -> ssl=sinph1(l)*sinph2(k-l) -> scl=sinph1(l)*cosph2(k-l) -> csl=cosph1(l)*sinph2(k-l) -> cosph1ph2(l,k)=ccl-ssl -> cosph1ph2(k,l)=ccl+ssl -> sinph1ph2(l,k)=scl+csl -> sinph1ph2(k,l)=scl-csl -> enddo -> enddo -> if (lprn) then -> write (iout,*) "i",i," ityp1",ityp1," ityp2",ityp2, -> & " ityp3",ityp3," theti2",theti2," phii",phii," phii1",phii1 -> write (iout,*) "coskt and sinkt" -> do k=1,nntheterm -> write (iout,*) k,coskt(k),sinkt(k) -> enddo -> endif -> do k=1,ntheterm -> ethetai=ethetai+aathet(k,ityp1,ityp2,ityp3)*sinkt(k) -> dethetai=dethetai+0.5d0*k*aathet(k,ityp1,ityp2,ityp3) -> & *coskt(k) -> if (lprn) -> & write (iout,*) "k",k," aathet",aathet(k,ityp1,ityp2,ityp3), -> & " ethetai",ethetai -> enddo -> if (lprn) then -> write (iout,*) "cosph and sinph" -> do k=1,nsingle -> write (iout,*) k,cosph1(k),sinph1(k),cosph2(k),sinph2(k) -> enddo -> write (iout,*) "cosph1ph2 and sinph2ph2" -> do k=2,ndouble -> do l=1,k-1 -> write (iout,*) l,k,cosph1ph2(l,k),cosph1ph2(k,l), -> & sinph1ph2(l,k),sinph1ph2(k,l) -> enddo -> enddo -> write(iout,*) "ethetai",ethetai -> endif -> do m=1,ntheterm2 -> do k=1,nsingle -> aux=bbthet(k,m,ityp1,ityp2,ityp3)*cosph1(k) -> & +ccthet(k,m,ityp1,ityp2,ityp3)*sinph1(k) -> & +ddthet(k,m,ityp1,ityp2,ityp3)*cosph2(k) -> & +eethet(k,m,ityp1,ityp2,ityp3)*sinph2(k) -> ethetai=ethetai+sinkt(m)*aux -> dethetai=dethetai+0.5d0*m*aux*coskt(m) -> dephii=dephii+k*sinkt(m)*( -> & ccthet(k,m,ityp1,ityp2,ityp3)*cosph1(k)- -> & bbthet(k,m,ityp1,ityp2,ityp3)*sinph1(k)) -> dephii1=dephii1+k*sinkt(m)*( -> & eethet(k,m,ityp1,ityp2,ityp3)*cosph2(k)- -> & ddthet(k,m,ityp1,ityp2,ityp3)*sinph2(k)) -> if (lprn) -> & write (iout,*) "m",m," k",k," bbthet", -> & bbthet(k,m,ityp1,ityp2,ityp3)," ccthet", -> & ccthet(k,m,ityp1,ityp2,ityp3)," ddthet", -> & ddthet(k,m,ityp1,ityp2,ityp3)," eethet", -> & eethet(k,m,ityp1,ityp2,ityp3)," ethetai",ethetai -> enddo -> enddo -> if (lprn) -> & write(iout,*) "ethetai",ethetai -> do m=1,ntheterm3 -> do k=2,ndouble -> do l=1,k-1 -> aux=ffthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)+ -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)+ -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l) -> ethetai=ethetai+sinkt(m)*aux -> dethetai=dethetai+0.5d0*m*coskt(m)*aux -> dephii=dephii+l*sinkt(m)*( -> & -ffthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)- -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)+ -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)) -> dephii1=dephii1+(k-l)*sinkt(m)*( -> & -ffthet(l,k,m,ityp1,ityp2,ityp3)*sinph1ph2(l,k)+ -> & ffthet(k,l,m,ityp1,ityp2,ityp3)*sinph1ph2(k,l)+ -> & ggthet(l,k,m,ityp1,ityp2,ityp3)*cosph1ph2(l,k)- -> & ggthet(k,l,m,ityp1,ityp2,ityp3)*cosph1ph2(k,l)) -> if (lprn) then -> write (iout,*) "m",m," k",k," l",l," ffthet", -> & ffthet(l,k,m,ityp1,ityp2,ityp3), -> & ffthet(k,l,m,ityp1,ityp2,ityp3)," ggthet", -> & ggthet(l,k,m,ityp1,ityp2,ityp3), -> & ggthet(k,l,m,ityp1,ityp2,ityp3)," ethetai",ethetai -> write (iout,*) cosph1ph2(l,k)*sinkt(m), -> & cosph1ph2(k,l)*sinkt(m), -> & sinph1ph2(l,k)*sinkt(m),sinph1ph2(k,l)*sinkt(m) -> endif -> enddo -> enddo -> enddo -> 10 continue -> if (lprn1) write (iout,'(i2,3f8.1,9h ethetai ,f10.5)') -> & i,theta(i)*rad2deg,phii*rad2deg, -> & phii1*rad2deg,ethetai -> etheta=etheta+ethetai -> if (i.gt.3) gloc(i-3,icg)=gloc(i-3,icg)+wang*dephii -> if (i.lt.nres) gloc(i-2,icg)=gloc(i-2,icg)+wang*dephii1 -> gloc(nphi+i-2,icg)=wang*dethetai -> enddo -> return -> end -> #endif -> #ifdef CRYST_SC -> c----------------------------------------------------------------------------- -> subroutine esc(escloc) -> C Calculate the local energy of a side chain and its derivatives in the -> C corresponding virtual-bond valence angles THETA and the spherical angles -> C ALPHA and OMEGA. -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.VAR' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> double precision x(3),dersc(3),xemp(3),dersc0(3),dersc1(3), -> & ddersc0(3),ddummy(3),xtemp(3),temp(3) -> common /sccalc/ time11,time12,time112,theti,it,nlobit -> delta=0.02d0*pi -> escloc=0.0D0 -> c write (iout,'(a)') 'ESC' -> do i=loc_start,loc_end -> it=itype(i) -> if (it.eq.10) goto 1 -> nlobit=nlob(it) -> c print *,'i=',i,' it=',it,' nlobit=',nlobit -> c write (iout,*) 'i=',i,' ssa=',ssa,' ssad=',ssad -> theti=theta(i+1)-pipol -> x(1)=dtan(theti) -> x(2)=alph(i) -> x(3)=omeg(i) -> -> if (x(2).gt.pi-delta) then -> xtemp(1)=x(1) -> xtemp(2)=pi-delta -> xtemp(3)=x(3) -> call enesc(xtemp,escloci0,dersc0,ddersc0,.true.) -> xtemp(2)=pi -> call enesc(xtemp,escloci1,dersc1,ddummy,.false.) -> call spline1(x(2),pi-delta,delta,escloci0,escloci1,dersc0(2), -> & escloci,dersc(2)) -> call spline2(x(2),pi-delta,delta,dersc0(1),dersc1(1), -> & ddersc0(1),dersc(1)) -> call spline2(x(2),pi-delta,delta,dersc0(3),dersc1(3), -> & ddersc0(3),dersc(3)) -> xtemp(2)=pi-delta -> call enesc_bound(xtemp,esclocbi0,dersc0,dersc12,.true.) -> xtemp(2)=pi -> call enesc_bound(xtemp,esclocbi1,dersc1,chuju,.false.) -> call spline1(x(2),pi-delta,delta,esclocbi0,esclocbi1, -> & dersc0(2),esclocbi,dersc02) -> call spline2(x(2),pi-delta,delta,dersc0(1),dersc1(1), -> & dersc12,dersc01) -> call splinthet(x(2),0.5d0*delta,ss,ssd) -> dersc0(1)=dersc01 -> dersc0(2)=dersc02 -> dersc0(3)=0.0d0 -> do k=1,3 -> dersc(k)=ss*dersc(k)+(1.0d0-ss)*dersc0(k) -> enddo -> dersc(2)=dersc(2)+ssd*(escloci-esclocbi) -> c write (iout,*) 'i=',i,x(2)*rad2deg,escloci0,escloci, -> c & esclocbi,ss,ssd -> escloci=ss*escloci+(1.0d0-ss)*esclocbi -> c escloci=esclocbi -> c write (iout,*) escloci -> else if (x(2).lt.delta) then -> xtemp(1)=x(1) -> xtemp(2)=delta -> xtemp(3)=x(3) -> call enesc(xtemp,escloci0,dersc0,ddersc0,.true.) -> xtemp(2)=0.0d0 -> call enesc(xtemp,escloci1,dersc1,ddummy,.false.) -> call spline1(x(2),delta,-delta,escloci0,escloci1,dersc0(2), -> & escloci,dersc(2)) -> call spline2(x(2),delta,-delta,dersc0(1),dersc1(1), -> & ddersc0(1),dersc(1)) -> call spline2(x(2),delta,-delta,dersc0(3),dersc1(3), -> & ddersc0(3),dersc(3)) -> xtemp(2)=delta -> call enesc_bound(xtemp,esclocbi0,dersc0,dersc12,.true.) -> xtemp(2)=0.0d0 -> call enesc_bound(xtemp,esclocbi1,dersc1,chuju,.false.) -> call spline1(x(2),delta,-delta,esclocbi0,esclocbi1, -> & dersc0(2),esclocbi,dersc02) -> call spline2(x(2),delta,-delta,dersc0(1),dersc1(1), -> & dersc12,dersc01) -> dersc0(1)=dersc01 -> dersc0(2)=dersc02 -> dersc0(3)=0.0d0 -> call splinthet(x(2),0.5d0*delta,ss,ssd) -> do k=1,3 -> dersc(k)=ss*dersc(k)+(1.0d0-ss)*dersc0(k) -> enddo -> dersc(2)=dersc(2)+ssd*(escloci-esclocbi) -> c write (iout,*) 'i=',i,x(2)*rad2deg,escloci0,escloci, -> c & esclocbi,ss,ssd -> escloci=ss*escloci+(1.0d0-ss)*esclocbi -> c write (iout,*) escloci -> else -> call enesc(x,escloci,dersc,ddummy,.false.) -> endif -> -> escloc=escloc+escloci -> if (energy_dec) write (iout,'(a6,i5,0pf7.3)') -> & 'escloc',i,escloci -> c write (iout,*) 'i=',i,' escloci=',escloci,' dersc=',dersc -> -> gloc(nphi+i-1,icg)=gloc(nphi+i-1,icg)+ -> & wscloc*dersc(1) -> gloc(ialph(i,1),icg)=wscloc*dersc(2) -> gloc(ialph(i,1)+nside,icg)=wscloc*dersc(3) -> 1 continue -> enddo -> return -> end -> C--------------------------------------------------------------------------- -> subroutine enesc(x,escloci,dersc,ddersc,mixed) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.IOUNITS' -> common /sccalc/ time11,time12,time112,theti,it,nlobit -> double precision x(3),z(3),Ax(3,maxlob,-1:1),dersc(3),ddersc(3) -> double precision contr(maxlob,-1:1) -> logical mixed -> c write (iout,*) 'it=',it,' nlobit=',nlobit -> escloc_i=0.0D0 -> do j=1,3 -> dersc(j)=0.0D0 -> if (mixed) ddersc(j)=0.0d0 -> enddo -> x3=x(3) -> -> C Because of periodicity of the dependence of the SC energy in omega we have -> C to add up the contributions from x(3)-2*pi, x(3), and x(3+2*pi). -> C To avoid underflows, first compute & store the exponents. -> -> do iii=-1,1 -> -> x(3)=x3+iii*dwapi -> -> do j=1,nlobit -> do k=1,3 -> z(k)=x(k)-censc(k,j,it) -> enddo -> do k=1,3 -> Axk=0.0D0 -> do l=1,3 -> Axk=Axk+gaussc(l,k,j,it)*z(l) -> enddo -> Ax(k,j,iii)=Axk -> enddo -> expfac=0.0D0 -> do k=1,3 -> expfac=expfac+Ax(k,j,iii)*z(k) -> enddo -> contr(j,iii)=expfac -> enddo ! j -> -> enddo ! iii -> -> x(3)=x3 -> C As in the case of ebend, we want to avoid underflows in exponentiation and -> C subsequent NaNs and INFs in energy calculation. -> C Find the largest exponent -> emin=contr(1,-1) -> do iii=-1,1 -> do j=1,nlobit -> if (emin.gt.contr(j,iii)) emin=contr(j,iii) -> enddo -> enddo -> emin=0.5D0*emin -> cd print *,'it=',it,' emin=',emin -> -> C Compute the contribution to SC energy and derivatives -> do iii=-1,1 -> -> do j=1,nlobit -> #ifdef OSF -> adexp=bsc(j,it)-0.5D0*contr(j,iii)+emin -> if(adexp.ne.adexp) adexp=1.0 -> expfac=dexp(adexp) -> #else -> expfac=dexp(bsc(j,it)-0.5D0*contr(j,iii)+emin) -> #endif -> cd print *,'j=',j,' expfac=',expfac -> escloc_i=escloc_i+expfac -> do k=1,3 -> dersc(k)=dersc(k)+Ax(k,j,iii)*expfac -> enddo -> if (mixed) then -> do k=1,3,2 -> ddersc(k)=ddersc(k)+(-Ax(2,j,iii)*Ax(k,j,iii) -> & +gaussc(k,2,j,it))*expfac -> enddo -> endif -> enddo -> -> enddo ! iii -> -> dersc(1)=dersc(1)/cos(theti)**2 -> ddersc(1)=ddersc(1)/cos(theti)**2 -> ddersc(3)=ddersc(3) -> -> escloci=-(dlog(escloc_i)-emin) -> do j=1,3 -> dersc(j)=dersc(j)/escloc_i -> enddo -> if (mixed) then -> do j=1,3,2 -> ddersc(j)=(ddersc(j)/escloc_i+dersc(2)*dersc(j)) -> enddo -> endif -> return -> end -> C------------------------------------------------------------------------------ -> subroutine enesc_bound(x,escloci,dersc,dersc12,mixed) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.IOUNITS' -> common /sccalc/ time11,time12,time112,theti,it,nlobit -> double precision x(3),z(3),Ax(3,maxlob),dersc(3) -> double precision contr(maxlob) -> logical mixed -> -> escloc_i=0.0D0 -> -> do j=1,3 -> dersc(j)=0.0D0 -> enddo -> -> do j=1,nlobit -> do k=1,2 -> z(k)=x(k)-censc(k,j,it) -> enddo -> z(3)=dwapi -> do k=1,3 -> Axk=0.0D0 -> do l=1,3 -> Axk=Axk+gaussc(l,k,j,it)*z(l) -> enddo -> Ax(k,j)=Axk -> enddo -> expfac=0.0D0 -> do k=1,3 -> expfac=expfac+Ax(k,j)*z(k) -> enddo -> contr(j)=expfac -> enddo ! j -> -> C As in the case of ebend, we want to avoid underflows in exponentiation and -> C subsequent NaNs and INFs in energy calculation. -> C Find the largest exponent -> emin=contr(1) -> do j=1,nlobit -> if (emin.gt.contr(j)) emin=contr(j) -> enddo -> emin=0.5D0*emin -> -> C Compute the contribution to SC energy and derivatives -> -> dersc12=0.0d0 -> do j=1,nlobit -> expfac=dexp(bsc(j,it)-0.5D0*contr(j)+emin) -> escloc_i=escloc_i+expfac -> do k=1,2 -> dersc(k)=dersc(k)+Ax(k,j)*expfac -> enddo -> if (mixed) dersc12=dersc12+(-Ax(2,j)*Ax(1,j) -> & +gaussc(1,2,j,it))*expfac -> dersc(3)=0.0d0 -> enddo -> -> dersc(1)=dersc(1)/cos(theti)**2 -> dersc12=dersc12/cos(theti)**2 -> escloci=-(dlog(escloc_i)-emin) -> do j=1,2 -> dersc(j)=dersc(j)/escloc_i -> enddo -> if (mixed) dersc12=(dersc12/escloc_i+dersc(2)*dersc(1)) -> return -> end -> #else -> c---------------------------------------------------------------------------------- -> subroutine esc(escloc) -> C Calculate the local energy of a side chain and its derivatives in the -> C corresponding virtual-bond valence angles THETA and the spherical angles -> C ALPHA and OMEGA derived from AM1 all-atom calculations. -> C added by Urszula Kozlowska. 07/11/2007 -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.VAR' -> include 'COMMON.SCROT' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.IOUNITS' -> include 'COMMON.NAMES' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> include 'COMMON.VECTORS' -> double precision x_prime(3),y_prime(3),z_prime(3) -> & , sumene,dsc_i,dp2_i,x(65), -> & xx,yy,zz,sumene1,sumene2,sumene3,sumene4,s1,s1_6,s2,s2_6, -> & de_dxx,de_dyy,de_dzz,de_dt -> double precision s1_t,s1_6_t,s2_t,s2_6_t -> double precision -> & dXX_Ci1(3),dYY_Ci1(3),dZZ_Ci1(3),dXX_Ci(3), -> & dYY_Ci(3),dZZ_Ci(3),dXX_XYZ(3),dYY_XYZ(3),dZZ_XYZ(3), -> & dt_dCi(3),dt_dCi1(3) -> common /sccalc/ time11,time12,time112,theti,it,nlobit -> delta=0.02d0*pi -> escloc=0.0D0 -> do i=loc_start,loc_end -> costtab(i+1) =dcos(theta(i+1)) -> sinttab(i+1) =dsqrt(1-costtab(i+1)*costtab(i+1)) -> cost2tab(i+1)=dsqrt(0.5d0*(1.0d0+costtab(i+1))) -> sint2tab(i+1)=dsqrt(0.5d0*(1.0d0-costtab(i+1))) -> cosfac2=0.5d0/(1.0d0+costtab(i+1)) -> cosfac=dsqrt(cosfac2) -> sinfac2=0.5d0/(1.0d0-costtab(i+1)) -> sinfac=dsqrt(sinfac2) -> it=itype(i) -> if (it.eq.10) goto 1 -> c -> C Compute the axes of tghe local cartesian coordinates system; store in -> c x_prime, y_prime and z_prime -> c -> do j=1,3 -> x_prime(j) = 0.00 -> y_prime(j) = 0.00 -> z_prime(j) = 0.00 -> enddo -> C write(2,*) "dc_norm", dc_norm(1,i+nres),dc_norm(2,i+nres), -> C & dc_norm(3,i+nres) -> do j = 1,3 -> x_prime(j) = (dc_norm(j,i) - dc_norm(j,i-1))*cosfac -> y_prime(j) = (dc_norm(j,i) + dc_norm(j,i-1))*sinfac -> enddo -> do j = 1,3 -> z_prime(j) = -uz(j,i-1) -> enddo -> c write (2,*) "i",i -> c write (2,*) "x_prime",(x_prime(j),j=1,3) -> c write (2,*) "y_prime",(y_prime(j),j=1,3) -> c write (2,*) "z_prime",(z_prime(j),j=1,3) -> c write (2,*) "xx",scalar(x_prime(1),x_prime(1)), -> c & " xy",scalar(x_prime(1),y_prime(1)), -> c & " xz",scalar(x_prime(1),z_prime(1)), -> c & " yy",scalar(y_prime(1),y_prime(1)), -> c & " yz",scalar(y_prime(1),z_prime(1)), -> c & " zz",scalar(z_prime(1),z_prime(1)) -> c -> C Transform the unit vector of the ith side-chain centroid, dC_norm(*,i), -> C to local coordinate system. Store in xx, yy, zz. -> c -> xx=0.0d0 -> yy=0.0d0 -> zz=0.0d0 -> do j = 1,3 -> xx = xx + x_prime(j)*dc_norm(j,i+nres) -> yy = yy + y_prime(j)*dc_norm(j,i+nres) -> zz = zz + z_prime(j)*dc_norm(j,i+nres) -> enddo -> -> xxtab(i)=xx -> yytab(i)=yy -> zztab(i)=zz -> C -> C Compute the energy of the ith side cbain -> C -> c write (2,*) "xx",xx," yy",yy," zz",zz -> it=itype(i) -> do j = 1,65 -> x(j) = sc_parmin(j,it) -> enddo -> #ifdef CHECK_COORD -> Cc diagnostics - remove later -> xx1 = dcos(alph(2)) -> yy1 = dsin(alph(2))*dcos(omeg(2)) -> zz1 = -dsin(alph(2))*dsin(omeg(2)) -> write(2,'(3f8.1,3f9.3,1x,3f9.3)') -> & alph(2)*rad2deg,omeg(2)*rad2deg,theta(3)*rad2deg,xx,yy,zz, -> & xx1,yy1,zz1 -> C," --- ", xx_w,yy_w,zz_w -> c end diagnostics -> #endif -> sumene1= x(1)+ x(2)*xx+ x(3)*yy+ x(4)*zz+ x(5)*xx**2 -> & + x(6)*yy**2+ x(7)*zz**2+ x(8)*xx*zz+ x(9)*xx*yy -> & + x(10)*yy*zz -> sumene2= x(11) + x(12)*xx + x(13)*yy + x(14)*zz + x(15)*xx**2 -> & + x(16)*yy**2 + x(17)*zz**2 + x(18)*xx*zz + x(19)*xx*yy -> & + x(20)*yy*zz -> sumene3= x(21) +x(22)*xx +x(23)*yy +x(24)*zz +x(25)*xx**2 -> & +x(26)*yy**2 +x(27)*zz**2 +x(28)*xx*zz +x(29)*xx*yy -> & +x(30)*yy*zz +x(31)*xx**3 +x(32)*yy**3 +x(33)*zz**3 -> & +x(34)*(xx**2)*yy +x(35)*(xx**2)*zz +x(36)*(yy**2)*xx -> & +x(37)*(yy**2)*zz +x(38)*(zz**2)*xx +x(39)*(zz**2)*yy -> & +x(40)*xx*yy*zz -> sumene4= x(41) +x(42)*xx +x(43)*yy +x(44)*zz +x(45)*xx**2 -> & +x(46)*yy**2 +x(47)*zz**2 +x(48)*xx*zz +x(49)*xx*yy -> & +x(50)*yy*zz +x(51)*xx**3 +x(52)*yy**3 +x(53)*zz**3 -> & +x(54)*(xx**2)*yy +x(55)*(xx**2)*zz +x(56)*(yy**2)*xx -> & +x(57)*(yy**2)*zz +x(58)*(zz**2)*xx +x(59)*(zz**2)*yy -> & +x(60)*xx*yy*zz -> dsc_i = 0.743d0+x(61) -> dp2_i = 1.9d0+x(62) -> dscp1=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2tab(i+1)+yy*sint2tab(i+1))) -> dscp2=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2tab(i+1)-yy*sint2tab(i+1))) -> s1=(1+x(63))/(0.1d0 + dscp1) -> s1_6=(1+x(64))/(0.1d0 + dscp1**6) -> s2=(1+x(65))/(0.1d0 + dscp2) -> s2_6=(1+x(65))/(0.1d0 + dscp2**6) -> sumene = ( sumene3*sint2tab(i+1) + sumene1)*(s1+s1_6) -> & + (sumene4*cost2tab(i+1) +sumene2)*(s2+s2_6) -> c write(2,'(i2," sumene",7f9.3)') i,sumene1,sumene2,sumene3, -> c & sumene4, -> c & dscp1,dscp2,sumene -> c sumene = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> escloc = escloc + sumene -> c write (2,*) "i",i," escloc",sumene,escloc -> #ifdef DEBUG -> C -> C This section to check the numerical derivatives of the energy of ith side -> C chain in xx, yy, zz, and theta. Use the -DDEBUG compiler option or insert -> C #define DEBUG in the code to turn it on. -> C -> write (2,*) "sumene =",sumene -> aincr=1.0d-7 -> xxsave=xx -> xx=xx+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dxx_num=(sumenep-sumene)/aincr -> xx=xxsave -> write (2,*) "xx+ sumene from enesc=",sumenep -> yysave=yy -> yy=yy+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dyy_num=(sumenep-sumene)/aincr -> yy=yysave -> write (2,*) "yy+ sumene from enesc=",sumenep -> zzsave=zz -> zz=zz+aincr -> write (2,*) xx,yy,zz -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dzz_num=(sumenep-sumene)/aincr -> zz=zzsave -> write (2,*) "zz+ sumene from enesc=",sumenep -> costsave=cost2tab(i+1) -> sintsave=sint2tab(i+1) -> cost2tab(i+1)=dcos(0.5d0*(theta(i+1)+aincr)) -> sint2tab(i+1)=dsin(0.5d0*(theta(i+1)+aincr)) -> sumenep = enesc(x,xx,yy,zz,cost2tab(i+1),sint2tab(i+1)) -> de_dt_num=(sumenep-sumene)/aincr -> write (2,*) " t+ sumene from enesc=",sumenep -> cost2tab(i+1)=costsave -> sint2tab(i+1)=sintsave -> C End of diagnostics section. -> #endif -> C -> C Compute the gradient of esc -> C -> pom_s1=(1.0d0+x(63))/(0.1d0 + dscp1)**2 -> pom_s16=6*(1.0d0+x(64))/(0.1d0 + dscp1**6)**2 -> pom_s2=(1.0d0+x(65))/(0.1d0 + dscp2)**2 -> pom_s26=6*(1.0d0+x(65))/(0.1d0 + dscp2**6)**2 -> pom_dx=dsc_i*dp2_i*cost2tab(i+1) -> pom_dy=dsc_i*dp2_i*sint2tab(i+1) -> pom_dt1=-0.5d0*dsc_i*dp2_i*(xx*sint2tab(i+1)-yy*cost2tab(i+1)) -> pom_dt2=-0.5d0*dsc_i*dp2_i*(xx*sint2tab(i+1)+yy*cost2tab(i+1)) -> pom1=(sumene3*sint2tab(i+1)+sumene1) -> & *(pom_s1/dscp1+pom_s16*dscp1**4) -> pom2=(sumene4*cost2tab(i+1)+sumene2) -> & *(pom_s2/dscp2+pom_s26*dscp2**4) -> sumene1x=x(2)+2*x(5)*xx+x(8)*zz+ x(9)*yy -> sumene3x=x(22)+2*x(25)*xx+x(28)*zz+x(29)*yy+3*x(31)*xx**2 -> & +2*x(34)*xx*yy +2*x(35)*xx*zz +x(36)*(yy**2) +x(38)*(zz**2) -> & +x(40)*yy*zz -> sumene2x=x(12)+2*x(15)*xx+x(18)*zz+ x(19)*yy -> sumene4x=x(42)+2*x(45)*xx +x(48)*zz +x(49)*yy +3*x(51)*xx**2 -> & +2*x(54)*xx*yy+2*x(55)*xx*zz+x(56)*(yy**2)+x(58)*(zz**2) -> & +x(60)*yy*zz -> de_dxx =(sumene1x+sumene3x*sint2tab(i+1))*(s1+s1_6) -> & +(sumene2x+sumene4x*cost2tab(i+1))*(s2+s2_6) -> & +(pom1+pom2)*pom_dx -> #ifdef DEBUG -> write(2,*), "de_dxx = ", de_dxx,de_dxx_num -> #endif -> C -> sumene1y=x(3) + 2*x(6)*yy + x(9)*xx + x(10)*zz -> sumene3y=x(23) +2*x(26)*yy +x(29)*xx +x(30)*zz +3*x(32)*yy**2 -> & +x(34)*(xx**2) +2*x(36)*yy*xx +2*x(37)*yy*zz +x(39)*(zz**2) -> & +x(40)*xx*zz -> sumene2y=x(13) + 2*x(16)*yy + x(19)*xx + x(20)*zz -> sumene4y=x(43)+2*x(46)*yy+x(49)*xx +x(50)*zz -> & +3*x(52)*yy**2+x(54)*xx**2+2*x(56)*yy*xx +2*x(57)*yy*zz -> & +x(59)*zz**2 +x(60)*xx*zz -> de_dyy =(sumene1y+sumene3y*sint2tab(i+1))*(s1+s1_6) -> & +(sumene2y+sumene4y*cost2tab(i+1))*(s2+s2_6) -> & +(pom1-pom2)*pom_dy -> #ifdef DEBUG -> write(2,*), "de_dyy = ", de_dyy,de_dyy_num -> #endif -> C -> de_dzz =(x(24) +2*x(27)*zz +x(28)*xx +x(30)*yy -> & +3*x(33)*zz**2 +x(35)*xx**2 +x(37)*yy**2 +2*x(38)*zz*xx -> & +2*x(39)*zz*yy +x(40)*xx*yy)*sint2tab(i+1)*(s1+s1_6) -> & +(x(4) + 2*x(7)*zz+ x(8)*xx + x(10)*yy)*(s1+s1_6) -> & +(x(44)+2*x(47)*zz +x(48)*xx +x(50)*yy +3*x(53)*zz**2 -> & +x(55)*xx**2 +x(57)*(yy**2)+2*x(58)*zz*xx +2*x(59)*zz*yy -> & +x(60)*xx*yy)*cost2tab(i+1)*(s2+s2_6) -> & + ( x(14) + 2*x(17)*zz+ x(18)*xx + x(20)*yy)*(s2+s2_6) -> #ifdef DEBUG -> write(2,*), "de_dzz = ", de_dzz,de_dzz_num -> #endif -> C -> de_dt = 0.5d0*sumene3*cost2tab(i+1)*(s1+s1_6) -> & -0.5d0*sumene4*sint2tab(i+1)*(s2+s2_6) -> & +pom1*pom_dt1+pom2*pom_dt2 -> #ifdef DEBUG -> write(2,*), "de_dt = ", de_dt,de_dt_num -> #endif -> c -> C -> cossc=scalar(dc_norm(1,i),dc_norm(1,i+nres)) -> cossc1=scalar(dc_norm(1,i-1),dc_norm(1,i+nres)) -> cosfac2xx=cosfac2*xx -> sinfac2yy=sinfac2*yy -> do k = 1,3 -> dt_dCi(k) = -(dc_norm(k,i-1)+costtab(i+1)*dc_norm(k,i))* -> & vbld_inv(i+1) -> dt_dCi1(k)= -(dc_norm(k,i)+costtab(i+1)*dc_norm(k,i-1))* -> & vbld_inv(i) -> pom=(dC_norm(k,i+nres)-cossc*dC_norm(k,i))*vbld_inv(i+1) -> pom1=(dC_norm(k,i+nres)-cossc1*dC_norm(k,i-1))*vbld_inv(i) -> c write (iout,*) "i",i," k",k," pom",pom," pom1",pom1, -> c & " dt_dCi",dt_dCi(k)," dt_dCi1",dt_dCi1(k) -> c write (iout,*) "dC_norm",(dC_norm(j,i),j=1,3), -> c & (dC_norm(j,i-1),j=1,3)," vbld_inv",vbld_inv(i+1),vbld_inv(i) -> dXX_Ci(k)=pom*cosfac-dt_dCi(k)*cosfac2xx -> dXX_Ci1(k)=-pom1*cosfac-dt_dCi1(k)*cosfac2xx -> dYY_Ci(k)=pom*sinfac+dt_dCi(k)*sinfac2yy -> dYY_Ci1(k)=pom1*sinfac+dt_dCi1(k)*sinfac2yy -> dZZ_Ci1(k)=0.0d0 -> dZZ_Ci(k)=0.0d0 -> do j=1,3 -> dZZ_Ci(k)=dZZ_Ci(k)-uzgrad(j,k,2,i-1)*dC_norm(j,i+nres) -> dZZ_Ci1(k)=dZZ_Ci1(k)-uzgrad(j,k,1,i-1)*dC_norm(j,i+nres) -> enddo -> -> dXX_XYZ(k)=vbld_inv(i+nres)*(x_prime(k)-xx*dC_norm(k,i+nres)) -> dYY_XYZ(k)=vbld_inv(i+nres)*(y_prime(k)-yy*dC_norm(k,i+nres)) -> dZZ_XYZ(k)=vbld_inv(i+nres)*(z_prime(k)-zz*dC_norm(k,i+nres)) -> c -> dt_dCi(k) = -dt_dCi(k)/sinttab(i+1) -> dt_dCi1(k)= -dt_dCi1(k)/sinttab(i+1) -> enddo -> -> do k=1,3 -> dXX_Ctab(k,i)=dXX_Ci(k) -> dXX_C1tab(k,i)=dXX_Ci1(k) -> dYY_Ctab(k,i)=dYY_Ci(k) -> dYY_C1tab(k,i)=dYY_Ci1(k) -> dZZ_Ctab(k,i)=dZZ_Ci(k) -> dZZ_C1tab(k,i)=dZZ_Ci1(k) -> dXX_XYZtab(k,i)=dXX_XYZ(k) -> dYY_XYZtab(k,i)=dYY_XYZ(k) -> dZZ_XYZtab(k,i)=dZZ_XYZ(k) -> enddo -> -> do k = 1,3 -> c write (iout,*) "k",k," dxx_ci1",dxx_ci1(k)," dyy_ci1", -> c & dyy_ci1(k)," dzz_ci1",dzz_ci1(k) -> c write (iout,*) "k",k," dxx_ci",dxx_ci(k)," dyy_ci", -> c & dyy_ci(k)," dzz_ci",dzz_ci(k) -> c write (iout,*) "k",k," dt_dci",dt_dci(k)," dt_dci", -> c & dt_dci(k) -> c write (iout,*) "k",k," dxx_XYZ",dxx_XYZ(k)," dyy_XYZ", -> c & dyy_XYZ(k)," dzz_XYZ",dzz_XYZ(k) -> gscloc(k,i-1)=gscloc(k,i-1)+de_dxx*dxx_ci1(k) -> & +de_dyy*dyy_ci1(k)+de_dzz*dzz_ci1(k)+de_dt*dt_dCi1(k) -> gscloc(k,i)=gscloc(k,i)+de_dxx*dxx_Ci(k) -> & +de_dyy*dyy_Ci(k)+de_dzz*dzz_Ci(k)+de_dt*dt_dCi(k) -> gsclocx(k,i)= de_dxx*dxx_XYZ(k) -> & +de_dyy*dyy_XYZ(k)+de_dzz*dzz_XYZ(k) -> enddo -> c write(iout,*) "ENERGY GRAD = ", (gscloc(k,i-1),k=1,3), -> c & (gscloc(k,i),k=1,3),(gsclocx(k,i),k=1,3) -> -> C to check gradient call subroutine check_grad -> -> 1 continue -> enddo -> return -> end -> c------------------------------------------------------------------------------ -> double precision function enesc(x,xx,yy,zz,cost2,sint2) -> implicit none -> double precision x(65),xx,yy,zz,cost2,sint2,sumene1,sumene2, -> & sumene3,sumene4,sumene,dsc_i,dp2_i,dscp1,dscp2,s1,s1_6,s2,s2_6 -> sumene1= x(1)+ x(2)*xx+ x(3)*yy+ x(4)*zz+ x(5)*xx**2 -> & + x(6)*yy**2+ x(7)*zz**2+ x(8)*xx*zz+ x(9)*xx*yy -> & + x(10)*yy*zz -> sumene2= x(11) + x(12)*xx + x(13)*yy + x(14)*zz + x(15)*xx**2 -> & + x(16)*yy**2 + x(17)*zz**2 + x(18)*xx*zz + x(19)*xx*yy -> & + x(20)*yy*zz -> sumene3= x(21) +x(22)*xx +x(23)*yy +x(24)*zz +x(25)*xx**2 -> & +x(26)*yy**2 +x(27)*zz**2 +x(28)*xx*zz +x(29)*xx*yy -> & +x(30)*yy*zz +x(31)*xx**3 +x(32)*yy**3 +x(33)*zz**3 -> & +x(34)*(xx**2)*yy +x(35)*(xx**2)*zz +x(36)*(yy**2)*xx -> & +x(37)*(yy**2)*zz +x(38)*(zz**2)*xx +x(39)*(zz**2)*yy -> & +x(40)*xx*yy*zz -> sumene4= x(41) +x(42)*xx +x(43)*yy +x(44)*zz +x(45)*xx**2 -> & +x(46)*yy**2 +x(47)*zz**2 +x(48)*xx*zz +x(49)*xx*yy -> & +x(50)*yy*zz +x(51)*xx**3 +x(52)*yy**3 +x(53)*zz**3 -> & +x(54)*(xx**2)*yy +x(55)*(xx**2)*zz +x(56)*(yy**2)*xx -> & +x(57)*(yy**2)*zz +x(58)*(zz**2)*xx +x(59)*(zz**2)*yy -> & +x(60)*xx*yy*zz -> dsc_i = 0.743d0+x(61) -> dp2_i = 1.9d0+x(62) -> dscp1=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2+yy*sint2)) -> dscp2=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2-yy*sint2)) -> s1=(1+x(63))/(0.1d0 + dscp1) -> s1_6=(1+x(64))/(0.1d0 + dscp1**6) -> s2=(1+x(65))/(0.1d0 + dscp2) -> s2_6=(1+x(65))/(0.1d0 + dscp2**6) -> sumene = ( sumene3*sint2 + sumene1)*(s1+s1_6) -> & + (sumene4*cost2 +sumene2)*(s2+s2_6) -> enesc=sumene -> return -> end -> #endif -> c------------------------------------------------------------------------------ -> subroutine gcont(rij,r0ij,eps0ij,delta,fcont,fprimcont) -> C -> C This procedure calculates two-body contact function g(rij) and its derivative: -> C -> C eps0ij ! x < -1 -> C g(rij) = esp0ij*(-0.9375*x+0.625*x**3-0.1875*x**5) ! -1 =< x =< 1 -> C 0 ! x > 1 -> C -> C where x=(rij-r0ij)/delta -> C -> C rij - interbody distance, r0ij - contact distance, eps0ij - contact energy -> C -> implicit none -> double precision rij,r0ij,eps0ij,fcont,fprimcont -> double precision x,x2,x4,delta -> c delta=0.02D0*r0ij -> c delta=0.2D0*r0ij -> x=(rij-r0ij)/delta -> if (x.lt.-1.0D0) then -> fcont=eps0ij -> fprimcont=0.0D0 -> else if (x.le.1.0D0) then -> x2=x*x -> x4=x2*x2 -> fcont=eps0ij*(x*(-0.9375D0+0.6250D0*x2-0.1875D0*x4)+0.5D0) -> fprimcont=eps0ij * (-0.9375D0+1.8750D0*x2-0.9375D0*x4)/delta -> else -> fcont=0.0D0 -> fprimcont=0.0D0 -> endif -> return -> end -> c------------------------------------------------------------------------------ -> subroutine splinthet(theti,delta,ss,ssder) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> thetup=pi-delta -> thetlow=delta -> if (theti.gt.pipol) then -> call gcont(theti,thetup,1.0d0,delta,ss,ssder) -> else -> call gcont(-theti,-thetlow,1.0d0,delta,ss,ssder) -> ssder=-ssder -> endif -> return -> end -> c------------------------------------------------------------------------------ -> subroutine spline1(x,x0,delta,f0,f1,fprim0,f,fprim) -> implicit none -> double precision x,x0,delta,f0,f1,fprim0,f,fprim -> double precision ksi,ksi2,ksi3,a1,a2,a3 -> a1=fprim0*delta/(f1-f0) -> a2=3.0d0-2.0d0*a1 -> a3=a1-2.0d0 -> ksi=(x-x0)/delta -> ksi2=ksi*ksi -> ksi3=ksi2*ksi -> f=f0+(f1-f0)*ksi*(a1+ksi*(a2+a3*ksi)) -> fprim=(f1-f0)/delta*(a1+ksi*(2*a2+3*ksi*a3)) -> return -> end -> c------------------------------------------------------------------------------ -> subroutine spline2(x,x0,delta,f0x,f1x,fprim0x,fx) -> implicit none -> double precision x,x0,delta,f0x,f1x,fprim0x,fx -> double precision ksi,ksi2,ksi3,a1,a2,a3 -> ksi=(x-x0)/delta -> ksi2=ksi*ksi -> ksi3=ksi2*ksi -> a1=fprim0x*delta -> a2=3*(f1x-f0x)-2*fprim0x*delta -> a3=fprim0x*delta-2*(f1x-f0x) -> fx=f0x+a1*ksi+a2*ksi2+a3*ksi3 -> return -> end -> C----------------------------------------------------------------------------- -> #ifdef CRYST_TOR -> C----------------------------------------------------------------------------- -> subroutine etor(etors,edihcnstr) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.TORSION' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.NAMES' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.TORCNSTR' -> include 'COMMON.CONTROL' -> logical lprn -> C Set lprn=.true. for debugging -> lprn=.false. -> c lprn=.true. -> etors=0.0D0 -> do i=iphi_start,iphi_end -> etors_ii=0.0D0 -> itori=itortyp(itype(i-2)) -> itori1=itortyp(itype(i-1)) -> phii=phi(i) -> gloci=0.0D0 -> C Proline-Proline pair is a special case... -> if (itori.eq.3 .and. itori1.eq.3) then -> if (phii.gt.-dwapi3) then -> cosphi=dcos(3*phii) -> fac=1.0D0/(1.0D0-cosphi) -> etorsi=v1(1,3,3)*fac -> etorsi=etorsi+etorsi -> etors=etors+etorsi-v1(1,3,3) -> if (energy_dec) etors_ii=etors_ii+etorsi-v1(1,3,3) -> gloci=gloci-3*fac*etorsi*dsin(3*phii) -> endif -> do j=1,3 -> v1ij=v1(j+1,itori,itori1) -> v2ij=v2(j+1,itori,itori1) -> cosphi=dcos(j*phii) -> sinphi=dsin(j*phii) -> etors=etors+v1ij*cosphi+v2ij*sinphi+dabs(v1ij)+dabs(v2ij) -> if (energy_dec) etors_ii=etors_ii+ -> & v2ij*sinphi+dabs(v1ij)+dabs(v2ij) -> gloci=gloci+j*(v2ij*cosphi-v1ij*sinphi) -> enddo -> else -> do j=1,nterm_old -> v1ij=v1(j,itori,itori1) -> v2ij=v2(j,itori,itori1) -> cosphi=dcos(j*phii) -> sinphi=dsin(j*phii) -> etors=etors+v1ij*cosphi+v2ij*sinphi+dabs(v1ij)+dabs(v2ij) -> if (energy_dec) etors_ii=etors_ii+ -> & v1ij*cosphi+v2ij*sinphi+dabs(v1ij)+dabs(v2ij) -> gloci=gloci+j*(v2ij*cosphi-v1ij*sinphi) -> enddo -> endif -> if (energy_dec) write (iout,'(a6,i5,0pf7.3)') -> 'etor',i,etors_ii -> if (lprn) -> & write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)') -> & restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1, -> & (v1(j,itori,itori1),j=1,6),(v2(j,itori,itori1),j=1,6) -> gloc(i-3,icg)=gloc(i-3,icg)+wtor*gloci -> c write (iout,*) 'i=',i,' gloc=',gloc(i-3,icg) -> enddo -> ! 6/20/98 - dihedral angle constraints -> edihcnstr=0.0d0 -> do i=1,ndih_constr -> itori=idih_constr(i) -> phii=phi(itori) -> difi=phii-phi0(i) -> if (difi.gt.drange(i)) then -> difi=difi-drange(i) -> edihcnstr=edihcnstr+0.25d0*ftors*difi**4 -> gloc(itori-3,icg)=gloc(itori-3,icg)+ftors*difi**3 -> else if (difi.lt.-drange(i)) then -> difi=difi+drange(i) -> edihcnstr=edihcnstr+0.25d0*ftors*difi**4 -> gloc(itori-3,icg)=gloc(itori-3,icg)+ftors*difi**3 -> endif -> ! write (iout,'(2i5,2f8.3,2e14.5)') i,itori,rad2deg*phii, -> ! & rad2deg*difi,0.25d0*ftors*difi**4,gloc(itori-3,icg) -> enddo -> ! write (iout,*) 'edihcnstr',edihcnstr -> return -> end -> c------------------------------------------------------------------------------ -> subroutine etor_d(etors_d) -> etors_d=0.0d0 -> return -> end -> c---------------------------------------------------------------------------- -> #else -> subroutine etor(etors,edihcnstr) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.TORSION' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.NAMES' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.TORCNSTR' -> include 'COMMON.CONTROL' -> logical lprn -> C Set lprn=.true. for debugging -> lprn=.false. -> c lprn=.true. -> etors=0.0D0 -> do i=iphi_start,iphi_end -> etors_ii=0.0D0 -> itori=itortyp(itype(i-2)) -> itori1=itortyp(itype(i-1)) -> phii=phi(i) -> gloci=0.0D0 -> C Regular cosine and sine terms -> do j=1,nterm(itori,itori1) -> v1ij=v1(j,itori,itori1) -> v2ij=v2(j,itori,itori1) -> cosphi=dcos(j*phii) -> sinphi=dsin(j*phii) -> etors=etors+v1ij*cosphi+v2ij*sinphi -> if (energy_dec) etors_ii=etors_ii+ -> & v1ij*cosphi+v2ij*sinphi -> gloci=gloci+j*(v2ij*cosphi-v1ij*sinphi) -> enddo -> C Lorentz terms -> C v1 -> C E = SUM ----------------------------------- - v1 -> C [v2 cos(phi/2)+v3 sin(phi/2)]^2 + 1 -> C -> cosphi=dcos(0.5d0*phii) -> sinphi=dsin(0.5d0*phii) -> do j=1,nlor(itori,itori1) -> vl1ij=vlor1(j,itori,itori1) -> vl2ij=vlor2(j,itori,itori1) -> vl3ij=vlor3(j,itori,itori1) -> pom=vl2ij*cosphi+vl3ij*sinphi -> pom1=1.0d0/(pom*pom+1.0d0) -> etors=etors+vl1ij*pom1 -> if (energy_dec) etors_ii=etors_ii+ -> & vl1ij*pom1 -> pom=-pom*pom1*pom1 -> gloci=gloci+vl1ij*(vl3ij*cosphi-vl2ij*sinphi)*pom -> enddo -> C Subtract the constant term -> etors=etors-v0(itori,itori1) -> if (energy_dec) write (iout,'(a6,i5,0pf7.3)') -> & 'etor',i,etors_ii-v0(itori,itori1) -> if (lprn) -> & write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)') -> & restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1, -> & (v1(j,itori,itori1),j=1,6),(v2(j,itori,itori1),j=1,6) -> gloc(i-3,icg)=gloc(i-3,icg)+wtor*gloci -> c write (iout,*) 'i=',i,' gloc=',gloc(i-3,icg) -> enddo -> ! 6/20/98 - dihedral angle constraints -> edihcnstr=0.0d0 -> c do i=1,ndih_constr -> do i=idihconstr_start,idihconstr_end -> itori=idih_constr(i) -> phii=phi(itori) -> difi=pinorm(phii-phi0(i)) -> if (difi.gt.drange(i)) then -> difi=difi-drange(i) -> edihcnstr=edihcnstr+0.25d0*ftors*difi**4 -> gloc(itori-3,icg)=gloc(itori-3,icg)+ftors*difi**3 -> else if (difi.lt.-drange(i)) then -> difi=difi+drange(i) -> edihcnstr=edihcnstr+0.25d0*ftors*difi**4 -> gloc(itori-3,icg)=gloc(itori-3,icg)+ftors*difi**3 -> else -> difi=0.0 -> endif -> cd write (iout,'(2i5,4f8.3,2e14.5)') i,itori,rad2deg*phii, -> cd & rad2deg*phi0(i), rad2deg*drange(i), -> cd & rad2deg*difi,0.25d0*ftors*difi**4,gloc(itori-3,icg) -> enddo -> cd write (iout,*) 'edihcnstr',edihcnstr -> return -> end -> c---------------------------------------------------------------------------- -> subroutine etor_d(etors_d) -> C 6/23/01 Compute double torsional energy -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.TORSION' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.NAMES' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.TORCNSTR' -> logical lprn -> C Set lprn=.true. for debugging -> lprn=.false. -> c lprn=.true. -> etors_d=0.0D0 -> do i=iphid_start,iphid_end -> itori=itortyp(itype(i-2)) -> itori1=itortyp(itype(i-1)) -> itori2=itortyp(itype(i)) -> phii=phi(i) -> phii1=phi(i+1) -> gloci1=0.0D0 -> gloci2=0.0D0 -> C Regular cosine and sine terms -> do j=1,ntermd_1(itori,itori1,itori2) -> v1cij=v1c(1,j,itori,itori1,itori2) -> v1sij=v1s(1,j,itori,itori1,itori2) -> v2cij=v1c(2,j,itori,itori1,itori2) -> v2sij=v1s(2,j,itori,itori1,itori2) -> cosphi1=dcos(j*phii) -> sinphi1=dsin(j*phii) -> cosphi2=dcos(j*phii1) -> sinphi2=dsin(j*phii1) -> etors_d=etors_d+v1cij*cosphi1+v1sij*sinphi1+ -> & v2cij*cosphi2+v2sij*sinphi2 -> gloci1=gloci1+j*(v1sij*cosphi1-v1cij*sinphi1) -> gloci2=gloci2+j*(v2sij*cosphi2-v2cij*sinphi2) -> enddo -> do k=2,ntermd_2(itori,itori1,itori2) -> do l=1,k-1 -> v1cdij = v2c(k,l,itori,itori1,itori2) -> v2cdij = v2c(l,k,itori,itori1,itori2) -> v1sdij = v2s(k,l,itori,itori1,itori2) -> v2sdij = v2s(l,k,itori,itori1,itori2) -> cosphi1p2=dcos(l*phii+(k-l)*phii1) -> cosphi1m2=dcos(l*phii-(k-l)*phii1) -> sinphi1p2=dsin(l*phii+(k-l)*phii1) -> sinphi1m2=dsin(l*phii-(k-l)*phii1) -> etors_d=etors_d+v1cdij*cosphi1p2+v2cdij*cosphi1m2+ -> & v1sdij*sinphi1p2+v2sdij*sinphi1m2 -> gloci1=gloci1+l*(v1sdij*cosphi1p2+v2sdij*cosphi1m2 -> & -v1cdij*sinphi1p2-v2cdij*sinphi1m2) -> gloci2=gloci2+(k-l)*(v1sdij*cosphi1p2-v2sdij*cosphi1m2 -> & -v1cdij*sinphi1p2+v2cdij*sinphi1m2) -> enddo -> enddo -> gloc(i-3,icg)=gloc(i-3,icg)+wtor_d*gloci1 -> gloc(i-2,icg)=gloc(i-2,icg)+wtor_d*gloci2 -> enddo -> return -> end -> #endif -> c------------------------------------------------------------------------------ -> subroutine eback_sc_corr(esccor) -> c 7/21/2007 Correlations between the backbone-local and side-chain-local -> c conformational states; temporarily implemented as differences -> c between UNRES torsional potentials (dependent on three types of -> c residues) and the torsional potentials dependent on all 20 types -> c of residues computed from AM1 energy surfaces of terminally-blocked -> c amino-acid residues. -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.LOCAL' -> include 'COMMON.TORSION' -> include 'COMMON.SCCOR' -> include 'COMMON.INTERACT' -> include 'COMMON.DERIV' -> include 'COMMON.CHAIN' -> include 'COMMON.NAMES' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> logical lprn -> C Set lprn=.true. for debugging -> lprn=.false. -> c lprn=.true. -> c write (iout,*) "EBACK_SC_COR",iphi_start,iphi_end,nterm_sccor -> esccor=0.0D0 -> do i=iphi_start,iphi_end -> esccor_ii=0.0D0 -> itori=itype(i-2) -> itori1=itype(i-1) -> phii=phi(i) -> gloci=0.0D0 -> do j=1,nterm_sccor -> v1ij=v1sccor(j,itori,itori1) -> v2ij=v2sccor(j,itori,itori1) -> cosphi=dcos(j*phii) -> sinphi=dsin(j*phii) -> esccor=esccor+v1ij*cosphi+v2ij*sinphi -> gloci=gloci+j*(v2ij*cosphi-v1ij*sinphi) -> enddo -> if (lprn) -> & write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)') -> & restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1, -> & (v1sccor(j,itori,itori1),j=1,6),(v2sccor(j,itori,itori1),j=1,6) -> gsccor_loc(i-3)=gsccor_loc(i-3)+gloci -> enddo -> return -> end -> c---------------------------------------------------------------------------- -> subroutine multibody(ecorr) -> C This subroutine calculates multi-body contributions to energy following -> C the idea of Skolnick et al. If side chains I and J make a contact and -> C at the same time side chains I+1 and J+1 make a contact, an extra -> C contribution equal to sqrt(eps(i,j)*eps(i+1,j+1)) is added. -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> double precision gx(3),gx1(3) -> logical lprn -> -> C Set lprn=.true. for debugging -> lprn=.false. -> -> if (lprn) then -> write (iout,'(a)') 'Contact function values:' -> do i=nnt,nct-2 -> write (iout,'(i2,20(1x,i2,f10.5))') -> & i,(jcont(j,i),facont(j,i),j=1,num_cont(i)) -> enddo -> endif -> ecorr=0.0D0 -> do i=nnt,nct -> do j=1,3 -> gradcorr(j,i)=0.0D0 -> gradxorr(j,i)=0.0D0 -> enddo -> enddo -> do i=nnt,nct-2 -> -> DO ISHIFT = 3,4 -> -> i1=i+ishift -> num_conti=num_cont(i) -> num_conti1=num_cont(i1) -> do jj=1,num_conti -> j=jcont(jj,i) -> do kk=1,num_conti1 -> j1=jcont(kk,i1) -> if (j1.eq.j+ishift .or. j1.eq.j-ishift) then -> cd write(iout,*)'i=',i,' j=',j,' i1=',i1,' j1=',j1, -> cd & ' ishift=',ishift -> C Contacts I--J and I+ISHIFT--J+-ISHIFT1 occur simultaneously. -> C The system gains extra energy. -> ecorr=ecorr+esccorr(i,j,i1,j1,jj,kk) -> endif ! j1==j+-ishift -> enddo ! kk -> enddo ! jj -> -> ENDDO ! ISHIFT -> -> enddo ! i -> return -> end -> c------------------------------------------------------------------------------ -> double precision function esccorr(i,j,k,l,jj,kk) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> double precision gx(3),gx1(3) -> logical lprn -> lprn=.false. -> eij=facont(jj,i) -> ekl=facont(kk,k) -> cd write (iout,'(4i5,3f10.5)') i,j,k,l,eij,ekl,-eij*ekl -> C Calculate the multi-body contribution to energy. -> C Calculate multi-body contributions to the gradient. -> cd write (iout,'(2(2i3,3f10.5))')i,j,(gacont(m,jj,i),m=1,3), -> cd & k,l,(gacont(m,kk,k),m=1,3) -> do m=1,3 -> gx(m) =ekl*gacont(m,jj,i) -> gx1(m)=eij*gacont(m,kk,k) -> gradxorr(m,i)=gradxorr(m,i)-gx(m) -> gradxorr(m,j)=gradxorr(m,j)+gx(m) -> gradxorr(m,k)=gradxorr(m,k)-gx1(m) -> gradxorr(m,l)=gradxorr(m,l)+gx1(m) -> enddo -> do m=i,j-1 -> do ll=1,3 -> gradcorr(ll,m)=gradcorr(ll,m)+gx(ll) -> enddo -> enddo -> do m=k,l-1 -> do ll=1,3 -> gradcorr(ll,m)=gradcorr(ll,m)+gx1(ll) -> enddo -> enddo -> esccorr=-eij*ekl -> return -> end -> c------------------------------------------------------------------------------ -> #ifdef MPI -> subroutine pack_buffer(dimen1,dimen2,atom,indx,buffer) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> integer dimen1,dimen2,atom,indx -> double precision buffer(dimen1,dimen2) -> double precision zapas -> common /contacts_hb/ zapas(3,maxconts,maxres,8), -> & facont_hb(maxconts,maxres),ees0p(maxconts,maxres), -> & ees0m(maxconts,maxres),d_cont(maxconts,maxres), -> & num_cont_hb(maxres),jcont_hb(maxconts,maxres) -> num_kont=num_cont_hb(atom) -> do i=1,num_kont -> do k=1,8 -> do j=1,3 -> buffer(i,indx+(k-1)*3+j)=zapas(j,i,atom,k) -> enddo ! j -> enddo ! k -> buffer(i,indx+25)=facont_hb(i,atom) -> buffer(i,indx+26)=ees0p(i,atom) -> buffer(i,indx+27)=ees0m(i,atom) -> buffer(i,indx+28)=d_cont(i,atom) -> buffer(i,indx+29)=dfloat(jcont_hb(i,atom)) -> enddo ! i -> buffer(1,indx+30)=dfloat(num_kont) -> return -> end -> c------------------------------------------------------------------------------ -> subroutine unpack_buffer(dimen1,dimen2,atom,indx,buffer) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> integer dimen1,dimen2,atom,indx -> double precision buffer(dimen1,dimen2) -> double precision zapas -> common /contacts_hb/ zapas(3,maxconts,maxres,8), -> & facont_hb(maxconts,maxres),ees0p(maxconts,maxres), -> & ees0m(maxconts,maxres),d_cont(maxconts,maxres), -> & num_cont_hb(maxres),jcont_hb(maxconts,maxres) -> num_kont=buffer(1,indx+30) -> num_kont_old=num_cont_hb(atom) -> num_cont_hb(atom)=num_kont+num_kont_old -> do i=1,num_kont -> ii=i+num_kont_old -> do k=1,8 -> do j=1,3 -> zapas(j,ii,atom,k)=buffer(i,indx+(k-1)*3+j) -> enddo ! j -> enddo ! k -> facont_hb(ii,atom)=buffer(i,indx+25) -> ees0p(ii,atom)=buffer(i,indx+26) -> ees0m(ii,atom)=buffer(i,indx+27) -> d_cont(i,atom)=buffer(i,indx+28) -> jcont_hb(ii,atom)=buffer(i,indx+29) -> enddo ! i -> return -> end -> c------------------------------------------------------------------------------ -> #endif -> subroutine multibody_hb(ecorr,ecorr5,ecorr6,n_corr,n_corr1) -> C This subroutine calculates multi-body contributions to hydrogen-bonding -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> #ifdef MPI -> include "mpif.h" -> parameter (max_cont=maxconts) -> parameter (max_dim=2*(8*3+6)) -> parameter (msglen1=max_cont*max_dim) -> parameter (msglen2=2*msglen1) -> integer source,CorrelType,CorrelID,Error -> double precision buffer(max_cont,max_dim) -> integer status(MPI_STATUS_SIZE) -> #endif -> include 'COMMON.SETUP' -> include 'COMMON.FFIELD' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.CONTROL' -> double precision gx(3),gx1(3),time00 -> logical lprn,ldone -> -> C Set lprn=.true. for debugging -> lprn=.false. -> #ifdef MPI -> n_corr=0 -> n_corr1=0 -> if (nfgtasks.le.1) goto 30 -> if (lprn) then -> write (iout,'(a)') 'Contact function values:' -> do i=nnt,nct-2 -> write (iout,'(2i3,50(1x,i2,f5.2))') -> & i,num_cont_hb(i),(jcont_hb(j,i),facont_hb(j,i), -> & j=1,num_cont_hb(i)) -> enddo -> endif -> C Caution! Following code assumes that electrostatic interactions concerning -> C a given atom are split among at most two processors! -> CorrelType=477 -> CorrelID=fg_rank+1 -> ldone=.false. -> do i=1,max_cont -> do j=1,max_dim -> buffer(i,j)=0.0D0 -> enddo -> enddo -> mm=mod(fg_rank,2) -> c write (*,*) 'MyRank',MyRank,' mm',mm -> if (mm) 20,20,10 -> 10 continue -> c write (*,*) 'Sending: MyRank',MyRank,' mm',mm,' ldone',ldone -> if (fg_rank.gt.0) then -> C Send correlation contributions to the preceding processor -> msglen=msglen1 -> nn=num_cont_hb(iatel_s) -> call pack_buffer(max_cont,max_dim,iatel_s,0,buffer) -> c write (*,*) 'The BUFFER array:' -> c do i=1,nn -> c write (*,'(i2,9(3f8.3,2x))') i,(buffer(i,j),j=1,30) -> c enddo -> if (ielstart(iatel_s).gt.iatel_s+ispp) then -> msglen=msglen2 -> call pack_buffer(max_cont,max_dim,iatel_s+1,30,buffer) -> C Clear the contacts of the atom passed to the neighboring processor -> nn=num_cont_hb(iatel_s+1) -> c do i=1,nn -> c write (*,'(i2,9(3f8.3,2x))') i,(buffer(i,j+30),j=1,30) -> c enddo -> num_cont_hb(iatel_s)=0 -> endif -> cd write (iout,*) 'Processor ',fg_rank,MyRank, -> cd & ' is sending correlation contribution to processor',fg_rank-1, -> cd & ' msglen=',msglen -> c write (*,*) 'Processor ',fg_rank,MyRank, -> c & ' is sending correlation contribution to processor',fg_rank-1, -> c & ' msglen=',msglen,' CorrelType=',CorrelType -> time00=MPI_Wtime() -> call MPI_Send(buffer,msglen,MPI_DOUBLE_PRECISION,fg_rank-1, -> & CorrelType,FG_COMM,IERROR) -> time_sendrecv=time_sendrecv+MPI_Wtime()-time00 -> cd write (iout,*) 'Processor ',fg_rank, -> cd & ' has sent correlation contribution to processor',fg_rank-1, -> cd & ' msglen=',msglen,' CorrelID=',CorrelID -> c write (*,*) 'Processor ',fg_rank, -> c & ' has sent correlation contribution to processor',fg_rank-1, -> c & ' msglen=',msglen,' CorrelID=',CorrelID -> c msglen=msglen1 -> endif ! (fg_rank.gt.0) -> if (ldone) goto 30 -> ldone=.true. -> 20 continue -> c write (*,*) 'Receiving: MyRank',MyRank,' mm',mm,' ldone',ldone -> if (fg_rank.lt.nfgtasks-1) then -> C Receive correlation contributions from the next processor -> msglen=msglen1 -> if (ielend(iatel_e).lt.nct-1) msglen=msglen2 -> cd write (iout,*) 'Processor',fg_rank, -> cd & ' is receiving correlation contribution from processor',fg_rank+1, -> cd & ' msglen=',msglen,' CorrelType=',CorrelType -> c write (*,*) 'Processor',fg_rank, -> c &' is receiving correlation contribution from processor',fg_rank+1, -> c & ' msglen=',msglen,' CorrelType=',CorrelType -> time00=MPI_Wtime() -> nbytes=-1 -> do while (nbytes.le.0) -> call MPI_Probe(fg_rank+1,CorrelType,FG_COMM,status,IERROR) -> call MPI_Get_count(status,MPI_DOUBLE_PRECISION,nbytes,IERROR) -> enddo -> c print *,'Processor',myrank,' msglen',msglen,' nbytes',nbytes -> call MPI_Recv(buffer,nbytes,MPI_DOUBLE_PRECISION, -> & fg_rank+1,CorrelType,FG_COMM,status,IERROR) -> time_sendrecv=time_sendrecv+MPI_Wtime()-time00 -> c write (*,*) 'Processor',fg_rank, -> c &' has received correlation contribution from processor',fg_rank+1, -> c & ' msglen=',msglen,' nbytes=',nbytes -> c write (*,*) 'The received BUFFER array:' -> c do i=1,max_cont -> c write (*,'(i2,9(3f8.3,2x))') i,(buffer(i,j),j=1,60) -> c enddo -> if (msglen.eq.msglen1) then -> call unpack_buffer(max_cont,max_dim,iatel_e+1,0,buffer) -> else if (msglen.eq.msglen2) then -> call unpack_buffer(max_cont,max_dim,iatel_e,0,buffer) -> call unpack_buffer(max_cont,max_dim,iatel_e+1,30,buffer) -> else -> write (iout,*) -> & 'ERROR!!!! message length changed while processing correlations.' -> write (*,*) -> & 'ERROR!!!! message length changed while processing correlations.' -> call MPI_Abort(MPI_COMM_WORLD,Error,IERROR) -> endif ! msglen.eq.msglen1 -> endif ! fg_rank.lt.nfgtasks-1 -> if (ldone) goto 30 -> ldone=.true. -> goto 10 -> 30 continue -> #endif -> if (lprn) then -> write (iout,'(a)') 'Contact function values:' -> do i=nnt,nct-2 -> write (iout,'(2i3,50(1x,i2,f5.2))') -> & i,num_cont_hb(i),(jcont_hb(j,i),facont_hb(j,i), -> & j=1,num_cont_hb(i)) -> enddo -> endif -> ecorr=0.0D0 -> C Remove the loop below after debugging !!! -> do i=nnt,nct -> do j=1,3 -> gradcorr(j,i)=0.0D0 -> gradxorr(j,i)=0.0D0 -> enddo -> enddo -> C Calculate the local-electrostatic correlation terms -> do i=iatel_s,iatel_e+1 -> i1=i+1 -> num_conti=num_cont_hb(i) -> num_conti1=num_cont_hb(i+1) -> do jj=1,num_conti -> j=jcont_hb(jj,i) -> do kk=1,num_conti1 -> j1=jcont_hb(kk,i1) -> c write (iout,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, -> c & ' jj=',jj,' kk=',kk -> if (j1.eq.j+1 .or. j1.eq.j-1) then -> C Contacts I-J and (I+1)-(J+1) or (I+1)-(J-1) occur simultaneously. -> C The system gains extra energy. -> ecorr=ecorr+ehbcorr(i,j,i+1,j1,jj,kk,0.72D0,0.32D0) -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'ecorrh',i,j,ehbcorr(i,j,i+1,j1,jj,kk,0.72D0,0.32D0) -> n_corr=n_corr+1 -> else if (j1.eq.j) then -> C Contacts I-J and I-(J+1) occur simultaneously. -> C The system loses extra energy. -> c ecorr=ecorr+ehbcorr(i,j,i+1,j,jj,kk,0.60D0,-0.40D0) -> endif -> enddo ! kk -> do kk=1,num_conti -> j1=jcont_hb(kk,i) -> c write (iout,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, -> c & ' jj=',jj,' kk=',kk -> if (j1.eq.j+1) then -> C Contacts I-J and (I+1)-J occur simultaneously. -> C The system loses extra energy. -> c ecorr=ecorr+ehbcorr(i,j,i,j+1,jj,kk,0.60D0,-0.40D0) -> endif ! j1==j+1 -> enddo ! kk -> enddo ! jj -> enddo ! i -> return -> end -> c------------------------------------------------------------------------------ -> subroutine multibody_eello(ecorr,ecorr5,ecorr6,eturn6,n_corr, -> & n_corr1) -> C This subroutine calculates multi-body contributions to hydrogen-bonding -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> #ifdef MPI -> include 'mpif.h' -> parameter (max_cont=maxconts) -> parameter (max_dim=2*(8*3+6)) -> c parameter (msglen1=max_cont*max_dim*4) -> parameter (msglen1=max_cont*max_dim/2) -> parameter (msglen2=2*msglen1) -> integer source,CorrelType,CorrelID,Error -> double precision buffer(max_cont,max_dim) -> integer status(MPI_STATUS_SIZE) -> #endif -> include 'COMMON.SETUP' -> include 'COMMON.FFIELD' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.CONTROL' -> double precision gx(3),gx1(3) -> logical lprn,ldone -> C Set lprn=.true. for debugging -> lprn=.false. -> eturn6=0.0d0 -> #ifdef MPI -> n_corr=0 -> n_corr1=0 -> if (fgProcs.le.1) goto 30 -> if (lprn) then -> write (iout,'(a)') 'Contact function values:' -> do i=nnt,nct-2 -> write (iout,'(2i3,50(1x,i2,f5.2))') -> & i,num_cont_hb(i),(jcont_hb(j,i),facont_hb(j,i), -> & j=1,num_cont_hb(i)) -> enddo -> endif -> C Caution! Following code assumes that electrostatic interactions concerning -> C a given atom are split among at most two processors! -> CorrelType=477 -> CorrelID=MyID+1 -> ldone=.false. -> do i=1,max_cont -> do j=1,max_dim -> buffer(i,j)=0.0D0 -> enddo -> enddo -> mm=mod(MyRank,2) -> cd write (iout,*) 'MyRank',MyRank,' mm',mm -> if (mm) 20,20,10 -> 10 continue -> cd write (iout,*) 'Sending: MyRank',MyRank,' mm',mm,' ldone',ldone -> if (MyRank.gt.0) then -> C Send correlation contributions to the preceding processor -> msglen=msglen1 -> nn=num_cont_hb(iatel_s) -> call pack_buffer(max_cont,max_dim,iatel_s,0,buffer) -> cd write (iout,*) 'The BUFFER array:' -> cd do i=1,nn -> cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j),j=1,30) -> cd enddo -> if (ielstart(iatel_s).gt.iatel_s+ispp) then -> msglen=msglen2 -> call pack_buffer(max_cont,max_dim,iatel_s+1,30,buffer) -> C Clear the contacts of the atom passed to the neighboring processor -> nn=num_cont_hb(iatel_s+1) -> cd do i=1,nn -> cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j+30),j=1,30) -> cd enddo -> num_cont_hb(iatel_s)=0 -> endif -> cd write (*,*) 'Processor ',fg_rank,MyRank, -> cd & ' is sending correlation contribution to processor',fg_rank-1, -> cd & ' msglen=',msglen -> cd write (*,*) 'Processor ',MyID,MyRank, -> cd & ' is sending correlation contribution to processor',fg_rank-1, -> cd & ' msglen=',msglen,' CorrelType=',CorrelType -> time00=MPI_Wtime() -> call MPI_Send(buffer,msglen,MPI_DOUBLE_PRECISION,fg_rank-1, -> & CorrelType,FG_COMM,IERROR) -> time_sendrecv=time_sendrecv+MPI_Wtime()-time00 -> cd write (*,*) 'Processor ',fg_rank,MyRank, -> cd & ' has sent correlation contribution to processor',fg_rank-1, -> cd & ' msglen=',msglen,' CorrelID=',CorrelID -> cd write (*,*) 'Processor ',fg_rank, -> cd & ' has sent correlation contribution to processor',fg_rank-1, -> cd & ' msglen=',msglen,' CorrelID=',CorrelID -> msglen=msglen1 -> endif ! (MyRank.gt.0) -> if (ldone) goto 30 -> ldone=.true. -> 20 continue -> cd write (iout,*) 'Receiving: MyRank',MyRank,' mm',mm,' ldone',ldone -> if (fg_rank.lt.nfgtasks-1) then -> C Receive correlation contributions from the next processor -> msglen=msglen1 -> if (ielend(iatel_e).lt.nct-1) msglen=msglen2 -> cd write (iout,*) 'Processor',fg_rank, -> cd & ' is receiving correlation contribution from processor',fg_rank+1, -> cd & ' msglen=',msglen,' CorrelType=',CorrelType -> cd write (*,*) 'Processor',fg_rank, -> cd & ' is receiving correlation contribution from processor',fg_rank+1, -> cd & ' msglen=',msglen,' CorrelType=',CorrelType -> time00=MPI_Wtime() -> nbytes=-1 -> do while (nbytes.le.0) -> call MPI_Probe(fg_rank+1,CorrelType,FG_COMM,status,IERROR) -> call MPI_Get_count(status,MPI_DOUBLE_PRECISION,nbytes,IERROR) -> enddo -> cd print *,'Processor',MyID,' msglen',msglen,' nbytes',nbytes -> call MPI_Recv(buffer,nbytes,MPI_DOUBLE_PRECISION, -> & fg_rank+1,CorrelType,status,IERROR) -> time_sendrecv=time_sendrecv+MPI_Wtime()-time00 -> cd write (iout,*) 'Processor',fg_rank, -> cd & ' has received correlation contribution from processor',fg_rank+1, -> cd & ' msglen=',msglen,' nbytes=',nbytes -> cd write (iout,*) 'The received BUFFER array:' -> cd do i=1,max_cont -> cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j),j=1,52) -> cd enddo -> if (msglen.eq.msglen1) then -> call unpack_buffer(max_cont,max_dim,iatel_e+1,0,buffer) -> else if (msglen.eq.msglen2) then -> call unpack_buffer(max_cont,max_dim,iatel_e,0,buffer) -> call unpack_buffer(max_cont,max_dim,iatel_e+1,30,buffer) -> else -> write (iout,*) -> & 'ERROR!!!! message length changed while processing correlations.' -> write (*,*) -> & 'ERROR!!!! message length changed while processing correlations.' -> call MPI_Abort(MPI_COMM_WORLD,Error,IERROR) -> endif ! msglen.eq.msglen1 -> endif ! fg_rank.lt.nfgtasks-1 -> if (ldone) goto 30 -> ldone=.true. -> goto 10 -> 30 continue -> #endif -> if (lprn) then -> write (iout,'(a)') 'Contact function values:' -> do i=nnt,nct-2 -> write (iout,'(2i3,50(1x,i2,f5.2))') -> & i,num_cont_hb(i),(jcont_hb(j,i),facont_hb(j,i), -> & j=1,num_cont_hb(i)) -> enddo -> endif -> ecorr=0.0D0 -> ecorr5=0.0d0 -> ecorr6=0.0d0 -> C Remove the loop below after debugging !!! -> do i=nnt,nct -> do j=1,3 -> gradcorr(j,i)=0.0D0 -> gradxorr(j,i)=0.0D0 -> enddo -> enddo -> C Calculate the dipole-dipole interaction energies -> if (wcorr6.gt.0.0d0 .or. wturn6.gt.0.0d0) then -> do i=iatel_s,iatel_e+1 -> num_conti=num_cont_hb(i) -> do jj=1,num_conti -> j=jcont_hb(jj,i) -> call dipole(i,j,jj) -> enddo -> enddo -> endif -> C Calculate the local-electrostatic correlation terms -> do i=iatel_s,iatel_e+1 -> i1=i+1 -> num_conti=num_cont_hb(i) -> num_conti1=num_cont_hb(i+1) -> do jj=1,num_conti -> j=jcont_hb(jj,i) -> do kk=1,num_conti1 -> j1=jcont_hb(kk,i1) -> c write (iout,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, -> c & ' jj=',jj,' kk=',kk -> if (j1.eq.j+1 .or. j1.eq.j-1) then -> C Contacts I-J and (I+1)-(J+1) or (I+1)-(J-1) occur simultaneously. -> C The system gains extra energy. -> n_corr=n_corr+1 -> sqd1=dsqrt(d_cont(jj,i)) -> sqd2=dsqrt(d_cont(kk,i1)) -> sred_geom = sqd1*sqd2 -> IF (sred_geom.lt.cutoff_corr) THEN -> call gcont(sred_geom,r0_corr,1.0D0,delt_corr, -> & ekont,fprimcont) -> cd write (iout,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, -> cd & ' jj=',jj,' kk=',kk -> fac_prim1=0.5d0*sqd2/sqd1*fprimcont -> fac_prim2=0.5d0*sqd1/sqd2*fprimcont -> do l=1,3 -> g_contij(l,1)=fac_prim1*grij_hb_cont(l,jj,i) -> g_contij(l,2)=fac_prim2*grij_hb_cont(l,kk,i1) -> enddo -> n_corr1=n_corr1+1 -> cd write (iout,*) 'sred_geom=',sred_geom, -> cd & ' ekont=',ekont,' fprim=',fprimcont -> call calc_eello(i,j,i+1,j1,jj,kk) -> if (wcorr4.gt.0.0d0) -> & ecorr=ecorr+eello4(i,j,i+1,j1,jj,kk) -> if (energy_dec.and.wcorr4.gt.0.0d0) -> 1 write (iout,'(a6,2i5,0pf7.3)') -> 2 'ecorr4',i,j,eello4(i,j,i+1,j1,jj,kk) -> if (wcorr5.gt.0.0d0) -> & ecorr5=ecorr5+eello5(i,j,i+1,j1,jj,kk) -> if (energy_dec.and.wcorr5.gt.0.0d0) -> 1 write (iout,'(a6,2i5,0pf7.3)') -> 2 'ecorr5',i,j,eello5(i,j,i+1,j1,jj,kk) -> cd write(2,*)'wcorr6',wcorr6,' wturn6',wturn6 -> cd write(2,*)'ijkl',i,j,i+1,j1 -> if (wcorr6.gt.0.0d0 .and. (j.ne.i+4 .or. j1.ne.i+3 -> & .or. wturn6.eq.0.0d0))then -> cd write (iout,*) '******ecorr6: i,j,i+1,j1',i,j,i+1,j1 -> ecorr6=ecorr6+eello6(i,j,i+1,j1,jj,kk) -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> 1 'ecorr6',i,j,eello6(i,j,i+1,j1,jj,kk) -> cd write (iout,*) 'ecorr',ecorr,' ecorr5=',ecorr5, -> cd & 'ecorr6=',ecorr6 -> cd write (iout,'(4e15.5)') sred_geom, -> cd & dabs(eello4(i,j,i+1,j1,jj,kk)), -> cd & dabs(eello5(i,j,i+1,j1,jj,kk)), -> cd & dabs(eello6(i,j,i+1,j1,jj,kk)) -> else if (wturn6.gt.0.0d0 -> & .and. (j.eq.i+4 .and. j1.eq.i+3)) then -> cd write (iout,*) '******eturn6: i,j,i+1,j1',i,j,i+1,j1 -> eturn6=eturn6+eello_turn6(i,jj,kk) -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> 1 'eturn6',i,j,eello_turn6(i,jj,kk) -> cd write (2,*) 'multibody_eello:eturn6',eturn6 -> endif -> ENDIF -> 1111 continue -> else if (j1.eq.j) then -> C Contacts I-J and I-(J+1) occur simultaneously. -> C The system loses extra energy. -> c ecorr=ecorr+ehbcorr(i,j,i+1,j,jj,kk,0.60D0,-0.40D0) -> endif -> enddo ! kk -> do kk=1,num_conti -> j1=jcont_hb(kk,i) -> c write (iout,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, -> c & ' jj=',jj,' kk=',kk -> if (j1.eq.j+1) then -> C Contacts I-J and (I+1)-J occur simultaneously. -> C The system loses extra energy. -> c ecorr=ecorr+ehbcorr(i,j,i,j+1,jj,kk,0.60D0,-0.40D0) -> endif ! j1==j+1 -> enddo ! kk -> enddo ! jj -> enddo ! i -> return -> end -> c------------------------------------------------------------------------------ -> double precision function ehbcorr(i,j,k,l,jj,kk,coeffp,coeffm) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> double precision gx(3),gx1(3) -> logical lprn -> lprn=.false. -> eij=facont_hb(jj,i) -> ekl=facont_hb(kk,k) -> ees0pij=ees0p(jj,i) -> ees0pkl=ees0p(kk,k) -> ees0mij=ees0m(jj,i) -> ees0mkl=ees0m(kk,k) -> ekont=eij*ekl -> ees=-(coeffp*ees0pij*ees0pkl+coeffm*ees0mij*ees0mkl) -> cd ees=-(coeffp*ees0pkl+coeffm*ees0mkl) -> C Following 4 lines for diagnostics. -> cd ees0pkl=0.0D0 -> cd ees0pij=1.0D0 -> cd ees0mkl=0.0D0 -> cd ees0mij=1.0D0 -> c write (iout,*)'Contacts have occurred for peptide groups',i,j, -> c & ' and',k,l -> c write (iout,*)'Contacts have occurred for peptide groups', -> c & i,j,' fcont:',eij,' eij',' eesij',ees0pij,ees0mij,' and ',k,l -> c & ,' fcont ',ekl,' eeskl',ees0pkl,ees0mkl,' ees=',ees -> C Calculate the multi-body contribution to energy. -> ecorr=ecorr+ekont*ees -> C Calculate multi-body contributions to the gradient. -> do ll=1,3 -> ghalf=0.5D0*ees*ekl*gacont_hbr(ll,jj,i) -> gradcorr(ll,i)=gradcorr(ll,i)+ghalf -> & -ekont*(coeffp*ees0pkl*gacontp_hb1(ll,jj,i)+ -> & coeffm*ees0mkl*gacontm_hb1(ll,jj,i)) -> gradcorr(ll,j)=gradcorr(ll,j)+ghalf -> & -ekont*(coeffp*ees0pkl*gacontp_hb2(ll,jj,i)+ -> & coeffm*ees0mkl*gacontm_hb2(ll,jj,i)) -> ghalf=0.5D0*ees*eij*gacont_hbr(ll,kk,k) -> gradcorr(ll,k)=gradcorr(ll,k)+ghalf -> & -ekont*(coeffp*ees0pij*gacontp_hb1(ll,kk,k)+ -> & coeffm*ees0mij*gacontm_hb1(ll,kk,k)) -> gradcorr(ll,l)=gradcorr(ll,l)+ghalf -> & -ekont*(coeffp*ees0pij*gacontp_hb2(ll,kk,k)+ -> & coeffm*ees0mij*gacontm_hb2(ll,kk,k)) -> enddo -> do m=i+1,j-1 -> do ll=1,3 -> gradcorr(ll,m)=gradcorr(ll,m)+ -> & ees*ekl*gacont_hbr(ll,jj,i)- -> & ekont*(coeffp*ees0pkl*gacontp_hb3(ll,jj,i)+ -> & coeffm*ees0mkl*gacontm_hb3(ll,jj,i)) -> enddo -> enddo -> do m=k+1,l-1 -> do ll=1,3 -> gradcorr(ll,m)=gradcorr(ll,m)+ -> & ees*eij*gacont_hbr(ll,kk,k)- -> & ekont*(coeffp*ees0pij*gacontp_hb3(ll,kk,k)+ -> & coeffm*ees0mij*gacontm_hb3(ll,kk,k)) -> enddo -> enddo -> ehbcorr=ekont*ees -> return -> end -> C--------------------------------------------------------------------------- -> subroutine dipole(i,j,jj) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.FFIELD' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> dimension dipi(2,2),dipj(2,2),dipderi(2),dipderj(2),auxvec(2), -> & auxmat(2,2) -> iti1 = itortyp(itype(i+1)) -> if (j.lt.nres-1) then -> itj1 = itortyp(itype(j+1)) -> else -> itj1=ntortyp+1 -> endif -> do iii=1,2 -> dipi(iii,1)=Ub2(iii,i) -> dipderi(iii)=Ub2der(iii,i) -> dipi(iii,2)=b1(iii,iti1) -> dipj(iii,1)=Ub2(iii,j) -> dipderj(iii)=Ub2der(iii,j) -> dipj(iii,2)=b1(iii,itj1) -> enddo -> kkk=0 -> do iii=1,2 -> call matvec2(a_chuj(1,1,jj,i),dipj(1,iii),auxvec(1)) -> do jjj=1,2 -> kkk=kkk+1 -> dip(kkk,jj,i)=scalar2(dipi(1,jjj),auxvec(1)) -> enddo -> enddo -> do kkk=1,5 -> do lll=1,3 -> mmm=0 -> do iii=1,2 -> call matvec2(a_chuj_der(1,1,lll,kkk,jj,i),dipj(1,iii), -> & auxvec(1)) -> do jjj=1,2 -> mmm=mmm+1 -> dipderx(lll,kkk,mmm,jj,i)=scalar2(dipi(1,jjj),auxvec(1)) -> enddo -> enddo -> enddo -> enddo -> call transpose2(a_chuj(1,1,jj,i),auxmat(1,1)) -> call matvec2(auxmat(1,1),dipderi(1),auxvec(1)) -> do iii=1,2 -> dipderg(iii,jj,i)=scalar2(auxvec(1),dipj(1,iii)) -> enddo -> call matvec2(a_chuj(1,1,jj,i),dipderj(1),auxvec(1)) -> do iii=1,2 -> dipderg(iii+2,jj,i)=scalar2(auxvec(1),dipi(1,iii)) -> enddo -> return -> end -> C--------------------------------------------------------------------------- -> subroutine calc_eello(i,j,k,l,jj,kk) -> C -> C This subroutine computes matrices and vectors needed to calculate -> C the fourth-, fifth-, and sixth-order local-electrostatic terms. -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.FFIELD' -> double precision aa1(2,2),aa2(2,2),aa1t(2,2),aa2t(2,2), -> & aa1tder(2,2,3,5),aa2tder(2,2,3,5),auxmat(2,2) -> logical lprn -> common /kutas/ lprn -> cd write (iout,*) 'calc_eello: i=',i,' j=',j,' k=',k,' l=',l, -> cd & ' jj=',jj,' kk=',kk -> cd if (i.ne.2 .or. j.ne.4 .or. k.ne.3 .or. l.ne.5) return -> do iii=1,2 -> do jjj=1,2 -> aa1(iii,jjj)=a_chuj(iii,jjj,jj,i) -> aa2(iii,jjj)=a_chuj(iii,jjj,kk,k) -> enddo -> enddo -> call transpose2(aa1(1,1),aa1t(1,1)) -> call transpose2(aa2(1,1),aa2t(1,1)) -> do kkk=1,5 -> do lll=1,3 -> call transpose2(a_chuj_der(1,1,lll,kkk,jj,i), -> & aa1tder(1,1,lll,kkk)) -> call transpose2(a_chuj_der(1,1,lll,kkk,kk,k), -> & aa2tder(1,1,lll,kkk)) -> enddo -> enddo -> if (l.eq.j+1) then -> C parallel orientation of the two CA-CA-CA frames. -> if (i.gt.1) then -> iti=itortyp(itype(i)) -> else -> iti=ntortyp+1 -> endif -> itk1=itortyp(itype(k+1)) -> itj=itortyp(itype(j)) -> if (l.lt.nres-1) then -> itl1=itortyp(itype(l+1)) -> else -> itl1=ntortyp+1 -> endif -> C A1 kernel(j+1) A2T -> cd do iii=1,2 -> cd write (iout,'(3f10.5,5x,3f10.5)') -> cd & (EUg(iii,jjj,k),jjj=1,2),(EUg(iii,jjj,l),jjj=1,2) -> cd enddo -> call kernel(aa1(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i), -> & aa2tder(1,1,1,1),1,.false.,EUg(1,1,l),EUgder(1,1,l), -> & AEA(1,1,1),AEAderg(1,1,1),AEAderx(1,1,1,1,1,1)) -> C Following matrices are needed only for 6-th order cumulants -> IF (wcorr6.gt.0.0d0) THEN -> call kernel(aa1(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i), -> & aa2tder(1,1,1,1),1,.false.,EUgC(1,1,l),EUgCder(1,1,l), -> & AECA(1,1,1),AECAderg(1,1,1),AECAderx(1,1,1,1,1,1)) -> call kernel(aa1(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i), -> & aa2tder(1,1,1,1),2,.false.,Ug2DtEUg(1,1,l), -> & Ug2DtEUgder(1,1,1,l),ADtEA(1,1,1),ADtEAderg(1,1,1,1), -> & ADtEAderx(1,1,1,1,1,1)) -> lprn=.false. -> call kernel(aa1(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i), -> & aa2tder(1,1,1,1),2,.false.,DtUg2EUg(1,1,l), -> & DtUg2EUgder(1,1,1,l),ADtEA1(1,1,1),ADtEA1derg(1,1,1,1), -> & ADtEA1derx(1,1,1,1,1,1)) -> ENDIF -> C End 6-th order cumulants -> cd lprn=.false. -> cd if (lprn) then -> cd write (2,*) 'In calc_eello6' -> cd do iii=1,2 -> cd write (2,*) 'iii=',iii -> cd do kkk=1,5 -> cd write (2,*) 'kkk=',kkk -> cd do jjj=1,2 -> cd write (2,'(3(2f10.5),5x)') -> cd & ((ADtEA1derx(jjj,mmm,lll,kkk,iii,1),mmm=1,2),lll=1,3) -> cd enddo -> cd enddo -> cd enddo -> cd endif -> call transpose2(EUgder(1,1,k),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,1),EAEAderg(1,1,1,1)) -> call transpose2(EUg(1,1,k),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,1),EAEA(1,1,1)) -> call matmat2(auxmat(1,1),AEAderg(1,1,1),EAEAderg(1,1,2,1)) -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(auxmat(1,1),AEAderx(1,1,lll,kkk,iii,1), -> & EAEAderx(1,1,lll,kkk,iii,1)) -> enddo -> enddo -> enddo -> C A1T kernel(i+1) A2 -> call kernel(aa1t(1,1),aa2(1,1),aa1tder(1,1,1,1), -> & a_chuj_der(1,1,1,1,kk,k),1,.false.,EUg(1,1,k),EUgder(1,1,k), -> & AEA(1,1,2),AEAderg(1,1,2),AEAderx(1,1,1,1,1,2)) -> C Following matrices are needed only for 6-th order cumulants -> IF (wcorr6.gt.0.0d0) THEN -> call kernel(aa1t(1,1),aa2(1,1),aa1tder(1,1,1,1), -> & a_chuj_der(1,1,1,1,kk,k),1,.false.,EUgC(1,1,k),EUgCder(1,1,k), -> & AECA(1,1,2),AECAderg(1,1,2),AECAderx(1,1,1,1,1,2)) -> call kernel(aa1t(1,1),aa2(1,1),aa1tder(1,1,1,1), -> & a_chuj_der(1,1,1,1,kk,k),2,.false.,Ug2DtEUg(1,1,k), -> & Ug2DtEUgder(1,1,1,k),ADtEA(1,1,2),ADtEAderg(1,1,1,2), -> & ADtEAderx(1,1,1,1,1,2)) -> call kernel(aa1t(1,1),aa2(1,1),aa1tder(1,1,1,1), -> & a_chuj_der(1,1,1,1,kk,k),2,.false.,DtUg2EUg(1,1,k), -> & DtUg2EUgder(1,1,1,k),ADtEA1(1,1,2),ADtEA1derg(1,1,1,2), -> & ADtEA1derx(1,1,1,1,1,2)) -> ENDIF -> C End 6-th order cumulants -> call transpose2(EUgder(1,1,l),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,2),EAEAderg(1,1,1,2)) -> call transpose2(EUg(1,1,l),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,2),EAEA(1,1,2)) -> call matmat2(auxmat(1,1),AEAderg(1,1,2),EAEAderg(1,1,2,2)) -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(auxmat(1,1),AEAderx(1,1,lll,kkk,iii,2), -> & EAEAderx(1,1,lll,kkk,iii,2)) -> enddo -> enddo -> enddo -> C AEAb1 and AEAb2 -> C Calculate the vectors and their derivatives in virtual-bond dihedral angles. -> C They are needed only when the fifth- or the sixth-order cumulants are -> C indluded. -> IF (wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0) THEN -> call transpose2(AEA(1,1,1),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,iti),AEAb1(1,1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i),AEAb2(1,1,1)) -> call matvec2(auxmat(1,1),Ub2der(1,i),AEAb2derg(1,2,1,1)) -> call transpose2(AEAderg(1,1,1),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,iti),AEAb1derg(1,1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i),AEAb2derg(1,1,1,1)) -> call matvec2(AEA(1,1,1),b1(1,itk1),AEAb1(1,2,1)) -> call matvec2(AEAderg(1,1,1),b1(1,itk1),AEAb1derg(1,2,1)) -> call matvec2(AEA(1,1,1),Ub2(1,k+1),AEAb2(1,2,1)) -> call matvec2(AEAderg(1,1,1),Ub2(1,k+1),AEAb2derg(1,1,2,1)) -> call matvec2(AEA(1,1,1),Ub2der(1,k+1),AEAb2derg(1,2,2,1)) -> call transpose2(AEA(1,1,2),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,itj),AEAb1(1,1,2)) -> call matvec2(auxmat(1,1),Ub2(1,j),AEAb2(1,1,2)) -> call matvec2(auxmat(1,1),Ub2der(1,j),AEAb2derg(1,2,1,2)) -> call transpose2(AEAderg(1,1,2),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,itj),AEAb1derg(1,1,2)) -> call matvec2(auxmat(1,1),Ub2(1,j),AEAb2derg(1,1,1,2)) -> call matvec2(AEA(1,1,2),b1(1,itl1),AEAb1(1,2,2)) -> call matvec2(AEAderg(1,1,2),b1(1,itl1),AEAb1derg(1,2,2)) -> call matvec2(AEA(1,1,2),Ub2(1,l+1),AEAb2(1,2,2)) -> call matvec2(AEAderg(1,1,2),Ub2(1,l+1),AEAb2derg(1,1,2,2)) -> call matvec2(AEA(1,1,2),Ub2der(1,l+1),AEAb2derg(1,2,2,2)) -> C Calculate the Cartesian derivatives of the vectors. -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call transpose2(AEAderx(1,1,lll,kkk,iii,1),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,iti), -> & AEAb1derx(1,lll,kkk,iii,1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i), -> & AEAb2derx(1,lll,kkk,iii,1,1)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,1),b1(1,itk1), -> & AEAb1derx(1,lll,kkk,iii,2,1)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,1),Ub2(1,k+1), -> & AEAb2derx(1,lll,kkk,iii,2,1)) -> call transpose2(AEAderx(1,1,lll,kkk,iii,2),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,itj), -> & AEAb1derx(1,lll,kkk,iii,1,2)) -> call matvec2(auxmat(1,1),Ub2(1,j), -> & AEAb2derx(1,lll,kkk,iii,1,2)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,2),b1(1,itl1), -> & AEAb1derx(1,lll,kkk,iii,2,2)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,2),Ub2(1,l+1), -> & AEAb2derx(1,lll,kkk,iii,2,2)) -> enddo -> enddo -> enddo -> ENDIF -> C End vectors -> else -> C Antiparallel orientation of the two CA-CA-CA frames. -> if (i.gt.1) then -> iti=itortyp(itype(i)) -> else -> iti=ntortyp+1 -> endif -> itk1=itortyp(itype(k+1)) -> itl=itortyp(itype(l)) -> itj=itortyp(itype(j)) -> if (j.lt.nres-1) then -> itj1=itortyp(itype(j+1)) -> else -> itj1=ntortyp+1 -> endif -> C A2 kernel(j-1)T A1T -> call kernel(aa1(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i), -> & aa2tder(1,1,1,1),1,.true.,EUg(1,1,j),EUgder(1,1,j), -> & AEA(1,1,1),AEAderg(1,1,1),AEAderx(1,1,1,1,1,1)) -> C Following matrices are needed only for 6-th order cumulants -> IF (wcorr6.gt.0.0d0 .or. (wturn6.gt.0.0d0 .and. -> & j.eq.i+4 .and. l.eq.i+3)) THEN -> call kernel(aa1(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i), -> & aa2tder(1,1,1,1),1,.true.,EUgC(1,1,j),EUgCder(1,1,j), -> & AECA(1,1,1),AECAderg(1,1,1),AECAderx(1,1,1,1,1,1)) -> call kernel(aa2(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i), -> & aa2tder(1,1,1,1),2,.true.,Ug2DtEUg(1,1,j), -> & Ug2DtEUgder(1,1,1,j),ADtEA(1,1,1),ADtEAderg(1,1,1,1), -> & ADtEAderx(1,1,1,1,1,1)) -> call kernel(aa1(1,1),aa2t(1,1),a_chuj_der(1,1,1,1,jj,i), -> & aa2tder(1,1,1,1),2,.true.,DtUg2EUg(1,1,j), -> & DtUg2EUgder(1,1,1,j),ADtEA1(1,1,1),ADtEA1derg(1,1,1,1), -> & ADtEA1derx(1,1,1,1,1,1)) -> ENDIF -> C End 6-th order cumulants -> call transpose2(EUgder(1,1,k),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,1),EAEAderg(1,1,1,1)) -> call transpose2(EUg(1,1,k),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,1),EAEA(1,1,1)) -> call matmat2(auxmat(1,1),AEAderg(1,1,1),EAEAderg(1,1,2,1)) -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(auxmat(1,1),AEAderx(1,1,lll,kkk,iii,1), -> & EAEAderx(1,1,lll,kkk,iii,1)) -> enddo -> enddo -> enddo -> C A2T kernel(i+1)T A1 -> call kernel(aa2t(1,1),aa1(1,1),aa2tder(1,1,1,1), -> & a_chuj_der(1,1,1,1,jj,i),1,.true.,EUg(1,1,k),EUgder(1,1,k), -> & AEA(1,1,2),AEAderg(1,1,2),AEAderx(1,1,1,1,1,2)) -> C Following matrices are needed only for 6-th order cumulants -> IF (wcorr6.gt.0.0d0 .or. (wturn6.gt.0.0d0 .and. -> & j.eq.i+4 .and. l.eq.i+3)) THEN -> call kernel(aa2t(1,1),aa1(1,1),aa2tder(1,1,1,1), -> & a_chuj_der(1,1,1,1,jj,i),1,.true.,EUgC(1,1,k),EUgCder(1,1,k), -> & AECA(1,1,2),AECAderg(1,1,2),AECAderx(1,1,1,1,1,2)) -> call kernel(aa2t(1,1),aa1(1,1),aa2tder(1,1,1,1), -> & a_chuj_der(1,1,1,1,jj,i),2,.true.,Ug2DtEUg(1,1,k), -> & Ug2DtEUgder(1,1,1,k),ADtEA(1,1,2),ADtEAderg(1,1,1,2), -> & ADtEAderx(1,1,1,1,1,2)) -> call kernel(aa2t(1,1),aa1(1,1),aa2tder(1,1,1,1), -> & a_chuj_der(1,1,1,1,jj,i),2,.true.,DtUg2EUg(1,1,k), -> & DtUg2EUgder(1,1,1,k),ADtEA1(1,1,2),ADtEA1derg(1,1,1,2), -> & ADtEA1derx(1,1,1,1,1,2)) -> ENDIF -> C End 6-th order cumulants -> call transpose2(EUgder(1,1,j),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,1),EAEAderg(1,1,2,2)) -> call transpose2(EUg(1,1,j),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,2),EAEA(1,1,2)) -> call matmat2(auxmat(1,1),AEAderg(1,1,2),EAEAderg(1,1,2,2)) -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(auxmat(1,1),AEAderx(1,1,lll,kkk,iii,2), -> & EAEAderx(1,1,lll,kkk,iii,2)) -> enddo -> enddo -> enddo -> C AEAb1 and AEAb2 -> C Calculate the vectors and their derivatives in virtual-bond dihedral angles. -> C They are needed only when the fifth- or the sixth-order cumulants are -> C indluded. -> IF (wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0 .or. -> & (wturn6.gt.0.0d0 .and. j.eq.i+4 .and. l.eq.i+3)) THEN -> call transpose2(AEA(1,1,1),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,iti),AEAb1(1,1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i),AEAb2(1,1,1)) -> call matvec2(auxmat(1,1),Ub2der(1,i),AEAb2derg(1,2,1,1)) -> call transpose2(AEAderg(1,1,1),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,iti),AEAb1derg(1,1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i),AEAb2derg(1,1,1,1)) -> call matvec2(AEA(1,1,1),b1(1,itk1),AEAb1(1,2,1)) -> call matvec2(AEAderg(1,1,1),b1(1,itk1),AEAb1derg(1,2,1)) -> call matvec2(AEA(1,1,1),Ub2(1,k+1),AEAb2(1,2,1)) -> call matvec2(AEAderg(1,1,1),Ub2(1,k+1),AEAb2derg(1,1,2,1)) -> call matvec2(AEA(1,1,1),Ub2der(1,k+1),AEAb2derg(1,2,2,1)) -> call transpose2(AEA(1,1,2),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,itj1),AEAb1(1,1,2)) -> call matvec2(auxmat(1,1),Ub2(1,l),AEAb2(1,1,2)) -> call matvec2(auxmat(1,1),Ub2der(1,l),AEAb2derg(1,2,1,2)) -> call transpose2(AEAderg(1,1,2),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,itl),AEAb1(1,1,2)) -> call matvec2(auxmat(1,1),Ub2(1,l),AEAb2derg(1,1,1,2)) -> call matvec2(AEA(1,1,2),b1(1,itj1),AEAb1(1,2,2)) -> call matvec2(AEAderg(1,1,2),b1(1,itj1),AEAb1derg(1,2,2)) -> call matvec2(AEA(1,1,2),Ub2(1,j),AEAb2(1,2,2)) -> call matvec2(AEAderg(1,1,2),Ub2(1,j),AEAb2derg(1,1,2,2)) -> call matvec2(AEA(1,1,2),Ub2der(1,j),AEAb2derg(1,2,2,2)) -> C Calculate the Cartesian derivatives of the vectors. -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call transpose2(AEAderx(1,1,lll,kkk,iii,1),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,iti), -> & AEAb1derx(1,lll,kkk,iii,1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i), -> & AEAb2derx(1,lll,kkk,iii,1,1)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,1),b1(1,itk1), -> & AEAb1derx(1,lll,kkk,iii,2,1)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,1),Ub2(1,k+1), -> & AEAb2derx(1,lll,kkk,iii,2,1)) -> call transpose2(AEAderx(1,1,lll,kkk,iii,2),auxmat(1,1)) -> call matvec2(auxmat(1,1),b1(1,itl), -> & AEAb1derx(1,lll,kkk,iii,1,2)) -> call matvec2(auxmat(1,1),Ub2(1,l), -> & AEAb2derx(1,lll,kkk,iii,1,2)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,2),b1(1,itj1), -> & AEAb1derx(1,lll,kkk,iii,2,2)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,2),Ub2(1,j), -> & AEAb2derx(1,lll,kkk,iii,2,2)) -> enddo -> enddo -> enddo -> ENDIF -> C End vectors -> endif -> return -> end -> C--------------------------------------------------------------------------- -> subroutine kernel(aa1,aa2t,aa1derx,aa2tderx,nderg,transp, -> & KK,KKderg,AKA,AKAderg,AKAderx) -> implicit none -> integer nderg -> logical transp -> double precision aa1(2,2),aa2t(2,2),aa1derx(2,2,3,5), -> & aa2tderx(2,2,3,5),KK(2,2),KKderg(2,2,nderg),AKA(2,2), -> & AKAderg(2,2,nderg),AKAderx(2,2,3,5,2) -> integer iii,kkk,lll -> integer jjj,mmm -> logical lprn -> common /kutas/ lprn -> call prodmat3(aa1(1,1),aa2t(1,1),KK(1,1),transp,AKA(1,1)) -> do iii=1,nderg -> call prodmat3(aa1(1,1),aa2t(1,1),KKderg(1,1,iii),transp, -> & AKAderg(1,1,iii)) -> enddo -> cd if (lprn) write (2,*) 'In kernel' -> do kkk=1,5 -> cd if (lprn) write (2,*) 'kkk=',kkk -> do lll=1,3 -> call prodmat3(aa1derx(1,1,lll,kkk),aa2t(1,1), -> & KK(1,1),transp,AKAderx(1,1,lll,kkk,1)) -> cd if (lprn) then -> cd write (2,*) 'lll=',lll -> cd write (2,*) 'iii=1' -> cd do jjj=1,2 -> cd write (2,'(3(2f10.5),5x)') -> cd & (AKAderx(jjj,mmm,lll,kkk,1),mmm=1,2) -> cd enddo -> cd endif -> call prodmat3(aa1(1,1),aa2tderx(1,1,lll,kkk), -> & KK(1,1),transp,AKAderx(1,1,lll,kkk,2)) -> cd if (lprn) then -> cd write (2,*) 'lll=',lll -> cd write (2,*) 'iii=2' -> cd do jjj=1,2 -> cd write (2,'(3(2f10.5),5x)') -> cd & (AKAderx(jjj,mmm,lll,kkk,2),mmm=1,2) -> cd enddo -> cd endif -> enddo -> enddo -> return -> end -> C--------------------------------------------------------------------------- -> double precision function eello4(i,j,k,l,jj,kk) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> double precision pizda(2,2),ggg1(3),ggg2(3) -> cd if (i.ne.1 .or. j.ne.5 .or. k.ne.2 .or.l.ne.4) then -> cd eello4=0.0d0 -> cd return -> cd endif -> cd print *,'eello4:',i,j,k,l,jj,kk -> cd write (2,*) 'i',i,' j',j,' k',k,' l',l -> cd call checkint4(i,j,k,l,jj,kk,eel4_num) -> cold eij=facont_hb(jj,i) -> cold ekl=facont_hb(kk,k) -> cold ekont=eij*ekl -> eel4=-EAEA(1,1,1)-EAEA(2,2,1) -> cd eel41=-EAEA(1,1,2)-EAEA(2,2,2) -> gcorr_loc(k-1)=gcorr_loc(k-1) -> & -ekont*(EAEAderg(1,1,1,1)+EAEAderg(2,2,1,1)) -> if (l.eq.j+1) then -> gcorr_loc(l-1)=gcorr_loc(l-1) -> & -ekont*(EAEAderg(1,1,2,1)+EAEAderg(2,2,2,1)) -> else -> gcorr_loc(j-1)=gcorr_loc(j-1) -> & -ekont*(EAEAderg(1,1,2,1)+EAEAderg(2,2,2,1)) -> endif -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> derx(lll,kkk,iii)=-EAEAderx(1,1,lll,kkk,iii,1) -> & -EAEAderx(2,2,lll,kkk,iii,1) -> cd derx(lll,kkk,iii)=0.0d0 -> enddo -> enddo -> enddo -> cd gcorr_loc(l-1)=0.0d0 -> cd gcorr_loc(j-1)=0.0d0 -> cd gcorr_loc(k-1)=0.0d0 -> cd eel4=1.0d0 -> cd write (iout,*)'Contacts have occurred for peptide groups', -> cd & i,j,' fcont:',eij,' eij',' and ',k,l, -> cd & ' fcont ',ekl,' eel4=',eel4,' eel4_num',16*eel4_num -> if (j.lt.nres-1) then -> j1=j+1 -> j2=j-1 -> else -> j1=j-1 -> j2=j-2 -> endif -> if (l.lt.nres-1) then -> l1=l+1 -> l2=l-1 -> else -> l1=l-1 -> l2=l-2 -> endif -> do ll=1,3 -> cold ghalf=0.5d0*eel4*ekl*gacont_hbr(ll,jj,i) -> ggg1(ll)=eel4*g_contij(ll,1) -> ggg2(ll)=eel4*g_contij(ll,2) -> ghalf=0.5d0*ggg1(ll) -> cd ghalf=0.0d0 -> gradcorr(ll,i)=gradcorr(ll,i)+ghalf+ekont*derx(ll,2,1) -> gradcorr(ll,i+1)=gradcorr(ll,i+1)+ekont*derx(ll,3,1) -> gradcorr(ll,j)=gradcorr(ll,j)+ghalf+ekont*derx(ll,4,1) -> gradcorr(ll,j1)=gradcorr(ll,j1)+ekont*derx(ll,5,1) -> cold ghalf=0.5d0*eel4*eij*gacont_hbr(ll,kk,k) -> ghalf=0.5d0*ggg2(ll) -> cd ghalf=0.0d0 -> gradcorr(ll,k)=gradcorr(ll,k)+ghalf+ekont*derx(ll,2,2) -> gradcorr(ll,k+1)=gradcorr(ll,k+1)+ekont*derx(ll,3,2) -> gradcorr(ll,l)=gradcorr(ll,l)+ghalf+ekont*derx(ll,4,2) -> gradcorr(ll,l1)=gradcorr(ll,l1)+ekont*derx(ll,5,2) -> enddo -> cd goto 1112 -> do m=i+1,j-1 -> do ll=1,3 -> cold gradcorr(ll,m)=gradcorr(ll,m)+eel4*ekl*gacont_hbr(ll,jj,i) -> gradcorr(ll,m)=gradcorr(ll,m)+ggg1(ll) -> enddo -> enddo -> do m=k+1,l-1 -> do ll=1,3 -> cold gradcorr(ll,m)=gradcorr(ll,m)+eel4*eij*gacont_hbr(ll,kk,k) -> gradcorr(ll,m)=gradcorr(ll,m)+ggg2(ll) -> enddo -> enddo -> 1112 continue -> do m=i+2,j2 -> do ll=1,3 -> gradcorr(ll,m)=gradcorr(ll,m)+ekont*derx(ll,1,1) -> enddo -> enddo -> do m=k+2,l2 -> do ll=1,3 -> gradcorr(ll,m)=gradcorr(ll,m)+ekont*derx(ll,1,2) -> enddo -> enddo -> cd do iii=1,nres-3 -> cd write (2,*) iii,gcorr_loc(iii) -> cd enddo -> eello4=ekont*eel4 -> cd write (2,*) 'ekont',ekont -> cd write (iout,*) 'eello4',ekont*eel4 -> return -> end -> C--------------------------------------------------------------------------- -> double precision function eello5(i,j,k,l,jj,kk) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> double precision pizda(2,2),auxmat(2,2),auxmat1(2,2),vv(2) -> double precision ggg1(3),ggg2(3) -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> C C -> C Parallel chains C -> C C -> C o o o o C -> C /l\ / \ \ / \ / \ / C -> C / \ / \ \ / \ / \ / C -> C j| o |l1 | o | o| o | | o |o C -> C \ |/k\| |/ \| / |/ \| |/ \| C -> C \i/ \ / \ / / \ / \ C -> C o k1 o C -> C (I) (II) (III) (IV) C -> C C -> C eello5_1 eello5_2 eello5_3 eello5_4 C -> C C -> C Antiparallel chains C -> C C -> C o o o o C -> C /j\ / \ \ / \ / \ / C -> C / \ / \ \ / \ / \ / C -> C j1| o |l | o | o| o | | o |o C -> C \ |/k\| |/ \| / |/ \| |/ \| C -> C \i/ \ / \ / / \ / \ C -> C o k1 o C -> C (I) (II) (III) (IV) C -> C C -> C eello5_1 eello5_2 eello5_3 eello5_4 C -> C C -> C o denotes a local interaction, vertical lines an electrostatic interaction. C -> C C -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> cd if (i.ne.2 .or. j.ne.6 .or. k.ne.3 .or. l.ne.5) then -> cd eello5=0.0d0 -> cd return -> cd endif -> cd write (iout,*) -> cd & 'EELLO5: Contacts have occurred for peptide groups',i,j, -> cd & ' and',k,l -> itk=itortyp(itype(k)) -> itl=itortyp(itype(l)) -> itj=itortyp(itype(j)) -> eello5_1=0.0d0 -> eello5_2=0.0d0 -> eello5_3=0.0d0 -> eello5_4=0.0d0 -> cd call checkint5(i,j,k,l,jj,kk,eel5_1_num,eel5_2_num, -> cd & eel5_3_num,eel5_4_num) -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> derx(lll,kkk,iii)=0.0d0 -> enddo -> enddo -> enddo -> cd eij=facont_hb(jj,i) -> cd ekl=facont_hb(kk,k) -> cd ekont=eij*ekl -> cd write (iout,*)'Contacts have occurred for peptide groups', -> cd & i,j,' fcont:',eij,' eij',' and ',k,l -> cd goto 1111 -> C Contribution from the graph I. -> cd write (2,*) 'AEA ',AEA(1,1,1),AEA(2,1,1),AEA(1,2,1),AEA(2,2,1) -> cd write (2,*) 'AEAb2',AEAb2(1,1,1),AEAb2(2,1,1) -> call transpose2(EUg(1,1,k),auxmat(1,1)) -> call matmat2(AEA(1,1,1),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> eello5_1=scalar2(AEAb2(1,1,1),Ub2(1,k)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,i)) -> C Explicit gradient in virtual-dihedral angles. -> if (i.gt.1) g_corr5_loc(i-1)=g_corr5_loc(i-1) -> & +ekont*(scalar2(AEAb2derg(1,2,1,1),Ub2(1,k)) -> & +0.5d0*scalar2(vv(1),Dtobr2der(1,i))) -> call transpose2(EUgder(1,1,k),auxmat1(1,1)) -> call matmat2(AEA(1,1,1),auxmat1(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> g_corr5_loc(k-1)=g_corr5_loc(k-1) -> & +ekont*(scalar2(AEAb2(1,1,1),Ub2der(1,k)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,i))) -> call matmat2(AEAderg(1,1,1),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> if (l.eq.j+1) then -> if (l.lt.nres-1) g_corr5_loc(l-1)=g_corr5_loc(l-1) -> & +ekont*(scalar2(AEAb2derg(1,1,1,1),Ub2(1,k)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,i))) -> else -> if (j.lt.nres-1) g_corr5_loc(j-1)=g_corr5_loc(j-1) -> & +ekont*(scalar2(AEAb2derg(1,1,1,1),Ub2(1,k)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,i))) -> endif -> C Cartesian gradient -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(AEAderx(1,1,lll,kkk,iii,1),auxmat(1,1), -> & pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> derx(lll,kkk,iii)=derx(lll,kkk,iii) -> & +scalar2(AEAb2derx(1,lll,kkk,iii,1,1),Ub2(1,k)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,i)) -> enddo -> enddo -> enddo -> c goto 1112 -> c1111 continue -> C Contribution from graph II -> call transpose2(EE(1,1,itk),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,1),pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> eello5_2=scalar2(AEAb1(1,2,1),b1(1,itk)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,k)) -> C Explicit gradient in virtual-dihedral angles. -> g_corr5_loc(k-1)=g_corr5_loc(k-1) -> & -0.5d0*ekont*scalar2(vv(1),Ctobrder(1,k)) -> call matmat2(auxmat(1,1),AEAderg(1,1,1),pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> if (l.eq.j+1) then -> g_corr5_loc(l-1)=g_corr5_loc(l-1) -> & +ekont*(scalar2(AEAb1derg(1,2,1),b1(1,itk)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,k))) -> else -> g_corr5_loc(j-1)=g_corr5_loc(j-1) -> & +ekont*(scalar2(AEAb1derg(1,2,1),b1(1,itk)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,k))) -> endif -> C Cartesian gradient -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(auxmat(1,1),AEAderx(1,1,lll,kkk,iii,1), -> & pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> derx(lll,kkk,iii)=derx(lll,kkk,iii) -> & +scalar2(AEAb1derx(1,lll,kkk,iii,2,1),b1(1,itk)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,k)) -> enddo -> enddo -> enddo -> cd goto 1112 -> cd1111 continue -> if (l.eq.j+1) then -> cd goto 1110 -> C Parallel orientation -> C Contribution from graph III -> call transpose2(EUg(1,1,l),auxmat(1,1)) -> call matmat2(AEA(1,1,2),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> eello5_3=scalar2(AEAb2(1,1,2),Ub2(1,l)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,j)) -> C Explicit gradient in virtual-dihedral angles. -> g_corr5_loc(j-1)=g_corr5_loc(j-1) -> & +ekont*(scalar2(AEAb2derg(1,2,1,2),Ub2(1,l)) -> & +0.5d0*scalar2(vv(1),Dtobr2der(1,j))) -> call matmat2(AEAderg(1,1,2),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> g_corr5_loc(k-1)=g_corr5_loc(k-1) -> & +ekont*(scalar2(AEAb2derg(1,1,1,2),Ub2(1,l)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,j))) -> call transpose2(EUgder(1,1,l),auxmat1(1,1)) -> call matmat2(AEA(1,1,2),auxmat1(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> g_corr5_loc(l-1)=g_corr5_loc(l-1) -> & +ekont*(scalar2(AEAb2(1,1,2),Ub2der(1,l)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,j))) -> C Cartesian gradient -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(AEAderx(1,1,lll,kkk,iii,2),auxmat(1,1), -> & pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> derx(lll,kkk,iii)=derx(lll,kkk,iii) -> & +scalar2(AEAb2derx(1,lll,kkk,iii,1,2),Ub2(1,l)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,j)) -> enddo -> enddo -> enddo -> cd goto 1112 -> C Contribution from graph IV -> cd1110 continue -> call transpose2(EE(1,1,itl),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,2),pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> eello5_4=scalar2(AEAb1(1,2,2),b1(1,itl)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,l)) -> C Explicit gradient in virtual-dihedral angles. -> g_corr5_loc(l-1)=g_corr5_loc(l-1) -> & -0.5d0*ekont*scalar2(vv(1),Ctobrder(1,l)) -> call matmat2(auxmat(1,1),AEAderg(1,1,2),pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> g_corr5_loc(k-1)=g_corr5_loc(k-1) -> & +ekont*(scalar2(AEAb1derg(1,2,2),b1(1,itl)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,l))) -> C Cartesian gradient -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(auxmat(1,1),AEAderx(1,1,lll,kkk,iii,2), -> & pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> derx(lll,kkk,iii)=derx(lll,kkk,iii) -> & +scalar2(AEAb1derx(1,lll,kkk,iii,2,2),b1(1,itl)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,l)) -> enddo -> enddo -> enddo -> else -> C Antiparallel orientation -> C Contribution from graph III -> c goto 1110 -> call transpose2(EUg(1,1,j),auxmat(1,1)) -> call matmat2(AEA(1,1,2),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> eello5_3=scalar2(AEAb2(1,1,2),Ub2(1,j)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,l)) -> C Explicit gradient in virtual-dihedral angles. -> g_corr5_loc(l-1)=g_corr5_loc(l-1) -> & +ekont*(scalar2(AEAb2derg(1,2,1,2),Ub2(1,j)) -> & +0.5d0*scalar2(vv(1),Dtobr2der(1,l))) -> call matmat2(AEAderg(1,1,2),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> g_corr5_loc(k-1)=g_corr5_loc(k-1) -> & +ekont*(scalar2(AEAb2derg(1,1,1,2),Ub2(1,j)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,l))) -> call transpose2(EUgder(1,1,j),auxmat1(1,1)) -> call matmat2(AEA(1,1,2),auxmat1(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> g_corr5_loc(j-1)=g_corr5_loc(j-1) -> & +ekont*(scalar2(AEAb2(1,1,2),Ub2der(1,j)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,l))) -> C Cartesian gradient -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(AEAderx(1,1,lll,kkk,iii,2),auxmat(1,1), -> & pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> derx(lll,kkk,3-iii)=derx(lll,kkk,3-iii) -> & +scalar2(AEAb2derx(1,lll,kkk,iii,1,2),Ub2(1,j)) -> & +0.5d0*scalar2(vv(1),Dtobr2(1,l)) -> enddo -> enddo -> enddo -> cd goto 1112 -> C Contribution from graph IV -> 1110 continue -> call transpose2(EE(1,1,itj),auxmat(1,1)) -> call matmat2(auxmat(1,1),AEA(1,1,2),pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> eello5_4=scalar2(AEAb1(1,2,2),b1(1,itj)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,j)) -> C Explicit gradient in virtual-dihedral angles. -> g_corr5_loc(j-1)=g_corr5_loc(j-1) -> & -0.5d0*ekont*scalar2(vv(1),Ctobrder(1,j)) -> call matmat2(auxmat(1,1),AEAderg(1,1,2),pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> g_corr5_loc(k-1)=g_corr5_loc(k-1) -> & +ekont*(scalar2(AEAb1derg(1,2,2),b1(1,itj)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,j))) -> C Cartesian gradient -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> call matmat2(auxmat(1,1),AEAderx(1,1,lll,kkk,iii,2), -> & pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> derx(lll,kkk,3-iii)=derx(lll,kkk,3-iii) -> & +scalar2(AEAb1derx(1,lll,kkk,iii,2,2),b1(1,itj)) -> & -0.5d0*scalar2(vv(1),Ctobr(1,j)) -> enddo -> enddo -> enddo -> endif -> 1112 continue -> eel5=eello5_1+eello5_2+eello5_3+eello5_4 -> cd if (i.eq.2 .and. j.eq.8 .and. k.eq.3 .and. l.eq.7) then -> cd write (2,*) 'ijkl',i,j,k,l -> cd write (2,*) 'eello5_1',eello5_1,' eello5_2',eello5_2, -> cd & ' eello5_3',eello5_3,' eello5_4',eello5_4 -> cd endif -> cd write(iout,*) 'eello5_1',eello5_1,' eel5_1_num',16*eel5_1_num -> cd write(iout,*) 'eello5_2',eello5_2,' eel5_2_num',16*eel5_2_num -> cd write(iout,*) 'eello5_3',eello5_3,' eel5_3_num',16*eel5_3_num -> cd write(iout,*) 'eello5_4',eello5_4,' eel5_4_num',16*eel5_4_num -> if (j.lt.nres-1) then -> j1=j+1 -> j2=j-1 -> else -> j1=j-1 -> j2=j-2 -> endif -> if (l.lt.nres-1) then -> l1=l+1 -> l2=l-1 -> else -> l1=l-1 -> l2=l-2 -> endif -> cd eij=1.0d0 -> cd ekl=1.0d0 -> cd ekont=1.0d0 -> cd write (2,*) 'eij',eij,' ekl',ekl,' ekont',ekont -> do ll=1,3 -> ggg1(ll)=eel5*g_contij(ll,1) -> ggg2(ll)=eel5*g_contij(ll,2) -> cold ghalf=0.5d0*eel5*ekl*gacont_hbr(ll,jj,i) -> ghalf=0.5d0*ggg1(ll) -> cd ghalf=0.0d0 -> gradcorr5(ll,i)=gradcorr5(ll,i)+ghalf+ekont*derx(ll,2,1) -> gradcorr5(ll,i+1)=gradcorr5(ll,i+1)+ekont*derx(ll,3,1) -> gradcorr5(ll,j)=gradcorr5(ll,j)+ghalf+ekont*derx(ll,4,1) -> gradcorr5(ll,j1)=gradcorr5(ll,j1)+ekont*derx(ll,5,1) -> cold ghalf=0.5d0*eel5*eij*gacont_hbr(ll,kk,k) -> ghalf=0.5d0*ggg2(ll) -> cd ghalf=0.0d0 -> gradcorr5(ll,k)=gradcorr5(ll,k)+ghalf+ekont*derx(ll,2,2) -> gradcorr5(ll,k+1)=gradcorr5(ll,k+1)+ekont*derx(ll,3,2) -> gradcorr5(ll,l)=gradcorr5(ll,l)+ghalf+ekont*derx(ll,4,2) -> gradcorr5(ll,l1)=gradcorr5(ll,l1)+ekont*derx(ll,5,2) -> enddo -> cd goto 1112 -> do m=i+1,j-1 -> do ll=1,3 -> cold gradcorr5(ll,m)=gradcorr5(ll,m)+eel5*ekl*gacont_hbr(ll,jj,i) -> gradcorr5(ll,m)=gradcorr5(ll,m)+ggg1(ll) -> enddo -> enddo -> do m=k+1,l-1 -> do ll=1,3 -> cold gradcorr5(ll,m)=gradcorr5(ll,m)+eel5*eij*gacont_hbr(ll,kk,k) -> gradcorr5(ll,m)=gradcorr5(ll,m)+ggg2(ll) -> enddo -> enddo -> c1112 continue -> do m=i+2,j2 -> do ll=1,3 -> gradcorr5(ll,m)=gradcorr5(ll,m)+ekont*derx(ll,1,1) -> enddo -> enddo -> do m=k+2,l2 -> do ll=1,3 -> gradcorr5(ll,m)=gradcorr5(ll,m)+ekont*derx(ll,1,2) -> enddo -> enddo -> cd do iii=1,nres-3 -> cd write (2,*) iii,g_corr5_loc(iii) -> cd enddo -> eello5=ekont*eel5 -> cd write (2,*) 'ekont',ekont -> cd write (iout,*) 'eello5',ekont*eel5 -> return -> end -> c-------------------------------------------------------------------------- -> double precision function eello6(i,j,k,l,jj,kk) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.FFIELD' -> double precision ggg1(3),ggg2(3) -> cd if (i.ne.1 .or. j.ne.3 .or. k.ne.2 .or. l.ne.4) then -> cd eello6=0.0d0 -> cd return -> cd endif -> cd write (iout,*) -> cd & 'EELLO6: Contacts have occurred for peptide groups',i,j, -> cd & ' and',k,l -> eello6_1=0.0d0 -> eello6_2=0.0d0 -> eello6_3=0.0d0 -> eello6_4=0.0d0 -> eello6_5=0.0d0 -> eello6_6=0.0d0 -> cd call checkint6(i,j,k,l,jj,kk,eel6_1_num,eel6_2_num, -> cd & eel6_3_num,eel6_4_num,eel6_5_num,eel6_6_num) -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> derx(lll,kkk,iii)=0.0d0 -> enddo -> enddo -> enddo -> cd eij=facont_hb(jj,i) -> cd ekl=facont_hb(kk,k) -> cd ekont=eij*ekl -> cd eij=1.0d0 -> cd ekl=1.0d0 -> cd ekont=1.0d0 -> if (l.eq.j+1) then -> eello6_1=eello6_graph1(i,j,k,l,1,.false.) -> eello6_2=eello6_graph1(j,i,l,k,2,.false.) -> eello6_3=eello6_graph2(i,j,k,l,jj,kk,.false.) -> eello6_4=eello6_graph4(i,j,k,l,jj,kk,1,.false.) -> eello6_5=eello6_graph4(j,i,l,k,jj,kk,2,.false.) -> eello6_6=eello6_graph3(i,j,k,l,jj,kk,.false.) -> else -> eello6_1=eello6_graph1(i,j,k,l,1,.false.) -> eello6_2=eello6_graph1(l,k,j,i,2,.true.) -> eello6_3=eello6_graph2(i,l,k,j,jj,kk,.true.) -> eello6_4=eello6_graph4(i,j,k,l,jj,kk,1,.false.) -> if (wturn6.eq.0.0d0 .or. j.ne.i+4) then -> eello6_5=eello6_graph4(l,k,j,i,kk,jj,2,.true.) -> else -> eello6_5=0.0d0 -> endif -> eello6_6=eello6_graph3(i,l,k,j,jj,kk,.true.) -> endif -> C If turn contributions are considered, they will be handled separately. -> eel6=eello6_1+eello6_2+eello6_3+eello6_4+eello6_5+eello6_6 -> cd write(iout,*) 'eello6_1',eello6_1,' eel6_1_num',16*eel6_1_num -> cd write(iout,*) 'eello6_2',eello6_2,' eel6_2_num',16*eel6_2_num -> cd write(iout,*) 'eello6_3',eello6_3,' eel6_3_num',16*eel6_3_num -> cd write(iout,*) 'eello6_4',eello6_4,' eel6_4_num',16*eel6_4_num -> cd write(iout,*) 'eello6_5',eello6_5,' eel6_5_num',16*eel6_5_num -> cd write(iout,*) 'eello6_6',eello6_6,' eel6_6_num',16*eel6_6_num -> cd goto 1112 -> if (j.lt.nres-1) then -> j1=j+1 -> j2=j-1 -> else -> j1=j-1 -> j2=j-2 -> endif -> if (l.lt.nres-1) then -> l1=l+1 -> l2=l-1 -> else -> l1=l-1 -> l2=l-2 -> endif -> do ll=1,3 -> ggg1(ll)=eel6*g_contij(ll,1) -> ggg2(ll)=eel6*g_contij(ll,2) -> cold ghalf=0.5d0*eel6*ekl*gacont_hbr(ll,jj,i) -> ghalf=0.5d0*ggg1(ll) -> cd ghalf=0.0d0 -> gradcorr6(ll,i)=gradcorr6(ll,i)+ghalf+ekont*derx(ll,2,1) -> gradcorr6(ll,i+1)=gradcorr6(ll,i+1)+ekont*derx(ll,3,1) -> gradcorr6(ll,j)=gradcorr6(ll,j)+ghalf+ekont*derx(ll,4,1) -> gradcorr6(ll,j1)=gradcorr6(ll,j1)+ekont*derx(ll,5,1) -> ghalf=0.5d0*ggg2(ll) -> cold ghalf=0.5d0*eel6*eij*gacont_hbr(ll,kk,k) -> cd ghalf=0.0d0 -> gradcorr6(ll,k)=gradcorr6(ll,k)+ghalf+ekont*derx(ll,2,2) -> gradcorr6(ll,k+1)=gradcorr6(ll,k+1)+ekont*derx(ll,3,2) -> gradcorr6(ll,l)=gradcorr6(ll,l)+ghalf+ekont*derx(ll,4,2) -> gradcorr6(ll,l1)=gradcorr6(ll,l1)+ekont*derx(ll,5,2) -> enddo -> cd goto 1112 -> do m=i+1,j-1 -> do ll=1,3 -> cold gradcorr6(ll,m)=gradcorr6(ll,m)+eel6*ekl*gacont_hbr(ll,jj,i) -> gradcorr6(ll,m)=gradcorr6(ll,m)+ggg1(ll) -> enddo -> enddo -> do m=k+1,l-1 -> do ll=1,3 -> cold gradcorr6(ll,m)=gradcorr6(ll,m)+eel6*eij*gacont_hbr(ll,kk,k) -> gradcorr6(ll,m)=gradcorr6(ll,m)+ggg2(ll) -> enddo -> enddo -> 1112 continue -> do m=i+2,j2 -> do ll=1,3 -> gradcorr6(ll,m)=gradcorr6(ll,m)+ekont*derx(ll,1,1) -> enddo -> enddo -> do m=k+2,l2 -> do ll=1,3 -> gradcorr6(ll,m)=gradcorr6(ll,m)+ekont*derx(ll,1,2) -> enddo -> enddo -> cd do iii=1,nres-3 -> cd write (2,*) iii,g_corr6_loc(iii) -> cd enddo -> eello6=ekont*eel6 -> cd write (2,*) 'ekont',ekont -> cd write (iout,*) 'eello6',ekont*eel6 -> return -> end -> c-------------------------------------------------------------------------- -> double precision function eello6_graph1(i,j,k,l,imat,swap) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> double precision vv(2),vv1(2),pizda(2,2),auxmat(2,2),pizda1(2,2) -> logical swap -> logical lprn -> common /kutas/ lprn -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> C -> C Parallel Antiparallel -> C -> C o o -> C /l\ /j\ -> C / \ / \ -> C /| o | | o |\ -> C \ j|/k\| / \ |/k\|l / -> C \ / \ / \ / \ / -> C o o o o -> C i i -> C -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> itk=itortyp(itype(k)) -> s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i)) -> s2=-scalar2(AEAb2(1,1,imat),Ug2Db1t(1,k)) -> s3= scalar2(AEAb2(1,1,imat),CUgb2(1,k)) -> call transpose2(EUgC(1,1,k),auxmat(1,1)) -> call matmat2(AEA(1,1,imat),auxmat(1,1),pizda1(1,1)) -> vv1(1)=pizda1(1,1)-pizda1(2,2) -> vv1(2)=pizda1(1,2)+pizda1(2,1) -> s4=0.5d0*scalar2(vv1(1),Dtobr2(1,i)) -> vv(1)=AEAb1(1,2,imat)*b1(1,itk)-AEAb1(2,2,imat)*b1(2,itk) -> vv(2)=AEAb1(1,2,imat)*b1(2,itk)+AEAb1(2,2,imat)*b1(1,itk) -> s5=scalar2(vv(1),Dtobr2(1,i)) -> cd write (2,*) 's1',s1,' s2',s2,' s3',s3,' s4', s4,' s5',s5 -> eello6_graph1=-0.5d0*(s1+s2+s3+s4+s5) -> if (i.gt.1) g_corr6_loc(i-1)=g_corr6_loc(i-1) -> & -0.5d0*ekont*(scalar2(AEAb1(1,2,imat),CUgb2der(1,i)) -> & -scalar2(AEAb2derg(1,2,1,imat),Ug2Db1t(1,k)) -> & +scalar2(AEAb2derg(1,2,1,imat),CUgb2(1,k)) -> & +0.5d0*scalar2(vv1(1),Dtobr2der(1,i)) -> & +scalar2(vv(1),Dtobr2der(1,i))) -> call matmat2(AEAderg(1,1,imat),auxmat(1,1),pizda1(1,1)) -> vv1(1)=pizda1(1,1)-pizda1(2,2) -> vv1(2)=pizda1(1,2)+pizda1(2,1) -> vv(1)=AEAb1derg(1,2,imat)*b1(1,itk)-AEAb1derg(2,2,imat)*b1(2,itk) -> vv(2)=AEAb1derg(1,2,imat)*b1(2,itk)+AEAb1derg(2,2,imat)*b1(1,itk) -> if (l.eq.j+1) then -> g_corr6_loc(l-1)=g_corr6_loc(l-1) -> & +ekont*(-0.5d0*(scalar2(AEAb1derg(1,2,imat),CUgb2(1,i)) -> & -scalar2(AEAb2derg(1,1,1,imat),Ug2Db1t(1,k)) -> & +scalar2(AEAb2derg(1,1,1,imat),CUgb2(1,k)) -> & +0.5d0*scalar2(vv1(1),Dtobr2(1,i))+scalar2(vv(1),Dtobr2(1,i)))) -> else -> g_corr6_loc(j-1)=g_corr6_loc(j-1) -> & +ekont*(-0.5d0*(scalar2(AEAb1derg(1,2,imat),CUgb2(1,i)) -> & -scalar2(AEAb2derg(1,1,1,imat),Ug2Db1t(1,k)) -> & +scalar2(AEAb2derg(1,1,1,imat),CUgb2(1,k)) -> & +0.5d0*scalar2(vv1(1),Dtobr2(1,i))+scalar2(vv(1),Dtobr2(1,i)))) -> endif -> call transpose2(EUgCder(1,1,k),auxmat(1,1)) -> call matmat2(AEA(1,1,imat),auxmat(1,1),pizda1(1,1)) -> vv1(1)=pizda1(1,1)-pizda1(2,2) -> vv1(2)=pizda1(1,2)+pizda1(2,1) -> if (k.gt.1) g_corr6_loc(k-1)=g_corr6_loc(k-1) -> & +ekont*(-0.5d0*(-scalar2(AEAb2(1,1,imat),Ug2Db1tder(1,k)) -> & +scalar2(AEAb2(1,1,imat),CUgb2der(1,k)) -> & +0.5d0*scalar2(vv1(1),Dtobr2(1,i)))) -> do iii=1,2 -> if (swap) then -> ind=3-iii -> else -> ind=iii -> endif -> do kkk=1,5 -> do lll=1,3 -> s1= scalar2(AEAb1derx(1,lll,kkk,iii,2,imat),CUgb2(1,i)) -> s2=-scalar2(AEAb2derx(1,lll,kkk,iii,1,imat),Ug2Db1t(1,k)) -> s3= scalar2(AEAb2derx(1,lll,kkk,iii,1,imat),CUgb2(1,k)) -> call transpose2(EUgC(1,1,k),auxmat(1,1)) -> call matmat2(AEAderx(1,1,lll,kkk,iii,imat),auxmat(1,1), -> & pizda1(1,1)) -> vv1(1)=pizda1(1,1)-pizda1(2,2) -> vv1(2)=pizda1(1,2)+pizda1(2,1) -> s4=0.5d0*scalar2(vv1(1),Dtobr2(1,i)) -> vv(1)=AEAb1derx(1,lll,kkk,iii,2,imat)*b1(1,itk) -> & -AEAb1derx(2,lll,kkk,iii,2,imat)*b1(2,itk) -> vv(2)=AEAb1derx(1,lll,kkk,iii,2,imat)*b1(2,itk) -> & +AEAb1derx(2,lll,kkk,iii,2,imat)*b1(1,itk) -> s5=scalar2(vv(1),Dtobr2(1,i)) -> derx(lll,kkk,ind)=derx(lll,kkk,ind)-0.5d0*(s1+s2+s3+s4+s5) -> enddo -> enddo -> enddo -> return -> end -> c---------------------------------------------------------------------------- -> double precision function eello6_graph2(i,j,k,l,jj,kk,swap) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> logical swap -> double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2), -> & auxvec1(2),auxvec2(1),auxmat1(2,2) -> logical lprn -> common /kutas/ lprn -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> C -> C Parallel Antiparallel -> C -> C o o -> C \ /l\ /j\ / -> C \ / \ / \ / -> C o| o | | o |o -> C \ j|/k\| \ |/k\|l -> C \ / \ \ / \ -> C o o -> C i i -> C -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l -> C AL 7/4/01 s1 would occur in the sixth-order moment, -> C but not in a cluster cumulant -> #ifdef MOMENT -> s1=dip(1,jj,i)*dip(1,kk,k) -> #endif -> call matvec2(ADtEA1(1,1,1),Ub2(1,k),auxvec(1)) -> s2=-0.5d0*scalar2(Ub2(1,i),auxvec(1)) -> call matvec2(ADtEA(1,1,2),Ub2(1,l),auxvec1(1)) -> s3=-0.5d0*scalar2(Ub2(1,j),auxvec1(1)) -> call transpose2(EUg(1,1,k),auxmat(1,1)) -> call matmat2(ADtEA1(1,1,1),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> s4=-0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> cd write (2,*) 'eello6_graph2:','s1',s1,' s2',s2,' s3',s3,' s4',s4 -> #ifdef MOMENT -> eello6_graph2=-(s1+s2+s3+s4) -> #else -> eello6_graph2=-(s2+s3+s4) -> #endif -> c eello6_graph2=-s3 -> C Derivatives in gamma(i-1) -> if (i.gt.1) then -> #ifdef MOMENT -> s1=dipderg(1,jj,i)*dip(1,kk,k) -> #endif -> s2=-0.5d0*scalar2(Ub2der(1,i),auxvec(1)) -> call matvec2(ADtEAderg(1,1,1,2),Ub2(1,l),auxvec2(1)) -> s3=-0.5d0*scalar2(Ub2(1,j),auxvec2(1)) -> s4=-0.25d0*scalar2(vv(1),Dtobr2der(1,i)) -> #ifdef MOMENT -> g_corr6_loc(i-1)=g_corr6_loc(i-1)-ekont*(s1+s2+s3+s4) -> #else -> g_corr6_loc(i-1)=g_corr6_loc(i-1)-ekont*(s2+s3+s4) -> #endif -> c g_corr6_loc(i-1)=g_corr6_loc(i-1)-s3 -> endif -> C Derivatives in gamma(k-1) -> #ifdef MOMENT -> s1=dip(1,jj,i)*dipderg(1,kk,k) -> #endif -> call matvec2(ADtEA1(1,1,1),Ub2der(1,k),auxvec2(1)) -> s2=-0.5d0*scalar2(Ub2(1,i),auxvec2(1)) -> call matvec2(ADtEAderg(1,1,2,2),Ub2(1,l),auxvec2(1)) -> s3=-0.5d0*scalar2(Ub2(1,j),auxvec2(1)) -> call transpose2(EUgder(1,1,k),auxmat1(1,1)) -> call matmat2(ADtEA1(1,1,1),auxmat1(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> s4=-0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> #ifdef MOMENT -> g_corr6_loc(k-1)=g_corr6_loc(k-1)-ekont*(s1+s2+s3+s4) -> #else -> g_corr6_loc(k-1)=g_corr6_loc(k-1)-ekont*(s2+s3+s4) -> #endif -> c g_corr6_loc(k-1)=g_corr6_loc(k-1)-s3 -> C Derivatives in gamma(j-1) or gamma(l-1) -> if (j.gt.1) then -> #ifdef MOMENT -> s1=dipderg(3,jj,i)*dip(1,kk,k) -> #endif -> call matvec2(ADtEA1derg(1,1,1,1),Ub2(1,k),auxvec2(1)) -> s2=-0.5d0*scalar2(Ub2(1,i),auxvec2(1)) -> s3=-0.5d0*scalar2(Ub2der(1,j),auxvec1(1)) -> call matmat2(ADtEA1derg(1,1,1,1),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> s4=-0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> #ifdef MOMENT -> if (swap) then -> g_corr6_loc(l-1)=g_corr6_loc(l-1)-ekont*s1 -> else -> g_corr6_loc(j-1)=g_corr6_loc(j-1)-ekont*s1 -> endif -> #endif -> g_corr6_loc(j-1)=g_corr6_loc(j-1)-ekont*(s2+s3+s4) -> c g_corr6_loc(j-1)=g_corr6_loc(j-1)-s3 -> endif -> C Derivatives in gamma(l-1) or gamma(j-1) -> if (l.gt.1) then -> #ifdef MOMENT -> s1=dip(1,jj,i)*dipderg(3,kk,k) -> #endif -> call matvec2(ADtEA1derg(1,1,2,1),Ub2(1,k),auxvec2(1)) -> s2=-0.5d0*scalar2(Ub2(1,i),auxvec2(1)) -> call matvec2(ADtEA(1,1,2),Ub2der(1,l),auxvec2(1)) -> s3=-0.5d0*scalar2(Ub2(1,j),auxvec2(1)) -> call matmat2(ADtEA1derg(1,1,2,1),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> s4=-0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> #ifdef MOMENT -> if (swap) then -> g_corr6_loc(j-1)=g_corr6_loc(j-1)-ekont*s1 -> else -> g_corr6_loc(l-1)=g_corr6_loc(l-1)-ekont*s1 -> endif -> #endif -> g_corr6_loc(l-1)=g_corr6_loc(l-1)-ekont*(s2+s3+s4) -> c g_corr6_loc(l-1)=g_corr6_loc(l-1)-s3 -> endif -> C Cartesian derivatives. -> if (lprn) then -> write (2,*) 'In eello6_graph2' -> do iii=1,2 -> write (2,*) 'iii=',iii -> do kkk=1,5 -> write (2,*) 'kkk=',kkk -> do jjj=1,2 -> write (2,'(3(2f10.5),5x)') -> & ((ADtEA1derx(jjj,mmm,lll,kkk,iii,1),mmm=1,2),lll=1,3) -> enddo -> enddo -> enddo -> endif -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> #ifdef MOMENT -> if (iii.eq.1) then -> s1=dipderx(lll,kkk,1,jj,i)*dip(1,kk,k) -> else -> s1=dip(1,jj,i)*dipderx(lll,kkk,1,kk,k) -> endif -> #endif -> call matvec2(ADtEA1derx(1,1,lll,kkk,iii,1),Ub2(1,k), -> & auxvec(1)) -> s2=-0.5d0*scalar2(Ub2(1,i),auxvec(1)) -> call matvec2(ADtEAderx(1,1,lll,kkk,iii,2),Ub2(1,l), -> & auxvec(1)) -> s3=-0.5d0*scalar2(Ub2(1,j),auxvec(1)) -> call transpose2(EUg(1,1,k),auxmat(1,1)) -> call matmat2(ADtEA1derx(1,1,lll,kkk,iii,1),auxmat(1,1), -> & pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(1,2)+pizda(2,1) -> s4=-0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> cd write (2,*) 's1',s1,' s2',s2,' s3',s3,' s4',s4 -> #ifdef MOMENT -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-(s1+s2+s4) -> #else -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-(s2+s4) -> #endif -> if (swap) then -> derx(lll,kkk,3-iii)=derx(lll,kkk,3-iii)-s3 -> else -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-s3 -> endif -> enddo -> enddo -> enddo -> return -> end -> c---------------------------------------------------------------------------- -> double precision function eello6_graph3(i,j,k,l,jj,kk,swap) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) -> logical swap -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> C -> C Parallel Antiparallel -> C -> C o o -> C /l\ / \ /j\ -> C / \ / \ / \ -> C /| o |o o| o |\ -> C j|/k\| / |/k\|l / -> C / \ / / \ / -> C / o / o -> C i i -> C -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> C -> C 4/7/01 AL Component s1 was removed, because it pertains to the respective -> C energy moment and not to the cluster cumulant. -> iti=itortyp(itype(i)) -> if (j.lt.nres-1) then -> itj1=itortyp(itype(j+1)) -> else -> itj1=ntortyp+1 -> endif -> itk=itortyp(itype(k)) -> itk1=itortyp(itype(k+1)) -> if (l.lt.nres-1) then -> itl1=itortyp(itype(l+1)) -> else -> itl1=ntortyp+1 -> endif -> #ifdef MOMENT -> s1=dip(4,jj,i)*dip(4,kk,k) -> #endif -> call matvec2(AECA(1,1,1),b1(1,itk1),auxvec(1)) -> s2=0.5d0*scalar2(b1(1,itk),auxvec(1)) -> call matvec2(AECA(1,1,2),b1(1,itl1),auxvec(1)) -> s3=0.5d0*scalar2(b1(1,itj1),auxvec(1)) -> call transpose2(EE(1,1,itk),auxmat(1,1)) -> call matmat2(auxmat(1,1),AECA(1,1,1),pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> s4=-0.25d0*scalar2(vv(1),Ctobr(1,k)) -> cd write (2,*) 'eello6_graph3:','s1',s1,' s2',s2,' s3',s3,' s4',s4 -> #ifdef MOMENT -> eello6_graph3=-(s1+s2+s3+s4) -> #else -> eello6_graph3=-(s2+s3+s4) -> #endif -> c eello6_graph3=-s4 -> C Derivatives in gamma(k-1) -> call matvec2(AECAderg(1,1,2),b1(1,itl1),auxvec(1)) -> s3=0.5d0*scalar2(b1(1,itj1),auxvec(1)) -> s4=-0.25d0*scalar2(vv(1),Ctobrder(1,k)) -> g_corr6_loc(k-1)=g_corr6_loc(k-1)-ekont*(s3+s4) -> C Derivatives in gamma(l-1) -> call matvec2(AECAderg(1,1,1),b1(1,itk1),auxvec(1)) -> s2=0.5d0*scalar2(b1(1,itk),auxvec(1)) -> call matmat2(auxmat(1,1),AECAderg(1,1,1),pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> s4=-0.25d0*scalar2(vv(1),Ctobr(1,k)) -> g_corr6_loc(l-1)=g_corr6_loc(l-1)-ekont*(s2+s4) -> C Cartesian derivatives. -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> #ifdef MOMENT -> if (iii.eq.1) then -> s1=dipderx(lll,kkk,4,jj,i)*dip(4,kk,k) -> else -> s1=dip(4,jj,i)*dipderx(lll,kkk,4,kk,k) -> endif -> #endif -> call matvec2(AECAderx(1,1,lll,kkk,iii,1),b1(1,itk1), -> & auxvec(1)) -> s2=0.5d0*scalar2(b1(1,itk),auxvec(1)) -> call matvec2(AECAderx(1,1,lll,kkk,iii,2),b1(1,itl1), -> & auxvec(1)) -> s3=0.5d0*scalar2(b1(1,itj1),auxvec(1)) -> call matmat2(auxmat(1,1),AECAderx(1,1,lll,kkk,iii,1), -> & pizda(1,1)) -> vv(1)=pizda(1,1)+pizda(2,2) -> vv(2)=pizda(2,1)-pizda(1,2) -> s4=-0.25d0*scalar2(vv(1),Ctobr(1,k)) -> #ifdef MOMENT -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-(s1+s2+s4) -> #else -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-(s2+s4) -> #endif -> if (swap) then -> derx(lll,kkk,3-iii)=derx(lll,kkk,3-iii)-s3 -> else -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-s3 -> endif -> c derx(lll,kkk,iii)=derx(lll,kkk,iii)-s4 -> enddo -> enddo -> enddo -> return -> end -> c---------------------------------------------------------------------------- -> double precision function eello6_graph4(i,j,k,l,jj,kk,imat,swap) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> include 'COMMON.FFIELD' -> double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2), -> & auxvec1(2),auxmat1(2,2) -> logical swap -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> C -> C Parallel Antiparallel -> C -> C o o -> C /l\ / \ /j\ -> C / \ / \ / \ -> C /| o |o o| o |\ -> C \ j|/k\| \ |/k\|l -> C \ / \ \ / \ -> C o \ o \ -> C i i -> C -> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -> C -> C 4/7/01 AL Component s1 was removed, because it pertains to the respective -> C energy moment and not to the cluster cumulant. -> cd write (2,*) 'eello_graph4: wturn6',wturn6 -> iti=itortyp(itype(i)) -> itj=itortyp(itype(j)) -> if (j.lt.nres-1) then -> itj1=itortyp(itype(j+1)) -> else -> itj1=ntortyp+1 -> endif -> itk=itortyp(itype(k)) -> if (k.lt.nres-1) then -> itk1=itortyp(itype(k+1)) -> else -> itk1=ntortyp+1 -> endif -> itl=itortyp(itype(l)) -> if (l.lt.nres-1) then -> itl1=itortyp(itype(l+1)) -> else -> itl1=ntortyp+1 -> endif -> cd write (2,*) 'eello6_graph4:','i',i,' j',j,' k',k,' l',l -> cd write (2,*) 'iti',iti,' itj',itj,' itj1',itj1,' itk',itk, -> cd & ' itl',itl,' itl1',itl1 -> #ifdef MOMENT -> if (imat.eq.1) then -> s1=dip(3,jj,i)*dip(3,kk,k) -> else -> s1=dip(2,jj,j)*dip(2,kk,l) -> endif -> #endif -> call matvec2(AECA(1,1,imat),Ub2(1,k),auxvec(1)) -> s2=0.5d0*scalar2(Ub2(1,i),auxvec(1)) -> if (j.eq.l+1) then -> call matvec2(ADtEA1(1,1,3-imat),b1(1,itj1),auxvec1(1)) -> s3=-0.5d0*scalar2(b1(1,itj),auxvec1(1)) -> else -> call matvec2(ADtEA1(1,1,3-imat),b1(1,itl1),auxvec1(1)) -> s3=-0.5d0*scalar2(b1(1,itl),auxvec1(1)) -> endif -> call transpose2(EUg(1,1,k),auxmat(1,1)) -> call matmat2(AECA(1,1,imat),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(2,1)+pizda(1,2) -> s4=0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> cd write (2,*) 'eello6_graph4:','s1',s1,' s2',s2,' s3',s3,' s4',s4 -> #ifdef MOMENT -> eello6_graph4=-(s1+s2+s3+s4) -> #else -> eello6_graph4=-(s2+s3+s4) -> #endif -> C Derivatives in gamma(i-1) -> if (i.gt.1) then -> #ifdef MOMENT -> if (imat.eq.1) then -> s1=dipderg(2,jj,i)*dip(3,kk,k) -> else -> s1=dipderg(4,jj,j)*dip(2,kk,l) -> endif -> #endif -> s2=0.5d0*scalar2(Ub2der(1,i),auxvec(1)) -> if (j.eq.l+1) then -> call matvec2(ADtEA1derg(1,1,1,3-imat),b1(1,itj1),auxvec1(1)) -> s3=-0.5d0*scalar2(b1(1,itj),auxvec1(1)) -> else -> call matvec2(ADtEA1derg(1,1,1,3-imat),b1(1,itl1),auxvec1(1)) -> s3=-0.5d0*scalar2(b1(1,itl),auxvec1(1)) -> endif -> s4=0.25d0*scalar2(vv(1),Dtobr2der(1,i)) -> if (wturn6.gt.0.0d0 .and. k.eq.l+4 .and. i.eq.j+2) then -> cd write (2,*) 'turn6 derivatives' -> #ifdef MOMENT -> gel_loc_turn6(i-1)=gel_loc_turn6(i-1)-ekont*(s1+s2+s3+s4) -> #else -> gel_loc_turn6(i-1)=gel_loc_turn6(i-1)-ekont*(s2+s3+s4) -> #endif -> else -> #ifdef MOMENT -> g_corr6_loc(i-1)=g_corr6_loc(i-1)-ekont*(s1+s2+s3+s4) -> #else -> g_corr6_loc(i-1)=g_corr6_loc(i-1)-ekont*(s2+s3+s4) -> #endif -> endif -> endif -> C Derivatives in gamma(k-1) -> #ifdef MOMENT -> if (imat.eq.1) then -> s1=dip(3,jj,i)*dipderg(2,kk,k) -> else -> s1=dip(2,jj,j)*dipderg(4,kk,l) -> endif -> #endif -> call matvec2(AECA(1,1,imat),Ub2der(1,k),auxvec1(1)) -> s2=0.5d0*scalar2(Ub2(1,i),auxvec1(1)) -> if (j.eq.l+1) then -> call matvec2(ADtEA1derg(1,1,2,3-imat),b1(1,itj1),auxvec1(1)) -> s3=-0.5d0*scalar2(b1(1,itj),auxvec1(1)) -> else -> call matvec2(ADtEA1derg(1,1,2,3-imat),b1(1,itl1),auxvec1(1)) -> s3=-0.5d0*scalar2(b1(1,itl),auxvec1(1)) -> endif -> call transpose2(EUgder(1,1,k),auxmat1(1,1)) -> call matmat2(AECA(1,1,imat),auxmat1(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(2,1)+pizda(1,2) -> s4=0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> if (wturn6.gt.0.0d0 .and. k.eq.l+4 .and. i.eq.j+2) then -> #ifdef MOMENT -> gel_loc_turn6(k-1)=gel_loc_turn6(k-1)-ekont*(s1+s2+s3+s4) -> #else -> gel_loc_turn6(k-1)=gel_loc_turn6(k-1)-ekont*(s2+s3+s4) -> #endif -> else -> #ifdef MOMENT -> g_corr6_loc(k-1)=g_corr6_loc(k-1)-ekont*(s1+s2+s3+s4) -> #else -> g_corr6_loc(k-1)=g_corr6_loc(k-1)-ekont*(s2+s3+s4) -> #endif -> endif -> C Derivatives in gamma(j-1) or gamma(l-1) -> if (l.eq.j+1 .and. l.gt.1) then -> call matvec2(AECAderg(1,1,imat),Ub2(1,k),auxvec(1)) -> s2=0.5d0*scalar2(Ub2(1,i),auxvec(1)) -> call matmat2(AECAderg(1,1,imat),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(2,1)+pizda(1,2) -> s4=0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> g_corr6_loc(l-1)=g_corr6_loc(l-1)-ekont*(s2+s4) -> else if (j.gt.1) then -> call matvec2(AECAderg(1,1,imat),Ub2(1,k),auxvec(1)) -> s2=0.5d0*scalar2(Ub2(1,i),auxvec(1)) -> call matmat2(AECAderg(1,1,imat),auxmat(1,1),pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(2,1)+pizda(1,2) -> s4=0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> if (wturn6.gt.0.0d0 .and. k.eq.l+4 .and. i.eq.j+2) then -> gel_loc_turn6(j-1)=gel_loc_turn6(j-1)-ekont*(s2+s4) -> else -> g_corr6_loc(j-1)=g_corr6_loc(j-1)-ekont*(s2+s4) -> endif -> endif -> C Cartesian derivatives. -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> #ifdef MOMENT -> if (iii.eq.1) then -> if (imat.eq.1) then -> s1=dipderx(lll,kkk,3,jj,i)*dip(3,kk,k) -> else -> s1=dipderx(lll,kkk,2,jj,j)*dip(2,kk,l) -> endif -> else -> if (imat.eq.1) then -> s1=dip(3,jj,i)*dipderx(lll,kkk,3,kk,k) -> else -> s1=dip(2,jj,j)*dipderx(lll,kkk,2,kk,l) -> endif -> endif -> #endif -> call matvec2(AECAderx(1,1,lll,kkk,iii,imat),Ub2(1,k), -> & auxvec(1)) -> s2=0.5d0*scalar2(Ub2(1,i),auxvec(1)) -> if (j.eq.l+1) then -> call matvec2(ADtEA1derx(1,1,lll,kkk,iii,3-imat), -> & b1(1,itj1),auxvec(1)) -> s3=-0.5d0*scalar2(b1(1,itj),auxvec(1)) -> else -> call matvec2(ADtEA1derx(1,1,lll,kkk,iii,3-imat), -> & b1(1,itl1),auxvec(1)) -> s3=-0.5d0*scalar2(b1(1,itl),auxvec(1)) -> endif -> call matmat2(AECAderx(1,1,lll,kkk,iii,imat),auxmat(1,1), -> & pizda(1,1)) -> vv(1)=pizda(1,1)-pizda(2,2) -> vv(2)=pizda(2,1)+pizda(1,2) -> s4=0.25d0*scalar2(vv(1),Dtobr2(1,i)) -> if (swap) then -> if (wturn6.gt.0.0d0 .and. k.eq.l+4 .and. i.eq.j+2) then -> #ifdef MOMENT -> derx_turn(lll,kkk,3-iii)=derx_turn(lll,kkk,3-iii) -> & -(s1+s2+s4) -> #else -> derx_turn(lll,kkk,3-iii)=derx_turn(lll,kkk,3-iii) -> & -(s2+s4) -> #endif -> derx_turn(lll,kkk,iii)=derx_turn(lll,kkk,iii)-s3 -> else -> #ifdef MOMENT -> derx(lll,kkk,3-iii)=derx(lll,kkk,3-iii)-(s1+s2+s4) -> #else -> derx(lll,kkk,3-iii)=derx(lll,kkk,3-iii)-(s2+s4) -> #endif -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-s3 -> endif -> else -> #ifdef MOMENT -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-(s1+s2+s4) -> #else -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-(s2+s4) -> #endif -> if (l.eq.j+1) then -> derx(lll,kkk,iii)=derx(lll,kkk,iii)-s3 -> else -> derx(lll,kkk,3-iii)=derx(lll,kkk,3-iii)-s3 -> endif -> endif -> enddo -> enddo -> enddo -> return -> end -> c---------------------------------------------------------------------------- -> double precision function eello_turn6(i,jj,kk) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VAR' -> include 'COMMON.GEO' -> double precision vtemp1(2),vtemp2(2),vtemp3(2),vtemp4(2), -> & atemp(2,2),auxmat(2,2),achuj_temp(2,2),gtemp(2,2),gvec(2), -> & ggg1(3),ggg2(3) -> double precision vtemp1d(2),vtemp2d(2),vtemp3d(2),vtemp4d(2), -> & atempd(2,2),auxmatd(2,2),achuj_tempd(2,2),gtempd(2,2),gvecd(2) -> C 4/7/01 AL Components s1, s8, and s13 were removed, because they pertain to -> C the respective energy moment and not to the cluster cumulant. -> s1=0.0d0 -> s8=0.0d0 -> s13=0.0d0 -> c -> eello_turn6=0.0d0 -> j=i+4 -> k=i+1 -> l=i+3 -> iti=itortyp(itype(i)) -> itk=itortyp(itype(k)) -> itk1=itortyp(itype(k+1)) -> itl=itortyp(itype(l)) -> itj=itortyp(itype(j)) -> cd write (2,*) 'itk',itk,' itk1',itk1,' itl',itl,' itj',itj -> cd write (2,*) 'i',i,' k',k,' j',j,' l',l -> cd if (i.ne.1 .or. j.ne.3 .or. k.ne.2 .or. l.ne.4) then -> cd eello6=0.0d0 -> cd return -> cd endif -> cd write (iout,*) -> cd & 'EELLO6: Contacts have occurred for peptide groups',i,j, -> cd & ' and',k,l -> cd call checkint_turn6(i,jj,kk,eel_turn6_num) -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> derx_turn(lll,kkk,iii)=0.0d0 -> enddo -> enddo -> enddo -> cd eij=1.0d0 -> cd ekl=1.0d0 -> cd ekont=1.0d0 -> eello6_5=eello6_graph4(l,k,j,i,kk,jj,2,.true.) -> cd eello6_5=0.0d0 -> cd write (2,*) 'eello6_5',eello6_5 -> #ifdef MOMENT -> call transpose2(AEA(1,1,1),auxmat(1,1)) -> call matmat2(EUg(1,1,i+1),auxmat(1,1),auxmat(1,1)) -> ss1=scalar2(Ub2(1,i+2),b1(1,itl)) -> s1 = (auxmat(1,1)+auxmat(2,2))*ss1 -> #endif -> call matvec2(EUg(1,1,i+2),b1(1,itl),vtemp1(1)) -> call matvec2(AEA(1,1,1),vtemp1(1),vtemp1(1)) -> s2 = scalar2(b1(1,itk),vtemp1(1)) -> #ifdef MOMENT -> call transpose2(AEA(1,1,2),atemp(1,1)) -> call matmat2(atemp(1,1),EUg(1,1,i+4),atemp(1,1)) -> call matvec2(Ug2(1,1,i+2),dd(1,1,itk1),vtemp2(1)) -> s8 = -(atemp(1,1)+atemp(2,2))*scalar2(cc(1,1,itl),vtemp2(1)) -> #endif -> call matmat2(EUg(1,1,i+3),AEA(1,1,2),auxmat(1,1)) -> call matvec2(auxmat(1,1),Ub2(1,i+4),vtemp3(1)) -> s12 = scalar2(Ub2(1,i+2),vtemp3(1)) -> #ifdef MOMENT -> call transpose2(a_chuj(1,1,kk,i+1),achuj_temp(1,1)) -> call matmat2(achuj_temp(1,1),EUg(1,1,i+2),gtemp(1,1)) -> call matmat2(gtemp(1,1),EUg(1,1,i+3),gtemp(1,1)) -> call matvec2(a_chuj(1,1,jj,i),Ub2(1,i+4),vtemp4(1)) -> ss13 = scalar2(b1(1,itk),vtemp4(1)) -> s13 = (gtemp(1,1)+gtemp(2,2))*ss13 -> #endif -> c write (2,*) 's1,s2,s8,s12,s13',s1,s2,s8,s12,s13 -> c s1=0.0d0 -> c s2=0.0d0 -> c s8=0.0d0 -> c s12=0.0d0 -> c s13=0.0d0 -> eel_turn6 = eello6_5 - 0.5d0*(s1+s2+s12+s8+s13) -> C Derivatives in gamma(i+2) -> s1d =0.0d0 -> s8d =0.0d0 -> #ifdef MOMENT -> call transpose2(AEA(1,1,1),auxmatd(1,1)) -> call matmat2(EUgder(1,1,i+1),auxmatd(1,1),auxmatd(1,1)) -> s1d = (auxmatd(1,1)+auxmatd(2,2))*ss1 -> call transpose2(AEAderg(1,1,2),atempd(1,1)) -> call matmat2(atempd(1,1),EUg(1,1,i+4),atempd(1,1)) -> s8d = -(atempd(1,1)+atempd(2,2))*scalar2(cc(1,1,itl),vtemp2(1)) -> #endif -> call matmat2(EUg(1,1,i+3),AEAderg(1,1,2),auxmatd(1,1)) -> call matvec2(auxmatd(1,1),Ub2(1,i+4),vtemp3d(1)) -> s12d = scalar2(Ub2(1,i+2),vtemp3d(1)) -> c s1d=0.0d0 -> c s2d=0.0d0 -> c s8d=0.0d0 -> c s12d=0.0d0 -> c s13d=0.0d0 -> gel_loc_turn6(i)=gel_loc_turn6(i)-0.5d0*ekont*(s1d+s8d+s12d) -> C Derivatives in gamma(i+3) -> #ifdef MOMENT -> call transpose2(AEA(1,1,1),auxmatd(1,1)) -> call matmat2(EUg(1,1,i+1),auxmatd(1,1),auxmatd(1,1)) -> ss1d=scalar2(Ub2der(1,i+2),b1(1,itl)) -> s1d = (auxmatd(1,1)+auxmatd(2,2))*ss1d -> #endif -> call matvec2(EUgder(1,1,i+2),b1(1,itl),vtemp1d(1)) -> call matvec2(AEA(1,1,1),vtemp1d(1),vtemp1d(1)) -> s2d = scalar2(b1(1,itk),vtemp1d(1)) -> #ifdef MOMENT -> call matvec2(Ug2der(1,1,i+2),dd(1,1,itk1),vtemp2d(1)) -> s8d = -(atemp(1,1)+atemp(2,2))*scalar2(cc(1,1,itl),vtemp2d(1)) -> #endif -> s12d = scalar2(Ub2der(1,i+2),vtemp3(1)) -> #ifdef MOMENT -> call matmat2(achuj_temp(1,1),EUgder(1,1,i+2),gtempd(1,1)) -> call matmat2(gtempd(1,1),EUg(1,1,i+3),gtempd(1,1)) -> s13d = (gtempd(1,1)+gtempd(2,2))*ss13 -> #endif -> c s1d=0.0d0 -> c s2d=0.0d0 -> c s8d=0.0d0 -> c s12d=0.0d0 -> c s13d=0.0d0 -> #ifdef MOMENT -> gel_loc_turn6(i+1)=gel_loc_turn6(i+1) -> & -0.5d0*ekont*(s1d+s2d+s8d+s12d+s13d) -> #else -> gel_loc_turn6(i+1)=gel_loc_turn6(i+1) -> & -0.5d0*ekont*(s2d+s12d) -> #endif -> C Derivatives in gamma(i+4) -> call matmat2(EUgder(1,1,i+3),AEA(1,1,2),auxmatd(1,1)) -> call matvec2(auxmatd(1,1),Ub2(1,i+4),vtemp3d(1)) -> s12d = scalar2(Ub2(1,i+2),vtemp3d(1)) -> #ifdef MOMENT -> call matmat2(achuj_temp(1,1),EUg(1,1,i+2),gtempd(1,1)) -> call matmat2(gtempd(1,1),EUgder(1,1,i+3),gtempd(1,1)) -> s13d = (gtempd(1,1)+gtempd(2,2))*ss13 -> #endif -> c s1d=0.0d0 -> c s2d=0.0d0 -> c s8d=0.0d0 -> C s12d=0.0d0 -> c s13d=0.0d0 -> #ifdef MOMENT -> gel_loc_turn6(i+2)=gel_loc_turn6(i+2)-0.5d0*ekont*(s12d+s13d) -> #else -> gel_loc_turn6(i+2)=gel_loc_turn6(i+2)-0.5d0*ekont*(s12d) -> #endif -> C Derivatives in gamma(i+5) -> #ifdef MOMENT -> call transpose2(AEAderg(1,1,1),auxmatd(1,1)) -> call matmat2(EUg(1,1,i+1),auxmatd(1,1),auxmatd(1,1)) -> s1d = (auxmatd(1,1)+auxmatd(2,2))*ss1 -> #endif -> call matvec2(EUg(1,1,i+2),b1(1,itl),vtemp1d(1)) -> call matvec2(AEAderg(1,1,1),vtemp1d(1),vtemp1d(1)) -> s2d = scalar2(b1(1,itk),vtemp1d(1)) -> #ifdef MOMENT -> call transpose2(AEA(1,1,2),atempd(1,1)) -> call matmat2(atempd(1,1),EUgder(1,1,i+4),atempd(1,1)) -> s8d = -(atempd(1,1)+atempd(2,2))*scalar2(cc(1,1,itl),vtemp2(1)) -> #endif -> call matvec2(auxmat(1,1),Ub2der(1,i+4),vtemp3d(1)) -> s12d = scalar2(Ub2(1,i+2),vtemp3d(1)) -> #ifdef MOMENT -> call matvec2(a_chuj(1,1,jj,i),Ub2der(1,i+4),vtemp4d(1)) -> ss13d = scalar2(b1(1,itk),vtemp4d(1)) -> s13d = (gtemp(1,1)+gtemp(2,2))*ss13d -> #endif -> c s1d=0.0d0 -> c s2d=0.0d0 -> c s8d=0.0d0 -> c s12d=0.0d0 -> c s13d=0.0d0 -> #ifdef MOMENT -> gel_loc_turn6(i+3)=gel_loc_turn6(i+3) -> & -0.5d0*ekont*(s1d+s2d+s8d+s12d+s13d) -> #else -> gel_loc_turn6(i+3)=gel_loc_turn6(i+3) -> & -0.5d0*ekont*(s2d+s12d) -> #endif -> C Cartesian derivatives -> do iii=1,2 -> do kkk=1,5 -> do lll=1,3 -> #ifdef MOMENT -> call transpose2(AEAderx(1,1,lll,kkk,iii,1),auxmatd(1,1)) -> call matmat2(EUg(1,1,i+1),auxmatd(1,1),auxmatd(1,1)) -> s1d = (auxmatd(1,1)+auxmatd(2,2))*ss1 -> #endif -> call matvec2(EUg(1,1,i+2),b1(1,itl),vtemp1(1)) -> call matvec2(AEAderx(1,1,lll,kkk,iii,1),vtemp1(1), -> & vtemp1d(1)) -> s2d = scalar2(b1(1,itk),vtemp1d(1)) -> #ifdef MOMENT -> call transpose2(AEAderx(1,1,lll,kkk,iii,2),atempd(1,1)) -> call matmat2(atempd(1,1),EUg(1,1,i+4),atempd(1,1)) -> s8d = -(atempd(1,1)+atempd(2,2))* -> & scalar2(cc(1,1,itl),vtemp2(1)) -> #endif -> call matmat2(EUg(1,1,i+3),AEAderx(1,1,lll,kkk,iii,2), -> & auxmatd(1,1)) -> call matvec2(auxmatd(1,1),Ub2(1,i+4),vtemp3d(1)) -> s12d = scalar2(Ub2(1,i+2),vtemp3d(1)) -> c s1d=0.0d0 -> c s2d=0.0d0 -> c s8d=0.0d0 -> c s12d=0.0d0 -> c s13d=0.0d0 -> #ifdef MOMENT -> derx_turn(lll,kkk,iii) = derx_turn(lll,kkk,iii) -> & - 0.5d0*(s1d+s2d) -> #else -> derx_turn(lll,kkk,iii) = derx_turn(lll,kkk,iii) -> & - 0.5d0*s2d -> #endif -> #ifdef MOMENT -> derx_turn(lll,kkk,3-iii) = derx_turn(lll,kkk,3-iii) -> & - 0.5d0*(s8d+s12d) -> #else -> derx_turn(lll,kkk,3-iii) = derx_turn(lll,kkk,3-iii) -> & - 0.5d0*s12d -> #endif -> enddo -> enddo -> enddo -> #ifdef MOMENT -> do kkk=1,5 -> do lll=1,3 -> call transpose2(a_chuj_der(1,1,lll,kkk,kk,i+1), -> & achuj_tempd(1,1)) -> call matmat2(achuj_tempd(1,1),EUg(1,1,i+2),gtempd(1,1)) -> call matmat2(gtempd(1,1),EUg(1,1,i+3),gtempd(1,1)) -> s13d=(gtempd(1,1)+gtempd(2,2))*ss13 -> derx_turn(lll,kkk,2) = derx_turn(lll,kkk,2)-0.5d0*s13d -> call matvec2(a_chuj_der(1,1,lll,kkk,jj,i),Ub2(1,i+4), -> & vtemp4d(1)) -> ss13d = scalar2(b1(1,itk),vtemp4d(1)) -> s13d = (gtemp(1,1)+gtemp(2,2))*ss13d -> derx_turn(lll,kkk,1) = derx_turn(lll,kkk,1)-0.5d0*s13d -> enddo -> enddo -> #endif -> cd write(iout,*) 'eel6_turn6',eel_turn6,' eel_turn6_num', -> cd & 16*eel_turn6_num -> cd goto 1112 -> if (j.lt.nres-1) then -> j1=j+1 -> j2=j-1 -> else -> j1=j-1 -> j2=j-2 -> endif -> if (l.lt.nres-1) then -> l1=l+1 -> l2=l-1 -> else -> l1=l-1 -> l2=l-2 -> endif -> do ll=1,3 -> ggg1(ll)=eel_turn6*g_contij(ll,1) -> ggg2(ll)=eel_turn6*g_contij(ll,2) -> ghalf=0.5d0*ggg1(ll) -> cd ghalf=0.0d0 -> gcorr6_turn(ll,i)=gcorr6_turn(ll,i)+ghalf -> & +ekont*derx_turn(ll,2,1) -> gcorr6_turn(ll,i+1)=gcorr6_turn(ll,i+1)+ekont*derx_turn(ll,3,1) -> gcorr6_turn(ll,j)=gcorr6_turn(ll,j)+ghalf -> & +ekont*derx_turn(ll,4,1) -> gcorr6_turn(ll,j1)=gcorr6_turn(ll,j1)+ekont*derx_turn(ll,5,1) -> ghalf=0.5d0*ggg2(ll) -> cd ghalf=0.0d0 -> gcorr6_turn(ll,k)=gcorr6_turn(ll,k)+ghalf -> & +ekont*derx_turn(ll,2,2) -> gcorr6_turn(ll,k+1)=gcorr6_turn(ll,k+1)+ekont*derx_turn(ll,3,2) -> gcorr6_turn(ll,l)=gcorr6_turn(ll,l)+ghalf -> & +ekont*derx_turn(ll,4,2) -> gcorr6_turn(ll,l1)=gcorr6_turn(ll,l1)+ekont*derx_turn(ll,5,2) -> enddo -> cd goto 1112 -> do m=i+1,j-1 -> do ll=1,3 -> gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ggg1(ll) -> enddo -> enddo -> do m=k+1,l-1 -> do ll=1,3 -> gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ggg2(ll) -> enddo -> enddo -> 1112 continue -> do m=i+2,j2 -> do ll=1,3 -> gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ekont*derx_turn(ll,1,1) -> enddo -> enddo -> do m=k+2,l2 -> do ll=1,3 -> gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ekont*derx_turn(ll,1,2) -> enddo -> enddo -> cd do iii=1,nres-3 -> cd write (2,*) iii,g_corr6_loc(iii) -> cd enddo -> eello_turn6=ekont*eel_turn6 -> cd write (2,*) 'ekont',ekont -> cd write (2,*) 'eel_turn6',ekont*eel_turn6 -> return -> end -> -> C----------------------------------------------------------------------------- -> double precision function scalar(u,v) -> !DIR$ INLINEALWAYS scalar -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::scalar -> #endif -> implicit none -> double precision u(3),v(3) -> cd double precision sc -> cd integer i -> cd sc=0.0d0 -> cd do i=1,3 -> cd sc=sc+u(i)*v(i) -> cd enddo -> cd scalar=sc -> -> scalar=u(1)*v(1)+u(2)*v(2)+u(3)*v(3) -> return -> end -> crc------------------------------------------------- -> SUBROUTINE MATVEC2(A1,V1,V2) -> !DIR$ INLINEALWAYS MATVEC2 -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::MATVEC2 -> #endif -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> DIMENSION A1(2,2),V1(2),V2(2) -> c DO 1 I=1,2 -> c VI=0.0 -> c DO 3 K=1,2 -> c 3 VI=VI+A1(I,K)*V1(K) -> c Vaux(I)=VI -> c 1 CONTINUE -> -> vaux1=a1(1,1)*v1(1)+a1(1,2)*v1(2) -> vaux2=a1(2,1)*v1(1)+a1(2,2)*v1(2) -> -> v2(1)=vaux1 -> v2(2)=vaux2 -> END -> C--------------------------------------- -> SUBROUTINE MATMAT2(A1,A2,A3) -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::MATMAT2 -> #endif -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> DIMENSION A1(2,2),A2(2,2),A3(2,2) -> c DIMENSION AI3(2,2) -> c DO J=1,2 -> c A3IJ=0.0 -> c DO K=1,2 -> c A3IJ=A3IJ+A1(I,K)*A2(K,J) -> c enddo -> c A3(I,J)=A3IJ -> c enddo -> c enddo -> -> ai3_11=a1(1,1)*a2(1,1)+a1(1,2)*a2(2,1) -> ai3_12=a1(1,1)*a2(1,2)+a1(1,2)*a2(2,2) -> ai3_21=a1(2,1)*a2(1,1)+a1(2,2)*a2(2,1) -> ai3_22=a1(2,1)*a2(1,2)+a1(2,2)*a2(2,2) -> -> A3(1,1)=AI3_11 -> A3(2,1)=AI3_21 -> A3(1,2)=AI3_12 -> A3(2,2)=AI3_22 -> END -> -> c------------------------------------------------------------------------- -> double precision function scalar2(u,v) -> !DIR$ INLINEALWAYS scalar2 -> implicit none -> double precision u(2),v(2) -> double precision sc -> integer i -> scalar2=u(1)*v(1)+u(2)*v(2) -> return -> end -> -> C----------------------------------------------------------------------------- -> -> subroutine transpose2(a,at) -> !DIR$ INLINEALWAYS transpose2 -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::transpose2 -> #endif -> implicit none -> double precision a(2,2),at(2,2) -> at(1,1)=a(1,1) -> at(1,2)=a(2,1) -> at(2,1)=a(1,2) -> at(2,2)=a(2,2) -> return -> end -> c-------------------------------------------------------------------------- -> subroutine transpose(n,a,at) -> implicit none -> integer n,i,j -> double precision a(n,n),at(n,n) -> do i=1,n -> do j=1,n -> at(j,i)=a(i,j) -> enddo -> enddo -> return -> end -> C--------------------------------------------------------------------------- -> subroutine prodmat3(a1,a2,kk,transp,prod) -> !DIR$ INLINEALWAYS prodmat3 -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::prodmat3 -> #endif -> implicit none -> integer i,j -> double precision a1(2,2),a2(2,2),a2t(2,2),kk(2,2),prod(2,2) -> logical transp -> crc double precision auxmat(2,2),prod_(2,2) -> -> if (transp) then -> crc call transpose2(kk(1,1),auxmat(1,1)) -> crc call matmat2(a1(1,1),auxmat(1,1),auxmat(1,1)) -> crc call matmat2(auxmat(1,1),a2(1,1),prod_(1,1)) -> -> prod(1,1)=(a1(1,1)*kk(1,1)+a1(1,2)*kk(1,2))*a2(1,1) -> & +(a1(1,1)*kk(2,1)+a1(1,2)*kk(2,2))*a2(2,1) -> prod(1,2)=(a1(1,1)*kk(1,1)+a1(1,2)*kk(1,2))*a2(1,2) -> & +(a1(1,1)*kk(2,1)+a1(1,2)*kk(2,2))*a2(2,2) -> prod(2,1)=(a1(2,1)*kk(1,1)+a1(2,2)*kk(1,2))*a2(1,1) -> & +(a1(2,1)*kk(2,1)+a1(2,2)*kk(2,2))*a2(2,1) -> prod(2,2)=(a1(2,1)*kk(1,1)+a1(2,2)*kk(1,2))*a2(1,2) -> & +(a1(2,1)*kk(2,1)+a1(2,2)*kk(2,2))*a2(2,2) -> -> else -> crc call matmat2(a1(1,1),kk(1,1),auxmat(1,1)) -> crc call matmat2(auxmat(1,1),a2(1,1),prod_(1,1)) -> -> prod(1,1)=(a1(1,1)*kk(1,1)+a1(1,2)*kk(2,1))*a2(1,1) -> & +(a1(1,1)*kk(1,2)+a1(1,2)*kk(2,2))*a2(2,1) -> prod(1,2)=(a1(1,1)*kk(1,1)+a1(1,2)*kk(2,1))*a2(1,2) -> & +(a1(1,1)*kk(1,2)+a1(1,2)*kk(2,2))*a2(2,2) -> prod(2,1)=(a1(2,1)*kk(1,1)+a1(2,2)*kk(2,1))*a2(1,1) -> & +(a1(2,1)*kk(1,2)+a1(2,2)*kk(2,2))*a2(2,1) -> prod(2,2)=(a1(2,1)*kk(1,1)+a1(2,2)*kk(2,1))*a2(1,2) -> & +(a1(2,1)*kk(1,2)+a1(2,2)*kk(2,2))*a2(2,2) -> -> endif -> c call transpose2(a2(1,1),a2t(1,1)) -> -> crc print *,transp -> crc print *,((prod_(i,j),i=1,2),j=1,2) -> crc print *,((prod(i,j),i=1,2),j=1,2) -> -> return -> end -> diff --git a/source/unres/src_MD-M/energy_p_new_barrier.F b/source/unres/src_MD-M/energy_p_new_barrier.F index 2dacce9..379fef0 100644 --- a/source/unres/src_MD-M/energy_p_new_barrier.F +++ b/source/unres/src_MD-M/energy_p_new_barrier.F @@ -7796,18 +7796,18 @@ c-------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ /j\ -C / \ / \ -C /| o | | o |\ -C \ j|/k\| / \ |/k\|l / -C \ / \ / \ / \ / -C o o o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ /j\ C +C / \ / \ C +C /| o | | o |\ C +C \ j|/k\| / \ |/k\|l / C +C \ / \ / \ / \ / C +C o o o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC itk=itortyp(itype(k)) s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i)) @@ -7901,18 +7901,18 @@ c---------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C \ /l\ /j\ / -C \ / \ / \ / -C o| o | | o |o -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C \ /l\ /j\ / C +C \ / \ / \ / C +C o| o | | o |o C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l C AL 7/4/01 s1 would occur in the sixth-order moment, @@ -8083,18 +8083,18 @@ c---------------------------------------------------------------------------- double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C j|/k\| / |/k\|l / -C / \ / / \ / -C / o / o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C j|/k\| / |/k\|l / C +C / \ / / \ / C +C / o / o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective @@ -8200,18 +8200,18 @@ c---------------------------------------------------------------------------- & auxvec1(2),auxmat1(2,2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o \ o \ -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o \ o \ C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective diff --git a/source/unres/src_MD-M/log b/source/unres/src_MD-M/log deleted file mode 100644 index f597549..0000000 --- a/source/unres/src_MD-M/log +++ /dev/null @@ -1,120 +0,0 @@ -cc -o compinfo compinfo.c -./compinfo -ifort -c -O3 -ip -w -I/opt/mpi/mvapich/include cinfo.f -/opt/mpi/mvapich/bin/mpif77 -static-libcxa -O3 -ip -w unres.o arcos.o cartprint.o chainbuild.o convert.o initialize_p.o matmult.o readrtns_CSA.o parmread.o gen_rand_conf.o printmat.o map.o pinorm.o randgens.o rescode.o intcor.o timing.o misc.o intlocal.o cartder.o checkder_p.o energy_p_new.o gradient_p.o minimize_p.o sumsld.o cored.o rmdd.o geomout.o readpdb.o regularize.o thread.o fitsq.o mcm.o mc.o bond_move.o refsys.o check_sc_distr.o contact.o djacob.o eigen.o blas.o add.o entmcm.o minim_mcmf.o together.o csa.o minim_jlee.o shift.o diff12.o bank.o newconf.o ran.o indexx.o MP.o compare_s1.o prng_32.o test.o banach.o distfit.o rmsd.o elecont.o dihed_cons.o sc_move.o local_move.o intcartderiv.o lagrangian_lesyng.o stochfric.o kinetic_lesyng.o MD.o moments.o int_to_cart.o surfatom.o sort.o muca_md.o MREMD.o rattle.o gauss.o energy_split.o q_measure3.o econstr_local.o gnmr1.o check_sc_map.o check_bond.o cinfo.o -L/opt/mpi/mvapich/lib -lmpich -lpthread xdrf_em64/libxdrf.a -g -d2 -CA -CB -o unres_Tc_procor_new_em64-350-fg.exe -ipo: remark #11000: performing multi-file optimizations -ipo: remark #11005: generating object file /tmp/ipo_ifort9ElZJ5.o -energy_p_new.F(2967): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1286): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1290): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1294): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(344): (col. 9) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(344): (col. 9) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(388): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(287): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(91): (col. 14) remark: LOOP WAS VECTORIZED. -energy_p_new.F(139): (col. 14) remark: LOOP WAS VECTORIZED. -energy_p_new.F(213): (col. 12) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1191): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1191): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1191): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1065): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1065): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1065): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(922): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(922): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(922): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(800): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(711): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1530): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1538): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1539): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1540): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1541): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1585): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1593): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1594): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1595): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1596): (col. 18) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1607): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1959): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1964): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2119): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2125): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2128): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2203): (col. 16) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2209): (col. 11) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(2209): (col. 11) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(2255): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2336): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2349): (col. 15) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2362): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2400): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2410): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2577): (col. 17) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2581): (col. 17) remark: LOOP WAS VECTORIZED. -energy_p_new.F(2595): (col. 17) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(1815): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1830): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(1838): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3060): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3082): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3278): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3295): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3323): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3132): (col. 16) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3132): (col. 16) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3132): (col. 16) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3149): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3577): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3589): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3596): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3610): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3617): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3624): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3643): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3666): (col. 11) remark: LOOP WAS VECTORIZED. -energy_p_new.F(3691): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(4071): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(4078): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(4082): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(4116): (col. 9) remark: LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4292): (col. 10) remark: LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4275): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4317): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(4317): (col. 8) remark: PARTIAL LOOP WAS VECTORIZED. -energy_p_new.F(5292): (col. 17) remark: LOOP WAS VECTORIZED. -energy_p_new.F(6392): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(7186): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(6038): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(5897): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(5443): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(5465): (col. 13) remark: LOOP WAS VECTORIZED. -energy_p_new.F(5474): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(5478): (col. 7) remark: LOOP WAS VECTORIZED. -energy_p_new.F(5508): (col. 9) remark: PERMUTED LOOP WAS VECTORIZED. -energy_p_new.F(5061): (col. 7) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(522): (col. 9) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(464): (col. 9) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(158): (col. 7) remark: PERMUTED LOOP WAS VECTORIZED. -lagrangian_lesyng.F(166): (col. 7) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(243): (col. 10) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(254): (col. 7) remark: PARTIAL LOOP WAS VECTORIZED. -lagrangian_lesyng.F(303): (col. 9) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(318): (col. 7) remark: PARTIAL LOOP WAS VECTORIZED. -lagrangian_lesyng.F(318): (col. 7) remark: PERMUTED LOOP WAS VECTORIZED. -lagrangian_lesyng.F(318): (col. 7) remark: PERMUTED LOOP WAS VECTORIZED. -lagrangian_lesyng.F(318): (col. 7) remark: PERMUTED LOOP WAS VECTORIZED. -lagrangian_lesyng.F(24): (col. 8) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(67): (col. 12) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(70): (col. 7) remark: LOOP WAS VECTORIZED. -lagrangian_lesyng.F(95): (col. 8) remark: LOOP WAS VECTORIZED. -mv unres_Tc_procor_new_em64-350-fg.exe ../bin diff --git a/source/unres/src_MD-M/proc_proc.c b/source/unres/src_MD-M/proc_proc.c index d77c5a4..f023520 100644 --- a/source/unres/src_MD-M/proc_proc.c +++ b/source/unres/src_MD-M/proc_proc.c @@ -1,5 +1,6 @@ #include #include +#include #ifdef CRAY void PROC_PROC(long int *f, int *i) diff --git a/source/unres/src_MD-M/together.F b/source/unres/src_MD-M/together.F index 2117e93..d94d221 100644 --- a/source/unres/src_MD-M/together.F +++ b/source/unres/src_MD-M/together.F @@ -80,7 +80,8 @@ c ntrial : number of trial conformations per seed. c ntry : total number of trial conformations including seed conformations. idum2=-123 - imax=2**31-1 +c imax=2**31-1 + imax=huge(0) ENDIF call mpi_bcast(jend,1,mpi_integer,0,CG_COMM,ierr) diff --git a/source/unres/src_MD-M/unres.F b/source/unres/src_MD-M/unres.F index 127056b..0039fcc 100644 --- a/source/unres/src_MD-M/unres.F +++ b/source/unres/src_MD-M/unres.F @@ -600,11 +600,11 @@ c Broadcast the order to compute internal coordinates to the slaves. write (istat,'(a5,20a12)')"# ", & (wname(print_order(i)),i=1,nprint_ene) write (istat,'("# ",20(1pe12.4))') - (weights(print_order(i)),i=1,nprint_ene) + & (weights(print_order(i)),i=1,nprint_ene) if (refstr) then write (istat,'(a5,20a12)')"# ", & (ename(print_order(i)),i=1,nprint_ene), - & ,"ETOT total","RMSD","nat.contact","nnt.contact" + & "ETOT total","RMSD","nat.contact","nnt.contact" else write (istat,'(a5,14a12)')"# ", & (ename(print_order(i)),i=1,nprint_ene),"ETOT total" diff --git a/source/unres/src_MD-M/xdrf-Argonne/Makefile b/source/unres/src_MD-M/xdrf-Argonne/Makefile deleted file mode 100644 index f03276e..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf-Argonne/Makefile_jubl b/source/unres/src_MD-M/xdrf-Argonne/Makefile_jubl deleted file mode 100644 index 8dc35cf..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/Makefile_jubl +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = /usr/bin/blrts_xlc -CPPC = /usr/bin/blrts_xlc - -CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f *.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf-Argonne/Makefile_linux b/source/unres/src_MD-M/xdrf-Argonne/Makefile_linux deleted file mode 100644 index f03276e..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/Makefile_linux +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf-Argonne/Makefile~ b/source/unres/src_MD-M/xdrf-Argonne/Makefile~ deleted file mode 100644 index f0f81e5..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/Makefile~ +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = /usr/bin/blrts_xlc -CPPC = /usr/bin/blrts_xlc - -CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf-Argonne/RS6K.m4 b/source/unres/src_MD-M/xdrf-Argonne/RS6K.m4 deleted file mode 100644 index 0331d97..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/RS6K.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -undefine(`len') -# -# do nothing special to FORTRAN function names -# -define(`FUNCTION',`$1') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) - diff --git a/source/unres/src_MD-M/xdrf-Argonne/ftocstr.c b/source/unres/src_MD-M/xdrf-Argonne/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/unres/src_MD-M/xdrf-Argonne/ftocstr.o b/source/unres/src_MD-M/xdrf-Argonne/ftocstr.o deleted file mode 100644 index 5c772f5..0000000 Binary files a/source/unres/src_MD-M/xdrf-Argonne/ftocstr.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.a b/source/unres/src_MD-M/xdrf-Argonne/libxdrf.a deleted file mode 100644 index a55cff1..0000000 Binary files a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.a and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4 b/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4 deleted file mode 100644 index a6da458..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4 +++ /dev/null @@ -1,1238 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "w+"; - lmode = XDR_ENCODE; - } else if (*type == 'a' || *type == 'A') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4.org b/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4.org deleted file mode 100644 index b14b374..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4.org +++ /dev/null @@ -1,1230 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4~ b/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4~ deleted file mode 100644 index 8704af2..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.m4~ +++ /dev/null @@ -1,1234 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.o b/source/unres/src_MD-M/xdrf-Argonne/libxdrf.o deleted file mode 100644 index 7ec06da..0000000 Binary files a/source/unres/src_MD-M/xdrf-Argonne/libxdrf.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf-Argonne/types.h b/source/unres/src_MD-M/xdrf-Argonne/types.h deleted file mode 100644 index 871f3fd..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/types.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* fixincludes should not add extern "C" to this file */ -/* - * Rpc additions to - */ -#ifndef _RPC_TYPES_H -#define _RPC_TYPES_H 1 - -typedef int bool_t; -typedef int enum_t; -/* This needs to be changed to uint32_t in the future */ -typedef unsigned long rpcprog_t; -typedef unsigned long rpcvers_t; -typedef unsigned long rpcproc_t; -typedef unsigned long rpcprot_t; -typedef unsigned long rpcport_t; - -#define __dontcare__ -1 - -#ifndef FALSE -# define FALSE (0) -#endif - -#ifndef TRUE -# define TRUE (1) -#endif - -#ifndef NULL -# define NULL 0 -#endif - -#include /* For malloc decl. */ -#define mem_alloc(bsize) malloc(bsize) -/* - * XXX: This must not use the second argument, or code in xdr_array.c needs - * to be modified. - */ -#define mem_free(ptr, bsize) free(ptr) - -#ifndef makedev /* ie, we haven't already included it */ -#include -#endif - -#ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; -typedef __fsid_t fsid_t; -# define __u_char_defined -#endif -#ifndef __daddr_t_defined -typedef __daddr_t daddr_t; -typedef __caddr_t caddr_t; -# define __daddr_t_defined -#endif - -#include -#include - -#include - -#ifndef INADDR_LOOPBACK -#define INADDR_LOOPBACK (u_long)0x7F000001 -#endif -#ifndef MAXHOSTNAMELEN -#define MAXHOSTNAMELEN 64 -#endif - -#endif /* rpc/types.h */ diff --git a/source/unres/src_MD-M/xdrf-Argonne/underscore.m4 b/source/unres/src_MD-M/xdrf-Argonne/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr.c b/source/unres/src_MD-M/xdrf-Argonne/xdr.c deleted file mode 100644 index 33b8544..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/xdr.c +++ /dev/null @@ -1,752 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; -#endif - -/* - * xdr.c, Generic XDR routines implementation. - * - * Copyright (C) 1986, Sun Microsystems, Inc. - * - * These are the "generic" xdr routines used to serialize and de-serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include -#include -#include - -#include "types.h" -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -#endif - -/* - * constants specific to the xdr "protocol" - */ -#define XDR_FALSE ((long) 0) -#define XDR_TRUE ((long) 1) -#define LASTUNSIGNED ((u_int) 0-1) - -/* - * for unit alignment - */ -static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; - -/* - * Free a data structure using XDR - * Not a filter, but a convenient utility nonetheless - */ -void -xdr_free (xdrproc_t proc, char *objp) -{ - XDR x; - - x.x_op = XDR_FREE; - (*proc) (&x, objp); -} - -/* - * XDR nothing - */ -bool_t -xdr_void (void) -{ - return TRUE; -} -INTDEF(xdr_void) - -/* - * XDR integers - */ -bool_t -xdr_int (XDR *xdrs, int *ip) -{ - -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *ip; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ip = (int) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif INT_MAX == LONG_MAX - return INTUSE(xdr_long) (xdrs, (long *) ip); -#elif INT_MAX == SHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) ip); -#else -#error unexpected integer sizes in_xdr_int() -#endif -} -INTDEF(xdr_int) - -/* - * XDR unsigned integers - */ -bool_t -xdr_u_int (XDR *xdrs, u_int *up) -{ -#if UINT_MAX < ULONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * up; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *up = (u_int) (u_long) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif UINT_MAX == ULONG_MAX - return INTUSE(xdr_u_long) (xdrs, (u_long *) up); -#elif UINT_MAX == USHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) up); -#else -#error unexpected integer sizes in_xdr_u_int() -#endif -} -INTDEF(xdr_u_int) - -/* - * XDR long integers - * The definition of xdr_long() is kept for backward - * compatibility. Instead xdr_int() should be used. - */ -bool_t -xdr_long (XDR *xdrs, long *lp) -{ - - if (xdrs->x_op == XDR_ENCODE - && (sizeof (int32_t) == sizeof (long) - || (int32_t) *lp == *lp)) - return XDR_PUTLONG (xdrs, lp); - - if (xdrs->x_op == XDR_DECODE) - return XDR_GETLONG (xdrs, lp); - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_long) - -/* - * XDR unsigned long integers - * The definition of xdr_u_long() is kept for backward - * compatibility. Instead xdr_u_int() should be used. - */ -bool_t -xdr_u_long (XDR *xdrs, u_long *ulp) -{ - switch (xdrs->x_op) - { - case XDR_DECODE: - { - long int tmp; - - if (XDR_GETLONG (xdrs, &tmp) == FALSE) - return FALSE; - - *ulp = (uint32_t) tmp; - return TRUE; - } - - case XDR_ENCODE: - if (sizeof (uint32_t) != sizeof (u_long) - && (uint32_t) *ulp != *ulp) - return FALSE; - - return XDR_PUTLONG (xdrs, (long *) ulp); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_long) - -/* - * XDR hyper integers - * same as xdr_u_hyper - open coded to save a proc call! - */ -bool_t -xdr_hyper (XDR *xdrs, quad_t *llp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (long) ((*llp) >> 32); - t2 = (long) (*llp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *llp = ((quad_t) t1) << 32; - *llp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_hyper) - - -/* - * XDR hyper integers - * same as xdr_hyper - open coded to save a proc call! - */ -bool_t -xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (unsigned long) ((*ullp) >> 32); - t2 = (unsigned long) (*ullp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *ullp = ((u_quad_t) t1) << 32; - *ullp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_u_hyper) - -bool_t -xdr_longlong_t (XDR *xdrs, quad_t *llp) -{ - return INTUSE(xdr_hyper) (xdrs, llp); -} - -bool_t -xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) -{ - return INTUSE(xdr_u_hyper) (xdrs, ullp); -} - -/* - * XDR short integers - */ -bool_t -xdr_short (XDR *xdrs, short *sp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *sp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *sp = (short) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_short) - -/* - * XDR unsigned short integers - */ -bool_t -xdr_u_short (XDR *xdrs, u_short *usp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * usp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *usp = (u_short) (u_long) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_short) - - -/* - * XDR a char - */ -bool_t -xdr_char (XDR *xdrs, char *cp) -{ - int i; - - i = (*cp); - if (!INTUSE(xdr_int) (xdrs, &i)) - { - return FALSE; - } - *cp = i; - return TRUE; -} - -/* - * XDR an unsigned char - */ -bool_t -xdr_u_char (XDR *xdrs, u_char *cp) -{ - u_int u; - - u = (*cp); - if (!INTUSE(xdr_u_int) (xdrs, &u)) - { - return FALSE; - } - *cp = u; - return TRUE; -} - -/* - * XDR booleans - */ -bool_t -xdr_bool (XDR *xdrs, bool_t *bp) -{ - long lb; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - lb = *bp ? XDR_TRUE : XDR_FALSE; - return XDR_PUTLONG (xdrs, &lb); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &lb)) - { - return FALSE; - } - *bp = (lb == XDR_FALSE) ? FALSE : TRUE; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bool) - -/* - * XDR enumerations - */ -bool_t -xdr_enum (XDR *xdrs, enum_t *ep) -{ - enum sizecheck - { - SIZEVAL - }; /* used to find the size of an enum */ - - /* - * enums are treated as ints - */ - if (sizeof (enum sizecheck) == 4) - { -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = *ep; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ep = l; - case XDR_FREE: - return TRUE; - - } - return FALSE; -#else - return INTUSE(xdr_long) (xdrs, (long *) ep); -#endif - } - else if (sizeof (enum sizecheck) == sizeof (short)) - { - return INTUSE(xdr_short) (xdrs, (short *) ep); - } - else - { - return FALSE; - } -} -INTDEF(xdr_enum) - -/* - * XDR opaque data - * Allows the specification of a fixed size sequence of opaque bytes. - * cp points to the opaque object and cnt gives the byte length. - */ -bool_t -xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) -{ - u_int rndup; - static char crud[BYTES_PER_XDR_UNIT]; - - /* - * if no data we are done - */ - if (cnt == 0) - return TRUE; - - /* - * round byte count to full xdr units - */ - rndup = cnt % BYTES_PER_XDR_UNIT; - if (rndup > 0) - rndup = BYTES_PER_XDR_UNIT - rndup; - - switch (xdrs->x_op) - { - case XDR_DECODE: - if (!XDR_GETBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); - - case XDR_ENCODE: - if (!XDR_PUTBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_PUTBYTES (xdrs, xdr_zero, rndup); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_opaque) - -/* - * XDR counted bytes - * *cpp is a pointer to the bytes, *sizep is the count. - * If *cpp is NULL maxsize bytes are allocated - */ -bool_t -xdr_bytes (xdrs, cpp, sizep, maxsize) - XDR *xdrs; - char **cpp; - u_int *sizep; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int nodesize; - - /* - * first deal with the length since xdr bytes are counted - */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - nodesize = *sizep; - if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (nodesize == 0) - { - return TRUE; - } - if (sp == NULL) - { - *cpp = sp = (char *) mem_alloc (nodesize); - } - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); - return FALSE; - } - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, nodesize); - - case XDR_FREE: - if (sp != NULL) - { - mem_free (sp, nodesize); - *cpp = NULL; - } - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bytes) - -/* - * Implemented here due to commonality of the object. - */ -bool_t -xdr_netobj (xdrs, np) - XDR *xdrs; - struct netobj *np; -{ - - return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); -} -INTDEF(xdr_netobj) - -/* - * XDR a discriminated union - * Support routine for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * an entry with a null procedure pointer. The routine gets - * the discriminant value and then searches the array of xdrdiscrims - * looking for that value. It calls the procedure given in the xdrdiscrim - * to handle the discriminant. If there is no specific routine a default - * routine may be called. - * If there is no specific or default routine an error is returned. - */ -bool_t -xdr_union (xdrs, dscmp, unp, choices, dfault) - XDR *xdrs; - enum_t *dscmp; /* enum to decide which arm to work on */ - char *unp; /* the union itself */ - const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ - xdrproc_t dfault; /* default xdr routine */ -{ - enum_t dscm; - - /* - * we deal with the discriminator; it's an enum - */ - if (!INTUSE(xdr_enum) (xdrs, dscmp)) - { - return FALSE; - } - dscm = *dscmp; - - /* - * search choices for a value that matches the discriminator. - * if we find one, execute the xdr routine for that value. - */ - for (; choices->proc != NULL_xdrproc_t; choices++) - { - if (choices->value == dscm) - return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); - } - - /* - * no match - execute the default xdr routine if there is one - */ - return ((dfault == NULL_xdrproc_t) ? FALSE : - (*dfault) (xdrs, unp, LASTUNSIGNED)); -} -INTDEF(xdr_union) - - -/* - * Non-portable xdr primitives. - * Care should be taken when moving these routines to new architectures. - */ - - -/* - * XDR null terminated ASCII strings - * xdr_string deals with "C strings" - arrays of bytes that are - * terminated by a NULL character. The parameter cpp references a - * pointer to storage; If the pointer is null, then the necessary - * storage is allocated. The last parameter is the max allowed length - * of the string as specified by a protocol. - */ -bool_t -xdr_string (xdrs, cpp, maxsize) - XDR *xdrs; - char **cpp; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int size; - u_int nodesize; - - /* - * first deal with the length since xdr strings are counted-strings - */ - switch (xdrs->x_op) - { - case XDR_FREE: - if (sp == NULL) - { - return TRUE; /* already free */ - } - /* fall through... */ - case XDR_ENCODE: - if (sp == NULL) - return FALSE; - size = strlen (sp); - break; - case XDR_DECODE: - break; - } - if (!INTUSE(xdr_u_int) (xdrs, &size)) - { - return FALSE; - } - if (size > maxsize) - { - return FALSE; - } - nodesize = size + 1; - if (nodesize == 0) - { - /* This means an overflow. It a bug in the caller which - provided a too large maxsize but nevertheless catch it - here. */ - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (sp == NULL) - *cpp = sp = (char *) mem_alloc (nodesize); - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_string: out of memory\n"); - return FALSE; - } - sp[size] = 0; - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, size); - - case XDR_FREE: - mem_free (sp, nodesize); - *cpp = NULL; - return TRUE; - } - return FALSE; -} -INTDEF(xdr_string) - -/* - * Wrapper for xdr_string that can be called directly from - * routines like clnt_call - */ -bool_t -xdr_wrapstring (xdrs, cpp) - XDR *xdrs; - char **cpp; -{ - if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) - { - return TRUE; - } - return FALSE; -} diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr.h b/source/unres/src_MD-M/xdrf-Argonne/xdr.h deleted file mode 100644 index 2602ad9..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/xdr.h +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr.h, External Data Representation Serialization Routines. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - */ - -#ifndef _RPC_XDR_H -#define _RPC_XDR_H 1 - -#include -#include -#include "types.h" - -/* We need FILE. */ -#include - -__BEGIN_DECLS - -/* - * XDR provides a conventional way for converting between C data - * types and an external bit-string representation. Library supplied - * routines provide for the conversion on built-in C data types. These - * routines and utility routines defined here are used to help implement - * a type encode/decode routine for each user-defined type. - * - * Each data type provides a single procedure which takes two arguments: - * - * bool_t - * xdrproc(xdrs, argresp) - * XDR *xdrs; - * *argresp; - * - * xdrs is an instance of a XDR handle, to which or from which the data - * type is to be converted. argresp is a pointer to the structure to be - * converted. The XDR handle contains an operation field which indicates - * which of the operations (ENCODE, DECODE * or FREE) is to be performed. - * - * XDR_DECODE may allocate space if the pointer argresp is null. This - * data can be freed with the XDR_FREE operation. - * - * We write only one procedure per data type to make it easy - * to keep the encode and decode procedures for a data type consistent. - * In many cases the same code performs all operations on a user defined type, - * because all the hard work is done in the component type routines. - * decode as a series of calls on the nested data types. - */ - -/* - * Xdr operations. XDR_ENCODE causes the type to be encoded into the - * stream. XDR_DECODE causes the type to be extracted from the stream. - * XDR_FREE can be used to release the space allocated by an XDR_DECODE - * request. - */ -enum xdr_op { - XDR_ENCODE = 0, - XDR_DECODE = 1, - XDR_FREE = 2 -}; - -/* - * This is the number of bytes per unit of external data. - */ -#define BYTES_PER_XDR_UNIT (4) -/* - * This only works if the above is a power of 2. But it's defined to be - * 4 by the appropriate RFCs. So it will work. And it's normally quicker - * than the old routine. - */ -#if 1 -#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) -#else /* this is the old routine */ -#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ - * BYTES_PER_XDR_UNIT) -#endif - -/* - * The XDR handle. - * Contains operation which is being applied to the stream, - * an operations vector for the particular implementation (e.g. see xdr_mem.c), - * and two private fields for the use of the particular implementation. - */ -typedef struct XDR XDR; -struct XDR - { - enum xdr_op x_op; /* operation; fast additional param */ - struct xdr_ops - { - bool_t (*x_getlong) (XDR *__xdrs, long *__lp); - /* get a long from underlying stream */ - bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); - /* put a long to " */ - bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); - /* get some bytes from " */ - bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); - /* put some bytes to " */ - u_int (*x_getpostn) (__const XDR *__xdrs); - /* returns bytes off from beginning */ - bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); - /* lets you reposition the stream */ - int32_t *(*x_inline) (XDR *__xdrs, u_int __len); - /* buf quick ptr to buffered data */ - void (*x_destroy) (XDR *__xdrs); - /* free privates of this xdr_stream */ - bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); - /* get a int from underlying stream */ - bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); - /* put a int to " */ - } - *x_ops; - caddr_t x_public; /* users' data */ - caddr_t x_private; /* pointer to private data */ - caddr_t x_base; /* private used for position info */ - u_int x_handy; /* extra private word */ - }; - -/* - * A xdrproc_t exists for each data type which is to be encoded or decoded. - * - * The second argument to the xdrproc_t is a pointer to an opaque pointer. - * The opaque pointer generally points to a structure of the data type - * to be decoded. If this pointer is 0, then the type routines should - * allocate dynamic storage of the appropriate size and return it. - * bool_t (*xdrproc_t)(XDR *, caddr_t *); - */ -typedef bool_t (*xdrproc_t) (XDR *, void *,...); - - -/* - * Operations defined on a XDR handle - * - * XDR *xdrs; - * int32_t *int32p; - * long *longp; - * caddr_t addr; - * u_int len; - * u_int pos; - */ -#define XDR_GETINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) -#define xdr_getint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) - -#define XDR_PUTINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) -#define xdr_putint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) - -#define XDR_GETLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) -#define xdr_getlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) - -#define XDR_PUTLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) -#define xdr_putlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) - -#define XDR_GETBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) -#define xdr_getbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) - -#define XDR_PUTBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) -#define xdr_putbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) - -#define XDR_GETPOS(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) -#define xdr_getpos(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) - -#define XDR_SETPOS(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) -#define xdr_setpos(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) - -#define XDR_INLINE(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) -#define xdr_inline(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) - -#define XDR_DESTROY(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) -#define xdr_destroy(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) - -/* - * Support struct for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * a entry with a null procedure pointer. The xdr_union routine gets - * the discriminant value and then searches the array of structures - * for a matching value. If a match is found the associated xdr routine - * is called to handle that part of the union. If there is - * no match, then a default routine may be called. - * If there is no match and no default routine it is an error. - */ -#define NULL_xdrproc_t ((xdrproc_t)0) -struct xdr_discrim -{ - int value; - xdrproc_t proc; -}; - -/* - * Inline routines for fast encode/decode of primitive data types. - * Caveat emptor: these use single memory cycles to get the - * data from the underlying buffer, and will fail to operate - * properly if the data is not aligned. The standard way to use these - * is to say: - * if ((buf = XDR_INLINE(xdrs, count)) == NULL) - * return (FALSE); - * <<< macro calls >>> - * where ``count'' is the number of bytes of data occupied - * by the primitive data types. - * - * N.B. and frozen for all time: each data type here uses 4 bytes - * of external representation. - */ - -#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) -#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) -#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) -#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) - -/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ -#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) -#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) -#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - - -#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) -#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) -#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) -#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) - -#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - -/* - * These are the "generic" xdr routines. - * None of these can have const applied because it's not possible to - * know whether the call is a read or a write to the passed parameter - * also, the XDR structure is always updated by some of these calls. - */ -extern bool_t xdr_void (void) __THROW; -extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; -extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; -extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; -extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; -extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; -extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; -extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; -extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; -extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; -extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; -extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; -extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; -extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; -extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; -extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; -extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; -extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; -extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; -extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, - u_int __maxsize, u_int __elsize, xdrproc_t __elproc) - __THROW; -extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, - u_int __maxsize) __THROW; -extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; -extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; -extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, - __const struct xdr_discrim *__choices, - xdrproc_t dfault) __THROW; -extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; -extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; -extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, - u_int __elemsize, xdrproc_t __xdr_elem) __THROW; -extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; -extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; -extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, - xdrproc_t __proc) __THROW; -extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, - u_int __obj_size, xdrproc_t __xdr_obj) __THROW; -extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; -extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; - -/* - * Common opaque bytes objects used by many rpc protocols; - * declared here due to commonality. - */ -#define MAX_NETOBJ_SZ 1024 -struct netobj -{ - u_int n_len; - char *n_bytes; -}; -typedef struct netobj netobj; -extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; - -/* - * These are the public routines for the various implementations of - * xdr streams. - */ - -/* XDR using memory buffers */ -extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, - u_int __size, enum xdr_op __xop) __THROW; - -/* XDR using stdio library */ -extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) - __THROW; - -/* XDR pseudo records for tcp */ -extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, - u_int __recvsize, caddr_t __tcp_handle, - int (*__readit) (char *, char *, int), - int (*__writeit) (char *, char *, int)) __THROW; - -/* make end of xdr record */ -extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; - -/* move to beginning of next record */ -extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; - -/* true if no more input */ -extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; - -/* free memory buffers for xdr */ -extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; - -__END_DECLS - -#endif /* rpc/xdr.h */ diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr.o b/source/unres/src_MD-M/xdrf-Argonne/xdr.o deleted file mode 100644 index 72fd1fe..0000000 Binary files a/source/unres/src_MD-M/xdrf-Argonne/xdr.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr_array.c b/source/unres/src_MD-M/xdrf-Argonne/xdr_array.c deleted file mode 100644 index 836405c..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/xdr_array.c +++ /dev/null @@ -1,174 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_array.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "non-trivial" xdr primitives used to serialize and de-serialize - * arrays. See xdr.h for more info on the interface to xdr. - */ - -#include -#include -#include "types.h" -#include "xdr.h" -#include -#include - -#ifdef USE_IN_LIBIO -# include -#endif - -#define LASTUNSIGNED ((u_int)0-1) - - -/* - * XDR an array of arbitrary elements - * *addrp is a pointer to the array, *sizep is the number of elements. - * If addrp is NULL (*sizep * elsize) bytes are allocated. - * elsize is the size (in bytes) of each element, and elproc is the - * xdr procedure to call to handle each element of the array. - */ -bool_t -xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) - XDR *xdrs; - caddr_t *addrp; /* array pointer */ - u_int *sizep; /* number of elements */ - u_int maxsize; /* max numberof elements */ - u_int elsize; /* size in bytes of each element */ - xdrproc_t elproc; /* xdr routine to handle each element */ -{ - u_int i; - caddr_t target = *addrp; - u_int c; /* the actual element count */ - bool_t stat = TRUE; - u_int nodesize; - - /* like strings, arrays are really counted arrays */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - c = *sizep; - /* - * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() - * doesn't actually use its second argument anyway. - */ - if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - nodesize = c * elsize; - - /* - * if we are deserializing, we may need to allocate an array. - * We also save time by checking for a null array if we are freeing. - */ - if (target == NULL) - switch (xdrs->x_op) - { - case XDR_DECODE: - if (c == 0) - return TRUE; - *addrp = target = mem_alloc (nodesize); - if (target == NULL) - { - fprintf (stderr, "%s", "xdr_array: out of memory\n"); - return FALSE; - } - __bzero (target, nodesize); - break; - - case XDR_FREE: - return TRUE; - default: - break; - } - - /* - * now we xdr each element of array - */ - for (i = 0; (i < c) && stat; i++) - { - stat = (*elproc) (xdrs, target, LASTUNSIGNED); - target += elsize; - } - - /* - * the array may need freeing - */ - if (xdrs->x_op == XDR_FREE) - { - mem_free (*addrp, nodesize); - *addrp = NULL; - } - return stat; -} -INTDEF(xdr_array) - -/* - * xdr_vector(): - * - * XDR a fixed length array. Unlike variable-length arrays, - * the storage of fixed length arrays is static and unfreeable. - * > basep: base of the array - * > size: size of the array - * > elemsize: size of each element - * > xdr_elem: routine to XDR each element - */ -bool_t -xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) - XDR *xdrs; - char *basep; - u_int nelem; - u_int elemsize; - xdrproc_t xdr_elem; -{ - u_int i; - char *elptr; - - elptr = basep; - for (i = 0; i < nelem; i++) - { - if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) - { - return FALSE; - } - elptr += elemsize; - } - return TRUE; -} diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr_array.o b/source/unres/src_MD-M/xdrf-Argonne/xdr_array.o deleted file mode 100644 index 97caed2..0000000 Binary files a/source/unres/src_MD-M/xdrf-Argonne/xdr_array.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr_float.c b/source/unres/src_MD-M/xdrf-Argonne/xdr_float.c deleted file mode 100644 index 15d3c88..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/xdr_float.c +++ /dev/null @@ -1,307 +0,0 @@ -/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_float.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "floating point" xdr routines used to (de)serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include - -#include "types.h" -#include "xdr.h" - -/* - * NB: Not portable. - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) - -#ifdef vax - -/* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int mantissa: 23; - unsigned int exp : 8; - unsigned int sign : 1; -}; - -/* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; -}; - -#define VAX_SNG_BIAS 0x81 -#define IEEE_SNG_BIAS 0x7f - -static struct sgl_limits { - struct vax_single s; - struct ieee_single ieee; -} sgl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x0, 0xff, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; -#endif /* vax */ - -bool_t -xdr_float(xdrs, fp) - XDR *xdrs; - float *fp; -{ -#ifdef vax - struct ieee_single is; - struct vax_single vs, *vsp; - struct sgl_limits *lim; - int i; -#endif - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vs = *((struct vax_single *)fp); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((vs.mantissa2 == lim->s.mantissa2) && - (vs.exp == lim->s.exp) && - (vs.mantissa1 == lim->s.mantissa1)) { - is = lim->ieee; - goto shipit; - } - } - is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; - shipit: - is.sign = vs.sign; - return (XDR_PUTLONG(xdrs, (long *)&is)); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_PUTLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp = *(int *)fp; - return (XDR_PUTLONG(xdrs, &tmp)); - } - break; -#endif - - case XDR_DECODE: -#ifdef vax - vsp = (struct vax_single *)fp; - if (!XDR_GETLONG(xdrs, (long *)&is)) - return (FALSE); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((is.exp == lim->ieee.exp) && - (is.mantissa == lim->ieee.mantissa)) { - *vsp = lim->s; - goto doneit; - } - } - vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = is.mantissa; - vsp->mantissa1 = (is.mantissa >> 16); - doneit: - vsp->sign = is.sign; - return (TRUE); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_GETLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp; - if (XDR_GETLONG(xdrs, &tmp)) { - *(int *)fp = tmp; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} - -/* - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#ifdef vax -/* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int mantissa1 : 20; - unsigned int exp : 11; - unsigned int sign : 1; - unsigned int mantissa2 : 32; -}; - -/* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; -}; - -#define VAX_DBL_BIAS 0x81 -#define IEEE_DBL_BIAS 0x3ff -#define MASK(nbits) ((1 << nbits) - 1) - -static struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; -} dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; - -#endif /* vax */ - - -bool_t -xdr_double(xdrs, dp) - XDR *xdrs; - double *dp; -{ -#ifdef vax - struct ieee_double id; - struct vax_double vd; - register struct dbl_limits *lim; - int i; -#endif - - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vd = *((struct vax_double *)dp); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((vd.mantissa4 == lim->d.mantissa4) && - (vd.mantissa3 == lim->d.mantissa3) && - (vd.mantissa2 == lim->d.mantissa2) && - (vd.mantissa1 == lim->d.mantissa1) && - (vd.exp == lim->d.exp)) { - id = lim->ieee; - goto shipit; - } - } - id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); - id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | - (vd.mantissa3 << 13) | - ((vd.mantissa4 >> 3) & MASK(13)); - shipit: - id.sign = vd.sign; - dp = (double *)&id; -#endif - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_PUTLONG(xdrs, lp+!LSW) && - XDR_PUTLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - tmp[0] = ip[!LSW]; - tmp[1] = ip[LSW]; - return (XDR_PUTLONG(xdrs, tmp) && - XDR_PUTLONG(xdrs, tmp+1)); - } - break; - - case XDR_DECODE: -#ifdef vax - lp = (long *)&id; - if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) - return (FALSE); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((id.mantissa2 == lim->ieee.mantissa2) && - (id.mantissa1 == lim->ieee.mantissa1) && - (id.exp == lim->ieee.exp)) { - vd = lim->d; - goto doneit; - } - } - vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - vd.mantissa1 = (id.mantissa1 >> 13); - vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | - (id.mantissa2 >> 29); - vd.mantissa3 = (id.mantissa2 >> 13); - vd.mantissa4 = (id.mantissa2 << 3); - doneit: - vd.sign = id.sign; - *dp = *((double *)&vd); - return (TRUE); -#else - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_GETLONG(xdrs, lp+!LSW) && - XDR_GETLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - if (XDR_GETLONG(xdrs, tmp+!LSW) && - XDR_GETLONG(xdrs, tmp+LSW)) { - ip[0] = tmp[0]; - ip[1] = tmp[1]; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr_float.o b/source/unres/src_MD-M/xdrf-Argonne/xdr_float.o deleted file mode 100644 index 00d3c7a..0000000 Binary files a/source/unres/src_MD-M/xdrf-Argonne/xdr_float.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr_stdio.c b/source/unres/src_MD-M/xdrf-Argonne/xdr_stdio.c deleted file mode 100644 index 12b1709..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/xdr_stdio.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr_stdio.c, XDR implementation on standard i/o file. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * This set of routines implements a XDR on a stdio stream. - * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes - * from the stream. - */ - -#include "types.h" -#include -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -# define fflush(s) INTUSE(_IO_fflush) (s) -# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) -# define ftell(s) INTUSE(_IO_ftell) (s) -# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) -#endif - -static bool_t xdrstdio_getlong (XDR *, long *); -static bool_t xdrstdio_putlong (XDR *, const long *); -static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); -static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); -static u_int xdrstdio_getpos (const XDR *); -static bool_t xdrstdio_setpos (XDR *, u_int); -static int32_t *xdrstdio_inline (XDR *, u_int); -static void xdrstdio_destroy (XDR *); -static bool_t xdrstdio_getint32 (XDR *, int32_t *); -static bool_t xdrstdio_putint32 (XDR *, const int32_t *); - -/* - * Ops vector for stdio type XDR - */ -static const struct xdr_ops xdrstdio_ops = -{ - xdrstdio_getlong, /* deserialize a long int */ - xdrstdio_putlong, /* serialize a long int */ - xdrstdio_getbytes, /* deserialize counted bytes */ - xdrstdio_putbytes, /* serialize counted bytes */ - xdrstdio_getpos, /* get offset in the stream */ - xdrstdio_setpos, /* set offset in the stream */ - xdrstdio_inline, /* prime stream for inline macros */ - xdrstdio_destroy, /* destroy stream */ - xdrstdio_getint32, /* deserialize a int */ - xdrstdio_putint32 /* serialize a int */ -}; - -/* - * Initialize a stdio xdr stream. - * Sets the xdr stream handle xdrs for use on the stream file. - * Operation flag is set to op. - */ -void -xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) -{ - xdrs->x_op = op; - /* We have to add the const since the `struct xdr_ops' in `struct XDR' - is not `const'. */ - xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; - xdrs->x_private = (caddr_t) file; - xdrs->x_handy = 0; - xdrs->x_base = 0; -} - -/* - * Destroy a stdio xdr stream. - * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. - */ -static void -xdrstdio_destroy (XDR *xdrs) -{ - (void) fflush ((FILE *) xdrs->x_private); - /* xx should we close the file ?? */ -}; - -static bool_t -xdrstdio_getlong (XDR *xdrs, long *lp) -{ - u_int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *lp = (long) ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putlong (XDR *xdrs, const long *lp) -{ - int32_t mycopy = htonl ((u_int32_t) *lp); - - if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) -{ - if ((len != 0) && (fread (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) -{ - if ((len != 0) && (fwrite (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static u_int -xdrstdio_getpos (const XDR *xdrs) -{ - return (u_int) ftell ((FILE *) xdrs->x_private); -} - -static bool_t -xdrstdio_setpos (XDR *xdrs, u_int pos) -{ - return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; -} - -static int32_t * -xdrstdio_inline (XDR *xdrs, u_int len) -{ - /* - * Must do some work to implement this: must insure - * enough data in the underlying stdio buffer, - * that the buffer is aligned so that we can indirect through a - * long *, and stuff this pointer in xdrs->x_buf. Doing - * a fread or fwrite to a scratch buffer would defeat - * most of the gains to be had here and require storage - * management on this buffer, so we don't do this. - */ - return NULL; -} - -static bool_t -xdrstdio_getint32 (XDR *xdrs, int32_t *ip) -{ - int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *ip = ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) -{ - int32_t mycopy = htonl (*ip); - - ip = &mycopy; - if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdr_stdio.o b/source/unres/src_MD-M/xdrf-Argonne/xdr_stdio.o deleted file mode 100644 index 00b079d..0000000 Binary files a/source/unres/src_MD-M/xdrf-Argonne/xdr_stdio.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf-Argonne/xdrf.h b/source/unres/src_MD-M/xdrf-Argonne/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/unres/src_MD-M/xdrf-Argonne/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/unres/src_MD-M/xdrf/Makefile b/source/unres/src_MD-M/xdrf/Makefile deleted file mode 100644 index 02c29f6..0000000 --- a/source/unres/src_MD-M/xdrf/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = gcc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf/Makefile_jubl b/source/unres/src_MD-M/xdrf/Makefile_jubl deleted file mode 100644 index 8dc35cf..0000000 --- a/source/unres/src_MD-M/xdrf/Makefile_jubl +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = /usr/bin/blrts_xlc -CPPC = /usr/bin/blrts_xlc - -CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f *.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf/Makefile_linux b/source/unres/src_MD-M/xdrf/Makefile_linux deleted file mode 100644 index f03276e..0000000 --- a/source/unres/src_MD-M/xdrf/Makefile_linux +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf/Makefile~ b/source/unres/src_MD-M/xdrf/Makefile~ deleted file mode 100644 index f0f81e5..0000000 --- a/source/unres/src_MD-M/xdrf/Makefile~ +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = /usr/bin/blrts_xlc -CPPC = /usr/bin/blrts_xlc - -CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf/RS6K.m4 b/source/unres/src_MD-M/xdrf/RS6K.m4 deleted file mode 100644 index 0331d97..0000000 --- a/source/unres/src_MD-M/xdrf/RS6K.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -undefine(`len') -# -# do nothing special to FORTRAN function names -# -define(`FUNCTION',`$1') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) - diff --git a/source/unres/src_MD-M/xdrf/ftocstr.c b/source/unres/src_MD-M/xdrf/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/unres/src_MD-M/xdrf/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/unres/src_MD-M/xdrf/ftocstr.o b/source/unres/src_MD-M/xdrf/ftocstr.o deleted file mode 100644 index f0102ea..0000000 Binary files a/source/unres/src_MD-M/xdrf/ftocstr.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf/libxdrf.a b/source/unres/src_MD-M/xdrf/libxdrf.a deleted file mode 100644 index 98bd9c6..0000000 Binary files a/source/unres/src_MD-M/xdrf/libxdrf.a and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf/libxdrf.m4 b/source/unres/src_MD-M/xdrf/libxdrf.m4 deleted file mode 100644 index a6da458..0000000 --- a/source/unres/src_MD-M/xdrf/libxdrf.m4 +++ /dev/null @@ -1,1238 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "w+"; - lmode = XDR_ENCODE; - } else if (*type == 'a' || *type == 'A') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf/libxdrf.m4.org b/source/unres/src_MD-M/xdrf/libxdrf.m4.org deleted file mode 100644 index b14b374..0000000 --- a/source/unres/src_MD-M/xdrf/libxdrf.m4.org +++ /dev/null @@ -1,1230 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf/libxdrf.m4~ b/source/unres/src_MD-M/xdrf/libxdrf.m4~ deleted file mode 100644 index 8704af2..0000000 --- a/source/unres/src_MD-M/xdrf/libxdrf.m4~ +++ /dev/null @@ -1,1234 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf/libxdrf.o b/source/unres/src_MD-M/xdrf/libxdrf.o deleted file mode 100644 index 1f81ca3..0000000 Binary files a/source/unres/src_MD-M/xdrf/libxdrf.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf/types.h b/source/unres/src_MD-M/xdrf/types.h deleted file mode 100644 index 871f3fd..0000000 --- a/source/unres/src_MD-M/xdrf/types.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* fixincludes should not add extern "C" to this file */ -/* - * Rpc additions to - */ -#ifndef _RPC_TYPES_H -#define _RPC_TYPES_H 1 - -typedef int bool_t; -typedef int enum_t; -/* This needs to be changed to uint32_t in the future */ -typedef unsigned long rpcprog_t; -typedef unsigned long rpcvers_t; -typedef unsigned long rpcproc_t; -typedef unsigned long rpcprot_t; -typedef unsigned long rpcport_t; - -#define __dontcare__ -1 - -#ifndef FALSE -# define FALSE (0) -#endif - -#ifndef TRUE -# define TRUE (1) -#endif - -#ifndef NULL -# define NULL 0 -#endif - -#include /* For malloc decl. */ -#define mem_alloc(bsize) malloc(bsize) -/* - * XXX: This must not use the second argument, or code in xdr_array.c needs - * to be modified. - */ -#define mem_free(ptr, bsize) free(ptr) - -#ifndef makedev /* ie, we haven't already included it */ -#include -#endif - -#ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; -typedef __fsid_t fsid_t; -# define __u_char_defined -#endif -#ifndef __daddr_t_defined -typedef __daddr_t daddr_t; -typedef __caddr_t caddr_t; -# define __daddr_t_defined -#endif - -#include -#include - -#include - -#ifndef INADDR_LOOPBACK -#define INADDR_LOOPBACK (u_long)0x7F000001 -#endif -#ifndef MAXHOSTNAMELEN -#define MAXHOSTNAMELEN 64 -#endif - -#endif /* rpc/types.h */ diff --git a/source/unres/src_MD-M/xdrf/underscore.m4 b/source/unres/src_MD-M/xdrf/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/unres/src_MD-M/xdrf/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/unres/src_MD-M/xdrf/xdr.c b/source/unres/src_MD-M/xdrf/xdr.c deleted file mode 100644 index 33b8544..0000000 --- a/source/unres/src_MD-M/xdrf/xdr.c +++ /dev/null @@ -1,752 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; -#endif - -/* - * xdr.c, Generic XDR routines implementation. - * - * Copyright (C) 1986, Sun Microsystems, Inc. - * - * These are the "generic" xdr routines used to serialize and de-serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include -#include -#include - -#include "types.h" -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -#endif - -/* - * constants specific to the xdr "protocol" - */ -#define XDR_FALSE ((long) 0) -#define XDR_TRUE ((long) 1) -#define LASTUNSIGNED ((u_int) 0-1) - -/* - * for unit alignment - */ -static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; - -/* - * Free a data structure using XDR - * Not a filter, but a convenient utility nonetheless - */ -void -xdr_free (xdrproc_t proc, char *objp) -{ - XDR x; - - x.x_op = XDR_FREE; - (*proc) (&x, objp); -} - -/* - * XDR nothing - */ -bool_t -xdr_void (void) -{ - return TRUE; -} -INTDEF(xdr_void) - -/* - * XDR integers - */ -bool_t -xdr_int (XDR *xdrs, int *ip) -{ - -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *ip; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ip = (int) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif INT_MAX == LONG_MAX - return INTUSE(xdr_long) (xdrs, (long *) ip); -#elif INT_MAX == SHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) ip); -#else -#error unexpected integer sizes in_xdr_int() -#endif -} -INTDEF(xdr_int) - -/* - * XDR unsigned integers - */ -bool_t -xdr_u_int (XDR *xdrs, u_int *up) -{ -#if UINT_MAX < ULONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * up; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *up = (u_int) (u_long) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif UINT_MAX == ULONG_MAX - return INTUSE(xdr_u_long) (xdrs, (u_long *) up); -#elif UINT_MAX == USHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) up); -#else -#error unexpected integer sizes in_xdr_u_int() -#endif -} -INTDEF(xdr_u_int) - -/* - * XDR long integers - * The definition of xdr_long() is kept for backward - * compatibility. Instead xdr_int() should be used. - */ -bool_t -xdr_long (XDR *xdrs, long *lp) -{ - - if (xdrs->x_op == XDR_ENCODE - && (sizeof (int32_t) == sizeof (long) - || (int32_t) *lp == *lp)) - return XDR_PUTLONG (xdrs, lp); - - if (xdrs->x_op == XDR_DECODE) - return XDR_GETLONG (xdrs, lp); - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_long) - -/* - * XDR unsigned long integers - * The definition of xdr_u_long() is kept for backward - * compatibility. Instead xdr_u_int() should be used. - */ -bool_t -xdr_u_long (XDR *xdrs, u_long *ulp) -{ - switch (xdrs->x_op) - { - case XDR_DECODE: - { - long int tmp; - - if (XDR_GETLONG (xdrs, &tmp) == FALSE) - return FALSE; - - *ulp = (uint32_t) tmp; - return TRUE; - } - - case XDR_ENCODE: - if (sizeof (uint32_t) != sizeof (u_long) - && (uint32_t) *ulp != *ulp) - return FALSE; - - return XDR_PUTLONG (xdrs, (long *) ulp); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_long) - -/* - * XDR hyper integers - * same as xdr_u_hyper - open coded to save a proc call! - */ -bool_t -xdr_hyper (XDR *xdrs, quad_t *llp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (long) ((*llp) >> 32); - t2 = (long) (*llp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *llp = ((quad_t) t1) << 32; - *llp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_hyper) - - -/* - * XDR hyper integers - * same as xdr_hyper - open coded to save a proc call! - */ -bool_t -xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (unsigned long) ((*ullp) >> 32); - t2 = (unsigned long) (*ullp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *ullp = ((u_quad_t) t1) << 32; - *ullp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_u_hyper) - -bool_t -xdr_longlong_t (XDR *xdrs, quad_t *llp) -{ - return INTUSE(xdr_hyper) (xdrs, llp); -} - -bool_t -xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) -{ - return INTUSE(xdr_u_hyper) (xdrs, ullp); -} - -/* - * XDR short integers - */ -bool_t -xdr_short (XDR *xdrs, short *sp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *sp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *sp = (short) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_short) - -/* - * XDR unsigned short integers - */ -bool_t -xdr_u_short (XDR *xdrs, u_short *usp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * usp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *usp = (u_short) (u_long) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_short) - - -/* - * XDR a char - */ -bool_t -xdr_char (XDR *xdrs, char *cp) -{ - int i; - - i = (*cp); - if (!INTUSE(xdr_int) (xdrs, &i)) - { - return FALSE; - } - *cp = i; - return TRUE; -} - -/* - * XDR an unsigned char - */ -bool_t -xdr_u_char (XDR *xdrs, u_char *cp) -{ - u_int u; - - u = (*cp); - if (!INTUSE(xdr_u_int) (xdrs, &u)) - { - return FALSE; - } - *cp = u; - return TRUE; -} - -/* - * XDR booleans - */ -bool_t -xdr_bool (XDR *xdrs, bool_t *bp) -{ - long lb; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - lb = *bp ? XDR_TRUE : XDR_FALSE; - return XDR_PUTLONG (xdrs, &lb); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &lb)) - { - return FALSE; - } - *bp = (lb == XDR_FALSE) ? FALSE : TRUE; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bool) - -/* - * XDR enumerations - */ -bool_t -xdr_enum (XDR *xdrs, enum_t *ep) -{ - enum sizecheck - { - SIZEVAL - }; /* used to find the size of an enum */ - - /* - * enums are treated as ints - */ - if (sizeof (enum sizecheck) == 4) - { -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = *ep; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ep = l; - case XDR_FREE: - return TRUE; - - } - return FALSE; -#else - return INTUSE(xdr_long) (xdrs, (long *) ep); -#endif - } - else if (sizeof (enum sizecheck) == sizeof (short)) - { - return INTUSE(xdr_short) (xdrs, (short *) ep); - } - else - { - return FALSE; - } -} -INTDEF(xdr_enum) - -/* - * XDR opaque data - * Allows the specification of a fixed size sequence of opaque bytes. - * cp points to the opaque object and cnt gives the byte length. - */ -bool_t -xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) -{ - u_int rndup; - static char crud[BYTES_PER_XDR_UNIT]; - - /* - * if no data we are done - */ - if (cnt == 0) - return TRUE; - - /* - * round byte count to full xdr units - */ - rndup = cnt % BYTES_PER_XDR_UNIT; - if (rndup > 0) - rndup = BYTES_PER_XDR_UNIT - rndup; - - switch (xdrs->x_op) - { - case XDR_DECODE: - if (!XDR_GETBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); - - case XDR_ENCODE: - if (!XDR_PUTBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_PUTBYTES (xdrs, xdr_zero, rndup); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_opaque) - -/* - * XDR counted bytes - * *cpp is a pointer to the bytes, *sizep is the count. - * If *cpp is NULL maxsize bytes are allocated - */ -bool_t -xdr_bytes (xdrs, cpp, sizep, maxsize) - XDR *xdrs; - char **cpp; - u_int *sizep; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int nodesize; - - /* - * first deal with the length since xdr bytes are counted - */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - nodesize = *sizep; - if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (nodesize == 0) - { - return TRUE; - } - if (sp == NULL) - { - *cpp = sp = (char *) mem_alloc (nodesize); - } - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); - return FALSE; - } - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, nodesize); - - case XDR_FREE: - if (sp != NULL) - { - mem_free (sp, nodesize); - *cpp = NULL; - } - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bytes) - -/* - * Implemented here due to commonality of the object. - */ -bool_t -xdr_netobj (xdrs, np) - XDR *xdrs; - struct netobj *np; -{ - - return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); -} -INTDEF(xdr_netobj) - -/* - * XDR a discriminated union - * Support routine for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * an entry with a null procedure pointer. The routine gets - * the discriminant value and then searches the array of xdrdiscrims - * looking for that value. It calls the procedure given in the xdrdiscrim - * to handle the discriminant. If there is no specific routine a default - * routine may be called. - * If there is no specific or default routine an error is returned. - */ -bool_t -xdr_union (xdrs, dscmp, unp, choices, dfault) - XDR *xdrs; - enum_t *dscmp; /* enum to decide which arm to work on */ - char *unp; /* the union itself */ - const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ - xdrproc_t dfault; /* default xdr routine */ -{ - enum_t dscm; - - /* - * we deal with the discriminator; it's an enum - */ - if (!INTUSE(xdr_enum) (xdrs, dscmp)) - { - return FALSE; - } - dscm = *dscmp; - - /* - * search choices for a value that matches the discriminator. - * if we find one, execute the xdr routine for that value. - */ - for (; choices->proc != NULL_xdrproc_t; choices++) - { - if (choices->value == dscm) - return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); - } - - /* - * no match - execute the default xdr routine if there is one - */ - return ((dfault == NULL_xdrproc_t) ? FALSE : - (*dfault) (xdrs, unp, LASTUNSIGNED)); -} -INTDEF(xdr_union) - - -/* - * Non-portable xdr primitives. - * Care should be taken when moving these routines to new architectures. - */ - - -/* - * XDR null terminated ASCII strings - * xdr_string deals with "C strings" - arrays of bytes that are - * terminated by a NULL character. The parameter cpp references a - * pointer to storage; If the pointer is null, then the necessary - * storage is allocated. The last parameter is the max allowed length - * of the string as specified by a protocol. - */ -bool_t -xdr_string (xdrs, cpp, maxsize) - XDR *xdrs; - char **cpp; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int size; - u_int nodesize; - - /* - * first deal with the length since xdr strings are counted-strings - */ - switch (xdrs->x_op) - { - case XDR_FREE: - if (sp == NULL) - { - return TRUE; /* already free */ - } - /* fall through... */ - case XDR_ENCODE: - if (sp == NULL) - return FALSE; - size = strlen (sp); - break; - case XDR_DECODE: - break; - } - if (!INTUSE(xdr_u_int) (xdrs, &size)) - { - return FALSE; - } - if (size > maxsize) - { - return FALSE; - } - nodesize = size + 1; - if (nodesize == 0) - { - /* This means an overflow. It a bug in the caller which - provided a too large maxsize but nevertheless catch it - here. */ - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (sp == NULL) - *cpp = sp = (char *) mem_alloc (nodesize); - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_string: out of memory\n"); - return FALSE; - } - sp[size] = 0; - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, size); - - case XDR_FREE: - mem_free (sp, nodesize); - *cpp = NULL; - return TRUE; - } - return FALSE; -} -INTDEF(xdr_string) - -/* - * Wrapper for xdr_string that can be called directly from - * routines like clnt_call - */ -bool_t -xdr_wrapstring (xdrs, cpp) - XDR *xdrs; - char **cpp; -{ - if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) - { - return TRUE; - } - return FALSE; -} diff --git a/source/unres/src_MD-M/xdrf/xdr.h b/source/unres/src_MD-M/xdrf/xdr.h deleted file mode 100644 index 2602ad9..0000000 --- a/source/unres/src_MD-M/xdrf/xdr.h +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr.h, External Data Representation Serialization Routines. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - */ - -#ifndef _RPC_XDR_H -#define _RPC_XDR_H 1 - -#include -#include -#include "types.h" - -/* We need FILE. */ -#include - -__BEGIN_DECLS - -/* - * XDR provides a conventional way for converting between C data - * types and an external bit-string representation. Library supplied - * routines provide for the conversion on built-in C data types. These - * routines and utility routines defined here are used to help implement - * a type encode/decode routine for each user-defined type. - * - * Each data type provides a single procedure which takes two arguments: - * - * bool_t - * xdrproc(xdrs, argresp) - * XDR *xdrs; - * *argresp; - * - * xdrs is an instance of a XDR handle, to which or from which the data - * type is to be converted. argresp is a pointer to the structure to be - * converted. The XDR handle contains an operation field which indicates - * which of the operations (ENCODE, DECODE * or FREE) is to be performed. - * - * XDR_DECODE may allocate space if the pointer argresp is null. This - * data can be freed with the XDR_FREE operation. - * - * We write only one procedure per data type to make it easy - * to keep the encode and decode procedures for a data type consistent. - * In many cases the same code performs all operations on a user defined type, - * because all the hard work is done in the component type routines. - * decode as a series of calls on the nested data types. - */ - -/* - * Xdr operations. XDR_ENCODE causes the type to be encoded into the - * stream. XDR_DECODE causes the type to be extracted from the stream. - * XDR_FREE can be used to release the space allocated by an XDR_DECODE - * request. - */ -enum xdr_op { - XDR_ENCODE = 0, - XDR_DECODE = 1, - XDR_FREE = 2 -}; - -/* - * This is the number of bytes per unit of external data. - */ -#define BYTES_PER_XDR_UNIT (4) -/* - * This only works if the above is a power of 2. But it's defined to be - * 4 by the appropriate RFCs. So it will work. And it's normally quicker - * than the old routine. - */ -#if 1 -#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) -#else /* this is the old routine */ -#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ - * BYTES_PER_XDR_UNIT) -#endif - -/* - * The XDR handle. - * Contains operation which is being applied to the stream, - * an operations vector for the particular implementation (e.g. see xdr_mem.c), - * and two private fields for the use of the particular implementation. - */ -typedef struct XDR XDR; -struct XDR - { - enum xdr_op x_op; /* operation; fast additional param */ - struct xdr_ops - { - bool_t (*x_getlong) (XDR *__xdrs, long *__lp); - /* get a long from underlying stream */ - bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); - /* put a long to " */ - bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); - /* get some bytes from " */ - bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); - /* put some bytes to " */ - u_int (*x_getpostn) (__const XDR *__xdrs); - /* returns bytes off from beginning */ - bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); - /* lets you reposition the stream */ - int32_t *(*x_inline) (XDR *__xdrs, u_int __len); - /* buf quick ptr to buffered data */ - void (*x_destroy) (XDR *__xdrs); - /* free privates of this xdr_stream */ - bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); - /* get a int from underlying stream */ - bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); - /* put a int to " */ - } - *x_ops; - caddr_t x_public; /* users' data */ - caddr_t x_private; /* pointer to private data */ - caddr_t x_base; /* private used for position info */ - u_int x_handy; /* extra private word */ - }; - -/* - * A xdrproc_t exists for each data type which is to be encoded or decoded. - * - * The second argument to the xdrproc_t is a pointer to an opaque pointer. - * The opaque pointer generally points to a structure of the data type - * to be decoded. If this pointer is 0, then the type routines should - * allocate dynamic storage of the appropriate size and return it. - * bool_t (*xdrproc_t)(XDR *, caddr_t *); - */ -typedef bool_t (*xdrproc_t) (XDR *, void *,...); - - -/* - * Operations defined on a XDR handle - * - * XDR *xdrs; - * int32_t *int32p; - * long *longp; - * caddr_t addr; - * u_int len; - * u_int pos; - */ -#define XDR_GETINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) -#define xdr_getint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) - -#define XDR_PUTINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) -#define xdr_putint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) - -#define XDR_GETLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) -#define xdr_getlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) - -#define XDR_PUTLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) -#define xdr_putlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) - -#define XDR_GETBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) -#define xdr_getbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) - -#define XDR_PUTBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) -#define xdr_putbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) - -#define XDR_GETPOS(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) -#define xdr_getpos(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) - -#define XDR_SETPOS(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) -#define xdr_setpos(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) - -#define XDR_INLINE(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) -#define xdr_inline(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) - -#define XDR_DESTROY(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) -#define xdr_destroy(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) - -/* - * Support struct for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * a entry with a null procedure pointer. The xdr_union routine gets - * the discriminant value and then searches the array of structures - * for a matching value. If a match is found the associated xdr routine - * is called to handle that part of the union. If there is - * no match, then a default routine may be called. - * If there is no match and no default routine it is an error. - */ -#define NULL_xdrproc_t ((xdrproc_t)0) -struct xdr_discrim -{ - int value; - xdrproc_t proc; -}; - -/* - * Inline routines for fast encode/decode of primitive data types. - * Caveat emptor: these use single memory cycles to get the - * data from the underlying buffer, and will fail to operate - * properly if the data is not aligned. The standard way to use these - * is to say: - * if ((buf = XDR_INLINE(xdrs, count)) == NULL) - * return (FALSE); - * <<< macro calls >>> - * where ``count'' is the number of bytes of data occupied - * by the primitive data types. - * - * N.B. and frozen for all time: each data type here uses 4 bytes - * of external representation. - */ - -#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) -#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) -#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) -#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) - -/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ -#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) -#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) -#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - - -#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) -#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) -#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) -#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) - -#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - -/* - * These are the "generic" xdr routines. - * None of these can have const applied because it's not possible to - * know whether the call is a read or a write to the passed parameter - * also, the XDR structure is always updated by some of these calls. - */ -extern bool_t xdr_void (void) __THROW; -extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; -extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; -extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; -extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; -extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; -extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; -extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; -extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; -extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; -extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; -extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; -extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; -extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; -extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; -extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; -extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; -extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; -extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; -extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, - u_int __maxsize, u_int __elsize, xdrproc_t __elproc) - __THROW; -extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, - u_int __maxsize) __THROW; -extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; -extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; -extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, - __const struct xdr_discrim *__choices, - xdrproc_t dfault) __THROW; -extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; -extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; -extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, - u_int __elemsize, xdrproc_t __xdr_elem) __THROW; -extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; -extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; -extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, - xdrproc_t __proc) __THROW; -extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, - u_int __obj_size, xdrproc_t __xdr_obj) __THROW; -extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; -extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; - -/* - * Common opaque bytes objects used by many rpc protocols; - * declared here due to commonality. - */ -#define MAX_NETOBJ_SZ 1024 -struct netobj -{ - u_int n_len; - char *n_bytes; -}; -typedef struct netobj netobj; -extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; - -/* - * These are the public routines for the various implementations of - * xdr streams. - */ - -/* XDR using memory buffers */ -extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, - u_int __size, enum xdr_op __xop) __THROW; - -/* XDR using stdio library */ -extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) - __THROW; - -/* XDR pseudo records for tcp */ -extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, - u_int __recvsize, caddr_t __tcp_handle, - int (*__readit) (char *, char *, int), - int (*__writeit) (char *, char *, int)) __THROW; - -/* make end of xdr record */ -extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; - -/* move to beginning of next record */ -extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; - -/* true if no more input */ -extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; - -/* free memory buffers for xdr */ -extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; - -__END_DECLS - -#endif /* rpc/xdr.h */ diff --git a/source/unres/src_MD-M/xdrf/xdr_array.c b/source/unres/src_MD-M/xdrf/xdr_array.c deleted file mode 100644 index 836405c..0000000 --- a/source/unres/src_MD-M/xdrf/xdr_array.c +++ /dev/null @@ -1,174 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_array.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "non-trivial" xdr primitives used to serialize and de-serialize - * arrays. See xdr.h for more info on the interface to xdr. - */ - -#include -#include -#include "types.h" -#include "xdr.h" -#include -#include - -#ifdef USE_IN_LIBIO -# include -#endif - -#define LASTUNSIGNED ((u_int)0-1) - - -/* - * XDR an array of arbitrary elements - * *addrp is a pointer to the array, *sizep is the number of elements. - * If addrp is NULL (*sizep * elsize) bytes are allocated. - * elsize is the size (in bytes) of each element, and elproc is the - * xdr procedure to call to handle each element of the array. - */ -bool_t -xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) - XDR *xdrs; - caddr_t *addrp; /* array pointer */ - u_int *sizep; /* number of elements */ - u_int maxsize; /* max numberof elements */ - u_int elsize; /* size in bytes of each element */ - xdrproc_t elproc; /* xdr routine to handle each element */ -{ - u_int i; - caddr_t target = *addrp; - u_int c; /* the actual element count */ - bool_t stat = TRUE; - u_int nodesize; - - /* like strings, arrays are really counted arrays */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - c = *sizep; - /* - * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() - * doesn't actually use its second argument anyway. - */ - if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - nodesize = c * elsize; - - /* - * if we are deserializing, we may need to allocate an array. - * We also save time by checking for a null array if we are freeing. - */ - if (target == NULL) - switch (xdrs->x_op) - { - case XDR_DECODE: - if (c == 0) - return TRUE; - *addrp = target = mem_alloc (nodesize); - if (target == NULL) - { - fprintf (stderr, "%s", "xdr_array: out of memory\n"); - return FALSE; - } - __bzero (target, nodesize); - break; - - case XDR_FREE: - return TRUE; - default: - break; - } - - /* - * now we xdr each element of array - */ - for (i = 0; (i < c) && stat; i++) - { - stat = (*elproc) (xdrs, target, LASTUNSIGNED); - target += elsize; - } - - /* - * the array may need freeing - */ - if (xdrs->x_op == XDR_FREE) - { - mem_free (*addrp, nodesize); - *addrp = NULL; - } - return stat; -} -INTDEF(xdr_array) - -/* - * xdr_vector(): - * - * XDR a fixed length array. Unlike variable-length arrays, - * the storage of fixed length arrays is static and unfreeable. - * > basep: base of the array - * > size: size of the array - * > elemsize: size of each element - * > xdr_elem: routine to XDR each element - */ -bool_t -xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) - XDR *xdrs; - char *basep; - u_int nelem; - u_int elemsize; - xdrproc_t xdr_elem; -{ - u_int i; - char *elptr; - - elptr = basep; - for (i = 0; i < nelem; i++) - { - if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) - { - return FALSE; - } - elptr += elemsize; - } - return TRUE; -} diff --git a/source/unres/src_MD-M/xdrf/xdr_float.c b/source/unres/src_MD-M/xdrf/xdr_float.c deleted file mode 100644 index 15d3c88..0000000 --- a/source/unres/src_MD-M/xdrf/xdr_float.c +++ /dev/null @@ -1,307 +0,0 @@ -/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_float.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "floating point" xdr routines used to (de)serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include - -#include "types.h" -#include "xdr.h" - -/* - * NB: Not portable. - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) - -#ifdef vax - -/* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int mantissa: 23; - unsigned int exp : 8; - unsigned int sign : 1; -}; - -/* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; -}; - -#define VAX_SNG_BIAS 0x81 -#define IEEE_SNG_BIAS 0x7f - -static struct sgl_limits { - struct vax_single s; - struct ieee_single ieee; -} sgl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x0, 0xff, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; -#endif /* vax */ - -bool_t -xdr_float(xdrs, fp) - XDR *xdrs; - float *fp; -{ -#ifdef vax - struct ieee_single is; - struct vax_single vs, *vsp; - struct sgl_limits *lim; - int i; -#endif - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vs = *((struct vax_single *)fp); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((vs.mantissa2 == lim->s.mantissa2) && - (vs.exp == lim->s.exp) && - (vs.mantissa1 == lim->s.mantissa1)) { - is = lim->ieee; - goto shipit; - } - } - is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; - shipit: - is.sign = vs.sign; - return (XDR_PUTLONG(xdrs, (long *)&is)); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_PUTLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp = *(int *)fp; - return (XDR_PUTLONG(xdrs, &tmp)); - } - break; -#endif - - case XDR_DECODE: -#ifdef vax - vsp = (struct vax_single *)fp; - if (!XDR_GETLONG(xdrs, (long *)&is)) - return (FALSE); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((is.exp == lim->ieee.exp) && - (is.mantissa == lim->ieee.mantissa)) { - *vsp = lim->s; - goto doneit; - } - } - vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = is.mantissa; - vsp->mantissa1 = (is.mantissa >> 16); - doneit: - vsp->sign = is.sign; - return (TRUE); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_GETLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp; - if (XDR_GETLONG(xdrs, &tmp)) { - *(int *)fp = tmp; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} - -/* - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#ifdef vax -/* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int mantissa1 : 20; - unsigned int exp : 11; - unsigned int sign : 1; - unsigned int mantissa2 : 32; -}; - -/* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; -}; - -#define VAX_DBL_BIAS 0x81 -#define IEEE_DBL_BIAS 0x3ff -#define MASK(nbits) ((1 << nbits) - 1) - -static struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; -} dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; - -#endif /* vax */ - - -bool_t -xdr_double(xdrs, dp) - XDR *xdrs; - double *dp; -{ -#ifdef vax - struct ieee_double id; - struct vax_double vd; - register struct dbl_limits *lim; - int i; -#endif - - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vd = *((struct vax_double *)dp); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((vd.mantissa4 == lim->d.mantissa4) && - (vd.mantissa3 == lim->d.mantissa3) && - (vd.mantissa2 == lim->d.mantissa2) && - (vd.mantissa1 == lim->d.mantissa1) && - (vd.exp == lim->d.exp)) { - id = lim->ieee; - goto shipit; - } - } - id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); - id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | - (vd.mantissa3 << 13) | - ((vd.mantissa4 >> 3) & MASK(13)); - shipit: - id.sign = vd.sign; - dp = (double *)&id; -#endif - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_PUTLONG(xdrs, lp+!LSW) && - XDR_PUTLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - tmp[0] = ip[!LSW]; - tmp[1] = ip[LSW]; - return (XDR_PUTLONG(xdrs, tmp) && - XDR_PUTLONG(xdrs, tmp+1)); - } - break; - - case XDR_DECODE: -#ifdef vax - lp = (long *)&id; - if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) - return (FALSE); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((id.mantissa2 == lim->ieee.mantissa2) && - (id.mantissa1 == lim->ieee.mantissa1) && - (id.exp == lim->ieee.exp)) { - vd = lim->d; - goto doneit; - } - } - vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - vd.mantissa1 = (id.mantissa1 >> 13); - vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | - (id.mantissa2 >> 29); - vd.mantissa3 = (id.mantissa2 >> 13); - vd.mantissa4 = (id.mantissa2 << 3); - doneit: - vd.sign = id.sign; - *dp = *((double *)&vd); - return (TRUE); -#else - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_GETLONG(xdrs, lp+!LSW) && - XDR_GETLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - if (XDR_GETLONG(xdrs, tmp+!LSW) && - XDR_GETLONG(xdrs, tmp+LSW)) { - ip[0] = tmp[0]; - ip[1] = tmp[1]; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} diff --git a/source/unres/src_MD-M/xdrf/xdr_stdio.c b/source/unres/src_MD-M/xdrf/xdr_stdio.c deleted file mode 100644 index 12b1709..0000000 --- a/source/unres/src_MD-M/xdrf/xdr_stdio.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr_stdio.c, XDR implementation on standard i/o file. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * This set of routines implements a XDR on a stdio stream. - * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes - * from the stream. - */ - -#include "types.h" -#include -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -# define fflush(s) INTUSE(_IO_fflush) (s) -# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) -# define ftell(s) INTUSE(_IO_ftell) (s) -# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) -#endif - -static bool_t xdrstdio_getlong (XDR *, long *); -static bool_t xdrstdio_putlong (XDR *, const long *); -static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); -static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); -static u_int xdrstdio_getpos (const XDR *); -static bool_t xdrstdio_setpos (XDR *, u_int); -static int32_t *xdrstdio_inline (XDR *, u_int); -static void xdrstdio_destroy (XDR *); -static bool_t xdrstdio_getint32 (XDR *, int32_t *); -static bool_t xdrstdio_putint32 (XDR *, const int32_t *); - -/* - * Ops vector for stdio type XDR - */ -static const struct xdr_ops xdrstdio_ops = -{ - xdrstdio_getlong, /* deserialize a long int */ - xdrstdio_putlong, /* serialize a long int */ - xdrstdio_getbytes, /* deserialize counted bytes */ - xdrstdio_putbytes, /* serialize counted bytes */ - xdrstdio_getpos, /* get offset in the stream */ - xdrstdio_setpos, /* set offset in the stream */ - xdrstdio_inline, /* prime stream for inline macros */ - xdrstdio_destroy, /* destroy stream */ - xdrstdio_getint32, /* deserialize a int */ - xdrstdio_putint32 /* serialize a int */ -}; - -/* - * Initialize a stdio xdr stream. - * Sets the xdr stream handle xdrs for use on the stream file. - * Operation flag is set to op. - */ -void -xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) -{ - xdrs->x_op = op; - /* We have to add the const since the `struct xdr_ops' in `struct XDR' - is not `const'. */ - xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; - xdrs->x_private = (caddr_t) file; - xdrs->x_handy = 0; - xdrs->x_base = 0; -} - -/* - * Destroy a stdio xdr stream. - * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. - */ -static void -xdrstdio_destroy (XDR *xdrs) -{ - (void) fflush ((FILE *) xdrs->x_private); - /* xx should we close the file ?? */ -}; - -static bool_t -xdrstdio_getlong (XDR *xdrs, long *lp) -{ - u_int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *lp = (long) ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putlong (XDR *xdrs, const long *lp) -{ - int32_t mycopy = htonl ((u_int32_t) *lp); - - if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) -{ - if ((len != 0) && (fread (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) -{ - if ((len != 0) && (fwrite (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static u_int -xdrstdio_getpos (const XDR *xdrs) -{ - return (u_int) ftell ((FILE *) xdrs->x_private); -} - -static bool_t -xdrstdio_setpos (XDR *xdrs, u_int pos) -{ - return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; -} - -static int32_t * -xdrstdio_inline (XDR *xdrs, u_int len) -{ - /* - * Must do some work to implement this: must insure - * enough data in the underlying stdio buffer, - * that the buffer is aligned so that we can indirect through a - * long *, and stuff this pointer in xdrs->x_buf. Doing - * a fread or fwrite to a scratch buffer would defeat - * most of the gains to be had here and require storage - * management on this buffer, so we don't do this. - */ - return NULL; -} - -static bool_t -xdrstdio_getint32 (XDR *xdrs, int32_t *ip) -{ - int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *ip = ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) -{ - int32_t mycopy = htonl (*ip); - - ip = &mycopy; - if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/unres/src_MD-M/xdrf/xdrf.h b/source/unres/src_MD-M/xdrf/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/unres/src_MD-M/xdrf/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/unres/src_MD-M/xdrf2pdb/Makefile b/source/unres/src_MD-M/xdrf2pdb/Makefile deleted file mode 100644 index bc2f976..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/Makefile +++ /dev/null @@ -1,38 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BINDIR=../../bin - -CC = cc -CFLAGS = -O - -#FC=ifort -FC=f77 -#OPT = -O3 -ip -w -pc64 -tpp6 -OPT= -O3 -w -FFLAGS = -c ${OPT} -I../ - -#LIBS = -static-libcxa ../xdrf/libxdrf.a -LIBS = ../xdrf/libxdrf.a - -CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR - -.SUFFIXES: .F -.F.o: - ${FC} ${FFLAGS} ${CPPFLAGS} $*.F - -all:xdrf2pdb xdrf2x - -xdrf2pdb: xdrf2pdb.o geomout.o misc.o rescode.o nazwy.o - ${FC} -o ${BINDIR}/xdrf2pdb xdrf2pdb.o geomout.o rescode.o misc.o nazwy.o ${LIBS} - -xdrf2x: xdrf2x.o - ${FC} -o ${BINDIR}/xdrf2x xdrf2x.o ${LIBS} - -clean: - rm -f *.o - diff --git a/source/unres/src_MD-M/xdrf2pdb/Makefile_intrepid b/source/unres/src_MD-M/xdrf2pdb/Makefile_intrepid deleted file mode 100644 index 9092007..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/Makefile_intrepid +++ /dev/null @@ -1,38 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BINDIR=../../bin - -CC = cc -CFLAGS = -O - -FC=ifort -#FC=f77 -OPT = -O3 -ip -w -pc64 -tpp6 -#OPT= -O3 -w -FFLAGS = -c ${OPT} -I../ - -LIBS = -static-libcxa ../xdrf/libxdrf.a -#LIBS = xdrf_local/libxdrf.a - -CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR - -.SUFFIXES: .F -.F.o: - ${FC} ${FFLAGS} ${CPPFLAGS} $*.F - -all:xdrf2pdb xdrf2x - -xdrf2pdb: xdrf2pdb.o geomout.o misc.o rescode.o nazwy.o - ${FC} -o ${BINDIR}/xdrf2pdb xdrf2pdb.o geomout.o rescode.o misc.o nazwy.o ${LIBS} - -xdrf2x: xdrf2x.o - ${FC} -o ${BINDIR}/xdrf2x xdrf2x.o ${LIBS} - -clean: - rm -f *.o - diff --git a/source/unres/src_MD-M/xdrf2pdb/Makefile_jump b/source/unres/src_MD-M/xdrf2pdb/Makefile_jump deleted file mode 100644 index 3133622..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/Makefile_jump +++ /dev/null @@ -1,38 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BINDIR=../../bin - -CC = cc -CFLAGS = -O - -#FC=ifort -FC=f77 -#OPT = -O3 -ip -w -pc64 -tpp6 -OPT= -O3 -w -FFLAGS = -c ${OPT} -I../ - -#LIBS = -static-libcxa ../xdrf/libxdrf.a -LIBS = xdrf_local/libxdrf.a - -CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR - -.SUFFIXES: .F -.F.o: - ${FC} ${FFLAGS} ${CPPFLAGS} $*.F - -all:xdrf2pdb xdrf2x - -xdrf2pdb: xdrf2pdb.o geomout.o misc.o rescode.o nazwy.o - ${FC} -o ${BINDIR}/xdrf2pdb xdrf2pdb.o geomout.o rescode.o misc.o nazwy.o ${LIBS} - -xdrf2x: xdrf2x.o - ${FC} -o ${BINDIR}/xdrf2x xdrf2x.o ${LIBS} - -clean: - rm -f *.o - diff --git a/source/unres/src_MD-M/xdrf2pdb/Makefile_linux b/source/unres/src_MD-M/xdrf2pdb/Makefile_linux deleted file mode 100644 index bc2f976..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/Makefile_linux +++ /dev/null @@ -1,38 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BINDIR=../../bin - -CC = cc -CFLAGS = -O - -#FC=ifort -FC=f77 -#OPT = -O3 -ip -w -pc64 -tpp6 -OPT= -O3 -w -FFLAGS = -c ${OPT} -I../ - -#LIBS = -static-libcxa ../xdrf/libxdrf.a -LIBS = ../xdrf/libxdrf.a - -CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR - -.SUFFIXES: .F -.F.o: - ${FC} ${FFLAGS} ${CPPFLAGS} $*.F - -all:xdrf2pdb xdrf2x - -xdrf2pdb: xdrf2pdb.o geomout.o misc.o rescode.o nazwy.o - ${FC} -o ${BINDIR}/xdrf2pdb xdrf2pdb.o geomout.o rescode.o misc.o nazwy.o ${LIBS} - -xdrf2x: xdrf2x.o - ${FC} -o ${BINDIR}/xdrf2x xdrf2x.o ${LIBS} - -clean: - rm -f *.o - diff --git a/source/unres/src_MD-M/xdrf2pdb/Makefile_linux~ b/source/unres/src_MD-M/xdrf2pdb/Makefile_linux~ deleted file mode 100644 index 3133622..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/Makefile_linux~ +++ /dev/null @@ -1,38 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BINDIR=../../bin - -CC = cc -CFLAGS = -O - -#FC=ifort -FC=f77 -#OPT = -O3 -ip -w -pc64 -tpp6 -OPT= -O3 -w -FFLAGS = -c ${OPT} -I../ - -#LIBS = -static-libcxa ../xdrf/libxdrf.a -LIBS = xdrf_local/libxdrf.a - -CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR - -.SUFFIXES: .F -.F.o: - ${FC} ${FFLAGS} ${CPPFLAGS} $*.F - -all:xdrf2pdb xdrf2x - -xdrf2pdb: xdrf2pdb.o geomout.o misc.o rescode.o nazwy.o - ${FC} -o ${BINDIR}/xdrf2pdb xdrf2pdb.o geomout.o rescode.o misc.o nazwy.o ${LIBS} - -xdrf2x: xdrf2x.o - ${FC} -o ${BINDIR}/xdrf2x xdrf2x.o ${LIBS} - -clean: - rm -f *.o - diff --git a/source/unres/src_MD-M/xdrf2pdb/geomout.F b/source/unres/src_MD-M/xdrf2pdb/geomout.F deleted file mode 100644 index 3f7d394..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/geomout.F +++ /dev/null @@ -1,322 +0,0 @@ - subroutine pdbout(etot,tytul,iunit) - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.CHAIN' - include 'COMMON.INTERACT' - include 'COMMON.NAMES' - include 'COMMON.IOUNITS' - include 'COMMON.HEADER' - include 'COMMON.SBRIDGE' - include 'COMMON.DISTFIT' - include 'COMMON.MD' - character*50 tytul - dimension ica(maxres) - write (iunit,'(3a,1pe15.5)') 'REMARK ',tytul,' ENERGY ',etot -cmodel write (iunit,'(a5,i6)') 'MODEL',1 - if (nhfrag.gt.0) then - do j=1,nhfrag - iti=itype(hfrag(1,j)) - itj=itype(hfrag(2,j)) - if (j.lt.10) then - write (iunit,'(a5,i5,1x,a1,i1,2x,a3,i7,2x,a3,i7,i3,t76,i5)') - & 'HELIX',j,'H',j, - & restyp(iti),hfrag(1,j)-1, - & restyp(itj),hfrag(2,j)-1,1,hfrag(2,j)-hfrag(1,j) - else - write (iunit,'(a5,i5,1x,a1,i2,1x,a3,i7,2x,a3,i7,i3)') - & 'HELIX',j,'H',j, - & restyp(iti),hfrag(1,j)-1, - & restyp(itj),hfrag(2,j)-1,1,hfrag(2,j)-hfrag(1,j) - endif - enddo - endif - - if (nbfrag.gt.0) then - - do j=1,nbfrag - - iti=itype(bfrag(1,j)) - itj=itype(bfrag(2,j)-1) - - write (iunit,'(a5,i5,1x,a1,i1,i3,1x,a3,i6,2x,a3,i6,i3)') - & 'SHEET',1,'B',j,2, - & restyp(iti),bfrag(1,j)-1, - & restyp(itj),bfrag(2,j)-2,0 - - if (bfrag(3,j).gt.bfrag(4,j)) then - - itk=itype(bfrag(3,j)) - itl=itype(bfrag(4,j)+1) - - write (iunit,'(a5,i5,1x,a1,i1,i3,1x,a3,i6,2x,a3,i6,i3, - & 2x,a1,2x,a3,i6,3x,a1,2x,a3,i6)') - & 'SHEET',2,'B',j,2, - & restyp(itl),bfrag(4,j), - & restyp(itk),bfrag(3,j)-1,-1, - & "N",restyp(itk),bfrag(3,j)-1, - & "O",restyp(iti),bfrag(1,j)-1 - - else - - itk=itype(bfrag(3,j)) - itl=itype(bfrag(4,j)-1) - - - write (iunit,'(a5,i5,1x,a1,i1,i3,1x,a3,i6,2x,a3,i6,i3, - & 2x,a1,2x,a3,i6,3x,a1,2x,a3,i6)') - & 'SHEET',2,'B',j,2, - & restyp(itk),bfrag(3,j)-1, - & restyp(itl),bfrag(4,j)-2,1, - & "N",restyp(itk),bfrag(3,j)-1, - & "O",restyp(iti),bfrag(1,j)-1 - - - - endif - - enddo - endif - - if (nss.gt.0) then - do i=1,nss - write(iunit,'(a6,i4,1x,a3,i7,4x,a3,i7)') - & 'SSBOND',i,'CYS',ihpb(i)-1-nres, - & 'CYS',jhpb(i)-1-nres - enddo - endif - - iatom=0 - do i=nnt,nct - ires=i-nnt+1 - iatom=iatom+1 - ica(i)=iatom - iti=itype(i) - write (iunit,10) iatom,restyp(iti),ires,(c(j,i),j=1,3),vtot(i) - if (iti.ne.10) then - iatom=iatom+1 - write (iunit,20) iatom,restyp(iti),ires,(c(j,nres+i),j=1,3), - & vtot(i+nres) - endif - enddo - write (iunit,'(a)') 'TER' - do i=nnt,nct-1 - if (itype(i).eq.10) then - write (iunit,30) ica(i),ica(i+1) - else - write (iunit,30) ica(i),ica(i+1),ica(i)+1 - endif - enddo - if (itype(nct).ne.10) then - write (iunit,30) ica(nct),ica(nct)+1 - endif - do i=1,nss - write (iunit,30) ica(ihpb(i)-nres)+1,ica(jhpb(i)-nres)+1 - enddo - write (iunit,'(a6)') 'ENDMDL' - 10 FORMAT ('ATOM',I7,' CA ',A3,I6,4X,3F8.3,f15.3) - 20 FORMAT ('ATOM',I7,' CB ',A3,I6,4X,3F8.3,f15.3) - 30 FORMAT ('CONECT',8I5) - return - end -c------------------------------------------------------------------------------ - subroutine MOL2out(etot,tytul) -C Prints the Cartesian coordinates of the alpha-carbons in the Tripos mol2 -C format. - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.CHAIN' - include 'COMMON.INTERACT' - include 'COMMON.NAMES' - include 'COMMON.IOUNITS' - include 'COMMON.HEADER' - include 'COMMON.SBRIDGE' - character*32 tytul,fd - character*3 liczba - character*6 res_num,pom,ucase -#ifdef AIX - call fdate_(fd) -#elif (defined CRAY) - call date(fd) -#else - call fdate(fd) -#endif - write (imol2,'(a)') '#' - write (imol2,'(a)') - & '# Creating user name: unres' - write (imol2,'(2a)') '# Creation time: ', - & fd - write (imol2,'(/a)') '\@MOLECULE' - write (imol2,'(a)') tytul - write (imol2,'(5i5)') nct-nnt+1,nct-nnt+nss+1,nct-nnt+nss+1,0,0 - write (imol2,'(a)') 'SMALL' - write (imol2,'(a)') 'USER_CHARGES' - write (imol2,'(a)') '\@ATOM' - do i=nnt,nct - write (liczba,'(i3)') i - pom=ucase(restyp(itype(i))) - res_num = pom(:3)//liczba(2:) - write (imol2,10) i,(c(j,i),j=1,3),i,res_num,0.0 - enddo - write (imol2,'(a)') '\@BOND' - do i=nnt,nct-1 - write (imol2,'(i5,2i6,i2)') i-nnt+1,i-nnt+1,i-nnt+2,1 - enddo - do i=1,nss - write (imol2,'(i5,2i6,i2)') nct-nnt+i,ihpb(i),jhpb(i),1 - enddo - write (imol2,'(a)') '\@SUBSTRUCTURE' - do i=nnt,nct - write (liczba,'(i3)') i - pom = ucase(restyp(itype(i))) - res_num = pom(:3)//liczba(2:) - write (imol2,30) i-nnt+1,res_num,i-nnt+1,0 - enddo - 10 FORMAT (I7,' CA ',3F10.4,' C.3',I8,1X,A,F11.4,' ****') - 30 FORMAT (I7,1x,A,I14,' RESIDUE',I13,' **** ****') - return - end -c------------------------------------------------------------------------ - subroutine intout - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.IOUNITS' - include 'COMMON.CHAIN' - include 'COMMON.VAR' - include 'COMMON.LOCAL' - include 'COMMON.INTERACT' - include 'COMMON.NAMES' - include 'COMMON.GEO' - write (iout,'(/a)') 'Geometry of the virtual chain.' - write (iout,'(7a)') ' Res ',' d',' Theta', - & ' Phi',' Dsc',' Alpha',' Omega' - do i=1,nres - iti=itype(i) - write (iout,'(a3,i4,6f10.3)') restyp(iti),i,vbld(i), - & rad2deg*theta(i),rad2deg*phi(i),vbld(nres+i),rad2deg*alph(i), - & rad2deg*omeg(i) - enddo - return - end -c--------------------------------------------------------------------------- - subroutine briefout(it,ener) - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.IOUNITS' - include 'COMMON.CHAIN' - include 'COMMON.VAR' - include 'COMMON.LOCAL' - include 'COMMON.INTERACT' - include 'COMMON.NAMES' - include 'COMMON.GEO' - include 'COMMON.SBRIDGE' -c print '(a,i5)',intname,igeom -#if defined(AIX) || defined(PGI) - open (igeom,file=intname,position='append') -#else - open (igeom,file=intname,access='append') -#endif - IF (NSS.LE.9) THEN - WRITE (igeom,180) IT,ENER,NSS,(IHPB(I),JHPB(I),I=1,NSS) - ELSE - WRITE (igeom,180) IT,ENER,NSS,(IHPB(I),JHPB(I),I=1,9) - WRITE (igeom,190) (IHPB(I),JHPB(I),I=10,NSS) - ENDIF -c IF (nvar.gt.nphi) WRITE (igeom,200) (RAD2DEG*THETA(I),I=3,NRES) - WRITE (igeom,200) (RAD2DEG*THETA(I),I=3,NRES) - WRITE (igeom,200) (RAD2DEG*PHI(I),I=4,NRES) -c if (nvar.gt.nphi+ntheta) then - write (igeom,200) (rad2deg*alph(i),i=2,nres-1) - write (igeom,200) (rad2deg*omeg(i),i=2,nres-1) -c endif - close(igeom) - 180 format (I5,F12.3,I2,9(1X,2I3)) - 190 format (3X,11(1X,2I3)) - 200 format (8F10.4) - return - end -#ifdef WINIFL - subroutine fdate(fd) - character*32 fd - write(fd,'(32x)') - return - end -#endif -c---------------------------------------------------------------- - subroutine cartoutx(time) - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.CHAIN' - include 'COMMON.INTERACT' - include 'COMMON.NAMES' - include 'COMMON.IOUNITS' - include 'COMMON.HEADER' - include 'COMMON.SBRIDGE' - include 'COMMON.DISTFIT' - include 'COMMON.MD' - double precision time -#if defined(AIX) || defined(PGI) - open(icart,file=cartname,position="append") -#else - open(icart,file=cartname,access="append") -#endif - write (icart,'(e15.8,2e15.5,f12.5,$)') time,potE,uconst,t_bath - write (icart,'(i4,$)') - & nss,(ihpb(j),jhpb(j),j=1,nss) - write (icart,'(i4,20f7.4)') nfrag+npair, - & (qfrag(i),i=1,nfrag),(qpair(i),i=1,npair) - write (icart,'(8f10.5)') - & ((c(k,j),k=1,3),j=1,nres), - & ((c(k,j+nres),k=1,3),j=nnt,nct) - close(icart) - return - end -c----------------------------------------------------------------- - subroutine cartout(time) - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.CHAIN' - include 'COMMON.INTERACT' - include 'COMMON.NAMES' - include 'COMMON.IOUNITS' - include 'COMMON.HEADER' - include 'COMMON.SBRIDGE' - include 'COMMON.DISTFIT' - include 'COMMON.MD' - double precision time - integer iret,itmp - real xcoord(3,maxres2+2),prec - - call xdrfopen_(ixdrf,cartname, "w", iret) - call xdrffloat_(ixdrf, real(time), iret) - call xdrffloat_(ixdrf, real(potE), iret) - call xdrffloat_(ixdrf, real(uconst), iret) - call xdrffloat_(ixdrf, real(t_bath), iret) - call xdrfint_(ixdrf, nss, iret) - do j=1,nss - call xdrfint_(ixdrf, ihpb(j), iret) - call xdrfint_(ixdrf, jhpb(j), iret) - enddo - call xdrfint_(ixdrf, nfrag+npair, iret) - do i=1,nfrag - call xdrffloat_(ixdrf, real(qfrag(i)), iret) - enddo - do i=1,npair - call xdrffloat_(ixdrf, real(qpair(i)), iret) - enddo - prec=10000.0 - do i=1,nres - do j=1,3 - xcoord(j,i)=c(j,i) - enddo - enddo - do i=nnt,nct - do j=1,3 - xcoord(j,nres+i-nnt+1)=c(j,i+nres) - enddo - enddo - - itmp=nres+nct-nnt+1 - call xdrf3dfcoord_(ixdrf, xcoord, itmp, prec, iret) - call xdrfclose_(ixdrf, iret) - return - end diff --git a/source/unres/src_MD-M/xdrf2pdb/geomout.o b/source/unres/src_MD-M/xdrf2pdb/geomout.o deleted file mode 100644 index 36265ed..0000000 Binary files a/source/unres/src_MD-M/xdrf2pdb/geomout.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf2pdb/misc.f b/source/unres/src_MD-M/xdrf2pdb/misc.f deleted file mode 100644 index e189839..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/misc.f +++ /dev/null @@ -1,203 +0,0 @@ -C $Date: 1994/10/12 17:24:21 $ -C $Revision: 2.5 $ -C -C -C - logical function find_arg(ipos,line,errflag) - parameter (maxlen=80) - character*80 line - character*1 empty /' '/,equal /'='/ - logical errflag -* This function returns .TRUE., if an argument follows keyword keywd; if so -* IPOS will point to the first non-blank character of the argument. Returns -* .FALSE., if no argument follows the keyword; in this case IPOS points -* to the first non-blank character of the next keyword. - do while (line(ipos:ipos) .eq. empty .and. ipos.le.maxlen) - ipos=ipos+1 - enddo - errflag=.false. - if (line(ipos:ipos).eq.equal) then - find_arg=.true. - ipos=ipos+1 - do while (line(ipos:ipos) .eq. empty .and. ipos.le.maxlen) - ipos=ipos+1 - enddo - if (ipos.gt.maxlen) errflag=.true. - else - find_arg=.false. - endif - return - end - logical function find_group(iunit,jout,key1) - character*(*) key1 - character*80 karta,ucase - integer ilen - external ilen - logical lcom - rewind (iunit) - karta=' ' - ll=ilen(key1) - do while (index(ucase(karta),key1(1:ll)).eq.0.or.lcom(1,karta)) - read (iunit,'(a)',end=10) karta - enddo - write (jout,'(2a)') '> ',karta(1:78) - find_group=.true. - return - 10 find_group=.false. - return - end - logical function iblnk(charc) - character*1 charc - integer n - n = ichar(charc) - iblnk = (n.eq.9) .or. (n.eq.10) .or. (charc.eq. ' ') - return - end - integer function ilen(string) - character*(*) string - logical iblnk - - ilen = len(string) -1 if ( ilen .gt. 0 ) then - if ( iblnk( string(ilen:ilen) ) ) then - ilen = ilen - 1 - goto 1 - endif - endif - return - end - integer function in_keywd_set(nkey,ikey,narg,keywd,keywdset) - character*16 keywd,keywdset(1:nkey,0:nkey) - character*16 ucase - do i=1,narg - if (ucase(keywd).eq.keywdset(i,ikey)) then -* Match found - in_keywd_set=i - return - endif - enddo -* No match to the allowed set of keywords if this point is reached. - in_keywd_set=0 - return - end - character*(*) function lcase(string) - integer i, k, idiff - character*(*) string - character*1 c - character*40 chtmp -c - i = len(lcase) - k = len(string) - if (i .lt. k) then - k = i - if (string(k+1:) .ne. ' ') then - chtmp = string - endif - endif - idiff = ichar('a') - ichar('A') - lcase = string - do 99 i = 1, k - c = string(i:i) - if (lge(c,'A') .and. lle(c,'Z')) then - lcase(i:i) = char(ichar(c) + idiff) - endif - 99 continue - return - end - logical function lcom(ipos,karta) - character*80 karta - character koment(2) /'!','#'/ - lcom=.false. - do i=1,2 - if (karta(ipos:ipos).eq.koment(i)) lcom=.true. - enddo - return - end - logical function lower_case(ch) - character*(*) ch - lower_case=(ch.ge.'a' .and. ch.le.'z') - return - end - subroutine mykey(line,keywd,ipos,blankline,errflag) -* This subroutine seeks a non-empty substring keywd in the string LINE. -* The substring begins with the first character different from blank and -* "=" encountered right to the pointer IPOS (inclusively) and terminates -* at the character left to the first blank or "=". When the subroutine is -* exited, the pointer IPOS is moved to the position of the terminator in LINE. -* The logical variable BLANKLINE is set at .TRUE., if LINE(IPOS:) contains -* only separators or the maximum length of the data line (80) has been reached. -* The logical variable ERRFLAG is set at .TRUE. if the string -* consists only from a "=". - parameter (maxlen=80) - character*1 empty /' '/,equal /'='/,comma /','/ - character*(*) keywd - character*80 line - logical blankline,errflag,lcom - errflag=.false. - do while (line(ipos:ipos).eq.empty .and. (ipos.le.maxlen)) - ipos=ipos+1 - enddo - if (ipos.gt.maxlen .or. lcom(ipos,line) ) then -* At this point the rest of the input line turned out to contain only blanks -* or to be commented out. - blankline=.true. - return - endif - blankline=.false. - istart=ipos -* Checks whether the current char is a separator. - do while (line(ipos:ipos).ne.empty .and. line(ipos:ipos).ne.equal - & .and. line(ipos:ipos).ne.comma .and. ipos.le.maxlen) - ipos=ipos+1 - enddo - iend=ipos-1 -* Error flag set to .true., if the length of the keyword was found less than 1. - if (iend.lt.istart) then - errflag=.true. - return - endif - keywd=line(istart:iend) - return - end - subroutine numstr(inum,numm) - character*10 huj /'0123456789'/ - character*(*) numm - inumm=inum - inum1=inumm/10 - inum2=inumm-10*inum1 - inumm=inum1 - numm(3:3)=huj(inum2+1:inum2+1) - inum1=inumm/10 - inum2=inumm-10*inum1 - inumm=inum1 - numm(2:2)=huj(inum2+1:inum2+1) - inum1=inumm/10 - inum2=inumm-10*inum1 - inumm=inum1 - numm(1:1)=huj(inum2+1:inum2+1) - return - end - character*(*) function ucase(string) - integer i, k, idiff - character*(*) string - character*1 c - character*40 chtmp -c - i = len(ucase) - k = len(string) - if (i .lt. k) then - k = i - if (string(k+1:) .ne. ' ') then - chtmp = string - endif - endif - idiff = ichar('a') - ichar('A') - ucase = string - do 99 i = 1, k - c = string(i:i) - if (lge(c,'a') .and. lle(c,'z')) then - ucase(i:i) = char(ichar(c) - idiff) - endif - 99 continue - return - end diff --git a/source/unres/src_MD-M/xdrf2pdb/misc.o b/source/unres/src_MD-M/xdrf2pdb/misc.o deleted file mode 100644 index 1e346c0..0000000 Binary files a/source/unres/src_MD-M/xdrf2pdb/misc.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf2pdb/nazwy.f b/source/unres/src_MD-M/xdrf2pdb/nazwy.f deleted file mode 100644 index f21bb96..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/nazwy.f +++ /dev/null @@ -1,26 +0,0 @@ - block data nazwy - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.NAMES' - include 'COMMON.FFIELD' - data restyp / - &'CYS','MET','PHE','ILE','LEU','VAL','TRP','TYR','ALA','GLY','THR', - &'SER','GLN','ASN','GLU','ASP','HIS','ARG','LYS','PRO','D'/ - data onelet / - &'C','M','F','I','L','V','W','Y','A','G','T', - &'S','Q','N','E','D','H','R','K','P','X'/ - data potname /'LJ','LJK','BP','GB','GBV'/ - data ename / - & "EVDW SC-SC","EVDW2 SC-p","EES p-p","ECORR4 ","ECORR5 ", - & "ECORR6 ","EELLO ","ETURN3 ","ETURN4 ","ETURN6 ", - & "EBE bend","ESC SCloc","ETORS ","ETORSD ","EHPB ","EVDWPP ", - & "ESTR ","EVDW2_14 ","UCONST ", 2*""/ - data wname / - & "WSC","WSCP","WELEC","WCORR","WCORR5","WCORR6","WEL_LOC", - & "WTURN3","WTURN4","WTURN6","WANG","WSCLOC","WTOR","WTORD", - & "WSTRAIN","WVDWPP","WBOND","SCAL14",2*""/ - data nprint_ene /20/ - data print_order/1,2,3,11,12,13,14,4,5,6,7,8,9,10,18,15,17,16,20, - & 2*0/ - end - diff --git a/source/unres/src_MD-M/xdrf2pdb/nazwy.o b/source/unres/src_MD-M/xdrf2pdb/nazwy.o deleted file mode 100644 index 2715e0b..0000000 Binary files a/source/unres/src_MD-M/xdrf2pdb/nazwy.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf2pdb/rescode.f b/source/unres/src_MD-M/xdrf2pdb/rescode.f deleted file mode 100644 index 1fff9ec..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/rescode.f +++ /dev/null @@ -1,31 +0,0 @@ - integer function rescode(iseq,nam,ione) - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.NAMES' - include 'COMMON.IOUNITS' - character*3 nam,ucase - - if (ione.eq.0) then - - do i=1,ntyp1 - if (ucase(nam).eq.restyp(i)) then - rescode=i - return - endif - enddo - else - - do i=1,ntyp1 - if (nam(1:1).eq.onelet(i)) then - rescode=i - return - endif - enddo - - endif - - write (iout,10) iseq,nam - stop - 10 format ('**** Error - residue',i4,' has an unresolved name ',a3) - end - diff --git a/source/unres/src_MD-M/xdrf2pdb/rescode.o b/source/unres/src_MD-M/xdrf2pdb/rescode.o deleted file mode 100644 index 3bcfdc4..0000000 Binary files a/source/unres/src_MD-M/xdrf2pdb/rescode.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf2pdb.f b/source/unres/src_MD-M/xdrf2pdb/xdrf2pdb.f deleted file mode 100644 index 01d1fd7..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/xdrf2pdb.f +++ /dev/null @@ -1,138 +0,0 @@ - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.CHAIN' - include 'COMMON.INTERACT' - include 'COMMON.SBRIDGE' - real*4 coord(3,1000) - real*4 prec,time,potE,uconst,t_bath,qfrag(100) - real*8 etot - character*80 arg,seqfile,pdbfile - character*3 sequenc(maxres) - character*50 tytul - character*8 onethree,cfreq - character*8 ucase - external ucase - logical oneletter,iblnk - integer rescode - external rescode - - do i=1,maxres - sequenc(i)='' - enddo - - ifreq=1 - if (iargc().lt.3) then - print '(a)', - & "Usage: xdrf2pdb one/three seqfile cxfile [freq] [pdbfile]" - stop - endif - call getarg(1,onethree) - onethree = ucase(onethree) - if (onethree.eq.'ONE') then - oneletter = .true. - else if (onethree.eq.'THREE') then - oneletter = .false. - else - print *,"ONE or THREE must be specified" - endif - call getarg(2,seqfile) - open (1,file=seqfile,status='old') - if (oneletter) then - read(1,'(80a1)',end=10,err=10) (sequenc(i)(1:1),i=1,maxres) - 10 continue - nres=i - i=0 - do while (.not.iblnk(sequenc(i+1)(1:1))) - i=i+1 - enddo - nres=i - do i=1,nres - itype(i)=rescode(i,sequenc(i),1) - enddo - else - read(1,'(20(a3,1x))',end=11,err=11) (sequenc(i),i=1,maxres) - 11 continue - nres=i - i=0 - do while (.not.iblnk(sequenc(i+1)(1:1))) - print *,sequenc(i+1) - i=i+1 - enddo - nres=i - do i=1,nres - itype(i)=rescode(i,sequenc(i),0) - enddo - endif - call getarg(3,arg) - iext = index(arg,'.cx') - 1 - if (iext.lt.0) then - print *,"Error - not a cx file" - stop - endif - if (iargc().gt.3) then - call getarg(4,cfreq) - read (cfreq,*) ifreq - endif - if (iargc().gt.4) then - call getarg(5,pdbfile) - else - pdbfile=arg(:iext)//'.pdb' - endif - open(9,file=pdbfile) - nnt = 1 - if (itype(1).eq.21) nnt = 2 - nct=nres - if (itype(nres).eq.21) nct = nres-1 - - call xdrfopen_(ixdrf,arg, "r", iret) - - kk = 0 - do while(.true.) - call xdrffloat_(ixdrf, time, iret) - if(iret.eq.0) exit - kk = kk + 1 - call xdrffloat_(ixdrf, potE, iret) - call xdrffloat_(ixdrf, uconst, iret) - call xdrffloat_(ixdrf, t_bath, iret) - call xdrfint_(ixdrf, nss, iret) - do j=1,nss - call xdrfint_(ixdrf, ihpb(j), iret) - call xdrfint_(ixdrf, jhpb(j), iret) - enddo - call xdrfint_(ixdrf, nfrag, iret) - do i=1,nfrag - call xdrffloat_(ixdrf, qfrag(i), iret) - enddo - prec=10000.0 - - isize=0 - call xdrf3dfcoord_(ixdrf, coord, isize, prec, iret) - - -c write (*,'(e15.8,2e15.5,f12.5,$)') time,potE,uconst,t_bath -c write (*,'(i4,$)') nss,(ihpb(j),jhpb(j),j=1,nss) -c write (*,'(i4,20f7.4)') nfrag,(qfrag(i),i=1,nfrag) -c write (*,'(8f10.5)') ((coord(k,j),k=1,3),j=1,isize) - if (mod(kk,ifreq).eq.0) then - if (isize .ne. nres + nct - nnt + 1) then - print *,"Error: inconsistent sizes",isize,nres+nct-nnt+1 - endif - do i=1,nres - do j=1,3 - c(j,i)=coord(j,i) - enddo - enddo - ii = 0 - do i=nnt,nct - ii = ii + 1 - do j=1,3 - c(j,i+nres)=coord(j,ii+nres) - enddo - enddo - etot=potE - write (tytul,'(a,i6)') "Structure",kk - call pdbout(etot,tytul,9) - endif - enddo - - end diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf2pdb.o b/source/unres/src_MD-M/xdrf2pdb/xdrf2pdb.o deleted file mode 100644 index 0b0f7f1..0000000 Binary files a/source/unres/src_MD-M/xdrf2pdb/xdrf2pdb.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf2x.F b/source/unres/src_MD-M/xdrf2pdb/xdrf2x.F deleted file mode 100644 index 660d4c8..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/xdrf2x.F +++ /dev/null @@ -1,65 +0,0 @@ - real coord(3,1000) - real prec,time,potE,uconst,t_bath,qfrag(100) - integer ihpb(100),jhpb(100),iset - character*80 arg - - print *,"start" - call getarg(1,arg) - - print *,arg -#ifdef BLUEGENE - call xdrfopen_(ixdrf,arg, "r", iret) - - do while(.true.) - call xdrffloat_(ixdrf, time, iret) - if(iret.eq.0) goto 10 - call xdrffloat_(ixdrf, potE, iret) - call xdrffloat_(ixdrf, uconst, iret) - call xdrffloat_(ixdrf, t_bath, iret) - call xdrfint_(ixdrf, nss, iret) - do j=1,nss - call xdrfint_(ixdrf, ihpb(j), iret) - call xdrfint_(ixdrf, jhpb(j), iret) - enddo - call xdrfint_(ixdrf, nfrag, iret) - call xdrfint_(ixdrf, iset, iret) - do i=1,nfrag - call xdrffloat_(ixdrf, qfrag(i), iret) - enddo - prec=10000.0 - - isize=0 - call xdrf3dfcoord_(ixdrf, coord, isize, prec, iret) -#else - call xdrfopen(ixdrf,arg, "r", iret) - - do while(.true.) - call xdrffloat(ixdrf, time, iret) - if(iret.eq.0) goto 10 - call xdrffloat(ixdrf, potE, iret) - call xdrffloat(ixdrf, uconst, iret) - call xdrffloat(ixdrf, t_bath, iret) - call xdrfint(ixdrf, nss, iret) - do j=1,nss - call xdrfint(ixdrf, ihpb(j), iret) - call xdrfint(ixdrf, jhpb(j), iret) - enddo - call xdrfint(ixdrf, nfrag, iret) - call xdrfint(ixdrf, iset, iret) - do i=1,nfrag - call xdrffloat(ixdrf, qfrag(i), iret) - enddo - prec=10000.0 - - isize=0 - call xdrf3dfcoord(ixdrf, coord, isize, prec, iret) -#endif - - write (*,'(e15.8,2e15.5,f12.5,$)') time,potE,uconst,t_bath - write (*,'(i4,$)') nss,(ihpb(j),jhpb(j),j=1,nss) - write (*,'(i4)') iset - write (*,'(i4,20f7.4)') nfrag,(qfrag(i),i=1,nfrag) - write (*,'(8f10.5)') ((coord(k,j),k=1,3),j=1,isize) - enddo - 10 continue - end diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf2x.o b/source/unres/src_MD-M/xdrf2pdb/xdrf2x.o deleted file mode 100644 index 20db32f..0000000 Binary files a/source/unres/src_MD-M/xdrf2pdb/xdrf2x.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/Makefile b/source/unres/src_MD-M/xdrf2pdb/xdrf_local/Makefile deleted file mode 100644 index f03276e..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/ftocstr.c b/source/unres/src_MD-M/xdrf2pdb/xdrf_local/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/libxdrf.m4 b/source/unres/src_MD-M/xdrf2pdb/xdrf_local/libxdrf.m4 deleted file mode 100644 index aecb5b5..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/libxdrf.m4 +++ /dev/null @@ -1,1233 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/libxdrf.m4.org b/source/unres/src_MD-M/xdrf2pdb/xdrf_local/libxdrf.m4.org deleted file mode 100644 index b14b374..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/libxdrf.m4.org +++ /dev/null @@ -1,1230 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/underscore.m4 b/source/unres/src_MD-M/xdrf2pdb/xdrf_local/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/xdrf.h b/source/unres/src_MD-M/xdrf2pdb/xdrf_local/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/unres/src_MD-M/xdrf2pdb/xdrf_local/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/unres/src_MD-M/xdrf_em64/Makefile b/source/unres/src_MD-M/xdrf_em64/Makefile deleted file mode 100644 index f03276e..0000000 --- a/source/unres/src_MD-M/xdrf_em64/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf_em64/Makefile_jubl b/source/unres/src_MD-M/xdrf_em64/Makefile_jubl deleted file mode 100644 index 8dc35cf..0000000 --- a/source/unres/src_MD-M/xdrf_em64/Makefile_jubl +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = /usr/bin/blrts_xlc -CPPC = /usr/bin/blrts_xlc - -CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f *.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf_em64/Makefile_linux b/source/unres/src_MD-M/xdrf_em64/Makefile_linux deleted file mode 100644 index f03276e..0000000 --- a/source/unres/src_MD-M/xdrf_em64/Makefile_linux +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf_em64/Makefile~ b/source/unres/src_MD-M/xdrf_em64/Makefile~ deleted file mode 100644 index f0f81e5..0000000 --- a/source/unres/src_MD-M/xdrf_em64/Makefile~ +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = /usr/bin/blrts_xlc -CPPC = /usr/bin/blrts_xlc - -CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/unres/src_MD-M/xdrf_em64/RS6K.m4 b/source/unres/src_MD-M/xdrf_em64/RS6K.m4 deleted file mode 100644 index 0331d97..0000000 --- a/source/unres/src_MD-M/xdrf_em64/RS6K.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -undefine(`len') -# -# do nothing special to FORTRAN function names -# -define(`FUNCTION',`$1') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) - diff --git a/source/unres/src_MD-M/xdrf_em64/ftocstr.c b/source/unres/src_MD-M/xdrf_em64/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/unres/src_MD-M/xdrf_em64/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/unres/src_MD-M/xdrf_em64/ftocstr.o b/source/unres/src_MD-M/xdrf_em64/ftocstr.o deleted file mode 100644 index 09aeb9c..0000000 Binary files a/source/unres/src_MD-M/xdrf_em64/ftocstr.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf_em64/libxdrf.a b/source/unres/src_MD-M/xdrf_em64/libxdrf.a deleted file mode 100644 index 582ad55..0000000 Binary files a/source/unres/src_MD-M/xdrf_em64/libxdrf.a and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf_em64/libxdrf.m4 b/source/unres/src_MD-M/xdrf_em64/libxdrf.m4 deleted file mode 100644 index a6da458..0000000 --- a/source/unres/src_MD-M/xdrf_em64/libxdrf.m4 +++ /dev/null @@ -1,1238 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "w+"; - lmode = XDR_ENCODE; - } else if (*type == 'a' || *type == 'A') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf_em64/libxdrf.m4.org b/source/unres/src_MD-M/xdrf_em64/libxdrf.m4.org deleted file mode 100644 index b14b374..0000000 --- a/source/unres/src_MD-M/xdrf_em64/libxdrf.m4.org +++ /dev/null @@ -1,1230 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf_em64/libxdrf.m4~ b/source/unres/src_MD-M/xdrf_em64/libxdrf.m4~ deleted file mode 100644 index 8704af2..0000000 --- a/source/unres/src_MD-M/xdrf_em64/libxdrf.m4~ +++ /dev/null @@ -1,1234 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD-M/xdrf_em64/libxdrf.o b/source/unres/src_MD-M/xdrf_em64/libxdrf.o deleted file mode 100644 index 22907c4..0000000 Binary files a/source/unres/src_MD-M/xdrf_em64/libxdrf.o and /dev/null differ diff --git a/source/unres/src_MD-M/xdrf_em64/types.h b/source/unres/src_MD-M/xdrf_em64/types.h deleted file mode 100644 index 871f3fd..0000000 --- a/source/unres/src_MD-M/xdrf_em64/types.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* fixincludes should not add extern "C" to this file */ -/* - * Rpc additions to - */ -#ifndef _RPC_TYPES_H -#define _RPC_TYPES_H 1 - -typedef int bool_t; -typedef int enum_t; -/* This needs to be changed to uint32_t in the future */ -typedef unsigned long rpcprog_t; -typedef unsigned long rpcvers_t; -typedef unsigned long rpcproc_t; -typedef unsigned long rpcprot_t; -typedef unsigned long rpcport_t; - -#define __dontcare__ -1 - -#ifndef FALSE -# define FALSE (0) -#endif - -#ifndef TRUE -# define TRUE (1) -#endif - -#ifndef NULL -# define NULL 0 -#endif - -#include /* For malloc decl. */ -#define mem_alloc(bsize) malloc(bsize) -/* - * XXX: This must not use the second argument, or code in xdr_array.c needs - * to be modified. - */ -#define mem_free(ptr, bsize) free(ptr) - -#ifndef makedev /* ie, we haven't already included it */ -#include -#endif - -#ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; -typedef __fsid_t fsid_t; -# define __u_char_defined -#endif -#ifndef __daddr_t_defined -typedef __daddr_t daddr_t; -typedef __caddr_t caddr_t; -# define __daddr_t_defined -#endif - -#include -#include - -#include - -#ifndef INADDR_LOOPBACK -#define INADDR_LOOPBACK (u_long)0x7F000001 -#endif -#ifndef MAXHOSTNAMELEN -#define MAXHOSTNAMELEN 64 -#endif - -#endif /* rpc/types.h */ diff --git a/source/unres/src_MD-M/xdrf_em64/underscore.m4 b/source/unres/src_MD-M/xdrf_em64/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/unres/src_MD-M/xdrf_em64/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/unres/src_MD-M/xdrf_em64/xdr.c b/source/unres/src_MD-M/xdrf_em64/xdr.c deleted file mode 100644 index 33b8544..0000000 --- a/source/unres/src_MD-M/xdrf_em64/xdr.c +++ /dev/null @@ -1,752 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; -#endif - -/* - * xdr.c, Generic XDR routines implementation. - * - * Copyright (C) 1986, Sun Microsystems, Inc. - * - * These are the "generic" xdr routines used to serialize and de-serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include -#include -#include - -#include "types.h" -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -#endif - -/* - * constants specific to the xdr "protocol" - */ -#define XDR_FALSE ((long) 0) -#define XDR_TRUE ((long) 1) -#define LASTUNSIGNED ((u_int) 0-1) - -/* - * for unit alignment - */ -static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; - -/* - * Free a data structure using XDR - * Not a filter, but a convenient utility nonetheless - */ -void -xdr_free (xdrproc_t proc, char *objp) -{ - XDR x; - - x.x_op = XDR_FREE; - (*proc) (&x, objp); -} - -/* - * XDR nothing - */ -bool_t -xdr_void (void) -{ - return TRUE; -} -INTDEF(xdr_void) - -/* - * XDR integers - */ -bool_t -xdr_int (XDR *xdrs, int *ip) -{ - -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *ip; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ip = (int) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif INT_MAX == LONG_MAX - return INTUSE(xdr_long) (xdrs, (long *) ip); -#elif INT_MAX == SHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) ip); -#else -#error unexpected integer sizes in_xdr_int() -#endif -} -INTDEF(xdr_int) - -/* - * XDR unsigned integers - */ -bool_t -xdr_u_int (XDR *xdrs, u_int *up) -{ -#if UINT_MAX < ULONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * up; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *up = (u_int) (u_long) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif UINT_MAX == ULONG_MAX - return INTUSE(xdr_u_long) (xdrs, (u_long *) up); -#elif UINT_MAX == USHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) up); -#else -#error unexpected integer sizes in_xdr_u_int() -#endif -} -INTDEF(xdr_u_int) - -/* - * XDR long integers - * The definition of xdr_long() is kept for backward - * compatibility. Instead xdr_int() should be used. - */ -bool_t -xdr_long (XDR *xdrs, long *lp) -{ - - if (xdrs->x_op == XDR_ENCODE - && (sizeof (int32_t) == sizeof (long) - || (int32_t) *lp == *lp)) - return XDR_PUTLONG (xdrs, lp); - - if (xdrs->x_op == XDR_DECODE) - return XDR_GETLONG (xdrs, lp); - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_long) - -/* - * XDR unsigned long integers - * The definition of xdr_u_long() is kept for backward - * compatibility. Instead xdr_u_int() should be used. - */ -bool_t -xdr_u_long (XDR *xdrs, u_long *ulp) -{ - switch (xdrs->x_op) - { - case XDR_DECODE: - { - long int tmp; - - if (XDR_GETLONG (xdrs, &tmp) == FALSE) - return FALSE; - - *ulp = (uint32_t) tmp; - return TRUE; - } - - case XDR_ENCODE: - if (sizeof (uint32_t) != sizeof (u_long) - && (uint32_t) *ulp != *ulp) - return FALSE; - - return XDR_PUTLONG (xdrs, (long *) ulp); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_long) - -/* - * XDR hyper integers - * same as xdr_u_hyper - open coded to save a proc call! - */ -bool_t -xdr_hyper (XDR *xdrs, quad_t *llp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (long) ((*llp) >> 32); - t2 = (long) (*llp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *llp = ((quad_t) t1) << 32; - *llp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_hyper) - - -/* - * XDR hyper integers - * same as xdr_hyper - open coded to save a proc call! - */ -bool_t -xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (unsigned long) ((*ullp) >> 32); - t2 = (unsigned long) (*ullp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *ullp = ((u_quad_t) t1) << 32; - *ullp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_u_hyper) - -bool_t -xdr_longlong_t (XDR *xdrs, quad_t *llp) -{ - return INTUSE(xdr_hyper) (xdrs, llp); -} - -bool_t -xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) -{ - return INTUSE(xdr_u_hyper) (xdrs, ullp); -} - -/* - * XDR short integers - */ -bool_t -xdr_short (XDR *xdrs, short *sp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *sp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *sp = (short) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_short) - -/* - * XDR unsigned short integers - */ -bool_t -xdr_u_short (XDR *xdrs, u_short *usp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * usp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *usp = (u_short) (u_long) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_short) - - -/* - * XDR a char - */ -bool_t -xdr_char (XDR *xdrs, char *cp) -{ - int i; - - i = (*cp); - if (!INTUSE(xdr_int) (xdrs, &i)) - { - return FALSE; - } - *cp = i; - return TRUE; -} - -/* - * XDR an unsigned char - */ -bool_t -xdr_u_char (XDR *xdrs, u_char *cp) -{ - u_int u; - - u = (*cp); - if (!INTUSE(xdr_u_int) (xdrs, &u)) - { - return FALSE; - } - *cp = u; - return TRUE; -} - -/* - * XDR booleans - */ -bool_t -xdr_bool (XDR *xdrs, bool_t *bp) -{ - long lb; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - lb = *bp ? XDR_TRUE : XDR_FALSE; - return XDR_PUTLONG (xdrs, &lb); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &lb)) - { - return FALSE; - } - *bp = (lb == XDR_FALSE) ? FALSE : TRUE; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bool) - -/* - * XDR enumerations - */ -bool_t -xdr_enum (XDR *xdrs, enum_t *ep) -{ - enum sizecheck - { - SIZEVAL - }; /* used to find the size of an enum */ - - /* - * enums are treated as ints - */ - if (sizeof (enum sizecheck) == 4) - { -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = *ep; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ep = l; - case XDR_FREE: - return TRUE; - - } - return FALSE; -#else - return INTUSE(xdr_long) (xdrs, (long *) ep); -#endif - } - else if (sizeof (enum sizecheck) == sizeof (short)) - { - return INTUSE(xdr_short) (xdrs, (short *) ep); - } - else - { - return FALSE; - } -} -INTDEF(xdr_enum) - -/* - * XDR opaque data - * Allows the specification of a fixed size sequence of opaque bytes. - * cp points to the opaque object and cnt gives the byte length. - */ -bool_t -xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) -{ - u_int rndup; - static char crud[BYTES_PER_XDR_UNIT]; - - /* - * if no data we are done - */ - if (cnt == 0) - return TRUE; - - /* - * round byte count to full xdr units - */ - rndup = cnt % BYTES_PER_XDR_UNIT; - if (rndup > 0) - rndup = BYTES_PER_XDR_UNIT - rndup; - - switch (xdrs->x_op) - { - case XDR_DECODE: - if (!XDR_GETBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); - - case XDR_ENCODE: - if (!XDR_PUTBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_PUTBYTES (xdrs, xdr_zero, rndup); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_opaque) - -/* - * XDR counted bytes - * *cpp is a pointer to the bytes, *sizep is the count. - * If *cpp is NULL maxsize bytes are allocated - */ -bool_t -xdr_bytes (xdrs, cpp, sizep, maxsize) - XDR *xdrs; - char **cpp; - u_int *sizep; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int nodesize; - - /* - * first deal with the length since xdr bytes are counted - */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - nodesize = *sizep; - if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (nodesize == 0) - { - return TRUE; - } - if (sp == NULL) - { - *cpp = sp = (char *) mem_alloc (nodesize); - } - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); - return FALSE; - } - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, nodesize); - - case XDR_FREE: - if (sp != NULL) - { - mem_free (sp, nodesize); - *cpp = NULL; - } - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bytes) - -/* - * Implemented here due to commonality of the object. - */ -bool_t -xdr_netobj (xdrs, np) - XDR *xdrs; - struct netobj *np; -{ - - return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); -} -INTDEF(xdr_netobj) - -/* - * XDR a discriminated union - * Support routine for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * an entry with a null procedure pointer. The routine gets - * the discriminant value and then searches the array of xdrdiscrims - * looking for that value. It calls the procedure given in the xdrdiscrim - * to handle the discriminant. If there is no specific routine a default - * routine may be called. - * If there is no specific or default routine an error is returned. - */ -bool_t -xdr_union (xdrs, dscmp, unp, choices, dfault) - XDR *xdrs; - enum_t *dscmp; /* enum to decide which arm to work on */ - char *unp; /* the union itself */ - const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ - xdrproc_t dfault; /* default xdr routine */ -{ - enum_t dscm; - - /* - * we deal with the discriminator; it's an enum - */ - if (!INTUSE(xdr_enum) (xdrs, dscmp)) - { - return FALSE; - } - dscm = *dscmp; - - /* - * search choices for a value that matches the discriminator. - * if we find one, execute the xdr routine for that value. - */ - for (; choices->proc != NULL_xdrproc_t; choices++) - { - if (choices->value == dscm) - return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); - } - - /* - * no match - execute the default xdr routine if there is one - */ - return ((dfault == NULL_xdrproc_t) ? FALSE : - (*dfault) (xdrs, unp, LASTUNSIGNED)); -} -INTDEF(xdr_union) - - -/* - * Non-portable xdr primitives. - * Care should be taken when moving these routines to new architectures. - */ - - -/* - * XDR null terminated ASCII strings - * xdr_string deals with "C strings" - arrays of bytes that are - * terminated by a NULL character. The parameter cpp references a - * pointer to storage; If the pointer is null, then the necessary - * storage is allocated. The last parameter is the max allowed length - * of the string as specified by a protocol. - */ -bool_t -xdr_string (xdrs, cpp, maxsize) - XDR *xdrs; - char **cpp; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int size; - u_int nodesize; - - /* - * first deal with the length since xdr strings are counted-strings - */ - switch (xdrs->x_op) - { - case XDR_FREE: - if (sp == NULL) - { - return TRUE; /* already free */ - } - /* fall through... */ - case XDR_ENCODE: - if (sp == NULL) - return FALSE; - size = strlen (sp); - break; - case XDR_DECODE: - break; - } - if (!INTUSE(xdr_u_int) (xdrs, &size)) - { - return FALSE; - } - if (size > maxsize) - { - return FALSE; - } - nodesize = size + 1; - if (nodesize == 0) - { - /* This means an overflow. It a bug in the caller which - provided a too large maxsize but nevertheless catch it - here. */ - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (sp == NULL) - *cpp = sp = (char *) mem_alloc (nodesize); - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_string: out of memory\n"); - return FALSE; - } - sp[size] = 0; - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, size); - - case XDR_FREE: - mem_free (sp, nodesize); - *cpp = NULL; - return TRUE; - } - return FALSE; -} -INTDEF(xdr_string) - -/* - * Wrapper for xdr_string that can be called directly from - * routines like clnt_call - */ -bool_t -xdr_wrapstring (xdrs, cpp) - XDR *xdrs; - char **cpp; -{ - if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) - { - return TRUE; - } - return FALSE; -} diff --git a/source/unres/src_MD-M/xdrf_em64/xdr.h b/source/unres/src_MD-M/xdrf_em64/xdr.h deleted file mode 100644 index 2602ad9..0000000 --- a/source/unres/src_MD-M/xdrf_em64/xdr.h +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr.h, External Data Representation Serialization Routines. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - */ - -#ifndef _RPC_XDR_H -#define _RPC_XDR_H 1 - -#include -#include -#include "types.h" - -/* We need FILE. */ -#include - -__BEGIN_DECLS - -/* - * XDR provides a conventional way for converting between C data - * types and an external bit-string representation. Library supplied - * routines provide for the conversion on built-in C data types. These - * routines and utility routines defined here are used to help implement - * a type encode/decode routine for each user-defined type. - * - * Each data type provides a single procedure which takes two arguments: - * - * bool_t - * xdrproc(xdrs, argresp) - * XDR *xdrs; - * *argresp; - * - * xdrs is an instance of a XDR handle, to which or from which the data - * type is to be converted. argresp is a pointer to the structure to be - * converted. The XDR handle contains an operation field which indicates - * which of the operations (ENCODE, DECODE * or FREE) is to be performed. - * - * XDR_DECODE may allocate space if the pointer argresp is null. This - * data can be freed with the XDR_FREE operation. - * - * We write only one procedure per data type to make it easy - * to keep the encode and decode procedures for a data type consistent. - * In many cases the same code performs all operations on a user defined type, - * because all the hard work is done in the component type routines. - * decode as a series of calls on the nested data types. - */ - -/* - * Xdr operations. XDR_ENCODE causes the type to be encoded into the - * stream. XDR_DECODE causes the type to be extracted from the stream. - * XDR_FREE can be used to release the space allocated by an XDR_DECODE - * request. - */ -enum xdr_op { - XDR_ENCODE = 0, - XDR_DECODE = 1, - XDR_FREE = 2 -}; - -/* - * This is the number of bytes per unit of external data. - */ -#define BYTES_PER_XDR_UNIT (4) -/* - * This only works if the above is a power of 2. But it's defined to be - * 4 by the appropriate RFCs. So it will work. And it's normally quicker - * than the old routine. - */ -#if 1 -#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) -#else /* this is the old routine */ -#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ - * BYTES_PER_XDR_UNIT) -#endif - -/* - * The XDR handle. - * Contains operation which is being applied to the stream, - * an operations vector for the particular implementation (e.g. see xdr_mem.c), - * and two private fields for the use of the particular implementation. - */ -typedef struct XDR XDR; -struct XDR - { - enum xdr_op x_op; /* operation; fast additional param */ - struct xdr_ops - { - bool_t (*x_getlong) (XDR *__xdrs, long *__lp); - /* get a long from underlying stream */ - bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); - /* put a long to " */ - bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); - /* get some bytes from " */ - bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); - /* put some bytes to " */ - u_int (*x_getpostn) (__const XDR *__xdrs); - /* returns bytes off from beginning */ - bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); - /* lets you reposition the stream */ - int32_t *(*x_inline) (XDR *__xdrs, u_int __len); - /* buf quick ptr to buffered data */ - void (*x_destroy) (XDR *__xdrs); - /* free privates of this xdr_stream */ - bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); - /* get a int from underlying stream */ - bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); - /* put a int to " */ - } - *x_ops; - caddr_t x_public; /* users' data */ - caddr_t x_private; /* pointer to private data */ - caddr_t x_base; /* private used for position info */ - u_int x_handy; /* extra private word */ - }; - -/* - * A xdrproc_t exists for each data type which is to be encoded or decoded. - * - * The second argument to the xdrproc_t is a pointer to an opaque pointer. - * The opaque pointer generally points to a structure of the data type - * to be decoded. If this pointer is 0, then the type routines should - * allocate dynamic storage of the appropriate size and return it. - * bool_t (*xdrproc_t)(XDR *, caddr_t *); - */ -typedef bool_t (*xdrproc_t) (XDR *, void *,...); - - -/* - * Operations defined on a XDR handle - * - * XDR *xdrs; - * int32_t *int32p; - * long *longp; - * caddr_t addr; - * u_int len; - * u_int pos; - */ -#define XDR_GETINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) -#define xdr_getint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) - -#define XDR_PUTINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) -#define xdr_putint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) - -#define XDR_GETLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) -#define xdr_getlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) - -#define XDR_PUTLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) -#define xdr_putlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) - -#define XDR_GETBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) -#define xdr_getbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) - -#define XDR_PUTBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) -#define xdr_putbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) - -#define XDR_GETPOS(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) -#define xdr_getpos(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) - -#define XDR_SETPOS(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) -#define xdr_setpos(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) - -#define XDR_INLINE(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) -#define xdr_inline(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) - -#define XDR_DESTROY(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) -#define xdr_destroy(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) - -/* - * Support struct for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * a entry with a null procedure pointer. The xdr_union routine gets - * the discriminant value and then searches the array of structures - * for a matching value. If a match is found the associated xdr routine - * is called to handle that part of the union. If there is - * no match, then a default routine may be called. - * If there is no match and no default routine it is an error. - */ -#define NULL_xdrproc_t ((xdrproc_t)0) -struct xdr_discrim -{ - int value; - xdrproc_t proc; -}; - -/* - * Inline routines for fast encode/decode of primitive data types. - * Caveat emptor: these use single memory cycles to get the - * data from the underlying buffer, and will fail to operate - * properly if the data is not aligned. The standard way to use these - * is to say: - * if ((buf = XDR_INLINE(xdrs, count)) == NULL) - * return (FALSE); - * <<< macro calls >>> - * where ``count'' is the number of bytes of data occupied - * by the primitive data types. - * - * N.B. and frozen for all time: each data type here uses 4 bytes - * of external representation. - */ - -#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) -#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) -#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) -#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) - -/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ -#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) -#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) -#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - - -#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) -#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) -#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) -#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) - -#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - -/* - * These are the "generic" xdr routines. - * None of these can have const applied because it's not possible to - * know whether the call is a read or a write to the passed parameter - * also, the XDR structure is always updated by some of these calls. - */ -extern bool_t xdr_void (void) __THROW; -extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; -extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; -extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; -extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; -extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; -extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; -extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; -extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; -extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; -extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; -extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; -extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; -extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; -extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; -extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; -extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; -extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; -extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; -extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, - u_int __maxsize, u_int __elsize, xdrproc_t __elproc) - __THROW; -extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, - u_int __maxsize) __THROW; -extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; -extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; -extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, - __const struct xdr_discrim *__choices, - xdrproc_t dfault) __THROW; -extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; -extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; -extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, - u_int __elemsize, xdrproc_t __xdr_elem) __THROW; -extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; -extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; -extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, - xdrproc_t __proc) __THROW; -extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, - u_int __obj_size, xdrproc_t __xdr_obj) __THROW; -extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; -extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; - -/* - * Common opaque bytes objects used by many rpc protocols; - * declared here due to commonality. - */ -#define MAX_NETOBJ_SZ 1024 -struct netobj -{ - u_int n_len; - char *n_bytes; -}; -typedef struct netobj netobj; -extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; - -/* - * These are the public routines for the various implementations of - * xdr streams. - */ - -/* XDR using memory buffers */ -extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, - u_int __size, enum xdr_op __xop) __THROW; - -/* XDR using stdio library */ -extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) - __THROW; - -/* XDR pseudo records for tcp */ -extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, - u_int __recvsize, caddr_t __tcp_handle, - int (*__readit) (char *, char *, int), - int (*__writeit) (char *, char *, int)) __THROW; - -/* make end of xdr record */ -extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; - -/* move to beginning of next record */ -extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; - -/* true if no more input */ -extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; - -/* free memory buffers for xdr */ -extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; - -__END_DECLS - -#endif /* rpc/xdr.h */ diff --git a/source/unres/src_MD-M/xdrf_em64/xdr_array.c b/source/unres/src_MD-M/xdrf_em64/xdr_array.c deleted file mode 100644 index 836405c..0000000 --- a/source/unres/src_MD-M/xdrf_em64/xdr_array.c +++ /dev/null @@ -1,174 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_array.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "non-trivial" xdr primitives used to serialize and de-serialize - * arrays. See xdr.h for more info on the interface to xdr. - */ - -#include -#include -#include "types.h" -#include "xdr.h" -#include -#include - -#ifdef USE_IN_LIBIO -# include -#endif - -#define LASTUNSIGNED ((u_int)0-1) - - -/* - * XDR an array of arbitrary elements - * *addrp is a pointer to the array, *sizep is the number of elements. - * If addrp is NULL (*sizep * elsize) bytes are allocated. - * elsize is the size (in bytes) of each element, and elproc is the - * xdr procedure to call to handle each element of the array. - */ -bool_t -xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) - XDR *xdrs; - caddr_t *addrp; /* array pointer */ - u_int *sizep; /* number of elements */ - u_int maxsize; /* max numberof elements */ - u_int elsize; /* size in bytes of each element */ - xdrproc_t elproc; /* xdr routine to handle each element */ -{ - u_int i; - caddr_t target = *addrp; - u_int c; /* the actual element count */ - bool_t stat = TRUE; - u_int nodesize; - - /* like strings, arrays are really counted arrays */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - c = *sizep; - /* - * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() - * doesn't actually use its second argument anyway. - */ - if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - nodesize = c * elsize; - - /* - * if we are deserializing, we may need to allocate an array. - * We also save time by checking for a null array if we are freeing. - */ - if (target == NULL) - switch (xdrs->x_op) - { - case XDR_DECODE: - if (c == 0) - return TRUE; - *addrp = target = mem_alloc (nodesize); - if (target == NULL) - { - fprintf (stderr, "%s", "xdr_array: out of memory\n"); - return FALSE; - } - __bzero (target, nodesize); - break; - - case XDR_FREE: - return TRUE; - default: - break; - } - - /* - * now we xdr each element of array - */ - for (i = 0; (i < c) && stat; i++) - { - stat = (*elproc) (xdrs, target, LASTUNSIGNED); - target += elsize; - } - - /* - * the array may need freeing - */ - if (xdrs->x_op == XDR_FREE) - { - mem_free (*addrp, nodesize); - *addrp = NULL; - } - return stat; -} -INTDEF(xdr_array) - -/* - * xdr_vector(): - * - * XDR a fixed length array. Unlike variable-length arrays, - * the storage of fixed length arrays is static and unfreeable. - * > basep: base of the array - * > size: size of the array - * > elemsize: size of each element - * > xdr_elem: routine to XDR each element - */ -bool_t -xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) - XDR *xdrs; - char *basep; - u_int nelem; - u_int elemsize; - xdrproc_t xdr_elem; -{ - u_int i; - char *elptr; - - elptr = basep; - for (i = 0; i < nelem; i++) - { - if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) - { - return FALSE; - } - elptr += elemsize; - } - return TRUE; -} diff --git a/source/unres/src_MD-M/xdrf_em64/xdr_float.c b/source/unres/src_MD-M/xdrf_em64/xdr_float.c deleted file mode 100644 index 15d3c88..0000000 --- a/source/unres/src_MD-M/xdrf_em64/xdr_float.c +++ /dev/null @@ -1,307 +0,0 @@ -/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_float.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "floating point" xdr routines used to (de)serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include - -#include "types.h" -#include "xdr.h" - -/* - * NB: Not portable. - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) - -#ifdef vax - -/* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int mantissa: 23; - unsigned int exp : 8; - unsigned int sign : 1; -}; - -/* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; -}; - -#define VAX_SNG_BIAS 0x81 -#define IEEE_SNG_BIAS 0x7f - -static struct sgl_limits { - struct vax_single s; - struct ieee_single ieee; -} sgl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x0, 0xff, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; -#endif /* vax */ - -bool_t -xdr_float(xdrs, fp) - XDR *xdrs; - float *fp; -{ -#ifdef vax - struct ieee_single is; - struct vax_single vs, *vsp; - struct sgl_limits *lim; - int i; -#endif - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vs = *((struct vax_single *)fp); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((vs.mantissa2 == lim->s.mantissa2) && - (vs.exp == lim->s.exp) && - (vs.mantissa1 == lim->s.mantissa1)) { - is = lim->ieee; - goto shipit; - } - } - is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; - shipit: - is.sign = vs.sign; - return (XDR_PUTLONG(xdrs, (long *)&is)); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_PUTLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp = *(int *)fp; - return (XDR_PUTLONG(xdrs, &tmp)); - } - break; -#endif - - case XDR_DECODE: -#ifdef vax - vsp = (struct vax_single *)fp; - if (!XDR_GETLONG(xdrs, (long *)&is)) - return (FALSE); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((is.exp == lim->ieee.exp) && - (is.mantissa == lim->ieee.mantissa)) { - *vsp = lim->s; - goto doneit; - } - } - vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = is.mantissa; - vsp->mantissa1 = (is.mantissa >> 16); - doneit: - vsp->sign = is.sign; - return (TRUE); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_GETLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp; - if (XDR_GETLONG(xdrs, &tmp)) { - *(int *)fp = tmp; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} - -/* - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#ifdef vax -/* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int mantissa1 : 20; - unsigned int exp : 11; - unsigned int sign : 1; - unsigned int mantissa2 : 32; -}; - -/* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; -}; - -#define VAX_DBL_BIAS 0x81 -#define IEEE_DBL_BIAS 0x3ff -#define MASK(nbits) ((1 << nbits) - 1) - -static struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; -} dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; - -#endif /* vax */ - - -bool_t -xdr_double(xdrs, dp) - XDR *xdrs; - double *dp; -{ -#ifdef vax - struct ieee_double id; - struct vax_double vd; - register struct dbl_limits *lim; - int i; -#endif - - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vd = *((struct vax_double *)dp); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((vd.mantissa4 == lim->d.mantissa4) && - (vd.mantissa3 == lim->d.mantissa3) && - (vd.mantissa2 == lim->d.mantissa2) && - (vd.mantissa1 == lim->d.mantissa1) && - (vd.exp == lim->d.exp)) { - id = lim->ieee; - goto shipit; - } - } - id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); - id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | - (vd.mantissa3 << 13) | - ((vd.mantissa4 >> 3) & MASK(13)); - shipit: - id.sign = vd.sign; - dp = (double *)&id; -#endif - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_PUTLONG(xdrs, lp+!LSW) && - XDR_PUTLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - tmp[0] = ip[!LSW]; - tmp[1] = ip[LSW]; - return (XDR_PUTLONG(xdrs, tmp) && - XDR_PUTLONG(xdrs, tmp+1)); - } - break; - - case XDR_DECODE: -#ifdef vax - lp = (long *)&id; - if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) - return (FALSE); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((id.mantissa2 == lim->ieee.mantissa2) && - (id.mantissa1 == lim->ieee.mantissa1) && - (id.exp == lim->ieee.exp)) { - vd = lim->d; - goto doneit; - } - } - vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - vd.mantissa1 = (id.mantissa1 >> 13); - vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | - (id.mantissa2 >> 29); - vd.mantissa3 = (id.mantissa2 >> 13); - vd.mantissa4 = (id.mantissa2 << 3); - doneit: - vd.sign = id.sign; - *dp = *((double *)&vd); - return (TRUE); -#else - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_GETLONG(xdrs, lp+!LSW) && - XDR_GETLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - if (XDR_GETLONG(xdrs, tmp+!LSW) && - XDR_GETLONG(xdrs, tmp+LSW)) { - ip[0] = tmp[0]; - ip[1] = tmp[1]; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} diff --git a/source/unres/src_MD-M/xdrf_em64/xdr_stdio.c b/source/unres/src_MD-M/xdrf_em64/xdr_stdio.c deleted file mode 100644 index 12b1709..0000000 --- a/source/unres/src_MD-M/xdrf_em64/xdr_stdio.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr_stdio.c, XDR implementation on standard i/o file. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * This set of routines implements a XDR on a stdio stream. - * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes - * from the stream. - */ - -#include "types.h" -#include -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -# define fflush(s) INTUSE(_IO_fflush) (s) -# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) -# define ftell(s) INTUSE(_IO_ftell) (s) -# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) -#endif - -static bool_t xdrstdio_getlong (XDR *, long *); -static bool_t xdrstdio_putlong (XDR *, const long *); -static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); -static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); -static u_int xdrstdio_getpos (const XDR *); -static bool_t xdrstdio_setpos (XDR *, u_int); -static int32_t *xdrstdio_inline (XDR *, u_int); -static void xdrstdio_destroy (XDR *); -static bool_t xdrstdio_getint32 (XDR *, int32_t *); -static bool_t xdrstdio_putint32 (XDR *, const int32_t *); - -/* - * Ops vector for stdio type XDR - */ -static const struct xdr_ops xdrstdio_ops = -{ - xdrstdio_getlong, /* deserialize a long int */ - xdrstdio_putlong, /* serialize a long int */ - xdrstdio_getbytes, /* deserialize counted bytes */ - xdrstdio_putbytes, /* serialize counted bytes */ - xdrstdio_getpos, /* get offset in the stream */ - xdrstdio_setpos, /* set offset in the stream */ - xdrstdio_inline, /* prime stream for inline macros */ - xdrstdio_destroy, /* destroy stream */ - xdrstdio_getint32, /* deserialize a int */ - xdrstdio_putint32 /* serialize a int */ -}; - -/* - * Initialize a stdio xdr stream. - * Sets the xdr stream handle xdrs for use on the stream file. - * Operation flag is set to op. - */ -void -xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) -{ - xdrs->x_op = op; - /* We have to add the const since the `struct xdr_ops' in `struct XDR' - is not `const'. */ - xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; - xdrs->x_private = (caddr_t) file; - xdrs->x_handy = 0; - xdrs->x_base = 0; -} - -/* - * Destroy a stdio xdr stream. - * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. - */ -static void -xdrstdio_destroy (XDR *xdrs) -{ - (void) fflush ((FILE *) xdrs->x_private); - /* xx should we close the file ?? */ -}; - -static bool_t -xdrstdio_getlong (XDR *xdrs, long *lp) -{ - u_int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *lp = (long) ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putlong (XDR *xdrs, const long *lp) -{ - int32_t mycopy = htonl ((u_int32_t) *lp); - - if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) -{ - if ((len != 0) && (fread (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) -{ - if ((len != 0) && (fwrite (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static u_int -xdrstdio_getpos (const XDR *xdrs) -{ - return (u_int) ftell ((FILE *) xdrs->x_private); -} - -static bool_t -xdrstdio_setpos (XDR *xdrs, u_int pos) -{ - return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; -} - -static int32_t * -xdrstdio_inline (XDR *xdrs, u_int len) -{ - /* - * Must do some work to implement this: must insure - * enough data in the underlying stdio buffer, - * that the buffer is aligned so that we can indirect through a - * long *, and stuff this pointer in xdrs->x_buf. Doing - * a fread or fwrite to a scratch buffer would defeat - * most of the gains to be had here and require storage - * management on this buffer, so we don't do this. - */ - return NULL; -} - -static bool_t -xdrstdio_getint32 (XDR *xdrs, int32_t *ip) -{ - int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *ip = ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) -{ - int32_t mycopy = htonl (*ip); - - ip = &mycopy; - if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/unres/src_MD-M/xdrf_em64/xdrf.h b/source/unres/src_MD-M/xdrf_em64/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/unres/src_MD-M/xdrf_em64/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/unres/src_MD/CMakeLists.txt b/source/unres/src_MD/CMakeLists.txt index 147ca4c..38add7b 100644 --- a/source/unres/src_MD/CMakeLists.txt +++ b/source/unres/src_MD/CMakeLists.txt @@ -1,49 +1,375 @@ # -# CMake project file for UNRES -# +# CMake project file for UNRES with MD for single chains +# enable_language (Fortran) -# Set sources -set(UNRES_MD_SRC0 unres.F arcos.f cartprint.f chainbuild.F convert.f - initialize_p.F matmult.f readrtns.F parmread.F gen_rand_conf.F - printmat.f map.f pinorm.f randgens.f rescode.f intcor.f timing.F - misc.f intlocal.f cartder.F checkder_p.F econstr_local.F - minimize_p.F sumsld.f cored.f rmdd.f geomout.F readpdb.F regularize.F - thread.F fitsq.f mcm.F mc.F bond_move.f refsys.f check_sc_distr.f - check_bond.f contact.f djacob.f eigen.f blas.f add.f entmcm.F - minim_mcmf.F MP.F compare_s1.F prng_32.F banach.f rmsd.F elecont.f dihed_cons.F sc_move.F - local_move.f intcartderiv.F lagrangian_lesyng.F stochfric.F kinetic_lesyng.f MD_A-MTS.F moments.f - int_to_cart.f surfatom.f sort.f muca_md.f MREMD.F rattle.F gauss.f energy_split-sep.F - q_measure.F gnmr1.f test.F ) +#================================ +# Set source file lists +#================================ +set(UNRES_MD_SRC0 + add.f + arcos.f + banach.f + blas.f + bond_move.f + cartder.F + cartprint.f + check_sc_distr.f + check_bond.f + chainbuild.F + checkder_p.F + compare_s1.F + contact.f + convert.f + cored.f + dihed_cons.F + djacob.f + econstr_local.F + eigen.f + elecont.f + energy_split-sep.F + entmcm.F + fitsq.f + gauss.f + gen_rand_conf.F + geomout.F + gnmr1.f + intcartderiv.F + initialize_p.F + int_to_cart.f + intcor.f + intlocal.f + kinetic_lesyng.f + lagrangian_lesyng.F + local_move.f + map.f + matmult.f + mc.F + mcm.F + MD_A-MTS.F + minimize_p.F + minim_mcmf.F + misc.f + moments.f + MP.F + MREMD.F + muca_md.f + parmread.F + pinorm.f + printmat.f + q_measure.F + randgens.f + rattle.F + readpdb.F + readrtns.F + refsys.f + regularize.F + rescode.f + rmdd.f + rmsd.F + sc_move.F + sort.f + stochfric.F + sumsld.f + surfatom.f + test.F + timing.F + thread.F + unres.F +) + +if(Fortran_COMPILER_NAME STREQUAL "ifort") + set(UNRES_MD_SRC0 ${UNRES_MD_SRC0} prng.f ) +else() + set(UNRES_MD_SRC0 ${UNRES_MD_SRC0} prng_32.F ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +set(UNRES_MD_SRC3 + energy_p_new_barrier.F + energy_p_new-sep_barrier.F + gradient_p.F ) + +set(UNRES_MD_PP_SRC + cartder.F + chainbuild.F + checkder_p.F + compare_s1.F + dihed_cons.F + econstr_local.F + energy_p_new_barrier.F + energy_p_new-sep_barrier.F + energy_split-sep.F + entmcm.F + gen_rand_conf.F + geomout.F + gradient_p.F + initialize_p.F + intcartderiv.F + lagrangian_lesyng.F + mc.F + mcm.F + MD_A-MTS.F + minimize_p.F + minim_mcmf.F + MP.F + MREMD.F + parmread.F + q_measure1.F + q_measure3.F + q_measure.F + rattle.F + readpdb.F + readrtns.F + regularize.F + rmsd.F + sc_move.F + stochfric.F + test.F + thread.F + timing.F + unres.F + proc_proc.c +) + + +if(NOT Fortran_COMPILER_NAME STREQUAL "ifort") + set(UNRES_MD_PP_SRC ${UNRES_MD_PP_SRC} prng_32.F) +endif(NOT Fortran_COMPILER_NAME STREQUAL "ifort") + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(FFLAGS0 "-ip -w" ) + set(FFLAGS1 "-w -g -d2 -CA -CB" ) + set(FFLAGS2 "-w -g -00 ") + #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" ) + set(FFLAGS3 "-w -ipo " ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-I. " ) + set(FFLAGS1 "-g -I. " ) + set(FFLAGS2 "-I. ") + #set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report" ) + set(FFLAGS3 "-I. " ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +# Add MPI compiler flags +if(UNRES_WITH_MPI) + set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS1 "${FFLAGS1} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS2 "${FFLAGS2} -I${MPIF_INCLUDE_DIRECTORIES}") + set(FFLAGS3 "${FFLAGS3} -I${MPIF_INCLUDE_DIRECTORIES}") +endif(UNRES_WITH_MPI) + +set_property(SOURCE ${UNRES_MD_SRC0} APPEND PROPERTY COMPILE_FLAGS ${FFLAGS0} ) +#set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} ) +#set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} ) +set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} ) + +#========================================= +# Settings for GAB force field +#========================================= +if(UNRES_MD_FF STREQUAL "GAB" ) + # set preprocesor flags + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0 -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) + +#========================================= +# Settings for E0LL2Y force field +#========================================= +elseif(UNRES_MD_FF STREQUAL "E0LL2Y") + # set preprocesor flags + set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DLANG0" ) +endif(UNRES_MD_FF STREQUAL "GAB") + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +#========================================= +# Compiler specific flags +#========================================= + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + # Add ifort preprocessor flags + set(CPPFLAGS "${CPPFLAGS} -DPGI") +elseif (Fortran_COMPILER_NAME STREQUAL "f95") + # Add new gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + # Add old gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + +#========================================= +# Add MPI preprocessor flags +#========================================= +if (UNRES_WITH_MPI) + set(CPPFLAGS "${CPPFLAGS} -DMP -DMPI") +endif(UNRES_WITH_MPI) -set(UNRES_MD_SRC3 energy_p_new_barrier.F energy_p_new-sep_barrier.F gradient_p.F ) +#========================================= +# Apply preprocesor flags to *.F files +#========================================= +set_property(SOURCE ${UNRES_MD_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + +#======================================== +# Setting binary name +#======================================== +if(UNRES_WITH_MPI) + # binary with mpi + set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_MPICH_${UNRES_MD_FF}.exe") +else(UNRES_WITH_MPI) + # binary without mpi + set(UNRES_BIN "unres_${Fortran_COMPILER_NAME}_single_${UNRES_MD_FF}.exe") +endif(UNRES_WITH_MPI) + +#========================================= +# cinfo.f stupid workaround for cmake +# - shame on me ]:) +#========================================= +set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" ) +add_executable(compinfo-md compinfo.c) +set_target_properties(compinfo-md PROPERTIES OUTPUT_NAME compinfo) + +set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true + DEPENDS compinfo-md ) +set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# Set full unres MD sources +#========================================= +set(UNRES_MD_SRCS ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} ${UNRES_CINFO_DIR}/cinfo.f ) + + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_BIN-MD ${UNRES_MD_SRCS} ) +set_target_properties(UNRES_BIN-MD PROPERTIES OUTPUT_NAME ${UNRES_BIN}) +#set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD ) +#add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB}) + + +#========================================= +# Link libraries +#========================================= +# link MPI library (libmpich.a) +if(UNRES_WITH_MPI) + target_link_libraries( UNRES_BIN-MD ${MPIF_LIBRARIES} ) +endif(UNRES_WITH_MPI) +# link libxdrf.a +#message("UNRES_XDRFLIB=${UNRES_XDRFLIB}") +target_link_libraries( UNRES_BIN-MD xdrf ) + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= +# test_single_ala.sh +#========================================= + +FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh +"#!/bin/sh +export POT=GB +export PREFIX=ala10 +#----------------------------------------------------------------------------- +UNRES_BIN=./${UNRES_BIN} +#----------------------------------------------------------------------------- +DD=${CMAKE_SOURCE_DIR}/PARAM +export BONDPAR=$DD/bond.parm +export THETPAR=$DD/thetaml.5parm +export ROTPAR=$DD/scgauss.parm +export TORPAR=$DD/torsion_631Gdp.parm +export TORDPAR=$DD/torsion_double_631Gdp.parm +export ELEPAR=$DD/electr_631Gdp.parm +export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k +export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3 +export SCPPAR=$DD/scp.parm +export SCCORPAR=$DD/rotcorr_AM1.parm +export PATTERN=$DD/patterns.cart +#----------------------------------------------------------------------------- +$UNRES_BIN +") + +# +# File permissions workaround +# +FILE( COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_single_ala.sh + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +) -# Set compiler flags for different sourcefiles -set(FFLAGS0 -c -O3 -ip -w ) -set(FFLAGS1 -c -w -g -d2 -CA -CB ) -set(FFLAGS2 -c -w -g -00 ) -set(FFLAGS3 -c -w -O3 -ipo -ipo_obj -opt_report ) -set_property(SOURCE ${UNRES_MD_SRC0} PROPERTY CMAKE_Fortran_FLAGS ${FFLAGS0} ) -set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} ) -set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} ) -set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY CMAKE_Fortran_FLAGS ${FFLAGS3} ) +#========================================= +# ala10.inp +#========================================= -# Compile code +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp +"ala10 unblocked +SEED=-1111333 MD ONE_LETTER rescale_mode=2 +nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0 & +reset_moment=1000 reset_vel=1000 +WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873 & +WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000 & +WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000 & +WVDWPP=0.11371 WHPB=1.00000 & +CUTOFF=7.00000 WCORR4=0.00000 +12 +XAAAAAAAAAAX + 0 + 0 + 90.0000 90.0000 90.0000 90.000 90.000 90.000 90.000 90.000 + 90.0000 90.0000 + 180.0000 180.0000 180.0000 180.000 180.000 180.000 180.000 180.000 + 180.0000 + 110.0000 110.0000 110.0000 100.000 110.000 100.000 110.000 110.000 + 110.0000 110.0000 + -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000 + -120.0000 -120.0000 +") -if(UNRES_FF STREQUAL "GAB") - set(CPPFLAGS -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO -DCRYST_BOND - -DCRYST_THETA -DCRYST_SC ) +# Add tests -else(UNRES_FF strequal "E0LL2Y") +if(NOT UNRES_WITH_MPI) + + add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) - set(CPPFLAGS -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANG0 ) +else(NOT UNRES_WITH_MPI) -endif() + add_test(NAME UNRES_MD_MPI_Ala10 COMMAND mpirun -np 1 ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) -add_executable(unres ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} ) +endif(NOT UNRES_WITH_MPI) + diff --git a/source/unres/src_MD/COMMON.CHAIN b/source/unres/src_MD/COMMON.CHAIN index f7a8a1d..6e19f8d 100644 --- a/source/unres/src_MD/COMMON.CHAIN +++ b/source/unres/src_MD/COMMON.CHAIN @@ -1,9 +1,10 @@ integer nres,nsup,nstart_sup,nz_start,nz_end,iz_sc, & nres0,nstart_seq double precision c,dc,dc_old,d_c_work,xloc,xrot,dc_norm,t,r, - & prod,rt,dc_work,cref,crefjlee + & prod,rt,dc_work,cref,crefjlee,dc_norm2 common /chain/ c(3,maxres2+2),dc(3,0:maxres2),dc_old(3,0:maxres2), & xloc(3,maxres),xrot(3,maxres),dc_norm(3,0:maxres2), + & dc_norm2(3,0:maxres2), & dc_work(MAXRES6),nres,nres0 common /rotmat/ t(3,3,maxres),r(3,3,maxres),prod(3,3,maxres), & rt(3,3,maxres) diff --git a/source/unres/src_MD/COMMON.LOCAL b/source/unres/src_MD/COMMON.LOCAL index 837a7a3..a3f68dc 100644 --- a/source/unres/src_MD/COMMON.LOCAL +++ b/source/unres/src_MD/COMMON.LOCAL @@ -29,7 +29,8 @@ C Parameters of ab initio-derived potential of virtual-bond-angle bending C Virtual-bond lenghts double precision vbl,vblinv,vblinv2,vbl_cis,vbl0,vbld_inv integer loc_start,loc_end,ithet_start,ithet_end,iphi_start, - & iphi_end,iphid_start,iphid_end,ibond_start,ibond_end, + & iphi_end,iphid_start,iphid_end,itau_start,itau_end,ibond_start, + & ibond_end, & ibondp_start,ibondp_end,ivec_start,ivec_end,iset_start,iset_end, & iturn3_start,iturn3_end,iturn4_start,iturn4_end,iint_start, & iint_end,iphi1_start,iphi1_end, @@ -42,7 +43,8 @@ C Virtual-bond lenghts & iint_count(0:max_fg_procs-1),iint_displ(0:max_fg_procs-1) common /peptbond/ vbl,vblinv,vblinv2,vbl_cis,vbl0 common /indices/ loc_start,loc_end,ithet_start,ithet_end, - & iphi_start,iphi_end,iphid_start,iphid_end,ibond_start,ibond_end, + & iphi_start,iphi_end,iphid_start,iphid_end,itau_start,itau_end, + & ibond_start,ibond_end, & ibondp_start,ibondp_end,ivec_start,ivec_end,iset_start,iset_end, & iturn3_start,iturn3_end,iturn4_start,iturn4_end,iint_start, & iint_end,iphi1_start,iphi1_end,iint_count,iint_displ,ivec_displ, diff --git a/source/unres/src_MD/COMMON.SCCOR b/source/unres/src_MD/COMMON.SCCOR index 5217de7..ca6210f 100644 --- a/source/unres/src_MD/COMMON.SCCOR +++ b/source/unres/src_MD/COMMON.SCCOR @@ -1,6 +1,16 @@ -C Parameters of the SCCOR term - double precision v1sccor,v2sccor - integer nterm_sccor - common/torsion/v1sccor(maxterm_sccor,20,20), - & v2sccor(maxterm_sccor,20,20), - & nterm_sccor +cc Parameters of the SCCOR term + double precision v1sccor,v2sccor,vlor1sccor, + & vlor2sccor,vlor3sccor,gloc_sc, + & dcostau,dsintau,dtauangle,dcosomicron, + & domicron + integer nterm_sccor,isccortyp,nsccortyp,nlor_sccor + common/sccor/v1sccor(maxterm_sccor,3,20,20), + & v2sccor(maxterm_sccor,3,20,20), + & v0sccor(maxterm_sccor,20), + & nterm_sccor(ntyp,ntyp),isccortyp(ntyp),nsccortyp, + & nlor_sccor(ntyp,ntyp),vlor1sccor(maxterm_sccor,20,20), + & vlor2sccor(maxterm_sccor,20,20), + & vlor3sccor(maxterm_sccor,20,20),gloc_sc(3,0:maxres2,10), + & dcostau(3,3,3,maxres2),dsintau(3,3,3,maxres2), + & dtauangle(3,3,3,maxres2),dcosomicron(3,3,3,maxres2), + & domicron(3,3,3,maxres2) diff --git a/source/unres/src_MD/COMMON.VAR b/source/unres/src_MD/COMMON.VAR index 71158b8..d560c87 100644 --- a/source/unres/src_MD/COMMON.VAR +++ b/source/unres/src_MD/COMMON.VAR @@ -5,6 +5,7 @@ C Store the geometric variables in the following COMMON block. & thetaref,phiref,costtab,sinttab,cost2tab,sint2tab, & xxtab,yytab,zztab,xxref,yyref,zzref common /var/ theta(maxres),phi(maxres),alph(maxres),omeg(maxres), + & omicron(2,maxres),tauangle(3,maxres), & vbld(2*maxres),thetaref(maxres),phiref(maxres), & costtab(maxres), sinttab(maxres), cost2tab(maxres), & sint2tab(maxres),xxtab(maxres),yytab(maxres), diff --git a/source/unres/src_MD/DIMENSIONS b/source/unres/src_MD/DIMENSIONS index 224dade..5151ff7 100644 --- a/source/unres/src_MD/DIMENSIONS +++ b/source/unres/src_MD/DIMENSIONS @@ -54,7 +54,7 @@ C virtual-bond angle bending potentials & mmaxtheterm=maxtheterm) c Max number of torsional terms in SCCOR integer maxterm_sccor - parameter (maxterm_sccor=3) + parameter (maxterm_sccor=6) C Max. number of lobes in SC distribution integer maxlob parameter (maxlob=4) diff --git a/source/unres/src_MD/Makefile_MPICH_ifort b/source/unres/src_MD/Makefile_MPICH_ifort index 89d0b76..ec1bcf3 100644 --- a/source/unres/src_MD/Makefile_MPICH_ifort +++ b/source/unres/src_MD/Makefile_MPICH_ifort @@ -3,7 +3,7 @@ INSTALL_DIR = /users/software/mpich-1.2.7p1_intel-10.1_em64_ssh FC= ifort -OPT = -O3 -ip -w +OPT = -g -ip -w -CB FFLAGS = -c ${OPT} -I$(INSTALL_DIR)/include FFLAGS1 = -c -w -g -d2 -CA -CB -I$(INSTALL_DIR)/include diff --git a/source/unres/src_MD/checkder_p.F b/source/unres/src_MD/checkder_p.F index 26854e6..4d0379e 100644 --- a/source/unres/src_MD/checkder_p.F +++ b/source/unres/src_MD/checkder_p.F @@ -8,6 +8,7 @@ C Check the gradient of Cartesian coordinates in internal coordinates. include 'COMMON.GEO' include 'COMMON.LOCAL' include 'COMMON.DERIV' + include 'COMMON.SCCOR' dimension temp(6,maxres),xx(3),gg(3) indmat(i,j)=((2*(nres-2)-i)*(i-1))/2+j-1 * @@ -180,6 +181,7 @@ C Check the gradient of the energy in Cartesian coordinates. include 'COMMON.IOUNITS' include 'COMMON.VAR' include 'COMMON.CONTACTS' + include 'COMMON.SCCOR' common /srutu/ icall dimension ggg(6),cc(3),xx(3),ddc(3),ddx(3),x(maxvar),g(maxvar) dimension grad_s(6,maxres) @@ -261,6 +263,7 @@ C Check the gradient of the energy in Cartesian coordinates. include 'COMMON.MD' include 'COMMON.LOCAL' include 'COMMON.SPLITELE' + include 'COMMON.SCCOR' common /srutu/ icall dimension ggg(6),ggg1(6),cc(3),xx(3),ddc(3),ddx(3),x(maxvar), & g(maxvar) @@ -288,10 +291,16 @@ c call checkintcartgrad call geom_to_var(nvar,x) if (.not.split_ene) then call etotal(energia(0)) +c do i=1,nres +c write (iout,*) "atu?", gloc_sc(1,i,icg),gloc(i,icg) +c enddo etot=energia(0) call enerprint(energia(0)) call flush(iout) write (iout,*) "enter cartgrad" +c do i=1,nres +c write (iout,*) gloc_sc(1,i,icg) +c enddo call flush(iout) call cartgrad write (iout,*) "exit cartgrad" @@ -338,6 +347,9 @@ c call checkintcartgrad call zerograd call etotal_short(energia(0)) call enerprint(energia(0)) +c do i=1,nres +c write (iout,*) gloc_sc(1,i,icg) +c enddo call flush(iout) write (iout,*) "enter cartgrad" call flush(iout) @@ -502,7 +514,7 @@ c------------------------------------------------------------------------- time01=MPI_Wtime() #endif #if defined(PARINT) && defined(MPI) - do i=iint_start,iint_end + do i=iint_start,iint_end+1 #else do i=2,nres #endif @@ -513,7 +525,20 @@ c------------------------------------------------------------------------- & +(c(j,i+1)-c(j,i))/dnorm2) enddo be=0.0D0 - if (i.gt.2) phi(i+1)=beta(i-2,i-1,i,i+1) + if (i.gt.2) then + if (i.le.nres) phi(i+1)=beta(i-2,i-1,i,i+1) + if ((itype(i).ne.10).and.(itype(i-1).ne.10)) then + tauangle(3,i+1)=beta(i+nres-1,i-1,i,i+nres) + endif + if (itype(i-1).ne.10) then + tauangle(1,i+1)=beta(i-1+nres,i-1,i,i+1) + omicron(1,i)=alpha(i-2,i-1,i-1+nres) + omicron(2,i)=alpha(i-1+nres,i-1,i) + endif + if (itype(i).ne.10) then + tauangle(2,i+1)=beta(i-2,i-1,i,i+nres) + endif + endif omeg(i)=beta(nres+i,i,maxres2,i+1) alph(i)=alpha(nres+i,i,maxres2) theta(i+1)=alpha(i-1,i,i+1) @@ -526,6 +551,7 @@ c------------------------------------------------------------------------- vbld_inv(nres+i)=0.0d0 endif enddo + #if defined(PARINT) && defined(MPI) if (nfgtasks1.gt.1) then cd write(iout,*) "iint_start",iint_start," iint_count", diff --git a/source/unres/src_MD/cinfo.f b/source/unres/src_MD/cinfo.f index 3438039..b54ec8c 100644 --- a/source/unres/src_MD/cinfo.f +++ b/source/unres/src_MD/cinfo.f @@ -1,4 +1,5 @@ C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C +<<<<<<< HEAD C 2 5 66 subroutine cinfo include 'COMMON.IOUNITS' @@ -6,13 +7,29 @@ C 2 5 66 write(iout,*)'Version 2.5 build 66' write(iout,*)'compiled Thu Jun 14 06:40:11 2012' write(iout,*)'compiled by adam@matrix.chem.cornell.edu' +======= +C 2 5 295 + subroutine cinfo + include 'COMMON.IOUNITS' + write(iout,*)'++++ Compile info ++++' + write(iout,*)'Version 2.5 build 295' + write(iout,*)'compiled Mon Jun 18 05:08:20 2012' + write(iout,*)'compiled by aks255@matrix.chem.cornell.edu' +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 write(iout,*)'OS name: Linux ' write(iout,*)'OS release: 2.6.34.9-69.fc13.x86_64 ' write(iout,*)'OS version:', & ' #1 SMP Tue May 3 09:23:03 UTC 2011 ' write(iout,*)'flags:' +<<<<<<< HEAD write(iout,*)'FC = ifort' write(iout,*)'FFLAGS = -c ${OPT} -I$(INSTALL_DIR)/include' +======= + write(iout,*)'INSTALL_DIR = /users/software/mpich-1.2.7p1_int...' + write(iout,*)'FC= ifort' + write(iout,*)'OPT = -g -ip -w -CB ' + write(iout,*)'FFLAGS = -c ${OPT} -I$(INSTALL_DIR)/include ' +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 write(iout,*)'FFLAGS1 = -c -w -g -d2 -CA -CB -I$(INSTALL_DIR)...' write(iout,*)'FFLAGS2 = -c -w -g -O0 -I$(INSTALL_DIR)/include' write(iout,*)'FFLAGSE = -c -w -O3 -ipo -ipo_obj -opt_report ...' diff --git a/source/unres/src_MD/compinfo.c b/source/unres/src_MD/compinfo.c index 7e2b9cf..e28f686 100644 --- a/source/unres/src_MD/compinfo.c +++ b/source/unres/src_MD/compinfo.c @@ -14,10 +14,10 @@ time_t Tp; in=fopen("cinfo.f","r"); out=fopen("cinfo.f.new","w"); -fgets(buf,498,in); -fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); -fgets(buf,498,in); -sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); +if (fgets(buf,498,in) != NULL) + fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); +if (fgets(buf,498,in) != NULL) + sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); iv3++; fprintf(out,"C %d %d %d\n",iv1,iv2,iv3); fprintf(out," subroutine cinfo\n"); @@ -26,10 +26,10 @@ fprintf(out," write(iout,*)'++++ Compile info ++++'\n"); fprintf(out," write(iout,*)'Version %d.%-d build %d'\n",iv1,iv2,iv3); uname(&Name); time(&Tp); -system("rm tmptmp; whoami > tmptmp"); +system("whoami > tmptmp"); in1=fopen("tmptmp","r"); -fscanf(in1,"%s",buf1); -fclose(in1); +if (fscanf(in1,"%s",buf1) != EOF) +{ p1=ctime(&Tp); p1[strlen(p1)-1]='\0'; fprintf(out," write(iout,*)'compiled %s'\n",p1); @@ -39,6 +39,9 @@ fprintf(out," write(iout,*)'OS release: %s '\n",Name.release); fprintf(out," write(iout,*)'OS version:',\n"); fprintf(out," & ' %s '\n",Name.version); fprintf(out," write(iout,*)'flags:'\n"); +} +system("rm tmptmp"); +fclose(in1); in1=fopen("Makefile","r"); while(fgets(buf,498,in1) != NULL) { @@ -56,8 +59,8 @@ while(fgets(buf,498,in1) != NULL) { strcat(buf,"\\"); fprintf(out," write(iout,*)'%s'\n",buf); - fgets(buf,498,in1); - buf[strlen(buf)-1]='\0'; + if (fgets(buf,498,in1) != NULL) + buf[strlen(buf)-1]='\0'; if(strlen(buf) > 49) { buf[47]='\0'; diff --git a/source/unres/src_MD/dihed_cons.F b/source/unres/src_MD/dihed_cons.F index 1fb6c53..e45405f 100644 --- a/source/unres/src_MD/dihed_cons.F +++ b/source/unres/src_MD/dihed_cons.F @@ -23,7 +23,7 @@ cdr call getenv_loc('SECPREDFIL',secpred) #elif (defined G77) open(isecpred,file=secpred,status='old') #else - open(isecpred,file=secpred,status='old',readonly) + open(isecpred,file=secpred,status='old',action='read') #endif C read secondary structure prediction from JPRED here! ! read(isecpred,'(A80)',err=100,end=100) line diff --git a/source/unres/src_MD/energy_p_new_barrier.F b/source/unres/src_MD/energy_p_new_barrier.F index 3feefaa..9edadf8 100644 --- a/source/unres/src_MD/energy_p_new_barrier.F +++ b/source/unres/src_MD/energy_p_new_barrier.F @@ -471,7 +471,7 @@ cMS$ATTRIBUTES C :: proc_proc include 'mpif.h' #endif double precision gradbufc(3,maxres),gradbufx(3,maxres), - & glocbuf(4*maxres),gradbufc_sum(3,maxres) + & glocbuf(4*maxres),gradbufc_sum(3,maxres),gloc_scbuf(3,maxres) include 'COMMON.SETUP' include 'COMMON.IOUNITS' include 'COMMON.FFIELD' @@ -483,6 +483,7 @@ cMS$ATTRIBUTES C :: proc_proc include 'COMMON.CONTROL' include 'COMMON.TIME1' include 'COMMON.MAXGRAD' + include 'COMMON.SCCOR' #ifdef TIMING #ifdef MPI time01=MPI_Wtime() @@ -755,7 +756,6 @@ c enddo & +wturn3*gel_loc_turn3(i) & +wturn6*gel_loc_turn6(i) & +wel_loc*gel_loc_loc(i) - & +wsccor*gsccor_loc(i) enddo #ifdef DEBUG write (iout,*) "gloc after adding corr" @@ -774,6 +774,21 @@ c enddo do i=1,4*nres glocbuf(i)=gloc(i,icg) enddo +#define DEBUG +#ifdef DEBUG + write (iout,*) "gloc_sc before reduce" + do i=1,nres + do j=1,3 + write (iout,*) i,j,gloc_sc(j,i,icg) + enddo + enddo +#endif +#undef DEBUG + do i=1,nres + do j=1,3 + gloc_scbuf(j,i)=gloc_sc(j,i,icg) + enddo + enddo time00=MPI_Wtime() call MPI_Barrier(FG_COMM,IERR) time_barrier_g=time_barrier_g+MPI_Wtime()-time00 @@ -784,7 +799,19 @@ c enddo & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) call MPI_Reduce(glocbuf(1),gloc(1,icg),4*nres, & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) + call MPI_Reduce(gloc_scbuf(1,1),gloc_sc(1,1,icg),3*nres, + & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) time_reduce=time_reduce+MPI_Wtime()-time00 +#define DEBUG +#ifdef DEBUG + write (iout,*) "gloc_sc after reduce" + do i=1,nres + do j=1,3 + write (iout,*) i,j,gloc_sc(j,i,icg) + enddo + enddo +#endif +#undef DEBUG #ifdef DEBUG write (iout,*) "gloc after reduce" do i=1,4*nres @@ -5691,7 +5718,7 @@ C Proline-Proline pair is a special case... & restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1, & (v1(j,itori,itori1),j=1,6),(v2(j,itori,itori1),j=1,6) gloc(i-3,icg)=gloc(i-3,icg)+wtor*gloci -c write (iout,*) 'i=',i,' gloc=',gloc(i-3,icg) + write (iout,*) 'i=',i,' gloc=',gloc(i-3,icg) enddo ! 6/20/98 - dihedral angle constraints edihcnstr=0.0d0 @@ -5806,6 +5833,7 @@ c do i=1,ndih_constr else difi=0.0 endif +c write (iout,*) "gloci", gloc(i-3,icg) cd write (iout,'(2i5,4f8.3,2e14.5)') i,itori,rad2deg*phii, cd & rad2deg*phi0(i), rad2deg*drange(i), cd & rad2deg*difi,0.25d0*ftors*difi**4,gloc(itori-3,icg) @@ -5842,7 +5870,6 @@ c lprn=.true. phii1=phi(i+1) gloci1=0.0D0 gloci2=0.0D0 -C Regular cosine and sine terms do j=1,ntermd_1(itori,itori1,itori2) v1cij=v1c(1,j,itori,itori1,itori2) v1sij=v1s(1,j,itori,itori1,itori2) @@ -5877,6 +5904,7 @@ C Regular cosine and sine terms enddo gloc(i-3,icg)=gloc(i-3,icg)+wtor_d*gloci1 gloc(i-2,icg)=gloc(i-2,icg)+wtor_d*gloci2 +c write (iout,*) "gloci", gloc(i-3,icg) enddo return end @@ -5909,26 +5937,57 @@ C Set lprn=.true. for debugging c lprn=.true. c write (iout,*) "EBACK_SC_COR",iphi_start,iphi_end,nterm_sccor esccor=0.0D0 - do i=iphi_start,iphi_end + do i=itau_start,itau_end esccor_ii=0.0D0 - itori=itype(i-2) - itori1=itype(i-1) + isccori=isccortyp(itype(i-2)) + isccori1=isccortyp(itype(i-1)) phii=phi(i) +cccc Added 9 May 2012 +cc Tauangle is torsional engle depending on the value of first digit +c(see comment below) +cc Omicron is flat angle depending on the value of first digit +c(see comment below) + + + do intertyp=1,3 !intertyp +cc Added 09 May 2012 (Adasko) +cc Intertyp means interaction type of backbone mainchain correlation: +c 1 = SC...Ca...Ca...Ca +c 2 = Ca...Ca...Ca...SC +c 3 = SC...Ca...Ca...SCi gloci=0.0D0 - do j=1,nterm_sccor - v1ij=v1sccor(j,itori,itori1) - v2ij=v2sccor(j,itori,itori1) - cosphi=dcos(j*phii) - sinphi=dsin(j*phii) + if (((intertyp.eq.3).and.((itype(i-2).eq.10).or. + & (itype(i-1).eq.10).or.(itype(i-2).eq.21).or. + & (itype(i-1).eq.21))) + & .or. ((intertyp.eq.1).and.((itype(i-2).eq.10) + & .or.(itype(i-2).eq.21))) + & .or.((intertyp.eq.2).and.((itype(i-1).eq.10).or. + & (itype(i-1).eq.21)))) cycle + if ((intertyp.eq.2).and.(i.eq.4).and.(itype(1).eq.21)) cycle + if ((intertyp.eq.1).and.(i.eq.nres).and.(itype(nres).eq.21)) + & cycle + do j=1,nterm_sccor(isccori,isccori1) + v1ij=v1sccor(j,intertyp,isccori,isccori1) + v2ij=v2sccor(j,intertyp,isccori,isccori1) + cosphi=dcos(j*tauangle(intertyp,i)) + sinphi=dsin(j*tauangle(intertyp,i)) esccor=esccor+v1ij*cosphi+v2ij*sinphi gloci=gloci+j*(v2ij*cosphi-v1ij*sinphi) enddo + gloc_sc(intertyp,i-3,icg)=gloc_sc(intertyp,i-3,icg)+wsccor*gloci +c write (iout,*) "WTF",intertyp,i,itype(i),v1ij*cosphi+v2ij*sinphi +c &gloc_sc(intertyp,i-3,icg) if (lprn) & write (iout,'(2(a3,2x,i3,2x),2i3,6f8.3/26x,6f8.3/)') & restyp(itype(i-2)),i-2,restyp(itype(i-1)),i-1,itori,itori1, - & (v1sccor(j,itori,itori1),j=1,6),(v2sccor(j,itori,itori1),j=1,6) + & (v1sccor(j,intertyp,itori,itori1),j=1,6) + & ,(v2sccor(j,intertyp,itori,itori1),j=1,6) gsccor_loc(i-3)=gsccor_loc(i-3)+gloci + enddo !intertyp enddo +c do i=1,nres +c write (iout,*) "W@T@F", gloc_sc(1,i,icg),gloc(i,icg) +c enddo return end c---------------------------------------------------------------------------- @@ -8035,9 +8094,9 @@ C C Parallel Antiparallel C C o o -C /l\ /j\ -C / \ / \ -C /| o | | o |\ +C /l\ /j\ +C / \ / \ +C /| o | | o |\ C \ j|/k\| / \ |/k\|l / C \ / \ / \ / \ / C o o o o @@ -8136,18 +8195,18 @@ c---------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C \ /l\ /j\ / -C \ / \ / \ / -C o| o | | o |o -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C \ /l\ /j\ / C +C \ / \ / \ / C +C o| o | | o |o C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l C AL 7/4/01 s1 would occur in the sixth-order moment, @@ -8318,18 +8377,18 @@ c---------------------------------------------------------------------------- double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C j|/k\| / |/k\|l / -C / \ / / \ / -C / o / o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C j|/k\| / |/k\|l / C +C / \ / / \ / C +C / o / o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective @@ -8435,18 +8494,18 @@ c---------------------------------------------------------------------------- & auxvec1(2),auxmat1(2,2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o \ o \ -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o \ o \ C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective diff --git a/source/unres/src_MD/gradient_p.F b/source/unres/src_MD/gradient_p.F index 375fcf4..7fec1e8 100644 --- a/source/unres/src_MD/gradient_p.F +++ b/source/unres/src_MD/gradient_p.F @@ -8,6 +8,7 @@ include 'COMMON.FFIELD' include 'COMMON.MD' include 'COMMON.IOUNITS' + include 'COMMON.SCCOR' external ufparm integer uiparm(1) double precision urparm(1) @@ -263,10 +264,15 @@ C------------------------------------------------------------------------- include 'COMMON.MD' include 'COMMON.IOUNITS' include 'COMMON.TIME1' + include 'COMMON.SCCOR' c c This subrouting calculates total Cartesian coordinate gradient. c The subroutine chainbuild_cart and energy MUST be called beforehand. c +c do i=1,nres +c write (iout,*) "przed sum_grad", gloc_sc(1,i,icg),gloc(i,icg) +c enddo + #ifdef TIMING time00=MPI_Wtime() #endif @@ -274,6 +280,9 @@ c call sum_gradient #ifdef TIMING #endif +c do i=1,nres +c write (iout,*) "checkgrad", gloc_sc(1,i,icg),gloc(i,icg) +c enddo cd write (iout,*) "After sum_gradient" cd do i=1,nres-1 cd write (iout,*) i," gradc ",(gradc(j,i,icg),j=1,3) @@ -337,6 +346,7 @@ C------------------------------------------------------------------------- include 'COMMON.CHAIN' include 'COMMON.VAR' include 'COMMON.MD' + include 'COMMON.SCCOR' C C Initialize Cartesian-coordinate gradient C @@ -374,6 +384,9 @@ C gradx(j,i,icg)=0.0d0 gscloc(j,i)=0.0d0 gsclocx(j,i)=0.0d0 + do intertyp=1,3 + gloc_sc(intertyp,i,icg)=0.0d0 + enddo enddo enddo C diff --git a/source/unres/src_MD/initialize_p.F b/source/unres/src_MD/initialize_p.F index 75c98de..7db117d 100644 --- a/source/unres/src_MD/initialize_p.F +++ b/source/unres/src_MD/initialize_p.F @@ -564,6 +564,9 @@ C Partition local interactions iphi_end=iturn3_end+2 iturn3_start=iturn3_start-1 iturn3_end=iturn3_end-1 + call int_bounds(nres-3,itau_start,itau_end) + itau_start=itau_start+3 + itau_end=itau_end+3 call int_bounds(nres-3,iphi1_start,iphi1_end) iphi1_start=iphi1_start+3 iphi1_end=iphi1_end+3 @@ -1090,6 +1093,8 @@ c write (iout,*) "MPI_ROTAT2",MPI_ROTAT2 idihconstr_end=ndih_constr iphid_start=iphi_start iphid_end=iphi_end-1 + itau_start=4 + itau_end=nres ibond_start=2 ibond_end=nres-1 ibondp_start=nnt+1 diff --git a/source/unres/src_MD/int_to_cart.f b/source/unres/src_MD/int_to_cart.f index 0528af7..73e8384 100644 --- a/source/unres/src_MD/int_to_cart.f +++ b/source/unres/src_MD/int_to_cart.f @@ -13,9 +13,15 @@ c------------------------------------------------------------- include 'COMMON.INTERACT' include 'COMMON.MD' include 'COMMON.IOUNITS' - + include 'COMMON.SCCOR' c calculating dE/ddc1 - if (nres.lt.3) return + if (nres.lt.3) goto 18 +c do i=1,nres +c c do intertyp=1,3 +c write (iout,*) "przed tosyjnymi",i,intertyp,gcart(intertyp,i) +c &,gloc_sc(1,i,icg),gloc(i,icg) +c enddo +c enddo do j=1,3 gcart(j,1)=gcart(j,1)+gloc(1,icg)*dphi(j,1,4) & +gloc(nres-2,icg)*dtheta(j,1,3) @@ -113,6 +119,159 @@ c The side-chain vector derivatives enddo endif enddo +c---------------------------------------------------------------------- +C INTERTYP=1 SC...Ca...Ca...Ca +C INTERTYP=2 Ca...Ca...Ca...SC +C INTERTYP=3 SC...Ca...Ca...SC +c calculating dE/ddc1 + 18 continue +c do i=1,nres +c gloc(i,icg)=0.0D0 +c write (iout,*) "poczotkoawy",i,gloc_sc(1,i,icg) +c enddo + if (nres.lt.2) return + if ((nres.lt.3).and.(itype(1).eq.10)) return + if ((itype(1).ne.10).and.(itype(1).ne.21)) then + do j=1,3 +cc Derviative was calculated for oposite vector of side chain therefore +c there is "-" sign before gloc_sc + gxcart(j,1)=gxcart(j,1)-gloc_sc(1,0,icg)* + & dtauangle(j,1,1,3) + gcart(j,1)=gcart(j,1)+gloc_sc(1,0,icg)* + & dtauangle(j,1,2,3) + if ((itype(2).ne.10).and.(itype(2).ne.21)) then + gxcart(j,1)= gxcart(j,1) + & -gloc_sc(3,0,icg)*dtauangle(j,3,1,3) + gcart(j,1)=gcart(j,1)+gloc_sc(3,0,icg)* + & dtauangle(j,3,2,3) + endif + enddo + endif + if ((nres.ge.3).and.(itype(3).ne.10).and.(itype(3).ne.21)) + & then + do j=1,3 + gcart(j,1)=gcart(j,1)+gloc_sc(2,1,icg)*dtauangle(j,2,1,4) + enddo + endif +c As potetnial DO NOT depend on omicron anlge their derivative is +c ommited +c & +gloc_sc(intertyp,nres-2,icg)*dtheta(j,1,3) + +c Calculating the remainder of dE/ddc2 + do j=1,3 + if((itype(2).ne.10).and.(itype(2).ne.21)) then + if (itype(1).ne.10) gxcart(j,2)=gxcart(j,2)+ + & gloc_sc(3,0,icg)*dtauangle(j,3,3,3) + if ((itype(3).ne.10).and.(nres.ge.3).and.(itype(3).ne.21)) then + gxcart(j,2)=gxcart(j,2)-gloc_sc(3,1,icg)*dtauangle(j,3,1,4) +cc the - above is due to different vector direction + gcart(j,2)=gcart(j,2)+gloc_sc(3,1,icg)*dtauangle(j,3,2,4) + endif + if (nres.gt.3) then + gxcart(j,2)=gxcart(j,2)-gloc_sc(1,1,icg)*dtauangle(j,1,1,4) +cc the - above is due to different vector direction + gcart(j,2)=gcart(j,2)+gloc_sc(1,1,icg)*dtauangle(j,1,2,4) +c write(iout,*) gloc_sc(1,1,icg),dtauangle(j,1,2,4),"gcart" +c write(iout,*) gloc_sc(1,1,icg),dtauangle(j,1,1,4),"gx" + endif + endif + if ((itype(1).ne.10).and.(itype(1).ne.21)) then + gcart(j,2)=gcart(j,2)+gloc_sc(1,0,icg)*dtauangle(j,1,3,3) +c write(iout,*) gloc_sc(1,0,icg),dtauangle(j,1,3,3) + endif + if ((itype(3).ne.10).and.(nres.ge.3)) then + gcart(j,2)=gcart(j,2)+gloc_sc(2,1,icg)*dtauangle(j,2,2,4) +c write(iout,*) gloc_sc(2,1,icg),dtauangle(j,2,2,4) + endif + if ((itype(4).ne.10).and.(nres.ge.4)) then + gcart(j,2)=gcart(j,2)+gloc_sc(2,2,icg)*dtauangle(j,2,1,5) +c write(iout,*) gloc_sc(2,2,icg),dtauangle(j,2,1,5) + endif + +c write(iout,*) gcart(j,2),itype(2),itype(1),itype(3), "gcart2" + enddo +c If there are more than five residues + if(nres.ge.5) then + do i=3,nres-2 + do j=1,3 +c write(iout,*) "before", gcart(j,i) + if (itype(i).ne.10) then + gxcart(j,i)=gxcart(j,i)+gloc_sc(2,i-2,icg) + & *dtauangle(j,2,3,i+1) + & -gloc_sc(1,i-1,icg)*dtauangle(j,1,1,i+2) + gcart(j,i)=gcart(j,i)+gloc_sc(1,i-1,icg) + & *dtauangle(j,1,2,i+2) +c write(iout,*) "new",j,i, +c & gcart(j,i),gloc_sc(1,i-1,icg),dtauangle(j,1,2,i+2) + + if (itype(i-1).ne.10) then + gxcart(j,i)=gxcart(j,i)+gloc_sc(3,i-2,icg) + &*dtauangle(j,3,3,i+1) + endif + if (itype(i+1).ne.10) then + gxcart(j,i)=gxcart(j,i)-gloc_sc(3,i-1,icg) + &*dtauangle(j,3,1,i+2) + gcart(j,i)=gcart(j,i)+gloc_sc(3,i-1,icg) + &*dtauangle(j,3,2,i+2) + endif + endif + if (itype(i-1).ne.10) then + gcart(j,i)=gcart(j,i)+gloc_sc(1,i-2,icg)* + & dtauangle(j,1,3,i+1) + endif + if (itype(i+1).ne.10) then + gcart(j,i)=gcart(j,i)+gloc_sc(2,i-1,icg)* + & dtauangle(j,2,2,i+2) +c write(iout,*) "numer",i,gloc_sc(2,i-1,icg), +c & dtauangle(j,2,2,i+2) + endif + if (itype(i+2).ne.10) then + gcart(j,i)=gcart(j,i)+gloc_sc(2,i,icg)* + & dtauangle(j,2,1,i+3) + endif + enddo + enddo + endif +c Setting dE/ddnres-1 + if(nres.ge.4) then + do j=1,3 + if ((itype(nres-1).ne.10).and.(itype(nres-1).ne.21)) then + gxcart(j,nres-1)=gxcart(j,nres-1)+gloc_sc(2,nres-3,icg) + & *dtauangle(j,2,3,nres) +c write (iout,*) "gxcart(nres-1)", gloc_sc(2,nres-3,icg), +c & dtauangle(j,2,3,nres), gxcart(j,nres-1) + if (itype(nres-2).ne.10) then + gxcart(j,nres-1)=gxcart(j,nres-1)+gloc_sc(3,nres-3,icg) + & *dtauangle(j,3,3,nres) + endif + if ((itype(nres).ne.10).and.(itype(nres).ne.21)) then + gxcart(j,nres-1)=gxcart(j,nres-1)-gloc_sc(3,nres-2,icg) + & *dtauangle(j,3,1,nres+1) + gcart(j,nres-1)=gcart(j,nres-1)+gloc_sc(3,nres-2,icg) + & *dtauangle(j,3,2,nres+1) + endif + endif + if ((itype(nres-2).ne.10).and.(itype(nres-2).ne.21)) then + gcart(j,nres-1)=gcart(j,nres-1)+gloc_sc(1,nres-3,icg)* + & dtauangle(j,1,3,nres) + endif + if ((itype(nres).ne.10).and.(itype(nres).ne.21)) then + gcart(j,nres-1)=gcart(j,nres-1)+gloc_sc(2,nres-2,icg)* + & dtauangle(j,2,2,nres+1) +c write (iout,*) "gcart(nres-1)", gloc_sc(2,nres-2,icg), +c & dtauangle(j,2,2,nres+1), itype(nres-1),itype(nres) + endif + enddo + endif +c Settind dE/ddnres + if ((nres.ge.3).and.(itype(nres).ne.10))then + do j=1,3 + gxcart(j,nres)=gxcart(j,nres)+gloc_sc(3,nres-2,icg) + & *dtauangle(j,3,3,nres+1)+gloc_sc(2,nres-2,icg) + & *dtauangle(j,2,3,nres+1) + enddo + endif +c The side-chain vector derivatives return end diff --git a/source/unres/src_MD/intcartderiv.F b/source/unres/src_MD/intcartderiv.F index 5fea875..c220540 100644 --- a/source/unres/src_MD/intcartderiv.F +++ b/source/unres/src_MD/intcartderiv.F @@ -12,6 +12,7 @@ include 'COMMON.DERIV' include 'COMMON.IOUNITS' include 'COMMON.LOCAL' + include 'COMMON.SCCOR' double precision dcostheta(3,2,maxres), & dcosphi(3,3,maxres),dsinphi(3,3,maxres), & dcosalpha(3,3,maxres),dcosomega(3,3,maxres), @@ -44,6 +45,44 @@ c We need dtheta(:,:,i-1) to compute dphi(:,:,i) dtheta(j,2,i)=-1/sint*dcostheta(j,2,i) enddo enddo + +#if defined(MPI) && defined(PARINTDER) +c We need dtheta(:,:,i-1) to compute dphi(:,:,i) + do i=max0(ithet_start-1,3),ithet_end +#else + do i=3,nres +#endif + if ((itype(i-1).ne.10).and.(itype(i-1).ne.21)) then + cost1=dcos(omicron(1,i)) + sint1=sqrt(1-cost1*cost1) + cost2=dcos(omicron(2,i)) + sint2=sqrt(1-cost2*cost2) + do j=1,3 +CC Calculate derivative over first omicron (Cai-2,Cai-1,SCi-1) + dcosomicron(j,1,1,i)=-(dc_norm(j,i-1+nres)+ + & cost1*dc_norm(j,i-2))/ + & vbld(i-1) + domicron(j,1,1,i)=-1/sint1*dcosomicron(j,1,1,i) + dcosomicron(j,1,2,i)=-(dc_norm(j,i-2) + & +cost1*(dc_norm(j,i-1+nres)))/ + & vbld(i-1+nres) + domicron(j,1,2,i)=-1/sint1*dcosomicron(j,1,2,i) +CC Calculate derivative over second omicron Sci-1,Cai-1 Cai +CC Looks messy but better than if in loop + dcosomicron(j,2,1,i)=-(-dc_norm(j,i-1+nres) + & +cost2*dc_norm(j,i-1))/ + & vbld(i) + domicron(j,2,1,i)=-1/sint2*dcosomicron(j,2,1,i) + dcosomicron(j,2,2,i)=-(dc_norm(j,i-1) + & +cost2*(-dc_norm(j,i-1+nres)))/ + & vbld(i-1+nres) +c write(iout,*) "vbld", i,itype(i),vbld(i-1+nres) + domicron(j,2,2,i)=-1/sint2*dcosomicron(j,2,2,i) + enddo + endif + enddo + + c Derivatives of phi: c If phi is 0 or 180 degrees, then the formulas @@ -109,6 +148,226 @@ c Obtaining the gamma derivatives from cosine derivative enddo endif enddo + +Calculate derivative of Tauangle +#ifdef PARINTDER + do i=itau_start,itau_end +#else + do i=3,nres +#endif + if ((itype(i-2).eq.21).or.(itype(i-2).eq.10)) cycle +cc dtauangle(j,intertyp,dervityp,residue number) +cc INTERTYP=1 SC...Ca...Ca..Ca +c the conventional case + sint=dsin(theta(i)) + sint1=dsin(omicron(2,i-1)) + sing=dsin(tauangle(1,i)) + cost=dcos(theta(i)) + cost1=dcos(omicron(2,i-1)) + cosg=dcos(tauangle(1,i)) + do j=1,3 + dc_norm2(j,i-2+nres)=-dc_norm(j,i-2+nres) +cc write(iout,*) dc_norm2(j,i-2+nres),"dcnorm" + enddo + scalp=scalar(dc_norm2(1,i-2+nres),dc_norm(1,i-1)) + fac0=1.0d0/(sint1*sint) + fac1=cost*fac0 + fac2=cost1*fac0 + fac3=cosg*cost1/(sint1*sint1) + fac4=cosg*cost/(sint*sint) +cc write(iout,*) "faki",fac0,fac1,fac2,fac3,fac4 +c Obtaining the gamma derivatives from sine derivative + if (tauangle(1,i).gt.-pi4.and.tauangle(1,i).le.pi4.or. + & tauangle(1,i).gt.pi34.and.tauangle(1,i).le.pi.or. + & tauangle(1,i).gt.-pi.and.tauangle(1,i).le.-pi34) then + call vecpr(dc_norm(1,i-1),dc_norm(1,i-2),vp1) + call vecpr(dc_norm2(1,i-2+nres),dc_norm(1,i-1),vp2) + call vecpr(dc_norm2(1,i-2+nres),dc_norm(1,i-2),vp3) + do j=1,3 + ctgt=cost/sint + ctgt1=cost1/sint1 + cosg_inv=1.0d0/cosg + dsintau(j,1,1,i)=-sing*ctgt1*domicron(j,2,2,i-1) + &-(fac0*vp1(j)+sing*(dc_norm2(j,i-2+nres))) + & *vbld_inv(i-2+nres) + dtauangle(j,1,1,i)=cosg_inv*dsintau(j,1,1,i) + dsintau(j,1,2,i)= + & -sing*(ctgt1*domicron(j,2,1,i-1)+ctgt*dtheta(j,1,i)) + & -(fac0*vp2(j)+sing*dc_norm(j,i-2))*vbld_inv(i-1) +c write(iout,*) "dsintau", dsintau(j,1,2,i) + dtauangle(j,1,2,i)=cosg_inv*dsintau(j,1,2,i) +c Bug fixed 3/24/05 (AL) + dsintau(j,1,3,i)=-sing*ctgt*dtheta(j,2,i) + & +(fac0*vp3(j)-sing*dc_norm(j,i-1))*vbld_inv(i) +c & +(fac0*vp3(j)-sing*dc_norm(j,i-1))*vbld_inv(i-1) + dtauangle(j,1,3,i)=cosg_inv*dsintau(j,1,3,i) + enddo +c Obtaining the gamma derivatives from cosine derivative + else + do j=1,3 + dcostau(j,1,1,i)=fac1*dcosomicron(j,2,2,i-1)+fac3* + & dcosomicron(j,2,2,i-1)-fac0*(dc_norm(j,i-1)-scalp* + & (dc_norm2(j,i-2+nres)))/vbld(i-2+nres) + dtauangle(j,1,1,i)=-1/sing*dcostau(j,1,1,i) + dcostau(j,1,2,i)=fac1*dcosomicron(j,2,1,i-1)+fac2* + & dcostheta(j,1,i)+fac3*dcosomicron(j,2,1,i-1)+fac4* + & dcostheta(j,1,i) + dtauangle(j,1,2,i)=-1/sing*dcostau(j,1,2,i) + dcostau(j,1,3,i)=fac2*dcostheta(j,2,i)+fac4* + & dcostheta(j,2,i)-fac0*(-dc_norm(j,i-2+nres)-scalp* + & dc_norm(j,i-1))/vbld(i) + dtauangle(j,1,3,i)=-1/sing*dcostau(j,1,3,i) +c write (iout,*) "else",i + enddo + endif +c do k=1,3 +c write(iout,*) "tu",i,k,(dtauangle(j,1,k,i),j=1,3) +c enddo + enddo +CC Second case Ca...Ca...Ca...SC +#ifdef PARINTDER + do i=itau_start,itau_end +#else + do i=4,nres +#endif + if ((itype(i-1).eq.21).or.(itype(i-1).eq.10)) cycle +c the conventional case + sint=dsin(omicron(1,i)) + sint1=dsin(theta(i-1)) + sing=dsin(tauangle(2,i)) + cost=dcos(omicron(1,i)) + cost1=dcos(theta(i-1)) + cosg=dcos(tauangle(2,i)) +c do j=1,3 +c dc_norm2(j,i-1+nres)=-dc_norm(j,i-1+nres) +c enddo + scalp=scalar(dc_norm(1,i-3),dc_norm(1,i-1+nres)) + fac0=1.0d0/(sint1*sint) + fac1=cost*fac0 + fac2=cost1*fac0 + fac3=cosg*cost1/(sint1*sint1) + fac4=cosg*cost/(sint*sint) +c Obtaining the gamma derivatives from sine derivative + if (tauangle(2,i).gt.-pi4.and.tauangle(2,i).le.pi4.or. + & tauangle(2,i).gt.pi34.and.tauangle(2,i).le.pi.or. + & tauangle(2,i).gt.-pi.and.tauangle(2,i).le.-pi34) then + call vecpr(dc_norm2(1,i-1+nres),dc_norm(1,i-2),vp1) + call vecpr(dc_norm(1,i-3),dc_norm(1,i-1+nres),vp2) + call vecpr(dc_norm(1,i-3),dc_norm(1,i-2),vp3) + do j=1,3 + ctgt=cost/sint + ctgt1=cost1/sint1 + cosg_inv=1.0d0/cosg + dsintau(j,2,1,i)=-sing*ctgt1*dtheta(j,1,i-1) + & +(fac0*vp1(j)-sing*dc_norm(j,i-3))*vbld_inv(i-2) +c write(iout,*) i,j,dsintau(j,2,1,i),sing*ctgt1*dtheta(j,1,i-1), +c &fac0*vp1(j),sing*dc_norm(j,i-3),vbld_inv(i-2),"dsintau(2,1)" + dtauangle(j,2,1,i)=cosg_inv*dsintau(j,2,1,i) + dsintau(j,2,2,i)= + & -sing*(ctgt1*dtheta(j,2,i-1)+ctgt*domicron(j,1,1,i)) + & -(fac0*vp2(j)+sing*dc_norm(j,i-2))*vbld_inv(i-1) +c write(iout,*) "sprawdzenie",i,j,sing*ctgt1*dtheta(j,2,i-1), +c & sing*ctgt*domicron(j,1,2,i), +c & (fac0*vp2(j)+sing*dc_norm(j,i-2))*vbld_inv(i-1) + dtauangle(j,2,2,i)=cosg_inv*dsintau(j,2,2,i) +c Bug fixed 3/24/05 (AL) + dsintau(j,2,3,i)=-sing*ctgt*domicron(j,1,2,i) + & +(fac0*vp3(j)-sing*dc_norm(j,i-1+nres))*vbld_inv(i-1+nres) +c & +(fac0*vp3(j)-sing*dc_norm(j,i-1))*vbld_inv(i-1) + dtauangle(j,2,3,i)=cosg_inv*dsintau(j,2,3,i) + enddo +c Obtaining the gamma derivatives from cosine derivative + else + do j=1,3 + dcostau(j,2,1,i)=fac1*dcostheta(j,1,i-1)+fac3* + & dcostheta(j,1,i-1)-fac0*(dc_norm(j,i-1+nres)-scalp* + & dc_norm(j,i-3))/vbld(i-2) + dtauangle(j,2,1,i)=-1/sing*dcostau(j,2,1,i) + dcostau(j,2,2,i)=fac1*dcostheta(j,2,i-1)+fac2* + & dcosomicron(j,1,1,i)+fac3*dcostheta(j,2,i-1)+fac4* + & dcosomicron(j,1,1,i) + dtauangle(j,2,2,i)=-1/sing*dcostau(j,2,2,i) + dcostau(j,2,3,i)=fac2*dcosomicron(j,1,2,i)+fac4* + & dcosomicron(j,1,2,i)-fac0*(dc_norm(j,i-3)-scalp* + & dc_norm(j,i-1+nres))/vbld(i-1+nres) + dtauangle(j,2,3,i)=-1/sing*dcostau(j,2,3,i) +c write(iout,*) i,j,"else", dtauangle(j,2,3,i) + enddo + endif + enddo + + +CCC third case SC...Ca...Ca...SC +#ifdef PARINTDER + + do i=itau_start,itau_end +#else + do i=3,nres +#endif +c the conventional case + if ((itype(i-1).eq.21).or.(itype(i-1).eq.10).or. + &(itype(i-2).eq.21).or.(itype(i-2).eq.10)) cycle + sint=dsin(omicron(1,i)) + sint1=dsin(omicron(2,i-1)) + sing=dsin(tauangle(3,i)) + cost=dcos(omicron(1,i)) + cost1=dcos(omicron(2,i-1)) + cosg=dcos(tauangle(3,i)) + do j=1,3 + dc_norm2(j,i-2+nres)=-dc_norm(j,i-2+nres) +c dc_norm2(j,i-1+nres)=-dc_norm(j,i-1+nres) + enddo + scalp=scalar(dc_norm2(1,i-2+nres),dc_norm(1,i-1+nres)) + fac0=1.0d0/(sint1*sint) + fac1=cost*fac0 + fac2=cost1*fac0 + fac3=cosg*cost1/(sint1*sint1) + fac4=cosg*cost/(sint*sint) +c Obtaining the gamma derivatives from sine derivative + if (tauangle(3,i).gt.-pi4.and.tauangle(3,i).le.pi4.or. + & tauangle(3,i).gt.pi34.and.tauangle(3,i).le.pi.or. + & tauangle(3,i).gt.-pi.and.tauangle(3,i).le.-pi34) then + call vecpr(dc_norm(1,i-1+nres),dc_norm(1,i-2),vp1) + call vecpr(dc_norm2(1,i-2+nres),dc_norm(1,i-1+nres),vp2) + call vecpr(dc_norm2(1,i-2+nres),dc_norm(1,i-2),vp3) + do j=1,3 + ctgt=cost/sint + ctgt1=cost1/sint1 + cosg_inv=1.0d0/cosg + dsintau(j,3,1,i)=-sing*ctgt1*domicron(j,2,2,i-1) + & -(fac0*vp1(j)-sing*dc_norm(j,i-2+nres)) + & *vbld_inv(i-2+nres) + dtauangle(j,3,1,i)=cosg_inv*dsintau(j,3,1,i) + dsintau(j,3,2,i)= + & -sing*(ctgt1*domicron(j,2,1,i-1)+ctgt*domicron(j,1,1,i)) + & -(fac0*vp2(j)+sing*dc_norm(j,i-2))*vbld_inv(i-1) + dtauangle(j,3,2,i)=cosg_inv*dsintau(j,3,2,i) +c Bug fixed 3/24/05 (AL) + dsintau(j,3,3,i)=-sing*ctgt*domicron(j,1,2,i) + & +(fac0*vp3(j)-sing*dc_norm(j,i-1+nres)) + & *vbld_inv(i-1+nres) +c & +(fac0*vp3(j)-sing*dc_norm(j,i-1))*vbld_inv(i-1) + dtauangle(j,3,3,i)=cosg_inv*dsintau(j,3,3,i) + enddo +c Obtaining the gamma derivatives from cosine derivative + else + do j=1,3 + dcostau(j,3,1,i)=fac1*dcosomicron(j,2,2,i-1)+fac3* + & dcosomicron(j,2,2,i-1)-fac0*(dc_norm(j,i-1+nres)-scalp* + & dc_norm2(j,i-2+nres))/vbld(i-2+nres) + dtauangle(j,3,1,i)=-1/sing*dcostau(j,3,1,i) + dcostau(j,3,2,i)=fac1*dcosomicron(j,2,1,i-1)+fac2* + & dcosomicron(j,1,1,i)+fac3*dcosomicron(j,2,1,i-1)+fac4* + & dcosomicron(j,1,1,i) + dtauangle(j,3,2,i)=-1/sing*dcostau(j,3,2,i) + dcostau(j,3,3,i)=fac2*dcosomicron(j,1,2,i)+fac4* + & dcosomicron(j,1,2,i)-fac0*(dc_norm2(j,i-2+nres)-scalp* + & dc_norm(j,i-1+nres))/vbld(i-1+nres) + dtauangle(j,3,3,i)=-1/sing*dcostau(j,3,3,i) +c write(iout,*) "else",i + enddo + endif + enddo #ifdef CRYST_SC c Derivatives of side-chain angles alpha and omega #if defined(MPI) && defined(PARINTDER) @@ -199,12 +458,12 @@ c obtaining the derivatives of omega from cosines #if defined(MPI) && defined(PARINTDER) if (nfgtasks.gt.1) then #ifdef DEBUG -cd write (iout,*) "Gather dtheta" + write (iout,*) "Gather dtheta" cd call flush(iout) - write (iout,*) "dtheta before gather" - do i=1,nres - write (iout,'(i3,3(3f8.5,3x))') i,((dtheta(j,k,i),k=1,3),j=1,2) - enddo +c write (iout,*) "dtheta before gather" +c do i=1,nres +c write (iout,'(i3,3(3f8.5,3x))') i,((dtheta(j,k,i),k=1,3),j=1,2) +c enddo #endif call MPI_Gatherv(dtheta(1,1,ithet_start),ithet_count(fg_rank), & MPI_THET,dtheta(1,1,1),ithet_count(0),ithet_displ(0),MPI_THET, diff --git a/source/unres/src_MD/map.f b/source/unres/src_MD/map.f index 6ea2632..9dbe64e 100644 --- a/source/unres/src_MD/map.f +++ b/source/unres/src_MD/map.f @@ -56,6 +56,7 @@ Cd write (iout,*) i,iii,(nn(j),j=1,nmap) enddo ! k enddo ! j call chainbuild + call int_from_cart1(.false.) if (minim) then call geom_to_var(nvar,x) call minimize(etot,x,iretcode,nfun) diff --git a/source/unres/src_MD/parmread.F b/source/unres/src_MD/parmread.F index be5f8b8..4729ca5 100644 --- a/source/unres/src_MD/parmread.F +++ b/source/unres/src_MD/parmread.F @@ -553,33 +553,59 @@ C enddo endif #endif +C Read of Side-chain backbone correlation parameters +C Modified 11 May 2012 by Adasko +CCC C -C 5/21/07 (AL) Read coefficients of the backbone-local sidechain-local -C correlation energies. -C - read (isccor,*,end=119,err=119) nterm_sccor - do i=1,20 - do j=1,20 - read (isccor,'(a)') - do k=1,nterm_sccor - read (isccor,*,end=119,err=119) kk,v1sccor(k,i,j), - & v2sccor(k,i,j) + read (isccor,*,end=113,err=113) nsccortyp + read (isccor,*,end=113,err=113) (isccortyp(i),i=1,ntyp) +c write (iout,*) 'ntortyp',ntortyp + maxinter=3 +cc maxinter is maximum interaction sites + do l=1,maxinter + do i=1,nsccortyp + do j=1,nsccortyp + read (isccor,*,end=113,err=113) nterm_sccor(i,j),nlor_sccor(i,j) + v0ijsccor=0.0d0 + si=-1.0d0 + + do k=1,nterm_sccor(i,j) + read (isccor,*,end=113,err=113) kk,v1sccor(k,l,i,j) + & ,v2sccor(k,l,i,j) + v0ijsccor=v0ijsccor+si*v1sccor(k,l,i,j) + si=-si + enddo + do k=1,nlor_sccor(i,j) + read (isccor,*,end=113,err=113) kk,vlor1sccor(k,i,j), + & vlor2sccor(k,i,j),vlor3sccor(k,i,j) + v0ijsccor=v0ijsccor+vlor1sccor(k,i,j)/ + &(1+vlor3sccor(k,i,j)**2) enddo + v0sccor(i,j)=v0ijsccor enddo enddo + enddo close (isccor) + if (lprint) then - write (iout,'(/a/)') 'Torsional constants of SCCORR:' - do i=1,20 - do j=1,20 + write (iout,'(/a/)') 'Torsional constants:' + do i=1,nsccortyp + do j=1,nsccortyp write (iout,*) 'ityp',i,' jtyp',j - do k=1,nterm_sccor - write (iout,'(2(1pe15.5))') v1sccor(k,i,j),v2sccor(k,i,j) + write (iout,*) 'Fourier constants' + do k=1,nterm_sccor(i,j) + write (iout,'(2(1pe15.5))') v1sccor(k,l,i,j),v2sccor(k,l,i,j) + enddo + write (iout,*) 'Lorenz constants' + do k=1,nlor_sccor(i,j) + write (iout,'(3(1pe15.5))') + & vlor1sccor(k,i,j),vlor2sccor(k,i,j),vlor3sccor(k,i,j) enddo enddo enddo endif C +C C 9/18/99 (AL) Read coefficients of the Fourier expansion of the local C interaction energy of the Gly, Ala, and Pro prototypes. C diff --git a/source/unres/src_MD/readrtns.F b/source/unres/src_MD/readrtns.F index 34b73d9..47850c2 100644 --- a/source/unres/src_MD/readrtns.F +++ b/source/unres/src_MD/readrtns.F @@ -2086,38 +2086,38 @@ C Get parameter filenames and open the parameter files. open (isidep,file=sidename,status='old') #else open(1,file=pref_orig(:ilen(pref_orig))//'.inp',status='old', - & readonly) + &action='read') open (9,file=prefix(:ilen(prefix))//'.intin',status='unknown') C open (18,file=prefix(:ilen(prefix))//'.entin',status='unknown') C Get parameter filenames and open the parameter files. call getenv_loc('BONDPAR',bondname) - open (ibond,file=bondname,status='old',readonly) + open (ibond,file=bondname,status='old',action='read') call getenv_loc('THETPAR',thetname) - open (ithep,file=thetname,status='old',readonly) + open (ithep,file=thetname,status='old',action='read') #ifndef CRYST_THETA call getenv_loc('THETPARPDB',thetname_pdb) print *,"thetname_pdb ",thetname_pdb - open (ithep_pdb,file=thetname_pdb,status='old',readonly) + open (ithep_pdb,file=thetname_pdb,status='old',action='read') print *,ithep_pdb," opened" #endif call getenv_loc('ROTPAR',rotname) - open (irotam,file=rotname,status='old',readonly) + open (irotam,file=rotname,status='old',action='read') #ifndef CRYST_SC call getenv_loc('ROTPARPDB',rotname_pdb) - open (irotam_pdb,file=rotname_pdb,status='old',readonly) + open (irotam_pdb,file=rotname_pdb,status='old',action='read') #endif call getenv_loc('TORPAR',torname) - open (itorp,file=torname,status='old',readonly) + open (itorp,file=torname,status='old',action='read') call getenv_loc('TORDPAR',tordname) - open (itordp,file=tordname,status='old',readonly) + open (itordp,file=tordname,status='old',action='read') call getenv_loc('SCCORPAR',sccorname) - open (isccor,file=sccorname,status='old',readonly) + open (isccor,file=sccorname,status='old',action='read') call getenv_loc('FOURIER',fouriername) - open (ifourier,file=fouriername,status='old',readonly) + open (ifourier,file=fouriername,status='old',action='read') call getenv_loc('ELEPAR',elename) - open (ielep,file=elename,status='old',readonly) + open (ielep,file=elename,status='old',action='read') call getenv_loc('SIDEPAR',sidename) - open (isidep,file=sidename,status='old',readonly) + open (isidep,file=sidename,status='old',action='read') #endif #ifndef OLDSCP C @@ -2132,7 +2132,7 @@ C #elif (defined G77) open (iscpp,file=scpname,status='old') #else - open (iscpp,file=scpname,status='old',readonly) + open (iscpp,file=scpname,status='old',action='read') #endif #endif call getenv_loc('PATTERN',patname) @@ -2143,7 +2143,7 @@ C #elif (defined G77) open (icbase,file=patname,status='old') #else - open (icbase,file=patname,status='old',readonly) + open (icbase,file=patname,status='old',action='read') #endif #ifdef MPI C Open output file only for CG processes @@ -2198,6 +2198,7 @@ c print *,"Processor",myrank," fg_rank",fg_rank #if defined(AIX) || defined(PGI) if (me.eq.king .or. .not. out1file) & open(iout,file=outname,status='unknown') +c#define DEBUG #ifdef DEBUG if (fg_rank.gt.0) then write (liczba,'(i3.3)') myrank/nfgtasks @@ -2206,6 +2207,7 @@ c print *,"Processor",myrank," fg_rank",fg_rank & status='unknown') endif #endif +c#undef DEBUG if(me.eq.king) then open(igeom,file=intname,status='unknown',position='append') open(ipdb,file=pdbname,status='unknown') @@ -2217,14 +2219,17 @@ c1out open(iout,file=outname,status='unknown') #else if (me.eq.king .or. .not.out1file) & open(iout,file=outname,status='unknown') +c#define DEBUG #ifdef DEBUG if (fg_rank.gt.0) then + print "Processor",fg_rank," opening output file" write (liczba,'(i3.3)') myrank/nfgtasks write (ll,'(bz,i3.3)') fg_rank open(iout,file="debug"//liczba(:ilen(liczba))//"."//ll, & status='unknown') endif #endif +c#undef DEBUG if(me.eq.king) then open(igeom,file=intname,status='unknown',access='append') open(ipdb,file=pdbname,status='unknown') diff --git a/source/unres/src_MD/tmptmp b/source/unres/src_MD/tmptmp index 54e7a36..fb6f043 100644 --- a/source/unres/src_MD/tmptmp +++ b/source/unres/src_MD/tmptmp @@ -1 +1 @@ -adam +aks255 diff --git a/source/unres/src_MD/xdrf/Makefile b/source/unres/src_MD/xdrf/Makefile deleted file mode 100644 index 02c29f6..0000000 --- a/source/unres/src_MD/xdrf/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = gcc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD/xdrf/Makefile_jubl b/source/unres/src_MD/xdrf/Makefile_jubl deleted file mode 100644 index 8dc35cf..0000000 --- a/source/unres/src_MD/xdrf/Makefile_jubl +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = /usr/bin/blrts_xlc -CPPC = /usr/bin/blrts_xlc - -CFLAGS= -O2 -I$(BGLSYS)/include -L$(BGLSYS)/lib -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f *.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/unres/src_MD/xdrf/Makefile_linux b/source/unres/src_MD/xdrf/Makefile_linux deleted file mode 100644 index f03276e..0000000 --- a/source/unres/src_MD/xdrf/Makefile_linux +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/unres/src_MD/xdrf/RS6K.m4 b/source/unres/src_MD/xdrf/RS6K.m4 deleted file mode 100644 index 0331d97..0000000 --- a/source/unres/src_MD/xdrf/RS6K.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -undefine(`len') -# -# do nothing special to FORTRAN function names -# -define(`FUNCTION',`$1') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) - diff --git a/source/unres/src_MD/xdrf/ftocstr.c b/source/unres/src_MD/xdrf/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/unres/src_MD/xdrf/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/unres/src_MD/xdrf/libxdrf.m4 b/source/unres/src_MD/xdrf/libxdrf.m4 deleted file mode 100644 index a6da458..0000000 --- a/source/unres/src_MD/xdrf/libxdrf.m4 +++ /dev/null @@ -1,1238 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "w+"; - lmode = XDR_ENCODE; - } else if (*type == 'a' || *type == 'A') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/unres/src_MD/xdrf/types.h b/source/unres/src_MD/xdrf/types.h deleted file mode 100644 index 871f3fd..0000000 --- a/source/unres/src_MD/xdrf/types.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* fixincludes should not add extern "C" to this file */ -/* - * Rpc additions to - */ -#ifndef _RPC_TYPES_H -#define _RPC_TYPES_H 1 - -typedef int bool_t; -typedef int enum_t; -/* This needs to be changed to uint32_t in the future */ -typedef unsigned long rpcprog_t; -typedef unsigned long rpcvers_t; -typedef unsigned long rpcproc_t; -typedef unsigned long rpcprot_t; -typedef unsigned long rpcport_t; - -#define __dontcare__ -1 - -#ifndef FALSE -# define FALSE (0) -#endif - -#ifndef TRUE -# define TRUE (1) -#endif - -#ifndef NULL -# define NULL 0 -#endif - -#include /* For malloc decl. */ -#define mem_alloc(bsize) malloc(bsize) -/* - * XXX: This must not use the second argument, or code in xdr_array.c needs - * to be modified. - */ -#define mem_free(ptr, bsize) free(ptr) - -#ifndef makedev /* ie, we haven't already included it */ -#include -#endif - -#ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; -typedef __fsid_t fsid_t; -# define __u_char_defined -#endif -#ifndef __daddr_t_defined -typedef __daddr_t daddr_t; -typedef __caddr_t caddr_t; -# define __daddr_t_defined -#endif - -#include -#include - -#include - -#ifndef INADDR_LOOPBACK -#define INADDR_LOOPBACK (u_long)0x7F000001 -#endif -#ifndef MAXHOSTNAMELEN -#define MAXHOSTNAMELEN 64 -#endif - -#endif /* rpc/types.h */ diff --git a/source/unres/src_MD/xdrf/underscore.m4 b/source/unres/src_MD/xdrf/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/unres/src_MD/xdrf/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/unres/src_MD/xdrf/xdr.c b/source/unres/src_MD/xdrf/xdr.c deleted file mode 100644 index 33b8544..0000000 --- a/source/unres/src_MD/xdrf/xdr.c +++ /dev/null @@ -1,752 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; -#endif - -/* - * xdr.c, Generic XDR routines implementation. - * - * Copyright (C) 1986, Sun Microsystems, Inc. - * - * These are the "generic" xdr routines used to serialize and de-serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include -#include -#include - -#include "types.h" -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -#endif - -/* - * constants specific to the xdr "protocol" - */ -#define XDR_FALSE ((long) 0) -#define XDR_TRUE ((long) 1) -#define LASTUNSIGNED ((u_int) 0-1) - -/* - * for unit alignment - */ -static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; - -/* - * Free a data structure using XDR - * Not a filter, but a convenient utility nonetheless - */ -void -xdr_free (xdrproc_t proc, char *objp) -{ - XDR x; - - x.x_op = XDR_FREE; - (*proc) (&x, objp); -} - -/* - * XDR nothing - */ -bool_t -xdr_void (void) -{ - return TRUE; -} -INTDEF(xdr_void) - -/* - * XDR integers - */ -bool_t -xdr_int (XDR *xdrs, int *ip) -{ - -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *ip; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ip = (int) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif INT_MAX == LONG_MAX - return INTUSE(xdr_long) (xdrs, (long *) ip); -#elif INT_MAX == SHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) ip); -#else -#error unexpected integer sizes in_xdr_int() -#endif -} -INTDEF(xdr_int) - -/* - * XDR unsigned integers - */ -bool_t -xdr_u_int (XDR *xdrs, u_int *up) -{ -#if UINT_MAX < ULONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * up; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *up = (u_int) (u_long) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif UINT_MAX == ULONG_MAX - return INTUSE(xdr_u_long) (xdrs, (u_long *) up); -#elif UINT_MAX == USHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) up); -#else -#error unexpected integer sizes in_xdr_u_int() -#endif -} -INTDEF(xdr_u_int) - -/* - * XDR long integers - * The definition of xdr_long() is kept for backward - * compatibility. Instead xdr_int() should be used. - */ -bool_t -xdr_long (XDR *xdrs, long *lp) -{ - - if (xdrs->x_op == XDR_ENCODE - && (sizeof (int32_t) == sizeof (long) - || (int32_t) *lp == *lp)) - return XDR_PUTLONG (xdrs, lp); - - if (xdrs->x_op == XDR_DECODE) - return XDR_GETLONG (xdrs, lp); - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_long) - -/* - * XDR unsigned long integers - * The definition of xdr_u_long() is kept for backward - * compatibility. Instead xdr_u_int() should be used. - */ -bool_t -xdr_u_long (XDR *xdrs, u_long *ulp) -{ - switch (xdrs->x_op) - { - case XDR_DECODE: - { - long int tmp; - - if (XDR_GETLONG (xdrs, &tmp) == FALSE) - return FALSE; - - *ulp = (uint32_t) tmp; - return TRUE; - } - - case XDR_ENCODE: - if (sizeof (uint32_t) != sizeof (u_long) - && (uint32_t) *ulp != *ulp) - return FALSE; - - return XDR_PUTLONG (xdrs, (long *) ulp); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_long) - -/* - * XDR hyper integers - * same as xdr_u_hyper - open coded to save a proc call! - */ -bool_t -xdr_hyper (XDR *xdrs, quad_t *llp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (long) ((*llp) >> 32); - t2 = (long) (*llp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *llp = ((quad_t) t1) << 32; - *llp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_hyper) - - -/* - * XDR hyper integers - * same as xdr_hyper - open coded to save a proc call! - */ -bool_t -xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (unsigned long) ((*ullp) >> 32); - t2 = (unsigned long) (*ullp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *ullp = ((u_quad_t) t1) << 32; - *ullp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_u_hyper) - -bool_t -xdr_longlong_t (XDR *xdrs, quad_t *llp) -{ - return INTUSE(xdr_hyper) (xdrs, llp); -} - -bool_t -xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) -{ - return INTUSE(xdr_u_hyper) (xdrs, ullp); -} - -/* - * XDR short integers - */ -bool_t -xdr_short (XDR *xdrs, short *sp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *sp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *sp = (short) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_short) - -/* - * XDR unsigned short integers - */ -bool_t -xdr_u_short (XDR *xdrs, u_short *usp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * usp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *usp = (u_short) (u_long) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_short) - - -/* - * XDR a char - */ -bool_t -xdr_char (XDR *xdrs, char *cp) -{ - int i; - - i = (*cp); - if (!INTUSE(xdr_int) (xdrs, &i)) - { - return FALSE; - } - *cp = i; - return TRUE; -} - -/* - * XDR an unsigned char - */ -bool_t -xdr_u_char (XDR *xdrs, u_char *cp) -{ - u_int u; - - u = (*cp); - if (!INTUSE(xdr_u_int) (xdrs, &u)) - { - return FALSE; - } - *cp = u; - return TRUE; -} - -/* - * XDR booleans - */ -bool_t -xdr_bool (XDR *xdrs, bool_t *bp) -{ - long lb; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - lb = *bp ? XDR_TRUE : XDR_FALSE; - return XDR_PUTLONG (xdrs, &lb); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &lb)) - { - return FALSE; - } - *bp = (lb == XDR_FALSE) ? FALSE : TRUE; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bool) - -/* - * XDR enumerations - */ -bool_t -xdr_enum (XDR *xdrs, enum_t *ep) -{ - enum sizecheck - { - SIZEVAL - }; /* used to find the size of an enum */ - - /* - * enums are treated as ints - */ - if (sizeof (enum sizecheck) == 4) - { -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = *ep; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ep = l; - case XDR_FREE: - return TRUE; - - } - return FALSE; -#else - return INTUSE(xdr_long) (xdrs, (long *) ep); -#endif - } - else if (sizeof (enum sizecheck) == sizeof (short)) - { - return INTUSE(xdr_short) (xdrs, (short *) ep); - } - else - { - return FALSE; - } -} -INTDEF(xdr_enum) - -/* - * XDR opaque data - * Allows the specification of a fixed size sequence of opaque bytes. - * cp points to the opaque object and cnt gives the byte length. - */ -bool_t -xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) -{ - u_int rndup; - static char crud[BYTES_PER_XDR_UNIT]; - - /* - * if no data we are done - */ - if (cnt == 0) - return TRUE; - - /* - * round byte count to full xdr units - */ - rndup = cnt % BYTES_PER_XDR_UNIT; - if (rndup > 0) - rndup = BYTES_PER_XDR_UNIT - rndup; - - switch (xdrs->x_op) - { - case XDR_DECODE: - if (!XDR_GETBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); - - case XDR_ENCODE: - if (!XDR_PUTBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_PUTBYTES (xdrs, xdr_zero, rndup); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_opaque) - -/* - * XDR counted bytes - * *cpp is a pointer to the bytes, *sizep is the count. - * If *cpp is NULL maxsize bytes are allocated - */ -bool_t -xdr_bytes (xdrs, cpp, sizep, maxsize) - XDR *xdrs; - char **cpp; - u_int *sizep; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int nodesize; - - /* - * first deal with the length since xdr bytes are counted - */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - nodesize = *sizep; - if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (nodesize == 0) - { - return TRUE; - } - if (sp == NULL) - { - *cpp = sp = (char *) mem_alloc (nodesize); - } - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); - return FALSE; - } - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, nodesize); - - case XDR_FREE: - if (sp != NULL) - { - mem_free (sp, nodesize); - *cpp = NULL; - } - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bytes) - -/* - * Implemented here due to commonality of the object. - */ -bool_t -xdr_netobj (xdrs, np) - XDR *xdrs; - struct netobj *np; -{ - - return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); -} -INTDEF(xdr_netobj) - -/* - * XDR a discriminated union - * Support routine for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * an entry with a null procedure pointer. The routine gets - * the discriminant value and then searches the array of xdrdiscrims - * looking for that value. It calls the procedure given in the xdrdiscrim - * to handle the discriminant. If there is no specific routine a default - * routine may be called. - * If there is no specific or default routine an error is returned. - */ -bool_t -xdr_union (xdrs, dscmp, unp, choices, dfault) - XDR *xdrs; - enum_t *dscmp; /* enum to decide which arm to work on */ - char *unp; /* the union itself */ - const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ - xdrproc_t dfault; /* default xdr routine */ -{ - enum_t dscm; - - /* - * we deal with the discriminator; it's an enum - */ - if (!INTUSE(xdr_enum) (xdrs, dscmp)) - { - return FALSE; - } - dscm = *dscmp; - - /* - * search choices for a value that matches the discriminator. - * if we find one, execute the xdr routine for that value. - */ - for (; choices->proc != NULL_xdrproc_t; choices++) - { - if (choices->value == dscm) - return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); - } - - /* - * no match - execute the default xdr routine if there is one - */ - return ((dfault == NULL_xdrproc_t) ? FALSE : - (*dfault) (xdrs, unp, LASTUNSIGNED)); -} -INTDEF(xdr_union) - - -/* - * Non-portable xdr primitives. - * Care should be taken when moving these routines to new architectures. - */ - - -/* - * XDR null terminated ASCII strings - * xdr_string deals with "C strings" - arrays of bytes that are - * terminated by a NULL character. The parameter cpp references a - * pointer to storage; If the pointer is null, then the necessary - * storage is allocated. The last parameter is the max allowed length - * of the string as specified by a protocol. - */ -bool_t -xdr_string (xdrs, cpp, maxsize) - XDR *xdrs; - char **cpp; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int size; - u_int nodesize; - - /* - * first deal with the length since xdr strings are counted-strings - */ - switch (xdrs->x_op) - { - case XDR_FREE: - if (sp == NULL) - { - return TRUE; /* already free */ - } - /* fall through... */ - case XDR_ENCODE: - if (sp == NULL) - return FALSE; - size = strlen (sp); - break; - case XDR_DECODE: - break; - } - if (!INTUSE(xdr_u_int) (xdrs, &size)) - { - return FALSE; - } - if (size > maxsize) - { - return FALSE; - } - nodesize = size + 1; - if (nodesize == 0) - { - /* This means an overflow. It a bug in the caller which - provided a too large maxsize but nevertheless catch it - here. */ - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (sp == NULL) - *cpp = sp = (char *) mem_alloc (nodesize); - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_string: out of memory\n"); - return FALSE; - } - sp[size] = 0; - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, size); - - case XDR_FREE: - mem_free (sp, nodesize); - *cpp = NULL; - return TRUE; - } - return FALSE; -} -INTDEF(xdr_string) - -/* - * Wrapper for xdr_string that can be called directly from - * routines like clnt_call - */ -bool_t -xdr_wrapstring (xdrs, cpp) - XDR *xdrs; - char **cpp; -{ - if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) - { - return TRUE; - } - return FALSE; -} diff --git a/source/unres/src_MD/xdrf/xdr.h b/source/unres/src_MD/xdrf/xdr.h deleted file mode 100644 index 2602ad9..0000000 --- a/source/unres/src_MD/xdrf/xdr.h +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr.h, External Data Representation Serialization Routines. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - */ - -#ifndef _RPC_XDR_H -#define _RPC_XDR_H 1 - -#include -#include -#include "types.h" - -/* We need FILE. */ -#include - -__BEGIN_DECLS - -/* - * XDR provides a conventional way for converting between C data - * types and an external bit-string representation. Library supplied - * routines provide for the conversion on built-in C data types. These - * routines and utility routines defined here are used to help implement - * a type encode/decode routine for each user-defined type. - * - * Each data type provides a single procedure which takes two arguments: - * - * bool_t - * xdrproc(xdrs, argresp) - * XDR *xdrs; - * *argresp; - * - * xdrs is an instance of a XDR handle, to which or from which the data - * type is to be converted. argresp is a pointer to the structure to be - * converted. The XDR handle contains an operation field which indicates - * which of the operations (ENCODE, DECODE * or FREE) is to be performed. - * - * XDR_DECODE may allocate space if the pointer argresp is null. This - * data can be freed with the XDR_FREE operation. - * - * We write only one procedure per data type to make it easy - * to keep the encode and decode procedures for a data type consistent. - * In many cases the same code performs all operations on a user defined type, - * because all the hard work is done in the component type routines. - * decode as a series of calls on the nested data types. - */ - -/* - * Xdr operations. XDR_ENCODE causes the type to be encoded into the - * stream. XDR_DECODE causes the type to be extracted from the stream. - * XDR_FREE can be used to release the space allocated by an XDR_DECODE - * request. - */ -enum xdr_op { - XDR_ENCODE = 0, - XDR_DECODE = 1, - XDR_FREE = 2 -}; - -/* - * This is the number of bytes per unit of external data. - */ -#define BYTES_PER_XDR_UNIT (4) -/* - * This only works if the above is a power of 2. But it's defined to be - * 4 by the appropriate RFCs. So it will work. And it's normally quicker - * than the old routine. - */ -#if 1 -#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) -#else /* this is the old routine */ -#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ - * BYTES_PER_XDR_UNIT) -#endif - -/* - * The XDR handle. - * Contains operation which is being applied to the stream, - * an operations vector for the particular implementation (e.g. see xdr_mem.c), - * and two private fields for the use of the particular implementation. - */ -typedef struct XDR XDR; -struct XDR - { - enum xdr_op x_op; /* operation; fast additional param */ - struct xdr_ops - { - bool_t (*x_getlong) (XDR *__xdrs, long *__lp); - /* get a long from underlying stream */ - bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); - /* put a long to " */ - bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); - /* get some bytes from " */ - bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); - /* put some bytes to " */ - u_int (*x_getpostn) (__const XDR *__xdrs); - /* returns bytes off from beginning */ - bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); - /* lets you reposition the stream */ - int32_t *(*x_inline) (XDR *__xdrs, u_int __len); - /* buf quick ptr to buffered data */ - void (*x_destroy) (XDR *__xdrs); - /* free privates of this xdr_stream */ - bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); - /* get a int from underlying stream */ - bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); - /* put a int to " */ - } - *x_ops; - caddr_t x_public; /* users' data */ - caddr_t x_private; /* pointer to private data */ - caddr_t x_base; /* private used for position info */ - u_int x_handy; /* extra private word */ - }; - -/* - * A xdrproc_t exists for each data type which is to be encoded or decoded. - * - * The second argument to the xdrproc_t is a pointer to an opaque pointer. - * The opaque pointer generally points to a structure of the data type - * to be decoded. If this pointer is 0, then the type routines should - * allocate dynamic storage of the appropriate size and return it. - * bool_t (*xdrproc_t)(XDR *, caddr_t *); - */ -typedef bool_t (*xdrproc_t) (XDR *, void *,...); - - -/* - * Operations defined on a XDR handle - * - * XDR *xdrs; - * int32_t *int32p; - * long *longp; - * caddr_t addr; - * u_int len; - * u_int pos; - */ -#define XDR_GETINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) -#define xdr_getint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) - -#define XDR_PUTINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) -#define xdr_putint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) - -#define XDR_GETLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) -#define xdr_getlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) - -#define XDR_PUTLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) -#define xdr_putlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) - -#define XDR_GETBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) -#define xdr_getbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) - -#define XDR_PUTBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) -#define xdr_putbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) - -#define XDR_GETPOS(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) -#define xdr_getpos(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) - -#define XDR_SETPOS(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) -#define xdr_setpos(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) - -#define XDR_INLINE(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) -#define xdr_inline(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) - -#define XDR_DESTROY(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) -#define xdr_destroy(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) - -/* - * Support struct for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * a entry with a null procedure pointer. The xdr_union routine gets - * the discriminant value and then searches the array of structures - * for a matching value. If a match is found the associated xdr routine - * is called to handle that part of the union. If there is - * no match, then a default routine may be called. - * If there is no match and no default routine it is an error. - */ -#define NULL_xdrproc_t ((xdrproc_t)0) -struct xdr_discrim -{ - int value; - xdrproc_t proc; -}; - -/* - * Inline routines for fast encode/decode of primitive data types. - * Caveat emptor: these use single memory cycles to get the - * data from the underlying buffer, and will fail to operate - * properly if the data is not aligned. The standard way to use these - * is to say: - * if ((buf = XDR_INLINE(xdrs, count)) == NULL) - * return (FALSE); - * <<< macro calls >>> - * where ``count'' is the number of bytes of data occupied - * by the primitive data types. - * - * N.B. and frozen for all time: each data type here uses 4 bytes - * of external representation. - */ - -#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) -#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) -#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) -#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) - -/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ -#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) -#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) -#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - - -#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) -#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) -#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) -#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) - -#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - -/* - * These are the "generic" xdr routines. - * None of these can have const applied because it's not possible to - * know whether the call is a read or a write to the passed parameter - * also, the XDR structure is always updated by some of these calls. - */ -extern bool_t xdr_void (void) __THROW; -extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; -extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; -extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; -extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; -extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; -extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; -extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; -extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; -extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; -extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; -extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; -extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; -extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; -extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; -extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; -extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; -extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; -extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; -extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, - u_int __maxsize, u_int __elsize, xdrproc_t __elproc) - __THROW; -extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, - u_int __maxsize) __THROW; -extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; -extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; -extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, - __const struct xdr_discrim *__choices, - xdrproc_t dfault) __THROW; -extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; -extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; -extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, - u_int __elemsize, xdrproc_t __xdr_elem) __THROW; -extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; -extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; -extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, - xdrproc_t __proc) __THROW; -extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, - u_int __obj_size, xdrproc_t __xdr_obj) __THROW; -extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; -extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; - -/* - * Common opaque bytes objects used by many rpc protocols; - * declared here due to commonality. - */ -#define MAX_NETOBJ_SZ 1024 -struct netobj -{ - u_int n_len; - char *n_bytes; -}; -typedef struct netobj netobj; -extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; - -/* - * These are the public routines for the various implementations of - * xdr streams. - */ - -/* XDR using memory buffers */ -extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, - u_int __size, enum xdr_op __xop) __THROW; - -/* XDR using stdio library */ -extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) - __THROW; - -/* XDR pseudo records for tcp */ -extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, - u_int __recvsize, caddr_t __tcp_handle, - int (*__readit) (char *, char *, int), - int (*__writeit) (char *, char *, int)) __THROW; - -/* make end of xdr record */ -extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; - -/* move to beginning of next record */ -extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; - -/* true if no more input */ -extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; - -/* free memory buffers for xdr */ -extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; - -__END_DECLS - -#endif /* rpc/xdr.h */ diff --git a/source/unres/src_MD/xdrf/xdr_array.c b/source/unres/src_MD/xdrf/xdr_array.c deleted file mode 100644 index 836405c..0000000 --- a/source/unres/src_MD/xdrf/xdr_array.c +++ /dev/null @@ -1,174 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_array.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "non-trivial" xdr primitives used to serialize and de-serialize - * arrays. See xdr.h for more info on the interface to xdr. - */ - -#include -#include -#include "types.h" -#include "xdr.h" -#include -#include - -#ifdef USE_IN_LIBIO -# include -#endif - -#define LASTUNSIGNED ((u_int)0-1) - - -/* - * XDR an array of arbitrary elements - * *addrp is a pointer to the array, *sizep is the number of elements. - * If addrp is NULL (*sizep * elsize) bytes are allocated. - * elsize is the size (in bytes) of each element, and elproc is the - * xdr procedure to call to handle each element of the array. - */ -bool_t -xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) - XDR *xdrs; - caddr_t *addrp; /* array pointer */ - u_int *sizep; /* number of elements */ - u_int maxsize; /* max numberof elements */ - u_int elsize; /* size in bytes of each element */ - xdrproc_t elproc; /* xdr routine to handle each element */ -{ - u_int i; - caddr_t target = *addrp; - u_int c; /* the actual element count */ - bool_t stat = TRUE; - u_int nodesize; - - /* like strings, arrays are really counted arrays */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - c = *sizep; - /* - * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() - * doesn't actually use its second argument anyway. - */ - if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - nodesize = c * elsize; - - /* - * if we are deserializing, we may need to allocate an array. - * We also save time by checking for a null array if we are freeing. - */ - if (target == NULL) - switch (xdrs->x_op) - { - case XDR_DECODE: - if (c == 0) - return TRUE; - *addrp = target = mem_alloc (nodesize); - if (target == NULL) - { - fprintf (stderr, "%s", "xdr_array: out of memory\n"); - return FALSE; - } - __bzero (target, nodesize); - break; - - case XDR_FREE: - return TRUE; - default: - break; - } - - /* - * now we xdr each element of array - */ - for (i = 0; (i < c) && stat; i++) - { - stat = (*elproc) (xdrs, target, LASTUNSIGNED); - target += elsize; - } - - /* - * the array may need freeing - */ - if (xdrs->x_op == XDR_FREE) - { - mem_free (*addrp, nodesize); - *addrp = NULL; - } - return stat; -} -INTDEF(xdr_array) - -/* - * xdr_vector(): - * - * XDR a fixed length array. Unlike variable-length arrays, - * the storage of fixed length arrays is static and unfreeable. - * > basep: base of the array - * > size: size of the array - * > elemsize: size of each element - * > xdr_elem: routine to XDR each element - */ -bool_t -xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) - XDR *xdrs; - char *basep; - u_int nelem; - u_int elemsize; - xdrproc_t xdr_elem; -{ - u_int i; - char *elptr; - - elptr = basep; - for (i = 0; i < nelem; i++) - { - if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) - { - return FALSE; - } - elptr += elemsize; - } - return TRUE; -} diff --git a/source/unres/src_MD/xdrf/xdr_float.c b/source/unres/src_MD/xdrf/xdr_float.c deleted file mode 100644 index 15d3c88..0000000 --- a/source/unres/src_MD/xdrf/xdr_float.c +++ /dev/null @@ -1,307 +0,0 @@ -/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_float.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "floating point" xdr routines used to (de)serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include - -#include "types.h" -#include "xdr.h" - -/* - * NB: Not portable. - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) - -#ifdef vax - -/* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int mantissa: 23; - unsigned int exp : 8; - unsigned int sign : 1; -}; - -/* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; -}; - -#define VAX_SNG_BIAS 0x81 -#define IEEE_SNG_BIAS 0x7f - -static struct sgl_limits { - struct vax_single s; - struct ieee_single ieee; -} sgl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x0, 0xff, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; -#endif /* vax */ - -bool_t -xdr_float(xdrs, fp) - XDR *xdrs; - float *fp; -{ -#ifdef vax - struct ieee_single is; - struct vax_single vs, *vsp; - struct sgl_limits *lim; - int i; -#endif - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vs = *((struct vax_single *)fp); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((vs.mantissa2 == lim->s.mantissa2) && - (vs.exp == lim->s.exp) && - (vs.mantissa1 == lim->s.mantissa1)) { - is = lim->ieee; - goto shipit; - } - } - is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; - shipit: - is.sign = vs.sign; - return (XDR_PUTLONG(xdrs, (long *)&is)); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_PUTLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp = *(int *)fp; - return (XDR_PUTLONG(xdrs, &tmp)); - } - break; -#endif - - case XDR_DECODE: -#ifdef vax - vsp = (struct vax_single *)fp; - if (!XDR_GETLONG(xdrs, (long *)&is)) - return (FALSE); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((is.exp == lim->ieee.exp) && - (is.mantissa == lim->ieee.mantissa)) { - *vsp = lim->s; - goto doneit; - } - } - vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = is.mantissa; - vsp->mantissa1 = (is.mantissa >> 16); - doneit: - vsp->sign = is.sign; - return (TRUE); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_GETLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp; - if (XDR_GETLONG(xdrs, &tmp)) { - *(int *)fp = tmp; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} - -/* - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#ifdef vax -/* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int mantissa1 : 20; - unsigned int exp : 11; - unsigned int sign : 1; - unsigned int mantissa2 : 32; -}; - -/* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; -}; - -#define VAX_DBL_BIAS 0x81 -#define IEEE_DBL_BIAS 0x3ff -#define MASK(nbits) ((1 << nbits) - 1) - -static struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; -} dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; - -#endif /* vax */ - - -bool_t -xdr_double(xdrs, dp) - XDR *xdrs; - double *dp; -{ -#ifdef vax - struct ieee_double id; - struct vax_double vd; - register struct dbl_limits *lim; - int i; -#endif - - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vd = *((struct vax_double *)dp); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((vd.mantissa4 == lim->d.mantissa4) && - (vd.mantissa3 == lim->d.mantissa3) && - (vd.mantissa2 == lim->d.mantissa2) && - (vd.mantissa1 == lim->d.mantissa1) && - (vd.exp == lim->d.exp)) { - id = lim->ieee; - goto shipit; - } - } - id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); - id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | - (vd.mantissa3 << 13) | - ((vd.mantissa4 >> 3) & MASK(13)); - shipit: - id.sign = vd.sign; - dp = (double *)&id; -#endif - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_PUTLONG(xdrs, lp+!LSW) && - XDR_PUTLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - tmp[0] = ip[!LSW]; - tmp[1] = ip[LSW]; - return (XDR_PUTLONG(xdrs, tmp) && - XDR_PUTLONG(xdrs, tmp+1)); - } - break; - - case XDR_DECODE: -#ifdef vax - lp = (long *)&id; - if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) - return (FALSE); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((id.mantissa2 == lim->ieee.mantissa2) && - (id.mantissa1 == lim->ieee.mantissa1) && - (id.exp == lim->ieee.exp)) { - vd = lim->d; - goto doneit; - } - } - vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - vd.mantissa1 = (id.mantissa1 >> 13); - vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | - (id.mantissa2 >> 29); - vd.mantissa3 = (id.mantissa2 >> 13); - vd.mantissa4 = (id.mantissa2 << 3); - doneit: - vd.sign = id.sign; - *dp = *((double *)&vd); - return (TRUE); -#else - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_GETLONG(xdrs, lp+!LSW) && - XDR_GETLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - if (XDR_GETLONG(xdrs, tmp+!LSW) && - XDR_GETLONG(xdrs, tmp+LSW)) { - ip[0] = tmp[0]; - ip[1] = tmp[1]; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} diff --git a/source/unres/src_MD/xdrf/xdr_stdio.c b/source/unres/src_MD/xdrf/xdr_stdio.c deleted file mode 100644 index 12b1709..0000000 --- a/source/unres/src_MD/xdrf/xdr_stdio.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr_stdio.c, XDR implementation on standard i/o file. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * This set of routines implements a XDR on a stdio stream. - * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes - * from the stream. - */ - -#include "types.h" -#include -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -# define fflush(s) INTUSE(_IO_fflush) (s) -# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) -# define ftell(s) INTUSE(_IO_ftell) (s) -# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) -#endif - -static bool_t xdrstdio_getlong (XDR *, long *); -static bool_t xdrstdio_putlong (XDR *, const long *); -static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); -static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); -static u_int xdrstdio_getpos (const XDR *); -static bool_t xdrstdio_setpos (XDR *, u_int); -static int32_t *xdrstdio_inline (XDR *, u_int); -static void xdrstdio_destroy (XDR *); -static bool_t xdrstdio_getint32 (XDR *, int32_t *); -static bool_t xdrstdio_putint32 (XDR *, const int32_t *); - -/* - * Ops vector for stdio type XDR - */ -static const struct xdr_ops xdrstdio_ops = -{ - xdrstdio_getlong, /* deserialize a long int */ - xdrstdio_putlong, /* serialize a long int */ - xdrstdio_getbytes, /* deserialize counted bytes */ - xdrstdio_putbytes, /* serialize counted bytes */ - xdrstdio_getpos, /* get offset in the stream */ - xdrstdio_setpos, /* set offset in the stream */ - xdrstdio_inline, /* prime stream for inline macros */ - xdrstdio_destroy, /* destroy stream */ - xdrstdio_getint32, /* deserialize a int */ - xdrstdio_putint32 /* serialize a int */ -}; - -/* - * Initialize a stdio xdr stream. - * Sets the xdr stream handle xdrs for use on the stream file. - * Operation flag is set to op. - */ -void -xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) -{ - xdrs->x_op = op; - /* We have to add the const since the `struct xdr_ops' in `struct XDR' - is not `const'. */ - xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; - xdrs->x_private = (caddr_t) file; - xdrs->x_handy = 0; - xdrs->x_base = 0; -} - -/* - * Destroy a stdio xdr stream. - * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. - */ -static void -xdrstdio_destroy (XDR *xdrs) -{ - (void) fflush ((FILE *) xdrs->x_private); - /* xx should we close the file ?? */ -}; - -static bool_t -xdrstdio_getlong (XDR *xdrs, long *lp) -{ - u_int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *lp = (long) ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putlong (XDR *xdrs, const long *lp) -{ - int32_t mycopy = htonl ((u_int32_t) *lp); - - if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) -{ - if ((len != 0) && (fread (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) -{ - if ((len != 0) && (fwrite (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static u_int -xdrstdio_getpos (const XDR *xdrs) -{ - return (u_int) ftell ((FILE *) xdrs->x_private); -} - -static bool_t -xdrstdio_setpos (XDR *xdrs, u_int pos) -{ - return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; -} - -static int32_t * -xdrstdio_inline (XDR *xdrs, u_int len) -{ - /* - * Must do some work to implement this: must insure - * enough data in the underlying stdio buffer, - * that the buffer is aligned so that we can indirect through a - * long *, and stuff this pointer in xdrs->x_buf. Doing - * a fread or fwrite to a scratch buffer would defeat - * most of the gains to be had here and require storage - * management on this buffer, so we don't do this. - */ - return NULL; -} - -static bool_t -xdrstdio_getint32 (XDR *xdrs, int32_t *ip) -{ - int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *ip = ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) -{ - int32_t mycopy = htonl (*ip); - - ip = &mycopy; - if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/unres/src_MD/xdrf/xdrf.h b/source/unres/src_MD/xdrf/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/unres/src_MD/xdrf/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/unres/src_MIN/CMakeLists.txt b/source/unres/src_MIN/CMakeLists.txt new file mode 100644 index 0000000..c57587a --- /dev/null +++ b/source/unres/src_MIN/CMakeLists.txt @@ -0,0 +1,210 @@ +# +# CMake project file for UNRES with Minimazation +# + +enable_language (Fortran) + +#================================ +# Set source file lists +#================================ +set(UNRES_MIN_SRC0 + arcos.f + cartder.F + cartprint.f + chainbuild.F + checkder_p.F + convert.f + econstr_local.F + geomout_min.F + initialize_p.F + intcartderiv.F + intcor.f + intlocal.f + int_to_cart.f + matmult.f + minimize_p.F + misc.f + MP.F + parmread.F + pinorm.f + printmat.f + randgens.f + readrtns_min.F + rescode.f + rmdd.f + sumsld.f + timing.F + unres_min.F + +) + +set(UNRES_MIN_SRC1 + cored.f +) + +set(UNRES_MIN_SRC2 + readpdb.F +) + +set(UNRES_MIN_SRC3 + energy_p_new_barrier.F + gradient_p.F +) + +set(UNRES_MIN_PP_SRC + bank.F + cartder.F + chainbuild.F + checkder_p.F + compare_s1.F + cored.f + csa.f + dihed_cons.F + diff12.f + econstr_local.F + energy_p_new.F + energy_p_new_barrier.F + energy_split-sep.F + entmcm.F + gen_rand_conf.F + geomout.F + gradient_p.F + intcor.f + initialize_p.F + intcartderiv.F + lagrangian_lesyng.F + matmult.f + mc.F + mcm.F + MD_A-MTS.F + minimize_p.F + minim_jlee.F + minim_mcmf.F + MP.F + MREMD.F + newconf.f + parmread.F + permut.F + prng_32.F + q_measure1.F + q_measure3.F + q_measure.F + ran.f + rattle.F + readpdb.F + readrtns_min.F + regularize.F + rmdd.f + rmsd.F + sc_move.F + shift.F + stochfric.F + sumsld.f + test.F + thread.F + timing.F + together.F + unres.F +) + + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + find_package (Threads) + set(FFLAGS0 "-g -ip -w" ) + set(FFLAGS1 "-w -g -d2 -CA -CB" ) + set(FFLAGS2 "-w -g -00 ") + set(FFLAGS3 "-g -w -ipo " ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-O" ) + set(FFLAGS1 "-g -C" ) + set(FFLAGS2 "-g -O0 ") + set(FFLAGS3 "-O3" ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +set_property(SOURCE ${UNRES_MIN_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} ) +set_property(SOURCE ${UNRES_MIN_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} ) +set_property(SOURCE ${UNRES_MIN_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} ) +set_property(SOURCE ${UNRES_MIM_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} ) + +# set preprocesor flags +set(CPPFLAGS "PROCOR -DLINUX -DISNAN -DSPLITELE -DLANG0" ) + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + # Add ifort preprocessor flags + set(CPPFLAGS "${CPPFLAGS} -DPGI") +elseif (Fortran_COMPILER_NAME STREQUAL "f95") + # Add gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + # Add gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +# add 64-bit specific preprocessor flags +if (architektura STREQUAL "64") + set(CPPFLAGS "${CPPFLAGS} -DAMD64") +endif (architektura STREQUAL "64") + +# Apply preprocesor flags to *.F files +set_property(SOURCE ${UNRES_MIN_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + + +#======================================== +# Setting binary name +#======================================== +set(UNRES_BIN "unres_min_${Fortran_COMPILER_NAME}.exe") + +#set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) + +#========================================= +# Set full unres MIN sources +#========================================= +set(UNRES_MIN_SRCS ${UNRES_MIN_SRC0} ${UNRES_MIN_SRC1} ${UNRES_MIN_SRC2} ${UNRES_MIN_SRC3} cinfo.f ) + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_BIN-MIN ${UNRES_MIN_SRCS} ) +set_target_properties(UNRES_BIN-MIN PROPERTIES OUTPUT_NAME ${UNRES_BIN}) + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + target_link_libraries (UNRES_BIN-MIN ${CMAKE_THREAD_LIBS_INIT}) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + +#set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD ) + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= + +#if(NOT UNRES_WITH_MPI) + +# add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) + +#endif(NOT UNRES_WITH_MPI) + diff --git a/source/unres/src_MIN/Makefile_gfortran b/source/unres/src_MIN/Makefile_gfortran index 9401083..0c85368 100644 --- a/source/unres/src_MIN/Makefile_gfortran +++ b/source/unres/src_MIN/Makefile_gfortran @@ -20,7 +20,7 @@ FFLAGS2 = -c -g -O0 FFLAGSE = -c -O3 -BIN = ../bin/unres_min_gfortran.exe +BIN = ../../../bin/unres/MIN/unres_min_gfortran.exe LIBS = #LIBS = -lpthread diff --git a/source/unres/src_MIN/cinfo.f.new b/source/unres/src_MIN/cinfo.f.new deleted file mode 100644 index e69de29..0000000 diff --git a/source/unres/src_MIN/energy_p_new_barrier.F b/source/unres/src_MIN/energy_p_new_barrier.F index cd99bdb..3fcf739 100644 --- a/source/unres/src_MIN/energy_p_new_barrier.F +++ b/source/unres/src_MIN/energy_p_new_barrier.F @@ -629,7 +629,7 @@ c enddo gradc(j,i,icg)=gradbufc(j,i)+welec*gelc(j,i)+ & wel_loc*gel_loc(j,i)+ & 0.5d0*(wscp*gvdwc_scpp(j,i)+ - & welec*gelc_long(j,i) + & welec*gelc_long(j,i)+ & wel_loc*gel_loc_long(j,i)+ & wcorr*gcorr_long(j,i)+ & wcorr5*gradcorr5_long(j,i)+ @@ -7906,18 +7906,18 @@ c-------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ /j\ -C / \ / \ -C /| o | | o |\ -C \ j|/k\| / \ |/k\|l / -C \ / \ / \ / \ / -C o o o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ /j\ C +C / \ / \ C +C /| o | | o |\ C +C \ j|/k\| / \ |/k\|l / C +C \ / \ / \ / \ / C +C o o o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC itk=itortyp(itype(k)) s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i)) @@ -8011,18 +8011,18 @@ c---------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C \ /l\ /j\ / -C \ / \ / \ / -C o| o | | o |o -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C \ /l\ /j\ / C +C \ / \ / \ / C +C o| o | | o |o C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l C AL 7/4/01 s1 would occur in the sixth-order moment, @@ -8193,18 +8193,18 @@ c---------------------------------------------------------------------------- double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C j|/k\| / |/k\|l / -C / \ / / \ / -C / o / o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C j|/k\| / |/k\|l / C +C / \ / / \ / C +C / o / o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective @@ -8310,18 +8310,18 @@ c---------------------------------------------------------------------------- & auxvec1(2),auxmat1(2,2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o \ o \ -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o \ o \ C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective diff --git a/source/wham/src-M/CMakeLists.txt b/source/wham/src-M/CMakeLists.txt new file mode 100644 index 0000000..184194c --- /dev/null +++ b/source/wham/src-M/CMakeLists.txt @@ -0,0 +1,286 @@ +# +# CMake project file for WHAM multichain version +# + +enable_language (Fortran) + +#================================ +# Set source file lists +#================================ +set(UNRES_WHAM_M_SRC0 + wham_multparm.F + bxread.F + xread.F + cxread.F + enecalc1.F + energy_p_new.F + initialize_p.F + molread_zs.F + openunits.F + readrtns.F + arcos.f + cartder.f + cartprint.f + chainbuild.F + geomout.F + gnmr1.f + icant.f + intcor.f + int_from_cart.f + make_ensemble1.F + matmult.f + misc.f + mygetenv.F + parmread.F + permut.F + pinorm.f + printmat.f + rescode.f + setup_var.f + slices.F + store_parm.F + timing.F + wham_calc1.F + readrtns_compar.F + read_dist_constr.F + readpdb.f + fitsq.f + contact.f + elecont.f + contfunc.f + cont_frag.f + conf_compar.F + match_contact.f + angnorm.f + odlodc.f + promienie.f + qwolynes.f + read_ref_str.F + rmscalc.f + secondary.f + proc_cont.f + define_pairs.f + mysort.f +) + +set(UNRES_WHAM_M_PP_SRC + bxread.F + chainbuild.F + conf_compar.F + cxread.F + enecalc1.F + energy_p_new.F + geomout.F + initialize_p.F + make_ensemble1.F + molread_zs.F + mygetenv.F + openunits.F + parmread.F + permut.F + read_ref_str.F + read_dist_constr.F + readrtns_compar.F + readrtns.F + slices.F + store_parm.F + timing.F + wham_calc1.F + wham_multparm.F + xread.F + proc_proc.c +) + + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(FFLAGS0 "-g -CB -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres -I${MPIF_INCLUDE_DIRECTORIES}" ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-g -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres -I${MPIF_INCLUDE_DIRECTORIES}" ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +#========================================= +# Add MPI compiler flags +#========================================= +if(UNRES_WITH_MPI) + set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}") +endif(UNRES_WITH_MPI) + +set_property(SOURCE ${UNRES_WHAM_M_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# WHAM preprocesor flags +#========================================= + +set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +#========================================= +# Compiler specific flags +#========================================= + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + # Add ifort preprocessor flags + set(CPPFLAGS "${CPPFLAGS} -DPGI") +elseif (Fortran_COMPILER_NAME STREQUAL "f95") + # Add new gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + # Add old gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + +#========================================= +# Add MPI preprocessor flags +#========================================= +set(CPPFLAGS "${CPPFLAGS} -DMPI") + +#========================================= +# Add 64-bit specific preprocessor flags +#========================================= +if (architektura STREQUAL "64") + set(CPPFLAGS "${CPPFLAGS} -DAMD64") +endif (architektura STREQUAL "64") + +#========================================= +# Apply preprocesor flags to *.F files +#========================================= +set_property(SOURCE ${UNRES_WHAM_M_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + +#======================================== +# Setting binary name +#======================================== +set(UNRES_WHAM_M_BIN "wham_${Fortran_COMPILER_NAME}.exe") + +#========================================= +# cinfo.f stupid workaround for cmake +# - shame on me ]:) +#========================================= +set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" ) +add_executable(compinfo-wham-m compinfo.c) +set_target_properties(compinfo-wham-m PROPERTIES OUTPUT_NAME compinfo) + +set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true + DEPENDS compinfo-wham-m ) +set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# Set full unres CSA sources +#========================================= +set(UNRES_WHAM_M_SRCS ${UNRES_WHAM_M_SRC0} ${UNRES_CINFO_DIR}/cinfo.f proc_proc.c) + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_WHAM_M_BIN ${UNRES_WHAM_M_SRCS} ) +set_target_properties(UNRES_WHAM_M_BIN PROPERTIES OUTPUT_NAME ${UNRES_WHAM_M_BIN}) + +#set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD ) +#add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB}) + +#========================================= +# Link libraries +#========================================= +# link MPI library (libmpich.a) +target_link_libraries( UNRES_WHAM_M_BIN ${MPIF_LIBRARIES} ) +# link libxdrf.a +target_link_libraries( UNRES_WHAM_M_BIN xdrf ) + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= +# test_single_ala.sh +#========================================= + +#FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh +#"#!/bin/sh +#export POT=GB +#export PREFIX=ala10 +#----------------------------------------------------------------------------- +#UNRES_BIN=./${UNRES_BIN} +#----------------------------------------------------------------------------- +#DD=${CMAKE_SOURCE_DIR}/PARAM +#export BONDPAR=$DD/bond.parm +#export THETPAR=$DD/thetaml.5parm +#export ROTPAR=$DD/scgauss.parm +#export TORPAR=$DD/torsion_631Gdp.parm +#export TORDPAR=$DD/torsion_double_631Gdp.parm +#export ELEPAR=$DD/electr_631Gdp.parm +#export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k +#export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3 +#export SCPPAR=$DD/scp.parm +#export SCCORPAR=$DD/rotcorr_AM1.parm +#export PATTERN=$DD/patterns.cart +#----------------------------------------------------------------------------- +#$UNRES_BIN +#") + +#========================================= +# ala10.inp +#========================================= + +#file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp +#"ala10 unblocked +#SEED=-1111333 MD ONE_LETTER rescale_mode=2 PDBOUT +#nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0 & +#reset_moment=1000 reset_vel=1000 MDPDB +#WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873 & +#WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000 & +#WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000 & +#WVDWPP=0.11371 WHPB=1.00000 & +#CUTOFF=7.00000 WCORR4=0.00000 +#12 +#XAAAAAAAAAAX +# 0 +# 0 +# 90.0000 90.0000 90.0000 90.000 90.000 90.000 90.000 90.000 +# 90.0000 90.0000 +# 180.0000 180.0000 180.0000 180.000 180.000 180.000 180.000 180.000 +# 180.0000 +# 110.0000 110.0000 110.0000 100.000 110.000 100.000 110.000 110.000 +# 110.0000 110.0000 +# -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000 +# -120.0000 -120.0000 +#") + + +# Add tests + +#if(NOT UNRES_WITH_MPI) + +# add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) + +#endif(NOT UNRES_WITH_MPI) diff --git a/source/wham/src-M/compinfo b/source/wham/src-M/compinfo deleted file mode 100755 index a9d3c1d..0000000 Binary files a/source/wham/src-M/compinfo and /dev/null differ diff --git a/source/wham/src-M/compinfo.c b/source/wham/src-M/compinfo.c index 813cf31..e28f686 100644 --- a/source/wham/src-M/compinfo.c +++ b/source/wham/src-M/compinfo.c @@ -14,10 +14,10 @@ time_t Tp; in=fopen("cinfo.f","r"); out=fopen("cinfo.f.new","w"); -fgets(buf,498,in); -fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); -fgets(buf,498,in); -sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); +if (fgets(buf,498,in) != NULL) + fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); +if (fgets(buf,498,in) != NULL) + sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); iv3++; fprintf(out,"C %d %d %d\n",iv1,iv2,iv3); fprintf(out," subroutine cinfo\n"); @@ -26,18 +26,22 @@ fprintf(out," write(iout,*)'++++ Compile info ++++'\n"); fprintf(out," write(iout,*)'Version %d.%-d build %d'\n",iv1,iv2,iv3); uname(&Name); time(&Tp); -system("rm tmptmp; whoami > tmptmp"); +system("whoami > tmptmp"); in1=fopen("tmptmp","r"); -fscanf(in1,"%s",buf1); -fclose(in1); +if (fscanf(in1,"%s",buf1) != EOF) +{ p1=ctime(&Tp); p1[strlen(p1)-1]='\0'; fprintf(out," write(iout,*)'compiled %s'\n",p1); fprintf(out," write(iout,*)'compiled by %s@%s'\n",buf1,Name.nodename); fprintf(out," write(iout,*)'OS name: %s '\n",Name.sysname); fprintf(out," write(iout,*)'OS release: %s '\n",Name.release); -fprintf(out," write(iout,*)'OS version: %s '\n",Name.version); +fprintf(out," write(iout,*)'OS version:',\n"); +fprintf(out," & ' %s '\n",Name.version); fprintf(out," write(iout,*)'flags:'\n"); +} +system("rm tmptmp"); +fclose(in1); in1=fopen("Makefile","r"); while(fgets(buf,498,in1) != NULL) { @@ -55,8 +59,8 @@ while(fgets(buf,498,in1) != NULL) { strcat(buf,"\\"); fprintf(out," write(iout,*)'%s'\n",buf); - fgets(buf,498,in1); - buf[strlen(buf)-1]='\0'; + if (fgets(buf,498,in1) != NULL) + buf[strlen(buf)-1]='\0'; if(strlen(buf) > 49) { buf[47]='\0'; diff --git a/source/wham/src-M/differ b/source/wham/src-M/differ deleted file mode 100644 index 48384a1..0000000 --- a/source/wham/src-M/differ +++ /dev/null @@ -1,5173 +0,0 @@ -1c1 -< subroutine etotal(energia,fact) ---- -> subroutine etotal(energia) -4,5d3 -< include 'DIMENSIONS.ZSCOPT' -< -8d5 -< #endif -12,18d8 -< -< include 'COMMON.IOUNITS' -< double precision energia(0:max_ene),energia1(0:max_ene+1) -< #ifdef MPL -< include 'COMMON.INFO' -< external d_vadd -< integer ready -19a10,17 -> #ifdef MPI -> include "mpif.h" -> double precision weights_(n_ene) -> #endif -> include 'COMMON.SETUP' -> include 'COMMON.IOUNITS' -> double precision energia(0:n_ene) -> include 'COMMON.LOCAL' -25,28c23,98 -< double precision fact(6) -< cd write(iout, '(a,i2)')'Calling etotal ipot=',ipot -< cd print *,'nnt=',nnt,' nct=',nct -< C ---- -> include 'COMMON.VAR' -> include 'COMMON.MD' -> include 'COMMON.CONTROL' -> include 'COMMON.TIME1' -> #ifdef MPI -> c print*,"ETOTAL Processor",fg_rank," absolute rank",myrank, -> c & " nfgtasks",nfgtasks -> if (nfgtasks.gt.1) then -> time00=MPI_Wtime() -> C FG slaves call the following matching MPI_Bcast in ERGASTULUM -> if (fg_rank.eq.0) then -> call MPI_Bcast(0,1,MPI_INTEGER,king,FG_COMM,IERROR) -> c print *,"Processor",myrank," BROADCAST iorder" -> C FG master sets up the WEIGHTS_ array which will be broadcast to the -> C FG slaves as WEIGHTS array. -> weights_(1)=wsc -> weights_(2)=wscp -> weights_(3)=welec -> weights_(4)=wcorr -> weights_(5)=wcorr5 -> weights_(6)=wcorr6 -> weights_(7)=wel_loc -> weights_(8)=wturn3 -> weights_(9)=wturn4 -> weights_(10)=wturn6 -> weights_(11)=wang -> weights_(12)=wscloc -> weights_(13)=wtor -> weights_(14)=wtor_d -> weights_(15)=wstrain -> weights_(16)=wvdwpp -> weights_(17)=wbond -> weights_(18)=scal14 -> weights_(21)=wsccor -> C FG Master broadcasts the WEIGHTS_ array -> call MPI_Bcast(weights_(1),n_ene, -> & MPI_DOUBLE_PRECISION,king,FG_COMM,IERROR) -> else -> C FG slaves receive the WEIGHTS array -> call MPI_Bcast(weights(1),n_ene, -> & MPI_DOUBLE_PRECISION,king,FG_COMM,IERROR) -> wsc=weights(1) -> wscp=weights(2) -> welec=weights(3) -> wcorr=weights(4) -> wcorr5=weights(5) -> wcorr6=weights(6) -> wel_loc=weights(7) -> wturn3=weights(8) -> wturn4=weights(9) -> wturn6=weights(10) -> wang=weights(11) -> wscloc=weights(12) -> wtor=weights(13) -> wtor_d=weights(14) -> wstrain=weights(15) -> wvdwpp=weights(16) -> wbond=weights(17) -> scal14=weights(18) -> wsccor=weights(21) -> endif -> time_Bcast=time_Bcast+MPI_Wtime()-time00 -> time_Bcastw=time_Bcastw+MPI_Wtime()-time00 -> c call chainbuild_cart -> endif -> c print *,'Processor',myrank,' calling etotal ipot=',ipot -> c print *,'Processor',myrank,' nnt=',nnt,' nct=',nct -> #else -> c if (modecalc.eq.12.or.modecalc.eq.14) then -> c call int_from_cart1(.false.) -> c endif -> #endif -> #ifdef TIMING -> time00=MPI_Wtime() -> #endif -> C -31c101 -< goto (101,102,103,104,105) ipot ---- -> goto (101,102,103,104,105,106) ipot -33c103 -< 101 call elj(evdw,evdw_t) ---- -> 101 call elj(evdw) -35c105 -< goto 106 ---- -> goto 107 -37,38c107,108 -< 102 call eljk(evdw,evdw_t) -< goto 106 ---- -> 102 call eljk(evdw) -> goto 107 -40,41c110,111 -< 103 call ebp(evdw,evdw_t) -< goto 106 ---- -> 103 call ebp(evdw) -> goto 107 -43,44c113,114 -< 104 call egb(evdw,evdw_t) -< goto 106 ---- -> 104 call egb(evdw) -> goto 107 -46c116,119 -< 105 call egbv(evdw,evdw_t) ---- -> 105 call egbv(evdw) -> goto 107 -> C Soft-sphere potential -> 106 call e_softsphere(evdw) -50c123,158 -< 106 call eelec(ees,evdw1,eel_loc,eello_turn3,eello_turn4) ---- -> 107 continue -> c print *,"Processor",myrank," computed USCSC" -> #ifdef TIMING -> time01=MPI_Wtime() -> #endif -> call vec_and_deriv -> #ifdef TIMING -> time_vec=time_vec+MPI_Wtime()-time01 -> #endif -> c print *,"Processor",myrank," left VEC_AND_DERIV" -> if (ipot.lt.6) then -> #ifdef SPLITELE -> if (welec.gt.0d0.or.wvdwpp.gt.0d0.or.wel_loc.gt.0d0.or. -> & wturn3.gt.0d0.or.wturn4.gt.0d0 .or. wcorr.gt.0.0d0 -> & .or. wcorr4.gt.0.0d0 .or. wcorr5.gt.0.d0 -> & .or. wcorr6.gt.0.0d0 .or. wturn6.gt.0.0d0 ) then -> #else -> if (welec.gt.0d0.or.wel_loc.gt.0d0.or. -> & wturn3.gt.0d0.or.wturn4.gt.0d0 .or. wcorr.gt.0.0d0 -> & .or. wcorr4.gt.0.0d0 .or. wcorr5.gt.0.d0 -> & .or. wcorr6.gt.0.0d0 .or. wturn6.gt.0.0d0 ) then -> #endif -> call eelec(ees,evdw1,eel_loc,eello_turn3,eello_turn4) -> else -> ees=0.0d0 -> evdw1=0.0d0 -> eel_loc=0.0d0 -> eello_turn3=0.0d0 -> eello_turn4=0.0d0 -> endif -> else -> c write (iout,*) "Soft-spheer ELEC potential" -> call eelec_soft_sphere(ees,evdw1,eel_loc,eello_turn3, -> & eello_turn4) -> endif -> c print *,"Processor",myrank," computed UELEC" -55c163,173 -< call escp(evdw2,evdw2_14) ---- -> if (ipot.lt.6) then -> if(wscp.gt.0d0) then -> call escp(evdw2,evdw2_14) -> else -> evdw2=0 -> evdw2_14=0 -> endif -> else -> c write (iout,*) "Soft-sphere SCP potential" -> call escp_soft_sphere(evdw2,evdw2_14) -> endif -60d177 -< c write (iout,*) "estr",estr -70,71c187,192 -< call ebend(ebe) -< cd print *,'Bend energy finished.' ---- -> if (wang.gt.0d0) then -> call ebend(ebe) -> else -> ebe=0 -> endif -> c print *,"Processor",myrank," computed UB" -76c197 -< cd print *,'SCLOC energy finished.' ---- -> c print *,"Processor",myrank," computed USC" -81c202,208 -< call etor(etors,edihcnstr,fact(1)) ---- -> if (wtor.gt.0) then -> call etor(etors,edihcnstr) -> else -> etors=0 -> edihcnstr=0 -> endif -> c print *,"Processor",myrank," computed Utor" -85c212,217 -< call etor_d(etors_d,fact(2)) ---- -> if (wtor_d.gt.0) then -> call etor_d(etors_d) -> else -> etors_d=0 -> endif -> c print *,"Processor",myrank," computed Utord" -89c221,226 -< call eback_sc_corr(esccor) ---- -> if (wsccor.gt.0.0d0) then -> call eback_sc_corr(esccor) -> else -> esccor=0.0d0 -> endif -> c print *,"Processor",myrank," computed Usccorr" -95,97c232,233 -< if (wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0 -< & .or. wturn6.gt.0.0d0) then -< c print *,"calling multibody_eello" ---- -> if ((wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0 -> & .or. wturn6.gt.0.0d0) .and. ipot.lt.6) then -99,100c235,241 -< c write (*,*) 'n_corr=',n_corr,' n_corr1=',n_corr1 -< c print *,ecorr,ecorr5,ecorr6,eturn6 ---- -> cd write(2,*)'multibody_eello n_corr=',n_corr,' n_corr1=',n_corr1, -> cd &" ecorr",ecorr," ecorr5",ecorr5," ecorr6",ecorr6," eturn6",eturn6 -> else -> ecorr=0.0d0 -> ecorr5=0.0d0 -> ecorr6=0.0d0 -> eturn6=0.0d0 -102c243 -< if (wcorr4.eq.0.0d0 .and. wcorr.gt.0.0d0) then ---- -> if ((wcorr4.eq.0.0d0 .and. wcorr.gt.0.0d0) .and. ipot.lt.6) then -103a245 -> cd write (iout,*) "multibody_hb ecorr",ecorr -105,123c247,259 -< c write (iout,*) "ft(6)",fact(6)," evdw",evdw," evdw_t",evdw_t -< #ifdef SPLITELE -< etot=wsc*(evdw+fact(6)*evdw_t)+wscp*evdw2+welec*fact(1)*ees -< & +wvdwpp*evdw1 -< & +wang*ebe+wtor*fact(1)*etors+wscloc*escloc -< & +wstrain*ehpb+nss*ebr+wcorr*fact(3)*ecorr+wcorr5*fact(4)*ecorr5 -< & +wcorr6*fact(5)*ecorr6+wturn4*fact(3)*eello_turn4 -< & +wturn3*fact(2)*eello_turn3+wturn6*fact(5)*eturn6 -< & +wel_loc*fact(2)*eel_loc+edihcnstr+wtor_d*fact(2)*etors_d -< & +wbond*estr+wsccor*fact(1)*esccor -< #else -< etot=wsc*(evdw+fact(6)*evdw_t)+wscp*evdw2 -< & +welec*fact(1)*(ees+evdw1) -< & +wang*ebe+wtor*fact(1)*etors+wscloc*escloc -< & +wstrain*ehpb+nss*ebr+wcorr*fact(3)*ecorr+wcorr5*fact(4)*ecorr5 -< & +wcorr6*fact(5)*ecorr6+wturn4*fact(3)*eello_turn4 -< & +wturn3*fact(2)*eello_turn3+wturn6*fact(5)*eturn6 -< & +wel_loc*fact(2)*eel_loc+edihcnstr+wtor_d*fact(2)*etors_d -< & +wbond*estr+wsccor*fact(1)*esccor ---- -> c print *,"Processor",myrank," computed Ucorr" -> C -> C If performing constraint dynamics, call the constraint energy -> C after the equilibration time -> if(usampl.and.totT.gt.eq_time) then -> call EconstrQ -> call Econstr_back -> else -> Uconst=0.0d0 -> Uconst_back=0.0d0 -> endif -> #ifdef TIMING -> time_enecalc=time_enecalc+MPI_Wtime()-time00 -125c261,267 -< energia(0)=etot ---- -> c print *,"Processor",myrank," computed Uconstr" -> #ifdef TIMING -> time00=MPI_Wtime() -> #endif -> c -> C Sum the energies -> C -129c271 -< energia(17)=evdw2_14 ---- -> energia(18)=evdw2_14 -132c274 -< energia(17)=0.0d0 ---- -> energia(18)=0.0d0 -153,156c295,402 -< energia(18)=estr -< energia(19)=esccor -< energia(20)=edihcnstr -< energia(21)=evdw_t ---- -> energia(19)=edihcnstr -> energia(17)=estr -> energia(20)=Uconst+Uconst_back -> energia(21)=esccor -> c print *," Processor",myrank," calls SUM_ENERGY" -> call sum_energy(energia,.true.) -> c print *," Processor",myrank," left SUM_ENERGY" -> #ifdef TIMING -> time_sumene=time_sumene+MPI_Wtime()-time00 -> #endif -> return -> end -> c------------------------------------------------------------------------------- -> subroutine sum_energy(energia,reduce) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> #ifndef ISNAN -> external proc_proc -> #ifdef WINPGI -> cMS$ATTRIBUTES C :: proc_proc -> #endif -> #endif -> #ifdef MPI -> include "mpif.h" -> #endif -> include 'COMMON.SETUP' -> include 'COMMON.IOUNITS' -> double precision energia(0:n_ene),enebuff(0:n_ene+1) -> include 'COMMON.FFIELD' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.SBRIDGE' -> include 'COMMON.CHAIN' -> include 'COMMON.VAR' -> include 'COMMON.CONTROL' -> include 'COMMON.TIME1' -> logical reduce -> #ifdef MPI -> if (nfgtasks.gt.1 .and. reduce) then -> #ifdef DEBUG -> write (iout,*) "energies before REDUCE" -> call enerprint(energia) -> call flush(iout) -> #endif -> do i=0,n_ene -> enebuff(i)=energia(i) -> enddo -> time00=MPI_Wtime() -> call MPI_Barrier(FG_COMM,IERR) -> time_barrier_e=time_barrier_e+MPI_Wtime()-time00 -> time00=MPI_Wtime() -> call MPI_Reduce(enebuff(0),energia(0),n_ene+1, -> & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) -> #ifdef DEBUG -> write (iout,*) "energies after REDUCE" -> call enerprint(energia) -> call flush(iout) -> #endif -> time_Reduce=time_Reduce+MPI_Wtime()-time00 -> endif -> if (fg_rank.eq.0) then -> #endif -> evdw=energia(1) -> #ifdef SCP14 -> evdw2=energia(2)+energia(18) -> evdw2_14=energia(18) -> #else -> evdw2=energia(2) -> #endif -> #ifdef SPLITELE -> ees=energia(3) -> evdw1=energia(16) -> #else -> ees=energia(3) -> evdw1=0.0d0 -> #endif -> ecorr=energia(4) -> ecorr5=energia(5) -> ecorr6=energia(6) -> eel_loc=energia(7) -> eello_turn3=energia(8) -> eello_turn4=energia(9) -> eturn6=energia(10) -> ebe=energia(11) -> escloc=energia(12) -> etors=energia(13) -> etors_d=energia(14) -> ehpb=energia(15) -> edihcnstr=energia(19) -> estr=energia(17) -> Uconst=energia(20) -> esccor=energia(21) -> #ifdef SPLITELE -> etot=wsc*evdw+wscp*evdw2+welec*ees+wvdwpp*evdw1 -> & +wang*ebe+wtor*etors+wscloc*escloc -> & +wstrain*ehpb+nss*ebr+wcorr*ecorr+wcorr5*ecorr5 -> & +wcorr6*ecorr6+wturn4*eello_turn4+wturn3*eello_turn3 -> & +wturn6*eturn6+wel_loc*eel_loc+edihcnstr+wtor_d*etors_d -> & +wbond*estr+Uconst+wsccor*esccor -> #else -> etot=wsc*evdw+wscp*evdw2+welec*(ees+evdw1) -> & +wang*ebe+wtor*etors+wscloc*escloc -> & +wstrain*ehpb+nss*ebr+wcorr*ecorr+wcorr5*ecorr5 -> & +wcorr6*ecorr6+wturn4*eello_turn4+wturn3*eello_turn3 -> & +wturn6*eturn6+wel_loc*eel_loc+edihcnstr+wtor_d*etors_d -> & +wbond*estr+Uconst+wsccor*esccor -> #endif -> energia(0)=etot -173,174c419,464 -< #ifdef MPL -< c endif ---- -> #ifdef MPI -> endif -> #endif -> return -> end -> c------------------------------------------------------------------------------- -> subroutine sum_gradient -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> #ifndef ISNAN -> external proc_proc -> #ifdef WINPGI -> cMS$ATTRIBUTES C :: proc_proc -> #endif -> #endif -> #ifdef MPI -> include 'mpif.h' -> double precision gradbufc(3,maxres),gradbufx(3,maxres), -> & glocbuf(4*maxres),gradbufc_sum(3,maxres) -> #endif -> include 'COMMON.SETUP' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.SBRIDGE' -> include 'COMMON.CHAIN' -> include 'COMMON.VAR' -> include 'COMMON.CONTROL' -> include 'COMMON.TIME1' -> include 'COMMON.MAXGRAD' -> #ifdef TIMING -> time01=MPI_Wtime() -> #endif -> #ifdef DEBUG -> write (iout,*) "sum_gradient gvdwc, gvdwx" -> do i=1,nres -> write (iout,'(i3,3f10.5,5x,3f10.5,5x,f10.5)') -> & i,(gvdwx(j,i),j=1,3),(gvdwc(j,i),j=1,3) -> enddo -> call flush(iout) -> #endif -> #ifdef MPI -> C FG slaves call the following matching MPI_Bcast in ERGASTULUM -> if (nfgtasks.gt.1 .and. fg_rank.eq.0) -> & call MPI_Bcast(1,1,MPI_INTEGER,king,FG_COMM,IERROR) -176d465 -< if (calc_grad) then -178c467,468 -< C Sum up the components of the Cartesian gradient. ---- -> C 9/29/08 AL Transform parts of gradients in site coordinates to the gradient -> C in virtual-bond-vector coordinates -179a470,488 -> #ifdef DEBUG -> c write (iout,*) "gel_loc gel_loc_long and gel_loc_loc" -> c do i=1,nres-1 -> c write (iout,'(i5,3f10.5,2x,3f10.5,2x,f10.5)') -> c & i,(gel_loc(j,i),j=1,3),(gel_loc_long(j,i),j=1,3),gel_loc_loc(i) -> c enddo -> c write (iout,*) "gel_loc_tur3 gel_loc_turn4" -> c do i=1,nres-1 -> c write (iout,'(i5,3f10.5,2x,f10.5)') -> c & i,(gcorr4_turn(j,i),j=1,3),gel_loc_turn4(i) -> c enddo -> write (iout,*) "gradcorr5 gradcorr5_long gradcorr5_loc" -> do i=1,nres -> write (iout,'(i3,3f10.5,5x,3f10.5,5x,f10.5)') -> & i,(gradcorr5(j,i),j=1,3),(gradcorr5_long(j,i),j=1,3), -> & g_corr5_loc(i) -> enddo -> call flush(iout) -> #endif -183,198c492,500 -< gradc(j,i,icg)=wsc*gvdwc(j,i)+wscp*gvdwc_scp(j,i)+ -< & welec*fact(1)*gelc(j,i)+wvdwpp*gvdwpp(j,i)+ -< & wbond*gradb(j,i)+ -< & wstrain*ghpbc(j,i)+ -< & wcorr*fact(3)*gradcorr(j,i)+ -< & wel_loc*fact(2)*gel_loc(j,i)+ -< & wturn3*fact(2)*gcorr3_turn(j,i)+ -< & wturn4*fact(3)*gcorr4_turn(j,i)+ -< & wcorr5*fact(4)*gradcorr5(j,i)+ -< & wcorr6*fact(5)*gradcorr6(j,i)+ -< & wturn6*fact(5)*gcorr6_turn(j,i)+ -< & wsccor*fact(2)*gsccorc(j,i) -< gradx(j,i,icg)=wsc*gvdwx(j,i)+wscp*gradx_scp(j,i)+ -< & wbond*gradbx(j,i)+ -< & wstrain*ghpbx(j,i)+wcorr*gradxorr(j,i)+ -< & wsccor*fact(2)*gsccorx(j,i) ---- -> gradbufc(j,i)=wsc*gvdwc(j,i)+ -> & wscp*(gvdwc_scp(j,i)+gvdwc_scpp(j,i))+ -> & welec*gelc_long(j,i)+wvdwpp*gvdwpp(j,i)+ -> & wel_loc*gel_loc_long(j,i)+ -> & wcorr*gradcorr_long(j,i)+ -> & wcorr5*gradcorr5_long(j,i)+ -> & wcorr6*gradcorr6_long(j,i)+ -> & wturn6*gcorr6_turn_long(j,i)+ -> & wstrain*ghpbc(j,i) -199a502 -> enddo -203,204c506,508 -< gradc(j,i,icg)=wsc*gvdwc(j,i)+wscp*gvdwc_scp(j,i)+ -< & welec*fact(1)*gelc(j,i)+wstrain*ghpbc(j,i)+ ---- -> gradbufc(j,i)=wsc*gvdwc(j,i)+ -> & wscp*(gvdwc_scp(j,i)+gvdwc_scpp(j,i))+ -> & welec*gelc_long(j,i)+ -206,213c510,670 -< & wcorr*fact(3)*gradcorr(j,i)+ -< & wel_loc*fact(2)*gel_loc(j,i)+ -< & wturn3*fact(2)*gcorr3_turn(j,i)+ -< & wturn4*fact(3)*gcorr4_turn(j,i)+ -< & wcorr5*fact(4)*gradcorr5(j,i)+ -< & wcorr6*fact(5)*gradcorr6(j,i)+ -< & wturn6*fact(5)*gcorr6_turn(j,i)+ -< & wsccor*fact(2)*gsccorc(j,i) ---- -> & wel_loc*gel_loc_long(j,i)+ -> & wcorr*gradcorr_long(j,i)+ -> & wcorr5*gradcorr5_long(j,i)+ -> & wcorr6*gradcorr6_long(j,i)+ -> & wturn6*gcorr6_turn_long(j,i)+ -> & wstrain*ghpbc(j,i) -> enddo -> enddo -> #endif -> #ifdef MPI -> if (nfgtasks.gt.1) then -> time00=MPI_Wtime() -> #ifdef DEBUG -> write (iout,*) "gradbufc before allreduce" -> do i=1,nres -> write (iout,'(i3,3f10.5)') i,(gradbufc(j,i),j=1,3) -> enddo -> call flush(iout) -> #endif -> do i=1,nres -> do j=1,3 -> gradbufc_sum(j,i)=gradbufc(j,i) -> enddo -> enddo -> c call MPI_AllReduce(gradbufc(1,1),gradbufc_sum(1,1),3*nres, -> c & MPI_DOUBLE_PRECISION,MPI_SUM,FG_COMM,IERR) -> c time_reduce=time_reduce+MPI_Wtime()-time00 -> #ifdef DEBUG -> c write (iout,*) "gradbufc_sum after allreduce" -> c do i=1,nres -> c write (iout,'(i3,3f10.5)') i,(gradbufc_sum(j,i),j=1,3) -> c enddo -> c call flush(iout) -> #endif -> #ifdef TIMING -> c time_allreduce=time_allreduce+MPI_Wtime()-time00 -> #endif -> do i=nnt,nres -> do k=1,3 -> gradbufc(k,i)=0.0d0 -> enddo -> enddo -> #ifdef DEBUG -> write (iout,*) "igrad_start",igrad_start," igrad_end",igrad_end -> write (iout,*) (i," jgrad_start",jgrad_start(i), -> & " jgrad_end ",jgrad_end(i), -> & i=igrad_start,igrad_end) -> #endif -> c -> c Obsolete and inefficient code; we can make the effort O(n) and, therefore, -> c do not parallelize this part. -> c -> c do i=igrad_start,igrad_end -> c do j=jgrad_start(i),jgrad_end(i) -> c do k=1,3 -> c gradbufc(k,i)=gradbufc(k,i)+gradbufc_sum(k,j) -> c enddo -> c enddo -> c enddo -> do j=1,3 -> gradbufc(j,nres-1)=gradbufc_sum(j,nres) -> enddo -> do i=nres-2,nnt,-1 -> do j=1,3 -> gradbufc(j,i)=gradbufc(j,i+1)+gradbufc_sum(j,i+1) -> enddo -> enddo -> #ifdef DEBUG -> write (iout,*) "gradbufc after summing" -> do i=1,nres -> write (iout,'(i3,3f10.5)') i,(gradbufc(j,i),j=1,3) -> enddo -> call flush(iout) -> #endif -> else -> #endif -> #ifdef DEBUG -> write (iout,*) "gradbufc" -> do i=1,nres -> write (iout,'(i3,3f10.5)') i,(gradbufc(j,i),j=1,3) -> enddo -> call flush(iout) -> #endif -> do i=1,nres -> do j=1,3 -> gradbufc_sum(j,i)=gradbufc(j,i) -> gradbufc(j,i)=0.0d0 -> enddo -> enddo -> do j=1,3 -> gradbufc(j,nres-1)=gradbufc_sum(j,nres) -> enddo -> do i=nres-2,nnt,-1 -> do j=1,3 -> gradbufc(j,i)=gradbufc(j,i+1)+gradbufc_sum(j,i+1) -> enddo -> enddo -> c do i=nnt,nres-1 -> c do k=1,3 -> c gradbufc(k,i)=0.0d0 -> c enddo -> c do j=i+1,nres -> c do k=1,3 -> c gradbufc(k,i)=gradbufc(k,i)+gradbufc(k,j) -> c enddo -> c enddo -> c enddo -> #ifdef DEBUG -> write (iout,*) "gradbufc after summing" -> do i=1,nres -> write (iout,'(i3,3f10.5)') i,(gradbufc(j,i),j=1,3) -> enddo -> call flush(iout) -> #endif -> #ifdef MPI -> endif -> #endif -> do k=1,3 -> gradbufc(k,nres)=0.0d0 -> enddo -> do i=1,nct -> do j=1,3 -> #ifdef SPLITELE -> gradc(j,i,icg)=gradbufc(j,i)+welec*gelc(j,i)+ -> & wel_loc*gel_loc(j,i)+ -> & 0.5d0*(wscp*gvdwc_scpp(j,i)+ -> & welec*gelc_long(j,i)+wvdwpp*gvdwpp(j,i)+ -> & wel_loc*gel_loc_long(j,i)+ -> & wcorr*gradcorr_long(j,i)+ -> & wcorr5*gradcorr5_long(j,i)+ -> & wcorr6*gradcorr6_long(j,i)+ -> & wturn6*gcorr6_turn_long(j,i))+ -> & wbond*gradb(j,i)+ -> & wcorr*gradcorr(j,i)+ -> & wturn3*gcorr3_turn(j,i)+ -> & wturn4*gcorr4_turn(j,i)+ -> & wcorr5*gradcorr5(j,i)+ -> & wcorr6*gradcorr6(j,i)+ -> & wturn6*gcorr6_turn(j,i)+ -> & wsccor*gsccorc(j,i) -> & +wscloc*gscloc(j,i) -> #else -> gradc(j,i,icg)=gradbufc(j,i)+welec*gelc(j,i)+ -> & wel_loc*gel_loc(j,i)+ -> & 0.5d0*(wscp*gvdwc_scpp(j,i)+ -> & welec*gelc_long(j,i) -> & wel_loc*gel_loc_long(j,i)+ -> & wcorr*gcorr_long(j,i)+ -> & wcorr5*gradcorr5_long(j,i)+ -> & wcorr6*gradcorr6_long(j,i)+ -> & wturn6*gcorr6_turn_long(j,i))+ -> & wbond*gradb(j,i)+ -> & wcorr*gradcorr(j,i)+ -> & wturn3*gcorr3_turn(j,i)+ -> & wturn4*gcorr4_turn(j,i)+ -> & wcorr5*gradcorr5(j,i)+ -> & wcorr6*gradcorr6(j,i)+ -> & wturn6*gcorr6_turn(j,i)+ -> & wsccor*gsccorc(j,i) -> & +wscloc*gscloc(j,i) -> #endif -217c674,675 -< & wsccor*fact(1)*gsccorx(j,i) ---- -> & wsccor*gsccorx(j,i) -> & +wscloc*gsclocx(j,i) -219c677,681 -< #endif ---- -> enddo -> #ifdef DEBUG -> write (iout,*) "gloc before adding corr" -> do i=1,4*nres -> write (iout,*) i,gloc(i,icg) -221,222c683 -< -< ---- -> #endif -224,231c685,697 -< gloc(i,icg)=gloc(i,icg)+wcorr*fact(3)*gcorr_loc(i) -< & +wcorr5*fact(4)*g_corr5_loc(i) -< & +wcorr6*fact(5)*g_corr6_loc(i) -< & +wturn4*fact(3)*gel_loc_turn4(i) -< & +wturn3*fact(2)*gel_loc_turn3(i) -< & +wturn6*fact(5)*gel_loc_turn6(i) -< & +wel_loc*fact(2)*gel_loc_loc(i) -< & +wsccor*fact(1)*gsccor_loc(i) ---- -> gloc(i,icg)=gloc(i,icg)+wcorr*gcorr_loc(i) -> & +wcorr5*g_corr5_loc(i) -> & +wcorr6*g_corr6_loc(i) -> & +wturn4*gel_loc_turn4(i) -> & +wturn3*gel_loc_turn3(i) -> & +wturn6*gel_loc_turn6(i) -> & +wel_loc*gel_loc_loc(i) -> & +wsccor*gsccor_loc(i) -> enddo -> #ifdef DEBUG -> write (iout,*) "gloc after adding corr" -> do i=1,4*nres -> write (iout,*) i,gloc(i,icg) -232a699,727 -> #endif -> #ifdef MPI -> if (nfgtasks.gt.1) then -> do j=1,3 -> do i=1,nres -> gradbufc(j,i)=gradc(j,i,icg) -> gradbufx(j,i)=gradx(j,i,icg) -> enddo -> enddo -> do i=1,4*nres -> glocbuf(i)=gloc(i,icg) -> enddo -> time00=MPI_Wtime() -> call MPI_Barrier(FG_COMM,IERR) -> time_barrier_g=time_barrier_g+MPI_Wtime()-time00 -> time00=MPI_Wtime() -> call MPI_Reduce(gradbufc(1,1),gradc(1,1,icg),3*nres, -> & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) -> call MPI_Reduce(gradbufx(1,1),gradx(1,1,icg),3*nres, -> & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) -> call MPI_Reduce(glocbuf(1),gloc(1,icg),4*nres, -> & MPI_DOUBLE_PRECISION,MPI_SUM,king,FG_COMM,IERR) -> time_reduce=time_reduce+MPI_Wtime()-time00 -> #ifdef DEBUG -> write (iout,*) "gloc after reduce" -> do i=1,4*nres -> write (iout,*) i,gloc(i,icg) -> enddo -> #endif -233a729,897 -> #endif -> if (gnorm_check) then -> c -> c Compute the maximum elements of the gradient -> c -> gvdwc_max=0.0d0 -> gvdwc_scp_max=0.0d0 -> gelc_max=0.0d0 -> gvdwpp_max=0.0d0 -> gradb_max=0.0d0 -> ghpbc_max=0.0d0 -> gradcorr_max=0.0d0 -> gel_loc_max=0.0d0 -> gcorr3_turn_max=0.0d0 -> gcorr4_turn_max=0.0d0 -> gradcorr5_max=0.0d0 -> gradcorr6_max=0.0d0 -> gcorr6_turn_max=0.0d0 -> gsccorc_max=0.0d0 -> gscloc_max=0.0d0 -> gvdwx_max=0.0d0 -> gradx_scp_max=0.0d0 -> ghpbx_max=0.0d0 -> gradxorr_max=0.0d0 -> gsccorx_max=0.0d0 -> gsclocx_max=0.0d0 -> do i=1,nct -> gvdwc_norm=dsqrt(scalar(gvdwc(1,i),gvdwc(1,i))) -> if (gvdwc_norm.gt.gvdwc_max) gvdwc_max=gvdwc_norm -> gvdwc_scp_norm=dsqrt(scalar(gvdwc_scp(1,i),gvdwc_scp(1,i))) -> if (gvdwc_scp_norm.gt.gvdwc_scp_max) -> & gvdwc_scp_max=gvdwc_scp_norm -> gelc_norm=dsqrt(scalar(gelc(1,i),gelc(1,i))) -> if (gelc_norm.gt.gelc_max) gelc_max=gelc_norm -> gvdwpp_norm=dsqrt(scalar(gvdwpp(1,i),gvdwpp(1,i))) -> if (gvdwpp_norm.gt.gvdwpp_max) gvdwpp_max=gvdwpp_norm -> gradb_norm=dsqrt(scalar(gradb(1,i),gradb(1,i))) -> if (gradb_norm.gt.gradb_max) gradb_max=gradb_norm -> ghpbc_norm=dsqrt(scalar(ghpbc(1,i),ghpbc(1,i))) -> if (ghpbc_norm.gt.ghpbc_max) ghpbc_max=ghpbc_norm -> gradcorr_norm=dsqrt(scalar(gradcorr(1,i),gradcorr(1,i))) -> if (gradcorr_norm.gt.gradcorr_max) gradcorr_max=gradcorr_norm -> gel_loc_norm=dsqrt(scalar(gel_loc(1,i),gel_loc(1,i))) -> if (gel_loc_norm.gt.gel_loc_max) gel_loc_max=gel_loc_norm -> gcorr3_turn_norm=dsqrt(scalar(gcorr3_turn(1,i), -> & gcorr3_turn(1,i))) -> if (gcorr3_turn_norm.gt.gcorr3_turn_max) -> & gcorr3_turn_max=gcorr3_turn_norm -> gcorr4_turn_norm=dsqrt(scalar(gcorr4_turn(1,i), -> & gcorr4_turn(1,i))) -> if (gcorr4_turn_norm.gt.gcorr4_turn_max) -> & gcorr4_turn_max=gcorr4_turn_norm -> gradcorr5_norm=dsqrt(scalar(gradcorr5(1,i),gradcorr5(1,i))) -> if (gradcorr5_norm.gt.gradcorr5_max) -> & gradcorr5_max=gradcorr5_norm -> gradcorr6_norm=dsqrt(scalar(gradcorr6(1,i),gradcorr6(1,i))) -> if (gradcorr6_norm.gt.gradcorr6_max) gcorr6_max=gradcorr6_norm -> gcorr6_turn_norm=dsqrt(scalar(gcorr6_turn(1,i), -> & gcorr6_turn(1,i))) -> if (gcorr6_turn_norm.gt.gcorr6_turn_max) -> & gcorr6_turn_max=gcorr6_turn_norm -> gsccorr_norm=dsqrt(scalar(gsccorc(1,i),gsccorc(1,i))) -> if (gsccorr_norm.gt.gsccorr_max) gsccorr_max=gsccorr_norm -> gscloc_norm=dsqrt(scalar(gscloc(1,i),gscloc(1,i))) -> if (gscloc_norm.gt.gscloc_max) gscloc_max=gscloc_norm -> gvdwx_norm=dsqrt(scalar(gvdwx(1,i),gvdwx(1,i))) -> if (gvdwx_norm.gt.gvdwx_max) gvdwx_max=gvdwx_norm -> gradx_scp_norm=dsqrt(scalar(gradx_scp(1,i),gradx_scp(1,i))) -> if (gradx_scp_norm.gt.gradx_scp_max) -> & gradx_scp_max=gradx_scp_norm -> ghpbx_norm=dsqrt(scalar(ghpbx(1,i),ghpbx(1,i))) -> if (ghpbx_norm.gt.ghpbx_max) ghpbx_max=ghpbx_norm -> gradxorr_norm=dsqrt(scalar(gradxorr(1,i),gradxorr(1,i))) -> if (gradxorr_norm.gt.gradxorr_max) gradxorr_max=gradxorr_norm -> gsccorrx_norm=dsqrt(scalar(gsccorx(1,i),gsccorx(1,i))) -> if (gsccorrx_norm.gt.gsccorrx_max) gsccorrx_max=gsccorrx_norm -> gsclocx_norm=dsqrt(scalar(gsclocx(1,i),gsclocx(1,i))) -> if (gsclocx_norm.gt.gsclocx_max) gsclocx_max=gsclocx_norm -> enddo -> if (gradout) then -> #ifdef AIX -> open(istat,file=statname,position="append") -> #else -> open(istat,file=statname,access="append") -> #endif -> write (istat,'(1h#,21f10.2)') gvdwc_max,gvdwc_scp_max, -> & gelc_max,gvdwpp_max,gradb_max,ghpbc_max, -> & gradcorr_max,gel_loc_max,gcorr3_turn_max,gcorr4_turn_max, -> & gradcorr5_max,gradcorr6_max,gcorr6_turn_max,gsccorc_max, -> & gscloc_max,gvdwx_max,gradx_scp_max,ghpbx_max,gradxorr_max, -> & gsccorx_max,gsclocx_max -> close(istat) -> if (gvdwc_max.gt.1.0d4) then -> write (iout,*) "gvdwc gvdwx gradb gradbx" -> do i=nnt,nct -> write(iout,'(i5,4(3f10.2,5x))') i,(gvdwc(j,i),gvdwx(j,i), -> & gradb(j,i),gradbx(j,i),j=1,3) -> enddo -> call pdbout(0.0d0,'cipiszcze',iout) -> call flush(iout) -> endif -> endif -> endif -> #ifdef DEBUG -> write (iout,*) "gradc gradx gloc" -> do i=1,nres -> write (iout,'(i5,3f10.5,5x,3f10.5,5x,f10.5)') -> & i,(gradc(j,i,icg),j=1,3),(gradx(j,i,icg),j=1,3),gloc(i,icg) -> enddo -> #endif -> #ifdef TIMING -> time_sumgradient=time_sumgradient+MPI_Wtime()-time01 -> #endif -> return -> end -> c------------------------------------------------------------------------------- -> subroutine rescale_weights(t_bath) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.FFIELD' -> include 'COMMON.SBRIDGE' -> double precision kfac /2.4d0/ -> double precision x,x2,x3,x4,x5,licznik /1.12692801104297249644/ -> c facT=temp0/t_bath -> c facT=2*temp0/(t_bath+temp0) -> if (rescale_mode.eq.0) then -> facT=1.0d0 -> facT2=1.0d0 -> facT3=1.0d0 -> facT4=1.0d0 -> facT5=1.0d0 -> else if (rescale_mode.eq.1) then -> facT=kfac/(kfac-1.0d0+t_bath/temp0) -> facT2=kfac**2/(kfac**2-1.0d0+(t_bath/temp0)**2) -> facT3=kfac**3/(kfac**3-1.0d0+(t_bath/temp0)**3) -> facT4=kfac**4/(kfac**4-1.0d0+(t_bath/temp0)**4) -> facT5=kfac**5/(kfac**5-1.0d0+(t_bath/temp0)**5) -> else if (rescale_mode.eq.2) then -> x=t_bath/temp0 -> x2=x*x -> x3=x2*x -> x4=x3*x -> x5=x4*x -> facT=licznik/dlog(dexp(x)+dexp(-x)) -> facT2=licznik/dlog(dexp(x2)+dexp(-x2)) -> facT3=licznik/dlog(dexp(x3)+dexp(-x3)) -> facT4=licznik/dlog(dexp(x4)+dexp(-x4)) -> facT5=licznik/dlog(dexp(x5)+dexp(-x5)) -> else -> write (iout,*) "Wrong RESCALE_MODE",rescale_mode -> write (*,*) "Wrong RESCALE_MODE",rescale_mode -> #ifdef MPI -> call MPI_Finalize(MPI_COMM_WORLD,IERROR) -> #endif -> stop 555 -> endif -> welec=weights(3)*fact -> wcorr=weights(4)*fact3 -> wcorr5=weights(5)*fact4 -> wcorr6=weights(6)*fact5 -> wel_loc=weights(7)*fact2 -> wturn3=weights(8)*fact2 -> wturn4=weights(9)*fact3 -> wturn6=weights(10)*fact5 -> wtor=weights(13)*fact -> wtor_d=weights(14)*fact2 -> wsccor=weights(21)*fact -> -237c901 -< subroutine enerprint(energia,fact) ---- -> subroutine enerprint(energia) -240d903 -< include 'DIMENSIONS.ZSCOPT' -244c907,908 -< double precision energia(0:max_ene),fact(6) ---- -> include 'COMMON.MD' -> double precision energia(0:n_ene) -246c910,911 -< evdw=energia(1)+fact(6)*energia(21) ---- -> evdw=energia(1) -> evdw2=energia(2) -248c913 -< evdw2=energia(2)+energia(17) ---- -> evdw2=energia(2)+energia(18) -268,270c933,936 -< esccor=energia(19) -< edihcnstr=energia(20) -< estr=energia(18) ---- -> edihcnstr=energia(19) -> estr=energia(17) -> Uconst=energia(20) -> esccor=energia(21) -272,279c938,945 -< write (iout,10) evdw,wsc,evdw2,wscp,ees,welec*fact(1),evdw1, -< & wvdwpp, -< & estr,wbond,ebe,wang,escloc,wscloc,etors,wtor*fact(1), -< & etors_d,wtor_d*fact(2),ehpb,wstrain, -< & ecorr,wcorr*fact(3),ecorr5,wcorr5*fact(4),ecorr6,wcorr6*fact(5), -< & eel_loc,wel_loc*fact(2),eello_turn3,wturn3*fact(2), -< & eello_turn4,wturn4*fact(3),eello_turn6,wturn6*fact(5), -< & esccor,wsccor*fact(1),edihcnstr,ebr*nss,etot ---- -> write (iout,10) evdw,wsc,evdw2,wscp,ees,welec,evdw1,wvdwpp, -> & estr,wbond,ebe,wang, -> & escloc,wscloc,etors,wtor,etors_d,wtor_d,ehpb,wstrain, -> & ecorr,wcorr, -> & ecorr5,wcorr5,ecorr6,wcorr6,eel_loc,wel_loc,eello_turn3,wturn3, -> & eello_turn4,wturn4,eello_turn6,wturn6,esccor,wsccor, -> & edihcnstr,ebr*nss, -> & Uconst,etot -283c949 -< & 'EES= ',1pE16.6,' WEIGHT=',1pD16.6,' (p-p elec)'/ ---- -> & 'EES= ',1pE16.6,' WEIGHT=',1pD16.6,' (p-p)'/ -301c967,968 -< & 'ESS= ',1pE16.6,' (disulfide-bridge intrinsic energy)'/ ---- -> & 'ESS= ',1pE16.6,' (disulfide-bridge intrinsic energy)'/ -> & 'UCONST= ',1pE16.6,' (Constraint energy)'/ -304,310c971,977 -< write (iout,10) evdw,wsc,evdw2,wscp,ees,welec*fact(1),estr,wbond, -< & ebe,wang,escloc,wscloc,etors,wtor*fact(1),etors_d,wtor_d*fact2, -< & ehpb,wstrain,ecorr,wcorr*fact(3),ecorr5,wcorr5*fact(4), -< & ecorr6,wcorr6*fact(5),eel_loc,wel_loc*fact(2), -< & eello_turn3,wturn3*fact(2),eello_turn4,wturn4*fact(3), -< & eello_turn6,wturn6*fact(5),esccor*fact(1),wsccor, -< & edihcnstr,ebr*nss,etot ---- -> write (iout,10) evdw,wsc,evdw2,wscp,ees,welec, -> & estr,wbond,ebe,wang, -> & escloc,wscloc,etors,wtor,etors_d,wtor_d,ehpb,wstrain, -> & ecorr,wcorr, -> & ecorr5,wcorr5,ecorr6,wcorr6,eel_loc,wel_loc,eello_turn3,wturn3, -> & eello_turn4,wturn4,eello_turn6,wturn6,esccor,wsccro,edihcnstr, -> & ebr*nss,Uconst,etot -331c998,999 -< & 'ESS= ',1pE16.6,' (disulfide-bridge intrinsic energy)'/ ---- -> & 'ESS= ',1pE16.6,' (disulfide-bridge intrinsic energy)'/ -> & 'UCONST=',1pE16.6,' (Constraint energy)'/ -337c1005 -< subroutine elj(evdw,evdw_t) ---- -> subroutine elj(evdw) -344,345d1011 -< include 'DIMENSIONS.ZSCOPT' -< include "DIMENSIONS.COMPAR" -354d1019 -< include 'COMMON.ENEPS' -360,367c1025 -< integer icant -< external icant -< cd print *,'Entering ELJ nnt=',nnt,' nct=',nct,' expon=',expon -< do i=1,210 -< do j=1,2 -< eneps_temp(j,i)=0.0d0 -< enddo -< enddo ---- -> c write(iout,*)'Entering ELJ nnt=',nnt,' nct=',nct,' expon=',expon -369d1026 -< evdw_t=0.0d0 -400,402d1056 -< ij=icant(itypi,itypj) -< eneps_temp(1,ij)=eneps_temp(1,ij)+e1/dabs(eps0ij) -< eneps_temp(2,ij)=eneps_temp(2,ij)+e2/eps0ij -409,414c1063 -< if (bb(itypi,itypj).gt.0.0d0) then -< evdw=evdw+evdwij -< else -< evdw_t=evdw_t+evdwij -< endif -< if (calc_grad) then ---- -> evdw=evdw+evdwij -424a1074,1075 -> gvdwc(k,i)=gvdwc(k,i)-gg(k) -> gvdwc(k,j)=gvdwc(k,j)+gg(k) -426,431c1077,1081 -< do k=i,j-1 -< do l=1,3 -< gvdwc(l,k)=gvdwc(l,k)+gg(l) -< enddo -< enddo -< endif ---- -> cgrad do k=i,j-1 -> cgrad do l=1,3 -> cgrad gvdwc(l,k)=gvdwc(l,k)+gg(l) -> cgrad enddo -> cgrad enddo -493d1142 -< if (calc_grad) then -500d1148 -< endif -513c1161 -< subroutine eljk(evdw,evdw_t) ---- -> subroutine eljk(evdw) -520,521d1167 -< include 'DIMENSIONS.ZSCOPT' -< include "DIMENSIONS.COMPAR" -528d1173 -< include 'COMMON.ENEPS' -533,534d1177 -< integer icant -< external icant -536,540d1178 -< do i=1,210 -< do j=1,2 -< eneps_temp(j,i)=0.0d0 -< enddo -< enddo -542d1179 -< evdw_t=0.0d0 -570,573d1206 -< ij=icant(itypi,itypj) -< eneps_temp(1,ij)=eneps_temp(1,ij)+(e1+a_augm) -< & /dabs(eps(itypi,itypj)) -< eneps_temp(2,ij)=eneps_temp(2,ij)+e2/eps(itypi,itypj) -581,586c1214 -< if (bb(itypi,itypj).gt.0.0d0) then -< evdw=evdw+evdwij -< else -< evdw_t=evdw_t+evdwij -< endif -< if (calc_grad) then ---- -> evdw=evdw+evdwij -596a1225,1226 -> gvdwc(k,i)=gvdwc(k,i)-gg(k) -> gvdwc(k,j)=gvdwc(k,j)+gg(k) -598,603c1228,1232 -< do k=i,j-1 -< do l=1,3 -< gvdwc(l,k)=gvdwc(l,k)+gg(l) -< enddo -< enddo -< endif ---- -> cgrad do k=i,j-1 -> cgrad do l=1,3 -> cgrad gvdwc(l,k)=gvdwc(l,k)+gg(l) -> cgrad enddo -> cgrad enddo -607d1235 -< if (calc_grad) then -614d1241 -< endif -618c1245 -< subroutine ebp(evdw,evdw_t) ---- -> subroutine ebp(evdw) -625,626d1251 -< include 'DIMENSIONS.ZSCOPT' -< include "DIMENSIONS.COMPAR" -634d1258 -< include 'COMMON.ENEPS' -640,646d1263 -< integer icant -< external icant -< do i=1,210 -< do j=1,2 -< eneps_temp(j,i)=0.0d0 -< enddo -< enddo -648d1264 -< evdw_t=0.0d0 -649a1266 -> evdw=0.0D0 -665a1283 -> c dsci_inv=dsc_inv(itypi) -674a1293 -> c dscj_inv=dsc_inv(itypj) -719,729c1338 -< ij=icant(itypi,itypj) -< aux=eps1*eps2rt**2*eps3rt**2 -< eneps_temp(1,ij)=eneps_temp(1,ij)+e1*aux -< & /dabs(eps(itypi,itypj)) -< eneps_temp(2,ij)=eneps_temp(2,ij)+e2*aux/eps(itypi,itypj) -< if (bb(itypi,itypj).gt.0.0d0) then -< evdw=evdw+evdwij -< else -< evdw_t=evdw_t+evdwij -< endif -< if (calc_grad) then ---- -> evdw=evdw+evdwij -752d1360 -< endif -760c1368 -< subroutine egb(evdw,evdw_t) ---- -> subroutine egb(evdw) -767,768d1374 -< include 'DIMENSIONS.ZSCOPT' -< include "DIMENSIONS.COMPAR" -776d1381 -< include 'COMMON.ENEPS' -778a1384 -> include 'COMMON.CONTROL' -780,787c1386,1387 -< common /srutu/icall -< integer icant -< external icant -< do i=1,210 -< do j=1,2 -< eneps_temp(j,i)=0.0d0 -< enddo -< enddo ---- -> evdw=0.0D0 -> ccccc energy_dec=.false. -790d1389 -< evdw_t=0.0d0 -792c1391 -< c if (icall.gt.0) lprn=.true. ---- -> c if (icall.eq.0) lprn=.false. -803a1403 -> c dsci_inv=dsc_inv(itypi) -804a1405,1406 -> c write (iout,*) "i",i,dsc_inv(itypi),dsci_inv,1.0d0/vbld(i+nres) -> c write (iout,*) "dcnori",dxi*dxi+dyi*dyi+dzi*dzi -812a1415 -> c dscj_inv=dsc_inv(itypj) -813a1417,1419 -> c write (iout,*) "j",j,dsc_inv(itypj),dscj_inv, -> c & 1.0d0/vbld(j+nres) -> c write (iout,*) "i",i," j", j," itype",itype(i),itype(j) -840c1446,1448 -< c write (iout,*) i,j,xj,yj,zj ---- -> c write (iout,*) "dcnorj",dxi*dxi+dyi*dyi+dzi*dzi -> c write (iout,*) "j",j," dc_norm", -> c & dc_norm(1,nres+j),dc_norm(2,nres+j),dc_norm(3,nres+j) -848a1457,1458 -> c for diagnostics; uncomment -> c rij_shift=1.2*sig0ij -851a1462,1464 -> cd write (iout,'(2(a3,i3,2x),17(0pf7.3))') -> cd & restyp(itypi),i,restyp(itypj),j, -> cd & rij_shift,1.0D0/rij,sig,sig0ij,sigsq,1-dsqrt(sigsq) -862a1476,1477 -> c write (iout,*) "sigsq",sigsq," sig",sig," eps2rt",eps2rt, -> c & " eps3rt",eps3rt," eps1",eps1," e1",e1," e2",e2 -864,876c1479 -< if (bb(itypi,itypj).gt.0) then -< evdw=evdw+evdwij -< else -< evdw_t=evdw_t+evdwij -< endif -< ij=icant(itypi,itypj) -< aux=eps1*eps2rt**2*eps3rt**2 -< eneps_temp(1,ij)=eneps_temp(1,ij)+aux*e1 -< & /dabs(eps(itypi,itypj)) -< eneps_temp(2,ij)=eneps_temp(2,ij)+aux*e2/eps(itypi,itypj) -< c write (iout,*) "i",i," j",j," itypi",itypi," itypj",itypj, -< c & " ij",ij," eneps",aux*e1/dabs(eps(itypi,itypj)), -< c & aux*e2/eps(itypi,itypj) ---- -> evdw=evdw+evdwij -887c1490,1493 -< if (calc_grad) then ---- -> -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'evdw',i,j,evdwij -> -892a1499 -> c fac=0.0d0 -899d1505 -< endif -902a1509,1510 -> c write (iout,*) "Number of loop steps in EGB:",ind -> cccc energy_dec=.false. -906c1514 -< subroutine egbv(evdw,evdw_t) ---- -> subroutine egbv(evdw) -913,914d1520 -< include 'DIMENSIONS.ZSCOPT' -< include "DIMENSIONS.COMPAR" -922d1527 -< include 'COMMON.ENEPS' -927,933d1531 -< integer icant -< external icant -< do i=1,210 -< do j=1,2 -< eneps_temp(j,i)=0.0d0 -< enddo -< enddo -935d1532 -< evdw_t=0.0d0 -939c1536 -< c if (icall.gt.0) lprn=.true. ---- -> c if (icall.eq.0) lprn=.true. -950a1548 -> c dsci_inv=dsc_inv(itypi) -959a1558 -> c dscj_inv=dsc_inv(itypj) -1013,1016c1612,1622 -< if (bb(itypi,itypj).gt.0.0d0) then -< evdw=evdw+evdwij+e_augm -< else -< evdw_t=evdw_t+evdwij+e_augm ---- -> evdw=evdw+evdwij+e_augm -> if (lprn) then -> sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -> epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -> write (iout,'(2(a3,i3,2x),17(0pf7.3))') -> & restyp(itypi),i,restyp(itypj),j, -> & epsi,sigm,sig,(augm(itypi,itypj)/epsi)**(1.0D0/12.0D0), -> & chi1,chi2,chip1,chip2, -> & eps1,eps2rt**2,eps3rt**2, -> & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift, -> & evdwij+e_augm -1018,1036d1623 -< ij=icant(itypi,itypj) -< aux=eps1*eps2rt**2*eps3rt**2 -< eneps_temp(1,ij)=eneps_temp(1,ij)+aux*(e1+e_augm) -< & /dabs(eps(itypi,itypj)) -< eneps_temp(2,ij)=eneps_temp(2,ij)+aux*e2/eps(itypi,itypj) -< c eneps_temp(ij)=eneps_temp(ij) -< c & +(evdwij+e_augm)/eps(itypi,itypj) -< c if (lprn) then -< c sigm=dabs(aa(itypi,itypj)/bb(itypi,itypj))**(1.0D0/6.0D0) -< c epsi=bb(itypi,itypj)**2/aa(itypi,itypj) -< c write (iout,'(2(a3,i3,2x),17(0pf7.3))') -< c & restyp(itypi),i,restyp(itypj),j, -< c & epsi,sigm,sig,(augm(itypi,itypj)/epsi)**(1.0D0/12.0D0), -< c & chi1,chi2,chip1,chip2, -< c & eps1,eps2rt**2,eps3rt**2, -< c & om1,om2,om12,1.0D0/rij,1.0D0/rij_shift, -< c & evdwij+e_augm -< c endif -< if (calc_grad) then -1048d1634 -< endif -1052d1637 -< return -1059a1645 -> include 'COMMON.IOUNITS' -1072a1659,1663 -> c diagnostics only -> c faceps1_inv=om12 -> c eps1=om12 -> c eps1_om12=1.0d0 -> c write (iout,*) "om12",om12," eps1",eps1 -1082a1674,1681 -> c diagnostics only -> c sigsq=1.0d0 -> c sigsq_om1=0.0d0 -> c sigsq_om2=0.0d0 -> c sigsq_om12=0.0d0 -> c write (iout,*) "chiom1",chiom1," chiom2",chiom2," chiom12",chiom12 -> c write (iout,*) "faceps1",faceps1," faceps1_inv",faceps1_inv, -> c & " eps1",eps1 -1089a1689,1690 -> c write (iout,*) "chipom1",chipom1," chipom2",chipom2, -> c & " chipom12",chipom12," facp",facp," facp_inv",facp_inv -1098a1700,1702 -> c write (iout,*) "eps2rt",eps2rt," eps3rt",eps3rt -> c write (iout,*) "eps2rt_om1",eps2rt_om1," eps2rt_om2",eps2rt_om2, -> c & " eps2rt_om12",eps2rt_om12 -1107d1710 -< include 'DIMENSIONS.ZSCOPT' -1110a1714 -> include 'COMMON.IOUNITS' -1115a1720,1728 -> c diagnostics only -> c eom1=0.0d0 -> c eom2=0.0d0 -> c eom12=evdwij*eps1_om12 -> c end diagnostics -> c write (iout,*) "eps2der",eps2der," eps3der",eps3der, -> c & " sigder",sigder -> c write (iout,*) "eps1_om12",eps1_om12," eps2rt_om12",eps2rt_om12 -> c write (iout,*) "eom1",eom1," eom2",eom2," eom12",eom12 -1122a1736 -> c write (iout,*) "gg",(gg(k),k=1,3) -1129a1744,1747 -> c write (iout,*)(eom12*(dc_norm(k,nres+j)-om12*dc_norm(k,nres+i)) -> c & +eom1*(erij(k)-om1*dc_norm(k,nres+i)))*dsci_inv -> c write (iout,*)(eom12*(dc_norm(k,nres+i)-om12*dc_norm(k,nres+j)) -> c & +eom2*(erij(k)-om2*dc_norm(k,nres+j)))*dscj_inv -1134,1137c1752,1759 -< do k=i,j-1 -< do l=1,3 -< gvdwc(l,k)=gvdwc(l,k)+gg(l) -< enddo ---- -> cgrad do k=i,j-1 -> cgrad do l=1,3 -> cgrad gvdwc(l,k)=gvdwc(l,k)+gg(l) -> cgrad enddo -> cgrad enddo -> do l=1,3 -> gvdwc(l,i)=gvdwc(l,i)-gg(l) -> gvdwc(l,j)=gvdwc(l,j)+gg(l) -1141,1142c1763,1768 -< c------------------------------------------------------------------------------ -< subroutine vec_and_deriv ---- -> C----------------------------------------------------------------------- -> subroutine e_softsphere(evdw) -> C -> C This subroutine calculates the interaction energy of nonbonded side chains -> C assuming the LJ potential of interaction. -> C -1145,1146c1771 -< include 'DIMENSIONS.ZSCOPT' -< include 'COMMON.IOUNITS' ---- -> parameter (accur=1.0d-10) -1151d1775 -< include 'COMMON.VECTORS' -1154,1247c1778,1815 -< dimension uyder(3,3,2),uzder(3,3,2),vbld_inv_temp(2) -< C Compute the local reference systems. For reference system (i), the -< C X-axis points from CA(i) to CA(i+1), the Y axis is in the -< C CA(i)-CA(i+1)-CA(i+2) plane, and the Z axis is perpendicular to this plane. -< do i=1,nres-1 -< c if (i.eq.nres-1 .or. itel(i+1).eq.0) then -< if (i.eq.nres-1) then -< C Case of the last full residue -< C Compute the Z-axis -< call vecpr(dc_norm(1,i),dc_norm(1,i-1),uz(1,i)) -< costh=dcos(pi-theta(nres)) -< fac=1.0d0/dsqrt(1.0d0-costh*costh) -< do k=1,3 -< uz(k,i)=fac*uz(k,i) -< enddo -< if (calc_grad) then -< C Compute the derivatives of uz -< uzder(1,1,1)= 0.0d0 -< uzder(2,1,1)=-dc_norm(3,i-1) -< uzder(3,1,1)= dc_norm(2,i-1) -< uzder(1,2,1)= dc_norm(3,i-1) -< uzder(2,2,1)= 0.0d0 -< uzder(3,2,1)=-dc_norm(1,i-1) -< uzder(1,3,1)=-dc_norm(2,i-1) -< uzder(2,3,1)= dc_norm(1,i-1) -< uzder(3,3,1)= 0.0d0 -< uzder(1,1,2)= 0.0d0 -< uzder(2,1,2)= dc_norm(3,i) -< uzder(3,1,2)=-dc_norm(2,i) -< uzder(1,2,2)=-dc_norm(3,i) -< uzder(2,2,2)= 0.0d0 -< uzder(3,2,2)= dc_norm(1,i) -< uzder(1,3,2)= dc_norm(2,i) -< uzder(2,3,2)=-dc_norm(1,i) -< uzder(3,3,2)= 0.0d0 -< endif -< C Compute the Y-axis -< facy=fac -< do k=1,3 -< uy(k,i)=fac*(dc_norm(k,i-1)-costh*dc_norm(k,i)) -< enddo -< if (calc_grad) then -< C Compute the derivatives of uy -< do j=1,3 -< do k=1,3 -< uyder(k,j,1)=2*dc_norm(k,i-1)*dc_norm(j,i) -< & -dc_norm(k,i)*dc_norm(j,i-1) -< uyder(k,j,2)=-dc_norm(j,i)*dc_norm(k,i) -< enddo -< uyder(j,j,1)=uyder(j,j,1)-costh -< uyder(j,j,2)=1.0d0+uyder(j,j,2) -< enddo -< do j=1,2 -< do k=1,3 -< do l=1,3 -< uygrad(l,k,j,i)=uyder(l,k,j) -< uzgrad(l,k,j,i)=uzder(l,k,j) -< enddo -< enddo -< enddo -< call unormderiv(uy(1,i),uyder(1,1,1),facy,uygrad(1,1,1,i)) -< call unormderiv(uy(1,i),uyder(1,1,2),facy,uygrad(1,1,2,i)) -< call unormderiv(uz(1,i),uzder(1,1,1),fac,uzgrad(1,1,1,i)) -< call unormderiv(uz(1,i),uzder(1,1,2),fac,uzgrad(1,1,2,i)) -< endif -< else -< C Other residues -< C Compute the Z-axis -< call vecpr(dc_norm(1,i),dc_norm(1,i+1),uz(1,i)) -< costh=dcos(pi-theta(i+2)) -< fac=1.0d0/dsqrt(1.0d0-costh*costh) -< do k=1,3 -< uz(k,i)=fac*uz(k,i) -< enddo -< if (calc_grad) then -< C Compute the derivatives of uz -< uzder(1,1,1)= 0.0d0 -< uzder(2,1,1)=-dc_norm(3,i+1) -< uzder(3,1,1)= dc_norm(2,i+1) -< uzder(1,2,1)= dc_norm(3,i+1) -< uzder(2,2,1)= 0.0d0 -< uzder(3,2,1)=-dc_norm(1,i+1) -< uzder(1,3,1)=-dc_norm(2,i+1) -< uzder(2,3,1)= dc_norm(1,i+1) -< uzder(3,3,1)= 0.0d0 -< uzder(1,1,2)= 0.0d0 -< uzder(2,1,2)= dc_norm(3,i) -< uzder(3,1,2)=-dc_norm(2,i) -< uzder(1,2,2)=-dc_norm(3,i) -< uzder(2,2,2)= 0.0d0 -< uzder(3,2,2)= dc_norm(1,i) -< uzder(1,3,2)= dc_norm(2,i) -< uzder(2,3,2)=-dc_norm(1,i) -< uzder(3,3,2)= 0.0d0 ---- -> include 'COMMON.TORSION' -> include 'COMMON.SBRIDGE' -> include 'COMMON.NAMES' -> include 'COMMON.IOUNITS' -> include 'COMMON.CONTACTS' -> dimension gg(3) -> cd print *,'Entering Esoft_sphere nnt=',nnt,' nct=',nct -> evdw=0.0D0 -> do i=iatsc_s,iatsc_e -> itypi=itype(i) -> if (itypi.eq.21) cycle -> itypi1=itype(i+1) -> xi=c(1,nres+i) -> yi=c(2,nres+i) -> zi=c(3,nres+i) -> C -> C Calculate SC interaction energy. -> C -> do iint=1,nint_gr(i) -> cd write (iout,*) 'i=',i,' iint=',iint,' istart=',istart(i,iint), -> cd & 'iend=',iend(i,iint) -> do j=istart(i,iint),iend(i,iint) -> itypj=itype(j) -> if (itypj.eq.21) cycle -> xj=c(1,nres+j)-xi -> yj=c(2,nres+j)-yi -> zj=c(3,nres+j)-zi -> rij=xj*xj+yj*yj+zj*zj -> c write (iout,*)'i=',i,' j=',j,' itypi=',itypi,' itypj=',itypj -> r0ij=r0(itypi,itypj) -> r0ijsq=r0ij*r0ij -> c print *,i,j,r0ij,dsqrt(rij) -> if (rij.lt.r0ijsq) then -> evdwij=0.25d0*(rij-r0ijsq)**2 -> fac=rij-r0ijsq -> else -> evdwij=0.0d0 -> fac=0.0d0 -1249,1250c1817,1823 -< C Compute the Y-axis -< facy=fac ---- -> evdw=evdw+evdwij -> C -> C Calculate the components of the gradient in DC and X -> C -> gg(1)=xj*fac -> gg(2)=yj*fac -> gg(3)=zj*fac -1252,1263c1825,1828 -< uy(k,i)=facy*(dc_norm(k,i+1)-costh*dc_norm(k,i)) -< enddo -< if (calc_grad) then -< C Compute the derivatives of uy -< do j=1,3 -< do k=1,3 -< uyder(k,j,1)=2*dc_norm(k,i+1)*dc_norm(j,i) -< & -dc_norm(k,i)*dc_norm(j,i+1) -< uyder(k,j,2)=-dc_norm(j,i)*dc_norm(k,i) -< enddo -< uyder(j,j,1)=uyder(j,j,1)-costh -< uyder(j,j,2)=1.0d0+uyder(j,j,2) ---- -> gvdwx(k,i)=gvdwx(k,i)-gg(k) -> gvdwx(k,j)=gvdwx(k,j)+gg(k) -> gvdwc(k,i)=gvdwc(k,i)-gg(k) -> gvdwc(k,j)=gvdwc(k,j)+gg(k) -1265,1277c1830,1898 -< do j=1,2 -< do k=1,3 -< do l=1,3 -< uygrad(l,k,j,i)=uyder(l,k,j) -< uzgrad(l,k,j,i)=uzder(l,k,j) -< enddo -< enddo -< enddo -< call unormderiv(uy(1,i),uyder(1,1,1),facy,uygrad(1,1,1,i)) -< call unormderiv(uy(1,i),uyder(1,1,2),facy,uygrad(1,1,2,i)) -< call unormderiv(uz(1,i),uzder(1,1,1),fac,uzgrad(1,1,1,i)) -< call unormderiv(uz(1,i),uzder(1,1,2),fac,uzgrad(1,1,2,i)) -< endif ---- -> cgrad do k=i,j-1 -> cgrad do l=1,3 -> cgrad gvdwc(l,k)=gvdwc(l,k)+gg(l) -> cgrad enddo -> cgrad enddo -> enddo ! j -> enddo ! iint -> enddo ! i -> return -> end -> C-------------------------------------------------------------------------- -> subroutine eelec_soft_sphere(ees,evdw1,eel_loc,eello_turn3, -> & eello_turn4) -> C -> C Soft-sphere potential of p-p interaction -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.CONTROL' -> include 'COMMON.IOUNITS' -> include 'COMMON.GEO' -> include 'COMMON.VAR' -> include 'COMMON.LOCAL' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VECTORS' -> include 'COMMON.FFIELD' -> dimension ggg(3) -> cd write(iout,*) 'In EELEC_soft_sphere' -> ees=0.0D0 -> evdw1=0.0D0 -> eel_loc=0.0d0 -> eello_turn3=0.0d0 -> eello_turn4=0.0d0 -> ind=0 -> do i=iatel_s,iatel_e -> if (itype(i).eq.21 .or. itype(i+1).eq.21) cycle -> dxi=dc(1,i) -> dyi=dc(2,i) -> dzi=dc(3,i) -> xmedi=c(1,i)+0.5d0*dxi -> ymedi=c(2,i)+0.5d0*dyi -> zmedi=c(3,i)+0.5d0*dzi -> num_conti=0 -> c write (iout,*) 'i',i,' ielstart',ielstart(i),' ielend',ielend(i) -> do j=ielstart(i),ielend(i) -> if (itype(j).eq.21 .or. itype(j+1).eq.21) cycle -> ind=ind+1 -> iteli=itel(i) -> itelj=itel(j) -> if (j.eq.i+2 .and. itelj.eq.2) iteli=2 -> r0ij=rpp(iteli,itelj) -> r0ijsq=r0ij*r0ij -> dxj=dc(1,j) -> dyj=dc(2,j) -> dzj=dc(3,j) -> xj=c(1,j)+0.5D0*dxj-xmedi -> yj=c(2,j)+0.5D0*dyj-ymedi -> zj=c(3,j)+0.5D0*dzj-zmedi -> rij=xj*xj+yj*yj+zj*zj -> if (rij.lt.r0ijsq) then -> evdw1ij=0.25d0*(rij-r0ijsq)**2 -> fac=rij-r0ijsq -> else -> evdw1ij=0.0d0 -> fac=0.0d0 -1279,1288c1900,1906 -< enddo -< if (calc_grad) then -< do i=1,nres-1 -< vbld_inv_temp(1)=vbld_inv(i+1) -< if (i.lt.nres-1) then -< vbld_inv_temp(2)=vbld_inv(i+2) -< else -< vbld_inv_temp(2)=vbld_inv(i) -< endif -< do j=1,2 ---- -> evdw1=evdw1+evdw1ij -> C -> C Calculate contributions to the Cartesian gradient. -> C -> ggg(1)=fac*xj -> ggg(2)=fac*yj -> ggg(3)=fac*zj -1290,1293c1908,1909 -< do l=1,3 -< uygrad(l,k,j,i)=vbld_inv_temp(j)*uygrad(l,k,j,i) -< uzgrad(l,k,j,i)=vbld_inv_temp(j)*uzgrad(l,k,j,i) -< enddo ---- -> gvdwpp(k,i)=gvdwpp(k,i)-ggg(k) -> gvdwpp(k,j)=gvdwpp(k,j)+ggg(k) -1295,1297c1911,1930 -< enddo -< enddo -< endif ---- -> * -> * Loop over residues i+1 thru j-1. -> * -> cgrad do k=i+1,j-1 -> cgrad do l=1,3 -> cgrad gelc(l,k)=gelc(l,k)+ggg(l) -> cgrad enddo -> cgrad enddo -> enddo ! j -> enddo ! i -> cgrad do i=nnt,nct-1 -> cgrad do k=1,3 -> cgrad gelc(k,i)=gelc(k,i)+0.5d0*gelc(k,i) -> cgrad enddo -> cgrad do j=i+1,nct-1 -> cgrad do k=1,3 -> cgrad gelc(k,i)=gelc(k,i)+gelc(k,j) -> cgrad enddo -> cgrad enddo -> cgrad enddo -1300,1301c1933,1934 -< C----------------------------------------------------------------------------- -< subroutine vec_and_deriv_test ---- -> c------------------------------------------------------------------------------ -> subroutine vec_and_deriv -1304c1937,1939 -< include 'DIMENSIONS.ZSCOPT' ---- -> #ifdef MPI -> include 'mpif.h' -> #endif -1311c1946,1948 -< dimension uyder(3,3,2),uzder(3,3,2) ---- -> include 'COMMON.SETUP' -> include 'COMMON.TIME1' -> dimension uyder(3,3,2),uzder(3,3,2),vbld_inv_temp(2) -1314a1952,1954 -> #ifdef PARVEC -> do i=ivec_start,ivec_end -> #else -1315a1956 -> #endif -1322,1324d1962 -< c write (iout,*) 'fac',fac, -< c & 1.0d0/dsqrt(scalar(uz(1,i),uz(1,i))) -< fac=1.0d0/dsqrt(scalar(uz(1,i),uz(1,i))) -1348,1350d1985 -< do k=1,3 -< uy(k,i)=fac*(dc_norm(k,i-1)-costh*dc_norm(k,i)) -< enddo -1352,1365d1986 -< facy=1.0d0/dsqrt(scalar(dc_norm(1,i),dc_norm(1,i))* -< & (scalar(dc_norm(1,i-1),dc_norm(1,i-1))**2- -< & scalar(dc_norm(1,i),dc_norm(1,i-1))**2)) -< do k=1,3 -< c uy(k,i)=facy*(dc_norm(k,i+1)-costh*dc_norm(k,i)) -< uy(k,i)= -< c & facy*( -< & dc_norm(k,i-1)*scalar(dc_norm(1,i),dc_norm(1,i)) -< & -scalar(dc_norm(1,i),dc_norm(1,i-1))*dc_norm(k,i) -< c & ) -< enddo -< c write (iout,*) 'facy',facy, -< c & 1.0d0/dsqrt(scalar(uy(1,i),uy(1,i))) -< facy=1.0d0/dsqrt(scalar(uy(1,i),uy(1,i))) -1367c1988 -< uy(k,i)=facy*uy(k,i) ---- -> uy(k,i)=fac*(dc_norm(k,i-1)-costh*dc_norm(k,i)) -1376,1381c1997,1998 -< c uyder(j,j,1)=uyder(j,j,1)-costh -< c uyder(j,j,2)=1.0d0+uyder(j,j,2) -< uyder(j,j,1)=uyder(j,j,1) -< & -scalar(dc_norm(1,i),dc_norm(1,i-1)) -< uyder(j,j,2)=scalar(dc_norm(1,i),dc_norm(1,i)) -< & +uyder(j,j,2) ---- -> uyder(j,j,1)=uyder(j,j,1)-costh -> uyder(j,j,2)=1.0d0+uyder(j,j,2) -1401d2017 -< fac=1.0d0/dsqrt(scalar(uz(1,i),uz(1,i))) -1426,1439d2041 -< facy=1.0d0/dsqrt(scalar(dc_norm(1,i),dc_norm(1,i))* -< & (scalar(dc_norm(1,i+1),dc_norm(1,i+1))**2- -< & scalar(dc_norm(1,i),dc_norm(1,i+1))**2)) -< do k=1,3 -< c uy(k,i)=facy*(dc_norm(k,i+1)-costh*dc_norm(k,i)) -< uy(k,i)= -< c & facy*( -< & dc_norm(k,i+1)*scalar(dc_norm(1,i),dc_norm(1,i)) -< & -scalar(dc_norm(1,i),dc_norm(1,i+1))*dc_norm(k,i) -< c & ) -< enddo -< c write (iout,*) 'facy',facy, -< c & 1.0d0/dsqrt(scalar(uy(1,i),uy(1,i))) -< facy=1.0d0/dsqrt(scalar(uy(1,i),uy(1,i))) -1441c2043 -< uy(k,i)=facy*uy(k,i) ---- -> uy(k,i)=facy*(dc_norm(k,i+1)-costh*dc_norm(k,i)) -1450,1455c2052,2053 -< c uyder(j,j,1)=uyder(j,j,1)-costh -< c uyder(j,j,2)=1.0d0+uyder(j,j,2) -< uyder(j,j,1)=uyder(j,j,1) -< & -scalar(dc_norm(1,i),dc_norm(1,i+1)) -< uyder(j,j,2)=scalar(dc_norm(1,i),dc_norm(1,i)) -< & +uyder(j,j,2) ---- -> uyder(j,j,1)=uyder(j,j,1)-costh -> uyder(j,j,2)=1.0d0+uyder(j,j,2) -1471a2070,2075 -> vbld_inv_temp(1)=vbld_inv(i+1) -> if (i.lt.nres-1) then -> vbld_inv_temp(2)=vbld_inv(i+2) -> else -> vbld_inv_temp(2)=vbld_inv(i) -> endif -1475,1476c2079,2080 -< uygrad(l,k,j,i)=vblinv*uygrad(l,k,j,i) -< uzgrad(l,k,j,i)=vblinv*uzgrad(l,k,j,i) ---- -> uygrad(l,k,j,i)=vbld_inv_temp(j)*uygrad(l,k,j,i) -> uzgrad(l,k,j,i)=vbld_inv_temp(j)*uzgrad(l,k,j,i) -1480a2085,2112 -> #if defined(PARVEC) && defined(MPI) -> if (nfgtasks1.gt.1) then -> time00=MPI_Wtime() -> c print *,"Processor",fg_rank1,kolor1," ivec_start",ivec_start, -> c & " ivec_displ",(ivec_displ(i),i=0,nfgtasks1-1), -> c & " ivec_count",(ivec_count(i),i=0,nfgtasks1-1) -> call MPI_Allgatherv(uy(1,ivec_start),ivec_count(fg_rank1), -> & MPI_UYZ,uy(1,1),ivec_count(0),ivec_displ(0),MPI_UYZ, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(uz(1,ivec_start),ivec_count(fg_rank1), -> & MPI_UYZ,uz(1,1),ivec_count(0),ivec_displ(0),MPI_UYZ, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(uygrad(1,1,1,ivec_start), -> & ivec_count(fg_rank1),MPI_UYZGRAD,uygrad(1,1,1,1),ivec_count(0), -> & ivec_displ(0),MPI_UYZGRAD,FG_COMM1,IERR) -> call MPI_Allgatherv(uzgrad(1,1,1,ivec_start), -> & ivec_count(fg_rank1),MPI_UYZGRAD,uzgrad(1,1,1,1),ivec_count(0), -> & ivec_displ(0),MPI_UYZGRAD,FG_COMM1,IERR) -> time_gather=time_gather+MPI_Wtime()-time00 -> endif -> c if (fg_rank.eq.0) then -> c write (iout,*) "Arrays UY and UZ" -> c do i=1,nres-1 -> c write (iout,'(i5,3f10.5,5x,3f10.5)') i,(uy(k,i),k=1,3), -> c & (uz(k,i),k=1,3) -> c enddo -> c endif -> #endif -1487d2118 -< include 'DIMENSIONS.ZSCOPT' -1572c2203,2208 -< include 'DIMENSIONS.ZSCOPT' ---- -> #ifdef MPI -> include "mpif.h" -> include "COMMON.SETUP" -> integer IERR -> integer status(MPI_STATUS_SIZE) -> #endif -1588a2225,2227 -> #ifdef PARMAT -> do i=ivec_start+2,ivec_end+2 -> #else -1589a2229 -> #endif -1655a2296 -> c if (i.gt. iatel_s+2 .and. i.lt.iatel_e+5) then -1657,1661c2298 -< if (itype(i-2).le.ntyp) then -< iti = itortyp(itype(i-2)) -< else -< iti=ntortyp+1 -< endif ---- -> iti = itortyp(itype(i-2)) -1664a2302 -> c if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then -1666,1670c2304 -< if (itype(i-1).le.ntyp) then -< iti1 = itortyp(itype(i-1)) -< else -< iti1=ntortyp+1 -< endif ---- -> iti1 = itortyp(itype(i-1)) -1678,1679c2312,2313 -< c print *,"itilde1 i iti iti1",i,iti,iti1 -< if (i .gt. iatel_s+2) then ---- -> c if (i .gt. iatel_s+2) then -> if (i .gt. nnt+2) then -1681a2316,2317 -> if (wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0) -> & then -1686a2323 -> endif -1700d2336 -< c print *,"itilde2 i iti iti1",i,iti,iti1 -1703,1708d2338 -< call matmat2(CC(1,1,iti1),Ugder(1,1,i-2),CUgder(1,1,i-2)) -< call matmat2(DD(1,1,iti),Ugder(1,1,i-2),DUgder(1,1,i-2)) -< call matmat2(Dtilde(1,1,iti),Ug2der(1,1,i-2),DtUg2der(1,1,i-2)) -< call matvec2(Ctilde(1,1,iti1),obrot_der(1,i-2),Ctobrder(1,i-2)) -< call matvec2(Dtilde(1,1,iti),obrot2_der(1,i-2),Dtobr2der(1,i-2)) -< c print *,"itilde3 i iti iti1",i,iti,iti1 -1711a2342 -> c if (i.gt. iatel_s+1 .and. i.lt.iatel_e+4) then -1713,1717c2344 -< if (itype(i-1).le.ntyp) then -< iti1 = itortyp(itype(i-1)) -< else -< iti1=ntortyp+1 -< endif ---- -> iti1 = itortyp(itype(i-1)) -1723a2351,2360 -> cd write (iout,*) 'mu ',mu(:,i-2) -> cd write (iout,*) 'mu1',mu1(:,i-2) -> cd write (iout,*) 'mu2',mu2(:,i-2) -> if (wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or.wcorr6.gt.0.0d0) -> & then -> call matmat2(CC(1,1,iti1),Ugder(1,1,i-2),CUgder(1,1,i-2)) -> call matmat2(DD(1,1,iti),Ugder(1,1,i-2),DUgder(1,1,i-2)) -> call matmat2(Dtilde(1,1,iti),Ug2der(1,1,i-2),DtUg2der(1,1,i-2)) -> call matvec2(Ctilde(1,1,iti1),obrot_der(1,i-2),Ctobrder(1,i-2)) -> call matvec2(Dtilde(1,1,iti),obrot2_der(1,i-2),Dtobr2der(1,i-2)) -1734,1735c2371 -< cd write (iout,*) 'i',i,' mu ',(mu(k,i-2),k=1,2), -< cd & ' mu1',(b1(k,i-2),k=1,2),' mu2',(Ub2(k,i-2),k=1,2) ---- -> endif -1738a2375,2377 -> if (wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or.wcorr6.gt.0.0d0) -> &then -> c do i=max0(ivec_start,2),ivec_end -1748a2388,2636 -> endif -> #if defined(MPI) && defined(PARMAT) -> #ifdef DEBUG -> c if (fg_rank.eq.0) then -> write (iout,*) "Arrays UG and UGDER before GATHER" -> do i=1,nres-1 -> write (iout,'(i5,4f10.5,5x,4f10.5)') i, -> & ((ug(l,k,i),l=1,2),k=1,2), -> & ((ugder(l,k,i),l=1,2),k=1,2) -> enddo -> write (iout,*) "Arrays UG2 and UG2DER" -> do i=1,nres-1 -> write (iout,'(i5,4f10.5,5x,4f10.5)') i, -> & ((ug2(l,k,i),l=1,2),k=1,2), -> & ((ug2der(l,k,i),l=1,2),k=1,2) -> enddo -> write (iout,*) "Arrays OBROT OBROT2 OBROTDER and OBROT2DER" -> do i=1,nres-1 -> write (iout,'(i5,4f10.5,5x,4f10.5)') i, -> & (obrot(k,i),k=1,2),(obrot2(k,i),k=1,2), -> & (obrot_der(k,i),k=1,2),(obrot2_der(k,i),k=1,2) -> enddo -> write (iout,*) "Arrays COSTAB SINTAB COSTAB2 and SINTAB2" -> do i=1,nres-1 -> write (iout,'(i5,4f10.5,5x,4f10.5)') i, -> & costab(i),sintab(i),costab2(i),sintab2(i) -> enddo -> write (iout,*) "Array MUDER" -> do i=1,nres-1 -> write (iout,'(i5,2f10.5)') i,muder(1,i),muder(2,i) -> enddo -> c endif -> #endif -> if (nfgtasks.gt.1) then -> time00=MPI_Wtime() -> c write(iout,*)"Processor",fg_rank,kolor," ivec_start",ivec_start, -> c & " ivec_displ",(ivec_displ(i),i=0,nfgtasks-1), -> c & " ivec_count",(ivec_count(i),i=0,nfgtasks-1) -> #ifdef MATGATHER -> call MPI_Allgatherv(Ub2(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,Ub2(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Ub2der(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,Ub2der(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(mu(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,mu(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(muder(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,muder(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Eug(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,Eug(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Eugder(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,Eugder(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(costab(ivec_start),ivec_count(fg_rank1), -> & MPI_DOUBLE_PRECISION,costab(1),ivec_count(0),ivec_displ(0), -> & MPI_DOUBLE_PRECISION,FG_COMM1,IERR) -> call MPI_Allgatherv(sintab(ivec_start),ivec_count(fg_rank1), -> & MPI_DOUBLE_PRECISION,sintab(1),ivec_count(0),ivec_displ(0), -> & MPI_DOUBLE_PRECISION,FG_COMM1,IERR) -> call MPI_Allgatherv(costab2(ivec_start),ivec_count(fg_rank1), -> & MPI_DOUBLE_PRECISION,costab2(1),ivec_count(0),ivec_displ(0), -> & MPI_DOUBLE_PRECISION,FG_COMM1,IERR) -> call MPI_Allgatherv(sintab2(ivec_start),ivec_count(fg_rank1), -> & MPI_DOUBLE_PRECISION,sintab2(1),ivec_count(0),ivec_displ(0), -> & MPI_DOUBLE_PRECISION,FG_COMM1,IERR) -> if (wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0) -> & then -> call MPI_Allgatherv(Ctobr(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,Ctobr(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Ctobrder(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,Ctobrder(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Dtobr2(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,Dtobr2(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Dtobr2der(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,Dtobr2der(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Ug2Db1t(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,Ug2Db1t(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Ug2Db1tder(1,ivec_start), -> & ivec_count(fg_rank1), -> & MPI_MU,Ug2Db1tder(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(CUgb2(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,CUgb2(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(CUgb2der(1,ivec_start),ivec_count(fg_rank1), -> & MPI_MU,CUgb2der(1,1),ivec_count(0),ivec_displ(0),MPI_MU, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Cug(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,Cug(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Cugder(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,Cugder(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Dug(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,Dug(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Dugder(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,Dugder(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Dtug2(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,Dtug2(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Dtug2der(1,1,ivec_start), -> & ivec_count(fg_rank1), -> & MPI_MAT1,Dtug2der(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(EugC(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,EugC(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(EugCder(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,EugCder(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(EugD(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,EugD(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(EugDder(1,1,ivec_start),ivec_count(fg_rank1), -> & MPI_MAT1,EugDder(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(DtUg2EUg(1,1,ivec_start), -> & ivec_count(fg_rank1), -> & MPI_MAT1,DtUg2EUg(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(Ug2DtEUg(1,1,ivec_start), -> & ivec_count(fg_rank1), -> & MPI_MAT1,Ug2DtEUg(1,1,1),ivec_count(0),ivec_displ(0),MPI_MAT1, -> & FG_COMM1,IERR) -> call MPI_Allgatherv(DtUg2EUgder(1,1,1,ivec_start), -> & ivec_count(fg_rank1), -> & MPI_MAT2,DtUg2EUgder(1,1,1,1),ivec_count(0),ivec_displ(0), -> & MPI_MAT2,FG_COMM1,IERR) -> call MPI_Allgatherv(Ug2DtEUgder(1,1,1,ivec_start), -> & ivec_count(fg_rank1), -> & MPI_MAT2,Ug2DtEUgder(1,1,1,1),ivec_count(0),ivec_displ(0), -> & MPI_MAT2,FG_COMM1,IERR) -> endif -> #else -> c Passes matrix info through the ring -> isend=fg_rank1 -> irecv=fg_rank1-1 -> if (irecv.lt.0) irecv=nfgtasks1-1 -> iprev=irecv -> inext=fg_rank1+1 -> if (inext.ge.nfgtasks1) inext=0 -> do i=1,nfgtasks1-1 -> c write (iout,*) "isend",isend," irecv",irecv -> c call flush(iout) -> lensend=lentyp(isend) -> lenrecv=lentyp(irecv) -> c write (iout,*) "lensend",lensend," lenrecv",lenrecv -> c call MPI_SENDRECV(ug(1,1,ivec_displ(isend)+1),1, -> c & MPI_ROTAT1(lensend),inext,2200+isend, -> c & ug(1,1,ivec_displ(irecv)+1),1,MPI_ROTAT1(lenrecv), -> c & iprev,2200+irecv,FG_COMM,status,IERR) -> c write (iout,*) "Gather ROTAT1" -> c call flush(iout) -> c call MPI_SENDRECV(obrot(1,ivec_displ(isend)+1),1, -> c & MPI_ROTAT2(lensend),inext,3300+isend, -> c & obrot(1,ivec_displ(irecv)+1),1,MPI_ROTAT2(lenrecv), -> c & iprev,3300+irecv,FG_COMM,status,IERR) -> c write (iout,*) "Gather ROTAT2" -> c call flush(iout) -> call MPI_SENDRECV(costab(ivec_displ(isend)+1),1, -> & MPI_ROTAT_OLD(lensend),inext,4400+isend, -> & costab(ivec_displ(irecv)+1),1,MPI_ROTAT_OLD(lenrecv), -> & iprev,4400+irecv,FG_COMM,status,IERR) -> c write (iout,*) "Gather ROTAT_OLD" -> c call flush(iout) -> call MPI_SENDRECV(mu(1,ivec_displ(isend)+1),1, -> & MPI_PRECOMP11(lensend),inext,5500+isend, -> & mu(1,ivec_displ(irecv)+1),1,MPI_PRECOMP11(lenrecv), -> & iprev,5500+irecv,FG_COMM,status,IERR) -> c write (iout,*) "Gather PRECOMP11" -> c call flush(iout) -> call MPI_SENDRECV(Eug(1,1,ivec_displ(isend)+1),1, -> & MPI_PRECOMP12(lensend),inext,6600+isend, -> & Eug(1,1,ivec_displ(irecv)+1),1,MPI_PRECOMP12(lenrecv), -> & iprev,6600+irecv,FG_COMM,status,IERR) -> c write (iout,*) "Gather PRECOMP12" -> c call flush(iout) -> if (wcorr4.gt.0.0d0 .or. wcorr5.gt.0.0d0 .or. wcorr6.gt.0.0d0) -> & then -> call MPI_SENDRECV(ug2db1t(1,ivec_displ(isend)+1),1, -> & MPI_ROTAT2(lensend),inext,7700+isend, -> & ug2db1t(1,ivec_displ(irecv)+1),1,MPI_ROTAT2(lenrecv), -> & iprev,7700+irecv,FG_COMM,status,IERR) -> c write (iout,*) "Gather PRECOMP21" -> c call flush(iout) -> call MPI_SENDRECV(EUgC(1,1,ivec_displ(isend)+1),1, -> & MPI_PRECOMP22(lensend),inext,8800+isend, -> & EUgC(1,1,ivec_displ(irecv)+1),1,MPI_PRECOMP22(lenrecv), -> & iprev,8800+irecv,FG_COMM,status,IERR) -> c write (iout,*) "Gather PRECOMP22" -> c call flush(iout) -> call MPI_SENDRECV(Ug2DtEUgder(1,1,1,ivec_displ(isend)+1),1, -> & MPI_PRECOMP23(lensend),inext,9900+isend, -> & Ug2DtEUgder(1,1,1,ivec_displ(irecv)+1),1, -> & MPI_PRECOMP23(lenrecv), -> & iprev,9900+irecv,FG_COMM,status,IERR) -> c write (iout,*) "Gather PRECOMP23" -> c call flush(iout) -> endif -> isend=irecv -> irecv=irecv-1 -> if (irecv.lt.0) irecv=nfgtasks1-1 -> enddo -> #endif -> time_gather=time_gather+MPI_Wtime()-time00 -> endif -> #ifdef DEBUG -> c if (fg_rank.eq.0) then -> write (iout,*) "Arrays UG and UGDER" -> do i=1,nres-1 -> write (iout,'(i5,4f10.5,5x,4f10.5)') i, -> & ((ug(l,k,i),l=1,2),k=1,2), -> & ((ugder(l,k,i),l=1,2),k=1,2) -> enddo -> write (iout,*) "Arrays UG2 and UG2DER" -> do i=1,nres-1 -> write (iout,'(i5,4f10.5,5x,4f10.5)') i, -> & ((ug2(l,k,i),l=1,2),k=1,2), -> & ((ug2der(l,k,i),l=1,2),k=1,2) -> enddo -> write (iout,*) "Arrays OBROT OBROT2 OBROTDER and OBROT2DER" -> do i=1,nres-1 -> write (iout,'(i5,4f10.5,5x,4f10.5)') i, -> & (obrot(k,i),k=1,2),(obrot2(k,i),k=1,2), -> & (obrot_der(k,i),k=1,2),(obrot2_der(k,i),k=1,2) -> enddo -> write (iout,*) "Arrays COSTAB SINTAB COSTAB2 and SINTAB2" -> do i=1,nres-1 -> write (iout,'(i5,4f10.5,5x,4f10.5)') i, -> & costab(i),sintab(i),costab2(i),sintab2(i) -> enddo -> write (iout,*) "Array MUDER" -> do i=1,nres-1 -> write (iout,'(i5,2f10.5)') i,muder(1,i),muder(2,i) -> enddo -> c endif -> #endif -> #endif -1768a2657,2659 -> #ifdef MPI -> include 'mpif.h' -> #endif -1770d2660 -< include 'DIMENSIONS.ZSCOPT' -1771a2662 -> include 'COMMON.SETUP' -1782a2674 -> include 'COMMON.TIME1' -1787c2679,2681 -< common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,j1 ---- -> common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,a22,a23,a32,a33, -> & dxi,dyi,dzi,dx_normi,dy_normi,dz_normi,xmedi,ymedi,zmedi, -> & num_conti,j1,j2 -1788a2683,2685 -> #ifdef MOMENT -> double precision scal_el /1.0d0/ -> #else -1789a2687 -> #endif -1818,1823c2716,2719 -< cd if (wel_loc.gt.0.0d0) then -< if (icheckgrad.eq.1) then -< call vec_and_deriv_test -< else -< call vec_and_deriv -< endif ---- -> c call vec_and_deriv -> #ifdef TIMING -> time01=MPI_Wtime() -> #endif -1824a2721,2723 -> #ifdef TIMING -> time_mat=time_mat+MPI_Wtime()-time01 -> #endif -1829c2728 -< cd write (iout,'(i5,2f10.5)') k,uy(k,i),uz(k,i) ---- -> cd write (iout,'(i5,2f10.5)') k,uy(k,i),uz(k,i) -1836c2735 -< num_conti_hb=0 ---- -> t_eelecij=0.0d0 -1851a2751,2795 -> c -> c -> c 9/27/08 AL Split the interaction loop to ensure load balancing of turn terms -> C -> C Loop over i,i+2 and i,i+3 pairs of the peptide groups -> C -> do i=iturn3_start,iturn3_end -> if (itype(i).eq.21 .or. itype(i+1).eq.21 -> & .or. itype(i+2).eq.21 .or. itype(i+3).eq.21) cycle -> dxi=dc(1,i) -> dyi=dc(2,i) -> dzi=dc(3,i) -> dx_normi=dc_norm(1,i) -> dy_normi=dc_norm(2,i) -> dz_normi=dc_norm(3,i) -> xmedi=c(1,i)+0.5d0*dxi -> ymedi=c(2,i)+0.5d0*dyi -> zmedi=c(3,i)+0.5d0*dzi -> num_conti=0 -> call eelecij(i,i+2,ees,evdw1,eel_loc) -> if (wturn3.gt.0.0d0) call eturn3(i,eello_turn3) -> num_cont_hb(i)=num_conti -> enddo -> do i=iturn4_start,iturn4_end -> if (itype(i).eq.21 .or. itype(i+1).eq.21 -> & .or. itype(i+3).eq.21 -> & .or. itype(i+4).eq.21) cycle -> dxi=dc(1,i) -> dyi=dc(2,i) -> dzi=dc(3,i) -> dx_normi=dc_norm(1,i) -> dy_normi=dc_norm(2,i) -> dz_normi=dc_norm(3,i) -> xmedi=c(1,i)+0.5d0*dxi -> ymedi=c(2,i)+0.5d0*dyi -> zmedi=c(3,i)+0.5d0*dzi -> num_conti=num_cont_hb(i) -> call eelecij(i,i+3,ees,evdw1,eel_loc) -> if (wturn4.gt.0.0d0 .and. itype(i+2).ne.21) -> & call eturn4(i,eello_turn4) -> num_cont_hb(i)=num_conti -> enddo ! i -> c -> c Loop over all pairs of interacting peptide groups except i,i+2 and i,i+3 -> c -1854d2797 -< if (itel(i).eq.0) goto 1215 -1864d2806 -< num_conti=0 -1865a2808 -> num_conti=num_cont_hb(i) -1866a2810 -> c write (iout,*) i,j,itype(i),itype(j) -1868,1869c2812,2866 -< if (itel(j).eq.0) goto 1216 -< ind=ind+1 ---- -> call eelecij(i,j,ees,evdw1,eel_loc) -> enddo ! j -> num_cont_hb(i)=num_conti -> enddo ! i -> c write (iout,*) "Number of loop steps in EELEC:",ind -> cd do i=1,nres -> cd write (iout,'(i3,3f10.5,5x,3f10.5)') -> cd & i,(gel_loc(k,i),k=1,3),gel_loc_loc(i) -> cd enddo -> c 12/7/99 Adam eello_turn3 will be considered as a separate energy term -> ccc eel_loc=eel_loc+eello_turn3 -> cd print *,"Processor",fg_rank," t_eelecij",t_eelecij -> return -> end -> C------------------------------------------------------------------------------- -> subroutine eelecij(i,j,ees,evdw1,eel_loc) -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> #ifdef MPI -> include "mpif.h" -> #endif -> include 'COMMON.CONTROL' -> include 'COMMON.IOUNITS' -> include 'COMMON.GEO' -> include 'COMMON.VAR' -> include 'COMMON.LOCAL' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VECTORS' -> include 'COMMON.FFIELD' -> include 'COMMON.TIME1' -> dimension ggg(3),gggp(3),gggm(3),erij(3),dcosb(3),dcosg(3), -> & erder(3,3),uryg(3,3),urzg(3,3),vryg(3,3),vrzg(3,3) -> double precision acipa(2,2),agg(3,4),aggi(3,4),aggi1(3,4), -> & aggj(3,4),aggj1(3,4),a_temp(2,2),muij(4) -> common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,a22,a23,a32,a33, -> & dxi,dyi,dzi,dx_normi,dy_normi,dz_normi,xmedi,ymedi,zmedi, -> & num_conti,j1,j2 -> c 4/26/02 - AL scaling factor for 1,4 repulsive VDW interactions -> #ifdef MOMENT -> double precision scal_el /1.0d0/ -> #else -> double precision scal_el /0.5d0/ -> #endif -> C 12/13/98 -> C 13-go grudnia roku pamietnego... -> double precision unmat(3,3) /1.0d0,0.0d0,0.0d0, -> & 0.0d0,1.0d0,0.0d0, -> & 0.0d0,0.0d0,1.0d0/ -> c time00=MPI_Wtime() -> cd write (iout,*) "eelecij",i,j -> c ind=ind+1 -1875,1880d2871 -< C Diagnostics only!!! -< c aaa=0.0D0 -< c bbb=0.0D0 -< c ael6i=0.0D0 -< c ael3i=0.0D0 -< C End diagnostics -1912d2902 -< c write (iout,*) "i",i,iteli," j",j,itelj," eesij",eesij -1920a2911,2916 -> -> if (energy_dec) then -> write (iout,'(a6,2i5,0pf7.3)') 'evdw1',i,j,evdwij -> write (iout,'(a6,2i5,0pf7.3)') 'ees',i,j,eesij -> endif -> -1925c2921 -< facvdw=-6*rrmij*(ev1+evdwij) ---- -> facvdw=-6*rrmij*(ev1+evdwij) -1931d2926 -< if (calc_grad) then -1934c2929 -< * ---- -> * -1937a2933,2938 -> c do k=1,3 -> c ghalf=0.5D0*ggg(k) -> c gelc(k,i)=gelc(k,i)+ghalf -> c gelc(k,j)=gelc(k,j)+ghalf -> c enddo -> c 9/28/08 AL Gradient compotents will be summed only at the end -1939,1941c2940,2941 -< ghalf=0.5D0*ggg(k) -< gelc(k,i)=gelc(k,i)+ghalf -< gelc(k,j)=gelc(k,j)+ghalf ---- -> gelc_long(k,j)=gelc_long(k,j)+ggg(k) -> gelc_long(k,i)=gelc_long(k,i)-ggg(k) -1946,1950c2946,2950 -< do k=i+1,j-1 -< do l=1,3 -< gelc(l,k)=gelc(l,k)+ggg(l) -< enddo -< enddo ---- -> cgrad do k=i+1,j-1 -> cgrad do l=1,3 -> cgrad gelc(l,k)=gelc(l,k)+ggg(l) -> cgrad enddo -> cgrad enddo -1953a2954,2959 -> c do k=1,3 -> c ghalf=0.5D0*ggg(k) -> c gvdwpp(k,i)=gvdwpp(k,i)+ghalf -> c gvdwpp(k,j)=gvdwpp(k,j)+ghalf -> c enddo -> c 9/28/08 AL Gradient compotents will be summed only at the end -1955,1957c2961,2962 -< ghalf=0.5D0*ggg(k) -< gvdwpp(k,i)=gvdwpp(k,i)+ghalf -< gvdwpp(k,j)=gvdwpp(k,j)+ghalf ---- -> gvdwpp(k,j)=gvdwpp(k,j)+ggg(k) -> gvdwpp(k,i)=gvdwpp(k,i)-ggg(k) -1962,1966c2967,2971 -< do k=i+1,j-1 -< do l=1,3 -< gvdwpp(l,k)=gvdwpp(l,k)+ggg(l) -< enddo -< enddo ---- -> cgrad do k=i+1,j-1 -> cgrad do l=1,3 -> cgrad gvdwpp(l,k)=gvdwpp(l,k)+ggg(l) -> cgrad enddo -> cgrad enddo -1975d2979 -< if (calc_grad) then -1981a2986,2991 -> c do k=1,3 -> c ghalf=0.5D0*ggg(k) -> c gelc(k,i)=gelc(k,i)+ghalf -> c gelc(k,j)=gelc(k,j)+ghalf -> c enddo -> c 9/28/08 AL Gradient compotents will be summed only at the end -1983,1985c2993,2994 -< ghalf=0.5D0*ggg(k) -< gelc(k,i)=gelc(k,i)+ghalf -< gelc(k,j)=gelc(k,j)+ghalf ---- -> gelc_long(k,j)=gelc(k,j)+ggg(k) -> gelc_long(k,i)=gelc(k,i)-ggg(k) -1990,1993c2999,3010 -< do k=i+1,j-1 -< do l=1,3 -< gelc(l,k)=gelc(l,k)+ggg(l) -< enddo ---- -> cgrad do k=i+1,j-1 -> cgrad do l=1,3 -> cgrad gelc(l,k)=gelc(l,k)+ggg(l) -> cgrad enddo -> cgrad enddo -> c 9/28/08 AL Gradient compotents will be summed only at the end -> ggg(1)=facvdw*xj -> ggg(2)=facvdw*yj -> ggg(3)=facvdw*zj -> do k=1,3 -> gvdwpp(k,j)=gvdwpp(k,j)+ggg(k) -> gvdwpp(k,i)=gvdwpp(k,i)-ggg(k) -2012a3030,3043 -> c do k=1,3 -> c ghalf=0.5D0*ggg(k) -> c gelc(k,i)=gelc(k,i)+ghalf -> c & +(ecosa*(dc_norm(k,j)-cosa*dc_norm(k,i)) -> c & + ecosb*(erij(k)-cosb*dc_norm(k,i)))*vbld_inv(i+1) -> c gelc(k,j)=gelc(k,j)+ghalf -> c & +(ecosa*(dc_norm(k,i)-cosa*dc_norm(k,j)) -> c & + ecosg*(erij(k)-cosg*dc_norm(k,j)))*vbld_inv(j+1) -> c enddo -> cgrad do k=i+1,j-1 -> cgrad do l=1,3 -> cgrad gelc(l,k)=gelc(l,k)+ggg(l) -> cgrad enddo -> cgrad enddo -2014,2015c3045 -< ghalf=0.5D0*ggg(k) -< gelc(k,i)=gelc(k,i)+ghalf ---- -> gelc(k,i)=gelc(k,i) -2018c3048 -< gelc(k,j)=gelc(k,j)+ghalf ---- -> gelc(k,j)=gelc(k,j) -2020a3051,3052 -> gelc_long(k,j)=gelc_long(k,j)+ggg(k) -> gelc_long(k,i)=gelc_long(k,i)-ggg(k) -2022,2028d3053 -< do k=i+1,j-1 -< do l=1,3 -< gelc(l,k)=gelc(l,k)+ggg(l) -< enddo -< enddo -< endif -< -2064,2068d3088 -< C For diagnostics only -< cd a22=1.0d0 -< cd a23=1.0d0 -< cd a32=1.0d0 -< cd a33=1.0d0 -2070,2072d3089 -< cd write (2,*) 'fac=',fac -< C For diagnostics only -< cd fac=1.0d0 -2080,2081c3097,3098 -< cd write (iout,'(2(3f10.5,5x)/2(3f10.5,5x))') (uy(k,i),k=1,3), -< cd & (uz(k,i),k=1,3),(uy(k,j),k=1,3),(uz(k,j),k=1,3) ---- -> cd write (iout,'(2(3f10.5,5x)/2(3f10.5,5x))') uy(:,i),uz(:,i), -> cd & uy(:,j),uz(:,j) -2086c3103 -< cd write (iout,'(2i3,9f10.5/)') i,j, ---- -> cd write (iout,'(9f10.5/)') -2088d3104 -< if (calc_grad) then -2090,2095c3106 -< call unormderiv(erij(1),unmat(1,1),rmij,erder(1,1)) -< cd do k=1,3 -< cd do l=1,3 -< cd erder(k,l)=0.0d0 -< cd enddo -< cd enddo ---- -> call unormderiv(erij(1),unmat(1,1),rmij,erder(1,1)) -2110,2117d3120 -< cd do k=1,3 -< cd do l=1,3 -< cd uryg(k,l)=0.0d0 -< cd urzg(k,l)=0.0d0 -< cd vryg(k,l)=0.0d0 -< cd vrzg(k,l)=0.0d0 -< cd enddo -< cd enddo -2124,2127d3126 -< cd a22der=0.0d0 -< cd a23der=0.0d0 -< cd a32der=0.0d0 -< cd a33der=0.0d0 -2150,2153c3149,3152 -< ghalf1=0.5d0*agg(k,1) -< ghalf2=0.5d0*agg(k,2) -< ghalf3=0.5d0*agg(k,3) -< ghalf4=0.5d0*agg(k,4) ---- -> cgrad ghalf1=0.5d0*agg(k,1) -> cgrad ghalf2=0.5d0*agg(k,2) -> cgrad ghalf3=0.5d0*agg(k,3) -> cgrad ghalf4=0.5d0*agg(k,4) -2155c3154 -< & -3.0d0*uryg(k,2)*vry)+ghalf1 ---- -> & -3.0d0*uryg(k,2)*vry)!+ghalf1 -2157c3156 -< & -3.0d0*uryg(k,2)*vrz)+ghalf2 ---- -> & -3.0d0*uryg(k,2)*vrz)!+ghalf2 -2159c3158 -< & -3.0d0*urzg(k,2)*vry)+ghalf3 ---- -> & -3.0d0*urzg(k,2)*vry)!+ghalf3 -2161c3160 -< & -3.0d0*urzg(k,2)*vrz)+ghalf4 ---- -> & -3.0d0*urzg(k,2)*vrz)!+ghalf4 -2164c3163 -< & -3.0d0*uryg(k,3)*vry)+agg(k,1) ---- -> & -3.0d0*uryg(k,3)*vry)!+agg(k,1) -2166c3165 -< & -3.0d0*uryg(k,3)*vrz)+agg(k,2) ---- -> & -3.0d0*uryg(k,3)*vrz)!+agg(k,2) -2168c3167 -< & -3.0d0*urzg(k,3)*vry)+agg(k,3) ---- -> & -3.0d0*urzg(k,3)*vry)!+agg(k,3) -2170c3169 -< & -3.0d0*urzg(k,3)*vrz)+agg(k,4) ---- -> & -3.0d0*urzg(k,3)*vrz)!+agg(k,4) -2173c3172 -< & -3.0d0*vryg(k,2)*ury)+ghalf1 ---- -> & -3.0d0*vryg(k,2)*ury)!+ghalf1 -2175c3174 -< & -3.0d0*vrzg(k,2)*ury)+ghalf2 ---- -> & -3.0d0*vrzg(k,2)*ury)!+ghalf2 -2177c3176 -< & -3.0d0*vryg(k,2)*urz)+ghalf3 ---- -> & -3.0d0*vryg(k,2)*urz)!+ghalf3 -2179c3178 -< & -3.0d0*vrzg(k,2)*urz)+ghalf4 ---- -> & -3.0d0*vrzg(k,2)*urz)!+ghalf4 -2189,2213c3188,3192 -< cd aggi(k,1)=ghalf1 -< cd aggi(k,2)=ghalf2 -< cd aggi(k,3)=ghalf3 -< cd aggi(k,4)=ghalf4 -< C Derivatives in DC(i+1) -< cd aggi1(k,1)=agg(k,1) -< cd aggi1(k,2)=agg(k,2) -< cd aggi1(k,3)=agg(k,3) -< cd aggi1(k,4)=agg(k,4) -< C Derivatives in DC(j) -< cd aggj(k,1)=ghalf1 -< cd aggj(k,2)=ghalf2 -< cd aggj(k,3)=ghalf3 -< cd aggj(k,4)=ghalf4 -< C Derivatives in DC(j+1) -< cd aggj1(k,1)=0.0d0 -< cd aggj1(k,2)=0.0d0 -< cd aggj1(k,3)=0.0d0 -< cd aggj1(k,4)=0.0d0 -< if (j.eq.nres-1 .and. i.lt.j-2) then -< do l=1,4 -< aggj1(k,l)=aggj1(k,l)+agg(k,l) -< cd aggj1(k,l)=agg(k,l) -< enddo -< endif ---- -> cgrad if (j.eq.nres-1 .and. i.lt.j-2) then -> cgrad do l=1,4 -> cgrad aggj1(k,l)=aggj1(k,l)+agg(k,l) -> cgrad enddo -> cgrad endif -2215,2217d3193 -< endif -< c goto 11111 -< C Check the loc-el terms by numerical integration -2261d3236 -< 11111 continue -2267c3242,3245 -< cd write (iout,*) a22,muij(1),a23,muij(2),a32,muij(3) ---- -> -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'eelloc',i,j,eel_loc_ij -> -2270d3247 -< if (calc_grad) then -2278,2284d3254 -< cd call checkint3(i,j,mu1,mu2,a22,a23,a32,a33,acipa,eel_loc_ij) -< cd write(iout,*) 'agg ',agg -< cd write(iout,*) 'aggi ',aggi -< cd write(iout,*) 'aggi1',aggi1 -< cd write(iout,*) 'aggj ',aggj -< cd write(iout,*) 'aggj1',aggj1 -< -2289,2294c3259,3269 -< enddo -< do k=i+2,j2 -< do l=1,3 -< gel_loc(l,k)=gel_loc(l,k)+ggg(l) -< enddo -< enddo ---- -> gel_loc_long(l,j)=gel_loc_long(l,j)+ggg(l) -> gel_loc_long(l,i)=gel_loc_long(l,i)-ggg(l) -> cgrad ghalf=0.5d0*ggg(l) -> cgrad gel_loc(l,i)=gel_loc(l,i)+ghalf -> cgrad gel_loc(l,j)=gel_loc(l,j)+ghalf -> enddo -> cgrad do k=i+1,j2 -> cgrad do l=1,3 -> cgrad gel_loc(l,k)=gel_loc(l,k)+ggg(l) -> cgrad enddo -> cgrad enddo -2306d3280 -< endif -2308,2315d3281 -< if (wturn3.gt.0.0d0 .or. wturn4.gt.0.0d0) then -< C Contributions from turns -< a_temp(1,1)=a22 -< a_temp(1,2)=a23 -< a_temp(2,1)=a32 -< a_temp(2,2)=a33 -< call eturn34(i,j,eello_turn3,eello_turn4) -< endif -2317c3283,3286 -< if (j.gt.i+1 .and. num_conti.le.maxconts) then ---- -> c if (j.gt.i+1 .and. num_conti.le.maxconts) then -> if (wcorr+wcorr4+wcorr5+wcorr6.gt.0.0d0 -> & .and. num_conti.le.maxconts) then -> c write (iout,*) i,j," entered corr" -2334a3304,3305 -> cd write (iout,*) "i",i," j",j," num_conti",num_conti, -> cd & " jcont_hb",jcont_hb(num_conti,i) -2350,2382d3320 -< c if (i.eq.1) then -< c a_chuj(1,1,num_conti,i)=-0.61d0 -< c a_chuj(1,2,num_conti,i)= 0.4d0 -< c a_chuj(2,1,num_conti,i)= 0.65d0 -< c a_chuj(2,2,num_conti,i)= 0.50d0 -< c else if (i.eq.2) then -< c a_chuj(1,1,num_conti,i)= 0.0d0 -< c a_chuj(1,2,num_conti,i)= 0.0d0 -< c a_chuj(2,1,num_conti,i)= 0.0d0 -< c a_chuj(2,2,num_conti,i)= 0.0d0 -< c endif -< C --- and its gradients -< cd write (iout,*) 'i',i,' j',j -< cd do kkk=1,3 -< cd write (iout,*) 'iii 1 kkk',kkk -< cd write (iout,*) agg(kkk,:) -< cd enddo -< cd do kkk=1,3 -< cd write (iout,*) 'iii 2 kkk',kkk -< cd write (iout,*) aggi(kkk,:) -< cd enddo -< cd do kkk=1,3 -< cd write (iout,*) 'iii 3 kkk',kkk -< cd write (iout,*) aggi1(kkk,:) -< cd enddo -< cd do kkk=1,3 -< cd write (iout,*) 'iii 4 kkk',kkk -< cd write (iout,*) aggj(kkk,:) -< cd enddo -< cd do kkk=1,3 -< cd write (iout,*) 'iii 5 kkk',kkk -< cd write (iout,*) aggj1(kkk,:) -< cd enddo -2393,2395d3330 -< c do mm=1,5 -< c a_chuj_der(k,l,m,mm,num_conti,i)=0.0d0 -< c enddo -2408,2409c3343,3356 -< ees0pij=dsqrt(4.0D0+cosa4+wij*wij-3.0D0*cosbg1*cosbg1) -< ees0mij=dsqrt(4.0D0-cosa4+wij*wij-3.0D0*cosbg2*cosbg2) ---- -> c ees0pij=dsqrt(4.0D0+cosa4+wij*wij-3.0D0*cosbg1*cosbg1) -> ees0tmp=4.0D0+cosa4+wij*wij-3.0D0*cosbg1*cosbg1 -> if (ees0tmp.gt.0) then -> ees0pij=dsqrt(ees0tmp) -> else -> ees0pij=0 -> endif -> c ees0mij=dsqrt(4.0D0-cosa4+wij*wij-3.0D0*cosbg2*cosbg2) -> ees0tmp=4.0D0-cosa4+wij*wij-3.0D0*cosbg2*cosbg2 -> if (ees0tmp.gt.0) then -> ees0mij=dsqrt(ees0tmp) -> else -> ees0mij=0 -> endif -2418,2421c3365,3366 -< c write (iout,*) 'i=',i,' j=',j,' rij=',rij,' r0ij=',r0ij, -< c & ' ees0ij=',ees0p(num_conti,i),ees0m(num_conti,i),' fcont=',fcont -< facont_hb(num_conti,i)=fcont -< if (calc_grad) then ---- -> c write (iout,*) 'i=',i,' j=',j,' rij=',rij,' r0ij=',r0ij, -> c & ' ees0ij=',ees0p(num_conti,i),ees0m(num_conti,i),' fcont=',fcont -2448a3394 -> facont_hb(num_conti,i)=fcont -2472,2474c3418,3424 -< ghalfp=0.5D0*gggp(k) -< ghalfm=0.5D0*gggm(k) -< gacontp_hb1(k,num_conti,i)=ghalfp ---- -> c -> c 10/24/08 cgrad and ! comments indicate the parts of the code removed -> c following the change of gradient-summation algorithm. -> c -> cgrad ghalfp=0.5D0*gggp(k) -> cgrad ghalfm=0.5D0*gggm(k) -> gacontp_hb1(k,num_conti,i)=!ghalfp -2477c3427 -< gacontp_hb2(k,num_conti,i)=ghalfp ---- -> gacontp_hb2(k,num_conti,i)=!ghalfp -2481c3431 -< gacontm_hb1(k,num_conti,i)=ghalfm ---- -> gacontm_hb1(k,num_conti,i)=!ghalfm -2484c3434 -< gacontm_hb2(k,num_conti,i)=ghalfm ---- -> gacontm_hb2(k,num_conti,i)=!ghalfm -2489d3438 -< endif -2503,2513c3452,3469 -< 1216 continue -< enddo ! j -< num_cont_hb(i)=num_conti -< 1215 continue -< enddo ! i -< cd do i=1,nres -< cd write (iout,'(i3,3f10.5,5x,3f10.5)') -< cd & i,(gel_loc(k,i),k=1,3),gel_loc_loc(i) -< cd enddo -< c 12/7/99 Adam eello_turn3 will be considered as a separate energy term -< ccc eel_loc=eel_loc+eello_turn3 ---- -> if (wturn3.gt.0.0d0 .or. wturn4.gt.0.0d0) then -> do k=1,4 -> do l=1,3 -> ghalf=0.5d0*agg(l,k) -> aggi(l,k)=aggi(l,k)+ghalf -> aggi1(l,k)=aggi1(l,k)+agg(l,k) -> aggj(l,k)=aggj(l,k)+ghalf -> enddo -> enddo -> if (j.eq.nres-1 .and. i.lt.j-2) then -> do k=1,4 -> do l=1,3 -> aggj1(l,k)=aggj1(l,k)+agg(l,k) -> enddo -> enddo -> endif -> endif -> c t_eelecij=t_eelecij+MPI_Wtime()-time00 -2517c3473 -< subroutine eturn34(i,j,eello_turn3,eello_turn4) ---- -> subroutine eturn3(i,eello_turn3) -2521d3476 -< include 'DIMENSIONS.ZSCOPT' -2532a3488 -> include 'COMMON.CONTROL' -2538,2540c3494,3503 -< & aggj(3,4),aggj1(3,4),a_temp(2,2) -< common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,j1,j2 -< if (j.eq.i+2) then ---- -> & aggj(3,4),aggj1(3,4),a_temp(2,2),auxmat3(2,2) -> common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,a22,a23,a32,a33, -> & dxi,dyi,dzi,dx_normi,dy_normi,dz_normi,xmedi,ymedi,zmedi, -> & num_conti,j1,j2 -> j=i+2 -> c write (iout,*) "eturn3",i,j,j1,j2 -> a_temp(1,1)=a22 -> a_temp(1,2)=a23 -> a_temp(2,1)=a32 -> a_temp(2,2)=a33 -2555a3519,3520 -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'eturn3',i,j,0.5d0*(pizda(1,1)+pizda(2,2)) -2559d3523 -< if (calc_grad) then -2562,2563c3526,3527 -< call transpose2(auxmat2(1,1),pizda(1,1)) -< call matmat2(a_temp(1,1),pizda(1,1),pizda(1,1)) ---- -> call transpose2(auxmat2(1,1),auxmat3(1,1)) -> call matmat2(a_temp(1,1),auxmat3(1,1),pizda(1,1)) -2567,2568c3531,3532 -< call transpose2(auxmat2(1,1),pizda(1,1)) -< call matmat2(a_temp(1,1),pizda(1,1),pizda(1,1)) ---- -> call transpose2(auxmat2(1,1),auxmat3(1,1)) -> call matmat2(a_temp(1,1),auxmat3(1,1),pizda(1,1)) -2573,2576c3537,3544 -< a_temp(1,1)=aggi(l,1) -< a_temp(1,2)=aggi(l,2) -< a_temp(2,1)=aggi(l,3) -< a_temp(2,2)=aggi(l,4) ---- -> c ghalf1=0.5d0*agg(l,1) -> c ghalf2=0.5d0*agg(l,2) -> c ghalf3=0.5d0*agg(l,3) -> c ghalf4=0.5d0*agg(l,4) -> a_temp(1,1)=aggi(l,1)!+ghalf1 -> a_temp(1,2)=aggi(l,2)!+ghalf2 -> a_temp(2,1)=aggi(l,3)!+ghalf3 -> a_temp(2,2)=aggi(l,4)!+ghalf4 -2580,2583c3548,3551 -< a_temp(1,1)=aggi1(l,1) -< a_temp(1,2)=aggi1(l,2) -< a_temp(2,1)=aggi1(l,3) -< a_temp(2,2)=aggi1(l,4) ---- -> a_temp(1,1)=aggi1(l,1)!+agg(l,1) -> a_temp(1,2)=aggi1(l,2)!+agg(l,2) -> a_temp(2,1)=aggi1(l,3)!+agg(l,3) -> a_temp(2,2)=aggi1(l,4)!+agg(l,4) -2587,2590c3555,3558 -< a_temp(1,1)=aggj(l,1) -< a_temp(1,2)=aggj(l,2) -< a_temp(2,1)=aggj(l,3) -< a_temp(2,2)=aggj(l,4) ---- -> a_temp(1,1)=aggj(l,1)!+ghalf1 -> a_temp(1,2)=aggj(l,2)!+ghalf2 -> a_temp(2,1)=aggj(l,3)!+ghalf3 -> a_temp(2,2)=aggj(l,4)!+ghalf4 -2602,2603c3570,3598 -< endif -< else if (j.eq.i+3 .and. itype(i+2).ne.21) then ---- -> return -> end -> C------------------------------------------------------------------------------- -> subroutine eturn4(i,eello_turn4) -> C Third- and fourth-order contributions from turns -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.IOUNITS' -> include 'COMMON.GEO' -> include 'COMMON.VAR' -> include 'COMMON.LOCAL' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.CONTACTS' -> include 'COMMON.TORSION' -> include 'COMMON.VECTORS' -> include 'COMMON.FFIELD' -> include 'COMMON.CONTROL' -> dimension ggg(3) -> double precision auxmat(2,2),auxmat1(2,2),auxmat2(2,2),pizda(2,2), -> & e1t(2,2),e2t(2,2),e3t(2,2),e1tder(2,2),e2tder(2,2),e3tder(2,2), -> & e1a(2,2),ae3(2,2),ae3e2(2,2),auxvec(2),auxvec1(2) -> double precision agg(3,4),aggi(3,4),aggi1(3,4), -> & aggj(3,4),aggj1(3,4),a_temp(2,2),auxmat3(2,2) -> common /locel/ a_temp,agg,aggi,aggi1,aggj,aggj1,a22,a23,a32,a33, -> & dxi,dyi,dzi,dx_normi,dy_normi,dz_normi,xmedi,ymedi,zmedi, -> & num_conti,j1,j2 -> j=i+3 -2615a3611,3615 -> c write (iout,*) "eturn4 i",i," j",j," j1",j1," j2",j2 -> a_temp(1,1)=a22 -> a_temp(1,2)=a23 -> a_temp(2,1)=a32 -> a_temp(2,2)=a33 -2618a3619 -> c write(iout,*) "iti1",iti1," iti2",iti2," iti3",iti3 -2631a3633,3634 -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'eturn4',i,j,-(s1+s2+s3) -2635d3637 -< if (calc_grad) then -2658,2659c3660,3661 -< call matmat2(auxmat(1,1),e2t(1,1),auxmat(1,1)) -< call matmat2(auxmat(1,1),e1t(1,1),pizda(1,1)) ---- -> call matmat2(auxmat(1,1),e2t(1,1),auxmat3(1,1)) -> call matmat2(auxmat3(1,1),e1t(1,1),pizda(1,1)) -2739a3742 -> c write (iout,*) "s1",s1," s2",s2," s3",s3," s1+s2+s3",s1+s2+s3 -2742,2743d3744 -< endif -< endif -2779a3781,3877 -> subroutine escp_soft_sphere(evdw2,evdw2_14) -> C -> C This subroutine calculates the excluded-volume interaction energy between -> C peptide-group centers and side chains and its gradient in virtual-bond and -> C side-chain vectors. -> C -> implicit real*8 (a-h,o-z) -> include 'DIMENSIONS' -> include 'COMMON.GEO' -> include 'COMMON.VAR' -> include 'COMMON.LOCAL' -> include 'COMMON.CHAIN' -> include 'COMMON.DERIV' -> include 'COMMON.INTERACT' -> include 'COMMON.FFIELD' -> include 'COMMON.IOUNITS' -> include 'COMMON.CONTROL' -> dimension ggg(3) -> evdw2=0.0D0 -> evdw2_14=0.0d0 -> r0_scp=4.5d0 -> cd print '(a)','Enter ESCP' -> cd write (iout,*) 'iatscp_s=',iatscp_s,' iatscp_e=',iatscp_e -> do i=iatscp_s,iatscp_e -> if (itype(i).eq.21 .or. itype(i+1).eq.21) cycle -> iteli=itel(i) -> xi=0.5D0*(c(1,i)+c(1,i+1)) -> yi=0.5D0*(c(2,i)+c(2,i+1)) -> zi=0.5D0*(c(3,i)+c(3,i+1)) -> -> do iint=1,nscp_gr(i) -> -> do j=iscpstart(i,iint),iscpend(i,iint) -> if (itype(j).eq.21) cycle -> itypj=itype(j) -> C Uncomment following three lines for SC-p interactions -> c xj=c(1,nres+j)-xi -> c yj=c(2,nres+j)-yi -> c zj=c(3,nres+j)-zi -> C Uncomment following three lines for Ca-p interactions -> xj=c(1,j)-xi -> yj=c(2,j)-yi -> zj=c(3,j)-zi -> rij=xj*xj+yj*yj+zj*zj -> r0ij=r0_scp -> r0ijsq=r0ij*r0ij -> if (rij.lt.r0ijsq) then -> evdwij=0.25d0*(rij-r0ijsq)**2 -> fac=rij-r0ijsq -> else -> evdwij=0.0d0 -> fac=0.0d0 -> endif -> evdw2=evdw2+evdwij -> C -> C Calculate contributions to the gradient in the virtual-bond and SC vectors. -> C -> ggg(1)=xj*fac -> ggg(2)=yj*fac -> ggg(3)=zj*fac -> cgrad if (j.lt.i) then -> cd write (iout,*) 'j C Uncomment following three lines for SC-p interactions -> c do k=1,3 -> c gradx_scp(k,j)=gradx_scp(k,j)+ggg(k) -> c enddo -> cgrad else -> cd write (iout,*) 'j>i' -> cgrad do k=1,3 -> cgrad ggg(k)=-ggg(k) -> C Uncomment following line for SC-p interactions -> c gradx_scp(k,j)=gradx_scp(k,j)-ggg(k) -> cgrad enddo -> cgrad endif -> cgrad do k=1,3 -> cgrad gvdwc_scp(k,i)=gvdwc_scp(k,i)-0.5D0*ggg(k) -> cgrad enddo -> cgrad kstart=min0(i+1,j) -> cgrad kend=max0(i-1,j-1) -> cd write (iout,*) 'i=',i,' j=',j,' kstart=',kstart,' kend=',kend -> cd write (iout,*) ggg(1),ggg(2),ggg(3) -> cgrad do k=kstart,kend -> cgrad do l=1,3 -> cgrad gvdwc_scp(l,k)=gvdwc_scp(l,k)-ggg(l) -> cgrad enddo -> cgrad enddo -> do k=1,3 -> gvdwc_scpp(k,i)=gvdwc_scpp(k,i)-ggg(k) -> gvdwc_scp(k,j)=gvdwc_scp(k,j)+ggg(k) -> enddo -> enddo -> -> enddo ! iint -> enddo ! i -> return -> end -> C----------------------------------------------------------------------------- -2788d3885 -< include 'DIMENSIONS.ZSCOPT' -2796a3894 -> include 'COMMON.CONTROL' -2801,2802c3899 -< c write (iout,*) 'iatscp_s=',iatscp_s,' iatscp_e=',iatscp_e, -< c & ' scal14',scal14 ---- -> cd write (iout,*) 'iatscp_s=',iatscp_s,' iatscp_e=',iatscp_e -2806,2808d3902 -< c write (iout,*) "i",i," iteli",iteli," nscp_gr",nscp_gr(i), -< c & " iscp",(iscpstart(i,j),iscpend(i,j),j=1,nscp_gr(i)) -< if (iteli.eq.0) goto 1225 -2836d3929 -< c write (iout,*) i,j,evdwij -2838c3931,3932 -< if (calc_grad) then ---- -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'evdw2',i,j,evdwij -2846c3940 -< if (j.lt.i) then ---- -> cgrad if (j.lt.i) then -2852c3946 -< else ---- -> cgrad else -2854,2855c3948,3949 -< do k=1,3 -< ggg(k)=-ggg(k) ---- -> cgrad do k=1,3 -> cgrad ggg(k)=-ggg(k) -2857,2864c3951,3959 -< c gradx_scp(k,j)=gradx_scp(k,j)-ggg(k) -< enddo -< endif -< do k=1,3 -< gvdwc_scp(k,i)=gvdwc_scp(k,i)-0.5D0*ggg(k) -< enddo -< kstart=min0(i+1,j) -< kend=max0(i-1,j-1) ---- -> ccgrad gradx_scp(k,j)=gradx_scp(k,j)-ggg(k) -> c gradx_scp(k,j)=gradx_scp(k,j)+ggg(k) -> cgrad enddo -> cgrad endif -> cgrad do k=1,3 -> cgrad gvdwc_scp(k,i)=gvdwc_scp(k,i)-0.5D0*ggg(k) -> cgrad enddo -> cgrad kstart=min0(i+1,j) -> cgrad kend=max0(i-1,j-1) -2867,2870c3962,3969 -< do k=kstart,kend -< do l=1,3 -< gvdwc_scp(l,k)=gvdwc_scp(l,k)-ggg(l) -< enddo ---- -> cgrad do k=kstart,kend -> cgrad do l=1,3 -> cgrad gvdwc_scp(l,k)=gvdwc_scp(l,k)-ggg(l) -> cgrad enddo -> cgrad enddo -> do k=1,3 -> gvdwc_scpp(k,i)=gvdwc_scpp(k,i)-ggg(k) -> gvdwc_scp(k,j)=gvdwc_scp(k,j)+ggg(k) -2872d3970 -< endif -2873a3972 -> -2875d3973 -< 1225 continue -2879a3978 -> gvdwc_scpp(j,i)=expon*gvdwc_scpp(j,i) -2901d3999 -< include 'DIMENSIONS.ZSCOPT' -2906a4005 -> include 'COMMON.IOUNITS' -2909,2910c4008,4009 -< cd print *,'edis: nhpb=',nhpb,' fbr=',fbr -< cd print *,'link_start=',link_start,' link_end=',link_end ---- -> cd write(iout,*)'edis: nhpb=',nhpb,' fbr=',fbr -> cd write(iout,*)'link_start=',link_start,' link_end=',link_end -2924a4024 -> cd write (iout,*) "i",i," ii",ii," iii",iii," jj",jj," jjj",jjj -2929a4030 -> cd write (iout,*) "eij",eij -2957,2960c4058,4065 -< do j=iii,jjj-1 -< do k=1,3 -< ghpbc(k,j)=ghpbc(k,j)+ggg(k) -< enddo ---- -> cgrad do j=iii,jjj-1 -> cgrad do k=1,3 -> cgrad ghpbc(k,j)=ghpbc(k,j)+ggg(k) -> cgrad enddo -> cgrad enddo -> do k=1,3 -> ghpbc(k,jjj)=ghpbc(k,jjj)+ggg(k) -> ghpbc(k,iii)=ghpbc(k,iii)-ggg(k) -2978d4082 -< include 'DIMENSIONS.ZSCOPT' -2994c4098,4099 -< dsci_inv=dsc_inv(itypi) ---- -> c dsci_inv=dsc_inv(itypi) -> dsci_inv=vbld_inv(nres+i) -2996c4101,4102 -< dscj_inv=dsc_inv(itypj) ---- -> c dscj_inv=dsc_inv(itypj) -> dscj_inv=vbld_inv(nres+j) -3034,3040c4140,4148 -< gg(k)=ed*erij(k)+eom1*dcosom1(k)+eom2*dcosom2(k) -< enddo -< do k=1,3 -< ghpbx(k,i)=ghpbx(k,i)-gg(k) -< & +(eom12*dc_norm(k,nres+j)+eom1*erij(k))*dsci_inv -< ghpbx(k,j)=ghpbx(k,j)+gg(k) -< & +(eom12*dc_norm(k,nres+i)+eom2*erij(k))*dscj_inv ---- -> ggk=ed*erij(k)+eom1*dcosom1(k)+eom2*dcosom2(k) -> ghpbx(k,i)=ghpbx(k,i)-ggk -> & +(eom12*(dc_norm(k,nres+j)-om12*dc_norm(k,nres+i)) -> & +eom1*(erij(k)-om1*dc_norm(k,nres+i)))*dsci_inv -> ghpbx(k,j)=ghpbx(k,j)+ggk -> & +(eom12*(dc_norm(k,nres+i)-om12*dc_norm(k,nres+j)) -> & +eom2*(erij(k)-om2*dc_norm(k,nres+j)))*dscj_inv -> ghpbc(k,i)=ghpbc(k,i)-ggk -> ghpbc(k,j)=ghpbc(k,j)+ggk -3045,3049c4153,4157 -< do k=i,j-1 -< do l=1,3 -< ghpbc(l,k)=ghpbc(l,k)+gg(l) -< enddo -< enddo ---- -> cgrad do k=i,j-1 -> cgrad do l=1,3 -> cgrad ghpbc(l,k)=ghpbc(l,k)+gg(l) -> cgrad enddo -> cgrad enddo -3059d4166 -< include 'DIMENSIONS.ZSCOPT' -3070c4177 -< logical energy_dec /.false./ ---- -> include 'COMMON.SETUP' -3073,3074c4180,4181 -< write (iout,*) "distchainmax",distchainmax -< do i=nnt+1,nct ---- -> estr1=0.0d0 -> do i=ibondp_start,ibondp_end -3081c4188 -< if (energy_dec) write(iout,*) ---- -> if (energy_dec) write(iout,*) -3085,3090c4192,4199 -< diff = vbld(i)-vbldp0 -< c write (iout,*) i,vbld(i),vbldp0,diff,AKP*diff*diff -< estr=estr+diff*diff -< do j=1,3 -< gradb(j,i-1)=AKP*diff*dc(j,i-1)/vbld(i) -< enddo ---- -> diff = vbld(i)-vbldp0 -> if (energy_dec) write (iout,*) -> & "estr bb",i,vbld(i),vbldp0,diff,AKP*diff*diff -> estr=estr+diff*diff -> do j=1,3 -> gradb(j,i-1)=AKP*diff*dc(j,i-1)/vbld(i) -> enddo -> c write (iout,'(i5,3f10.5)') i,(gradb(j,i-1),j=1,3) -3092d4200 -< -3094c4202 -< estr=0.5d0*AKP*estr ---- -> estr=0.5d0*AKP*estr+estr1 -3098c4206 -< do i=nnt,nct ---- -> do i=ibond_start,ibond_end -3104,3105c4212,4214 -< c write (iout,*) i,iti,vbld(i+nres),vbldsc0(1,iti),diff, -< c & AKSC(1,iti),AKSC(1,iti)*diff*diff ---- -> if (energy_dec) write (iout,*) -> & "estr sc",i,iti,vbld(i+nres),vbldsc0(1,iti),diff, -> & AKSC(1,iti),AKSC(1,iti)*diff*diff -3112c4221 -< diff=vbld(i+nres)-vbldsc0(j,iti) ---- -> diff=vbld(i+nres)-vbldsc0(j,iti) -3132c4241 -< usumsqder=usumsqder+ud(j)*uprod2 ---- -> usumsqder=usumsqder+ud(j)*uprod2 -3134,3135d4242 -< c write (iout,*) i,iti,vbld(i+nres),(vbldsc0(j,iti), -< c & AKSC(j,iti),abond0(j,iti),u(j),j=1,nbi) -3144c4251 -< end ---- -> end -3154d4260 -< include 'DIMENSIONS.ZSCOPT' -3163a4270 -> include 'COMMON.CONTROL' -3169,3170c4276,4277 -< time11=dexp(-2*time) -< time12=1.0d0 ---- -> c time11=dexp(-2*time) -> c time12=1.0d0 -3172d4278 -< c write (iout,*) "nres",nres -3174d4279 -< c write (iout,*) ithet_start,ithet_end -3182,3185c4287,4288 -< phii=phi(i) -< icrc=0 -< call proc_proc(phii,icrc) -< if (icrc.eq.1) phii=150.0 ---- -> phii=phi(i) -> if (phii.ne.phii) phii=150.0 -3191c4294 -< else ---- -> else -3197,3200c4300,4301 -< phii1=phi(i+1) -< icrc=0 -< call proc_proc(phii1,icrc) -< if (icrc.eq.1) phii1=150.0 ---- -> phii1=phi(i+1) -> if (phii1.ne.phii1) phii1=150.0 -3211c4312 -< endif ---- -> endif -3221d4321 -< c write (iout,*) "thet_pred_mean",thet_pred_mean -3224d4323 -< c write (iout,*) "thet_pred_mean",thet_pred_mean -3250,3251c4349,4350 -< c write (iout,'(2i3,3f8.3,f10.5)') i,it,rad2deg*theta(i), -< c & rad2deg*phii,rad2deg*phii1,ethetai ---- -> if (energy_dec) write (iout,'(a6,i5,0pf7.3)') -> & 'ebend',i,ethetai -3255d4353 -< 1215 continue -3379d4476 -< include 'DIMENSIONS.ZSCOPT' -3396d4492 -< c write (iout,*) "ithetyp",(ithetyp(i),i=1,ntyp1) -3449,3451d4544 -< c write (iout,*) "i",i," ityp1",itype(i-2),ityp1, -< c & " ityp2",itype(i-1),ityp2," ityp3",itype(i),ityp3 -< c call flush(iout) -3571d4663 -< include 'DIMENSIONS.ZSCOPT' -3580a4673 -> include 'COMMON.CONTROL' -3598d4690 -< c write (iout,*) "i",i," x",x(1),x(2),x(3) -3672c4764,4766 -< c write (iout,*) 'i=',i,' escloci=',escloci,' dersc=',dersc ---- -> if (energy_dec) write (iout,'(a6,i5,0pf7.3)') -> & 'escloc',i,escloci -> c write (iout,*) 'i=',i,' escloci=',escloci,' dersc=',dersc -3745a4840,4844 -> #ifdef OSF -> adexp=bsc(j,it)-0.5D0*contr(j,iii)+emin -> if(adexp.ne.adexp) adexp=1.0 -> expfac=dexp(adexp) -> #else -3746a4846 -> #endif -3856d4955 -< include 'DIMENSIONS.ZSCOPT' -3991,3992c5090 -< c write (2,*) "escloc",escloc -< if (.not. calc_grad) goto 1 ---- -> c write (2,*) "i",i," escloc",sumene,escloc -4168a5267,5304 -> c------------------------------------------------------------------------------ -> double precision function enesc(x,xx,yy,zz,cost2,sint2) -> implicit none -> double precision x(65),xx,yy,zz,cost2,sint2,sumene1,sumene2, -> & sumene3,sumene4,sumene,dsc_i,dp2_i,dscp1,dscp2,s1,s1_6,s2,s2_6 -> sumene1= x(1)+ x(2)*xx+ x(3)*yy+ x(4)*zz+ x(5)*xx**2 -> & + x(6)*yy**2+ x(7)*zz**2+ x(8)*xx*zz+ x(9)*xx*yy -> & + x(10)*yy*zz -> sumene2= x(11) + x(12)*xx + x(13)*yy + x(14)*zz + x(15)*xx**2 -> & + x(16)*yy**2 + x(17)*zz**2 + x(18)*xx*zz + x(19)*xx*yy -> & + x(20)*yy*zz -> sumene3= x(21) +x(22)*xx +x(23)*yy +x(24)*zz +x(25)*xx**2 -> & +x(26)*yy**2 +x(27)*zz**2 +x(28)*xx*zz +x(29)*xx*yy -> & +x(30)*yy*zz +x(31)*xx**3 +x(32)*yy**3 +x(33)*zz**3 -> & +x(34)*(xx**2)*yy +x(35)*(xx**2)*zz +x(36)*(yy**2)*xx -> & +x(37)*(yy**2)*zz +x(38)*(zz**2)*xx +x(39)*(zz**2)*yy -> & +x(40)*xx*yy*zz -> sumene4= x(41) +x(42)*xx +x(43)*yy +x(44)*zz +x(45)*xx**2 -> & +x(46)*yy**2 +x(47)*zz**2 +x(48)*xx*zz +x(49)*xx*yy -> & +x(50)*yy*zz +x(51)*xx**3 +x(52)*yy**3 +x(53)*zz**3 -> & +x(54)*(xx**2)*yy +x(55)*(xx**2)*zz +x(56)*(yy**2)*xx -> & +x(57)*(yy**2)*zz +x(58)*(zz**2)*xx +x(59)*(zz**2)*yy -> & +x(60)*xx*yy*zz -> dsc_i = 0.743d0+x(61) -> dp2_i = 1.9d0+x(62) -> dscp1=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2+yy*sint2)) -> dscp2=dsqrt(dsc_i**2+dp2_i**2-2*dsc_i*dp2_i -> & *(xx*cost2-yy*sint2)) -> s1=(1+x(63))/(0.1d0 + dscp1) -> s1_6=(1+x(64))/(0.1d0 + dscp1**6) -> s2=(1+x(65))/(0.1d0 + dscp2) -> s2_6=(1+x(65))/(0.1d0 + dscp2**6) -> sumene = ( sumene3*sint2 + sumene1)*(s1+s1_6) -> & + (sumene4*cost2 +sumene2)*(s2+s2_6) -> enesc=sumene -> return -> end -4207d5342 -< include 'DIMENSIONS.ZSCOPT' -4252c5387 -< subroutine etor(etors,edihcnstr,fact) ---- -> subroutine etor(etors,edihcnstr) -4255d5389 -< include 'DIMENSIONS.ZSCOPT' -4266a5401 -> include 'COMMON.CONTROL' -4273c5408,5409 -< if (itype(i-2).eq.21 .or. itype(i-1).eq.21 ---- -> etors_ii=0.0D0 -> if (itype(i-2).eq.21 .or. itype(i-1).eq.21 -4286a5423 -> if (energy_dec) etors_ii=etors_ii+etorsi-v1(1,3,3) -4294a5432,5433 -> if (energy_dec) etors_ii=etors_ii+ -> & v2ij*sinphi+dabs(v1ij)+dabs(v2ij) -4303a5443,5444 -> if (energy_dec) etors_ii=etors_ii+ -> & v1ij*cosphi+v2ij*sinphi+dabs(v1ij)+dabs(v2ij) -4306a5448,5449 -> if (energy_dec) write (iout,'(a6,i5,0pf7.3)') -> 'etor',i,etors_ii -4311c5454 -< gloc(i-3,icg)=gloc(i-3,icg)+wtor*fact*gloci ---- -> gloc(i-3,icg)=gloc(i-3,icg)+wtor*gloci -4335a5479,5483 -> subroutine etor_d(etors_d) -> etors_d=0.0d0 -> return -> end -> c---------------------------------------------------------------------------- -4337c5485 -< subroutine etor(etors,edihcnstr,fact) ---- -> subroutine etor(etors,edihcnstr) -4340d5487 -< include 'DIMENSIONS.ZSCOPT' -4351a5499 -> include 'COMMON.CONTROL' -4355c5503 -< c lprn=.true. ---- -> c lprn=.true. -4358c5506 -< if (itype(i-2).eq.21 .or. itype(i-1).eq.21 ---- -> if (itype(i-2).eq.21 .or. itype(i-1).eq.21 -4360c5508 -< if (itel(i-2).eq.0 .or. itel(i-1).eq.0) goto 1215 ---- -> etors_ii=0.0D0 -4371a5520,5521 -> if (energy_dec) etors_ii=etors_ii+ -> & v1ij*cosphi+v2ij*sinphi -4387a5538,5539 -> if (energy_dec) etors_ii=etors_ii+ -> & vl1ij*pom1 -4392a5545,5546 -> if (energy_dec) write (iout,'(a6,i5,0pf7.3)') -> & 'etor',i,etors_ii-v0(itori,itori1) -4397c5551 -< gloc(i-3,icg)=gloc(i-3,icg)+wtor*fact*gloci ---- -> gloc(i-3,icg)=gloc(i-3,icg)+wtor*gloci -4399d5552 -< 1215 continue -4403c5556,5557 -< do i=1,ndih_constr ---- -> c do i=1,ndih_constr -> do i=idihconstr_start,idihconstr_end -4407d5560 -< edihi=0.0d0 -4412d5564 -< edihi=0.25d0*ftors*difi**4 -4417d5568 -< edihi=0.25d0*ftors*difi**4 -4419c5570 -< difi=0.0d0 ---- -> difi=0.0 -4421,4424c5572,5574 -< c write (iout,'(2i5,4f10.5,e15.5)') i,itori,phii,phi0(i),difi, -< c & drange(i),edihi -< ! write (iout,'(2i5,2f8.3,2e14.5)') i,itori,rad2deg*phii, -< ! & rad2deg*difi,0.25d0*ftors*difi**4,gloc(itori-3,icg) ---- -> cd write (iout,'(2i5,4f8.3,2e14.5)') i,itori,rad2deg*phii, -> cd & rad2deg*phi0(i), rad2deg*drange(i), -> cd & rad2deg*difi,0.25d0*ftors*difi**4,gloc(itori-3,icg) -4426c5576 -< ! write (iout,*) 'edihcnstr',edihcnstr ---- -> cd write (iout,*) 'edihcnstr',edihcnstr -4430c5580 -< subroutine etor_d(etors_d,fact2) ---- -> subroutine etor_d(etors_d) -4434d5583 -< include 'DIMENSIONS.ZSCOPT' -4451c5600 -< do i=iphi_start,iphi_end-1 ---- -> do i=iphid_start,iphid_end -4454,4455d5602 -< if (itel(i-2).eq.0 .or. itel(i-1).eq.0 .or. itel(i).eq.0) -< & goto 1215 -4496,4498c5643,5644 -< gloc(i-3,icg)=gloc(i-3,icg)+wtor_d*fact2*gloci1 -< gloc(i-2,icg)=gloc(i-2,icg)+wtor_d*fact2*gloci2 -< 1215 continue ---- -> gloc(i-3,icg)=gloc(i-3,icg)+wtor_d*gloci1 -> gloc(i-2,icg)=gloc(i-2,icg)+wtor_d*gloci2 -4509c5655 -< c of residues computed from AM1 energy surfaces of terminally-blocked ---- -> c of residues computed from AM1 energy surfaces of terminally-blocked -4513d5658 -< include 'DIMENSIONS.ZSCOPT' -4551c5696 -< gsccor_loc(i-3)=gloci ---- -> gsccor_loc(i-3)=gsccor_loc(i-3)+gloci -4555c5700 -< c------------------------------------------------------------------------------ ---- -> c---------------------------------------------------------------------------- -4638,4702c5783,5794 -< enddo -< do m=i,j-1 -< do ll=1,3 -< gradcorr(ll,m)=gradcorr(ll,m)+gx(ll) -< enddo -< enddo -< do m=k,l-1 -< do ll=1,3 -< gradcorr(ll,m)=gradcorr(ll,m)+gx1(ll) -< enddo -< enddo -< esccorr=-eij*ekl -< return -< end -< c------------------------------------------------------------------------------ -< #ifdef MPL -< subroutine pack_buffer(dimen1,dimen2,atom,indx,buffer) -< implicit real*8 (a-h,o-z) -< include 'DIMENSIONS' -< integer dimen1,dimen2,atom,indx -< double precision buffer(dimen1,dimen2) -< double precision zapas -< common /contacts_hb/ zapas(3,20,maxres,7), -< & facont_hb(20,maxres),ees0p(20,maxres),ees0m(20,maxres), -< & num_cont_hb(maxres),jcont_hb(20,maxres) -< num_kont=num_cont_hb(atom) -< do i=1,num_kont -< do k=1,7 -< do j=1,3 -< buffer(i,indx+(k-1)*3+j)=zapas(j,i,atom,k) -< enddo ! j -< enddo ! k -< buffer(i,indx+22)=facont_hb(i,atom) -< buffer(i,indx+23)=ees0p(i,atom) -< buffer(i,indx+24)=ees0m(i,atom) -< buffer(i,indx+25)=dfloat(jcont_hb(i,atom)) -< enddo ! i -< buffer(1,indx+26)=dfloat(num_kont) -< return -< end -< c------------------------------------------------------------------------------ -< subroutine unpack_buffer(dimen1,dimen2,atom,indx,buffer) -< implicit real*8 (a-h,o-z) -< include 'DIMENSIONS' -< integer dimen1,dimen2,atom,indx -< double precision buffer(dimen1,dimen2) -< double precision zapas -< common /contacts_hb/ zapas(3,20,maxres,7), -< & facont_hb(20,maxres),ees0p(20,maxres),ees0m(20,maxres), -< & num_cont_hb(maxres),jcont_hb(20,maxres) -< num_kont=buffer(1,indx+26) -< num_kont_old=num_cont_hb(atom) -< num_cont_hb(atom)=num_kont+num_kont_old -< do i=1,num_kont -< ii=i+num_kont_old -< do k=1,7 -< do j=1,3 -< zapas(j,ii,atom,k)=buffer(i,indx+(k-1)*3+j) -< enddo ! j -< enddo ! k -< facont_hb(ii,atom)=buffer(i,indx+22) -< ees0p(ii,atom)=buffer(i,indx+23) -< ees0m(ii,atom)=buffer(i,indx+24) -< jcont_hb(ii,atom)=buffer(i,indx+25) -< enddo ! i ---- -> enddo -> do m=i,j-1 -> do ll=1,3 -> gradcorr(ll,m)=gradcorr(ll,m)+gx(ll) -> enddo -> enddo -> do m=k,l-1 -> do ll=1,3 -> gradcorr(ll,m)=gradcorr(ll,m)+gx1(ll) -> enddo -> enddo -> esccorr=-eij*ekl -4706d5797 -< #endif -4711d5801 -< include 'DIMENSIONS.ZSCOPT' -4713,4714c5803,5812 -< #ifdef MPL -< include 'COMMON.INFO' ---- -> #ifdef MPI -> include "mpif.h" -> parameter (max_cont=maxconts) -> parameter (max_dim=26) -> integer source,CorrelType,CorrelID,CorrelType1,CorrelID1,Error -> double precision zapas(max_dim,maxconts,max_fg_procs), -> & zapas_recv(max_dim,maxconts,max_fg_procs) -> common /przechowalnia/ zapas -> integer status(MPI_STATUS_SIZE),req(maxconts*2), -> & status_array(MPI_STATUS_SIZE,maxconts*2) -4715a5814 -> include 'COMMON.SETUP' -4720,4728c5819,5821 -< #ifdef MPL -< parameter (max_cont=maxconts) -< parameter (max_dim=2*(8*3+2)) -< parameter (msglen1=max_cont*max_dim*4) -< parameter (msglen2=2*msglen1) -< integer source,CorrelType,CorrelID,Error -< double precision buffer(max_cont,max_dim) -< #endif -< double precision gx(3),gx1(3) ---- -> include 'COMMON.CONTROL' -> include 'COMMON.LOCAL' -> double precision gx(3),gx1(3),time00 -4733c5826 -< #ifdef MPL ---- -> #ifdef MPI -4736c5829 -< if (fgProcs.le.1) goto 30 ---- -> if (nfgtasks.le.1) goto 30 -4738c5831 -< write (iout,'(a)') 'Contact function values:' ---- -> write (iout,'(a)') 'Contact function values before RECEIVE:' -4745,4746c5838,5917 -< C Caution! Following code assumes that electrostatic interactions concerning -< C a given atom are split among at most two processors! ---- -> call flush(iout) -> do i=1,ntask_cont_from -> ncont_recv(i)=0 -> enddo -> do i=1,ntask_cont_to -> ncont_sent(i)=0 -> enddo -> c write (iout,*) "ntask_cont_from",ntask_cont_from," ntask_cont_to", -> c & ntask_cont_to -> C Make the list of contacts to send to send to other procesors -> c write (iout,*) "limits",max0(iturn4_end-1,iatel_s),iturn3_end -> c call flush(iout) -> do i=iturn3_start,iturn3_end -> c write (iout,*) "make contact list turn3",i," num_cont", -> c & num_cont_hb(i) -> call add_hb_contact(i,i+2,iturn3_sent_local(1,i)) -> enddo -> do i=iturn4_start,iturn4_end -> c write (iout,*) "make contact list turn4",i," num_cont", -> c & num_cont_hb(i) -> call add_hb_contact(i,i+3,iturn4_sent_local(1,i)) -> enddo -> do ii=1,nat_sent -> i=iat_sent(ii) -> c write (iout,*) "make contact list longrange",i,ii," num_cont", -> c & num_cont_hb(i) -> do j=1,num_cont_hb(i) -> do k=1,4 -> jjc=jcont_hb(j,i) -> iproc=iint_sent_local(k,jjc,ii) -> c write (iout,*) "i",i," j",j," k",k," jjc",jjc," iproc",iproc -> if (iproc.gt.0) then -> ncont_sent(iproc)=ncont_sent(iproc)+1 -> nn=ncont_sent(iproc) -> zapas(1,nn,iproc)=i -> zapas(2,nn,iproc)=jjc -> zapas(3,nn,iproc)=facont_hb(j,i) -> zapas(4,nn,iproc)=ees0p(j,i) -> zapas(5,nn,iproc)=ees0m(j,i) -> zapas(6,nn,iproc)=gacont_hbr(1,j,i) -> zapas(7,nn,iproc)=gacont_hbr(2,j,i) -> zapas(8,nn,iproc)=gacont_hbr(3,j,i) -> zapas(9,nn,iproc)=gacontm_hb1(1,j,i) -> zapas(10,nn,iproc)=gacontm_hb1(2,j,i) -> zapas(11,nn,iproc)=gacontm_hb1(3,j,i) -> zapas(12,nn,iproc)=gacontp_hb1(1,j,i) -> zapas(13,nn,iproc)=gacontp_hb1(2,j,i) -> zapas(14,nn,iproc)=gacontp_hb1(3,j,i) -> zapas(15,nn,iproc)=gacontm_hb2(1,j,i) -> zapas(16,nn,iproc)=gacontm_hb2(2,j,i) -> zapas(17,nn,iproc)=gacontm_hb2(3,j,i) -> zapas(18,nn,iproc)=gacontp_hb2(1,j,i) -> zapas(19,nn,iproc)=gacontp_hb2(2,j,i) -> zapas(20,nn,iproc)=gacontp_hb2(3,j,i) -> zapas(21,nn,iproc)=gacontm_hb3(1,j,i) -> zapas(22,nn,iproc)=gacontm_hb3(2,j,i) -> zapas(23,nn,iproc)=gacontm_hb3(3,j,i) -> zapas(24,nn,iproc)=gacontp_hb3(1,j,i) -> zapas(25,nn,iproc)=gacontp_hb3(2,j,i) -> zapas(26,nn,iproc)=gacontp_hb3(3,j,i) -> endif -> enddo -> enddo -> enddo -> if (lprn) then -> write (iout,*) -> & "Numbers of contacts to be sent to other processors", -> & (ncont_sent(i),i=1,ntask_cont_to) -> write (iout,*) "Contacts sent" -> do ii=1,ntask_cont_to -> nn=ncont_sent(ii) -> iproc=itask_cont_to(ii) -> write (iout,*) nn," contacts to processor",iproc, -> & " of CONT_TO_COMM group" -> do i=1,nn -> write(iout,'(2f5.0,4f10.5)')(zapas(j,i,ii),j=1,5) -> enddo -> enddo -> call flush(iout) -> endif -4748,4836c5919,6040 -< CorrelID=MyID+1 -< ldone=.false. -< do i=1,max_cont -< do j=1,max_dim -< buffer(i,j)=0.0D0 -< enddo -< enddo -< mm=mod(MyRank,2) -< cd write (iout,*) 'MyRank',MyRank,' mm',mm -< if (mm) 20,20,10 -< 10 continue -< cd write (iout,*) 'Sending: MyRank',MyRank,' mm',mm,' ldone',ldone -< if (MyRank.gt.0) then -< C Send correlation contributions to the preceding processor -< msglen=msglen1 -< nn=num_cont_hb(iatel_s) -< call pack_buffer(max_cont,max_dim,iatel_s,0,buffer) -< cd write (iout,*) 'The BUFFER array:' -< cd do i=1,nn -< cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j),j=1,26) -< cd enddo -< if (ielstart(iatel_s).gt.iatel_s+ispp) then -< msglen=msglen2 -< call pack_buffer(max_cont,max_dim,iatel_s+1,26,buffer) -< C Clear the contacts of the atom passed to the neighboring processor -< nn=num_cont_hb(iatel_s+1) -< cd do i=1,nn -< cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j+26),j=1,26) -< cd enddo -< num_cont_hb(iatel_s)=0 -< endif -< cd write (iout,*) 'Processor ',MyID,MyRank, -< cd & ' is sending correlation contribution to processor',MyID-1, -< cd & ' msglen=',msglen -< cd write (*,*) 'Processor ',MyID,MyRank, -< cd & ' is sending correlation contribution to processor',MyID-1, -< cd & ' msglen=',msglen,' CorrelType=',CorrelType -< call mp_bsend(buffer,msglen,MyID-1,CorrelType,CorrelID) -< cd write (iout,*) 'Processor ',MyID, -< cd & ' has sent correlation contribution to processor',MyID-1, -< cd & ' msglen=',msglen,' CorrelID=',CorrelID -< cd write (*,*) 'Processor ',MyID, -< cd & ' has sent correlation contribution to processor',MyID-1, -< cd & ' msglen=',msglen,' CorrelID=',CorrelID -< msglen=msglen1 -< endif ! (MyRank.gt.0) -< if (ldone) goto 30 -< ldone=.true. -< 20 continue -< cd write (iout,*) 'Receiving: MyRank',MyRank,' mm',mm,' ldone',ldone -< if (MyRank.lt.fgProcs-1) then -< C Receive correlation contributions from the next processor -< msglen=msglen1 -< if (ielend(iatel_e).lt.nct-1) msglen=msglen2 -< cd write (iout,*) 'Processor',MyID, -< cd & ' is receiving correlation contribution from processor',MyID+1, -< cd & ' msglen=',msglen,' CorrelType=',CorrelType -< cd write (*,*) 'Processor',MyID, -< cd & ' is receiving correlation contribution from processor',MyID+1, -< cd & ' msglen=',msglen,' CorrelType=',CorrelType -< nbytes=-1 -< do while (nbytes.le.0) -< call mp_probe(MyID+1,CorrelType,nbytes) -< enddo -< cd print *,'Processor',MyID,' msglen',msglen,' nbytes',nbytes -< call mp_brecv(buffer,msglen,MyID+1,CorrelType,nbytes) -< cd write (iout,*) 'Processor',MyID, -< cd & ' has received correlation contribution from processor',MyID+1, -< cd & ' msglen=',msglen,' nbytes=',nbytes -< cd write (iout,*) 'The received BUFFER array:' -< cd do i=1,max_cont -< cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j),j=1,52) -< cd enddo -< if (msglen.eq.msglen1) then -< call unpack_buffer(max_cont,max_dim,iatel_e+1,0,buffer) -< else if (msglen.eq.msglen2) then -< call unpack_buffer(max_cont,max_dim,iatel_e,0,buffer) -< call unpack_buffer(max_cont,max_dim,iatel_e+1,26,buffer) -< else -< write (iout,*) -< & 'ERROR!!!! message length changed while processing correlations.' -< write (*,*) -< & 'ERROR!!!! message length changed while processing correlations.' -< call mp_stopall(Error) -< endif ! msglen.eq.msglen1 -< endif ! MyRank.lt.fgProcs-1 -< if (ldone) goto 30 -< ldone=.true. -< goto 10 ---- -> CorrelID=fg_rank+1 -> CorrelType1=478 -> CorrelID1=nfgtasks+fg_rank+1 -> ireq=0 -> C Receive the numbers of needed contacts from other processors -> do ii=1,ntask_cont_from -> iproc=itask_cont_from(ii) -> ireq=ireq+1 -> call MPI_Irecv(ncont_recv(ii),1,MPI_INTEGER,iproc,CorrelType, -> & FG_COMM,req(ireq),IERR) -> enddo -> c write (iout,*) "IRECV ended" -> c call flush(iout) -> C Send the number of contacts needed by other processors -> do ii=1,ntask_cont_to -> iproc=itask_cont_to(ii) -> ireq=ireq+1 -> call MPI_Isend(ncont_sent(ii),1,MPI_INTEGER,iproc,CorrelType, -> & FG_COMM,req(ireq),IERR) -> enddo -> c write (iout,*) "ISEND ended" -> c write (iout,*) "number of requests (nn)",ireq -> call flush(iout) -> if (ireq.gt.0) -> & call MPI_Waitall(ireq,req,status_array,ierr) -> c write (iout,*) -> c & "Numbers of contacts to be received from other processors", -> c & (ncont_recv(i),i=1,ntask_cont_from) -> c call flush(iout) -> C Receive contacts -> ireq=0 -> do ii=1,ntask_cont_from -> iproc=itask_cont_from(ii) -> nn=ncont_recv(ii) -> c write (iout,*) "Receiving",nn," contacts from processor",iproc, -> c & " of CONT_TO_COMM group" -> call flush(iout) -> if (nn.gt.0) then -> ireq=ireq+1 -> call MPI_Irecv(zapas_recv(1,1,ii),nn*max_dim, -> & MPI_DOUBLE_PRECISION,iproc,CorrelType1,FG_COMM,req(ireq),IERR) -> c write (iout,*) "ireq,req",ireq,req(ireq) -> endif -> enddo -> C Send the contacts to processors that need them -> do ii=1,ntask_cont_to -> iproc=itask_cont_to(ii) -> nn=ncont_sent(ii) -> c write (iout,*) nn," contacts to processor",iproc, -> c & " of CONT_TO_COMM group" -> if (nn.gt.0) then -> ireq=ireq+1 -> call MPI_Isend(zapas(1,1,ii),nn*max_dim,MPI_DOUBLE_PRECISION, -> & iproc,CorrelType1,FG_COMM,req(ireq),IERR) -> c write (iout,*) "ireq,req",ireq,req(ireq) -> c do i=1,nn -> c write(iout,'(2f5.0,4f10.5)')(zapas(j,i,ii),j=1,5) -> c enddo -> endif -> enddo -> c write (iout,*) "number of requests (contacts)",ireq -> c write (iout,*) "req",(req(i),i=1,4) -> c call flush(iout) -> if (ireq.gt.0) -> & call MPI_Waitall(ireq,req,status_array,ierr) -> do iii=1,ntask_cont_from -> iproc=itask_cont_from(iii) -> nn=ncont_recv(iii) -> if (lprn) then -> write (iout,*) "Received",nn," contacts from processor",iproc, -> & " of CONT_FROM_COMM group" -> call flush(iout) -> do i=1,nn -> write(iout,'(2f5.0,4f10.5)')(zapas_recv(j,i,iii),j=1,5) -> enddo -> call flush(iout) -> endif -> do i=1,nn -> ii=zapas_recv(1,i,iii) -> c Flag the received contacts to prevent double-counting -> jj=-zapas_recv(2,i,iii) -> c write (iout,*) "iii",iii," i",i," ii",ii," jj",jj -> c call flush(iout) -> nnn=num_cont_hb(ii)+1 -> num_cont_hb(ii)=nnn -> jcont_hb(nnn,ii)=jj -> facont_hb(nnn,ii)=zapas_recv(3,i,iii) -> ees0p(nnn,ii)=zapas_recv(4,i,iii) -> ees0m(nnn,ii)=zapas_recv(5,i,iii) -> gacont_hbr(1,nnn,ii)=zapas_recv(6,i,iii) -> gacont_hbr(2,nnn,ii)=zapas_recv(7,i,iii) -> gacont_hbr(3,nnn,ii)=zapas_recv(8,i,iii) -> gacontm_hb1(1,nnn,ii)=zapas_recv(9,i,iii) -> gacontm_hb1(2,nnn,ii)=zapas_recv(10,i,iii) -> gacontm_hb1(3,nnn,ii)=zapas_recv(11,i,iii) -> gacontp_hb1(1,nnn,ii)=zapas_recv(12,i,iii) -> gacontp_hb1(2,nnn,ii)=zapas_recv(13,i,iii) -> gacontp_hb1(3,nnn,ii)=zapas_recv(14,i,iii) -> gacontm_hb2(1,nnn,ii)=zapas_recv(15,i,iii) -> gacontm_hb2(2,nnn,ii)=zapas_recv(16,i,iii) -> gacontm_hb2(3,nnn,ii)=zapas_recv(17,i,iii) -> gacontp_hb2(1,nnn,ii)=zapas_recv(18,i,iii) -> gacontp_hb2(2,nnn,ii)=zapas_recv(19,i,iii) -> gacontp_hb2(3,nnn,ii)=zapas_recv(20,i,iii) -> gacontm_hb3(1,nnn,ii)=zapas_recv(21,i,iii) -> gacontm_hb3(2,nnn,ii)=zapas_recv(22,i,iii) -> gacontm_hb3(3,nnn,ii)=zapas_recv(23,i,iii) -> gacontp_hb3(1,nnn,ii)=zapas_recv(24,i,iii) -> gacontp_hb3(2,nnn,ii)=zapas_recv(25,i,iii) -> gacontp_hb3(3,nnn,ii)=zapas_recv(26,i,iii) -> enddo -> enddo -> call flush(iout) -> if (lprn) then -> write (iout,'(a)') 'Contact function values after receive:' -> do i=nnt,nct-2 -> write (iout,'(2i3,50(1x,i3,f5.2))') -> & i,num_cont_hb(i),(jcont_hb(j,i),facont_hb(j,i), -> & j=1,num_cont_hb(i)) -> enddo -> call flush(iout) -> endif -4842c6046 -< write (iout,'(2i3,50(1x,i2,f5.2))') ---- -> write (iout,'(2i3,50(1x,i3,f5.2))') -4856c6060 -< do i=iatel_s,iatel_e+1 ---- -> do i=min0(iatel_s,iturn4_start),max0(iatel_e,iturn3_end) -4861a6066 -> jp=iabs(j) -4863a6069 -> jp1=iabs(j1) -4866c6072,6074 -< if (j1.eq.j+1 .or. j1.eq.j-1) then ---- -> if ((j.gt.0 .and. j1.gt.0 .or. j.gt.0 .and. j1.lt.0 -> & .or. j.lt.0 .and. j1.gt.0) .and. -> & (jp1.eq.jp+1 .or. jp1.eq.jp-1)) then -4869c6077,6079 -< ecorr=ecorr+ehbcorr(i,j,i+1,j1,jj,kk,0.72D0,0.32D0) ---- -> ecorr=ecorr+ehbcorr(i,jp,i+1,jp1,jj,kk,0.72D0,0.32D0) -> if (energy_dec) write (iout,'(a6,2i5,0pf7.3)') -> & 'ecorrh',i,j,ehbcorr(i,j,i+1,j1,jj,kk,0.72D0,0.32D0) -4891a6102,6158 -> subroutine add_hb_contact(ii,jj,itask) -> implicit real*8 (a-h,o-z) -> include "DIMENSIONS" -> include "COMMON.IOUNITS" -> integer max_cont -> integer max_dim -> parameter (max_cont=maxconts) -> parameter (max_dim=26) -> include "COMMON.CONTACTS" -> double precision zapas(max_dim,maxconts,max_fg_procs), -> & zapas_recv(max_dim,maxconts,max_fg_procs) -> common /przechowalnia/ zapas -> integer i,j,ii,jj,iproc,itask(4),nn -> c write (iout,*) "itask",itask -> do i=1,2 -> iproc=itask(i) -> if (iproc.gt.0) then -> do j=1,num_cont_hb(ii) -> jjc=jcont_hb(j,ii) -> c write (iout,*) "i",ii," j",jj," jjc",jjc -> if (jjc.eq.jj) then -> ncont_sent(iproc)=ncont_sent(iproc)+1 -> nn=ncont_sent(iproc) -> zapas(1,nn,iproc)=ii -> zapas(2,nn,iproc)=jjc -> zapas(3,nn,iproc)=facont_hb(j,ii) -> zapas(4,nn,iproc)=ees0p(j,ii) -> zapas(5,nn,iproc)=ees0m(j,ii) -> zapas(6,nn,iproc)=gacont_hbr(1,j,ii) -> zapas(7,nn,iproc)=gacont_hbr(2,j,ii) -> zapas(8,nn,iproc)=gacont_hbr(3,j,ii) -> zapas(9,nn,iproc)=gacontm_hb1(1,j,ii) -> zapas(10,nn,iproc)=gacontm_hb1(2,j,ii) -> zapas(11,nn,iproc)=gacontm_hb1(3,j,ii) -> zapas(12,nn,iproc)=gacontp_hb1(1,j,ii) -> zapas(13,nn,iproc)=gacontp_hb1(2,j,ii) -> zapas(14,nn,iproc)=gacontp_hb1(3,j,ii) -> zapas(15,nn,iproc)=gacontm_hb2(1,j,ii) -> zapas(16,nn,iproc)=gacontm_hb2(2,j,ii) -> zapas(17,nn,iproc)=gacontm_hb2(3,j,ii) -> zapas(18,nn,iproc)=gacontp_hb2(1,j,ii) -> zapas(19,nn,iproc)=gacontp_hb2(2,j,ii) -> zapas(20,nn,iproc)=gacontp_hb2(3,j,ii) -> zapas(21,nn,iproc)=gacontm_hb3(1,j,ii) -> zapas(22,nn,iproc)=gacontm_hb3(2,j,ii) -> zapas(23,nn,iproc)=gacontm_hb3(3,j,ii) -> zapas(24,nn,iproc)=gacontp_hb3(1,j,ii) -> zapas(25,nn,iproc)=gacontp_hb3(2,j,ii) -> zapas(26,nn,iproc)=gacontp_hb3(3,j,ii) -> exit -> endif -> enddo -> endif -> enddo -> return -> end -> c------------------------------------------------------------------------------ -4897d6163 -< include 'DIMENSIONS.ZSCOPT' -4899,4900c6165,6174 -< #ifdef MPL -< include 'COMMON.INFO' ---- -> #ifdef MPI -> include "mpif.h" -> parameter (max_cont=maxconts) -> parameter (max_dim=70) -> integer source,CorrelType,CorrelID,CorrelType1,CorrelID1,Error -> double precision zapas(max_dim,maxconts,max_fg_procs), -> & zapas_recv(max_dim,maxconts,max_fg_procs) -> common /przechowalnia/ zapas -> integer status(MPI_STATUS_SIZE),req(maxconts*2), -> & status_array(MPI_STATUS_SIZE,maxconts*2) -4901a6176 -> include 'COMMON.SETUP' -4903a6179 -> include 'COMMON.LOCAL' -4906,4913c6182,6183 -< #ifdef MPL -< parameter (max_cont=maxconts) -< parameter (max_dim=2*(8*3+2)) -< parameter (msglen1=max_cont*max_dim*4) -< parameter (msglen2=2*msglen1) -< integer source,CorrelType,CorrelID,Error -< double precision buffer(max_cont,max_dim) -< #endif ---- -> include 'COMMON.CHAIN' -> include 'COMMON.CONTROL' -4914a6185 -> integer num_cont_hb_old(maxres) -4916c6187,6188 -< ---- -> double precision eello4,eello5,eelo6,eello_turn6 -> external eello4,eello5,eello6,eello_turn6 -4920c6192,6195 -< #ifdef MPL ---- -> #ifdef MPI -> do i=1,nres -> num_cont_hb_old(i)=num_cont_hb(i) -> enddo -4923c6198 -< if (fgProcs.le.1) goto 30 ---- -> if (nfgtasks.le.1) goto 30 -4925c6200 -< write (iout,'(a)') 'Contact function values:' ---- -> write (iout,'(a)') 'Contact function values before RECEIVE:' -4932,4933c6207,6282 -< C Caution! Following code assumes that electrostatic interactions concerning -< C a given atom are split among at most two processors! ---- -> call flush(iout) -> do i=1,ntask_cont_from -> ncont_recv(i)=0 -> enddo -> do i=1,ntask_cont_to -> ncont_sent(i)=0 -> enddo -> c write (iout,*) "ntask_cont_from",ntask_cont_from," ntask_cont_to", -> c & ntask_cont_to -> C Make the list of contacts to send to send to other procesors -> do i=iturn3_start,iturn3_end -> c write (iout,*) "make contact list turn3",i," num_cont", -> c & num_cont_hb(i) -> call add_hb_contact_eello(i,i+2,iturn3_sent_local(1,i)) -> enddo -> do i=iturn4_start,iturn4_end -> c write (iout,*) "make contact list turn4",i," num_cont", -> c & num_cont_hb(i) -> call add_hb_contact_eello(i,i+3,iturn4_sent_local(1,i)) -> enddo -> do ii=1,nat_sent -> i=iat_sent(ii) -> c write (iout,*) "make contact list longrange",i,ii," num_cont", -> c & num_cont_hb(i) -> do j=1,num_cont_hb(i) -> do k=1,4 -> jjc=jcont_hb(j,i) -> iproc=iint_sent_local(k,jjc,ii) -> c write (iout,*) "i",i," j",j," k",k," jjc",jjc," iproc",iproc -> if (iproc.ne.0) then -> ncont_sent(iproc)=ncont_sent(iproc)+1 -> nn=ncont_sent(iproc) -> zapas(1,nn,iproc)=i -> zapas(2,nn,iproc)=jjc -> zapas(3,nn,iproc)=d_cont(j,i) -> ind=3 -> do kk=1,3 -> ind=ind+1 -> zapas(ind,nn,iproc)=grij_hb_cont(kk,j,i) -> enddo -> do kk=1,2 -> do ll=1,2 -> ind=ind+1 -> zapas(ind,nn,iproc)=a_chuj(ll,kk,j,i) -> enddo -> enddo -> do jj=1,5 -> do kk=1,3 -> do ll=1,2 -> do mm=1,2 -> ind=ind+1 -> zapas(ind,nn,iproc)=a_chuj_der(mm,ll,kk,jj,j,i) -> enddo -> enddo -> enddo -> enddo -> endif -> enddo -> enddo -> enddo -> if (lprn) then -> write (iout,*) -> & "Numbers of contacts to be sent to other processors", -> & (ncont_sent(i),i=1,ntask_cont_to) -> write (iout,*) "Contacts sent" -> do ii=1,ntask_cont_to -> nn=ncont_sent(ii) -> iproc=itask_cont_to(ii) -> write (iout,*) nn," contacts to processor",iproc, -> & " of CONT_TO_COMM group" -> do i=1,nn -> write(iout,'(2f5.0,10f10.5)')(zapas(j,i,ii),j=1,10) -> enddo -> enddo -> call flush(iout) -> endif -4935,5023c6284,6403 -< CorrelID=MyID+1 -< ldone=.false. -< do i=1,max_cont -< do j=1,max_dim -< buffer(i,j)=0.0D0 -< enddo -< enddo -< mm=mod(MyRank,2) -< cd write (iout,*) 'MyRank',MyRank,' mm',mm -< if (mm) 20,20,10 -< 10 continue -< cd write (iout,*) 'Sending: MyRank',MyRank,' mm',mm,' ldone',ldone -< if (MyRank.gt.0) then -< C Send correlation contributions to the preceding processor -< msglen=msglen1 -< nn=num_cont_hb(iatel_s) -< call pack_buffer(max_cont,max_dim,iatel_s,0,buffer) -< cd write (iout,*) 'The BUFFER array:' -< cd do i=1,nn -< cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j),j=1,26) -< cd enddo -< if (ielstart(iatel_s).gt.iatel_s+ispp) then -< msglen=msglen2 -< call pack_buffer(max_cont,max_dim,iatel_s+1,26,buffer) -< C Clear the contacts of the atom passed to the neighboring processor -< nn=num_cont_hb(iatel_s+1) -< cd do i=1,nn -< cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j+26),j=1,26) -< cd enddo -< num_cont_hb(iatel_s)=0 -< endif -< cd write (iout,*) 'Processor ',MyID,MyRank, -< cd & ' is sending correlation contribution to processor',MyID-1, -< cd & ' msglen=',msglen -< cd write (*,*) 'Processor ',MyID,MyRank, -< cd & ' is sending correlation contribution to processor',MyID-1, -< cd & ' msglen=',msglen,' CorrelType=',CorrelType -< call mp_bsend(buffer,msglen,MyID-1,CorrelType,CorrelID) -< cd write (iout,*) 'Processor ',MyID, -< cd & ' has sent correlation contribution to processor',MyID-1, -< cd & ' msglen=',msglen,' CorrelID=',CorrelID -< cd write (*,*) 'Processor ',MyID, -< cd & ' has sent correlation contribution to processor',MyID-1, -< cd & ' msglen=',msglen,' CorrelID=',CorrelID -< msglen=msglen1 -< endif ! (MyRank.gt.0) -< if (ldone) goto 30 -< ldone=.true. -< 20 continue -< cd write (iout,*) 'Receiving: MyRank',MyRank,' mm',mm,' ldone',ldone -< if (MyRank.lt.fgProcs-1) then -< C Receive correlation contributions from the next processor -< msglen=msglen1 -< if (ielend(iatel_e).lt.nct-1) msglen=msglen2 -< cd write (iout,*) 'Processor',MyID, -< cd & ' is receiving correlation contribution from processor',MyID+1, -< cd & ' msglen=',msglen,' CorrelType=',CorrelType -< cd write (*,*) 'Processor',MyID, -< cd & ' is receiving correlation contribution from processor',MyID+1, -< cd & ' msglen=',msglen,' CorrelType=',CorrelType -< nbytes=-1 -< do while (nbytes.le.0) -< call mp_probe(MyID+1,CorrelType,nbytes) -< enddo -< cd print *,'Processor',MyID,' msglen',msglen,' nbytes',nbytes -< call mp_brecv(buffer,msglen,MyID+1,CorrelType,nbytes) -< cd write (iout,*) 'Processor',MyID, -< cd & ' has received correlation contribution from processor',MyID+1, -< cd & ' msglen=',msglen,' nbytes=',nbytes -< cd write (iout,*) 'The received BUFFER array:' -< cd do i=1,max_cont -< cd write (iout,'(i2,9(3f8.3,2x))') i,(buffer(i,j),j=1,52) -< cd enddo -< if (msglen.eq.msglen1) then -< call unpack_buffer(max_cont,max_dim,iatel_e+1,0,buffer) -< else if (msglen.eq.msglen2) then -< call unpack_buffer(max_cont,max_dim,iatel_e,0,buffer) -< call unpack_buffer(max_cont,max_dim,iatel_e+1,26,buffer) -< else -< write (iout,*) -< & 'ERROR!!!! message length changed while processing correlations.' -< write (*,*) -< & 'ERROR!!!! message length changed while processing correlations.' -< call mp_stopall(Error) -< endif ! msglen.eq.msglen1 -< endif ! MyRank.lt.fgProcs-1 -< if (ldone) goto 30 -< ldone=.true. -< goto 10 ---- -> CorrelID=fg_rank+1 -> CorrelType1=478 -> CorrelID1=nfgtasks+fg_rank+1 -> ireq=0 -> C Receive the numbers of needed contacts from other processors -> do ii=1,ntask_cont_from -> iproc=itask_cont_from(ii) -> ireq=ireq+1 -> call MPI_Irecv(ncont_recv(ii),1,MPI_INTEGER,iproc,CorrelType, -> & FG_COMM,req(ireq),IERR) -> enddo -> c write (iout,*) "IRECV ended" -> c call flush(iout) -> C Send the number of contacts needed by other processors -> do ii=1,ntask_cont_to -> iproc=itask_cont_to(ii) -> ireq=ireq+1 -> call MPI_Isend(ncont_sent(ii),1,MPI_INTEGER,iproc,CorrelType, -> & FG_COMM,req(ireq),IERR) -> enddo -> c write (iout,*) "ISEND ended" -> c write (iout,*) "number of requests (nn)",ireq -> call flush(iout) -> if (ireq.gt.0) -> & call MPI_Waitall(ireq,req,status_array,ierr) -> c write (iout,*) -> c & "Numbers of contacts to be received from other processors", -> c & (ncont_recv(i),i=1,ntask_cont_from) -> c call flush(iout) -> C Receive contacts -> ireq=0 -> do ii=1,ntask_cont_from -> iproc=itask_cont_from(ii) -> nn=ncont_recv(ii) -> c write (iout,*) "Receiving",nn," contacts from processor",iproc, -> c & " of CONT_TO_COMM group" -> call flush(iout) -> if (nn.gt.0) then -> ireq=ireq+1 -> call MPI_Irecv(zapas_recv(1,1,ii),nn*max_dim, -> & MPI_DOUBLE_PRECISION,iproc,CorrelType1,FG_COMM,req(ireq),IERR) -> c write (iout,*) "ireq,req",ireq,req(ireq) -> endif -> enddo -> C Send the contacts to processors that need them -> do ii=1,ntask_cont_to -> iproc=itask_cont_to(ii) -> nn=ncont_sent(ii) -> c write (iout,*) nn," contacts to processor",iproc, -> c & " of CONT_TO_COMM group" -> if (nn.gt.0) then -> ireq=ireq+1 -> call MPI_Isend(zapas(1,1,ii),nn*max_dim,MPI_DOUBLE_PRECISION, -> & iproc,CorrelType1,FG_COMM,req(ireq),IERR) -> c write (iout,*) "ireq,req",ireq,req(ireq) -> c do i=1,nn -> c write(iout,'(2f5.0,4f10.5)')(zapas(j,i,ii),j=1,5) -> c enddo -> endif -> enddo -> c write (iout,*) "number of requests (contacts)",ireq -> c write (iout,*) "req",(req(i),i=1,4) -> c call flush(iout) -> if (ireq.gt.0) -> & call MPI_Waitall(ireq,req,status_array,ierr) -> do iii=1,ntask_cont_from -> iproc=itask_cont_from(iii) -> nn=ncont_recv(iii) -> if (lprn) then -> write (iout,*) "Received",nn," contacts from processor",iproc, -> & " of CONT_FROM_COMM group" -> call flush(iout) -> do i=1,nn -> write(iout,'(2f5.0,10f10.5)')(zapas_recv(j,i,iii),j=1,10) -> enddo -> call flush(iout) -> endif -> do i=1,nn -> ii=zapas_recv(1,i,iii) -> c Flag the received contacts to prevent double-counting -> jj=-zapas_recv(2,i,iii) -> c write (iout,*) "iii",iii," i",i," ii",ii," jj",jj -> c call flush(iout) -> nnn=num_cont_hb(ii)+1 -> num_cont_hb(ii)=nnn -> jcont_hb(nnn,ii)=jj -> d_cont(nnn,ii)=zapas_recv(3,i,iii) -> ind=3 -> do kk=1,3 -> ind=ind+1 -> grij_hb_cont(kk,nnn,ii)=zapas_recv(ind,i,iii) -> enddo -> do kk=1,2 -> do ll=1,2 -> ind=ind+1 -> a_chuj(ll,kk,nnn,ii)=zapas_recv(ind,i,iii) -> enddo -> enddo -> do jj=1,5 -> do kk=1,3 -> do ll=1,2 -> do mm=1,2 -> ind=ind+1 -> a_chuj_der(mm,ll,kk,jj,nnn,ii)=zapas_recv(ind,i,iii) -> enddo -> enddo -> enddo -> enddo -> enddo -> enddo -> call flush(iout) -> if (lprn) then -> write (iout,'(a)') 'Contact function values after receive:' -> do i=nnt,nct-2 -> write (iout,'(2i3,50(1x,i3,5f6.3))') -> & i,num_cont_hb(i),(jcont_hb(j,i),d_cont(j,i), -> & ((a_chuj(ll,kk,j,i),ll=1,2),kk=1,2),j=1,num_cont_hb(i)) -> enddo -> call flush(iout) -> endif -5029,5031c6409,6411 -< write (iout,'(2i3,50(1x,i2,f5.2))') -< & i,num_cont_hb(i),(jcont_hb(j,i),facont_hb(j,i), -< & j=1,num_cont_hb(i)) ---- -> write (iout,'(2i3,50(1x,i2,5f6.3))') -> & i,num_cont_hb(i),(jcont_hb(j,i),d_cont(j,i), -> & ((a_chuj(ll,kk,j,i),ll=1,2),kk=1,2),j=1,num_cont_hb(i)) -5049a6430 -> #ifdef MOMENT -5050a6432 -> #endif -5055c6437,6443 -< do i=iatel_s,iatel_e+1 ---- -> c write (iout,*) "gradcorr5 in eello5 before loop" -> c do iii=1,nres -> c write (iout,'(i5,3f10.5)') -> c & iii,(gradcorr5(jjj,iii),jjj=1,3) -> c enddo -> do i=min0(iatel_s,iturn4_start),max0(iatel_e+1,iturn3_end+1) -> c write (iout,*) "corr loop i",i -5060a6449 -> jp=iabs(j) -5063c6452,6453 -< c write (*,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, ---- -> jp1=iabs(j1) -> c write (iout,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, -5065c6455,6458 -< if (j1.eq.j+1 .or. j1.eq.j-1) then ---- -> c if (j1.eq.j+1 .or. j1.eq.j-1) then -> if ((j.gt.0 .and. j1.gt.0 .or. j.gt.0 .and. j1.lt.0 -> & .or. j.lt.0 .and. j1.gt.0) .and. -> & (jp1.eq.jp+1 .or. jp1.eq.jp-1)) then -5075,5076c6468,6469 -< c write (*,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, -< c & ' jj=',jj,' kk=',kk ---- -> cd write (iout,*) 'i=',i,' j=',jp,' i1=',i1,' j1=',jp1, -> cd & ' jj=',jj,' kk=',kk -5085,5086c6478,6483 -< cd & ' ekont=',ekont,' fprim=',fprimcont -< call calc_eello(i,j,i+1,j1,jj,kk) ---- -> cd & ' ekont=',ekont,' fprim=',fprimcont, -> cd & ' fac_prim1',fac_prim1,' fac_prim2',fac_prim2 -> cd write (iout,*) "g_contij",g_contij -> cd write (iout,*) "grij_hb_cont i",grij_hb_cont(:,jj,i) -> cd write (iout,*) "grij_hb_cont i1",grij_hb_cont(:,jj,i1) -> call calc_eello(i,jp,i+1,jp1,jj,kk) -5088c6485,6493 -< & ecorr=ecorr+eello4(i,j,i+1,j1,jj,kk) ---- -> & ecorr=ecorr+eello4(i,jp,i+1,jp1,jj,kk) -> if (energy_dec.and.wcorr4.gt.0.0d0) -> 1 write (iout,'(a6,4i5,0pf7.3)') -> 2 'ecorr4',i,j,i+1,j1,eello4(i,jp,i+1,jp1,jj,kk) -> c write (iout,*) "gradcorr5 before eello5" -> c do iii=1,nres -> c write (iout,'(i5,3f10.5)') -> c & iii,(gradcorr5(jjj,iii),jjj=1,3) -> c enddo -5090,5091c6495,6503 -< & ecorr5=ecorr5+eello5(i,j,i+1,j1,jj,kk) -< c print *,"wcorr5",ecorr5 ---- -> & ecorr5=ecorr5+eello5(i,jp,i+1,jp1,jj,kk) -> c write (iout,*) "gradcorr5 after eello5" -> c do iii=1,nres -> c write (iout,'(i5,3f10.5)') -> c & iii,(gradcorr5(jjj,iii),jjj=1,3) -> c enddo -> if (energy_dec.and.wcorr5.gt.0.0d0) -> 1 write (iout,'(a6,4i5,0pf7.3)') -> 2 'ecorr5',i,j,i+1,j1,eello5(i,jp,i+1,jp1,jj,kk) -5093,5094c6505,6506 -< cd write(2,*)'ijkl',i,j,i+1,j1 -< if (wcorr6.gt.0.0d0 .and. (j.ne.i+4 .or. j1.ne.i+3 ---- -> cd write(2,*)'ijkl',i,jp,i+1,jp1 -> if (wcorr6.gt.0.0d0 .and. (jp.ne.i+4 .or. jp1.ne.i+3 -5097c6509,6511 -< ecorr6=ecorr6+eello6(i,j,i+1,j1,jj,kk) ---- -> ecorr6=ecorr6+eello6(i,jp,i+1,jp1,jj,kk) -> if (energy_dec) write (iout,'(a6,4i5,0pf7.3)') -> 1 'ecorr6',i,j,i+1,j1,eello6(i,jp,i+1,jp1,jj,kk) -5101,5103c6515,6517 -< cd & dabs(eello4(i,j,i+1,j1,jj,kk)), -< cd & dabs(eello5(i,j,i+1,j1,jj,kk)), -< cd & dabs(eello6(i,j,i+1,j1,jj,kk)) ---- -> cd & dabs(eello4(i,jp,i+1,jp1,jj,kk)), -> cd & dabs(eello5(i,jp,i+1,jp1,jj,kk)), -> cd & dabs(eello6(i,jp,i+1,jp1,jj,kk)) -5105,5106c6519,6520 -< & .and. (j.eq.i+4 .and. j1.eq.i+3)) then -< cd write (iout,*) '******eturn6: i,j,i+1,j1',i,j,i+1,j1 ---- -> & .and. (jp.eq.i+4 .and. jp1.eq.i+3)) then -> cd write (iout,*) '******eturn6: i,j,i+1,j1',i,jip,i+1,jp1 -5107a6522,6523 -> if (energy_dec) write (iout,'(a6,4i5,0pf7.3)') -> 1 'eturn6',i,j,i+1,j1,eello_turn6(i,jj,kk) -5112,5115d6527 -< else if (j1.eq.j) then -< C Contacts I-J and I-(J+1) occur simultaneously. -< C The system loses extra energy. -< c ecorr=ecorr+ehbcorr(i,j,i+1,j,jj,kk,0.60D0,-0.40D0) -5118,5127d6529 -< do kk=1,num_conti -< j1=jcont_hb(kk,i) -< c write (iout,*) 'i=',i,' j=',j,' i1=',i1,' j1=',j1, -< c & ' jj=',jj,' kk=',kk -< if (j1.eq.j+1) then -< C Contacts I-J and (I+1)-J occur simultaneously. -< C The system loses extra energy. -< c ecorr=ecorr+ehbcorr(i,j,i,j+1,jj,kk,0.60D0,-0.40D0) -< endif ! j1==j+1 -< enddo ! kk -5129a6532,6594 -> do i=1,nres -> num_cont_hb(i)=num_cont_hb_old(i) -> enddo -> c write (iout,*) "gradcorr5 in eello5" -> c do iii=1,nres -> c write (iout,'(i5,3f10.5)') -> c & iii,(gradcorr5(jjj,iii),jjj=1,3) -> c enddo -> return -> end -> c------------------------------------------------------------------------------ -> subroutine add_hb_contact_eello(ii,jj,itask) -> implicit real*8 (a-h,o-z) -> include "DIMENSIONS" -> include "COMMON.IOUNITS" -> integer max_cont -> integer max_dim -> parameter (max_cont=maxconts) -> parameter (max_dim=70) -> include "COMMON.CONTACTS" -> double precision zapas(max_dim,maxconts,max_fg_procs), -> & zapas_recv(max_dim,maxconts,max_fg_procs) -> common /przechowalnia/ zapas -> integer i,j,ii,jj,iproc,itask(4),nn -> c write (iout,*) "itask",itask -> do i=1,2 -> iproc=itask(i) -> if (iproc.gt.0) then -> do j=1,num_cont_hb(ii) -> jjc=jcont_hb(j,ii) -> c write (iout,*) "send turns i",ii," j",jj," jjc",jjc -> if (jjc.eq.jj) then -> ncont_sent(iproc)=ncont_sent(iproc)+1 -> nn=ncont_sent(iproc) -> zapas(1,nn,iproc)=ii -> zapas(2,nn,iproc)=jjc -> zapas(3,nn,iproc)=d_cont(j,ii) -> ind=3 -> do kk=1,3 -> ind=ind+1 -> zapas(ind,nn,iproc)=grij_hb_cont(kk,j,ii) -> enddo -> do kk=1,2 -> do ll=1,2 -> ind=ind+1 -> zapas(ind,nn,iproc)=a_chuj(ll,kk,j,ii) -> enddo -> enddo -> do jj=1,5 -> do kk=1,3 -> do ll=1,2 -> do mm=1,2 -> ind=ind+1 -> zapas(ind,nn,iproc)=a_chuj_der(mm,ll,kk,jj,j,ii) -> enddo -> enddo -> enddo -> enddo -> exit -> endif -> enddo -> endif -> enddo -5157,5161c6622,6626 -< c write (iout,*)'Contacts have occurred for peptide groups',i,j, -< c & ' and',k,l -< c write (iout,*)'Contacts have occurred for peptide groups', -< c & i,j,' fcont:',eij,' eij',' eesij',ees0pij,ees0mij,' and ',k,l -< c & ,' fcont ',ekl,' eeskl',ees0pkl,ees0mkl,' ees=',ees ---- -> c write (iout,'(2(a,2i3,a,f10.5,a,2f10.5),a,f10.5,a,$)') -> c & 'Contacts ',i,j, -> c & ' eij',eij,' eesij',ees0pij,ees0mij,' and ',k,l -> c & ,' fcont ',ekl,' eeskl',ees0pkl,ees0mkl,' energy=',ekont*ees, -> c & 'gradcorr_long' -5163,5164c6628 -< ecorr=ecorr+ekont*ees -< if (calc_grad) then ---- -> c ecorr=ecorr+ekont*ees -5165a6630,6633 -> coeffpees0pij=coeffp*ees0pij -> coeffmees0mij=coeffm*ees0mij -> coeffpees0pkl=coeffp*ees0pkl -> coeffmees0mkl=coeffm*ees0mkl -5167,5198c6635,6678 -< ghalf=0.5D0*ees*ekl*gacont_hbr(ll,jj,i) -< gradcorr(ll,i)=gradcorr(ll,i)+ghalf -< & -ekont*(coeffp*ees0pkl*gacontp_hb1(ll,jj,i)+ -< & coeffm*ees0mkl*gacontm_hb1(ll,jj,i)) -< gradcorr(ll,j)=gradcorr(ll,j)+ghalf -< & -ekont*(coeffp*ees0pkl*gacontp_hb2(ll,jj,i)+ -< & coeffm*ees0mkl*gacontm_hb2(ll,jj,i)) -< ghalf=0.5D0*ees*eij*gacont_hbr(ll,kk,k) -< gradcorr(ll,k)=gradcorr(ll,k)+ghalf -< & -ekont*(coeffp*ees0pij*gacontp_hb1(ll,kk,k)+ -< & coeffm*ees0mij*gacontm_hb1(ll,kk,k)) -< gradcorr(ll,l)=gradcorr(ll,l)+ghalf -< & -ekont*(coeffp*ees0pij*gacontp_hb2(ll,kk,k)+ -< & coeffm*ees0mij*gacontm_hb2(ll,kk,k)) -< enddo -< do m=i+1,j-1 -< do ll=1,3 -< gradcorr(ll,m)=gradcorr(ll,m)+ -< & ees*ekl*gacont_hbr(ll,jj,i)- -< & ekont*(coeffp*ees0pkl*gacontp_hb3(ll,jj,i)+ -< & coeffm*ees0mkl*gacontm_hb3(ll,jj,i)) -< enddo -< enddo -< do m=k+1,l-1 -< do ll=1,3 -< gradcorr(ll,m)=gradcorr(ll,m)+ -< & ees*eij*gacont_hbr(ll,kk,k)- -< & ekont*(coeffp*ees0pij*gacontp_hb3(ll,kk,k)+ -< & coeffm*ees0mij*gacontm_hb3(ll,kk,k)) -< enddo -< enddo -< endif ---- -> cgrad ghalfi=ees*ekl*gacont_hbr(ll,jj,i) -> gradcorr(ll,i)=gradcorr(ll,i)!+0.5d0*ghalfi -> & -ekont*(coeffpees0pkl*gacontp_hb1(ll,jj,i)+ -> & coeffmees0mkl*gacontm_hb1(ll,jj,i)) -> gradcorr(ll,j)=gradcorr(ll,j)!+0.5d0*ghalfi -> & -ekont*(coeffpees0pkl*gacontp_hb2(ll,jj,i)+ -> & coeffmees0mkl*gacontm_hb2(ll,jj,i)) -> cgrad ghalfk=ees*eij*gacont_hbr(ll,kk,k) -> gradcorr(ll,k)=gradcorr(ll,k)!+0.5d0*ghalfk -> & -ekont*(coeffpees0pij*gacontp_hb1(ll,kk,k)+ -> & coeffmees0mij*gacontm_hb1(ll,kk,k)) -> gradcorr(ll,l)=gradcorr(ll,l)!+0.5d0*ghalfk -> & -ekont*(coeffpees0pij*gacontp_hb2(ll,kk,k)+ -> & coeffmees0mij*gacontm_hb2(ll,kk,k)) -> gradlongij=ees*ekl*gacont_hbr(ll,jj,i)- -> & ekont*(coeffpees0pkl*gacontp_hb3(ll,jj,i)+ -> & coeffmees0mkl*gacontm_hb3(ll,jj,i)) -> gradcorr_long(ll,j)=gradcorr_long(ll,j)+gradlongij -> gradcorr_long(ll,i)=gradcorr_long(ll,i)-gradlongij -> gradlongkl=ees*eij*gacont_hbr(ll,kk,k)- -> & ekont*(coeffpees0pij*gacontp_hb3(ll,kk,k)+ -> & coeffmees0mij*gacontm_hb3(ll,kk,k)) -> gradcorr_long(ll,l)=gradcorr_long(ll,l)+gradlongkl -> gradcorr_long(ll,k)=gradcorr_long(ll,k)-gradlongkl -> c write (iout,'(2f10.5,2x,$)') gradlongij,gradlongkl -> enddo -> c write (iout,*) -> cgrad do m=i+1,j-1 -> cgrad do ll=1,3 -> cgrad gradcorr(ll,m)=gradcorr(ll,m)+ -> cgrad & ees*ekl*gacont_hbr(ll,jj,i)- -> cgrad & ekont*(coeffp*ees0pkl*gacontp_hb3(ll,jj,i)+ -> cgrad & coeffm*ees0mkl*gacontm_hb3(ll,jj,i)) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+1,l-1 -> cgrad do ll=1,3 -> cgrad gradcorr(ll,m)=gradcorr(ll,m)+ -> cgrad & ees*eij*gacont_hbr(ll,kk,k)- -> cgrad & ekont*(coeffp*ees0pij*gacontp_hb3(ll,kk,k)+ -> cgrad & coeffm*ees0mij*gacontm_hb3(ll,kk,k)) -> cgrad enddo -> cgrad enddo -> c write (iout,*) "ehbcorr",ekont*ees -5201a6682 -> #ifdef MOMENT -5206d6686 -< include 'DIMENSIONS.ZSCOPT' -5240d6719 -< if (.not.calc_grad) return -5264a6744 -> #endif -5273d6752 -< include 'DIMENSIONS.ZSCOPT' -5289a6769,6770 -> cd write (iout,*) "a_chujij",((a_chuj(iii,jjj,jj,i),iii=1,2),jjj=1,2) -> cd write (iout,*) "a_chujkl",((a_chuj(iii,jjj,kk,k),iii=1,2),jjj=1,2) -5650d7130 -< include 'DIMENSIONS.ZSCOPT' -5671d7150 -< if (calc_grad) then -5713,5718c7192,7197 -< cold ghalf=0.5d0*eel4*ekl*gacont_hbr(ll,jj,i) -< ggg1(ll)=eel4*g_contij(ll,1) -< ggg2(ll)=eel4*g_contij(ll,2) -< ghalf=0.5d0*ggg1(ll) -< cd ghalf=0.0d0 -< gradcorr(ll,i)=gradcorr(ll,i)+ghalf+ekont*derx(ll,2,1) ---- -> cgrad ggg1(ll)=eel4*g_contij(ll,1) -> cgrad ggg2(ll)=eel4*g_contij(ll,2) -> glongij=eel4*g_contij(ll,1)+ekont*derx(ll,1,1) -> glongkl=eel4*g_contij(ll,2)+ekont*derx(ll,1,2) -> cgrad ghalf=0.5d0*ggg1(ll) -> gradcorr(ll,i)=gradcorr(ll,i)+ekont*derx(ll,2,1) -5720c7199 -< gradcorr(ll,j)=gradcorr(ll,j)+ghalf+ekont*derx(ll,4,1) ---- -> gradcorr(ll,j)=gradcorr(ll,j)+ekont*derx(ll,4,1) -5722,5725c7201,7204 -< cold ghalf=0.5d0*eel4*eij*gacont_hbr(ll,kk,k) -< ghalf=0.5d0*ggg2(ll) -< cd ghalf=0.0d0 -< gradcorr(ll,k)=gradcorr(ll,k)+ghalf+ekont*derx(ll,2,2) ---- -> gradcorr_long(ll,j)=gradcorr_long(ll,j)+glongij -> gradcorr_long(ll,i)=gradcorr_long(ll,i)-glongij -> cgrad ghalf=0.5d0*ggg2(ll) -> gradcorr(ll,k)=gradcorr(ll,k)+ekont*derx(ll,2,2) -5727c7206 -< gradcorr(ll,l)=gradcorr(ll,l)+ghalf+ekont*derx(ll,4,2) ---- -> gradcorr(ll,l)=gradcorr(ll,l)+ekont*derx(ll,4,2) -5728a7208,7209 -> gradcorr_long(ll,l)=gradcorr_long(ll,l)+glongkl -> gradcorr_long(ll,k)=gradcorr_long(ll,k)-glongkl -5730,5753c7211,7230 -< cd goto 1112 -< do m=i+1,j-1 -< do ll=1,3 -< cold gradcorr(ll,m)=gradcorr(ll,m)+eel4*ekl*gacont_hbr(ll,jj,i) -< gradcorr(ll,m)=gradcorr(ll,m)+ggg1(ll) -< enddo -< enddo -< do m=k+1,l-1 -< do ll=1,3 -< cold gradcorr(ll,m)=gradcorr(ll,m)+eel4*eij*gacont_hbr(ll,kk,k) -< gradcorr(ll,m)=gradcorr(ll,m)+ggg2(ll) -< enddo -< enddo -< 1112 continue -< do m=i+2,j2 -< do ll=1,3 -< gradcorr(ll,m)=gradcorr(ll,m)+ekont*derx(ll,1,1) -< enddo -< enddo -< do m=k+2,l2 -< do ll=1,3 -< gradcorr(ll,m)=gradcorr(ll,m)+ekont*derx(ll,1,2) -< enddo -< enddo ---- -> cgrad do m=i+1,j-1 -> cgrad do ll=1,3 -> cgrad gradcorr(ll,m)=gradcorr(ll,m)+ggg1(ll) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+1,l-1 -> cgrad do ll=1,3 -> cgrad gradcorr(ll,m)=gradcorr(ll,m)+ggg2(ll) -> cgrad enddo -> cgrad enddo -> cgrad do m=i+2,j2 -> cgrad do ll=1,3 -> cgrad gradcorr(ll,m)=gradcorr(ll,m)+ekont*derx(ll,1,1) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+2,l2 -> cgrad do ll=1,3 -> cgrad gradcorr(ll,m)=gradcorr(ll,m)+ekont*derx(ll,1,2) -> cgrad enddo -> cgrad enddo -5757d7233 -< endif -5767d7242 -< include 'DIMENSIONS.ZSCOPT' -5847d7321 -< if (calc_grad) then -5886d7359 -< endif -5895d7367 -< if (calc_grad) then -5926d7397 -< endif -5938d7408 -< if (calc_grad) then -5971d7440 -< endif -5980d7448 -< if (calc_grad) then -6004d7471 -< endif -6015d7481 -< if (calc_grad) then -6048d7513 -< endif -6057d7521 -< if (calc_grad) then -6082d7545 -< endif -6094d7556 -< if (calc_grad) then -6112a7575,7578 -> C 2/11/08 AL Gradients over DC's connecting interacting sites will be -> C summed up outside the subrouine as for the other subroutines -> C handling long-range interactions. The old code is commented out -> C with "cgrad" to keep track of changes. -6114,6115c7580,7591 -< ggg1(ll)=eel5*g_contij(ll,1) -< ggg2(ll)=eel5*g_contij(ll,2) ---- -> cgrad ggg1(ll)=eel5*g_contij(ll,1) -> cgrad ggg2(ll)=eel5*g_contij(ll,2) -> gradcorr5ij=eel5*g_contij(ll,1)+ekont*derx(ll,1,1) -> gradcorr5kl=eel5*g_contij(ll,2)+ekont*derx(ll,1,2) -> c write (iout,'(a,3i3,a,5f8.3,2i3,a,5f8.3,a,f8.3)') -> c & "ecorr5",ll,i,j," derx",derx(ll,2,1),derx(ll,3,1),derx(ll,4,1), -> c & derx(ll,5,1),k,l," derx",derx(ll,2,2),derx(ll,3,2), -> c & derx(ll,4,2),derx(ll,5,2)," ekont",ekont -> c write (iout,'(a,3i3,a,3f8.3,2i3,a,3f8.3)') -> c & "ecorr5",ll,i,j," gradcorr5",g_contij(ll,1),derx(ll,1,1), -> c & gradcorr5ij, -> c & k,l," gradcorr5",g_contij(ll,2),derx(ll,1,2),gradcorr5kl -6117c7593 -< ghalf=0.5d0*ggg1(ll) ---- -> cgrad ghalf=0.5d0*ggg1(ll) -6119c7595 -< gradcorr5(ll,i)=gradcorr5(ll,i)+ghalf+ekont*derx(ll,2,1) ---- -> gradcorr5(ll,i)=gradcorr5(ll,i)+ekont*derx(ll,2,1) -6121c7597 -< gradcorr5(ll,j)=gradcorr5(ll,j)+ghalf+ekont*derx(ll,4,1) ---- -> gradcorr5(ll,j)=gradcorr5(ll,j)+ekont*derx(ll,4,1) -6122a7599,7600 -> gradcorr5_long(ll,j)=gradcorr5_long(ll,j)+gradcorr5ij -> gradcorr5_long(ll,i)=gradcorr5_long(ll,i)-gradcorr5ij -6124c7602 -< ghalf=0.5d0*ggg2(ll) ---- -> cgrad ghalf=0.5d0*ggg2(ll) -6129a7608,7609 -> gradcorr5_long(ll,l)=gradcorr5_long(ll,l)+gradcorr5kl -> gradcorr5_long(ll,k)=gradcorr5_long(ll,k)-gradcorr5kl -6132,6133c7612,7613 -< do m=i+1,j-1 -< do ll=1,3 ---- -> cgrad do m=i+1,j-1 -> cgrad do ll=1,3 -6135,6139c7615,7619 -< gradcorr5(ll,m)=gradcorr5(ll,m)+ggg1(ll) -< enddo -< enddo -< do m=k+1,l-1 -< do ll=1,3 ---- -> cgrad gradcorr5(ll,m)=gradcorr5(ll,m)+ggg1(ll) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+1,l-1 -> cgrad do ll=1,3 -6141,6143c7621,7623 -< gradcorr5(ll,m)=gradcorr5(ll,m)+ggg2(ll) -< enddo -< enddo ---- -> cgrad gradcorr5(ll,m)=gradcorr5(ll,m)+ggg2(ll) -> cgrad enddo -> cgrad enddo -6145,6154c7625,7634 -< do m=i+2,j2 -< do ll=1,3 -< gradcorr5(ll,m)=gradcorr5(ll,m)+ekont*derx(ll,1,1) -< enddo -< enddo -< do m=k+2,l2 -< do ll=1,3 -< gradcorr5(ll,m)=gradcorr5(ll,m)+ekont*derx(ll,1,2) -< enddo -< enddo ---- -> cgrad do m=i+2,j2 -> cgrad do ll=1,3 -> cgrad gradcorr5(ll,m)=gradcorr5(ll,m)+ekont*derx(ll,1,1) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+2,l2 -> cgrad do ll=1,3 -> cgrad gradcorr5(ll,m)=gradcorr5(ll,m)+ekont*derx(ll,1,2) -> cgrad enddo -> cgrad enddo -6158d7637 -< endif -6168d7646 -< include 'DIMENSIONS.ZSCOPT' -6228,6233c7706,7711 -< cd write(iout,*) 'eello6_1',eello6_1,' eel6_1_num',16*eel6_1_num -< cd write(iout,*) 'eello6_2',eello6_2,' eel6_2_num',16*eel6_2_num -< cd write(iout,*) 'eello6_3',eello6_3,' eel6_3_num',16*eel6_3_num -< cd write(iout,*) 'eello6_4',eello6_4,' eel6_4_num',16*eel6_4_num -< cd write(iout,*) 'eello6_5',eello6_5,' eel6_5_num',16*eel6_5_num -< cd write(iout,*) 'eello6_6',eello6_6,' eel6_6_num',16*eel6_6_num ---- -> cd write(iout,*) 'eello6_1',eello6_1!,' eel6_1_num',16*eel6_1_num -> cd write(iout,*) 'eello6_2',eello6_2!,' eel6_2_num',16*eel6_2_num -> cd write(iout,*) 'eello6_3',eello6_3!,' eel6_3_num',16*eel6_3_num -> cd write(iout,*) 'eello6_4',eello6_4!,' eel6_4_num',16*eel6_4_num -> cd write(iout,*) 'eello6_5',eello6_5!,' eel6_5_num',16*eel6_5_num -> cd write(iout,*) 'eello6_6',eello6_6!,' eel6_6_num',16*eel6_6_num -6235d7712 -< if (calc_grad) then -6251,6252c7728,7729 -< ggg1(ll)=eel6*g_contij(ll,1) -< ggg2(ll)=eel6*g_contij(ll,2) ---- -> cgrad ggg1(ll)=eel6*g_contij(ll,1) -> cgrad ggg2(ll)=eel6*g_contij(ll,2) -6254c7731 -< ghalf=0.5d0*ggg1(ll) ---- -> cgrad ghalf=0.5d0*ggg1(ll) -6256c7733,7735 -< gradcorr6(ll,i)=gradcorr6(ll,i)+ghalf+ekont*derx(ll,2,1) ---- -> gradcorr6ij=eel6*g_contij(ll,1)+ekont*derx(ll,1,1) -> gradcorr6kl=eel6*g_contij(ll,2)+ekont*derx(ll,1,2) -> gradcorr6(ll,i)=gradcorr6(ll,i)+ekont*derx(ll,2,1) -6258c7737 -< gradcorr6(ll,j)=gradcorr6(ll,j)+ghalf+ekont*derx(ll,4,1) ---- -> gradcorr6(ll,j)=gradcorr6(ll,j)+ekont*derx(ll,4,1) -6260c7739,7741 -< ghalf=0.5d0*ggg2(ll) ---- -> gradcorr6_long(ll,j)=gradcorr6_long(ll,j)+gradcorr6ij -> gradcorr6_long(ll,i)=gradcorr6_long(ll,i)-gradcorr6ij -> cgrad ghalf=0.5d0*ggg2(ll) -6263c7744 -< gradcorr6(ll,k)=gradcorr6(ll,k)+ghalf+ekont*derx(ll,2,2) ---- -> gradcorr6(ll,k)=gradcorr6(ll,k)+ekont*derx(ll,2,2) -6265c7746 -< gradcorr6(ll,l)=gradcorr6(ll,l)+ghalf+ekont*derx(ll,4,2) ---- -> gradcorr6(ll,l)=gradcorr6(ll,l)+ekont*derx(ll,4,2) -6266a7748,7749 -> gradcorr6_long(ll,l)=gradcorr6_long(ll,l)+gradcorr6kl -> gradcorr6_long(ll,k)=gradcorr6_long(ll,k)-gradcorr6kl -6269,6270c7752,7753 -< do m=i+1,j-1 -< do ll=1,3 ---- -> cgrad do m=i+1,j-1 -> cgrad do ll=1,3 -6272,6276c7755,7759 -< gradcorr6(ll,m)=gradcorr6(ll,m)+ggg1(ll) -< enddo -< enddo -< do m=k+1,l-1 -< do ll=1,3 ---- -> cgrad gradcorr6(ll,m)=gradcorr6(ll,m)+ggg1(ll) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+1,l-1 -> cgrad do ll=1,3 -6278,6291c7761,7774 -< gradcorr6(ll,m)=gradcorr6(ll,m)+ggg2(ll) -< enddo -< enddo -< 1112 continue -< do m=i+2,j2 -< do ll=1,3 -< gradcorr6(ll,m)=gradcorr6(ll,m)+ekont*derx(ll,1,1) -< enddo -< enddo -< do m=k+2,l2 -< do ll=1,3 -< gradcorr6(ll,m)=gradcorr6(ll,m)+ekont*derx(ll,1,2) -< enddo -< enddo ---- -> cgrad gradcorr6(ll,m)=gradcorr6(ll,m)+ggg2(ll) -> cgrad enddo -> cgrad enddo -> cgrad1112 continue -> cgrad do m=i+2,j2 -> cgrad do ll=1,3 -> cgrad gradcorr6(ll,m)=gradcorr6(ll,m)+ekont*derx(ll,1,1) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+2,l2 -> cgrad do ll=1,3 -> cgrad gradcorr6(ll,m)=gradcorr6(ll,m)+ekont*derx(ll,1,2) -> cgrad enddo -> cgrad enddo -6295d7777 -< endif -6305d7786 -< include 'DIMENSIONS.ZSCOPT' -6346d7826 -< if (.not. calc_grad) return -6411d7890 -< include 'DIMENSIONS.ZSCOPT' -6461d7939 -< if (.not. calc_grad) return -6598d8075 -< include 'DIMENSIONS.ZSCOPT' -6651c8128,8129 -< cd write (2,*) 'eello6_graph3:','s1',s1,' s2',s2,' s3',s3,' s4',s4 ---- -> cd write (2,*) 'eello6_graph3:','s1',s1,' s2',s2,' s3',s3,' s4',s4, -> cd & "sum",-(s2+s3+s4) -6658d8135 -< if (.not. calc_grad) return -6714d8190 -< include 'DIMENSIONS.ZSCOPT' -6794d8269 -< if (.not. calc_grad) return -6960d8434 -< include 'DIMENSIONS.ZSCOPT' -6975a8450,8453 -> s1=0.0d0 -> s8=0.0d0 -> s13=0.0d0 -> c -7013,7014d8490 -< #else -< s1 = 0.0d0 -7024,7025d8499 -< #else -< s8=0.0d0 -7037,7038d8510 -< #else -< s13=0.0d0 -7047d8518 -< if (calc_grad) then -7048a8520,8521 -> s1d =0.0d0 -> s8d =0.0d0 -7056,7057d8528 -< #else -< s8d=0.0d0 -7074,7075d8544 -< #else -< s1d=0.0d0 -7089,7090d8557 -< #else -< s13d=0.0d0 -7112,7113d8578 -< #else -< s13d = 0.0d0 -7130,7131d8594 -< #else -< s1d = 0.0d0 -7140,7141d8602 -< #else -< s8d = 0.0d0 -7149,7150d8609 -< #else -< s13d = 0.0d0 -7172,7173d8630 -< #else -< s1d = 0.0d0 -7184,7185d8640 -< #else -< s8d = 0.0d0 -7248,7250c8703,8705 -< ggg1(ll)=eel_turn6*g_contij(ll,1) -< ggg2(ll)=eel_turn6*g_contij(ll,2) -< ghalf=0.5d0*ggg1(ll) ---- -> cgrad ggg1(ll)=eel_turn6*g_contij(ll,1) -> cgrad ggg2(ll)=eel_turn6*g_contij(ll,2) -> cgrad ghalf=0.5d0*ggg1(ll) -7252c8707,8709 -< gcorr6_turn(ll,i)=gcorr6_turn(ll,i)+ghalf ---- -> gturn6ij=eel_turn6*g_contij(ll,1)+ekont*derx_turn(ll,1,1) -> gturn6kl=eel_turn6*g_contij(ll,2)+ekont*derx_turn(ll,1,2) -> gcorr6_turn(ll,i)=gcorr6_turn(ll,i)!+ghalf -7255c8712 -< gcorr6_turn(ll,j)=gcorr6_turn(ll,j)+ghalf ---- -> gcorr6_turn(ll,j)=gcorr6_turn(ll,j)!+ghalf -7258c8715,8717 -< ghalf=0.5d0*ggg2(ll) ---- -> gcorr6_turn_long(ll,j)=gcorr6_turn_long(ll,j)+gturn6ij -> gcorr6_turn_long(ll,i)=gcorr6_turn_long(ll,i)-gturn6ij -> cgrad ghalf=0.5d0*ggg2(ll) -7260c8719 -< gcorr6_turn(ll,k)=gcorr6_turn(ll,k)+ghalf ---- -> gcorr6_turn(ll,k)=gcorr6_turn(ll,k)!+ghalf -7263c8722 -< gcorr6_turn(ll,l)=gcorr6_turn(ll,l)+ghalf ---- -> gcorr6_turn(ll,l)=gcorr6_turn(ll,l)!+ghalf -7265a8725,8726 -> gcorr6_turn_long(ll,l)=gcorr6_turn_long(ll,l)+gturn6kl -> gcorr6_turn_long(ll,k)=gcorr6_turn_long(ll,k)-gturn6kl -7268,7288c8729,8749 -< do m=i+1,j-1 -< do ll=1,3 -< gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ggg1(ll) -< enddo -< enddo -< do m=k+1,l-1 -< do ll=1,3 -< gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ggg2(ll) -< enddo -< enddo -< 1112 continue -< do m=i+2,j2 -< do ll=1,3 -< gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ekont*derx_turn(ll,1,1) -< enddo -< enddo -< do m=k+2,l2 -< do ll=1,3 -< gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ekont*derx_turn(ll,1,2) -< enddo -< enddo ---- -> cgrad do m=i+1,j-1 -> cgrad do ll=1,3 -> cgrad gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ggg1(ll) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+1,l-1 -> cgrad do ll=1,3 -> cgrad gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ggg2(ll) -> cgrad enddo -> cgrad enddo -> cgrad1112 continue -> cgrad do m=i+2,j2 -> cgrad do ll=1,3 -> cgrad gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ekont*derx_turn(ll,1,1) -> cgrad enddo -> cgrad enddo -> cgrad do m=k+2,l2 -> cgrad do ll=1,3 -> cgrad gcorr6_turn(ll,m)=gcorr6_turn(ll,m)+ekont*derx_turn(ll,1,2) -> cgrad enddo -> cgrad enddo -7292d8752 -< endif -7297a8758,8777 -> -> C----------------------------------------------------------------------------- -> double precision function scalar(u,v) -> !DIR$ INLINEALWAYS scalar -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::scalar -> #endif -> implicit none -> double precision u(3),v(3) -> cd double precision sc -> cd integer i -> cd sc=0.0d0 -> cd do i=1,3 -> cd sc=sc+u(i)*v(i) -> cd enddo -> cd scalar=sc -> -> scalar=u(1)*v(1)+u(2)*v(2)+u(3)*v(3) -> return -> end -7299a8780,8783 -> !DIR$ INLINEALWAYS MATVEC2 -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::MATVEC2 -> #endif -7317a8802,8804 -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::MATMAT2 -> #endif -7343a8831 -> !DIR$ INLINEALWAYS scalar2 -7354a8843,8846 -> !DIR$ INLINEALWAYS transpose2 -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::transpose2 -> #endif -7376a8869,8872 -> !DIR$ INLINEALWAYS prodmat3 -> #ifndef OSF -> cDEC$ ATTRIBUTES FORCEINLINE::prodmat3 -> #endif -7419,7431d8914 -< C----------------------------------------------------------------------------- -< double precision function scalar(u,v) -< implicit none -< double precision u(3),v(3) -< double precision sc -< integer i -< sc=0.0d0 -< do i=1,3 -< sc=sc+u(i)*v(i) -< enddo -< scalar=sc -< return -< end diff --git a/source/wham/src-M/energy_p_new.F b/source/wham/src-M/energy_p_new.F index d633b53..fcc52c0 100644 --- a/source/wham/src-M/energy_p_new.F +++ b/source/wham/src-M/energy_p_new.F @@ -6323,18 +6323,18 @@ c-------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ /j\ -C / \ / \ -C /| o | | o |\ -C \ j|/k\| / \ |/k\|l / -C \ / \ / \ / \ / -C o o o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ /j\ C +C / \ / \ C +C /| o | | o |\ C +C \ j|/k\| / \ |/k\|l / C +C \ / \ / \ / \ / C +C o o o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC itk=itortyp(itype(k)) s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i)) @@ -6430,18 +6430,18 @@ c---------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C \ /l\ /j\ / -C \ / \ / \ / -C o| o | | o |o -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C \ /l\ /j\ / C +C \ / \ / \ / C +C o| o | | o |o C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l C AL 7/4/01 s1 would occur in the sixth-order moment, @@ -6614,18 +6614,18 @@ c---------------------------------------------------------------------------- double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C j|/k\| / |/k\|l / -C / \ / / \ / -C / o / o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C j|/k\| / |/k\|l / C +C / \ / / \ / C +C / o / o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective @@ -6732,18 +6732,18 @@ c---------------------------------------------------------------------------- & auxvec1(2),auxmat1(2,2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o \ o \ -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o \ o \ C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective diff --git a/source/wham/src-M/proc_proc.c b/source/wham/src-M/proc_proc.c index 9ef2dff..7a21274 100644 --- a/source/wham/src-M/proc_proc.c +++ b/source/wham/src-M/proc_proc.c @@ -1,4 +1,5 @@ #include +#include #include #ifdef LINUX @@ -51,8 +52,8 @@ void _stdcall PROC_CONV(char *buf, int *i, int n) { int j; -sscanf(buf,"%d",&j); -*i=j; +if (sscanf(buf,"%d",&j) != EOF) + *i=j; return; } diff --git a/source/wham/src-M/xdrf.org/Makefile b/source/wham/src-M/xdrf.org/Makefile deleted file mode 100644 index 0af9b06..0000000 --- a/source/wham/src-M/xdrf.org/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = xlc -CPPC = xlc - -CFLAGS= -I. -O2 -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/wham/src-M/xdrf.org/RS6K.m4 b/source/wham/src-M/xdrf.org/RS6K.m4 deleted file mode 100644 index 0331d97..0000000 --- a/source/wham/src-M/xdrf.org/RS6K.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -undefine(`len') -# -# do nothing special to FORTRAN function names -# -define(`FUNCTION',`$1') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) - diff --git a/source/wham/src-M/xdrf.org/features.h b/source/wham/src-M/xdrf.org/features.h deleted file mode 100644 index 5733b9b..0000000 --- a/source/wham/src-M/xdrf.org/features.h +++ /dev/null @@ -1,334 +0,0 @@ -/* Copyright (C) 1991-1993,1995-2003,2004,2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _FEATURES_H -#define _FEATURES_H 1 - -/* These are defined by the user (or the compiler) - to specify the desired environment: - - __STRICT_ANSI__ ISO Standard C. - _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. - _POSIX_SOURCE IEEE Std 1003.1. - _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; - if >=199309L, add IEEE Std 1003.1b-1993; - if >=199506L, add IEEE Std 1003.1c-1995; - if >=200112L, all of IEEE 1003.1-2004 - _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if - Single Unix conformance is wanted, to 600 for the - upcoming sixth revision. - _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. - _LARGEFILE_SOURCE Some more functions for correct standard I/O. - _LARGEFILE64_SOURCE Additional functionality from LFS for large files. - _FILE_OFFSET_BITS=N Select default filesystem interface. - _BSD_SOURCE ISO C, POSIX, and 4.3BSD things. - _SVID_SOURCE ISO C, POSIX, and SVID things. - _GNU_SOURCE All of the above, plus GNU extensions. - _REENTRANT Select additionally reentrant object. - _THREAD_SAFE Same as _REENTRANT, often used by other systems. - _FORTIFY_SOURCE If set to numeric value > 0 additional security - measures are defined, according to level. - - The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__. - If none of these are defined, the default is to have _SVID_SOURCE, - _BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to - 199506L. If more than one of these are defined, they accumulate. - For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE - together give you ISO C, 1003.1, and 1003.2, but nothing else. - - These are defined by this file and are used by the - header files to decide what to declare or define: - - __USE_ISOC99 Define ISO C99 things. - __USE_POSIX Define IEEE Std 1003.1 things. - __USE_POSIX2 Define IEEE Std 1003.2 things. - __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. - __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. - __USE_XOPEN Define XPG things. - __USE_XOPEN_EXTENDED Define X/Open Unix things. - __USE_UNIX98 Define Single Unix V2 things. - __USE_XOPEN2K Define XPG6 things. - __USE_LARGEFILE Define correct standard I/O things. - __USE_LARGEFILE64 Define LFS things with separate names. - __USE_FILE_OFFSET64 Define 64bit interface as default. - __USE_BSD Define 4.3BSD things. - __USE_SVID Define SVID things. - __USE_MISC Define things common to BSD and System V Unix. - __USE_GNU Define GNU extensions. - __USE_REENTRANT Define reentrant/thread-safe *_r functions. - __USE_FORTIFY_LEVEL Additional security measures used, according to level. - __FAVOR_BSD Favor 4.3BSD things in cases of conflict. - - The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are - defined by this file unconditionally. `__GNU_LIBRARY__' is provided - only for compatibility. All new code should use the other symbols - to test for features. - - All macros listed above as possibly being defined by this file are - explicitly undefined if they are not explicitly defined. - Feature-test macros that are not defined by the user or compiler - but are implied by the other feature-test macros defined (or by the - lack of any definitions) are defined by the file. */ - - -/* Undefine everything, so we get a clean slate. */ -#undef __USE_ISOC99 -#undef __USE_POSIX -#undef __USE_POSIX2 -#undef __USE_POSIX199309 -#undef __USE_POSIX199506 -#undef __USE_XOPEN -#undef __USE_XOPEN_EXTENDED -#undef __USE_UNIX98 -#undef __USE_XOPEN2K -#undef __USE_LARGEFILE -#undef __USE_LARGEFILE64 -#undef __USE_FILE_OFFSET64 -#undef __USE_BSD -#undef __USE_SVID -#undef __USE_MISC -#undef __USE_GNU -#undef __USE_REENTRANT -#undef __USE_FORTIFY_LEVEL -#undef __FAVOR_BSD -#undef __KERNEL_STRICT_NAMES - -/* Suppress kernel-name space pollution unless user expressedly asks - for it. */ -#ifndef _LOOSE_KERNEL_NAMES -# define __KERNEL_STRICT_NAMES -#endif - -/* Always use ISO C things. */ -#define __USE_ANSI 1 - -/* Convenience macros to test the versions of glibc and gcc. - Use them like this: - #if __GNUC_PREREQ (2,8) - ... code requiring gcc 2.8 or later ... - #endif - Note - they won't work for gcc1 or glibc1, since the _MINOR macros - were not defined then. */ -#if defined __GNUC__ && defined __GNUC_MINOR__ -# define __GNUC_PREREQ(maj, min) \ - ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) -#else -# define __GNUC_PREREQ(maj, min) 0 -#endif - - -/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */ -#if defined _BSD_SOURCE && \ - !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \ - defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \ - defined _GNU_SOURCE || defined _SVID_SOURCE) -# define __FAVOR_BSD 1 -#endif - -/* If _GNU_SOURCE was defined by the user, turn on all the other features. */ -#ifdef _GNU_SOURCE -# undef _ISOC99_SOURCE -# define _ISOC99_SOURCE 1 -# undef _POSIX_SOURCE -# define _POSIX_SOURCE 1 -# undef _POSIX_C_SOURCE -# define _POSIX_C_SOURCE 199506L -# undef _XOPEN_SOURCE -# define _XOPEN_SOURCE 600 -# undef _XOPEN_SOURCE_EXTENDED -# define _XOPEN_SOURCE_EXTENDED 1 -# undef _LARGEFILE64_SOURCE -# define _LARGEFILE64_SOURCE 1 -# undef _BSD_SOURCE -# define _BSD_SOURCE 1 -# undef _SVID_SOURCE -# define _SVID_SOURCE 1 -#endif - -/* If nothing (other than _GNU_SOURCE) is defined, - define _BSD_SOURCE and _SVID_SOURCE. */ -#if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \ - !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \ - !defined _XOPEN_SOURCE && !defined _XOPEN_SOURCE_EXTENDED && \ - !defined _BSD_SOURCE && !defined _SVID_SOURCE) -# define _BSD_SOURCE 1 -# define _SVID_SOURCE 1 -#endif - -/* This is to enable the ISO C99 extension. Also recognize the old macro - which was used prior to the standard acceptance. This macro will - eventually go away and the features enabled by default once the ISO C99 - standard is widely adopted. */ -#if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \ - || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) -# define __USE_ISOC99 1 -#endif - -/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2 - (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */ -#if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE - 0) >= 500) && \ - !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE) -# define _POSIX_SOURCE 1 -# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500 -# define _POSIX_C_SOURCE 2 -# else -# define _POSIX_C_SOURCE 199506L -# endif -#endif - -#if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE -# define __USE_POSIX 1 -#endif - -#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE -# define __USE_POSIX2 1 -#endif - -#if (_POSIX_C_SOURCE - 0) >= 199309L -# define __USE_POSIX199309 1 -#endif - -#if (_POSIX_C_SOURCE - 0) >= 199506L -# define __USE_POSIX199506 1 -#endif - -#if (_POSIX_C_SOURCE - 0) >= 200112L -# define __USE_XOPEN2K 1 -#endif - -#ifdef _XOPEN_SOURCE -# define __USE_XOPEN 1 -# if (_XOPEN_SOURCE - 0) >= 500 -# define __USE_XOPEN_EXTENDED 1 -# define __USE_UNIX98 1 -# undef _LARGEFILE_SOURCE -# define _LARGEFILE_SOURCE 1 -# if (_XOPEN_SOURCE - 0) >= 600 -# define __USE_XOPEN2K 1 -# undef __USE_ISOC99 -# define __USE_ISOC99 1 -# endif -# else -# ifdef _XOPEN_SOURCE_EXTENDED -# define __USE_XOPEN_EXTENDED 1 -# endif -# endif -#endif - -#ifdef _LARGEFILE_SOURCE -# define __USE_LARGEFILE 1 -#endif - -#ifdef _LARGEFILE64_SOURCE -# define __USE_LARGEFILE64 1 -#endif - -#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 -# define __USE_FILE_OFFSET64 1 -#endif - -#if defined _BSD_SOURCE || defined _SVID_SOURCE -# define __USE_MISC 1 -#endif - -#ifdef _BSD_SOURCE -# define __USE_BSD 1 -#endif - -#ifdef _SVID_SOURCE -# define __USE_SVID 1 -#endif - -#ifdef _GNU_SOURCE -# define __USE_GNU 1 -#endif - -#if defined _REENTRANT || defined _THREAD_SAFE -# define __USE_REENTRANT 1 -#endif - -#if _FORTIFY_SOURCE > 0 && __GNUC_PREREQ (4, 1) && __OPTIMIZE__ > 0 -# if _FORTIFY_SOURCE == 1 -# define __USE_FORTIFY_LEVEL 1 -# elif _FORTIFY_SOURCE > 1 -# define __USE_FORTIFY_LEVEL 2 -# endif -#endif - -/* We do support the IEC 559 math functionality, real and complex. */ -#define __STDC_IEC_559__ 1 -#define __STDC_IEC_559_COMPLEX__ 1 - -/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1. */ -#define __STDC_ISO_10646__ 200009L - -/* This macro indicates that the installed library is the GNU C Library. - For historic reasons the value now is 6 and this will stay from now - on. The use of this variable is deprecated. Use __GLIBC__ and - __GLIBC_MINOR__ now (see below) when you want to test for a specific - GNU C library version and use the values in to get - the sonames of the shared libraries. */ -#undef __GNU_LIBRARY__ -#define __GNU_LIBRARY__ 6 - -/* Major and minor version number of the GNU C library package. Use - these macros to test for features in specific releases. */ -#define __GLIBC__ 2 -#define __GLIBC_MINOR__ 3 - -#define __GLIBC_PREREQ(maj, min) \ - ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) - -/* Decide whether a compiler supports the long long datatypes. */ -#if defined __GNUC__ \ - || (defined __PGI && defined __i386__ ) \ - || (defined __INTEL_COMPILER && (defined __i386__ || defined __ia64__)) \ - || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) -# define __GLIBC_HAVE_LONG_LONG 1 -#endif - -/* This is here only because every header file already includes this one. */ -#ifndef __ASSEMBLER__ -# ifndef _SYS_CDEFS_H -# include -# endif - -/* If we don't have __REDIRECT, prototypes will be missing if - __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */ -# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT -# define __USE_LARGEFILE 1 -# define __USE_LARGEFILE64 1 -# endif - -#endif /* !ASSEMBLER */ - -/* Decide whether we can define 'extern inline' functions in headers. */ -#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ - && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ -# define __USE_EXTERN_INLINES 1 -#endif - - -/* This is here only because every header file already includes this one. - Get the definitions of all the appropriate `__stub_FUNCTION' symbols. - contains `#define __stub_FUNCTION' when FUNCTION is a stub - that will always return failure (and set errno to ENOSYS). */ -#include - - -#endif /* features.h */ diff --git a/source/wham/src-M/xdrf.org/ftocstr.c b/source/wham/src-M/xdrf.org/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/wham/src-M/xdrf.org/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/wham/src-M/xdrf.org/libxdrf.c b/source/wham/src-M/xdrf.org/libxdrf.c deleted file mode 100644 index 7fce1d1..0000000 --- a/source/wham/src-M/xdrf.org/libxdrf.c +++ /dev/null @@ -1,1236 +0,0 @@ - - -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* xdrfproc) (int *, void *, int *); - -void -xdrfbool (xdrid, pb, ret) -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -xdrfchar (xdrid, cp, ret) -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -xdrfdouble (xdrid, dp, ret) -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -xdrffloat (xdrid, fp, ret) -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -xdrfint (xdrid, ip, ret) -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -xdrflong (xdrid, lp, ret) -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -xdrfshort (xdrid, sp, ret) -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -xdrfuchar (xdrid, ucp, ret) -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -xdrfulong (xdrid, ulp, ret) -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -xdrfushort (xdrid, usp, ret) -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -xdrf3dfcoord (xdrid, fp, size, precision, ret) -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -xdrfstring (xdrid, sp_ptr, maxsize, ret, sp_len) -int *xdrid, *ret; -char * sp_ptr; int sp_len; -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((sp_len) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, sp_ptr, sp_len)) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( sp_ptr, sp_len, tsp); - cnt += *maxsize; - free(tsp); -} - -void -xdrfwrapstring (xdrid, sp_ptr, ret, sp_len) -int *xdrid, *ret; -char * sp_ptr; int sp_len; -{ - char *tsp; - int maxsize; - maxsize = (sp_len) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, sp_ptr, sp_len)) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( sp_ptr, sp_len, tsp); - cnt += maxsize; - free(tsp); -} - -void -xdrfopaque (xdrid, cp, ccnt, ret) -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -xdrfsetpos (xdrid, pos, ret) -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -xdrf (xdrid, pos) -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -xdrfvector (xdrid, cp, size, elproc, ret) -int *xdrid, *ret; -char *cp; -int *size; -xdrfproc elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -xdrfclose (xdrid, ret) -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -xdrfopen (xdrid, fp_ptr, mode_ptr, ret, fp_len, mode_len) -int *xdrid; -char * fp_ptr; int fp_len; -char * mode_ptr; int mode_len; -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), fp_ptr, fp_len)) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), mode_ptr, - mode_len)) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src-M/xdrf.org/libxdrf.m4 b/source/wham/src-M/xdrf.org/libxdrf.m4 deleted file mode 100644 index 8704af2..0000000 --- a/source/wham/src-M/xdrf.org/libxdrf.m4 +++ /dev/null @@ -1,1234 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src-M/xdrf.org/libxdrf.m4.org b/source/wham/src-M/xdrf.org/libxdrf.m4.org deleted file mode 100644 index b14b374..0000000 --- a/source/wham/src-M/xdrf.org/libxdrf.m4.org +++ /dev/null @@ -1,1230 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src-M/xdrf.org/types.h b/source/wham/src-M/xdrf.org/types.h deleted file mode 100644 index 871f3fd..0000000 --- a/source/wham/src-M/xdrf.org/types.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* fixincludes should not add extern "C" to this file */ -/* - * Rpc additions to - */ -#ifndef _RPC_TYPES_H -#define _RPC_TYPES_H 1 - -typedef int bool_t; -typedef int enum_t; -/* This needs to be changed to uint32_t in the future */ -typedef unsigned long rpcprog_t; -typedef unsigned long rpcvers_t; -typedef unsigned long rpcproc_t; -typedef unsigned long rpcprot_t; -typedef unsigned long rpcport_t; - -#define __dontcare__ -1 - -#ifndef FALSE -# define FALSE (0) -#endif - -#ifndef TRUE -# define TRUE (1) -#endif - -#ifndef NULL -# define NULL 0 -#endif - -#include /* For malloc decl. */ -#define mem_alloc(bsize) malloc(bsize) -/* - * XXX: This must not use the second argument, or code in xdr_array.c needs - * to be modified. - */ -#define mem_free(ptr, bsize) free(ptr) - -#ifndef makedev /* ie, we haven't already included it */ -#include -#endif - -#ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; -typedef __fsid_t fsid_t; -# define __u_char_defined -#endif -#ifndef __daddr_t_defined -typedef __daddr_t daddr_t; -typedef __caddr_t caddr_t; -# define __daddr_t_defined -#endif - -#include -#include - -#include - -#ifndef INADDR_LOOPBACK -#define INADDR_LOOPBACK (u_long)0x7F000001 -#endif -#ifndef MAXHOSTNAMELEN -#define MAXHOSTNAMELEN 64 -#endif - -#endif /* rpc/types.h */ diff --git a/source/wham/src-M/xdrf.org/underscore.m4 b/source/wham/src-M/xdrf.org/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/wham/src-M/xdrf.org/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/wham/src-M/xdrf.org/xdr.c b/source/wham/src-M/xdrf.org/xdr.c deleted file mode 100644 index 33b8544..0000000 --- a/source/wham/src-M/xdrf.org/xdr.c +++ /dev/null @@ -1,752 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; -#endif - -/* - * xdr.c, Generic XDR routines implementation. - * - * Copyright (C) 1986, Sun Microsystems, Inc. - * - * These are the "generic" xdr routines used to serialize and de-serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include -#include -#include - -#include "types.h" -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -#endif - -/* - * constants specific to the xdr "protocol" - */ -#define XDR_FALSE ((long) 0) -#define XDR_TRUE ((long) 1) -#define LASTUNSIGNED ((u_int) 0-1) - -/* - * for unit alignment - */ -static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; - -/* - * Free a data structure using XDR - * Not a filter, but a convenient utility nonetheless - */ -void -xdr_free (xdrproc_t proc, char *objp) -{ - XDR x; - - x.x_op = XDR_FREE; - (*proc) (&x, objp); -} - -/* - * XDR nothing - */ -bool_t -xdr_void (void) -{ - return TRUE; -} -INTDEF(xdr_void) - -/* - * XDR integers - */ -bool_t -xdr_int (XDR *xdrs, int *ip) -{ - -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *ip; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ip = (int) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif INT_MAX == LONG_MAX - return INTUSE(xdr_long) (xdrs, (long *) ip); -#elif INT_MAX == SHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) ip); -#else -#error unexpected integer sizes in_xdr_int() -#endif -} -INTDEF(xdr_int) - -/* - * XDR unsigned integers - */ -bool_t -xdr_u_int (XDR *xdrs, u_int *up) -{ -#if UINT_MAX < ULONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * up; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *up = (u_int) (u_long) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif UINT_MAX == ULONG_MAX - return INTUSE(xdr_u_long) (xdrs, (u_long *) up); -#elif UINT_MAX == USHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) up); -#else -#error unexpected integer sizes in_xdr_u_int() -#endif -} -INTDEF(xdr_u_int) - -/* - * XDR long integers - * The definition of xdr_long() is kept for backward - * compatibility. Instead xdr_int() should be used. - */ -bool_t -xdr_long (XDR *xdrs, long *lp) -{ - - if (xdrs->x_op == XDR_ENCODE - && (sizeof (int32_t) == sizeof (long) - || (int32_t) *lp == *lp)) - return XDR_PUTLONG (xdrs, lp); - - if (xdrs->x_op == XDR_DECODE) - return XDR_GETLONG (xdrs, lp); - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_long) - -/* - * XDR unsigned long integers - * The definition of xdr_u_long() is kept for backward - * compatibility. Instead xdr_u_int() should be used. - */ -bool_t -xdr_u_long (XDR *xdrs, u_long *ulp) -{ - switch (xdrs->x_op) - { - case XDR_DECODE: - { - long int tmp; - - if (XDR_GETLONG (xdrs, &tmp) == FALSE) - return FALSE; - - *ulp = (uint32_t) tmp; - return TRUE; - } - - case XDR_ENCODE: - if (sizeof (uint32_t) != sizeof (u_long) - && (uint32_t) *ulp != *ulp) - return FALSE; - - return XDR_PUTLONG (xdrs, (long *) ulp); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_long) - -/* - * XDR hyper integers - * same as xdr_u_hyper - open coded to save a proc call! - */ -bool_t -xdr_hyper (XDR *xdrs, quad_t *llp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (long) ((*llp) >> 32); - t2 = (long) (*llp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *llp = ((quad_t) t1) << 32; - *llp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_hyper) - - -/* - * XDR hyper integers - * same as xdr_hyper - open coded to save a proc call! - */ -bool_t -xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (unsigned long) ((*ullp) >> 32); - t2 = (unsigned long) (*ullp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *ullp = ((u_quad_t) t1) << 32; - *ullp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_u_hyper) - -bool_t -xdr_longlong_t (XDR *xdrs, quad_t *llp) -{ - return INTUSE(xdr_hyper) (xdrs, llp); -} - -bool_t -xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) -{ - return INTUSE(xdr_u_hyper) (xdrs, ullp); -} - -/* - * XDR short integers - */ -bool_t -xdr_short (XDR *xdrs, short *sp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *sp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *sp = (short) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_short) - -/* - * XDR unsigned short integers - */ -bool_t -xdr_u_short (XDR *xdrs, u_short *usp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * usp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *usp = (u_short) (u_long) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_short) - - -/* - * XDR a char - */ -bool_t -xdr_char (XDR *xdrs, char *cp) -{ - int i; - - i = (*cp); - if (!INTUSE(xdr_int) (xdrs, &i)) - { - return FALSE; - } - *cp = i; - return TRUE; -} - -/* - * XDR an unsigned char - */ -bool_t -xdr_u_char (XDR *xdrs, u_char *cp) -{ - u_int u; - - u = (*cp); - if (!INTUSE(xdr_u_int) (xdrs, &u)) - { - return FALSE; - } - *cp = u; - return TRUE; -} - -/* - * XDR booleans - */ -bool_t -xdr_bool (XDR *xdrs, bool_t *bp) -{ - long lb; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - lb = *bp ? XDR_TRUE : XDR_FALSE; - return XDR_PUTLONG (xdrs, &lb); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &lb)) - { - return FALSE; - } - *bp = (lb == XDR_FALSE) ? FALSE : TRUE; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bool) - -/* - * XDR enumerations - */ -bool_t -xdr_enum (XDR *xdrs, enum_t *ep) -{ - enum sizecheck - { - SIZEVAL - }; /* used to find the size of an enum */ - - /* - * enums are treated as ints - */ - if (sizeof (enum sizecheck) == 4) - { -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = *ep; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ep = l; - case XDR_FREE: - return TRUE; - - } - return FALSE; -#else - return INTUSE(xdr_long) (xdrs, (long *) ep); -#endif - } - else if (sizeof (enum sizecheck) == sizeof (short)) - { - return INTUSE(xdr_short) (xdrs, (short *) ep); - } - else - { - return FALSE; - } -} -INTDEF(xdr_enum) - -/* - * XDR opaque data - * Allows the specification of a fixed size sequence of opaque bytes. - * cp points to the opaque object and cnt gives the byte length. - */ -bool_t -xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) -{ - u_int rndup; - static char crud[BYTES_PER_XDR_UNIT]; - - /* - * if no data we are done - */ - if (cnt == 0) - return TRUE; - - /* - * round byte count to full xdr units - */ - rndup = cnt % BYTES_PER_XDR_UNIT; - if (rndup > 0) - rndup = BYTES_PER_XDR_UNIT - rndup; - - switch (xdrs->x_op) - { - case XDR_DECODE: - if (!XDR_GETBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); - - case XDR_ENCODE: - if (!XDR_PUTBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_PUTBYTES (xdrs, xdr_zero, rndup); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_opaque) - -/* - * XDR counted bytes - * *cpp is a pointer to the bytes, *sizep is the count. - * If *cpp is NULL maxsize bytes are allocated - */ -bool_t -xdr_bytes (xdrs, cpp, sizep, maxsize) - XDR *xdrs; - char **cpp; - u_int *sizep; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int nodesize; - - /* - * first deal with the length since xdr bytes are counted - */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - nodesize = *sizep; - if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (nodesize == 0) - { - return TRUE; - } - if (sp == NULL) - { - *cpp = sp = (char *) mem_alloc (nodesize); - } - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); - return FALSE; - } - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, nodesize); - - case XDR_FREE: - if (sp != NULL) - { - mem_free (sp, nodesize); - *cpp = NULL; - } - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bytes) - -/* - * Implemented here due to commonality of the object. - */ -bool_t -xdr_netobj (xdrs, np) - XDR *xdrs; - struct netobj *np; -{ - - return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); -} -INTDEF(xdr_netobj) - -/* - * XDR a discriminated union - * Support routine for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * an entry with a null procedure pointer. The routine gets - * the discriminant value and then searches the array of xdrdiscrims - * looking for that value. It calls the procedure given in the xdrdiscrim - * to handle the discriminant. If there is no specific routine a default - * routine may be called. - * If there is no specific or default routine an error is returned. - */ -bool_t -xdr_union (xdrs, dscmp, unp, choices, dfault) - XDR *xdrs; - enum_t *dscmp; /* enum to decide which arm to work on */ - char *unp; /* the union itself */ - const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ - xdrproc_t dfault; /* default xdr routine */ -{ - enum_t dscm; - - /* - * we deal with the discriminator; it's an enum - */ - if (!INTUSE(xdr_enum) (xdrs, dscmp)) - { - return FALSE; - } - dscm = *dscmp; - - /* - * search choices for a value that matches the discriminator. - * if we find one, execute the xdr routine for that value. - */ - for (; choices->proc != NULL_xdrproc_t; choices++) - { - if (choices->value == dscm) - return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); - } - - /* - * no match - execute the default xdr routine if there is one - */ - return ((dfault == NULL_xdrproc_t) ? FALSE : - (*dfault) (xdrs, unp, LASTUNSIGNED)); -} -INTDEF(xdr_union) - - -/* - * Non-portable xdr primitives. - * Care should be taken when moving these routines to new architectures. - */ - - -/* - * XDR null terminated ASCII strings - * xdr_string deals with "C strings" - arrays of bytes that are - * terminated by a NULL character. The parameter cpp references a - * pointer to storage; If the pointer is null, then the necessary - * storage is allocated. The last parameter is the max allowed length - * of the string as specified by a protocol. - */ -bool_t -xdr_string (xdrs, cpp, maxsize) - XDR *xdrs; - char **cpp; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int size; - u_int nodesize; - - /* - * first deal with the length since xdr strings are counted-strings - */ - switch (xdrs->x_op) - { - case XDR_FREE: - if (sp == NULL) - { - return TRUE; /* already free */ - } - /* fall through... */ - case XDR_ENCODE: - if (sp == NULL) - return FALSE; - size = strlen (sp); - break; - case XDR_DECODE: - break; - } - if (!INTUSE(xdr_u_int) (xdrs, &size)) - { - return FALSE; - } - if (size > maxsize) - { - return FALSE; - } - nodesize = size + 1; - if (nodesize == 0) - { - /* This means an overflow. It a bug in the caller which - provided a too large maxsize but nevertheless catch it - here. */ - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (sp == NULL) - *cpp = sp = (char *) mem_alloc (nodesize); - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_string: out of memory\n"); - return FALSE; - } - sp[size] = 0; - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, size); - - case XDR_FREE: - mem_free (sp, nodesize); - *cpp = NULL; - return TRUE; - } - return FALSE; -} -INTDEF(xdr_string) - -/* - * Wrapper for xdr_string that can be called directly from - * routines like clnt_call - */ -bool_t -xdr_wrapstring (xdrs, cpp) - XDR *xdrs; - char **cpp; -{ - if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) - { - return TRUE; - } - return FALSE; -} diff --git a/source/wham/src-M/xdrf.org/xdr.h b/source/wham/src-M/xdrf.org/xdr.h deleted file mode 100644 index 2602ad9..0000000 --- a/source/wham/src-M/xdrf.org/xdr.h +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr.h, External Data Representation Serialization Routines. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - */ - -#ifndef _RPC_XDR_H -#define _RPC_XDR_H 1 - -#include -#include -#include "types.h" - -/* We need FILE. */ -#include - -__BEGIN_DECLS - -/* - * XDR provides a conventional way for converting between C data - * types and an external bit-string representation. Library supplied - * routines provide for the conversion on built-in C data types. These - * routines and utility routines defined here are used to help implement - * a type encode/decode routine for each user-defined type. - * - * Each data type provides a single procedure which takes two arguments: - * - * bool_t - * xdrproc(xdrs, argresp) - * XDR *xdrs; - * *argresp; - * - * xdrs is an instance of a XDR handle, to which or from which the data - * type is to be converted. argresp is a pointer to the structure to be - * converted. The XDR handle contains an operation field which indicates - * which of the operations (ENCODE, DECODE * or FREE) is to be performed. - * - * XDR_DECODE may allocate space if the pointer argresp is null. This - * data can be freed with the XDR_FREE operation. - * - * We write only one procedure per data type to make it easy - * to keep the encode and decode procedures for a data type consistent. - * In many cases the same code performs all operations on a user defined type, - * because all the hard work is done in the component type routines. - * decode as a series of calls on the nested data types. - */ - -/* - * Xdr operations. XDR_ENCODE causes the type to be encoded into the - * stream. XDR_DECODE causes the type to be extracted from the stream. - * XDR_FREE can be used to release the space allocated by an XDR_DECODE - * request. - */ -enum xdr_op { - XDR_ENCODE = 0, - XDR_DECODE = 1, - XDR_FREE = 2 -}; - -/* - * This is the number of bytes per unit of external data. - */ -#define BYTES_PER_XDR_UNIT (4) -/* - * This only works if the above is a power of 2. But it's defined to be - * 4 by the appropriate RFCs. So it will work. And it's normally quicker - * than the old routine. - */ -#if 1 -#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) -#else /* this is the old routine */ -#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ - * BYTES_PER_XDR_UNIT) -#endif - -/* - * The XDR handle. - * Contains operation which is being applied to the stream, - * an operations vector for the particular implementation (e.g. see xdr_mem.c), - * and two private fields for the use of the particular implementation. - */ -typedef struct XDR XDR; -struct XDR - { - enum xdr_op x_op; /* operation; fast additional param */ - struct xdr_ops - { - bool_t (*x_getlong) (XDR *__xdrs, long *__lp); - /* get a long from underlying stream */ - bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); - /* put a long to " */ - bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); - /* get some bytes from " */ - bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); - /* put some bytes to " */ - u_int (*x_getpostn) (__const XDR *__xdrs); - /* returns bytes off from beginning */ - bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); - /* lets you reposition the stream */ - int32_t *(*x_inline) (XDR *__xdrs, u_int __len); - /* buf quick ptr to buffered data */ - void (*x_destroy) (XDR *__xdrs); - /* free privates of this xdr_stream */ - bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); - /* get a int from underlying stream */ - bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); - /* put a int to " */ - } - *x_ops; - caddr_t x_public; /* users' data */ - caddr_t x_private; /* pointer to private data */ - caddr_t x_base; /* private used for position info */ - u_int x_handy; /* extra private word */ - }; - -/* - * A xdrproc_t exists for each data type which is to be encoded or decoded. - * - * The second argument to the xdrproc_t is a pointer to an opaque pointer. - * The opaque pointer generally points to a structure of the data type - * to be decoded. If this pointer is 0, then the type routines should - * allocate dynamic storage of the appropriate size and return it. - * bool_t (*xdrproc_t)(XDR *, caddr_t *); - */ -typedef bool_t (*xdrproc_t) (XDR *, void *,...); - - -/* - * Operations defined on a XDR handle - * - * XDR *xdrs; - * int32_t *int32p; - * long *longp; - * caddr_t addr; - * u_int len; - * u_int pos; - */ -#define XDR_GETINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) -#define xdr_getint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) - -#define XDR_PUTINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) -#define xdr_putint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) - -#define XDR_GETLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) -#define xdr_getlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) - -#define XDR_PUTLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) -#define xdr_putlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) - -#define XDR_GETBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) -#define xdr_getbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) - -#define XDR_PUTBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) -#define xdr_putbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) - -#define XDR_GETPOS(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) -#define xdr_getpos(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) - -#define XDR_SETPOS(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) -#define xdr_setpos(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) - -#define XDR_INLINE(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) -#define xdr_inline(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) - -#define XDR_DESTROY(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) -#define xdr_destroy(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) - -/* - * Support struct for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * a entry with a null procedure pointer. The xdr_union routine gets - * the discriminant value and then searches the array of structures - * for a matching value. If a match is found the associated xdr routine - * is called to handle that part of the union. If there is - * no match, then a default routine may be called. - * If there is no match and no default routine it is an error. - */ -#define NULL_xdrproc_t ((xdrproc_t)0) -struct xdr_discrim -{ - int value; - xdrproc_t proc; -}; - -/* - * Inline routines for fast encode/decode of primitive data types. - * Caveat emptor: these use single memory cycles to get the - * data from the underlying buffer, and will fail to operate - * properly if the data is not aligned. The standard way to use these - * is to say: - * if ((buf = XDR_INLINE(xdrs, count)) == NULL) - * return (FALSE); - * <<< macro calls >>> - * where ``count'' is the number of bytes of data occupied - * by the primitive data types. - * - * N.B. and frozen for all time: each data type here uses 4 bytes - * of external representation. - */ - -#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) -#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) -#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) -#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) - -/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ -#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) -#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) -#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - - -#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) -#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) -#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) -#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) - -#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - -/* - * These are the "generic" xdr routines. - * None of these can have const applied because it's not possible to - * know whether the call is a read or a write to the passed parameter - * also, the XDR structure is always updated by some of these calls. - */ -extern bool_t xdr_void (void) __THROW; -extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; -extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; -extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; -extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; -extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; -extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; -extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; -extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; -extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; -extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; -extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; -extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; -extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; -extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; -extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; -extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; -extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; -extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; -extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, - u_int __maxsize, u_int __elsize, xdrproc_t __elproc) - __THROW; -extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, - u_int __maxsize) __THROW; -extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; -extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; -extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, - __const struct xdr_discrim *__choices, - xdrproc_t dfault) __THROW; -extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; -extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; -extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, - u_int __elemsize, xdrproc_t __xdr_elem) __THROW; -extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; -extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; -extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, - xdrproc_t __proc) __THROW; -extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, - u_int __obj_size, xdrproc_t __xdr_obj) __THROW; -extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; -extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; - -/* - * Common opaque bytes objects used by many rpc protocols; - * declared here due to commonality. - */ -#define MAX_NETOBJ_SZ 1024 -struct netobj -{ - u_int n_len; - char *n_bytes; -}; -typedef struct netobj netobj; -extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; - -/* - * These are the public routines for the various implementations of - * xdr streams. - */ - -/* XDR using memory buffers */ -extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, - u_int __size, enum xdr_op __xop) __THROW; - -/* XDR using stdio library */ -extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) - __THROW; - -/* XDR pseudo records for tcp */ -extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, - u_int __recvsize, caddr_t __tcp_handle, - int (*__readit) (char *, char *, int), - int (*__writeit) (char *, char *, int)) __THROW; - -/* make end of xdr record */ -extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; - -/* move to beginning of next record */ -extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; - -/* true if no more input */ -extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; - -/* free memory buffers for xdr */ -extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; - -__END_DECLS - -#endif /* rpc/xdr.h */ diff --git a/source/wham/src-M/xdrf.org/xdr.o b/source/wham/src-M/xdrf.org/xdr.o deleted file mode 100644 index 913a61c..0000000 Binary files a/source/wham/src-M/xdrf.org/xdr.o and /dev/null differ diff --git a/source/wham/src-M/xdrf.org/xdr_array.c b/source/wham/src-M/xdrf.org/xdr_array.c deleted file mode 100644 index 836405c..0000000 --- a/source/wham/src-M/xdrf.org/xdr_array.c +++ /dev/null @@ -1,174 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_array.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "non-trivial" xdr primitives used to serialize and de-serialize - * arrays. See xdr.h for more info on the interface to xdr. - */ - -#include -#include -#include "types.h" -#include "xdr.h" -#include -#include - -#ifdef USE_IN_LIBIO -# include -#endif - -#define LASTUNSIGNED ((u_int)0-1) - - -/* - * XDR an array of arbitrary elements - * *addrp is a pointer to the array, *sizep is the number of elements. - * If addrp is NULL (*sizep * elsize) bytes are allocated. - * elsize is the size (in bytes) of each element, and elproc is the - * xdr procedure to call to handle each element of the array. - */ -bool_t -xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) - XDR *xdrs; - caddr_t *addrp; /* array pointer */ - u_int *sizep; /* number of elements */ - u_int maxsize; /* max numberof elements */ - u_int elsize; /* size in bytes of each element */ - xdrproc_t elproc; /* xdr routine to handle each element */ -{ - u_int i; - caddr_t target = *addrp; - u_int c; /* the actual element count */ - bool_t stat = TRUE; - u_int nodesize; - - /* like strings, arrays are really counted arrays */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - c = *sizep; - /* - * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() - * doesn't actually use its second argument anyway. - */ - if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - nodesize = c * elsize; - - /* - * if we are deserializing, we may need to allocate an array. - * We also save time by checking for a null array if we are freeing. - */ - if (target == NULL) - switch (xdrs->x_op) - { - case XDR_DECODE: - if (c == 0) - return TRUE; - *addrp = target = mem_alloc (nodesize); - if (target == NULL) - { - fprintf (stderr, "%s", "xdr_array: out of memory\n"); - return FALSE; - } - __bzero (target, nodesize); - break; - - case XDR_FREE: - return TRUE; - default: - break; - } - - /* - * now we xdr each element of array - */ - for (i = 0; (i < c) && stat; i++) - { - stat = (*elproc) (xdrs, target, LASTUNSIGNED); - target += elsize; - } - - /* - * the array may need freeing - */ - if (xdrs->x_op == XDR_FREE) - { - mem_free (*addrp, nodesize); - *addrp = NULL; - } - return stat; -} -INTDEF(xdr_array) - -/* - * xdr_vector(): - * - * XDR a fixed length array. Unlike variable-length arrays, - * the storage of fixed length arrays is static and unfreeable. - * > basep: base of the array - * > size: size of the array - * > elemsize: size of each element - * > xdr_elem: routine to XDR each element - */ -bool_t -xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) - XDR *xdrs; - char *basep; - u_int nelem; - u_int elemsize; - xdrproc_t xdr_elem; -{ - u_int i; - char *elptr; - - elptr = basep; - for (i = 0; i < nelem; i++) - { - if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) - { - return FALSE; - } - elptr += elemsize; - } - return TRUE; -} diff --git a/source/wham/src-M/xdrf.org/xdr_array.o b/source/wham/src-M/xdrf.org/xdr_array.o deleted file mode 100644 index 7526a6f..0000000 Binary files a/source/wham/src-M/xdrf.org/xdr_array.o and /dev/null differ diff --git a/source/wham/src-M/xdrf.org/xdr_float.c b/source/wham/src-M/xdrf.org/xdr_float.c deleted file mode 100644 index 15d3c88..0000000 --- a/source/wham/src-M/xdrf.org/xdr_float.c +++ /dev/null @@ -1,307 +0,0 @@ -/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_float.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "floating point" xdr routines used to (de)serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include - -#include "types.h" -#include "xdr.h" - -/* - * NB: Not portable. - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) - -#ifdef vax - -/* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int mantissa: 23; - unsigned int exp : 8; - unsigned int sign : 1; -}; - -/* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; -}; - -#define VAX_SNG_BIAS 0x81 -#define IEEE_SNG_BIAS 0x7f - -static struct sgl_limits { - struct vax_single s; - struct ieee_single ieee; -} sgl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x0, 0xff, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; -#endif /* vax */ - -bool_t -xdr_float(xdrs, fp) - XDR *xdrs; - float *fp; -{ -#ifdef vax - struct ieee_single is; - struct vax_single vs, *vsp; - struct sgl_limits *lim; - int i; -#endif - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vs = *((struct vax_single *)fp); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((vs.mantissa2 == lim->s.mantissa2) && - (vs.exp == lim->s.exp) && - (vs.mantissa1 == lim->s.mantissa1)) { - is = lim->ieee; - goto shipit; - } - } - is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; - shipit: - is.sign = vs.sign; - return (XDR_PUTLONG(xdrs, (long *)&is)); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_PUTLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp = *(int *)fp; - return (XDR_PUTLONG(xdrs, &tmp)); - } - break; -#endif - - case XDR_DECODE: -#ifdef vax - vsp = (struct vax_single *)fp; - if (!XDR_GETLONG(xdrs, (long *)&is)) - return (FALSE); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((is.exp == lim->ieee.exp) && - (is.mantissa == lim->ieee.mantissa)) { - *vsp = lim->s; - goto doneit; - } - } - vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = is.mantissa; - vsp->mantissa1 = (is.mantissa >> 16); - doneit: - vsp->sign = is.sign; - return (TRUE); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_GETLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp; - if (XDR_GETLONG(xdrs, &tmp)) { - *(int *)fp = tmp; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} - -/* - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#ifdef vax -/* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int mantissa1 : 20; - unsigned int exp : 11; - unsigned int sign : 1; - unsigned int mantissa2 : 32; -}; - -/* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; -}; - -#define VAX_DBL_BIAS 0x81 -#define IEEE_DBL_BIAS 0x3ff -#define MASK(nbits) ((1 << nbits) - 1) - -static struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; -} dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; - -#endif /* vax */ - - -bool_t -xdr_double(xdrs, dp) - XDR *xdrs; - double *dp; -{ -#ifdef vax - struct ieee_double id; - struct vax_double vd; - register struct dbl_limits *lim; - int i; -#endif - - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vd = *((struct vax_double *)dp); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((vd.mantissa4 == lim->d.mantissa4) && - (vd.mantissa3 == lim->d.mantissa3) && - (vd.mantissa2 == lim->d.mantissa2) && - (vd.mantissa1 == lim->d.mantissa1) && - (vd.exp == lim->d.exp)) { - id = lim->ieee; - goto shipit; - } - } - id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); - id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | - (vd.mantissa3 << 13) | - ((vd.mantissa4 >> 3) & MASK(13)); - shipit: - id.sign = vd.sign; - dp = (double *)&id; -#endif - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_PUTLONG(xdrs, lp+!LSW) && - XDR_PUTLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - tmp[0] = ip[!LSW]; - tmp[1] = ip[LSW]; - return (XDR_PUTLONG(xdrs, tmp) && - XDR_PUTLONG(xdrs, tmp+1)); - } - break; - - case XDR_DECODE: -#ifdef vax - lp = (long *)&id; - if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) - return (FALSE); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((id.mantissa2 == lim->ieee.mantissa2) && - (id.mantissa1 == lim->ieee.mantissa1) && - (id.exp == lim->ieee.exp)) { - vd = lim->d; - goto doneit; - } - } - vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - vd.mantissa1 = (id.mantissa1 >> 13); - vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | - (id.mantissa2 >> 29); - vd.mantissa3 = (id.mantissa2 >> 13); - vd.mantissa4 = (id.mantissa2 << 3); - doneit: - vd.sign = id.sign; - *dp = *((double *)&vd); - return (TRUE); -#else - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_GETLONG(xdrs, lp+!LSW) && - XDR_GETLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - if (XDR_GETLONG(xdrs, tmp+!LSW) && - XDR_GETLONG(xdrs, tmp+LSW)) { - ip[0] = tmp[0]; - ip[1] = tmp[1]; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} diff --git a/source/wham/src-M/xdrf.org/xdr_float.o b/source/wham/src-M/xdrf.org/xdr_float.o deleted file mode 100644 index ce1fabd..0000000 Binary files a/source/wham/src-M/xdrf.org/xdr_float.o and /dev/null differ diff --git a/source/wham/src-M/xdrf.org/xdr_stdio.c b/source/wham/src-M/xdrf.org/xdr_stdio.c deleted file mode 100644 index 12b1709..0000000 --- a/source/wham/src-M/xdrf.org/xdr_stdio.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr_stdio.c, XDR implementation on standard i/o file. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * This set of routines implements a XDR on a stdio stream. - * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes - * from the stream. - */ - -#include "types.h" -#include -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -# define fflush(s) INTUSE(_IO_fflush) (s) -# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) -# define ftell(s) INTUSE(_IO_ftell) (s) -# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) -#endif - -static bool_t xdrstdio_getlong (XDR *, long *); -static bool_t xdrstdio_putlong (XDR *, const long *); -static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); -static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); -static u_int xdrstdio_getpos (const XDR *); -static bool_t xdrstdio_setpos (XDR *, u_int); -static int32_t *xdrstdio_inline (XDR *, u_int); -static void xdrstdio_destroy (XDR *); -static bool_t xdrstdio_getint32 (XDR *, int32_t *); -static bool_t xdrstdio_putint32 (XDR *, const int32_t *); - -/* - * Ops vector for stdio type XDR - */ -static const struct xdr_ops xdrstdio_ops = -{ - xdrstdio_getlong, /* deserialize a long int */ - xdrstdio_putlong, /* serialize a long int */ - xdrstdio_getbytes, /* deserialize counted bytes */ - xdrstdio_putbytes, /* serialize counted bytes */ - xdrstdio_getpos, /* get offset in the stream */ - xdrstdio_setpos, /* set offset in the stream */ - xdrstdio_inline, /* prime stream for inline macros */ - xdrstdio_destroy, /* destroy stream */ - xdrstdio_getint32, /* deserialize a int */ - xdrstdio_putint32 /* serialize a int */ -}; - -/* - * Initialize a stdio xdr stream. - * Sets the xdr stream handle xdrs for use on the stream file. - * Operation flag is set to op. - */ -void -xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) -{ - xdrs->x_op = op; - /* We have to add the const since the `struct xdr_ops' in `struct XDR' - is not `const'. */ - xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; - xdrs->x_private = (caddr_t) file; - xdrs->x_handy = 0; - xdrs->x_base = 0; -} - -/* - * Destroy a stdio xdr stream. - * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. - */ -static void -xdrstdio_destroy (XDR *xdrs) -{ - (void) fflush ((FILE *) xdrs->x_private); - /* xx should we close the file ?? */ -}; - -static bool_t -xdrstdio_getlong (XDR *xdrs, long *lp) -{ - u_int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *lp = (long) ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putlong (XDR *xdrs, const long *lp) -{ - int32_t mycopy = htonl ((u_int32_t) *lp); - - if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) -{ - if ((len != 0) && (fread (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) -{ - if ((len != 0) && (fwrite (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static u_int -xdrstdio_getpos (const XDR *xdrs) -{ - return (u_int) ftell ((FILE *) xdrs->x_private); -} - -static bool_t -xdrstdio_setpos (XDR *xdrs, u_int pos) -{ - return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; -} - -static int32_t * -xdrstdio_inline (XDR *xdrs, u_int len) -{ - /* - * Must do some work to implement this: must insure - * enough data in the underlying stdio buffer, - * that the buffer is aligned so that we can indirect through a - * long *, and stuff this pointer in xdrs->x_buf. Doing - * a fread or fwrite to a scratch buffer would defeat - * most of the gains to be had here and require storage - * management on this buffer, so we don't do this. - */ - return NULL; -} - -static bool_t -xdrstdio_getint32 (XDR *xdrs, int32_t *ip) -{ - int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *ip = ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) -{ - int32_t mycopy = htonl (*ip); - - ip = &mycopy; - if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/wham/src-M/xdrf.org/xdr_stdio.o b/source/wham/src-M/xdrf.org/xdr_stdio.o deleted file mode 100644 index 6bb7365..0000000 Binary files a/source/wham/src-M/xdrf.org/xdr_stdio.o and /dev/null differ diff --git a/source/wham/src-M/xdrf.org/xdrf.h b/source/wham/src-M/xdrf.org/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/wham/src-M/xdrf.org/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/wham/src-M/xdrf/Makefile b/source/wham/src-M/xdrf/Makefile deleted file mode 100644 index f03276e..0000000 --- a/source/wham/src-M/xdrf/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/wham/src-M/xdrf/Makefile~ b/source/wham/src-M/xdrf/Makefile~ deleted file mode 100644 index 0539995..0000000 --- a/source/wham/src-M/xdrf/Makefile~ +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrfo ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/wham/src-M/xdrf/ftocstr.c b/source/wham/src-M/xdrf/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/wham/src-M/xdrf/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/wham/src-M/xdrf/ftocstr.o b/source/wham/src-M/xdrf/ftocstr.o deleted file mode 100644 index f0102ea..0000000 Binary files a/source/wham/src-M/xdrf/ftocstr.o and /dev/null differ diff --git a/source/wham/src-M/xdrf/libxdrf.a b/source/wham/src-M/xdrf/libxdrf.a deleted file mode 100644 index e3db089..0000000 Binary files a/source/wham/src-M/xdrf/libxdrf.a and /dev/null differ diff --git a/source/wham/src-M/xdrf/libxdrf.m4 b/source/wham/src-M/xdrf/libxdrf.m4 deleted file mode 100644 index aecb5b5..0000000 --- a/source/wham/src-M/xdrf/libxdrf.m4 +++ /dev/null @@ -1,1233 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src-M/xdrf/libxdrf.m4.org b/source/wham/src-M/xdrf/libxdrf.m4.org deleted file mode 100644 index b14b374..0000000 --- a/source/wham/src-M/xdrf/libxdrf.m4.org +++ /dev/null @@ -1,1230 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src-M/xdrf/libxdrf.m4~ b/source/wham/src-M/xdrf/libxdrf.m4~ deleted file mode 100644 index 9fd7f48..0000000 --- a/source/wham/src-M/xdrf/libxdrf.m4~ +++ /dev/null @@ -1,1232 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src-M/xdrf/libxdrf.o b/source/wham/src-M/xdrf/libxdrf.o deleted file mode 100644 index 2b501fa..0000000 Binary files a/source/wham/src-M/xdrf/libxdrf.o and /dev/null differ diff --git a/source/wham/src-M/xdrf/underscore.m4 b/source/wham/src-M/xdrf/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/wham/src-M/xdrf/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/wham/src-M/xdrf/xdrf.h b/source/wham/src-M/xdrf/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/wham/src-M/xdrf/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/wham/src/.readrtns.F.swp b/source/wham/src/.readrtns.F.swp deleted file mode 100644 index ae0379b..0000000 Binary files a/source/wham/src/.readrtns.F.swp and /dev/null differ diff --git a/source/wham/src/CMakeLists.txt b/source/wham/src/CMakeLists.txt new file mode 100644 index 0000000..5a7f7ae --- /dev/null +++ b/source/wham/src/CMakeLists.txt @@ -0,0 +1,281 @@ +# +# CMake project file for WHAM single chain version +# + +enable_language (Fortran) + +#================================ +# Set source file lists +#================================ +set(UNRES_WHAM_SRC0 + wham_multparm.F + bxread.F + xread.F + cxread.F + enecalc1.F + energy_p_new.F + initialize_p.F + molread_zs.F + openunits.F + readrtns.F + arcos.f + cartder.f + cartprint.f + chainbuild.f + geomout.F + icant.f + intcor.f + int_from_cart.f + make_ensemble1.F + matmult.f + misc.f + mygetenv.F + parmread.F + pinorm.f + printmat.f + rescode.f + setup_var.f + slices.F + store_parm.F + timing.F + wham_calc1.F + readrtns_compar.F + readpdb.f + fitsq.f + contact.f + elecont.f + contfunc.f + cont_frag.f + conf_compar.F + match_contact.f + angnorm.f + odlodc.f + promienie.f + qwolynes.f + read_ref_str.F + rmscalc.f + secondary.f + proc_cont.f + define_pairs.f + mysort.f +) + +set(UNRES_WHAM_PP_SRC + bxread.F + chainbuild.F + conf_compar.F + cxread.F + enecalc1.F + energy_p_new.F + geomout.F + initialize_p.F + make_ensemble1.F + molread_zs.F + mygetenv.F + openunits.F + parmread.F + read_ref_str.F + readrtns_compar.F + readrtns.F + slices.F + store_parm.F + timing.F + wham_calc1.F + wham_multparm.F + xread.F + proc_proc.c +) + + +#================================================ +# Set comipiler flags for different sourcefiles +#================================================ +if (Fortran_COMPILER_NAME STREQUAL "ifort") + set(FFLAGS0 "-mcmodel=medium -g -CB -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" ) +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + set(FFLAGS0 "-g -I. -I${CMAKE_CURRENT_SOURCE_DIR}/include_unres" ) +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + + +#========================================= +# Add MPI compiler flags +#========================================= +if(UNRES_WITH_MPI) + set(FFLAGS0 "${FFLAGS0} -I${MPIF_INCLUDE_DIRECTORIES}") +endif(UNRES_WITH_MPI) + +set_property(SOURCE ${UNRES_WHAM_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# WHAM preprocesor flags +#========================================= + +set(CPPFLAGS "PROCOR -DUNRES -DISNAN -DSPLITELE -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" ) + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +#========================================= +# Compiler specific flags +#========================================= + +if (Fortran_COMPILER_NAME STREQUAL "ifort") + # Add ifort preprocessor flags + set(CPPFLAGS "${CPPFLAGS} -DPGI") +elseif (Fortran_COMPILER_NAME STREQUAL "f95") + # Add new gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +elseif (Fortran_COMPILER_NAME STREQUAL "gfortran") + # Add old gfortran flags + set(CPPFLAGS "${CPPFLAGS} -DG77") +endif (Fortran_COMPILER_NAME STREQUAL "ifort") + +#========================================= +# Add MPI preprocessor flags +#========================================= +set(CPPFLAGS "${CPPFLAGS} -DMPI") + +#========================================= +# Add 64-bit specific preprocessor flags +#========================================= +if (architektura STREQUAL "64") + set(CPPFLAGS "${CPPFLAGS} -DAMD64") +endif (architektura STREQUAL "64") + +#========================================= +# Apply preprocesor flags to *.F files +#========================================= +set_property(SOURCE ${UNRES_WHAM_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + +#======================================== +# Setting binary name +#======================================== +set(UNRES_WHAM_BIN "wham_${Fortran_COMPILER_NAME}.exe") + +#========================================= +# cinfo.f stupid workaround for cmake +# - shame on me ]:) +#========================================= +set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "-c" ) +add_executable(compinfo-wham compinfo.c) +set_target_properties(compinfo-wham PROPERTIES OUTPUT_NAME compinfo) + +set(UNRES_CINFO_DIR "${CMAKE_CURRENT_BINARY_DIR}" ) +add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/cinfo.f ${CMAKE_CURRENT_BINARY_DIR}/cinfo.f + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/COMMON.IOUNITS ${CMAKE_CURRENT_BINARY_DIR}/COMMON.IOUNITS + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true + DEPENDS compinfo-wham ) +set_property(SOURCE ${UNRES_CINFO_DIR}/cinfo.f PROPERTY COMPILE_FLAGS ${FFLAGS0} ) + +#========================================= +# Set full unres CSA sources +#========================================= +set(UNRES_WHAM_SRCS ${UNRES_WHAM_SRC0} ${UNRES_CINFO_DIR}/cinfo.f proc_proc.c) + +#========================================= +# Build the binary +#========================================= +add_executable(UNRES_WHAM_BIN ${UNRES_WHAM_SRCS} ) +set_target_properties(UNRES_WHAM_BIN PROPERTIES OUTPUT_NAME ${UNRES_WHAM_BIN}) + +#set_property(TARGET ${UNRES_BIN} PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/unres/MD ) +#add_dependencies (${UNRES_BIN} ${UNRES_XDRFLIB}) + +#========================================= +# Link libraries +#========================================= +# link MPI library (libmpich.a) +target_link_libraries( UNRES_WHAM_BIN ${MPIF_LIBRARIES} ) +# link libxdrf.a +target_link_libraries( UNRES_WHAM_BIN xdrf ) + +#========================================= +# TESTS +#========================================= + +#-- Copy all the data files from the test directory into the source directory +#SET(UNRES_TEST_FILES +# ala10.inp +# ) + +#FOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) +# SET (unres_test_dest "${CMAKE_CURRENT_BINARY_DIR}/${UNRES_TEST_FILE}") +# MESSAGE (STATUS " Copying ${UNRES_TEST_FILE} from ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} to ${unres_test_dest}") +# ADD_CUSTOM_COMMAND ( +# TARGET ${UNRES_BIN} +# POST_BUILD +# COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/examples/unres/MD/ff_gab/${UNRES_TEST_FILE} ${unres_test_dest} +# ) +#ENDFOREACH (UNRES_TEST_FILE ${UNRES_TEST_FILES}) + +#========================================= +# Generate data test files +#========================================= +# test_single_ala.sh +#========================================= + +#FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh +#"#!/bin/sh +#export POT=GB +#export PREFIX=ala10 +#----------------------------------------------------------------------------- +#UNRES_BIN=./${UNRES_BIN} +#----------------------------------------------------------------------------- +#DD=${CMAKE_SOURCE_DIR}/PARAM +#export BONDPAR=$DD/bond.parm +#export THETPAR=$DD/thetaml.5parm +#export ROTPAR=$DD/scgauss.parm +#export TORPAR=$DD/torsion_631Gdp.parm +#export TORDPAR=$DD/torsion_double_631Gdp.parm +#export ELEPAR=$DD/electr_631Gdp.parm +#export SIDEPAR=$DD/sc_GB_opt.1gab_3S_qclass5no310-shan2-sc-16-10-8k +#export FOURIER=$DD/fourier_opt.parm.1igd_hc_iter3_3 +#export SCPPAR=$DD/scp.parm +#export SCCORPAR=$DD/rotcorr_AM1.parm +#export PATTERN=$DD/patterns.cart +#----------------------------------------------------------------------------- +#$UNRES_BIN +#") + +#========================================= +# ala10.inp +#========================================= + +#file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10.inp +#"ala10 unblocked +#SEED=-1111333 MD ONE_LETTER rescale_mode=2 PDBOUT +#nstep=15000 ntwe=100 ntwx=1000 dt=0.1 lang=0 tbf t_bath=300 damax=1.0 & +#reset_moment=1000 reset_vel=1000 MDPDB +#WLONG=1.35279 WSCP=1.59304 WELEC=0.71534 WBOND=1.00000 WANG=1.13873 & +#WSCLOC=0.16258 WTOR=1.98599 WTORD=1.57069 WCORRH=0.42887 WCORR5=0.00000 & +#WCORR6=0.00000 WEL_LOC=0.16036 WTURN3=1.68722 WTURN4=0.66230 WTURN6=0.00000 & +#WVDWPP=0.11371 WHPB=1.00000 & +#CUTOFF=7.00000 WCORR4=0.00000 +#12 +#XAAAAAAAAAAX +# 0 +# 0 +# 90.0000 90.0000 90.0000 90.000 90.000 90.000 90.000 90.000 +# 90.0000 90.0000 +# 180.0000 180.0000 180.0000 180.000 180.000 180.000 180.000 180.000 +# 180.0000 +# 110.0000 110.0000 110.0000 100.000 110.000 100.000 110.000 110.000 +# 110.0000 110.0000 +# -120.0000 -120.0000 -120.000 -120.000 -120.000 -120.000 -120.000 -120.000 +# -120.0000 -120.0000 +#") + + +# Add tests + +#if(NOT UNRES_WITH_MPI) + +# add_test(NAME UNRES_MD_Ala10 COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_single_ala.sh ) + +#endif(NOT UNRES_WITH_MPI) diff --git a/source/wham/src/compinfo.c b/source/wham/src/compinfo.c index 813cf31..e28f686 100644 --- a/source/wham/src/compinfo.c +++ b/source/wham/src/compinfo.c @@ -14,10 +14,10 @@ time_t Tp; in=fopen("cinfo.f","r"); out=fopen("cinfo.f.new","w"); -fgets(buf,498,in); -fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); -fgets(buf,498,in); -sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); +if (fgets(buf,498,in) != NULL) + fprintf(out,"C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C\n"); +if (fgets(buf,498,in) != NULL) + sscanf(&buf[1],"%d %d %d",&iv1,&iv2,&iv3); iv3++; fprintf(out,"C %d %d %d\n",iv1,iv2,iv3); fprintf(out," subroutine cinfo\n"); @@ -26,18 +26,22 @@ fprintf(out," write(iout,*)'++++ Compile info ++++'\n"); fprintf(out," write(iout,*)'Version %d.%-d build %d'\n",iv1,iv2,iv3); uname(&Name); time(&Tp); -system("rm tmptmp; whoami > tmptmp"); +system("whoami > tmptmp"); in1=fopen("tmptmp","r"); -fscanf(in1,"%s",buf1); -fclose(in1); +if (fscanf(in1,"%s",buf1) != EOF) +{ p1=ctime(&Tp); p1[strlen(p1)-1]='\0'; fprintf(out," write(iout,*)'compiled %s'\n",p1); fprintf(out," write(iout,*)'compiled by %s@%s'\n",buf1,Name.nodename); fprintf(out," write(iout,*)'OS name: %s '\n",Name.sysname); fprintf(out," write(iout,*)'OS release: %s '\n",Name.release); -fprintf(out," write(iout,*)'OS version: %s '\n",Name.version); +fprintf(out," write(iout,*)'OS version:',\n"); +fprintf(out," & ' %s '\n",Name.version); fprintf(out," write(iout,*)'flags:'\n"); +} +system("rm tmptmp"); +fclose(in1); in1=fopen("Makefile","r"); while(fgets(buf,498,in1) != NULL) { @@ -55,8 +59,8 @@ while(fgets(buf,498,in1) != NULL) { strcat(buf,"\\"); fprintf(out," write(iout,*)'%s'\n",buf); - fgets(buf,498,in1); - buf[strlen(buf)-1]='\0'; + if (fgets(buf,498,in1) != NULL) + buf[strlen(buf)-1]='\0'; if(strlen(buf) > 49) { buf[47]='\0'; diff --git a/source/wham/src/energy_p_new.F b/source/wham/src/energy_p_new.F index 4d8977a..dfef8c3 100644 --- a/source/wham/src/energy_p_new.F +++ b/source/wham/src/energy_p_new.F @@ -6322,18 +6322,18 @@ c-------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ /j\ -C / \ / \ -C /| o | | o |\ -C \ j|/k\| / \ |/k\|l / -C \ / \ / \ / \ / -C o o o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ /j\ C +C / \ / \ C +C /| o | | o |\ C +C \ j|/k\| / \ |/k\|l / C +C \ / \ / \ / \ / C +C o o o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC itk=itortyp(itype(k)) s1= scalar2(AEAb1(1,2,imat),CUgb2(1,i)) @@ -6429,18 +6429,18 @@ c---------------------------------------------------------------------------- logical lprn common /kutas/ lprn CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C \ /l\ /j\ / -C \ / \ / \ / -C o| o | | o |o -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C \ /l\ /j\ / C +C \ / \ / \ / C +C o| o | | o |o C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC cd write (2,*) 'eello6_graph2: i,',i,' j',j,' k',k,' l',l C AL 7/4/01 s1 would occur in the sixth-order moment, @@ -6613,18 +6613,18 @@ c---------------------------------------------------------------------------- double precision vv(2),pizda(2,2),auxmat(2,2),auxvec(2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C j|/k\| / |/k\|l / -C / \ / / \ / -C / o / o -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C j|/k\| / |/k\|l / C +C / \ / / \ / C +C / o / o C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective @@ -6731,18 +6731,18 @@ c---------------------------------------------------------------------------- & auxvec1(2),auxmat1(2,2) logical swap CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -C -C Parallel Antiparallel -C -C o o -C /l\ / \ /j\ -C / \ / \ / \ -C /| o |o o| o |\ -C \ j|/k\| \ |/k\|l -C \ / \ \ / \ -C o \ o \ -C i i -C +C C +C Parallel Antiparallel C +C C +C o o C +C /l\ / \ /j\ C +C / \ / \ / \ C +C /| o |o o| o |\ C +C \ j|/k\| \ |/k\|l C +C \ / \ \ / \ C +C o \ o \ C +C i i C +C C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C 4/7/01 AL Component s1 was removed, because it pertains to the respective diff --git a/source/wham/src/err b/source/wham/src/err deleted file mode 100644 index d2249ae..0000000 --- a/source/wham/src/err +++ /dev/null @@ -1,471 +0,0 @@ - mpxlf90 -qlistopt -qfixed -w -c -q64 -g -C -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN enecalc1.F -"enecalc1.F", line 1.33: 1515-019 (S) Syntax is incorrect. -"enecalc1.F", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 15.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 17.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 19.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 20.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 20.28: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 22.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 23.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 23.27: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 25.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 26.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 29.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 30.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 30.26: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 30.37: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 32.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 33.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 33.29: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 35.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 36.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 36.27: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 38.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 39.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 39.32: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 40.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 41.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 41.24: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 41.30: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 44.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 45.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 47.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 48.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 50.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 51.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 53.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 54.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 54.32: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 56.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 57.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 59.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 60.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 62.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 63.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 65.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 66.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 68.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 69.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 71.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 72.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 74.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 75.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 77.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 78.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 78.46: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 80.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 81.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 83.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 84.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 84.50: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 86.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 87.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 89.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 90.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 90.25: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 92.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 93.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 95.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 96.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 98.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 99.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 101.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 102.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 104.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 105.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 107.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 108.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 110.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 111.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 113.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 114.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 114.24: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS", line 116.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 117.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 119.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 120.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 122.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 123.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 125.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS", line 126.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 8.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 10.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 12.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 14.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 15.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 17.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 18.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 20.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 21.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 21.27: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS.ZSCOPT", line 23.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 23.25: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS.ZSCOPT", line 23.32: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS.ZSCOPT", line 23.40: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS.ZSCOPT", line 25.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 27.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 28.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 30.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 31.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 33.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 34.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 39.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 40.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 40.25: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS.ZSCOPT", line 42.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.ZSCOPT", line 43.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 4.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 10.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 11.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 11.31: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"DIMENSIONS.FREE", line 12.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 13.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 15.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 16.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 17.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"DIMENSIONS.FREE", line 18.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 32.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 33.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 35.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 36.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 37.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 38.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 39.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 40.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 41.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 42.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 43.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 44.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 45.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 46.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 47.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 48.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 49.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 50.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 51.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 52.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 53.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 54.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 55.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 56.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 57.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 58.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 59.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 60.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 61.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 62.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 63.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 64.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 65.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 66.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 67.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 68.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 69.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 70.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 71.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 72.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 73.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 74.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 75.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 76.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 77.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 78.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 79.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 80.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 81.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 83.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 84.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 85.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 86.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 88.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 89.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 91.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 92.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 93.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 95.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 96.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 97.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 98.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 100.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 101.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 103.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 104.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 105.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 106.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 108.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 109.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 111.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 112.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 114.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 115.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 117.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 118.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 119.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 120.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 121.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 122.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 123.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 124.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 125.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 126.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 127.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 128.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 131.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 132.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 133.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 134.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 135.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 136.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 137.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 138.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 139.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 140.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 141.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 143.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 144.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 145.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 146.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 148.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 149.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 151.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 152.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 154.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 155.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 156.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 158.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 159.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 160.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 161.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 162.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 163.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 165.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 166.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 167.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 168.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 169.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 170.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 171.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 173.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 174.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 175.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 176.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 177.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 179.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 180.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 182.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 183.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 185.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 186.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 188.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 189.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 191.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 192.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 194.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 194.20: 1516-050 (S) Expression or initial value must be evaluated at compile time. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 195.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 197.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 198.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 199.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 200.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 202.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 203.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 205.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 206.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 208.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 209.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 210.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 211.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 213.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 215.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 217.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 219.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 221.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 223.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 225.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 226.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 228.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 229.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 231.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 233.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 235.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 237.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 238.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 240.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 241.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 243.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 244.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 246.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 247.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 248.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 249.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 250.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 251.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 252.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 253.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 254.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 255.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 257.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 258.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 259.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 260.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 261.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 262.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 263.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 264.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 265.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 266.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 267.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 268.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 269.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 270.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 271.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 272.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 273.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 274.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 275.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 277.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 278.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 279.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 280.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 282.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"/usr/lpp/ppe.poe/include/thread64/mpif.h", line 283.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 8.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.MPI", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.MPI", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.MPI", line 4.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.CHAIN", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.CHAIN", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.CHAIN", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.CHAIN", line 5.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.CHAIN", line 7.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.IOUNITS", line 11.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.IOUNITS", line 14.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.IOUNITS", line 17.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.IOUNITS", line 20.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.IOUNITS", line 24.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.IOUNITS", line 26.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.IOUNITS", line 28.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.PROTFILES", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.PROTFILES", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.PROTFILES", line 8.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.NAMES", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.NAMES", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.NAMES", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.NAMES", line 4.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.NAMES", line 5.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.NAMES", line 6.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.VAR", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.VAR", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.VAR", line 5.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.VAR", line 9.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.SBRIDGE", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.SBRIDGE", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.SBRIDGE", line 4.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.SBRIDGE", line 6.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.SBRIDGE", line 8.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.SBRIDGE", line 9.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.GEO", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.GEO", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.FFIELD", line 6.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.FFIELD", line 9.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.FFIELD", line 10.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.FFIELD", line 14.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.FFIELD", line 15.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.ENEPS", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.ENEPS", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.ENEPS", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.LOCAL", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.LOCAL", line 4.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.LOCAL", line 7.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.LOCAL", line 11.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.LOCAL", line 15.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.LOCAL", line 16.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.LOCAL", line 19.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.WEIGHTS", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.WEIGHTS", line 5.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.WEIGHTS", line 7.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.WEIGHTS", line 8.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.INTERACT", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.INTERACT", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.INTERACT", line 5.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.INTERACT", line 13.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.INTERACT", line 16.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.INTERACT", line 22.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"./include_unres/COMMON.INTERACT", line 23.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.FREE", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.FREE", line 2.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.FREE", line 5.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.FREE", line 7.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.FREE", line 8.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.ENERGIES", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.ENERGIES", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.ENERGIES", line 4.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.CONTROL", line 1.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.CONTROL", line 3.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"COMMON.CONTROL", line 5.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 26.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 27.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 28.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 29.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 30.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 31.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 32.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 33.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 34.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 35.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 36.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 37.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 38.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 39.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 40.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 41.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 42.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 43.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 44.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 45.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 46.6: 1514-050 (S) Specification statement is out of order. Statement is ignored. -"enecalc1.F", line 57.13: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 74.13: 1512-020 (S) Expression must not appear as input list item. Statement is ignored. -"enecalc1.F", line 75.13: 1512-020 (S) Expression must not appear as input list item. Statement is ignored. -"enecalc1.F", line 76.16: 1512-020 (S) Expression must not appear as input list item. Statement is ignored. -"enecalc1.F", line 76.24: 1512-020 (S) Expression must not appear as input list item. Statement is ignored. -"enecalc1.F", line 77.30: 1512-020 (S) Expression must not appear as input list item. Statement is ignored. -"enecalc1.F", line 81.16: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 85.14: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 87.12: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 98.13: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 105.13: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 106.26: 1513-041 (S) Arguments of the wrong type were specified for the INTRINSIC procedure "dexp". -"enecalc1.F", line 106.38: 1513-041 (S) Arguments of the wrong type were specified for the INTRINSIC procedure "dexp". -"enecalc1.F", line 114.13: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 155.43: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 161.32: 1516-040 (S) Item has not been defined with the EXTERNAL or INTRINSIC attribute. -"enecalc1.F", line 165.35: 1516-040 (S) Item has not been defined with the EXTERNAL or INTRINSIC attribute. -"enecalc1.F", line 181.37: 1516-040 (S) Item has not been defined with the EXTERNAL or INTRINSIC attribute. -"enecalc1.F", line 188.18: 1513-041 (S) Arguments of the wrong type were specified for the INTRINSIC procedure "dabs". -"enecalc1.F", line 205.23: 1511-034 (E) RETURN statement in a main program or function subprogram must not be specified with a value. Value is ignored. -"enecalc1.F", line 209.11: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 211.13: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 230.37: 1516-040 (S) Item has not been defined with the EXTERNAL or INTRINSIC attribute. -"enecalc1.F", line 237.50: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 245.9: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 254.7: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 259.7: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 260.7: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 262.9: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 263.9: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 276.7: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 280.13: 1515-025 (S) Only a name of a variable, array element, or character substring is permitted on the left hand side of an assignment statement. -"enecalc1.F", line 298.13: 1511-034 (E) RETURN statement in a main program or function subprogram must not be specified with a value. Value is ignored. -** _main === End of Compilation 1 === -** write_dbase === End of Compilation 2 === -1501-511 Compilation failed for file enecalc1.F. -make: 1254-004 The error code from the last command is 1. - - -Stop. diff --git a/source/wham/src/log b/source/wham/src/log deleted file mode 100644 index 74330a5..0000000 --- a/source/wham/src/log +++ /dev/null @@ -1,17 +0,0 @@ - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN wham_multparm.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN cxread.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN enecalc.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN energy_p_new.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN initialize_p.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN molread_zs.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN openunits.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN readrtns.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -c arcos.f - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -c cartder.f - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -c cartprint.f - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -c chainbuild.f - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN geomout.F - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -c icant.f - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -c intcor.f - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -c int_from_cart.f - mpxlf90 -qlistopt -qfixed -w -c -q64 -O3 -I./include_unres -WF,-DMPI -WF,-DAIX -WF,-DUNRES -WF,-DSPLITELE -WF,-DPROCOR -WF,-DISNAN make_ensemble.F diff --git a/source/wham/src/proc_proc.c b/source/wham/src/proc_proc.c index 9ef2dff..01c6bba 100644 --- a/source/wham/src/proc_proc.c +++ b/source/wham/src/proc_proc.c @@ -1,5 +1,6 @@ #include #include +#include #ifdef LINUX #ifdef PGI diff --git a/source/wham/src/tmptmp b/source/wham/src/tmptmp deleted file mode 100644 index 54e7a36..0000000 --- a/source/wham/src/tmptmp +++ /dev/null @@ -1 +0,0 @@ -adam diff --git a/source/wham/src/xdrf.org/Makefile b/source/wham/src/xdrf.org/Makefile deleted file mode 100644 index 0af9b06..0000000 --- a/source/wham/src/xdrf.org/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -BGLSYS = /bgl/BlueLight/ppcfloor/bglsys - -CC = xlc -CPPC = xlc - -CFLAGS= -I. -O2 -qarch=440d -qtune=440 - -M4 = m4 -M4FILE = RS6K.m4 - -libxdrf.a: libxdrf.o ftocstr.o xdr_array.o xdr.o xdr_float.o xdr_stdio.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c -# rm -f libxdrf.c - diff --git a/source/wham/src/xdrf.org/RS6K.m4 b/source/wham/src/xdrf.org/RS6K.m4 deleted file mode 100644 index 0331d97..0000000 --- a/source/wham/src/xdrf.org/RS6K.m4 +++ /dev/null @@ -1,20 +0,0 @@ -divert(-1) -undefine(`len') -# -# do nothing special to FORTRAN function names -# -define(`FUNCTION',`$1') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) - diff --git a/source/wham/src/xdrf.org/features.h b/source/wham/src/xdrf.org/features.h deleted file mode 100644 index 5733b9b..0000000 --- a/source/wham/src/xdrf.org/features.h +++ /dev/null @@ -1,334 +0,0 @@ -/* Copyright (C) 1991-1993,1995-2003,2004,2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#ifndef _FEATURES_H -#define _FEATURES_H 1 - -/* These are defined by the user (or the compiler) - to specify the desired environment: - - __STRICT_ANSI__ ISO Standard C. - _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. - _POSIX_SOURCE IEEE Std 1003.1. - _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; - if >=199309L, add IEEE Std 1003.1b-1993; - if >=199506L, add IEEE Std 1003.1c-1995; - if >=200112L, all of IEEE 1003.1-2004 - _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if - Single Unix conformance is wanted, to 600 for the - upcoming sixth revision. - _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. - _LARGEFILE_SOURCE Some more functions for correct standard I/O. - _LARGEFILE64_SOURCE Additional functionality from LFS for large files. - _FILE_OFFSET_BITS=N Select default filesystem interface. - _BSD_SOURCE ISO C, POSIX, and 4.3BSD things. - _SVID_SOURCE ISO C, POSIX, and SVID things. - _GNU_SOURCE All of the above, plus GNU extensions. - _REENTRANT Select additionally reentrant object. - _THREAD_SAFE Same as _REENTRANT, often used by other systems. - _FORTIFY_SOURCE If set to numeric value > 0 additional security - measures are defined, according to level. - - The `-ansi' switch to the GNU C compiler defines __STRICT_ANSI__. - If none of these are defined, the default is to have _SVID_SOURCE, - _BSD_SOURCE, and _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to - 199506L. If more than one of these are defined, they accumulate. - For example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE - together give you ISO C, 1003.1, and 1003.2, but nothing else. - - These are defined by this file and are used by the - header files to decide what to declare or define: - - __USE_ISOC99 Define ISO C99 things. - __USE_POSIX Define IEEE Std 1003.1 things. - __USE_POSIX2 Define IEEE Std 1003.2 things. - __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. - __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. - __USE_XOPEN Define XPG things. - __USE_XOPEN_EXTENDED Define X/Open Unix things. - __USE_UNIX98 Define Single Unix V2 things. - __USE_XOPEN2K Define XPG6 things. - __USE_LARGEFILE Define correct standard I/O things. - __USE_LARGEFILE64 Define LFS things with separate names. - __USE_FILE_OFFSET64 Define 64bit interface as default. - __USE_BSD Define 4.3BSD things. - __USE_SVID Define SVID things. - __USE_MISC Define things common to BSD and System V Unix. - __USE_GNU Define GNU extensions. - __USE_REENTRANT Define reentrant/thread-safe *_r functions. - __USE_FORTIFY_LEVEL Additional security measures used, according to level. - __FAVOR_BSD Favor 4.3BSD things in cases of conflict. - - The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are - defined by this file unconditionally. `__GNU_LIBRARY__' is provided - only for compatibility. All new code should use the other symbols - to test for features. - - All macros listed above as possibly being defined by this file are - explicitly undefined if they are not explicitly defined. - Feature-test macros that are not defined by the user or compiler - but are implied by the other feature-test macros defined (or by the - lack of any definitions) are defined by the file. */ - - -/* Undefine everything, so we get a clean slate. */ -#undef __USE_ISOC99 -#undef __USE_POSIX -#undef __USE_POSIX2 -#undef __USE_POSIX199309 -#undef __USE_POSIX199506 -#undef __USE_XOPEN -#undef __USE_XOPEN_EXTENDED -#undef __USE_UNIX98 -#undef __USE_XOPEN2K -#undef __USE_LARGEFILE -#undef __USE_LARGEFILE64 -#undef __USE_FILE_OFFSET64 -#undef __USE_BSD -#undef __USE_SVID -#undef __USE_MISC -#undef __USE_GNU -#undef __USE_REENTRANT -#undef __USE_FORTIFY_LEVEL -#undef __FAVOR_BSD -#undef __KERNEL_STRICT_NAMES - -/* Suppress kernel-name space pollution unless user expressedly asks - for it. */ -#ifndef _LOOSE_KERNEL_NAMES -# define __KERNEL_STRICT_NAMES -#endif - -/* Always use ISO C things. */ -#define __USE_ANSI 1 - -/* Convenience macros to test the versions of glibc and gcc. - Use them like this: - #if __GNUC_PREREQ (2,8) - ... code requiring gcc 2.8 or later ... - #endif - Note - they won't work for gcc1 or glibc1, since the _MINOR macros - were not defined then. */ -#if defined __GNUC__ && defined __GNUC_MINOR__ -# define __GNUC_PREREQ(maj, min) \ - ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) -#else -# define __GNUC_PREREQ(maj, min) 0 -#endif - - -/* If _BSD_SOURCE was defined by the user, favor BSD over POSIX. */ -#if defined _BSD_SOURCE && \ - !(defined _POSIX_SOURCE || defined _POSIX_C_SOURCE || \ - defined _XOPEN_SOURCE || defined _XOPEN_SOURCE_EXTENDED || \ - defined _GNU_SOURCE || defined _SVID_SOURCE) -# define __FAVOR_BSD 1 -#endif - -/* If _GNU_SOURCE was defined by the user, turn on all the other features. */ -#ifdef _GNU_SOURCE -# undef _ISOC99_SOURCE -# define _ISOC99_SOURCE 1 -# undef _POSIX_SOURCE -# define _POSIX_SOURCE 1 -# undef _POSIX_C_SOURCE -# define _POSIX_C_SOURCE 199506L -# undef _XOPEN_SOURCE -# define _XOPEN_SOURCE 600 -# undef _XOPEN_SOURCE_EXTENDED -# define _XOPEN_SOURCE_EXTENDED 1 -# undef _LARGEFILE64_SOURCE -# define _LARGEFILE64_SOURCE 1 -# undef _BSD_SOURCE -# define _BSD_SOURCE 1 -# undef _SVID_SOURCE -# define _SVID_SOURCE 1 -#endif - -/* If nothing (other than _GNU_SOURCE) is defined, - define _BSD_SOURCE and _SVID_SOURCE. */ -#if (!defined __STRICT_ANSI__ && !defined _ISOC99_SOURCE && \ - !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE && \ - !defined _XOPEN_SOURCE && !defined _XOPEN_SOURCE_EXTENDED && \ - !defined _BSD_SOURCE && !defined _SVID_SOURCE) -# define _BSD_SOURCE 1 -# define _SVID_SOURCE 1 -#endif - -/* This is to enable the ISO C99 extension. Also recognize the old macro - which was used prior to the standard acceptance. This macro will - eventually go away and the features enabled by default once the ISO C99 - standard is widely adopted. */ -#if (defined _ISOC99_SOURCE || defined _ISOC9X_SOURCE \ - || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) -# define __USE_ISOC99 1 -#endif - -/* If none of the ANSI/POSIX macros are defined, use POSIX.1 and POSIX.2 - (and IEEE Std 1003.1b-1993 unless _XOPEN_SOURCE is defined). */ -#if ((!defined __STRICT_ANSI__ || (_XOPEN_SOURCE - 0) >= 500) && \ - !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE) -# define _POSIX_SOURCE 1 -# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500 -# define _POSIX_C_SOURCE 2 -# else -# define _POSIX_C_SOURCE 199506L -# endif -#endif - -#if defined _POSIX_SOURCE || _POSIX_C_SOURCE >= 1 || defined _XOPEN_SOURCE -# define __USE_POSIX 1 -#endif - -#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE -# define __USE_POSIX2 1 -#endif - -#if (_POSIX_C_SOURCE - 0) >= 199309L -# define __USE_POSIX199309 1 -#endif - -#if (_POSIX_C_SOURCE - 0) >= 199506L -# define __USE_POSIX199506 1 -#endif - -#if (_POSIX_C_SOURCE - 0) >= 200112L -# define __USE_XOPEN2K 1 -#endif - -#ifdef _XOPEN_SOURCE -# define __USE_XOPEN 1 -# if (_XOPEN_SOURCE - 0) >= 500 -# define __USE_XOPEN_EXTENDED 1 -# define __USE_UNIX98 1 -# undef _LARGEFILE_SOURCE -# define _LARGEFILE_SOURCE 1 -# if (_XOPEN_SOURCE - 0) >= 600 -# define __USE_XOPEN2K 1 -# undef __USE_ISOC99 -# define __USE_ISOC99 1 -# endif -# else -# ifdef _XOPEN_SOURCE_EXTENDED -# define __USE_XOPEN_EXTENDED 1 -# endif -# endif -#endif - -#ifdef _LARGEFILE_SOURCE -# define __USE_LARGEFILE 1 -#endif - -#ifdef _LARGEFILE64_SOURCE -# define __USE_LARGEFILE64 1 -#endif - -#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 -# define __USE_FILE_OFFSET64 1 -#endif - -#if defined _BSD_SOURCE || defined _SVID_SOURCE -# define __USE_MISC 1 -#endif - -#ifdef _BSD_SOURCE -# define __USE_BSD 1 -#endif - -#ifdef _SVID_SOURCE -# define __USE_SVID 1 -#endif - -#ifdef _GNU_SOURCE -# define __USE_GNU 1 -#endif - -#if defined _REENTRANT || defined _THREAD_SAFE -# define __USE_REENTRANT 1 -#endif - -#if _FORTIFY_SOURCE > 0 && __GNUC_PREREQ (4, 1) && __OPTIMIZE__ > 0 -# if _FORTIFY_SOURCE == 1 -# define __USE_FORTIFY_LEVEL 1 -# elif _FORTIFY_SOURCE > 1 -# define __USE_FORTIFY_LEVEL 2 -# endif -#endif - -/* We do support the IEC 559 math functionality, real and complex. */ -#define __STDC_IEC_559__ 1 -#define __STDC_IEC_559_COMPLEX__ 1 - -/* wchar_t uses ISO 10646-1 (2nd ed., published 2000-09-15) / Unicode 3.1. */ -#define __STDC_ISO_10646__ 200009L - -/* This macro indicates that the installed library is the GNU C Library. - For historic reasons the value now is 6 and this will stay from now - on. The use of this variable is deprecated. Use __GLIBC__ and - __GLIBC_MINOR__ now (see below) when you want to test for a specific - GNU C library version and use the values in to get - the sonames of the shared libraries. */ -#undef __GNU_LIBRARY__ -#define __GNU_LIBRARY__ 6 - -/* Major and minor version number of the GNU C library package. Use - these macros to test for features in specific releases. */ -#define __GLIBC__ 2 -#define __GLIBC_MINOR__ 3 - -#define __GLIBC_PREREQ(maj, min) \ - ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) - -/* Decide whether a compiler supports the long long datatypes. */ -#if defined __GNUC__ \ - || (defined __PGI && defined __i386__ ) \ - || (defined __INTEL_COMPILER && (defined __i386__ || defined __ia64__)) \ - || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L) -# define __GLIBC_HAVE_LONG_LONG 1 -#endif - -/* This is here only because every header file already includes this one. */ -#ifndef __ASSEMBLER__ -# ifndef _SYS_CDEFS_H -# include -# endif - -/* If we don't have __REDIRECT, prototypes will be missing if - __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */ -# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT -# define __USE_LARGEFILE 1 -# define __USE_LARGEFILE64 1 -# endif - -#endif /* !ASSEMBLER */ - -/* Decide whether we can define 'extern inline' functions in headers. */ -#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ - && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ -# define __USE_EXTERN_INLINES 1 -#endif - - -/* This is here only because every header file already includes this one. - Get the definitions of all the appropriate `__stub_FUNCTION' symbols. - contains `#define __stub_FUNCTION' when FUNCTION is a stub - that will always return failure (and set errno to ENOSYS). */ -#include - - -#endif /* features.h */ diff --git a/source/wham/src/xdrf.org/ftocstr.c b/source/wham/src/xdrf.org/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/wham/src/xdrf.org/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/wham/src/xdrf.org/libxdrf.c b/source/wham/src/xdrf.org/libxdrf.c deleted file mode 100644 index 7fce1d1..0000000 --- a/source/wham/src/xdrf.org/libxdrf.c +++ /dev/null @@ -1,1236 +0,0 @@ - - -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* xdrfproc) (int *, void *, int *); - -void -xdrfbool (xdrid, pb, ret) -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -xdrfchar (xdrid, cp, ret) -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -xdrfdouble (xdrid, dp, ret) -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -xdrffloat (xdrid, fp, ret) -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -xdrfint (xdrid, ip, ret) -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -xdrflong (xdrid, lp, ret) -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -xdrfshort (xdrid, sp, ret) -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -xdrfuchar (xdrid, ucp, ret) -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -xdrfulong (xdrid, ulp, ret) -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -xdrfushort (xdrid, usp, ret) -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -xdrf3dfcoord (xdrid, fp, size, precision, ret) -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -xdrfstring (xdrid, sp_ptr, maxsize, ret, sp_len) -int *xdrid, *ret; -char * sp_ptr; int sp_len; -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((sp_len) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, sp_ptr, sp_len)) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( sp_ptr, sp_len, tsp); - cnt += *maxsize; - free(tsp); -} - -void -xdrfwrapstring (xdrid, sp_ptr, ret, sp_len) -int *xdrid, *ret; -char * sp_ptr; int sp_len; -{ - char *tsp; - int maxsize; - maxsize = (sp_len) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, sp_ptr, sp_len)) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( sp_ptr, sp_len, tsp); - cnt += maxsize; - free(tsp); -} - -void -xdrfopaque (xdrid, cp, ccnt, ret) -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -xdrfsetpos (xdrid, pos, ret) -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -xdrf (xdrid, pos) -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -xdrfvector (xdrid, cp, size, elproc, ret) -int *xdrid, *ret; -char *cp; -int *size; -xdrfproc elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -xdrfclose (xdrid, ret) -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -xdrfopen (xdrid, fp_ptr, mode_ptr, ret, fp_len, mode_len) -int *xdrid; -char * fp_ptr; int fp_len; -char * mode_ptr; int mode_len; -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), fp_ptr, fp_len)) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), mode_ptr, - mode_len)) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src/xdrf.org/libxdrf.m4 b/source/wham/src/xdrf.org/libxdrf.m4 deleted file mode 100644 index 8704af2..0000000 --- a/source/wham/src/xdrf.org/libxdrf.m4 +++ /dev/null @@ -1,1234 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -/* #include -#include */ -#include "xdr.h" -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src/xdrf.org/libxdrf.m4.org b/source/wham/src/xdrf.org/libxdrf.m4.org deleted file mode 100644 index b14b374..0000000 --- a/source/wham/src/xdrf.org/libxdrf.m4.org +++ /dev/null @@ -1,1230 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src/xdrf.org/types.h b/source/wham/src/xdrf.org/types.h deleted file mode 100644 index 871f3fd..0000000 --- a/source/wham/src/xdrf.org/types.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -/* fixincludes should not add extern "C" to this file */ -/* - * Rpc additions to - */ -#ifndef _RPC_TYPES_H -#define _RPC_TYPES_H 1 - -typedef int bool_t; -typedef int enum_t; -/* This needs to be changed to uint32_t in the future */ -typedef unsigned long rpcprog_t; -typedef unsigned long rpcvers_t; -typedef unsigned long rpcproc_t; -typedef unsigned long rpcprot_t; -typedef unsigned long rpcport_t; - -#define __dontcare__ -1 - -#ifndef FALSE -# define FALSE (0) -#endif - -#ifndef TRUE -# define TRUE (1) -#endif - -#ifndef NULL -# define NULL 0 -#endif - -#include /* For malloc decl. */ -#define mem_alloc(bsize) malloc(bsize) -/* - * XXX: This must not use the second argument, or code in xdr_array.c needs - * to be modified. - */ -#define mem_free(ptr, bsize) free(ptr) - -#ifndef makedev /* ie, we haven't already included it */ -#include -#endif - -#ifndef __u_char_defined -typedef __u_char u_char; -typedef __u_short u_short; -typedef __u_int u_int; -typedef __u_long u_long; -typedef __quad_t quad_t; -typedef __u_quad_t u_quad_t; -typedef __fsid_t fsid_t; -# define __u_char_defined -#endif -#ifndef __daddr_t_defined -typedef __daddr_t daddr_t; -typedef __caddr_t caddr_t; -# define __daddr_t_defined -#endif - -#include -#include - -#include - -#ifndef INADDR_LOOPBACK -#define INADDR_LOOPBACK (u_long)0x7F000001 -#endif -#ifndef MAXHOSTNAMELEN -#define MAXHOSTNAMELEN 64 -#endif - -#endif /* rpc/types.h */ diff --git a/source/wham/src/xdrf.org/underscore.m4 b/source/wham/src/xdrf.org/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/wham/src/xdrf.org/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/wham/src/xdrf.org/xdr.c b/source/wham/src/xdrf.org/xdr.c deleted file mode 100644 index 33b8544..0000000 --- a/source/wham/src/xdrf.org/xdr.c +++ /dev/null @@ -1,752 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr.c 1.35 87/08/12"; -#endif - -/* - * xdr.c, Generic XDR routines implementation. - * - * Copyright (C) 1986, Sun Microsystems, Inc. - * - * These are the "generic" xdr routines used to serialize and de-serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include -#include -#include - -#include "types.h" -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -#endif - -/* - * constants specific to the xdr "protocol" - */ -#define XDR_FALSE ((long) 0) -#define XDR_TRUE ((long) 1) -#define LASTUNSIGNED ((u_int) 0-1) - -/* - * for unit alignment - */ -static const char xdr_zero[BYTES_PER_XDR_UNIT] = {0, 0, 0, 0}; - -/* - * Free a data structure using XDR - * Not a filter, but a convenient utility nonetheless - */ -void -xdr_free (xdrproc_t proc, char *objp) -{ - XDR x; - - x.x_op = XDR_FREE; - (*proc) (&x, objp); -} - -/* - * XDR nothing - */ -bool_t -xdr_void (void) -{ - return TRUE; -} -INTDEF(xdr_void) - -/* - * XDR integers - */ -bool_t -xdr_int (XDR *xdrs, int *ip) -{ - -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *ip; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ip = (int) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif INT_MAX == LONG_MAX - return INTUSE(xdr_long) (xdrs, (long *) ip); -#elif INT_MAX == SHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) ip); -#else -#error unexpected integer sizes in_xdr_int() -#endif -} -INTDEF(xdr_int) - -/* - * XDR unsigned integers - */ -bool_t -xdr_u_int (XDR *xdrs, u_int *up) -{ -#if UINT_MAX < ULONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * up; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *up = (u_int) (u_long) l; - case XDR_FREE: - return TRUE; - } - return FALSE; -#elif UINT_MAX == ULONG_MAX - return INTUSE(xdr_u_long) (xdrs, (u_long *) up); -#elif UINT_MAX == USHRT_MAX - return INTUSE(xdr_short) (xdrs, (short *) up); -#else -#error unexpected integer sizes in_xdr_u_int() -#endif -} -INTDEF(xdr_u_int) - -/* - * XDR long integers - * The definition of xdr_long() is kept for backward - * compatibility. Instead xdr_int() should be used. - */ -bool_t -xdr_long (XDR *xdrs, long *lp) -{ - - if (xdrs->x_op == XDR_ENCODE - && (sizeof (int32_t) == sizeof (long) - || (int32_t) *lp == *lp)) - return XDR_PUTLONG (xdrs, lp); - - if (xdrs->x_op == XDR_DECODE) - return XDR_GETLONG (xdrs, lp); - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_long) - -/* - * XDR unsigned long integers - * The definition of xdr_u_long() is kept for backward - * compatibility. Instead xdr_u_int() should be used. - */ -bool_t -xdr_u_long (XDR *xdrs, u_long *ulp) -{ - switch (xdrs->x_op) - { - case XDR_DECODE: - { - long int tmp; - - if (XDR_GETLONG (xdrs, &tmp) == FALSE) - return FALSE; - - *ulp = (uint32_t) tmp; - return TRUE; - } - - case XDR_ENCODE: - if (sizeof (uint32_t) != sizeof (u_long) - && (uint32_t) *ulp != *ulp) - return FALSE; - - return XDR_PUTLONG (xdrs, (long *) ulp); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_long) - -/* - * XDR hyper integers - * same as xdr_u_hyper - open coded to save a proc call! - */ -bool_t -xdr_hyper (XDR *xdrs, quad_t *llp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (long) ((*llp) >> 32); - t2 = (long) (*llp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *llp = ((quad_t) t1) << 32; - *llp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_hyper) - - -/* - * XDR hyper integers - * same as xdr_hyper - open coded to save a proc call! - */ -bool_t -xdr_u_hyper (XDR *xdrs, u_quad_t *ullp) -{ - long int t1, t2; - - if (xdrs->x_op == XDR_ENCODE) - { - t1 = (unsigned long) ((*ullp) >> 32); - t2 = (unsigned long) (*ullp); - return (XDR_PUTLONG(xdrs, &t1) && XDR_PUTLONG(xdrs, &t2)); - } - - if (xdrs->x_op == XDR_DECODE) - { - if (!XDR_GETLONG(xdrs, &t1) || !XDR_GETLONG(xdrs, &t2)) - return FALSE; - *ullp = ((u_quad_t) t1) << 32; - *ullp |= (uint32_t) t2; - return TRUE; - } - - if (xdrs->x_op == XDR_FREE) - return TRUE; - - return FALSE; -} -INTDEF(xdr_u_hyper) - -bool_t -xdr_longlong_t (XDR *xdrs, quad_t *llp) -{ - return INTUSE(xdr_hyper) (xdrs, llp); -} - -bool_t -xdr_u_longlong_t (XDR *xdrs, u_quad_t *ullp) -{ - return INTUSE(xdr_u_hyper) (xdrs, ullp); -} - -/* - * XDR short integers - */ -bool_t -xdr_short (XDR *xdrs, short *sp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (long) *sp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *sp = (short) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_short) - -/* - * XDR unsigned short integers - */ -bool_t -xdr_u_short (XDR *xdrs, u_short *usp) -{ - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = (u_long) * usp; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *usp = (u_short) (u_long) l; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_u_short) - - -/* - * XDR a char - */ -bool_t -xdr_char (XDR *xdrs, char *cp) -{ - int i; - - i = (*cp); - if (!INTUSE(xdr_int) (xdrs, &i)) - { - return FALSE; - } - *cp = i; - return TRUE; -} - -/* - * XDR an unsigned char - */ -bool_t -xdr_u_char (XDR *xdrs, u_char *cp) -{ - u_int u; - - u = (*cp); - if (!INTUSE(xdr_u_int) (xdrs, &u)) - { - return FALSE; - } - *cp = u; - return TRUE; -} - -/* - * XDR booleans - */ -bool_t -xdr_bool (XDR *xdrs, bool_t *bp) -{ - long lb; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - lb = *bp ? XDR_TRUE : XDR_FALSE; - return XDR_PUTLONG (xdrs, &lb); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &lb)) - { - return FALSE; - } - *bp = (lb == XDR_FALSE) ? FALSE : TRUE; - return TRUE; - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bool) - -/* - * XDR enumerations - */ -bool_t -xdr_enum (XDR *xdrs, enum_t *ep) -{ - enum sizecheck - { - SIZEVAL - }; /* used to find the size of an enum */ - - /* - * enums are treated as ints - */ - if (sizeof (enum sizecheck) == 4) - { -#if INT_MAX < LONG_MAX - long l; - - switch (xdrs->x_op) - { - case XDR_ENCODE: - l = *ep; - return XDR_PUTLONG (xdrs, &l); - - case XDR_DECODE: - if (!XDR_GETLONG (xdrs, &l)) - { - return FALSE; - } - *ep = l; - case XDR_FREE: - return TRUE; - - } - return FALSE; -#else - return INTUSE(xdr_long) (xdrs, (long *) ep); -#endif - } - else if (sizeof (enum sizecheck) == sizeof (short)) - { - return INTUSE(xdr_short) (xdrs, (short *) ep); - } - else - { - return FALSE; - } -} -INTDEF(xdr_enum) - -/* - * XDR opaque data - * Allows the specification of a fixed size sequence of opaque bytes. - * cp points to the opaque object and cnt gives the byte length. - */ -bool_t -xdr_opaque (XDR *xdrs, caddr_t cp, u_int cnt) -{ - u_int rndup; - static char crud[BYTES_PER_XDR_UNIT]; - - /* - * if no data we are done - */ - if (cnt == 0) - return TRUE; - - /* - * round byte count to full xdr units - */ - rndup = cnt % BYTES_PER_XDR_UNIT; - if (rndup > 0) - rndup = BYTES_PER_XDR_UNIT - rndup; - - switch (xdrs->x_op) - { - case XDR_DECODE: - if (!XDR_GETBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_GETBYTES (xdrs, (caddr_t)crud, rndup); - - case XDR_ENCODE: - if (!XDR_PUTBYTES (xdrs, cp, cnt)) - { - return FALSE; - } - if (rndup == 0) - return TRUE; - return XDR_PUTBYTES (xdrs, xdr_zero, rndup); - - case XDR_FREE: - return TRUE; - } - return FALSE; -} -INTDEF(xdr_opaque) - -/* - * XDR counted bytes - * *cpp is a pointer to the bytes, *sizep is the count. - * If *cpp is NULL maxsize bytes are allocated - */ -bool_t -xdr_bytes (xdrs, cpp, sizep, maxsize) - XDR *xdrs; - char **cpp; - u_int *sizep; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int nodesize; - - /* - * first deal with the length since xdr bytes are counted - */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - nodesize = *sizep; - if ((nodesize > maxsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (nodesize == 0) - { - return TRUE; - } - if (sp == NULL) - { - *cpp = sp = (char *) mem_alloc (nodesize); - } - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_bytes: out of memory\n"); - return FALSE; - } - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, nodesize); - - case XDR_FREE: - if (sp != NULL) - { - mem_free (sp, nodesize); - *cpp = NULL; - } - return TRUE; - } - return FALSE; -} -INTDEF(xdr_bytes) - -/* - * Implemented here due to commonality of the object. - */ -bool_t -xdr_netobj (xdrs, np) - XDR *xdrs; - struct netobj *np; -{ - - return INTUSE(xdr_bytes) (xdrs, &np->n_bytes, &np->n_len, MAX_NETOBJ_SZ); -} -INTDEF(xdr_netobj) - -/* - * XDR a discriminated union - * Support routine for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * an entry with a null procedure pointer. The routine gets - * the discriminant value and then searches the array of xdrdiscrims - * looking for that value. It calls the procedure given in the xdrdiscrim - * to handle the discriminant. If there is no specific routine a default - * routine may be called. - * If there is no specific or default routine an error is returned. - */ -bool_t -xdr_union (xdrs, dscmp, unp, choices, dfault) - XDR *xdrs; - enum_t *dscmp; /* enum to decide which arm to work on */ - char *unp; /* the union itself */ - const struct xdr_discrim *choices; /* [value, xdr proc] for each arm */ - xdrproc_t dfault; /* default xdr routine */ -{ - enum_t dscm; - - /* - * we deal with the discriminator; it's an enum - */ - if (!INTUSE(xdr_enum) (xdrs, dscmp)) - { - return FALSE; - } - dscm = *dscmp; - - /* - * search choices for a value that matches the discriminator. - * if we find one, execute the xdr routine for that value. - */ - for (; choices->proc != NULL_xdrproc_t; choices++) - { - if (choices->value == dscm) - return (*(choices->proc)) (xdrs, unp, LASTUNSIGNED); - } - - /* - * no match - execute the default xdr routine if there is one - */ - return ((dfault == NULL_xdrproc_t) ? FALSE : - (*dfault) (xdrs, unp, LASTUNSIGNED)); -} -INTDEF(xdr_union) - - -/* - * Non-portable xdr primitives. - * Care should be taken when moving these routines to new architectures. - */ - - -/* - * XDR null terminated ASCII strings - * xdr_string deals with "C strings" - arrays of bytes that are - * terminated by a NULL character. The parameter cpp references a - * pointer to storage; If the pointer is null, then the necessary - * storage is allocated. The last parameter is the max allowed length - * of the string as specified by a protocol. - */ -bool_t -xdr_string (xdrs, cpp, maxsize) - XDR *xdrs; - char **cpp; - u_int maxsize; -{ - char *sp = *cpp; /* sp is the actual string pointer */ - u_int size; - u_int nodesize; - - /* - * first deal with the length since xdr strings are counted-strings - */ - switch (xdrs->x_op) - { - case XDR_FREE: - if (sp == NULL) - { - return TRUE; /* already free */ - } - /* fall through... */ - case XDR_ENCODE: - if (sp == NULL) - return FALSE; - size = strlen (sp); - break; - case XDR_DECODE: - break; - } - if (!INTUSE(xdr_u_int) (xdrs, &size)) - { - return FALSE; - } - if (size > maxsize) - { - return FALSE; - } - nodesize = size + 1; - if (nodesize == 0) - { - /* This means an overflow. It a bug in the caller which - provided a too large maxsize but nevertheless catch it - here. */ - return FALSE; - } - - /* - * now deal with the actual bytes - */ - switch (xdrs->x_op) - { - case XDR_DECODE: - if (sp == NULL) - *cpp = sp = (char *) mem_alloc (nodesize); - if (sp == NULL) - { - fprintf (NULL, "%s", "xdr_string: out of memory\n"); - return FALSE; - } - sp[size] = 0; - /* fall into ... */ - - case XDR_ENCODE: - return INTUSE(xdr_opaque) (xdrs, sp, size); - - case XDR_FREE: - mem_free (sp, nodesize); - *cpp = NULL; - return TRUE; - } - return FALSE; -} -INTDEF(xdr_string) - -/* - * Wrapper for xdr_string that can be called directly from - * routines like clnt_call - */ -bool_t -xdr_wrapstring (xdrs, cpp) - XDR *xdrs; - char **cpp; -{ - if (INTUSE(xdr_string) (xdrs, cpp, LASTUNSIGNED)) - { - return TRUE; - } - return FALSE; -} diff --git a/source/wham/src/xdrf.org/xdr.h b/source/wham/src/xdrf.org/xdr.h deleted file mode 100644 index 2602ad9..0000000 --- a/source/wham/src/xdrf.org/xdr.h +++ /dev/null @@ -1,379 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr.h, External Data Representation Serialization Routines. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - */ - -#ifndef _RPC_XDR_H -#define _RPC_XDR_H 1 - -#include -#include -#include "types.h" - -/* We need FILE. */ -#include - -__BEGIN_DECLS - -/* - * XDR provides a conventional way for converting between C data - * types and an external bit-string representation. Library supplied - * routines provide for the conversion on built-in C data types. These - * routines and utility routines defined here are used to help implement - * a type encode/decode routine for each user-defined type. - * - * Each data type provides a single procedure which takes two arguments: - * - * bool_t - * xdrproc(xdrs, argresp) - * XDR *xdrs; - * *argresp; - * - * xdrs is an instance of a XDR handle, to which or from which the data - * type is to be converted. argresp is a pointer to the structure to be - * converted. The XDR handle contains an operation field which indicates - * which of the operations (ENCODE, DECODE * or FREE) is to be performed. - * - * XDR_DECODE may allocate space if the pointer argresp is null. This - * data can be freed with the XDR_FREE operation. - * - * We write only one procedure per data type to make it easy - * to keep the encode and decode procedures for a data type consistent. - * In many cases the same code performs all operations on a user defined type, - * because all the hard work is done in the component type routines. - * decode as a series of calls on the nested data types. - */ - -/* - * Xdr operations. XDR_ENCODE causes the type to be encoded into the - * stream. XDR_DECODE causes the type to be extracted from the stream. - * XDR_FREE can be used to release the space allocated by an XDR_DECODE - * request. - */ -enum xdr_op { - XDR_ENCODE = 0, - XDR_DECODE = 1, - XDR_FREE = 2 -}; - -/* - * This is the number of bytes per unit of external data. - */ -#define BYTES_PER_XDR_UNIT (4) -/* - * This only works if the above is a power of 2. But it's defined to be - * 4 by the appropriate RFCs. So it will work. And it's normally quicker - * than the old routine. - */ -#if 1 -#define RNDUP(x) (((x) + BYTES_PER_XDR_UNIT - 1) & ~(BYTES_PER_XDR_UNIT - 1)) -#else /* this is the old routine */ -#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) / BYTES_PER_XDR_UNIT) \ - * BYTES_PER_XDR_UNIT) -#endif - -/* - * The XDR handle. - * Contains operation which is being applied to the stream, - * an operations vector for the particular implementation (e.g. see xdr_mem.c), - * and two private fields for the use of the particular implementation. - */ -typedef struct XDR XDR; -struct XDR - { - enum xdr_op x_op; /* operation; fast additional param */ - struct xdr_ops - { - bool_t (*x_getlong) (XDR *__xdrs, long *__lp); - /* get a long from underlying stream */ - bool_t (*x_putlong) (XDR *__xdrs, __const long *__lp); - /* put a long to " */ - bool_t (*x_getbytes) (XDR *__xdrs, caddr_t __addr, u_int __len); - /* get some bytes from " */ - bool_t (*x_putbytes) (XDR *__xdrs, __const char *__addr, u_int __len); - /* put some bytes to " */ - u_int (*x_getpostn) (__const XDR *__xdrs); - /* returns bytes off from beginning */ - bool_t (*x_setpostn) (XDR *__xdrs, u_int __pos); - /* lets you reposition the stream */ - int32_t *(*x_inline) (XDR *__xdrs, u_int __len); - /* buf quick ptr to buffered data */ - void (*x_destroy) (XDR *__xdrs); - /* free privates of this xdr_stream */ - bool_t (*x_getint32) (XDR *__xdrs, int32_t *__ip); - /* get a int from underlying stream */ - bool_t (*x_putint32) (XDR *__xdrs, __const int32_t *__ip); - /* put a int to " */ - } - *x_ops; - caddr_t x_public; /* users' data */ - caddr_t x_private; /* pointer to private data */ - caddr_t x_base; /* private used for position info */ - u_int x_handy; /* extra private word */ - }; - -/* - * A xdrproc_t exists for each data type which is to be encoded or decoded. - * - * The second argument to the xdrproc_t is a pointer to an opaque pointer. - * The opaque pointer generally points to a structure of the data type - * to be decoded. If this pointer is 0, then the type routines should - * allocate dynamic storage of the appropriate size and return it. - * bool_t (*xdrproc_t)(XDR *, caddr_t *); - */ -typedef bool_t (*xdrproc_t) (XDR *, void *,...); - - -/* - * Operations defined on a XDR handle - * - * XDR *xdrs; - * int32_t *int32p; - * long *longp; - * caddr_t addr; - * u_int len; - * u_int pos; - */ -#define XDR_GETINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) -#define xdr_getint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_getint32)(xdrs, int32p) - -#define XDR_PUTINT32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) -#define xdr_putint32(xdrs, int32p) \ - (*(xdrs)->x_ops->x_putint32)(xdrs, int32p) - -#define XDR_GETLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) -#define xdr_getlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_getlong)(xdrs, longp) - -#define XDR_PUTLONG(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) -#define xdr_putlong(xdrs, longp) \ - (*(xdrs)->x_ops->x_putlong)(xdrs, longp) - -#define XDR_GETBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) -#define xdr_getbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_getbytes)(xdrs, addr, len) - -#define XDR_PUTBYTES(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) -#define xdr_putbytes(xdrs, addr, len) \ - (*(xdrs)->x_ops->x_putbytes)(xdrs, addr, len) - -#define XDR_GETPOS(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) -#define xdr_getpos(xdrs) \ - (*(xdrs)->x_ops->x_getpostn)(xdrs) - -#define XDR_SETPOS(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) -#define xdr_setpos(xdrs, pos) \ - (*(xdrs)->x_ops->x_setpostn)(xdrs, pos) - -#define XDR_INLINE(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) -#define xdr_inline(xdrs, len) \ - (*(xdrs)->x_ops->x_inline)(xdrs, len) - -#define XDR_DESTROY(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) -#define xdr_destroy(xdrs) \ - do { \ - if ((xdrs)->x_ops->x_destroy) \ - (*(xdrs)->x_ops->x_destroy)(xdrs); \ - } while (0) - -/* - * Support struct for discriminated unions. - * You create an array of xdrdiscrim structures, terminated with - * a entry with a null procedure pointer. The xdr_union routine gets - * the discriminant value and then searches the array of structures - * for a matching value. If a match is found the associated xdr routine - * is called to handle that part of the union. If there is - * no match, then a default routine may be called. - * If there is no match and no default routine it is an error. - */ -#define NULL_xdrproc_t ((xdrproc_t)0) -struct xdr_discrim -{ - int value; - xdrproc_t proc; -}; - -/* - * Inline routines for fast encode/decode of primitive data types. - * Caveat emptor: these use single memory cycles to get the - * data from the underlying buffer, and will fail to operate - * properly if the data is not aligned. The standard way to use these - * is to say: - * if ((buf = XDR_INLINE(xdrs, count)) == NULL) - * return (FALSE); - * <<< macro calls >>> - * where ``count'' is the number of bytes of data occupied - * by the primitive data types. - * - * N.B. and frozen for all time: each data type here uses 4 bytes - * of external representation. - */ - -#define IXDR_GET_INT32(buf) ((int32_t)ntohl((uint32_t)*(buf)++)) -#define IXDR_PUT_INT32(buf, v) (*(buf)++ = (int32_t)htonl((uint32_t)(v))) -#define IXDR_GET_U_INT32(buf) ((uint32_t)IXDR_GET_INT32(buf)) -#define IXDR_PUT_U_INT32(buf, v) IXDR_PUT_INT32(buf, (int32_t)(v)) - -/* WARNING: The IXDR_*_LONG defines are removed by Sun for new platforms - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ -#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) -#define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) -#define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - - -#define IXDR_GET_BOOL(buf) ((bool_t)IXDR_GET_LONG(buf)) -#define IXDR_GET_ENUM(buf, t) ((t)IXDR_GET_LONG(buf)) -#define IXDR_GET_SHORT(buf) ((short)IXDR_GET_LONG(buf)) -#define IXDR_GET_U_SHORT(buf) ((u_short)IXDR_GET_LONG(buf)) - -#define IXDR_PUT_BOOL(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_ENUM(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) -#define IXDR_PUT_U_SHORT(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - -/* - * These are the "generic" xdr routines. - * None of these can have const applied because it's not possible to - * know whether the call is a read or a write to the passed parameter - * also, the XDR structure is always updated by some of these calls. - */ -extern bool_t xdr_void (void) __THROW; -extern bool_t xdr_short (XDR *__xdrs, short *__sp) __THROW; -extern bool_t xdr_u_short (XDR *__xdrs, u_short *__usp) __THROW; -extern bool_t xdr_int (XDR *__xdrs, int *__ip) __THROW; -extern bool_t xdr_u_int (XDR *__xdrs, u_int *__up) __THROW; -extern bool_t xdr_long (XDR *__xdrs, long *__lp) __THROW; -extern bool_t xdr_u_long (XDR *__xdrs, u_long *__ulp) __THROW; -extern bool_t xdr_hyper (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_hyper (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_longlong_t (XDR *__xdrs, quad_t *__llp) __THROW; -extern bool_t xdr_u_longlong_t (XDR *__xdrs, u_quad_t *__ullp) __THROW; -extern bool_t xdr_int8_t (XDR *__xdrs, int8_t *__ip) __THROW; -extern bool_t xdr_uint8_t (XDR *__xdrs, uint8_t *__up) __THROW; -extern bool_t xdr_int16_t (XDR *__xdrs, int16_t *__ip) __THROW; -extern bool_t xdr_uint16_t (XDR *__xdrs, uint16_t *__up) __THROW; -extern bool_t xdr_int32_t (XDR *__xdrs, int32_t *__ip) __THROW; -extern bool_t xdr_uint32_t (XDR *__xdrs, uint32_t *__up) __THROW; -extern bool_t xdr_int64_t (XDR *__xdrs, int64_t *__ip) __THROW; -extern bool_t xdr_uint64_t (XDR *__xdrs, uint64_t *__up) __THROW; -extern bool_t xdr_quad_t (XDR *__xdrs, quad_t *__ip) __THROW; -extern bool_t xdr_u_quad_t (XDR *__xdrs, u_quad_t *__up) __THROW; -extern bool_t xdr_bool (XDR *__xdrs, bool_t *__bp) __THROW; -extern bool_t xdr_enum (XDR *__xdrs, enum_t *__ep) __THROW; -extern bool_t xdr_array (XDR * _xdrs, caddr_t *__addrp, u_int *__sizep, - u_int __maxsize, u_int __elsize, xdrproc_t __elproc) - __THROW; -extern bool_t xdr_bytes (XDR *__xdrs, char **__cpp, u_int *__sizep, - u_int __maxsize) __THROW; -extern bool_t xdr_opaque (XDR *__xdrs, caddr_t __cp, u_int __cnt) __THROW; -extern bool_t xdr_string (XDR *__xdrs, char **__cpp, u_int __maxsize) __THROW; -extern bool_t xdr_union (XDR *__xdrs, enum_t *__dscmp, char *__unp, - __const struct xdr_discrim *__choices, - xdrproc_t dfault) __THROW; -extern bool_t xdr_char (XDR *__xdrs, char *__cp) __THROW; -extern bool_t xdr_u_char (XDR *__xdrs, u_char *__cp) __THROW; -extern bool_t xdr_vector (XDR *__xdrs, char *__basep, u_int __nelem, - u_int __elemsize, xdrproc_t __xdr_elem) __THROW; -extern bool_t xdr_float (XDR *__xdrs, float *__fp) __THROW; -extern bool_t xdr_double (XDR *__xdrs, double *__dp) __THROW; -extern bool_t xdr_reference (XDR *__xdrs, caddr_t *__xpp, u_int __size, - xdrproc_t __proc) __THROW; -extern bool_t xdr_pointer (XDR *__xdrs, char **__objpp, - u_int __obj_size, xdrproc_t __xdr_obj) __THROW; -extern bool_t xdr_wrapstring (XDR *__xdrs, char **__cpp) __THROW; -extern u_long xdr_sizeof (xdrproc_t, void *) __THROW; - -/* - * Common opaque bytes objects used by many rpc protocols; - * declared here due to commonality. - */ -#define MAX_NETOBJ_SZ 1024 -struct netobj -{ - u_int n_len; - char *n_bytes; -}; -typedef struct netobj netobj; -extern bool_t xdr_netobj (XDR *__xdrs, struct netobj *__np) __THROW; - -/* - * These are the public routines for the various implementations of - * xdr streams. - */ - -/* XDR using memory buffers */ -extern void xdrmem_create (XDR *__xdrs, __const caddr_t __addr, - u_int __size, enum xdr_op __xop) __THROW; - -/* XDR using stdio library */ -extern void xdrstdio_create (XDR *__xdrs, FILE *__file, enum xdr_op __xop) - __THROW; - -/* XDR pseudo records for tcp */ -extern void xdrrec_create (XDR *__xdrs, u_int __sendsize, - u_int __recvsize, caddr_t __tcp_handle, - int (*__readit) (char *, char *, int), - int (*__writeit) (char *, char *, int)) __THROW; - -/* make end of xdr record */ -extern bool_t xdrrec_endofrecord (XDR *__xdrs, bool_t __sendnow) __THROW; - -/* move to beginning of next record */ -extern bool_t xdrrec_skiprecord (XDR *__xdrs) __THROW; - -/* true if no more input */ -extern bool_t xdrrec_eof (XDR *__xdrs) __THROW; - -/* free memory buffers for xdr */ -extern void xdr_free (xdrproc_t __proc, char *__objp) __THROW; - -__END_DECLS - -#endif /* rpc/xdr.h */ diff --git a/source/wham/src/xdrf.org/xdr.o b/source/wham/src/xdrf.org/xdr.o deleted file mode 100644 index 913a61c..0000000 Binary files a/source/wham/src/xdrf.org/xdr.o and /dev/null differ diff --git a/source/wham/src/xdrf.org/xdr_array.c b/source/wham/src/xdrf.org/xdr_array.c deleted file mode 100644 index 836405c..0000000 --- a/source/wham/src/xdrf.org/xdr_array.c +++ /dev/null @@ -1,174 +0,0 @@ -# define INTUSE(name) name -# define INTDEF(name) -/* @(#)xdr_array.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_array.c 1.10 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_array.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "non-trivial" xdr primitives used to serialize and de-serialize - * arrays. See xdr.h for more info on the interface to xdr. - */ - -#include -#include -#include "types.h" -#include "xdr.h" -#include -#include - -#ifdef USE_IN_LIBIO -# include -#endif - -#define LASTUNSIGNED ((u_int)0-1) - - -/* - * XDR an array of arbitrary elements - * *addrp is a pointer to the array, *sizep is the number of elements. - * If addrp is NULL (*sizep * elsize) bytes are allocated. - * elsize is the size (in bytes) of each element, and elproc is the - * xdr procedure to call to handle each element of the array. - */ -bool_t -xdr_array (xdrs, addrp, sizep, maxsize, elsize, elproc) - XDR *xdrs; - caddr_t *addrp; /* array pointer */ - u_int *sizep; /* number of elements */ - u_int maxsize; /* max numberof elements */ - u_int elsize; /* size in bytes of each element */ - xdrproc_t elproc; /* xdr routine to handle each element */ -{ - u_int i; - caddr_t target = *addrp; - u_int c; /* the actual element count */ - bool_t stat = TRUE; - u_int nodesize; - - /* like strings, arrays are really counted arrays */ - if (!INTUSE(xdr_u_int) (xdrs, sizep)) - { - return FALSE; - } - c = *sizep; - /* - * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() - * doesn't actually use its second argument anyway. - */ - if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } - nodesize = c * elsize; - - /* - * if we are deserializing, we may need to allocate an array. - * We also save time by checking for a null array if we are freeing. - */ - if (target == NULL) - switch (xdrs->x_op) - { - case XDR_DECODE: - if (c == 0) - return TRUE; - *addrp = target = mem_alloc (nodesize); - if (target == NULL) - { - fprintf (stderr, "%s", "xdr_array: out of memory\n"); - return FALSE; - } - __bzero (target, nodesize); - break; - - case XDR_FREE: - return TRUE; - default: - break; - } - - /* - * now we xdr each element of array - */ - for (i = 0; (i < c) && stat; i++) - { - stat = (*elproc) (xdrs, target, LASTUNSIGNED); - target += elsize; - } - - /* - * the array may need freeing - */ - if (xdrs->x_op == XDR_FREE) - { - mem_free (*addrp, nodesize); - *addrp = NULL; - } - return stat; -} -INTDEF(xdr_array) - -/* - * xdr_vector(): - * - * XDR a fixed length array. Unlike variable-length arrays, - * the storage of fixed length arrays is static and unfreeable. - * > basep: base of the array - * > size: size of the array - * > elemsize: size of each element - * > xdr_elem: routine to XDR each element - */ -bool_t -xdr_vector (xdrs, basep, nelem, elemsize, xdr_elem) - XDR *xdrs; - char *basep; - u_int nelem; - u_int elemsize; - xdrproc_t xdr_elem; -{ - u_int i; - char *elptr; - - elptr = basep; - for (i = 0; i < nelem; i++) - { - if (!(*xdr_elem) (xdrs, elptr, LASTUNSIGNED)) - { - return FALSE; - } - elptr += elemsize; - } - return TRUE; -} diff --git a/source/wham/src/xdrf.org/xdr_array.o b/source/wham/src/xdrf.org/xdr_array.o deleted file mode 100644 index 7526a6f..0000000 Binary files a/source/wham/src/xdrf.org/xdr_array.o and /dev/null differ diff --git a/source/wham/src/xdrf.org/xdr_float.c b/source/wham/src/xdrf.org/xdr_float.c deleted file mode 100644 index 15d3c88..0000000 --- a/source/wham/src/xdrf.org/xdr_float.c +++ /dev/null @@ -1,307 +0,0 @@ -/* @(#)xdr_float.c 2.1 88/07/29 4.0 RPCSRC */ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ -#if !defined(lint) && defined(SCCSIDS) -static char sccsid[] = "@(#)xdr_float.c 1.12 87/08/11 Copyr 1984 Sun Micro"; -#endif - -/* - * xdr_float.c, Generic XDR routines implementation. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * These are the "floating point" xdr routines used to (de)serialize - * most common data items. See xdr.h for more info on the interface to - * xdr. - */ - -#include -#include - -#include "types.h" -#include "xdr.h" - -/* - * NB: Not portable. - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#define LSW (__FLOAT_WORD_ORDER == __BIG_ENDIAN) - -#ifdef vax - -/* What IEEE single precision floating point looks like on a Vax */ -struct ieee_single { - unsigned int mantissa: 23; - unsigned int exp : 8; - unsigned int sign : 1; -}; - -/* Vax single precision floating point */ -struct vax_single { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; -}; - -#define VAX_SNG_BIAS 0x81 -#define IEEE_SNG_BIAS 0x7f - -static struct sgl_limits { - struct vax_single s; - struct ieee_single ieee; -} sgl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff }, /* Max Vax */ - { 0x0, 0xff, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0 }, /* Min Vax */ - { 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; -#endif /* vax */ - -bool_t -xdr_float(xdrs, fp) - XDR *xdrs; - float *fp; -{ -#ifdef vax - struct ieee_single is; - struct vax_single vs, *vsp; - struct sgl_limits *lim; - int i; -#endif - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vs = *((struct vax_single *)fp); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((vs.mantissa2 == lim->s.mantissa2) && - (vs.exp == lim->s.exp) && - (vs.mantissa1 == lim->s.mantissa1)) { - is = lim->ieee; - goto shipit; - } - } - is.exp = vs.exp - VAX_SNG_BIAS + IEEE_SNG_BIAS; - is.mantissa = (vs.mantissa1 << 16) | vs.mantissa2; - shipit: - is.sign = vs.sign; - return (XDR_PUTLONG(xdrs, (long *)&is)); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_PUTLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp = *(int *)fp; - return (XDR_PUTLONG(xdrs, &tmp)); - } - break; -#endif - - case XDR_DECODE: -#ifdef vax - vsp = (struct vax_single *)fp; - if (!XDR_GETLONG(xdrs, (long *)&is)) - return (FALSE); - for (i = 0, lim = sgl_limits; - i < sizeof(sgl_limits)/sizeof(struct sgl_limits); - i++, lim++) { - if ((is.exp == lim->ieee.exp) && - (is.mantissa == lim->ieee.mantissa)) { - *vsp = lim->s; - goto doneit; - } - } - vsp->exp = is.exp - IEEE_SNG_BIAS + VAX_SNG_BIAS; - vsp->mantissa2 = is.mantissa; - vsp->mantissa1 = (is.mantissa >> 16); - doneit: - vsp->sign = is.sign; - return (TRUE); -#else - if (sizeof(float) == sizeof(long)) - return (XDR_GETLONG(xdrs, (long *)fp)); - else if (sizeof(float) == sizeof(int)) { - long tmp; - if (XDR_GETLONG(xdrs, &tmp)) { - *(int *)fp = tmp; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} - -/* - * This routine works on Suns (Sky / 68000's) and Vaxen. - */ - -#ifdef vax -/* What IEEE double precision floating point looks like on a Vax */ -struct ieee_double { - unsigned int mantissa1 : 20; - unsigned int exp : 11; - unsigned int sign : 1; - unsigned int mantissa2 : 32; -}; - -/* Vax double precision floating point */ -struct vax_double { - unsigned int mantissa1 : 7; - unsigned int exp : 8; - unsigned int sign : 1; - unsigned int mantissa2 : 16; - unsigned int mantissa3 : 16; - unsigned int mantissa4 : 16; -}; - -#define VAX_DBL_BIAS 0x81 -#define IEEE_DBL_BIAS 0x3ff -#define MASK(nbits) ((1 << nbits) - 1) - -static struct dbl_limits { - struct vax_double d; - struct ieee_double ieee; -} dbl_limits[2] = { - {{ 0x7f, 0xff, 0x0, 0xffff, 0xffff, 0xffff }, /* Max Vax */ - { 0x0, 0x7ff, 0x0, 0x0 }}, /* Max IEEE */ - {{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, /* Min Vax */ - { 0x0, 0x0, 0x0, 0x0 }} /* Min IEEE */ -}; - -#endif /* vax */ - - -bool_t -xdr_double(xdrs, dp) - XDR *xdrs; - double *dp; -{ -#ifdef vax - struct ieee_double id; - struct vax_double vd; - register struct dbl_limits *lim; - int i; -#endif - - switch (xdrs->x_op) { - - case XDR_ENCODE: -#ifdef vax - vd = *((struct vax_double *)dp); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((vd.mantissa4 == lim->d.mantissa4) && - (vd.mantissa3 == lim->d.mantissa3) && - (vd.mantissa2 == lim->d.mantissa2) && - (vd.mantissa1 == lim->d.mantissa1) && - (vd.exp == lim->d.exp)) { - id = lim->ieee; - goto shipit; - } - } - id.exp = vd.exp - VAX_DBL_BIAS + IEEE_DBL_BIAS; - id.mantissa1 = (vd.mantissa1 << 13) | (vd.mantissa2 >> 3); - id.mantissa2 = ((vd.mantissa2 & MASK(3)) << 29) | - (vd.mantissa3 << 13) | - ((vd.mantissa4 >> 3) & MASK(13)); - shipit: - id.sign = vd.sign; - dp = (double *)&id; -#endif - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_PUTLONG(xdrs, lp+!LSW) && - XDR_PUTLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - tmp[0] = ip[!LSW]; - tmp[1] = ip[LSW]; - return (XDR_PUTLONG(xdrs, tmp) && - XDR_PUTLONG(xdrs, tmp+1)); - } - break; - - case XDR_DECODE: -#ifdef vax - lp = (long *)&id; - if (!XDR_GETLONG(xdrs, lp++) || !XDR_GETLONG(xdrs, lp)) - return (FALSE); - for (i = 0, lim = dbl_limits; - i < sizeof(dbl_limits)/sizeof(struct dbl_limits); - i++, lim++) { - if ((id.mantissa2 == lim->ieee.mantissa2) && - (id.mantissa1 == lim->ieee.mantissa1) && - (id.exp == lim->ieee.exp)) { - vd = lim->d; - goto doneit; - } - } - vd.exp = id.exp - IEEE_DBL_BIAS + VAX_DBL_BIAS; - vd.mantissa1 = (id.mantissa1 >> 13); - vd.mantissa2 = ((id.mantissa1 & MASK(13)) << 3) | - (id.mantissa2 >> 29); - vd.mantissa3 = (id.mantissa2 >> 13); - vd.mantissa4 = (id.mantissa2 << 3); - doneit: - vd.sign = id.sign; - *dp = *((double *)&vd); - return (TRUE); -#else - if (2*sizeof(long) == sizeof(double)) { - long *lp = (long *)dp; - return (XDR_GETLONG(xdrs, lp+!LSW) && - XDR_GETLONG(xdrs, lp+LSW)); - } else if (2*sizeof(int) == sizeof(double)) { - int *ip = (int *)dp; - long tmp[2]; - if (XDR_GETLONG(xdrs, tmp+!LSW) && - XDR_GETLONG(xdrs, tmp+LSW)) { - ip[0] = tmp[0]; - ip[1] = tmp[1]; - return (TRUE); - } - } - break; -#endif - - case XDR_FREE: - return (TRUE); - } - return (FALSE); -} diff --git a/source/wham/src/xdrf.org/xdr_float.o b/source/wham/src/xdrf.org/xdr_float.o deleted file mode 100644 index ce1fabd..0000000 Binary files a/source/wham/src/xdrf.org/xdr_float.o and /dev/null differ diff --git a/source/wham/src/xdrf.org/xdr_stdio.c b/source/wham/src/xdrf.org/xdr_stdio.c deleted file mode 100644 index 12b1709..0000000 --- a/source/wham/src/xdrf.org/xdr_stdio.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -/* - * xdr_stdio.c, XDR implementation on standard i/o file. - * - * Copyright (C) 1984, Sun Microsystems, Inc. - * - * This set of routines implements a XDR on a stdio stream. - * XDR_ENCODE serializes onto the stream, XDR_DECODE de-serializes - * from the stream. - */ - -#include "types.h" -#include -#include "xdr.h" - -#ifdef USE_IN_LIBIO -# include -# define fflush(s) INTUSE(_IO_fflush) (s) -# define fread(p, m, n, s) INTUSE(_IO_fread) (p, m, n, s) -# define ftell(s) INTUSE(_IO_ftell) (s) -# define fwrite(p, m, n, s) INTUSE(_IO_fwrite) (p, m, n, s) -#endif - -static bool_t xdrstdio_getlong (XDR *, long *); -static bool_t xdrstdio_putlong (XDR *, const long *); -static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int); -static bool_t xdrstdio_putbytes (XDR *, const char *, u_int); -static u_int xdrstdio_getpos (const XDR *); -static bool_t xdrstdio_setpos (XDR *, u_int); -static int32_t *xdrstdio_inline (XDR *, u_int); -static void xdrstdio_destroy (XDR *); -static bool_t xdrstdio_getint32 (XDR *, int32_t *); -static bool_t xdrstdio_putint32 (XDR *, const int32_t *); - -/* - * Ops vector for stdio type XDR - */ -static const struct xdr_ops xdrstdio_ops = -{ - xdrstdio_getlong, /* deserialize a long int */ - xdrstdio_putlong, /* serialize a long int */ - xdrstdio_getbytes, /* deserialize counted bytes */ - xdrstdio_putbytes, /* serialize counted bytes */ - xdrstdio_getpos, /* get offset in the stream */ - xdrstdio_setpos, /* set offset in the stream */ - xdrstdio_inline, /* prime stream for inline macros */ - xdrstdio_destroy, /* destroy stream */ - xdrstdio_getint32, /* deserialize a int */ - xdrstdio_putint32 /* serialize a int */ -}; - -/* - * Initialize a stdio xdr stream. - * Sets the xdr stream handle xdrs for use on the stream file. - * Operation flag is set to op. - */ -void -xdrstdio_create (XDR *xdrs, FILE *file, enum xdr_op op) -{ - xdrs->x_op = op; - /* We have to add the const since the `struct xdr_ops' in `struct XDR' - is not `const'. */ - xdrs->x_ops = (struct xdr_ops *) &xdrstdio_ops; - xdrs->x_private = (caddr_t) file; - xdrs->x_handy = 0; - xdrs->x_base = 0; -} - -/* - * Destroy a stdio xdr stream. - * Cleans up the xdr stream handle xdrs previously set up by xdrstdio_create. - */ -static void -xdrstdio_destroy (XDR *xdrs) -{ - (void) fflush ((FILE *) xdrs->x_private); - /* xx should we close the file ?? */ -}; - -static bool_t -xdrstdio_getlong (XDR *xdrs, long *lp) -{ - u_int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *lp = (long) ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putlong (XDR *xdrs, const long *lp) -{ - int32_t mycopy = htonl ((u_int32_t) *lp); - - if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_getbytes (XDR *xdrs, const caddr_t addr, u_int len) -{ - if ((len != 0) && (fread (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static bool_t -xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len) -{ - if ((len != 0) && (fwrite (addr, (int) len, 1, - (FILE *) xdrs->x_private) != 1)) - return FALSE; - return TRUE; -} - -static u_int -xdrstdio_getpos (const XDR *xdrs) -{ - return (u_int) ftell ((FILE *) xdrs->x_private); -} - -static bool_t -xdrstdio_setpos (XDR *xdrs, u_int pos) -{ - return fseek ((FILE *) xdrs->x_private, (long) pos, 0) < 0 ? FALSE : TRUE; -} - -static int32_t * -xdrstdio_inline (XDR *xdrs, u_int len) -{ - /* - * Must do some work to implement this: must insure - * enough data in the underlying stdio buffer, - * that the buffer is aligned so that we can indirect through a - * long *, and stuff this pointer in xdrs->x_buf. Doing - * a fread or fwrite to a scratch buffer would defeat - * most of the gains to be had here and require storage - * management on this buffer, so we don't do this. - */ - return NULL; -} - -static bool_t -xdrstdio_getint32 (XDR *xdrs, int32_t *ip) -{ - int32_t mycopy; - - if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - *ip = ntohl (mycopy); - return TRUE; -} - -static bool_t -xdrstdio_putint32 (XDR *xdrs, const int32_t *ip) -{ - int32_t mycopy = htonl (*ip); - - ip = &mycopy; - if (fwrite ((caddr_t) ip, 4, 1, (FILE *) xdrs->x_private) != 1) - return FALSE; - return TRUE; -} - -/* libc_hidden_def (xdrstdio_create) */ diff --git a/source/wham/src/xdrf.org/xdr_stdio.o b/source/wham/src/xdrf.org/xdr_stdio.o deleted file mode 100644 index 6bb7365..0000000 Binary files a/source/wham/src/xdrf.org/xdr_stdio.o and /dev/null differ diff --git a/source/wham/src/xdrf.org/xdrf.h b/source/wham/src/xdrf.org/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/wham/src/xdrf.org/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/wham/src/xdrf/Makefile b/source/wham/src/xdrf/Makefile deleted file mode 100644 index f03276e..0000000 --- a/source/wham/src/xdrf/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrf.o ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/wham/src/xdrf/Makefile~ b/source/wham/src/xdrf/Makefile~ deleted file mode 100644 index 0539995..0000000 --- a/source/wham/src/xdrf/Makefile~ +++ /dev/null @@ -1,27 +0,0 @@ -# This make file is part of the xdrf package. -# -# (C) 1995 Frans van Hoesel, hoesel@chem.rug.nl -# -# 2006 modified by Cezary Czaplewski - -# Set C compiler and flags for ARCH -CC = cc -CFLAGS = -O - -M4 = m4 -M4FILE = underscore.m4 - -libxdrf.a: libxdrf.o ftocstr.o - ar cr libxdrf.a $? - -clean: - rm -f libxdrfo ftocstr.o libxdrf.a - -ftocstr.o: ftocstr.c - $(CC) $(CFLAGS) -c ftocstr.c - -libxdrf.o: libxdrf.m4 $(M4FILE) - $(M4) $(M4FILE) libxdrf.m4 > libxdrf.c - $(CC) $(CFLAGS) -c libxdrf.c - rm -f libxdrf.c - diff --git a/source/wham/src/xdrf/ftocstr.c b/source/wham/src/xdrf/ftocstr.c deleted file mode 100644 index ed2113f..0000000 --- a/source/wham/src/xdrf/ftocstr.c +++ /dev/null @@ -1,35 +0,0 @@ - - -int ftocstr(ds, dl, ss, sl) - char *ds, *ss; /* dst, src ptrs */ - int dl; /* dst max len */ - int sl; /* src len */ -{ - char *p; - - for (p = ss + sl; --p >= ss && *p == ' '; ) ; - sl = p - ss + 1; - dl--; - ds[0] = 0; - if (sl > dl) - return 1; - while (sl--) - (*ds++ = *ss++); - *ds = '\0'; - return 0; -} - - -int ctofstr(ds, dl, ss) - char *ds; /* dest space */ - int dl; /* max dest length */ - char *ss; /* src string (0-term) */ -{ - while (dl && *ss) { - *ds++ = *ss++; - dl--; - } - while (dl--) - *ds++ = ' '; - return 0; -} diff --git a/source/wham/src/xdrf/libxdrf.m4 b/source/wham/src/xdrf/libxdrf.m4 deleted file mode 100644 index aecb5b5..0000000 --- a/source/wham/src/xdrf/libxdrf.m4 +++ /dev/null @@ -1,1233 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - type1 = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src/xdrf/libxdrf.m4.org b/source/wham/src/xdrf/libxdrf.m4.org deleted file mode 100644 index b14b374..0000000 --- a/source/wham/src/xdrf/libxdrf.m4.org +++ /dev/null @@ -1,1230 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src/xdrf/libxdrf.m4~ b/source/wham/src/xdrf/libxdrf.m4~ deleted file mode 100644 index 9fd7f48..0000000 --- a/source/wham/src/xdrf/libxdrf.m4~ +++ /dev/null @@ -1,1232 +0,0 @@ -/*____________________________________________________________________________ - | - | libxdrf - portable fortran interface to xdr. some xdr routines - | are C routines for compressed coordinates - | - | version 1.1 - | - | This collection of routines is intended to write and read - | data in a portable way to a file, so data written on one type - | of machine can be read back on a different type. - | - | all fortran routines use an integer 'xdrid', which is an id to the - | current xdr file, and is set by xdrfopen. - | most routines have in integer 'ret' which is the return value. - | The value of 'ret' is zero on failure, and most of the time one - | on succes. - | - | There are three routines useful for C users: - | xdropen(), xdrclose(), xdr3dfcoord(). - | The first two replace xdrstdio_create and xdr_destroy, and *must* be - | used when you plan to use xdr3dfcoord(). (they are also a bit - | easier to interface). For writing data other than compressed coordinates - | you should use the standard C xdr routines (see xdr man page) - | - | xdrfopen(xdrid, filename, mode, ret) - | character *(*) filename - | character *(*) mode - | - | this will open the file with the given filename (string) - | and the given mode, it returns an id in xdrid, which is - | to be used in all other calls to xdrf routines. - | mode is 'w' to create, or update an file, for all other - | values of mode the file is opened for reading - | - | you need to call xdrfclose to flush the output and close - | the file. - | Note that you should not use xdrstdio_create, which comes with the - | standard xdr library - | - | xdrfclose(xdrid, ret) - | flush the data to the file, and closes the file; - | You should not use xdr_destroy (which comes standard with - | the xdr libraries. - | - | xdrfbool(xdrid, bp, ret) - | integer pb - | - | This filter produces values of either 1 or 0 - | - | xdrfchar(xdrid, cp, ret) - | character cp - | - | filter that translate between characters and their xdr representation - | Note that the characters in not compressed and occupies 4 bytes. - | - | xdrfdouble(xdrid, dp, ret) - | double dp - | - | read/write a double. - | - | xdrffloat(xdrid, fp, ret) - | float fp - | - | read/write a float. - | - | xdrfint(xdrid, ip, ret) - | integer ip - | - | read/write integer. - | - | xdrflong(xdrid, lp, ret) - | integer lp - | - | this routine has a possible portablility problem due to 64 bits longs. - | - | xdrfshort(xdrid, sp, ret) - | integer *2 sp - | - | xdrfstring(xdrid, sp, maxsize, ret) - | character *(*) - | integer maxsize - | - | read/write a string, with maximum length given by maxsize - | - | xdrfwrapstring(xdris, sp, ret) - | character *(*) - | - | read/write a string (it is the same as xdrfstring accept that it finds - | the stringlength itself. - | - | xdrfvector(xdrid, cp, size, xdrfproc, ret) - | character *(*) - | integer size - | external xdrfproc - | - | read/write an array pointed to by cp, with number of elements - | defined by 'size'. the routine 'xdrfproc' is the name - | of one of the above routines to read/write data (like xdrfdouble) - | In contrast with the c-version you don't need to specify the - | byte size of an element. - | xdrfstring is not allowed here (it is in the c version) - | - | xdrf3dfcoord(xdrid, fp, size, precision, ret) - | real (*) fp - | real precision - | integer size - | - | this is *NOT* a standard xdr routine. I named it this way, because - | it invites people to use the other xdr routines. - | It is introduced to store specifically 3d coordinates of molecules - | (as found in molecular dynamics) and it writes it in a compressed way. - | It starts by multiplying all numbers by precision and - | rounding the result to integer. effectively converting - | all floating point numbers to fixed point. - | it uses an algorithm for compression that is optimized for - | molecular data, but could be used for other 3d coordinates - | as well. There is subtantial overhead involved, so call this - | routine only if you have a large number of coordinates to read/write - | - | ________________________________________________________________________ - | - | Below are the routines to be used by C programmers. Use the 'normal' - | xdr routines to write integers, floats, etc (see man xdr) - | - | int xdropen(XDR *xdrs, const char *filename, const char *type) - | This will open the file with the given filename and the - | given mode. You should pass it an allocated XDR struct - | in xdrs, to be used in all other calls to xdr routines. - | Mode is 'w' to create, or update an file, and for all - | other values of mode the file is opened for reading. - | You need to call xdrclose to flush the output and close - | the file. - | - | Note that you should not use xdrstdio_create, which - | comes with the standard xdr library. - | - | int xdrclose(XDR *xdrs) - | Flush the data to the file, and close the file; - | You should not use xdr_destroy (which comes standard - | with the xdr libraries). - | - | int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) - | This is \fInot\fR a standard xdr routine. I named it this - | way, because it invites people to use the other xdr - | routines. - | - | (c) 1995 Frans van Hoesel, hoesel@chem.rug.nl -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include "xdrf.h" - -int ftocstr(char *, int, char *, int); -int ctofstr(char *, int, char *); - -#define MAXID 20 -static FILE *xdrfiles[MAXID]; -static XDR *xdridptr[MAXID]; -static char xdrmodes[MAXID]; -static unsigned int cnt; - -typedef void (* FUNCTION(xdrfproc)) (int *, void *, int *); - -void -FUNCTION(xdrfbool) ARGS(`xdrid, pb, ret') -int *xdrid, *ret; -int *pb; -{ - *ret = xdr_bool(xdridptr[*xdrid], (bool_t *) pb); - cnt += sizeof(int); -} - -void -FUNCTION(xdrfchar) ARGS(`xdrid, cp, ret') -int *xdrid, *ret; -char *cp; -{ - *ret = xdr_char(xdridptr[*xdrid], cp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfdouble) ARGS(`xdrid, dp, ret') -int *xdrid, *ret; -double *dp; -{ - *ret = xdr_double(xdridptr[*xdrid], dp); - cnt += sizeof(double); -} - -void -FUNCTION(xdrffloat) ARGS(`xdrid, fp, ret') -int *xdrid, *ret; -float *fp; -{ - *ret = xdr_float(xdridptr[*xdrid], fp); - cnt += sizeof(float); -} - -void -FUNCTION(xdrfint) ARGS(`xdrid, ip, ret') -int *xdrid, *ret; -int *ip; -{ - *ret = xdr_int(xdridptr[*xdrid], ip); - cnt += sizeof(int); -} - -void -FUNCTION(xdrflong) ARGS(`xdrid, lp, ret') -int *xdrid, *ret; -long *lp; -{ - *ret = xdr_long(xdridptr[*xdrid], lp); - cnt += sizeof(long); -} - -void -FUNCTION(xdrfshort) ARGS(`xdrid, sp, ret') -int *xdrid, *ret; -short *sp; -{ - *ret = xdr_short(xdridptr[*xdrid], sp); - cnt += sizeof(sp); -} - -void -FUNCTION(xdrfuchar) ARGS(`xdrid, ucp, ret') -int *xdrid, *ret; -char *ucp; -{ - *ret = xdr_u_char(xdridptr[*xdrid], ucp); - cnt += sizeof(char); -} - -void -FUNCTION(xdrfulong) ARGS(`xdrid, ulp, ret') -int *xdrid, *ret; -unsigned long *ulp; -{ - *ret = xdr_u_long(xdridptr[*xdrid], ulp); - cnt += sizeof(unsigned long); -} - -void -FUNCTION(xdrfushort) ARGS(`xdrid, usp, ret') -int *xdrid, *ret; -unsigned short *usp; -{ - *ret = xdr_u_short(xdridptr[*xdrid], usp); - cnt += sizeof(unsigned short); -} - -void -FUNCTION(xdrf3dfcoord) ARGS(`xdrid, fp, size, precision, ret') -int *xdrid, *ret; -float *fp; -int *size; -float *precision; -{ - *ret = xdr3dfcoord(xdridptr[*xdrid], fp, size, precision); -} - -void -FUNCTION(xdrfstring) ARGS(`xdrid, STRING_ARG(sp), maxsize, ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -int *maxsize; -{ - char *tsp; - - tsp = (char*) malloc(((STRING_LEN(sp)) + 1) * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, *maxsize+1, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int) *maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += *maxsize; - free(tsp); -} - -void -FUNCTION(xdrfwrapstring) ARGS(`xdrid, STRING_ARG(sp), ret') -int *xdrid, *ret; -STRING_ARG_DECL(sp); -{ - char *tsp; - int maxsize; - maxsize = (STRING_LEN(sp)) + 1; - tsp = (char*) malloc(maxsize * sizeof(char)); - if (tsp == NULL) { - *ret = -1; - return; - } - if (ftocstr(tsp, maxsize, STRING_PTR(sp), STRING_LEN(sp))) { - *ret = -1; - free(tsp); - return; - } - *ret = xdr_string(xdridptr[*xdrid], (char **) &tsp, (u_int)maxsize); - ctofstr( STRING_PTR(sp), STRING_LEN(sp), tsp); - cnt += maxsize; - free(tsp); -} - -void -FUNCTION(xdrfopaque) ARGS(`xdrid, cp, ccnt, ret') -int *xdrid, *ret; -caddr_t *cp; -int *ccnt; -{ - *ret = xdr_opaque(xdridptr[*xdrid], (caddr_t)*cp, (u_int)*ccnt); - cnt += *ccnt; -} - -void -FUNCTION(xdrfsetpos) ARGS(`xdrid, pos, ret') -int *xdrid, *ret; -int *pos; -{ - *ret = xdr_setpos(xdridptr[*xdrid], (u_int) *pos); -} - -void -FUNCTION(xdrf) ARGS(`xdrid, pos') -int *xdrid, *pos; -{ - *pos = xdr_getpos(xdridptr[*xdrid]); -} - -void -FUNCTION(xdrfvector) ARGS(`xdrid, cp, size, elproc, ret') -int *xdrid, *ret; -char *cp; -int *size; -FUNCTION(xdrfproc) elproc; -{ - int lcnt; - cnt = 0; - for (lcnt = 0; lcnt < *size; lcnt++) { - elproc(xdrid, (cp+cnt) , ret); - } -} - - -void -FUNCTION(xdrfclose) ARGS(`xdrid, ret') -int *xdrid; -int *ret; -{ - *ret = xdrclose(xdridptr[*xdrid]); - cnt = 0; -} - -void -FUNCTION(xdrfopen) ARGS(`xdrid, STRING_ARG(fp), STRING_ARG(mode), ret') -int *xdrid; -STRING_ARG_DECL(fp); -STRING_ARG_DECL(mode); -int *ret; -{ - char fname[512]; - char fmode[3]; - - if (ftocstr(fname, sizeof(fname), STRING_PTR(fp), STRING_LEN(fp))) { - *ret = 0; - } - if (ftocstr(fmode, sizeof(fmode), STRING_PTR(mode), - STRING_LEN(mode))) { - *ret = 0; - } - - *xdrid = xdropen(NULL, fname, fmode); - if (*xdrid == 0) - *ret = 0; - else - *ret = 1; -} - -/*___________________________________________________________________________ - | - | what follows are the C routines for opening, closing xdr streams - | and the routine to read/write compressed coordinates together - | with some routines to assist in this task (those are marked - | static and cannot be called from user programs) -*/ -#define MAXABS INT_MAX-2 - -#ifndef MIN -#define MIN(x,y) ((x) < (y) ? (x):(y)) -#endif -#ifndef MAX -#define MAX(x,y) ((x) > (y) ? (x):(y)) -#endif -#ifndef SQR -#define SQR(x) ((x)*(x)) -#endif -static int magicints[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, - 80, 101, 128, 161, 203, 256, 322, 406, 512, 645, - 812, 1024, 1290, 1625, 2048, 2580, 3250, 4096, 5060, 6501, - 8192, 10321, 13003, 16384, 20642, 26007, 32768, 41285, 52015, 65536, - 82570, 104031, 131072, 165140, 208063, 262144, 330280, 416127, 524287, 660561, - 832255, 1048576, 1321122, 1664510, 2097152, 2642245, 3329021, 4194304, 5284491, 6658042, - 8388607, 10568983, 13316085, 16777216 }; - -#define FIRSTIDX 9 -/* note that magicints[FIRSTIDX-1] == 0 */ -#define LASTIDX (sizeof(magicints) / sizeof(*magicints)) - - -/*__________________________________________________________________________ - | - | xdropen - open xdr file - | - | This versions differs from xdrstdio_create, because I need to know - | the state of the file (read or write) so I can use xdr3dfcoord - | in eigther read or write mode, and the file descriptor - | so I can close the file (something xdr_destroy doesn't do). - | -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type) { - static int init_done = 0; - enum xdr_op lmode; - const char *type1; - int xdrid; - - if (init_done == 0) { - for (xdrid = 1; xdrid < MAXID; xdrid++) { - xdridptr[xdrid] = NULL; - } - init_done = 1; - } - xdrid = 1; - while (xdrid < MAXID && xdridptr[xdrid] != NULL) { - xdrid++; - } - if (xdrid == MAXID) { - return 0; - } - if (*type == 'w' || *type == 'W') { - type = "w+"; - type1 = "a+"; - lmode = XDR_ENCODE; - } else { - type = "r"; - lmode = XDR_DECODE; - } - xdrfiles[xdrid] = fopen(filename, type1); - if (xdrfiles[xdrid] == NULL) { - xdrs = NULL; - return 0; - } - xdrmodes[xdrid] = *type; - /* next test isn't usefull in the case of C language - * but is used for the Fortran interface - * (C users are expected to pass the address of an already allocated - * XDR staructure) - */ - if (xdrs == NULL) { - xdridptr[xdrid] = (XDR *) malloc(sizeof(XDR)); - xdrstdio_create(xdridptr[xdrid], xdrfiles[xdrid], lmode); - } else { - xdridptr[xdrid] = xdrs; - xdrstdio_create(xdrs, xdrfiles[xdrid], lmode); - } - return xdrid; -} - -/*_________________________________________________________________________ - | - | xdrclose - close a xdr file - | - | This will flush the xdr buffers, and destroy the xdr stream. - | It also closes the associated file descriptor (this is *not* - | done by xdr_destroy). - | -*/ - -int xdrclose(XDR *xdrs) { - int xdrid; - - if (xdrs == NULL) { - fprintf(stderr, "xdrclose: passed a NULL pointer\n"); - exit(1); - } - for (xdrid = 1; xdrid < MAXID; xdrid++) { - if (xdridptr[xdrid] == xdrs) { - - xdr_destroy(xdrs); - fclose(xdrfiles[xdrid]); - xdridptr[xdrid] = NULL; - return 1; - } - } - fprintf(stderr, "xdrclose: no such open xdr file\n"); - exit(1); - -} - -/*____________________________________________________________________________ - | - | sendbits - encode num into buf using the specified number of bits - | - | This routines appends the value of num to the bits already present in - | the array buf. You need to give it the number of bits to use and you - | better make sure that this number of bits is enough to hold the value - | Also num must be positive. - | -*/ - -static void sendbits(int buf[], int num_of_bits, int num) { - - unsigned int cnt, lastbyte; - int lastbits; - unsigned char * cbuf; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = (unsigned int) buf[0]; - lastbits = buf[1]; - lastbyte =(unsigned int) buf[2]; - while (num_of_bits >= 8) { - lastbyte = (lastbyte << 8) | ((num >> (num_of_bits -8)) /* & 0xff*/); - cbuf[cnt++] = lastbyte >> lastbits; - num_of_bits -= 8; - } - if (num_of_bits > 0) { - lastbyte = (lastbyte << num_of_bits) | num; - lastbits += num_of_bits; - if (lastbits >= 8) { - lastbits -= 8; - cbuf[cnt++] = lastbyte >> lastbits; - } - } - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - if (lastbits>0) { - cbuf[cnt] = lastbyte << (8 - lastbits); - } -} - -/*_________________________________________________________________________ - | - | sizeofint - calculate bitsize of an integer - | - | return the number of bits needed to store an integer with given max size - | -*/ - -static int sizeofint(const int size) { - unsigned int num = 1; - int num_of_bits = 0; - - while (size >= num && num_of_bits < 32) { - num_of_bits++; - num <<= 1; - } - return num_of_bits; -} - -/*___________________________________________________________________________ - | - | sizeofints - calculate 'bitsize' of compressed ints - | - | given the number of small unsigned integers and the maximum value - | return the number of bits needed to read or write them with the - | routines receiveints and sendints. You need this parameter when - | calling these routines. Note that for many calls I can use - | the variable 'smallidx' which is exactly the number of bits, and - | So I don't need to call 'sizeofints for those calls. -*/ - -static int sizeofints( const int num_of_ints, unsigned int sizes[]) { - int i, num; - unsigned int num_of_bytes, num_of_bits, bytes[32], bytecnt, tmp; - num_of_bytes = 1; - bytes[0] = 1; - num_of_bits = 0; - for (i=0; i < num_of_ints; i++) { - tmp = 0; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - num = 1; - num_of_bytes--; - while (bytes[num_of_bytes] >= num) { - num_of_bits++; - num *= 2; - } - return num_of_bits + num_of_bytes * 8; - -} - -/*____________________________________________________________________________ - | - | sendints - send a small set of small integers in compressed format - | - | this routine is used internally by xdr3dfcoord, to send a set of - | small integers to the buffer. - | Multiplication with fixed (specified maximum ) sizes is used to get - | to one big, multibyte integer. Allthough the routine could be - | modified to handle sizes bigger than 16777216, or more than just - | a few integers, this is not done, because the gain in compression - | isn't worth the effort. Note that overflowing the multiplication - | or the byte buffer (32 bytes) is unchecked and causes bad results. - | - */ - -static void sendints(int buf[], const int num_of_ints, const int num_of_bits, - unsigned int sizes[], unsigned int nums[]) { - - int i; - unsigned int bytes[32], num_of_bytes, bytecnt, tmp; - - tmp = nums[0]; - num_of_bytes = 0; - do { - bytes[num_of_bytes++] = tmp & 0xff; - tmp >>= 8; - } while (tmp != 0); - - for (i = 1; i < num_of_ints; i++) { - if (nums[i] >= sizes[i]) { - fprintf(stderr,"major breakdown in sendints num %d doesn't " - "match size %d\n", nums[i], sizes[i]); - exit(1); - } - /* use one step multiply */ - tmp = nums[i]; - for (bytecnt = 0; bytecnt < num_of_bytes; bytecnt++) { - tmp = bytes[bytecnt] * sizes[i] + tmp; - bytes[bytecnt] = tmp & 0xff; - tmp >>= 8; - } - while (tmp != 0) { - bytes[bytecnt++] = tmp & 0xff; - tmp >>= 8; - } - num_of_bytes = bytecnt; - } - if (num_of_bits >= num_of_bytes * 8) { - for (i = 0; i < num_of_bytes; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits - num_of_bytes * 8, 0); - } else { - for (i = 0; i < num_of_bytes-1; i++) { - sendbits(buf, 8, bytes[i]); - } - sendbits(buf, num_of_bits- (num_of_bytes -1) * 8, bytes[i]); - } -} - - -/*___________________________________________________________________________ - | - | receivebits - decode number from buf using specified number of bits - | - | extract the number of bits from the array buf and construct an integer - | from it. Return that value. - | -*/ - -static int receivebits(int buf[], int num_of_bits) { - - int cnt, num; - unsigned int lastbits, lastbyte; - unsigned char * cbuf; - int mask = (1 << num_of_bits) -1; - - cbuf = ((unsigned char *)buf) + 3 * sizeof(*buf); - cnt = buf[0]; - lastbits = (unsigned int) buf[1]; - lastbyte = (unsigned int) buf[2]; - - num = 0; - while (num_of_bits >= 8) { - lastbyte = ( lastbyte << 8 ) | cbuf[cnt++]; - num |= (lastbyte >> lastbits) << (num_of_bits - 8); - num_of_bits -=8; - } - if (num_of_bits > 0) { - if (lastbits < num_of_bits) { - lastbits += 8; - lastbyte = (lastbyte << 8) | cbuf[cnt++]; - } - lastbits -= num_of_bits; - num |= (lastbyte >> lastbits) & ((1 << num_of_bits) -1); - } - num &= mask; - buf[0] = cnt; - buf[1] = lastbits; - buf[2] = lastbyte; - return num; -} - -/*____________________________________________________________________________ - | - | receiveints - decode 'small' integers from the buf array - | - | this routine is the inverse from sendints() and decodes the small integers - | written to buf by calculating the remainder and doing divisions with - | the given sizes[]. You need to specify the total number of bits to be - | used from buf in num_of_bits. - | -*/ - -static void receiveints(int buf[], const int num_of_ints, int num_of_bits, - unsigned int sizes[], int nums[]) { - int bytes[32]; - int i, j, num_of_bytes, p, num; - - bytes[1] = bytes[2] = bytes[3] = 0; - num_of_bytes = 0; - while (num_of_bits > 8) { - bytes[num_of_bytes++] = receivebits(buf, 8); - num_of_bits -= 8; - } - if (num_of_bits > 0) { - bytes[num_of_bytes++] = receivebits(buf, num_of_bits); - } - for (i = num_of_ints-1; i > 0; i--) { - num = 0; - for (j = num_of_bytes-1; j >=0; j--) { - num = (num << 8) | bytes[j]; - p = num / sizes[i]; - bytes[j] = p; - num = num - p * sizes[i]; - } - nums[i] = num; - } - nums[0] = bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); -} - -/*____________________________________________________________________________ - | - | xdr3dfcoord - read or write compressed 3d coordinates to xdr file. - | - | this routine reads or writes (depending on how you opened the file with - | xdropen() ) a large number of 3d coordinates (stored in *fp). - | The number of coordinates triplets to write is given by *size. On - | read this number may be zero, in which case it reads as many as were written - | or it may specify the number if triplets to read (which should match the - | number written). - | Compression is achieved by first converting all floating numbers to integer - | using multiplication by *precision and rounding to the nearest integer. - | Then the minimum and maximum value are calculated to determine the range. - | The limited range of integers so found, is used to compress the coordinates. - | In addition the differences between succesive coordinates is calculated. - | If the difference happens to be 'small' then only the difference is saved, - | compressing the data even more. The notion of 'small' is changed dynamically - | and is enlarged or reduced whenever needed or possible. - | Extra compression is achieved in the case of GROMOS and coordinates of - | water molecules. GROMOS first writes out the Oxygen position, followed by - | the two hydrogens. In order to make the differences smaller (and thereby - | compression the data better) the order is changed into first one hydrogen - | then the oxygen, followed by the other hydrogen. This is rather special, but - | it shouldn't harm in the general case. - | - */ - -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) { - - - static int *ip = NULL; - static int oldsize; - static int *buf; - - int minint[3], maxint[3], mindiff, *lip, diff; - int lint1, lint2, lint3, oldlint1, oldlint2, oldlint3, smallidx; - int minidx, maxidx; - unsigned sizeint[3], sizesmall[3], bitsizeint[3], size3, *luip; - int flag, k; - int small, smaller, larger, i, is_small, is_smaller, run, prevrun; - float *lfp, lf; - int tmp, *thiscoord, prevcoord[3]; - unsigned int tmpcoord[30]; - - int bufsize, xdrid, lsize; - unsigned int bitsize; - float inv_precision; - int errval = 1; - - /* find out if xdrs is opened for reading or for writing */ - xdrid = 0; - while (xdridptr[xdrid] != xdrs) { - xdrid++; - if (xdrid >= MAXID) { - fprintf(stderr, "xdr error. no open xdr stream\n"); - exit (1); - } - } - if (xdrmodes[xdrid] == 'w') { - - /* xdrs is open for writing */ - - if (xdr_int(xdrs, size) == 0) - return 0; - size3 = *size * 3; - /* when the number of coordinates is small, don't try to compress; just - * write them as floats using xdr_vector - */ - if (*size <= 9 ) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - /* buf[0-2] are special and do not contain actual data */ - buf[0] = buf[1] = buf[2] = 0; - minint[0] = minint[1] = minint[2] = INT_MAX; - maxint[0] = maxint[1] = maxint[2] = INT_MIN; - prevrun = -1; - lfp = fp; - lip = ip; - mindiff = INT_MAX; - oldlint1 = oldlint2 = oldlint3 = 0; - while(lfp < fp + size3 ) { - /* find nearest integer */ - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint1 = lf; - if (lint1 < minint[0]) minint[0] = lint1; - if (lint1 > maxint[0]) maxint[0] = lint1; - *lip++ = lint1; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint2 = lf; - if (lint2 < minint[1]) minint[1] = lint2; - if (lint2 > maxint[1]) maxint[1] = lint2; - *lip++ = lint2; - lfp++; - if (*lfp >= 0.0) - lf = *lfp * *precision + 0.5; - else - lf = *lfp * *precision - 0.5; - if (fabs(lf) > MAXABS) { - /* scaling would cause overflow */ - errval = 0; - } - lint3 = lf; - if (lint3 < minint[2]) minint[2] = lint3; - if (lint3 > maxint[2]) maxint[2] = lint3; - *lip++ = lint3; - lfp++; - diff = abs(oldlint1-lint1)+abs(oldlint2-lint2)+abs(oldlint3-lint3); - if (diff < mindiff && lfp > fp + 3) - mindiff = diff; - oldlint1 = lint1; - oldlint2 = lint2; - oldlint3 = lint3; - } - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - if ((float)maxint[0] - (float)minint[0] >= MAXABS || - (float)maxint[1] - (float)minint[1] >= MAXABS || - (float)maxint[2] - (float)minint[2] >= MAXABS) { - /* turning value in unsigned by subtracting minint - * would cause overflow - */ - errval = 0; - } - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - lip = ip; - luip = (unsigned int *) ip; - smallidx = FIRSTIDX; - while (smallidx < LASTIDX && magicints[smallidx] < mindiff) { - smallidx++; - } - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - larger = magicints[maxidx] / 2; - i = 0; - while (i < *size) { - is_small = 0; - thiscoord = (int *)(luip) + i * 3; - if (smallidx < maxidx && i >= 1 && - abs(thiscoord[0] - prevcoord[0]) < larger && - abs(thiscoord[1] - prevcoord[1]) < larger && - abs(thiscoord[2] - prevcoord[2]) < larger) { - is_smaller = 1; - } else if (smallidx > minidx) { - is_smaller = -1; - } else { - is_smaller = 0; - } - if (i + 1 < *size) { - if (abs(thiscoord[0] - thiscoord[3]) < small && - abs(thiscoord[1] - thiscoord[4]) < small && - abs(thiscoord[2] - thiscoord[5]) < small) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = thiscoord[3]; - thiscoord[3] = tmp; - tmp = thiscoord[1]; thiscoord[1] = thiscoord[4]; - thiscoord[4] = tmp; - tmp = thiscoord[2]; thiscoord[2] = thiscoord[5]; - thiscoord[5] = tmp; - is_small = 1; - } - - } - tmpcoord[0] = thiscoord[0] - minint[0]; - tmpcoord[1] = thiscoord[1] - minint[1]; - tmpcoord[2] = thiscoord[2] - minint[2]; - if (bitsize == 0) { - sendbits(buf, bitsizeint[0], tmpcoord[0]); - sendbits(buf, bitsizeint[1], tmpcoord[1]); - sendbits(buf, bitsizeint[2], tmpcoord[2]); - } else { - sendints(buf, 3, bitsize, sizeint, tmpcoord); - } - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - thiscoord = thiscoord + 3; - i++; - - run = 0; - if (is_small == 0 && is_smaller == -1) - is_smaller = 0; - while (is_small && run < 8*3) { - if (is_smaller == -1 && ( - SQR(thiscoord[0] - prevcoord[0]) + - SQR(thiscoord[1] - prevcoord[1]) + - SQR(thiscoord[2] - prevcoord[2]) >= smaller * smaller)) { - is_smaller = 0; - } - - tmpcoord[run++] = thiscoord[0] - prevcoord[0] + small; - tmpcoord[run++] = thiscoord[1] - prevcoord[1] + small; - tmpcoord[run++] = thiscoord[2] - prevcoord[2] + small; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - i++; - thiscoord = thiscoord + 3; - is_small = 0; - if (i < *size && - abs(thiscoord[0] - prevcoord[0]) < small && - abs(thiscoord[1] - prevcoord[1]) < small && - abs(thiscoord[2] - prevcoord[2]) < small) { - is_small = 1; - } - } - if (run != prevrun || is_smaller != 0) { - prevrun = run; - sendbits(buf, 1, 1); /* flag the change in run-length */ - sendbits(buf, 5, run+is_smaller+1); - } else { - sendbits(buf, 1, 0); /* flag the fact that runlength did not change */ - } - for (k=0; k < run; k+=3) { - sendints(buf, 3, smallidx, sizesmall, &tmpcoord[k]); - } - if (is_smaller != 0) { - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - smaller = magicints[smallidx-1] / 2; - } else { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx]; - } - } - if (buf[1] != 0) buf[0]++;; - xdr_int(xdrs, &(buf[0])); /* buf[0] holds the length in bytes */ - return errval * (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0])); - } else { - - /* xdrs is open for reading */ - - if (xdr_int(xdrs, &lsize) == 0) - return 0; - if (*size != 0 && lsize != *size) { - fprintf(stderr, "wrong number of coordinates in xdr3dfcoor; " - "%d arg vs %d in file", *size, lsize); - } - *size = lsize; - size3 = *size * 3; - if (*size <= 9) { - return (xdr_vector(xdrs, (char *) fp, size3, sizeof(*fp), - (xdrproc_t)xdr_float)); - } - xdr_float(xdrs, precision); - if (ip == NULL) { - ip = (int *)malloc(size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)malloc(bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } else if (*size > oldsize) { - ip = (int *)realloc(ip, size3 * sizeof(*ip)); - if (ip == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - bufsize = size3 * 1.2; - buf = (int *)realloc(buf, bufsize * sizeof(*buf)); - if (buf == NULL) { - fprintf(stderr,"malloc failed\n"); - exit(1); - } - oldsize = *size; - } - buf[0] = buf[1] = buf[2] = 0; - - xdr_int(xdrs, &(minint[0])); - xdr_int(xdrs, &(minint[1])); - xdr_int(xdrs, &(minint[2])); - - xdr_int(xdrs, &(maxint[0])); - xdr_int(xdrs, &(maxint[1])); - xdr_int(xdrs, &(maxint[2])); - - sizeint[0] = maxint[0] - minint[0]+1; - sizeint[1] = maxint[1] - minint[1]+1; - sizeint[2] = maxint[2] - minint[2]+1; - - /* check if one of the sizes is to big to be multiplied */ - if ((sizeint[0] | sizeint[1] | sizeint[2] ) > 0xffffff) { - bitsizeint[0] = sizeofint(sizeint[0]); - bitsizeint[1] = sizeofint(sizeint[1]); - bitsizeint[2] = sizeofint(sizeint[2]); - bitsize = 0; /* flag the use of large sizes */ - } else { - bitsize = sizeofints(3, sizeint); - } - - xdr_int(xdrs, &smallidx); - maxidx = MIN(LASTIDX, smallidx + 8) ; - minidx = maxidx - 8; /* often this equal smallidx */ - smaller = magicints[MAX(FIRSTIDX, smallidx-1)] / 2; - small = magicints[smallidx] / 2; - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - larger = magicints[maxidx]; - - /* buf[0] holds the length in bytes */ - - if (xdr_int(xdrs, &(buf[0])) == 0) - return 0; - if (xdr_opaque(xdrs, (caddr_t)&(buf[3]), (u_int)buf[0]) == 0) - return 0; - buf[0] = buf[1] = buf[2] = 0; - - lfp = fp; - inv_precision = 1.0 / * precision; - run = 0; - i = 0; - lip = ip; - while ( i < lsize ) { - thiscoord = (int *)(lip) + i * 3; - - if (bitsize == 0) { - thiscoord[0] = receivebits(buf, bitsizeint[0]); - thiscoord[1] = receivebits(buf, bitsizeint[1]); - thiscoord[2] = receivebits(buf, bitsizeint[2]); - } else { - receiveints(buf, 3, bitsize, sizeint, thiscoord); - } - - i++; - thiscoord[0] += minint[0]; - thiscoord[1] += minint[1]; - thiscoord[2] += minint[2]; - - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - - - flag = receivebits(buf, 1); - is_smaller = 0; - if (flag == 1) { - run = receivebits(buf, 5); - is_smaller = run % 3; - run -= is_smaller; - is_smaller--; - } - if (run > 0) { - thiscoord += 3; - for (k = 0; k < run; k+=3) { - receiveints(buf, 3, smallidx, sizesmall, thiscoord); - i++; - thiscoord[0] += prevcoord[0] - small; - thiscoord[1] += prevcoord[1] - small; - thiscoord[2] += prevcoord[2] - small; - if (k == 0) { - /* interchange first with second atom for better - * compression of water molecules - */ - tmp = thiscoord[0]; thiscoord[0] = prevcoord[0]; - prevcoord[0] = tmp; - tmp = thiscoord[1]; thiscoord[1] = prevcoord[1]; - prevcoord[1] = tmp; - tmp = thiscoord[2]; thiscoord[2] = prevcoord[2]; - prevcoord[2] = tmp; - *lfp++ = prevcoord[0] * inv_precision; - *lfp++ = prevcoord[1] * inv_precision; - *lfp++ = prevcoord[2] * inv_precision; - } else { - prevcoord[0] = thiscoord[0]; - prevcoord[1] = thiscoord[1]; - prevcoord[2] = thiscoord[2]; - } - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - } else { - *lfp++ = thiscoord[0] * inv_precision; - *lfp++ = thiscoord[1] * inv_precision; - *lfp++ = thiscoord[2] * inv_precision; - } - smallidx += is_smaller; - if (is_smaller < 0) { - small = smaller; - if (smallidx > FIRSTIDX) { - smaller = magicints[smallidx - 1] /2; - } else { - smaller = 0; - } - } else if (is_smaller > 0) { - smaller = small; - small = magicints[smallidx] / 2; - } - sizesmall[0] = sizesmall[1] = sizesmall[2] = magicints[smallidx] ; - } - } - return 1; -} - - - diff --git a/source/wham/src/xdrf/underscore.m4 b/source/wham/src/xdrf/underscore.m4 deleted file mode 100644 index 4d620a0..0000000 --- a/source/wham/src/xdrf/underscore.m4 +++ /dev/null @@ -1,19 +0,0 @@ -divert(-1) -undefine(`len') -# -# append an underscore to FORTRAN function names -# -define(`FUNCTION',`$1_') -# -# FORTRAN character strings are passed as follows: -# a pointer to the base of the string is passed in the normal -# argument list, and the length is passed by value as an extra -# argument, after all of the other arguments. -# -define(`ARGS',`($1`'undivert(1))') -define(`SAVE',`divert(1)$1`'divert(0)') -define(`STRING_ARG',`$1_ptr`'SAVE(`, $1_len')') -define(`STRING_ARG_DECL',`char * $1_ptr; int $1_len') -define(`STRING_LEN',`$1_len') -define(`STRING_PTR',`$1_ptr') -divert(0) diff --git a/source/wham/src/xdrf/xdrf.h b/source/wham/src/xdrf/xdrf.h deleted file mode 100644 index dedf5a2..0000000 --- a/source/wham/src/xdrf/xdrf.h +++ /dev/null @@ -1,10 +0,0 @@ -/*_________________________________________________________________ - | - | xdrf.h - include file for C routines that want to use the - | functions below. -*/ - -int xdropen(XDR *xdrs, const char *filename, const char *type); -int xdrclose(XDR *xdrs) ; -int xdr3dfcoord(XDR *xdrs, float *fp, int *size, float *precision) ; - diff --git a/source/xdrfpdb/src-M/CMakeLists.txt b/source/xdrfpdb/src-M/CMakeLists.txt new file mode 100644 index 0000000..6346acb --- /dev/null +++ b/source/xdrfpdb/src-M/CMakeLists.txt @@ -0,0 +1,69 @@ +# Set of programs to convert UNRES xdrf format (compressed Cartesian coordinates) to PDF +# or raw-Cartesian format (*.x) or to extract backbone angular coordinates (*.ang) +# The pdb files can be constructed from canonical or MREMD trajectories. +# +# The xdrf library is required +# +# Programs +# +# xdrf2pdb : converts a single cx trajectory file to PDB format +# xdrf2x : converts a single cx trajectory file to raw-coordinate (x) format +# xdrf2ang : extracts backbone angles from a cx trajectory file +# xdrf2pdb-m : converts a selected trajectory of a MREMD run dumpend into a cx file to PDB format +# +# xdrf2pdb1 : converts conformation(s) selected from a wham post-processing run into PDB format +# xdrf2x1 : converts conformation(s) selected from a wham post-processing run into raw (x) format. +# +# 9/23/2010 A. Liwo +# +# CMake file by D. Jagieła +# + +set(UNRES_XDRF_XDRF2PDB_SRC-M + xdrf2pdb.F + geomout.F + misc.f + rescode.f + nazwy.f +) + +set(UNRES_XDRF_XDRF2PDB-M_SRC-M + xdrf2pdb-m.F + geomout.F + misc.f + rescode.f + nazwy.f +) + + +set(UNRES_XDRF_PP_SRC-M + geomout.F + xdrf2pdb.F + xdrf2pdb-m.F + xdrf2x.F +) + +set(CPPFLAGS "PROCOR -DUNRES -DMP -DMPI -DSPLITELE -DNEWUNRES" ) + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +# Apply preprocesor flags to *.F files +set_property(SOURCE ${UNRES_XDRF_PP_SRC-M} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + +#========================================= +# Build the binaries +#========================================= +add_executable(UNRES_XDRF2PDB_BIN-M ${UNRES_XDRF_XDRF2PDB_SRC-M} ) +target_link_libraries(UNRES_XDRF2PDB_BIN-M xdrf ) +set_target_properties(UNRES_XDRF2PDB_BIN-M PROPERTIES OUTPUT_NAME xdrf2pdb ) + +add_executable(UNRES_XDRF2PDBM_BIN-M ${UNRES_XDRF_XDRF2PDB-M_SRC-M} ) +target_link_libraries( UNRES_XDRF2PDBM_BIN-M xdrf ) +set_target_properties(UNRES_XDRF2PDBM_BIN-M PROPERTIES OUTPUT_NAME xdrf2pdb-m ) + diff --git a/source/xdrfpdb/src-M/xdrf2pdb-m.F b/source/xdrfpdb/src-M/xdrf2pdb-m.F index ad4cb10..118148a 100644 --- a/source/xdrfpdb/src-M/xdrf2pdb-m.F +++ b/source/xdrfpdb/src-M/xdrf2pdb-m.F @@ -40,7 +40,8 @@ 10 continue nres=i i=0 - do while (.not.iblnk(sequenc(i+1)(1:1))) +c do while (.not.iblnk(sequenc(i+1)(1:1))) + do while (.not.(iblnk(sequenc(i+1)(1:1))==0) ) i=i+1 enddo nres=i @@ -52,7 +53,8 @@ 11 continue nres=i i=0 - do while (.not.iblnk(sequenc(i+1)(1:1))) +c do while (.not.iblnk(sequenc(i+1)(1:1))) + do while (.not.(iblnk(sequenc(i+1)(1:1))==0)) i=i+1 enddo nres=i diff --git a/source/xdrfpdb/src-M/xdrf2pdb1.f b/source/xdrfpdb/src-M/xdrf2pdb1.f deleted file mode 100644 index f41d0a0..0000000 --- a/source/xdrfpdb/src-M/xdrf2pdb1.f +++ /dev/null @@ -1,139 +0,0 @@ - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.CHAIN' - include 'COMMON.INTERACT' - include 'COMMON.SBRIDGE' - real*4 coord(3,1000) - real*4 prec,potE,efree,rmsdev - real*8 etot - character*80 arg,seqfile,pdbfile - character*3 sequenc(maxres) - character*50 tytul - character*8 onethree,cfreq - character*8 ucase - external ucase - logical oneletter - integer rescode - external rescode - - ifreq=1 - if (iargc().lt.4) then - print '(a)', - & "Usage: xdrf2pdb one/three seqfile cxfile conf [pdbfile]" - stop - endif - call getarg(1,onethree) - onethree = ucase(onethree) - if (onethree.eq.'ONE') then - oneletter = .true. - else if (onethree.eq.'THREE') then - oneletter = .false. - else - print *,"ONE or THREE must be specified" - endif - call getarg(2,seqfile) - open (1,file=seqfile,status='old') - if (oneletter) then - read(1,'(80a1)',end=10,err=10) (sequenc(i)(1:1),i=1,maxres) - 10 continue - nres=i - i=0 - do while (.not.iblnk(sequenc(i+1)(1:1))) - i=i+1 - enddo - nres=i - do i=1,nres - itype(i)=rescode(i,sequenc(i),1) - enddo - else - read(1,'(20(a3,1x))',end=11,err=11) (sequenc(i),i=1,maxres) - 11 continue - nres=i - print *,"nres",nres - do i=1,nres - print *,i," ",sequenc(i) - enddo - print * - i=0 - do while (.not.iblnk(sequenc(i+1)(1:1))) - print *,i+1," ",sequenc(i+1)," ",sequenc(i+1)(1:1) - i=i+1 - enddo - nres=i - print *,"nres",nres - do i=1,nres - itype(i)=rescode(i,sequenc(i),0) - enddo - print *,(itype(i),i=1,nres) - endif - call getarg(3,arg) - iext = index(arg,'.cx') - 1 - if (iext.lt.0) then - print *,"Error - not a cx file" - stop - endif - print *,"arg ",arg - call getarg(4,cfreq) - read (cfreq,*) iconf - print *,"iconf",iconf - if (iargc().gt.4) then - call getarg(5,pdbfile) - else - pdbfile=arg(:iext)//'.pdb' - endif - open(9,file=pdbfile) - nnt = 1 - if (itype(1).eq.21) nnt = 2 - nct=nres - if (itype(nres).eq.21) nct = nres-1 -c if (nct.eq.nres-1) nres=nres-1 -c if (nnt.eq.2) nres=nres-1 - - print *,"nres",nres," nnt",nnt," nct",nct - - call xdrfopen(ixdrf,arg, "r", iret) - print *,"iret",iret - kk = 0 - do while(.true.) - prec=10000.0 - isize=0 - call xdrf3dfcoord(ixdrf, coord, isize, prec, iret) - call xdrfint(ixdrf, nss, iret) - do j=1,nss - call xdrfint(ixdrf, ihpb(j), iret) - call xdrfint(ixdrf, jhpb(j), iret) - enddo - call xdrffloat(ixdrf, potE, iret) - if(iret.eq.0) exit - kk = kk + 1 - call xdrffloat(ixdrf, efree, iret) - call xdrffloat(ixdrf, rmsdev, iret) - call xdrfint(ixdrf, iscor, iret) - if (kk.eq.iconf) then - print *,"pote",pote," efree",efree," rmsdev",rmsdev - - print *,"isize",isize - - if (isize .ne. nres+nct-nnt+1) then - print *,"Error: inconsistent sizes",isize,nres+nct-nnt+1 - endif - do i=1,nres - do j=1,3 - c(j,i)=coord(j,i) - enddo - enddo - ii = 0 - do i=nnt,nct - ii = ii + 1 - do j=1,3 - c(j,i+nres)=coord(j,ii+nres) - enddo - enddo - etot=potE - write (tytul,'(a,i6)') "Structure",kk - call pdbout(etot,tytul,9) - stop - endif - enddo - - end diff --git a/source/xdrfpdb/src/CMakeLists.txt b/source/xdrfpdb/src/CMakeLists.txt new file mode 100644 index 0000000..962d7fa --- /dev/null +++ b/source/xdrfpdb/src/CMakeLists.txt @@ -0,0 +1,117 @@ +# Set of programs to convert UNRES xdrf format (compressed Cartesian coordinates) to PDF +# or raw-Cartesian format (*.x) or to extract backbone angular coordinates (*.ang) +# The pdb files can be constructed from canonical or MREMD trajectories. +# +# The xdrf library is required +# +# Programs +# +# xdrf2pdb : converts a single cx trajectory file to PDB format +# xdrf2x : converts a single cx trajectory file to raw-coordinate (x) format +# xdrf2ang : extracts backbone angles from a cx trajectory file +# xdrf2pdb-m : converts a selected trajectory of a MREMD run dumpend into a cx file to PDB format +# +# xdrf2pdb1 : converts conformation(s) selected from a wham post-processing run into PDB format +# xdrf2x1 : converts conformation(s) selected from a wham post-processing run into raw (x) format. +# +# 9/23/2010 A. Liwo +# +# CMake file by D. Jagieła +# + +set(UNRES_XDRF_XDRF2PDB_SRC + xdrf2pdb.F + geomout.F + misc.f + rescode.f + nazwy.f +) + +set(UNRES_XDRF_XDRF2PDB-M_SRC + xdrf2pdb-m.F + geomout.F + misc.f + rescode.f + nazwy.f +) + + +set(UNRES_XDRF_XDRF2X_SRC + xdrf2x.F +) + + +set(UNRES_XDRF_XDRF2XANG_SRC + xdrf2ang.f + misc.f + rescode.f + nazwy.f + intcor.f + arcos.f +) + +set(UNRES_XDRF_PP_SRC + geomout.F + xdrf2pdb.F + xdrf2pdb-m.F + xdrf2x.F +) + +set(CPPFLAGS "PROCOR -DUNRES -DSPLITELE -DNEWUNRES" ) + +#========================================= +# System specific flags +#========================================= +if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + set(CPPFLAGS "${CPPFLAGS} -DLINUX") +endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + +# Apply preprocesor flags to *.F files +set_property(SOURCE ${UNRES_XDRF_PP_SRC} PROPERTY COMPILE_DEFINITIONS ${CPPFLAGS} ) + + +#========================================= +# Build the binaries +#========================================= +add_executable(xdrf2pdb ${UNRES_XDRF_XDRF2PDB_SRC} ) +target_link_libraries( xdrf2pdb xdrf ) + +add_executable(xdrf2pdb-m ${UNRES_XDRF_XDRF2PDB-M_SRC} ) +target_link_libraries( xdrf2pdb-m xdrf ) + +add_executable(xdrf2x ${UNRES_XDRF_XDRF2X_SRC} ) +target_link_libraries( xdrf2x xdrf ) + +add_executable(xdrf2ang ${UNRES_XDRF_XDRF2XANG_SRC} ) +target_link_libraries( xdrf2ang xdrf ) + + +#========================================= +# TESTS +#========================================= + + +# Create files needed for tests + +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10one.seq +"XAAAAAAAAAAX" +) + +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ala10three.seq +"D Ala Ala Ala Ala Ala Ala Ala Ala Ala Ala D " +) + +file( COPY ${CMAKE_SOURCE_DIR}/ctest/ala10MD.cx + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} ) + + +# Test xdrf2pdb +add_test(NAME XDRF2PDB-one COMMAND xdrf2pdb one ala10one.seq ala10MD.cx ) +add_test(NAME XDRF2PDB-three COMMAND xdrf2pdb three ala10three.seq ala10MD.cx ) + +# Test xdrf2ang +add_test(NAME XDRF2ANG-one COMMAND xdrf2ang one ala10one.seq ala10MD.cx ) +add_test(NAME XDRF2ANG-three COMMAND xdrf2ang three ala10three.seq ala10MD.cx ) + + + diff --git a/source/xdrfpdb/src/Makefile b/source/xdrfpdb/src/Makefile index e379f40..747d0c0 100644 --- a/source/xdrfpdb/src/Makefile +++ b/source/xdrfpdb/src/Makefile @@ -25,7 +25,7 @@ OPT = FFLAGS = -c ${OPT} -CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR -DNEWUNRES +CPPFLAGS = -DNEWUNRES M4 = m4 M4FILE = underscore.m4 diff --git a/source/xdrfpdb/src/xdrf2ang.f b/source/xdrfpdb/src/xdrf2ang.f index 5714f40..f1c8472 100644 --- a/source/xdrfpdb/src/xdrf2ang.f +++ b/source/xdrfpdb/src/xdrf2ang.f @@ -14,7 +14,11 @@ character*8 onethree,cfreq character*8 ucase external ucase +<<<<<<< HEAD logical oneletter,iblnk +======= + logical oneletter, iblnk +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 integer rescode external rescode @@ -48,6 +52,7 @@ nres=i i=0 do while (.not.iblnk(sequenc(i+1)(1:1))) +c do while (.not.(iblnk(sequenc(i+1)(1:1)) == 0) ) i=i+1 enddo nres=i @@ -60,6 +65,7 @@ nres=i i=0 do while (.not.iblnk(sequenc(i+1)(1:1))) +c do while (.not.(iblnk(sequenc(i+1)(1:1)) == 0) ) i=i+1 enddo nres=i diff --git a/source/xdrfpdb/src/xdrf2pdb-m.F b/source/xdrfpdb/src/xdrf2pdb-m.F index edbd0d8..1fbf5af 100644 --- a/source/xdrfpdb/src/xdrf2pdb-m.F +++ b/source/xdrfpdb/src/xdrf2pdb-m.F @@ -13,7 +13,11 @@ character*3 licz character*8 ucase external ucase +<<<<<<< HEAD logical oneletter,iblnk +======= + logical oneletter, iblnk +>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1 integer rescode external rescode @@ -41,6 +45,7 @@ nres=i i=0 do while (.not.iblnk(sequenc(i+1)(1:1))) +c do while (.not.(iblnk(sequenc(i+1)(1:1)) == 0)) i=i+1 enddo nres=i @@ -53,6 +58,7 @@ nres=i i=0 do while (.not.iblnk(sequenc(i+1)(1:1))) +c do while (.not.(iblnk(sequenc(i+1)(1:1)) == 0)) i=i+1 enddo nres=i @@ -98,9 +104,11 @@ c print *,"ifreq",ifreq," ntraj",ntraj," itraj",itraj call xdrffloat(ixdrf, potE, iret) call xdrffloat(ixdrf, uconst, iret) call xdrffloat(ixdrf, t_bath, iret) + print *,"potE",potE," uconst",uconst," t_bath",t_bath #ifdef NEWUNRES call xdrffloat(ixdrf, uconst_back, iret) #endif + print *,"uconst_back",uconst_back call xdrfint(ixdrf, nss, iret) do j=1,nss call xdrfint(ixdrf, ihpb(j), iret) @@ -113,6 +121,7 @@ c print *,"ifreq",ifreq," ntraj",ntraj," itraj",itraj prec=10000.0 isize=0 + print *," call xdrf3coord" call xdrf3dfcoord(ixdrf, coord, isize, prec, iret) diff --git a/source/xdrfpdb/src/xdrf2pdb1.f b/source/xdrfpdb/src/xdrf2pdb1.f deleted file mode 100644 index f41d0a0..0000000 --- a/source/xdrfpdb/src/xdrf2pdb1.f +++ /dev/null @@ -1,139 +0,0 @@ - implicit real*8 (a-h,o-z) - include 'DIMENSIONS' - include 'COMMON.CHAIN' - include 'COMMON.INTERACT' - include 'COMMON.SBRIDGE' - real*4 coord(3,1000) - real*4 prec,potE,efree,rmsdev - real*8 etot - character*80 arg,seqfile,pdbfile - character*3 sequenc(maxres) - character*50 tytul - character*8 onethree,cfreq - character*8 ucase - external ucase - logical oneletter - integer rescode - external rescode - - ifreq=1 - if (iargc().lt.4) then - print '(a)', - & "Usage: xdrf2pdb one/three seqfile cxfile conf [pdbfile]" - stop - endif - call getarg(1,onethree) - onethree = ucase(onethree) - if (onethree.eq.'ONE') then - oneletter = .true. - else if (onethree.eq.'THREE') then - oneletter = .false. - else - print *,"ONE or THREE must be specified" - endif - call getarg(2,seqfile) - open (1,file=seqfile,status='old') - if (oneletter) then - read(1,'(80a1)',end=10,err=10) (sequenc(i)(1:1),i=1,maxres) - 10 continue - nres=i - i=0 - do while (.not.iblnk(sequenc(i+1)(1:1))) - i=i+1 - enddo - nres=i - do i=1,nres - itype(i)=rescode(i,sequenc(i),1) - enddo - else - read(1,'(20(a3,1x))',end=11,err=11) (sequenc(i),i=1,maxres) - 11 continue - nres=i - print *,"nres",nres - do i=1,nres - print *,i," ",sequenc(i) - enddo - print * - i=0 - do while (.not.iblnk(sequenc(i+1)(1:1))) - print *,i+1," ",sequenc(i+1)," ",sequenc(i+1)(1:1) - i=i+1 - enddo - nres=i - print *,"nres",nres - do i=1,nres - itype(i)=rescode(i,sequenc(i),0) - enddo - print *,(itype(i),i=1,nres) - endif - call getarg(3,arg) - iext = index(arg,'.cx') - 1 - if (iext.lt.0) then - print *,"Error - not a cx file" - stop - endif - print *,"arg ",arg - call getarg(4,cfreq) - read (cfreq,*) iconf - print *,"iconf",iconf - if (iargc().gt.4) then - call getarg(5,pdbfile) - else - pdbfile=arg(:iext)//'.pdb' - endif - open(9,file=pdbfile) - nnt = 1 - if (itype(1).eq.21) nnt = 2 - nct=nres - if (itype(nres).eq.21) nct = nres-1 -c if (nct.eq.nres-1) nres=nres-1 -c if (nnt.eq.2) nres=nres-1 - - print *,"nres",nres," nnt",nnt," nct",nct - - call xdrfopen(ixdrf,arg, "r", iret) - print *,"iret",iret - kk = 0 - do while(.true.) - prec=10000.0 - isize=0 - call xdrf3dfcoord(ixdrf, coord, isize, prec, iret) - call xdrfint(ixdrf, nss, iret) - do j=1,nss - call xdrfint(ixdrf, ihpb(j), iret) - call xdrfint(ixdrf, jhpb(j), iret) - enddo - call xdrffloat(ixdrf, potE, iret) - if(iret.eq.0) exit - kk = kk + 1 - call xdrffloat(ixdrf, efree, iret) - call xdrffloat(ixdrf, rmsdev, iret) - call xdrfint(ixdrf, iscor, iret) - if (kk.eq.iconf) then - print *,"pote",pote," efree",efree," rmsdev",rmsdev - - print *,"isize",isize - - if (isize .ne. nres+nct-nnt+1) then - print *,"Error: inconsistent sizes",isize,nres+nct-nnt+1 - endif - do i=1,nres - do j=1,3 - c(j,i)=coord(j,i) - enddo - enddo - ii = 0 - do i=nnt,nct - ii = ii + 1 - do j=1,3 - c(j,i+nres)=coord(j,ii+nres) - enddo - enddo - etot=potE - write (tytul,'(a,i6)') "Structure",kk - call pdbout(etot,tytul,9) - stop - endif - enddo - - end diff --git a/source/xdrfpdb/src/xdrf2x.F b/source/xdrfpdb/src/xdrf2x.F index b6e86cf..24ab39d 100644 --- a/source/xdrfpdb/src/xdrf2x.F +++ b/source/xdrfpdb/src/xdrf2x.F @@ -3,7 +3,8 @@ integer ihpb(100),jhpb(100) character*80 arg,ctime_start /"0"/,ctime_end /"1000000000"/, & cfreq /"1"/ - integer time_start,time_end,freq + integer*4 time_start,time_end,freq +c real time_start,time_end,freq call getarg(1,arg) if (iargc().eq.0) stop @@ -11,13 +12,13 @@ call getarg(2,ctime_start) read (ctime_start,*) time_start else - time_start=0.0d0 + time_start=0 endif if (iargc().gt.2) then call getarg(3,ctime_end) read (ctime_end,*) time_end else - time_end=1.0d10 + time_end=1000000000 endif if (iargc().gt.3) then call getarg(4,cfreq) diff --git a/source/xdrfpdb/src/xdrf2x1.f b/source/xdrfpdb/src/xdrf2x1.f deleted file mode 100644 index 53f8fb0..0000000 --- a/source/xdrfpdb/src/xdrf2x1.f +++ /dev/null @@ -1,67 +0,0 @@ - implicit real*8 (a-h,o-z) - integer ihpb(100),jhpb(100) - real*4 coord(3,1000) - real*4 prec,potE,efree,rmsdev,qfrag(100) - real*8 etot - character*80 arg,xfile - character*8 ucase,cfreq - external ucase - logical oneletter - integer rescode - external rescode - - ifreq=1 - if (iargc().lt.2) then - print '(a)', - & "Usage: xdrf2x1 cxfile conf [pdbfile]" - stop - endif - call getarg(1,arg) - iext = index(arg,'.cx') - 1 - if (iext.lt.0) then - print *,"Error - not a cx file" - stop - endif - print *,"arg ",arg - call getarg(2,cfreq) - read (cfreq,*) iconf - print *,"iconf",iconf - if (iargc().gt.2) then - call getarg(3,pdbfile) - else - xfile=arg(:iext)//'.x' - endif - open(9,file=xfile) - - call xdrfopen(ixdrf,arg, "r", iret) - print *,"iret",iret - kk = 0 - do while(.true.) - prec=10000.0 - isize=0 - call xdrf3dfcoord(ixdrf, coord, isize, prec, iret) - call xdrfint(ixdrf, nss, iret) - do j=1,nss - call xdrfint(ixdrf, ihpb(j), iret) - call xdrfint(ixdrf, jhpb(j), iret) - enddo - call xdrffloat(ixdrf, potE, iret) - if(iret.eq.0) exit - kk = kk + 1 - call xdrffloat(ixdrf, efree, iret) - call xdrffloat(ixdrf, rmsdev, iret) - call xdrfint(ixdrf, iscor, iret) - if (kk.eq.iconf) then - print *,"pote",pote," efree",efree," rmsdev",rmsdev - - print *,"isize",isize - - write (9,'(e15.8,2e15.5,f12.5,$)') time,potE,uconst,t_bath - write (9,'(i4,$)') nss,(ihpb(j),jhpb(j),j=1,nss) - write (9,'(i4,20f7.4)') nfrag,(qfrag(i),i=1,nfrag) - write (9,'(8f10.5)') ((coord(k,j),k=1,3),j=1,isize) - stop - endif - enddo - - end