+<<<<<<< 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
# 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_Fortran_COMPILER> ${CMAKE_START_TEMP_FILE} <FLAGS> <DEFINES> -c <SOURCE> -o <OBJECT> ${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)
+++ /dev/null
-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
--- /dev/null
+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
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 &
#!/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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+--------------------------------------------------------------------------------
+ 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 *****
--- /dev/null
+ 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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+#!/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
+++ /dev/null
-#
-# CMake project file for UNRES
-#
-
-add_subdirectory(unres)
--- /dev/null
+#
+# 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)
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
--- /dev/null
+#
+# 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)
+++ /dev/null
-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'
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))
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,
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
& 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
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
+++ /dev/null
-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)
#include <stdlib.h>
#include <math.h>
+#include <stdio.h>
#ifdef CRAY
void PROC_PROC(long int *f, int *i)
--- /dev/null
+#
+# 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)
*
* 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
+++ /dev/null
-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'
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'
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'
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'
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'
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'
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))
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,
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
& 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
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
& 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
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
& 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
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
+++ /dev/null
-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)
#include <stdlib.h>
#include <math.h>
+#include <stdio.h>
#ifdef CRAY
void PROC_PROC(long int *f, int *i)
--- /dev/null
+# 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
+
--- /dev/null
+# 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
+
--- /dev/null
+# 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
+
--- /dev/null
+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)
+
--- /dev/null
+
+
+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;
+}
--- /dev/null
+/*____________________________________________________________________________
+ |
+ | 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 <limits.h>
+#include <malloc.h>
+#include <math.h>
+/* #include <rpc/rpc.h>
+#include <rpc/xdr.h> */
+#include "xdr.h"
+#include <stdio.h>
+#include <stdlib.h>
+#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;
+}
+
+
+
--- /dev/null
+/*____________________________________________________________________________
+ |
+ | 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 <limits.h>
+#include <malloc.h>
+#include <math.h>
+#include <rpc/rpc.h>
+#include <rpc/xdr.h>
+#include <stdio.h>
+#include <stdlib.h>
+#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;
+}
+
+
+
--- /dev/null
+/*
+ * 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 <sys/types.h>
+ */
+#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 <stdlib.h> /* 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 <sys/types.h>
+#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 <sys/time.h>
+#include <sys/param.h>
+
+#include <netinet/in.h>
+
+#ifndef INADDR_LOOPBACK
+#define INADDR_LOOPBACK (u_long)0x7F000001
+#endif
+#ifndef MAXHOSTNAMELEN
+#define MAXHOSTNAMELEN 64
+#endif
+
+#endif /* rpc/types.h */
--- /dev/null
+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)
--- /dev/null
+# 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 <stdio.h>
+#include <limits.h>
+#include <string.h>
+#include <libintl.h>
+
+#include "types.h"
+#include "xdr.h"
+
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#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;
+}
--- /dev/null
+/*
+ * 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 <features.h>
+#include <sys/types.h>
+#include "types.h"
+
+/* We need FILE. */
+#include <stdio.h>
+
+__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;
+ * <type> *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 */
--- /dev/null
+# 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 <stdio.h>
+#include <string.h>
+#include "types.h"
+#include "xdr.h"
+#include <libintl.h>
+#include <limits.h>
+
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#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;
+}
--- /dev/null
+/* @(#)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 <stdio.h>
+#include <endian.h>
+
+#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);
+}
--- /dev/null
+/*
+ * 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 <stdio.h>
+#include "xdr.h"
+
+#ifdef USE_IN_LIBIO
+# include <libio/iolibio.h>
+# 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) */
--- /dev/null
+/*_________________________________________________________________
+ |
+ | 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) ;
+
--- /dev/null
+#
+# 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 )
--- /dev/null
+# 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
+
--- /dev/null
+# 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
+
--- /dev/null
+# 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
+
--- /dev/null
+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)
+
--- /dev/null
+
+
+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;
+}
--- /dev/null
+/*____________________________________________________________________________
+ |
+ | 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 <limits.h>
+#include <malloc.h>
+#include <math.h>
+/* #include <rpc/rpc.h>
+#include <rpc/xdr.h> */
+#include "xdr.h"
+#include <stdio.h>
+#include <stdlib.h>
+#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;
+}
+
+
+
--- /dev/null
+/*
+ * 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 <sys/types.h>
+ */
+#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 <stdlib.h> /* 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 <sys/types.h>
+#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 <sys/time.h>
+#include <sys/param.h>
+
+#include <netinet/in.h>
+
+#ifndef INADDR_LOOPBACK
+#define INADDR_LOOPBACK (u_long)0x7F000001
+#endif
+#ifndef MAXHOSTNAMELEN
+#define MAXHOSTNAMELEN 64
+#endif
+
+#endif /* rpc/types.h */
--- /dev/null
+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)
--- /dev/null
+# 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 <stdio.h>
+#include <limits.h>
+#include <string.h>
+#include <libintl.h>
+
+#include "types.h"
+#include "xdr.h"
+
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#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;
+}
--- /dev/null
+/*
+ * 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 <features.h>
+#include <sys/types.h>
+#include "types.h"
+
+/* We need FILE. */
+#include <stdio.h>
+
+__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;
+ * <type> *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 */
--- /dev/null
+# 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 <stdio.h>
+#include <string.h>
+#include "types.h"
+#include "xdr.h"
+#include <libintl.h>
+#include <limits.h>
+
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#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;
+}
--- /dev/null
+/* @(#)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 <stdio.h>
+#include <endian.h>
+
+#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);
+}
--- /dev/null
+/*
+ * 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 <stdio.h>
+#include "xdr.h"
+
+#ifdef USE_IN_LIBIO
+# include <libio/iolibio.h>
+# 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) */
--- /dev/null
+/*_________________________________________________________________
+ |
+ | 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) ;
+
--- /dev/null
+# 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
+
--- /dev/null
+# 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
+
--- /dev/null
+# 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
+
--- /dev/null
+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)
+
--- /dev/null
+
+
+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;
+}
--- /dev/null
+/*____________________________________________________________________________
+ |
+ | 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 <limits.h>
+#include <malloc.h>
+#include <math.h>
+/* #include <rpc/rpc.h>
+#include <rpc/xdr.h> */
+#include "xdr.h"
+#include <stdio.h>
+#include <stdlib.h>
+#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;
+}
+
+
+
--- /dev/null
+/*____________________________________________________________________________
+ |
+ | 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 <limits.h>
+#include <malloc.h>
+#include <math.h>
+#include <rpc/rpc.h>
+#include <rpc/xdr.h>
+#include <stdio.h>
+#include <stdlib.h>
+#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;
+}
+
+
+
--- /dev/null
+/*
+ * 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 <sys/types.h>
+ */
+#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 <stdlib.h> /* 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 <sys/types.h>
+#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 <sys/time.h>
+#include <sys/param.h>
+
+#include <netinet/in.h>
+
+#ifndef INADDR_LOOPBACK
+#define INADDR_LOOPBACK (u_long)0x7F000001
+#endif
+#ifndef MAXHOSTNAMELEN
+#define MAXHOSTNAMELEN 64
+#endif
+
+#endif /* rpc/types.h */
--- /dev/null
+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)
--- /dev/null
+# 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 <stdio.h>
+#include <limits.h>
+#include <string.h>
+#include <libintl.h>
+
+#include "types.h"
+#include "xdr.h"
+
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#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;
+}
--- /dev/null
+/*
+ * 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 <features.h>
+#include <sys/types.h>
+#include "types.h"
+
+/* We need FILE. */
+#include <stdio.h>
+
+__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;
+ * <type> *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 */
--- /dev/null
+# 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 <stdio.h>
+#include <string.h>
+#include "types.h"
+#include "xdr.h"
+#include <libintl.h>
+#include <limits.h>
+
+#ifdef USE_IN_LIBIO
+# include <wchar.h>
+#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;
+}
--- /dev/null
+/* @(#)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 <stdio.h>
+#include <endian.h>
+
+#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);
+}
--- /dev/null
+/*
+ * 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 <stdio.h>
+#include "xdr.h"
+
+#ifdef USE_IN_LIBIO
+# include <libio/iolibio.h>
+# 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) */
--- /dev/null
+/*_________________________________________________________________
+ |
+ | 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) ;
+
+++ /dev/null
-#
-# CMake project file for UNRES
-#
-
-add_subdirectory(src_MD)
--- /dev/null
+#
+# 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)
+
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");
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)
{
{
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';
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))
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,
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
& 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
--- /dev/null
+#
+# 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)
+
+++ /dev/null
-/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
+++ /dev/null
-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.*
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");
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)
{
{
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';
+++ /dev/null
-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<sigma).
-> 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<i'
----
-> ggg(1)=xj*fac
-> ggg(2)=yj*fac
-> ggg(3)=zj*fac
-> if (j.lt.i) then
-> cd write (iout,*) 'j<i'
-2343c3217
-< c do k=1,3
----
-> 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<i'
----
-> 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<i'
-2459c3310
-< c do k=1,3
----
-> 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
->
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))
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,
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
& 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
+++ /dev/null
-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
#include <stdlib.h>
#include <math.h>
+#include <stdio.h>
#ifdef CRAY
void PROC_PROC(long int *f, int *i)
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)
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"
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-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)
-
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*
- * 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 <sys/types.h>
- */
-#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 <stdlib.h> /* 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 <sys/types.h>
-#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 <sys/time.h>
-#include <sys/param.h>
-
-#include <netinet/in.h>
-
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK (u_long)0x7F000001
-#endif
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-#endif /* rpc/types.h */
+++ /dev/null
-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)
+++ /dev/null
-# 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 <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <libintl.h>
-
-#include "types.h"
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/*
- * 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 <features.h>
-#include <sys/types.h>
-#include "types.h"
-
-/* We need FILE. */
-#include <stdio.h>
-
-__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;
- * <type> *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 */
+++ /dev/null
-# 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 <stdio.h>
-#include <string.h>
-#include "types.h"
-#include "xdr.h"
-#include <libintl.h>
-#include <limits.h>
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/* @(#)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 <stdio.h>
-#include <endian.h>
-
-#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);
-}
+++ /dev/null
-/*
- * 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 <stdio.h>
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <libio/iolibio.h>
-# 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) */
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-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)
-
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*
- * 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 <sys/types.h>
- */
-#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 <stdlib.h> /* 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 <sys/types.h>
-#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 <sys/time.h>
-#include <sys/param.h>
-
-#include <netinet/in.h>
-
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK (u_long)0x7F000001
-#endif
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-#endif /* rpc/types.h */
+++ /dev/null
-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)
+++ /dev/null
-# 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 <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <libintl.h>
-
-#include "types.h"
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/*
- * 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 <features.h>
-#include <sys/types.h>
-#include "types.h"
-
-/* We need FILE. */
-#include <stdio.h>
-
-__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;
- * <type> *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 */
+++ /dev/null
-# 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 <stdio.h>
-#include <string.h>
-#include "types.h"
-#include "xdr.h"
-#include <libintl.h>
-#include <limits.h>
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/* @(#)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 <stdio.h>
-#include <endian.h>
-
-#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);
-}
+++ /dev/null
-/*
- * 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 <stdio.h>
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <libio/iolibio.h>
-# 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) */
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
- 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)') '\@<TRIPOS>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)') '\@<TRIPOS>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)') '\@<TRIPOS>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)') '\@<TRIPOS>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
+++ /dev/null
-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
+++ /dev/null
- 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
-
+++ /dev/null
- 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
-
+++ /dev/null
- 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
+++ /dev/null
- 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
+++ /dev/null
-# 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
-
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-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)
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-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)
-
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*
- * 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 <sys/types.h>
- */
-#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 <stdlib.h> /* 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 <sys/types.h>
-#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 <sys/time.h>
-#include <sys/param.h>
-
-#include <netinet/in.h>
-
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK (u_long)0x7F000001
-#endif
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-#endif /* rpc/types.h */
+++ /dev/null
-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)
+++ /dev/null
-# 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 <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <libintl.h>
-
-#include "types.h"
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/*
- * 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 <features.h>
-#include <sys/types.h>
-#include "types.h"
-
-/* We need FILE. */
-#include <stdio.h>
-
-__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;
- * <type> *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 */
+++ /dev/null
-# 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 <stdio.h>
-#include <string.h>
-#include "types.h"
-#include "xdr.h"
-#include <libintl.h>
-#include <limits.h>
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/* @(#)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 <stdio.h>
-#include <endian.h>
-
-#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);
-}
+++ /dev/null
-/*
- * 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 <stdio.h>
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <libio/iolibio.h>
-# 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) */
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
#
-# 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)
+
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)
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,
& 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,
-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)
& 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),
& 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)
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
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
*
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)
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)
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"
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)
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
& +(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)
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",
C DO NOT EDIT THIS FILE - IT HAS BEEN GENERATED BY COMPINFO.C
+<<<<<<< HEAD
C 2 5 66
subroutine cinfo
include 'COMMON.IOUNITS'
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 ...'
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");
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,*)'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)
{
{
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';
#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
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'
include 'COMMON.CONTROL'
include 'COMMON.TIME1'
include 'COMMON.MAXGRAD'
+ include 'COMMON.SCCOR'
#ifdef TIMING
#ifdef MPI
time01=MPI_Wtime()
& +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
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
& 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
& 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
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)
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)
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
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----------------------------------------------------------------------------
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
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,
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
& 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
include 'COMMON.FFIELD'
include 'COMMON.MD'
include 'COMMON.IOUNITS'
+ include 'COMMON.SCCOR'
external ufparm
integer uiparm(1)
double precision urparm(1)
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
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)
include 'COMMON.CHAIN'
include 'COMMON.VAR'
include 'COMMON.MD'
+ include 'COMMON.SCCOR'
C
C Initialize Cartesian-coordinate gradient
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
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
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
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)
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
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),
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
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)
#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,
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)
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
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
#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)
#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
#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
& 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')
#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')
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-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)
-
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*
- * 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 <sys/types.h>
- */
-#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 <stdlib.h> /* 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 <sys/types.h>
-#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 <sys/time.h>
-#include <sys/param.h>
-
-#include <netinet/in.h>
-
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK (u_long)0x7F000001
-#endif
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-#endif /* rpc/types.h */
+++ /dev/null
-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)
+++ /dev/null
-# 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 <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <libintl.h>
-
-#include "types.h"
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/*
- * 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 <features.h>
-#include <sys/types.h>
-#include "types.h"
-
-/* We need FILE. */
-#include <stdio.h>
-
-__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;
- * <type> *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 */
+++ /dev/null
-# 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 <stdio.h>
-#include <string.h>
-#include "types.h"
-#include "xdr.h"
-#include <libintl.h>
-#include <limits.h>
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/* @(#)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 <stdio.h>
-#include <endian.h>
-
-#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);
-}
+++ /dev/null
-/*
- * 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 <stdio.h>
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <libio/iolibio.h>
-# 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) */
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
--- /dev/null
+#
+# 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)
+
FFLAGSE = -c -O3
-BIN = ../bin/unres_min_gfortran.exe
+BIN = ../../../bin/unres/MIN/unres_min_gfortran.exe
LIBS =
#LIBS = -lpthread
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)+
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))
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,
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
& 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
--- /dev/null
+#
+# 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)
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");
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)
{
{
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';
+++ /dev/null
-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<i'
-> 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
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))
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,
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
& 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
#include <stdlib.h>
+#include <stdio.h>
#include <math.h>
#ifdef LINUX
{
int j;
-sscanf(buf,"%d",&j);
-*i=j;
+if (sscanf(buf,"%d",&j) != EOF)
+ *i=j;
return;
}
+++ /dev/null
-# 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
-
+++ /dev/null
-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)
-
+++ /dev/null
-/* 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 <gnu/lib-names.h> 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 <sys/cdefs.h>
-# 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.
- <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
- that will always return failure (and set errno to ENOSYS). */
-#include <gnu/stubs.h>
-
-
-#endif /* features.h */
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-
-
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*
- * 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 <sys/types.h>
- */
-#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 <stdlib.h> /* 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 <sys/types.h>
-#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 <sys/time.h>
-#include <sys/param.h>
-
-#include <netinet/in.h>
-
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK (u_long)0x7F000001
-#endif
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-#endif /* rpc/types.h */
+++ /dev/null
-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)
+++ /dev/null
-# 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 <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <libintl.h>
-
-#include "types.h"
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/*
- * 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 <features.h>
-#include <sys/types.h>
-#include "types.h"
-
-/* We need FILE. */
-#include <stdio.h>
-
-__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;
- * <type> *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 */
+++ /dev/null
-# 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 <stdio.h>
-#include <string.h>
-#include "types.h"
-#include "xdr.h"
-#include <libintl.h>
-#include <limits.h>
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/* @(#)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 <stdio.h>
-#include <endian.h>
-
-#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);
-}
+++ /dev/null
-/*
- * 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 <stdio.h>
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <libio/iolibio.h>
-# 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) */
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-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)
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
--- /dev/null
+#
+# 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)
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");
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)
{
{
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';
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))
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,
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
& 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
+++ /dev/null
- 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.
+++ /dev/null
- 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
#include <stdlib.h>
#include <math.h>
+#include <stdio.h>
#ifdef LINUX
#ifdef PGI
+++ /dev/null
-# 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
-
+++ /dev/null
-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)
-
+++ /dev/null
-/* 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 <gnu/lib-names.h> 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 <sys/cdefs.h>
-# 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.
- <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
- that will always return failure (and set errno to ENOSYS). */
-#include <gnu/stubs.h>
-
-
-#endif /* features.h */
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-
-
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-/* #include <rpc/rpc.h>
-#include <rpc/xdr.h> */
-#include "xdr.h"
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*
- * 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 <sys/types.h>
- */
-#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 <stdlib.h> /* 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 <sys/types.h>
-#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 <sys/time.h>
-#include <sys/param.h>
-
-#include <netinet/in.h>
-
-#ifndef INADDR_LOOPBACK
-#define INADDR_LOOPBACK (u_long)0x7F000001
-#endif
-#ifndef MAXHOSTNAMELEN
-#define MAXHOSTNAMELEN 64
-#endif
-
-#endif /* rpc/types.h */
+++ /dev/null
-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)
+++ /dev/null
-# 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 <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <libintl.h>
-
-#include "types.h"
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/*
- * 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 <features.h>
-#include <sys/types.h>
-#include "types.h"
-
-/* We need FILE. */
-#include <stdio.h>
-
-__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;
- * <type> *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 */
+++ /dev/null
-# 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 <stdio.h>
-#include <string.h>
-#include "types.h"
-#include "xdr.h"
-#include <libintl.h>
-#include <limits.h>
-
-#ifdef USE_IN_LIBIO
-# include <wchar.h>
-#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;
-}
+++ /dev/null
-/* @(#)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 <stdio.h>
-#include <endian.h>
-
-#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);
-}
+++ /dev/null
-/*
- * 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 <stdio.h>
-#include "xdr.h"
-
-#ifdef USE_IN_LIBIO
-# include <libio/iolibio.h>
-# 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) */
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
+++ /dev/null
-# 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
-
+++ /dev/null
-# 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
-
+++ /dev/null
-
-
-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;
-}
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-/*____________________________________________________________________________
- |
- | 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 <limits.h>
-#include <malloc.h>
-#include <math.h>
-#include <rpc/rpc.h>
-#include <rpc/xdr.h>
-#include <stdio.h>
-#include <stdlib.h>
-#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;
-}
-
-
-
+++ /dev/null
-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)
+++ /dev/null
-/*_________________________________________________________________
- |
- | 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) ;
-
--- /dev/null
+# 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 )
+
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
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
+++ /dev/null
- 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
--- /dev/null
+# 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 )
+
+
+
FFLAGS = -c ${OPT}
-CPPFLAGS = -DLINUX -DUNRES -DMP -DMPI -DSPLITELE -DPROCOR -DNEWUNRES
+CPPFLAGS = -DNEWUNRES
M4 = m4
M4FILE = underscore.m4
character*8 onethree,cfreq
character*8 ucase
external ucase
+<<<<<<< HEAD
logical oneletter,iblnk
+=======
+ logical oneletter, iblnk
+>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1
integer rescode
external rescode
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
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
character*3 licz
character*8 ucase
external ucase
+<<<<<<< HEAD
logical oneletter,iblnk
+=======
+ logical oneletter, iblnk
+>>>>>>> aebadf9023e437f497f92dfcf2303c16f60917c1
integer rescode
external rescode
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
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
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)
prec=10000.0
isize=0
+ print *," call xdrf3coord"
call xdrf3dfcoord(ixdrf, coord, isize, prec, iret)
+++ /dev/null
- 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
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
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)
+++ /dev/null
- 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