diff --git a/.travis.yml b/.travis.yml index 694a0624..d8a0c255 100644 --- a/.travis.yml +++ b/.travis.yml @@ -76,7 +76,7 @@ script: - cd build # build # - cmake -DBUILD_GLASS-APP=1 -DBUILD_GEN-TRAVELTMES-APP=1 -DBUILD_GLASS-BROKER-APP=1 -DGIT_CLONE_PUBLIC=1 -DRUN_TESTS=1 -DSUPPORT_COVERAGE=1 -DRUN_COVERAGE=1 -DRUN_CPPCHECK=1 -DRUN_CPPLINT=1 -DGENERATE_DOCUMENTATION=1 -DCMAKE_INSTALL_PREFIX=../dist -DRAPIDJSON_PATH=../lib/rapidjson -DLIBRDKAFKA_C_LIB=/usr/local/lib/librdkafka.a -DLIBRDKAFKA_CPP_LIB=/usr/local/lib/librdkafka++.a -DLIBRDKAFKA_PATH=/usr/local/include/librdkafka -DCPPLINT_PATH=../lib/cpplint/cpplint.py -DCPPCHECK_PATH=/usr/bin/cppcheck .. && make - - cmake -DBUILD_GLASS-APP=1 -DBUILD_GEN-TRAVELTMES-APP=1 -DGIT_CLONE_PUBLIC=1 -DRUN_TESTS=1 -DSUPPORT_COVERAGE=1 -DRUN_COVERAGE=1 -DRUN_CPPCHECK=1 -DRUN_CPPLINT=1 -DGENERATE_DOCUMENTATION=1 -DCMAKE_INSTALL_PREFIX=../dist -DRAPIDJSON_PATH=../lib/rapidjson -DCPPLINT_PATH=../lib/cpplint/cpplint.py -DCPPCHECK_PATH=/usr/bin/cppcheck .. && make + - cmake -DBUILD_GLASS-APP=1 -DGIT_CLONE_PUBLIC=1 -DRUN_TESTS=1 -DSUPPORT_COVERAGE=1 -DRUN_COVERAGE=1 -DRUN_CPPCHECK=1 -DRUN_CPPLINT=1 -DGENERATE_DOCUMENTATION=1 -DCMAKE_INSTALL_PREFIX=../dist -DRAPIDJSON_PATH=../lib/rapidjson -DCPPLINT_PATH=../lib/cpplint/cpplint.py -DCPPCHECK_PATH=/usr/bin/cppcheck .. && make # copy documentation index.md to doxygen documentation directory - cd ${TRAVIS_BUILD_DIR} - cp -r ${TRAVIS_BUILD_DIR}/doc/* ${TRAVIS_BUILD_DIR}/dist/doc diff --git a/CMakeLists.txt b/CMakeLists.txt index 42ecb0b0..423fb992 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,6 @@ option(GENERATE_DOCUMENTATION "Create and install the HTML based API documentati option(RUN_TESTS "Create and run unit tests" ON) option(BUILD_GLASS-APP "Build the glass application" ON) option(BUILD_GLASS-BROKER-APP "Build the glass broker based application" OFF) -option(BUILD_GEN-TRAVELTMES-APP "Build the travel time generation application" OFF) option(RUN_CPPCHECK "Run CPP Checks (requires cppcheck installed)" OFF) option(RUN_CPPLINT "Run CPP Checks (requires cpplint and python installed)" OFF) option(SUPPORT_COVERAGE "Instrument for Coverage" OFF) @@ -374,27 +373,6 @@ if (BUILD_GLASS-BROKER-APP) endif() -if (BUILD_GEN-TRAVELTMES-APP) - - # gen-travel-times-app - ExternalProject_Add( - gen-travel-times-app - SOURCE_DIR ${PROJECT_SOURCE_DIR}/gen-travel-times-app/ - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${INSTALL_LOCATION} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_MODULE_PATH=${CMAKE_MODULE_PATH} - -DRUN_CPPCHECK=${RUN_CPPCHECK} - -DRUN_CPPLINT=${RUN_CPPLINT} - -DSUPPORT_COVERAGE=${SUPPORT_COVERAGE} - -DPYTHON_PATH=${PYTHON_PATH} - -DCPPLINT_PATH=${CPPLINT_PATH} - -DCPPCHECK_PATH=${CPPCHECK_PATH} - DEPENDS SuperEasyJSON util glasscore ${DOXYGEN_DEPEND} ${GTEST_DEPEND} - UPDATE_COMMAND "" - ) - -endif() - # ----- GENERATE DOCUMENTATION ----- # set(DOC_DIRS "${PROJECT_SOURCE_DIR}/util/ ${PROJECT_SOURCE_DIR}/glasscore/ ${PROJECT_SOURCE_DIR}/parse/ ${PROJECT_SOURCE_DIR}/input/ ${PROJECT_SOURCE_DIR}/output/ ${PROJECT_SOURCE_DIR}/process/ ${PROJECT_SOURCE_DIR}/glass-app/ ${PROJECT_SOURCE_DIR}/glass-broker-app/ ${PROJECT_SOURCE_DIR}/gen-travel-times-app/") include(${CMAKE_DIR}/documentation.cmake) diff --git a/cmake/version.cmake b/cmake/version.cmake index 7acdcc24..99f9b788 100644 --- a/cmake/version.cmake +++ b/cmake/version.cmake @@ -1,4 +1,4 @@ # version.cmake - a CMake script that defines the overall project version set (PROJECT_VERSION_MAJOR 1) -set (PROJECT_VERSION_MINOR 2) -set (PROJECT_VERSION_PATCH 1) +set (PROJECT_VERSION_MINOR 3) +set (PROJECT_VERSION_PATCH 0) diff --git a/gen-travel-times-app/.gitignore b/gen-travel-times-app/.gitignore new file mode 100644 index 00000000..6039eab1 --- /dev/null +++ b/gen-travel-times-app/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build/ \ No newline at end of file diff --git a/gen-travel-times-app/CMakeLists.txt b/gen-travel-times-app/CMakeLists.txt deleted file mode 100644 index e12396b7..00000000 --- a/gen-travel-times-app/CMakeLists.txt +++ /dev/null @@ -1,52 +0,0 @@ -# neic-glass3 gen-travel-times-app application CMake configuration file. -# -# This file contains the CMake configuration file that builds the -# gen-travel-times-app application for neic-glass3. This configuration follows -# the "CMake Superbuilds and Git Submodules" scheme to organize and orchestrate -# the build process. - -cmake_minimum_required (VERSION 3.4) -set(CMAKE_DIR ${CMAKE_CURRENT_LIST_DIR}/../cmake/) - -# ----- PROJECT VERSION ----- # -include(${CMAKE_DIR}/version.cmake) - -# ----- PROJECT ----- # -project (gen-travel-times-app VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH} ) - -#----- BASE FUNCTIONS ----- # -include(${CMAKE_DIR}/base.cmake) - -# ----- EXTERNAL LIBRARIES ----- # -# SuperEasyJSON -include(${CMAKE_DIR}/include_SuperEasyJSON.cmake) - -# ----- GLASS3 LIBRARIES ----- # -# util -include(${CMAKE_DIR}/include_neic-glass3_util.cmake) - -# glasscore -include(${CMAKE_DIR}/include_neic-glass3_glasscore.cmake) - -# ----- SET SOURCE FILES ----- # -set(SRCS "${PROJECT_SOURCE_DIR}/gen-travel-times-app.cpp") - -# ----- SET HEADER FILES ----- # -# no headers - -# ----- BUILD EXECUTABLE ----- # -# WARNING: linking order of libraries matters for G++ -set(EXE_LIBRARIES ${SuperEasyJSON_LIBRARIES} ${glasscore_LIBRARIES} ${util_LIBRARIES}) -include(${CMAKE_DIR}/build_exe.cmake) - -# ----- RUN CPPCHECK ----- # -include(${CMAKE_DIR}/cppcheck.cmake) - -# ----- RUN CPPLINT ----- # -include(${CMAKE_DIR}/cpplint.cmake) - -# ----- RUN UNIT TESTS ----- # -# no tests currently - -# ----- INSTALL EXECUTABLE ----- # -include(${CMAKE_DIR}/install_exe.cmake) diff --git a/gen-travel-times-app/README.md b/gen-travel-times-app/README.md index 9340f4d4..c8c13ae1 100644 --- a/gen-travel-times-app/README.md +++ b/gen-travel-times-app/README.md @@ -1,21 +1,28 @@ -# gen-traveltimes-app +# gen-travel-times-app -**Gen-travel-times-app** is an application that uses the glasscore traveltime -libraries to generate the traveltime lookup files (.trv) used by neic-glass3 from a -model file. Please note that this application is currently not optimized, and -is **extremely** slow. +A java program used to generate glass3 traveltimes from the NEIC java [travel time](https://github.com/usgs/neic-traveltime) package. -## Building +Dependencies +------ +* gen-travel-times-app was written in Oracle Java 1.8 +* gen-travel-times-app is built with [Gradle](https://gradle.org/), a build.gradle file and gradlew are included in this project +* gen-travel-times-app depends on the [neic-traveltime](https://github.com/usgs/neic-traveltime) package. A copy of this package is included with this package. -To build **gen-travel-times-app**, set the `BUILD_GEN-TRAVELTMES-APP` option equal -to true (1) in the CMake command or GUI. +Building +------ +The steps to get and build gen-travel-times-app.jar using gradle are as follows: -## Configuration +1. Clone neic-glass3. +2. Open a command window and change directories to /neic-glass3/gen-travel-times-app/ +3. To build the jar file, run the command `./gradlew build` -An example configuration for **gen-travel-times-app** is available in the [gen-travel-times-app params directory](https://github.com/usgs/neic-glass3/tree/master/gen-travel-times-app/params) +Using +----- +Once you are able to build the gen-travel-times-app jar, simply include the jar +file in your application, or call using the App class. -## Running +A set of model files used by the gen-travel-times-app is stored in the models/ directory. -To run **gen-travel-times-app**, use the following command: `gen-travel-times-app [logname]` where `` is the required path the the gen-travel-times.d configuration file and `[logname]` is an optional command that when present specifies the log file name and enables logging. +Example configuration files are included in `/neic-glass3/gen-travel-times-app/src/main/resources/` -For more information, please see the [gen-travel-times-app DOxygen documentation](https://usgs.github.io/neic-glass3/html/gen-travel-times-app_8cpp.html) +To run this example, run from `/neic-glass3/gen-travel-times-app/` run the command: `java -jar build/libs/gen-travel-times-app-0.1.0.jar --configFile=src/main/resources/config.json` \ No newline at end of file diff --git a/gen-travel-times-app/build.gradle b/gen-travel-times-app/build.gradle new file mode 100644 index 00000000..074f5173 --- /dev/null +++ b/gen-travel-times-app/build.gradle @@ -0,0 +1,76 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * This generated file contains a sample Java project to get you started. + * For more details take a look at the Java Quickstart chapter in the Gradle + * User Manual available at https://docs.gradle.org/5.4.1/userguide/tutorial_java_projects.html + */ + +plugins { + // Apply the java plugin to add support for Java + id 'java' + + // Apply the application plugin to add support for building an application + id 'application' + + // google java format + id 'com.github.sherter.google-java-format' version '0.8' +} + +sourceCompatibility = '1.10' +targetCompatibility = '1.10' +version = '0.1.0' + +repositories { + // Use jcenter for resolving your dependencies. + // You can declare any Maven/Ivy/file repository here. + mavenCentral() +} + +dependencies { + // This dependency is found on compile classpath of this component and consumers. + implementation 'com.google.guava:guava:27.0.1-jre' + + // com.googlecode.json.simple + compile "com.googlecode.json-simple:json-simple:1.1.1" + + // Use JUnit test framework + testImplementation 'junit:junit:4.12' + + // neic traveltimes + compile files('lib/neic-traveltime-0.1.0.jar') + + // https://mvnrepository.com/artifact/log4j/log4j + compile group: 'log4j', name: 'log4j', version: '1.2.17' +} + +// always format to google style prior to the build +//compileJava.dependsOn 'googleJavaFormat' + +// Google java style is checked automatically as part of the check task +// Note: To reformat all java code (not in lib) into the +// google java style, run ./gradlew goJF +project.tasks.check.dependsOn(verifyGoogleJavaFormat) + +// set jar entry point +jar { + manifest { + attributes( + 'Class-Path': configurations.compile.collect { it.getName() }.join(' '), + 'Main-Class': 'gov.usgs.GenTravelTimes.App' + ) + } + from { + configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } + } +} + +// Define the main class for the application +mainClassName = 'gov.usgs.GenTravelTimes.App' + +// show compile warnings +tasks.withType(JavaCompile) { + options.setDeprecation(true); + options.setWarnings(true); +} + diff --git a/gen-travel-times-app/gen-travel-times-app.cpp b/gen-travel-times-app/gen-travel-times-app.cpp deleted file mode 100644 index b9bb9798..00000000 --- a/gen-travel-times-app/gen-travel-times-app.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/***************************************** - * This file is documented for Doxygen. - * If you modify this file please update - * the comments so that Doxygen will still - * be able to work. - ****************************************/ -/** - * \file - * \brief gen-travel-times-app.cpp - * - * gen-travel-times-app is an application that uses the glasscore traveltime - * libraries to generate the traveltime lookup files (.trv) used by neic-glass3 - * from a model file. - * - * gen-travel-times-app uses the environment variable GLASS_LOG to define - * the location to write log files - * - * \par Usage - * \parblock - * gen-travel-times-app [logname] - * - * \par Where - * \parblock - * \b configfile is the required path to the configuration file for - * gen-travel-times-app - * - * \b logname is an optional string defining an alternate - * name for the gen-travel-times-app log file. - * \endparblock - * \endparblock - * - * Please note that this application is currently not optimized, and is - * extremely slow - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -/** - * \brief gen-travel-times-app main function - * - * \param argc An integer argument count of the command line arguments - * \param argv An argument vector of the command line arguments - * \return an integer 0 upon exit success, nonzero otherwise - */ -int main(int argc, char* argv[]) { - // check our arguments - if ((argc < 2) || (argc > 3)) { - std::cout << "gen-travel-times-app version " - << std::to_string(PROJECT_VERSION_MAJOR) << "." - << std::to_string(PROJECT_VERSION_MINOR) << "." - << std::to_string(PROJECT_VERSION_PATCH) << "; Usage: " - << "gen-travel-times-app [logname]" - << std::endl; - return 1; - } - - // Look up our log directory - std::string logpath; - char* pLogDir = getenv("GLASS_LOG"); - if (pLogDir != NULL) { - logpath = pLogDir; - } else { - std::cout << "gen-travel-times-app using default log directory of ./" - << std::endl; - logpath = "./"; - } - - // get our logname if available - std::string logName = "gen-travel-times-app"; - if (argc >= 3) { - logName = std::string(argv[2]); - } - - // now set up our logging - glass3::util::Logger::log_init(logName, "debug", logpath, true); - - glass3::util::Logger::log( - "info", - "gen-travel-times-app: Version " - + std::to_string(PROJECT_VERSION_MAJOR) + "." - + std::to_string(PROJECT_VERSION_MINOR) + "." - + std::to_string(PROJECT_VERSION_PATCH) + " startup."); - - // get our config file location from the arguments - std::string configFile = argv[1]; - - glass3::util::Logger::log( - "info", "gen-travel-times-app: using config file: " + configFile); - - // load our basic config - glass3::util::Config * genConfig = new glass3::util::Config("", configFile); - std::shared_ptr jsonConfig = genConfig->getJSON(); - // check to see if our config is of the right format - if (jsonConfig->HasKey("Configuration") - && ((*jsonConfig)["Configuration"].GetType() - == json::ValueType::StringVal)) { - std::string configType = (*jsonConfig)["Configuration"].ToString(); - - if (configType != "gen-travel-times-app") { - glass3::util::Logger::log( - "critical", - "gen-travel-times-app: Wrong configuration, exiting."); - - delete (genConfig); - return (1); - } - } else { - // no command or type - glass3::util::Logger::log( - "critical", - "gen-travel-times-app: Missing required Configuration Key."); - - delete (genConfig); - return (1); - } - - // model - std::string model = ""; - if (jsonConfig->HasKey("Model") - && ((*jsonConfig)["Model"].GetType() == json::ValueType::StringVal)) { - model = (*jsonConfig)["Model"].ToString(); - glass3::util::Logger::log( - "info", "gen-travel-times-app: Using Model: " + model); - } else { - glass3::util::Logger::log( - "critical", - "gen-travel-times-app: Missing required Model Key."); - - delete (genConfig); - return (1); - } - - // output path - std::string path = "./"; - if (jsonConfig->HasKey("OutputPath") - && ((*jsonConfig)["OutputPath"].GetType() - == json::ValueType::StringVal)) { - path = (*jsonConfig)["OutputPath"].ToString(); - } - glass3::util::Logger::log( - "info", "gen-travel-times-app: Using OutputPath: " + path); - - // file extension - std::string extension = ".trv"; - if (jsonConfig->HasKey("FileExtension") - && ((*jsonConfig)["FileExtension"].GetType() - == json::ValueType::StringVal)) { - extension = (*jsonConfig)["FileExtension"].ToString(); - } - glass3::util::Logger::log( - "info", "gen-travel-times-app: Using FileExtension: " + extension); - - glass3::util::Logger::log("info", "gen-travel-times-app: Setup."); - - // create generator - traveltime::CGenTrv *travelGenerator = new traveltime::CGenTrv(); - - travelGenerator->setup(model, path, extension); - - glass3::util::Logger::log("info", "gen-travel-times-app: Startup."); - - if (jsonConfig->HasKey("Branches") - && ((*jsonConfig)["Branches"].GetType() == json::ValueType::ArrayVal)) { - // get the array of phase entries - json::Array branches = (*jsonConfig)["Branches"].ToArray(); - - // for each branch in the array - for (auto branchVal : branches) { - // make sure the phase is an object - if (branchVal.GetType() != json::ValueType::ObjectVal) { - continue; - } - - // get this branch object - json::Object branchObj = branchVal.ToObject(); - - if (travelGenerator->generate(&branchObj) != true) { - glass3::util::Logger::log( - "error", - "gen-travel-times-app: Failed to generate travel time " - "file."); - - // cleanup - delete (genConfig); - delete (travelGenerator); - return (1); - } - } - } - - glass3::util::Logger::log("info", "gen-travel-times-app: Shutdown."); - - // cleanup - delete (genConfig); - delete (travelGenerator); - - // done - return (0); -} // main() diff --git a/gen-travel-times-app/gradle/wrapper/gradle-wrapper.jar b/gen-travel-times-app/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..5c2d1cf0 Binary files /dev/null and b/gen-travel-times-app/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gen-travel-times-app/gradle/wrapper/gradle-wrapper.properties b/gen-travel-times-app/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..f4d7b2bf --- /dev/null +++ b/gen-travel-times-app/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gen-travel-times-app/gradlew b/gen-travel-times-app/gradlew new file mode 100755 index 00000000..b0d6d0ab --- /dev/null +++ b/gen-travel-times-app/gradlew @@ -0,0 +1,188 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gen-travel-times-app/gradlew.bat b/gen-travel-times-app/gradlew.bat new file mode 100644 index 00000000..9991c503 --- /dev/null +++ b/gen-travel-times-app/gradlew.bat @@ -0,0 +1,100 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/gen-travel-times-app/lib/neic-traveltime-0.1.0.jar b/gen-travel-times-app/lib/neic-traveltime-0.1.0.jar new file mode 100644 index 00000000..a1384848 Binary files /dev/null and b/gen-travel-times-app/lib/neic-traveltime-0.1.0.jar differ diff --git a/gen-travel-times-app/lib/neic-traveltime-0.1.0_license.txt b/gen-travel-times-app/lib/neic-traveltime-0.1.0_license.txt new file mode 100644 index 00000000..5989741a --- /dev/null +++ b/gen-travel-times-app/lib/neic-traveltime-0.1.0_license.txt @@ -0,0 +1,44 @@ +License +======= + +Unless otherwise noted, This project is in the public domain in the United +States because it contains materials that originally came from the United +States Geological Survey, an agency of the United States Department of +Interior. For more information, see the official USGS copyright policy at +https://www2.usgs.gov/visual-id/credit_usgs.html#copyright + +Additionally, we waive copyright and related rights in the work +worldwide through the CC0 1.0 Universal public domain dedication. + + +CC0 1.0 Universal Summary +------------------------- + +This is a human-readable summary of the +[Legal Code (read the full text)][1]. + + +### No Copyright + +The person who associated a work with this deed has dedicated the work to +the public domain by waiving all of his or her rights to the work worldwide +under copyright law, including all related and neighboring rights, to the +extent allowed by law. + +You can copy, modify, distribute and perform the work, even for commercial +purposes, all without asking permission. + + +### Other Information + +In no way are the patent or trademark rights of any person affected by CC0, +nor are the rights that other persons may have in the work or in how the +work is used, such as publicity or privacy rights. + +Unless expressly stated otherwise, the person who associated a work with +this deed makes no warranties about the work, and disclaims liability for +all uses of the work, to the fullest extent permitted by applicable law. +When using or citing the work, you should not imply endorsement by the +author or the affirmer. + +[1]: https://creativecommons.org/publicdomain/zero/1.0/legalcode \ No newline at end of file diff --git a/gen-travel-times-app/models/README.txt b/gen-travel-times-app/models/README.txt new file mode 100644 index 00000000..3b553714 --- /dev/null +++ b/gen-travel-times-app/models/README.txt @@ -0,0 +1,41 @@ +Model files are so named because they deal with the Earth model. The first time the +travel-time code is run, it will create a properties file called traveltime.prop in +a directory called Properties under the callers home directory. This file should be +edited so that the modelPath variable points to a directory where the model files will +reside. Note that eventPath is not used by the travel-time code. The model files +currently included are: + +ak135.hed and ak135.tbl: These are travel-time table files generated by the FORTRAN + travel-time code for the ak135 model. They are included for comparison purposes + only. + +ellip.txt: Corrections for the ellipticity of the Earth. These corrections are common + to all Earth models. + +groups.txt: This specifies all possible phases in the current set up and their + relationship to each other. + +mak135.mod: The ak135 Earth model which will drive the Java travel-time table + generation. Ak135 is currently the NEIC global default. + +mcia.mod: The Central Italian Apennines Earth model which will drive the Java travel- + time table generation. This model works in parts of California. + +mcus.mod: The Central US Earth model which will drive the Java travel-time table + generation. This model is useful east of the Rocky Mountains. + +mogs.mod: The Oklahoma Geological Survey Earth model which will drive the Java + travel-time table generation. This model is useful in Oklahoma which seems to + be somewhere between the Central and Western US models. + +mwus.mod: The Western US Earth model which will drive the Java travel-time table + generation. This model is useful west of the Great Plains. + +phases.txt: This specifies the phase segments that will be created during the travel- + time generation process. + +topo.dat: A topographic map of the Earth that is used to compute bounce point + corrections. + +ttstats.txt: Travel-time statistics, used to weight phases and generate "add-on" + phases. \ No newline at end of file diff --git a/gen-travel-times-app/models/ak135.hed b/gen-travel-times-app/models/ak135.hed new file mode 100644 index 00000000..cde76b58 Binary files /dev/null and b/gen-travel-times-app/models/ak135.hed differ diff --git a/gen-travel-times-app/models/ak135.tbl b/gen-travel-times-app/models/ak135.tbl new file mode 100644 index 00000000..c3417c6d Binary files /dev/null and b/gen-travel-times-app/models/ak135.tbl differ diff --git a/gen-travel-times-app/models/ellip.txt b/gen-travel-times-app/models/ellip.txt new file mode 100644 index 00000000..a0fbbe62 --- /dev/null +++ b/gen-travel-times-app/models/ellip.txt @@ -0,0 +1,3721 @@ +Pup 3 0.0 10.0 + 0.0 + 0.0000 -0.0483 -0.0907 -0.1311 -0.2045 -0.2693 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + 0.0000 -0.1695 -0.1826 -0.2023 -0.2511 -0.3031 + 0.0000 0.0356 0.0770 0.1088 0.1436 0.1535 + 0.0000 0.0010 0.0028 0.0042 0.0056 0.0060 + 10.0 + 0.0000 -0.3180 -0.3208 -0.3284 -0.3521 -0.3835 + 0.0000 0.0091 0.0582 0.0921 0.1439 0.1801 + 0.0000 0.0003 0.0038 0.0055 0.0085 0.0116 +P 19 5.0 95.0 + 5.0 + -0.1764 -0.1808 -0.1827 -0.1856 -0.2253 -0.2799 + -0.0133 -0.0472 -0.0937 -0.1405 -0.1954 -0.2382 + -0.0019 0.0110 0.0048 0.0055 0.0035 0.0104 + 10.0 + -0.3206 -0.3013 -0.2934 -0.2889 -0.2959 -0.3198 + -0.0484 -0.0953 -0.1389 -0.1784 -0.2408 -0.2857 + -0.0069 -0.0097 -0.0156 -0.0192 -0.0229 -0.0229 + 15.0 + -0.4535 -0.4218 -0.4041 -0.3922 -0.3665 -0.3597 + -0.1027 -0.1434 -0.1841 -0.2163 -0.2862 -0.3332 + -0.0178 -0.0304 -0.0360 -0.0439 -0.0493 -0.0562 + 20.0 + -0.5572 -0.5194 -0.4900 -0.4644 -0.4309 -0.3996 + -0.1641 -0.1991 -0.2338 -0.2682 -0.3211 -0.3807 + -0.0631 -0.0664 -0.0700 -0.0736 -0.0852 -0.0895 + 25.0 + -0.6293 -0.5859 -0.5497 -0.5175 -0.4636 -0.4258 + -0.2287 -0.2563 -0.2840 -0.3137 -0.3708 -0.4301 + -0.1097 -0.1120 -0.1146 -0.1184 -0.1234 -0.1292 + 30.0 + -0.6535 -0.6099 -0.5727 -0.5384 -0.4812 -0.4383 + -0.2816 -0.3103 -0.3369 -0.3638 -0.4192 -0.4733 + -0.1524 -0.1567 -0.1593 -0.1617 -0.1685 -0.1760 + 35.0 + -0.6641 -0.6192 -0.5811 -0.5456 -0.4847 -0.4365 + -0.3314 -0.3567 -0.3825 -0.4081 -0.4596 -0.5094 + -0.2035 -0.2065 -0.2104 -0.2139 -0.2219 -0.2307 + 40.0 + -0.6605 -0.6144 -0.5751 -0.5384 -0.4741 -0.4210 + -0.3699 -0.3940 -0.4175 -0.4409 -0.4882 -0.5342 + -0.2619 -0.2659 -0.2696 -0.2729 -0.2816 -0.2923 + 45.0 + -0.6435 -0.5968 -0.5562 -0.5182 -0.4508 -0.3942 + -0.3940 -0.4159 -0.4377 -0.4594 -0.5023 -0.5436 + -0.3267 -0.3300 -0.3345 -0.3385 -0.3476 -0.3581 + 50.0 + -0.6160 -0.5685 -0.5269 -0.4880 -0.4184 -0.3588 + -0.4002 -0.4204 -0.4401 -0.4598 -0.4986 -0.5357 + -0.3956 -0.3990 -0.4035 -0.4075 -0.4163 -0.4269 + 55.0 + -0.5817 -0.5336 -0.4911 -0.4514 -0.3801 -0.3175 + -0.3865 -0.4049 -0.4226 -0.4404 -0.4754 -0.5081 + -0.4657 -0.4691 -0.4738 -0.4778 -0.4862 -0.4977 + 60.0 + -0.5438 -0.4949 -0.4523 -0.4120 -0.3393 -0.2746 + -0.3514 -0.3678 -0.3838 -0.3999 -0.4315 -0.4598 + -0.5360 -0.5399 -0.5438 -0.5476 -0.5556 -0.5670 + 65.0 + -0.5069 -0.4580 -0.4150 -0.3741 -0.2997 -0.2344 + -0.2947 -0.3099 -0.3242 -0.3385 -0.3657 -0.3909 + -0.6033 -0.6064 -0.6102 -0.6141 -0.6227 -0.6326 + 70.0 + -0.4752 -0.4260 -0.3828 -0.3415 -0.2665 -0.2002 + -0.2173 -0.2307 -0.2437 -0.2561 -0.2803 -0.3018 + -0.6650 -0.6682 -0.6716 -0.6753 -0.6833 -0.6927 + 75.0 + -0.4525 -0.4031 -0.3597 -0.3182 -0.2426 -0.1760 + -0.1206 -0.1326 -0.1442 -0.1551 -0.1754 -0.1953 + -0.7192 -0.7220 -0.7251 -0.7285 -0.7361 -0.7440 + 80.0 + -0.4421 -0.3927 -0.3491 -0.3076 -0.2319 -0.1647 + -0.0072 -0.0176 -0.0273 -0.0371 -0.0564 -0.0706 + -0.7632 -0.7659 -0.7689 -0.7719 -0.7782 -0.7863 + 85.0 + -0.4476 -0.3982 -0.3545 -0.3129 -0.2370 -0.1710 + 0.1213 0.1118 0.1023 0.0925 0.0786 0.0657 + -0.7962 -0.7985 -0.8010 -0.8034 -0.8099 -0.8158 + 90.0 + -0.4699 -0.4202 -0.3763 -0.3344 -0.2599 -0.1923 + 0.2557 0.2474 0.2400 0.2331 0.2097 0.1936 + -0.8164 -0.8187 -0.8214 -0.8242 -0.8252 -0.8303 + 95.0 + -0.5096 -0.4604 -0.4169 -0.3754 -0.2993 -0.2318 + 0.3734 0.3651 0.3572 0.3492 0.3334 0.3193 + -0.8175 -0.8192 -0.8211 -0.8231 -0.8276 -0.8327 +Pdif 11 100.0 150.0 + 100.0 + -0.5675 -0.5176 -0.4735 -0.4314 -0.3541 -0.2849 + 0.4958 0.4888 0.4824 0.4761 0.4649 0.4554 + -0.8078 -0.8083 -0.8088 -0.8093 -0.8104 -0.8115 + 105.0 + -0.6373 -0.5874 -0.5433 -0.5012 -0.4239 -0.3546 + 0.6270 0.6200 0.6136 0.6074 0.5961 0.5866 + -0.7675 -0.7680 -0.7685 -0.7690 -0.7701 -0.7712 + 110.0 + -0.7257 -0.6758 -0.6318 -0.5897 -0.5124 -0.4431 + 0.7423 0.7353 0.7289 0.7226 0.7113 0.7019 + -0.7164 -0.7169 -0.7175 -0.7180 -0.7190 -0.7202 + 115.0 + -0.8302 -0.7803 -0.7363 -0.6941 -0.6168 -0.5476 + 0.8380 0.8310 0.8246 0.8184 0.8071 0.7976 + -0.6561 -0.6566 -0.6572 -0.6577 -0.6587 -0.6599 + 120.0 + -0.9475 -0.8975 -0.8535 -0.8114 -0.7341 -0.6648 + 0.9114 0.9044 0.8980 0.8917 0.8805 0.8710 + -0.5884 -0.5889 -0.5894 -0.5900 -0.5910 -0.5922 + 125.0 + -1.0740 -1.0241 -0.9800 -0.9379 -0.8606 -0.7913 + 0.9601 0.9531 0.9467 0.9405 0.9292 0.9197 + -0.5154 -0.5159 -0.5164 -0.5169 -0.5180 -0.5191 + 130.0 + -1.2059 -1.1560 -1.1120 -1.0698 -0.9925 -0.9233 + 0.9827 0.9757 0.9693 0.9631 0.9518 0.9423 + -0.4392 -0.4397 -0.4402 -0.4407 -0.4418 -0.4430 + 135.0 + -1.3392 -1.2893 -1.2453 -1.2032 -1.1258 -1.0566 + 0.9786 0.9715 0.9651 0.9589 0.9476 0.9382 + -0.3622 -0.3627 -0.3633 -0.3638 -0.3648 -0.3660 + 140.0 + -1.4699 -1.4200 -1.3760 -1.3338 -1.2565 -1.1873 + 0.9477 0.9407 0.9343 0.9281 0.9168 0.9073 + -0.2868 -0.2873 -0.2878 -0.2883 -0.2894 -0.2905 + 145.0 + -1.5939 -1.5440 -1.5000 -1.4579 -1.3806 -1.3113 + 0.8911 0.8841 0.8777 0.8715 0.8602 0.8507 + -0.2152 -0.2157 -0.2162 -0.2167 -0.2178 -0.2189 + 150.0 + -1.7076 -1.6577 -1.6137 -1.5715 -1.4942 -1.4250 + 0.8106 0.8035 0.7971 0.7909 0.7796 0.7702 + -0.1495 -0.1501 -0.1506 -0.1511 -0.1522 -0.1533 +PKPab 7 145.0 175.0 + 145.0 + -1.9052 -1.8403 -1.7859 -1.7372 -1.6463 -1.5641 + 1.0140 0.9964 0.9845 0.9727 0.9525 0.9342 + -0.4037 -0.4121 -0.4185 -0.4233 -0.4335 -0.4443 + 150.0 + -1.9420 -1.8898 -1.8427 -1.7988 -1.7174 -1.6430 + 0.8570 0.8495 0.8427 0.8351 0.8206 0.8074 + -0.3922 -0.3949 -0.3981 -0.4008 -0.4071 -0.4146 + 155.0 + -2.0155 -1.9647 -1.9194 -1.8760 -1.7959 -1.7235 + 0.7277 0.7202 0.7132 0.7064 0.6934 0.6814 + -0.3672 -0.3694 -0.3718 -0.3744 -0.3802 -0.3870 + 160.0 + -2.0814 -2.0310 -1.9863 -1.9435 -1.8647 -1.7938 + 0.5931 0.5854 0.5785 0.5717 0.5589 0.5477 + -0.3486 -0.3505 -0.3527 -0.3551 -0.3604 -0.3665 + 165.0 + -2.1358 -2.0856 -2.0412 -1.9986 -1.9205 -1.8505 + 0.4495 0.4421 0.4353 0.4287 0.4164 0.4056 + -0.3379 -0.3397 -0.3418 -0.3441 -0.3490 -0.3548 + 170.0 + -2.1728 -2.1229 -2.0787 -2.0365 -1.9590 -1.8898 + 0.3008 0.2934 0.2867 0.2801 0.2680 0.2575 + -0.3377 -0.3395 -0.3415 -0.3436 -0.3482 -0.3536 + 175.0 + -2.1913 -2.1416 -2.0977 -2.0558 -1.9789 -1.9104 + 0.1490 0.1419 0.1351 0.1284 0.1162 0.1066 + -0.3487 -0.3503 -0.3522 -0.3542 -0.3586 -0.3635 +PKPbc 3 145.0 155.0 + 145.0 + -1.9159 -1.8872 -1.8518 -1.8184 -1.7544 -1.6994 + 1.0228 1.0328 1.0369 1.0387 1.0436 1.0489 + -0.3988 -0.3903 -0.3878 -0.3852 -0.3822 -0.3791 + 150.0 + -2.1611 -2.1105 -2.0696 -2.0297 -1.9559 -1.8946 + 0.9992 0.9959 0.9937 0.9923 0.9919 0.9902 + -0.2831 -0.2844 -0.2841 -0.2842 -0.2852 -0.2844 + 155.0 + -2.3189 -2.2708 -2.2285 -2.1884 -2.1155 -2.0521 + 0.8872 0.8852 0.8837 0.8824 0.8818 0.8825 + -0.2054 -0.2056 -0.2058 -0.2059 -0.2062 -0.2063 +PKPdf 14 115.0 180.0 + 115.0 + -1.0397 -0.9890 -0.9441 -0.9043 -0.8270 -0.7620 + 0.9887 0.9848 0.9815 0.9807 0.9755 0.9745 + -0.8659 -0.8688 -0.8726 -0.8724 -0.8749 -0.8755 + 120.0 + -1.1835 -1.1351 -1.0924 -1.0518 -0.9774 -0.9120 + 1.0861 1.0840 1.0822 1.0806 1.0779 1.0765 + -0.7954 -0.7956 -0.7960 -0.7963 -0.7972 -0.7981 + 125.0 + -1.3465 -1.2979 -1.2553 -1.2145 -1.1403 -1.0747 + 1.1574 1.1551 1.1534 1.1517 1.1492 1.1477 + -0.7104 -0.7107 -0.7110 -0.7114 -0.7123 -0.7132 + 130.0 + -1.5177 -1.4691 -1.4264 -1.3857 -1.3116 -1.2461 + 1.1958 1.1936 1.1919 1.1903 1.1878 1.1864 + -0.6207 -0.6210 -0.6213 -0.6217 -0.6225 -0.6234 + 135.0 + -1.6923 -1.6437 -1.6010 -1.5604 -1.4863 -1.4209 + 1.2007 1.1985 1.1968 1.1953 1.1929 1.1915 + -0.5290 -0.5293 -0.5296 -0.5300 -0.5307 -0.5316 + 140.0 + -1.8661 -1.8176 -1.7749 -1.7343 -1.6603 -1.5949 + 1.1720 1.1699 1.1683 1.1668 1.1645 1.1633 + -0.4377 -0.4380 -0.4383 -0.4386 -0.4393 -0.4402 + 145.0 + -2.0342 -1.9857 -1.9432 -1.9026 -1.8287 -1.7635 + 1.1108 1.1088 1.1073 1.1060 1.1039 1.1028 + -0.3497 -0.3499 -0.3502 -0.3504 -0.3511 -0.3518 + 150.0 + -2.1928 -2.1443 -2.1017 -2.0612 -1.9875 -1.9223 + 1.0193 1.0176 1.0163 1.0152 1.0135 1.0128 + -0.2669 -0.2672 -0.2674 -0.2676 -0.2681 -0.2688 + 155.0 + -2.3375 -2.2891 -2.2466 -2.2061 -2.1328 -2.0682 + 0.8994 0.8981 0.8971 0.8961 0.8943 0.8934 + -0.1916 -0.1917 -0.1919 -0.1921 -0.1923 -0.1925 + 160.0 + -2.4636 -2.4153 -2.3728 -2.3324 -2.2592 -2.1946 + 0.7537 0.7527 0.7517 0.7510 0.7494 0.7486 + -0.1259 -0.1260 -0.1261 -0.1262 -0.1263 -0.1264 + 165.0 + -2.5665 -2.5182 -2.4759 -2.4355 -2.3621 -2.2973 + 0.5859 0.5850 0.5842 0.5835 0.5826 0.5822 + -0.0723 -0.0723 -0.0723 -0.0724 -0.0725 -0.0726 + 170.0 + -2.6425 -2.5942 -2.5518 -2.5114 -2.4379 -2.3731 + 0.4005 0.4001 0.3997 0.3993 0.3987 0.3986 + -0.0326 -0.0326 -0.0326 -0.0327 -0.0327 -0.0328 + 175.0 + -2.6891 -2.6408 -2.5985 -2.5581 -2.4846 -2.4198 + 0.2031 0.2029 0.2027 0.2025 0.2021 0.2020 + -0.0082 -0.0082 -0.0082 -0.0082 -0.0082 -0.0082 + 180.0 + -2.7048 -2.6565 -2.6141 -2.5738 -2.5003 -2.4355 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +PKiKP 32 0.0 155.0 + 0.0 + -2.3493 -2.3010 -2.2586 -2.2183 -2.1448 -2.0800 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + -2.3354 -2.2871 -2.2447 -2.2043 -2.1308 -2.0661 + -0.1766 -0.1768 -0.1769 -0.1770 -0.1773 -0.1774 + -0.0083 -0.0083 -0.0083 -0.0083 -0.0083 -0.0083 + 10.0 + -2.2939 -2.2456 -2.2032 -2.1628 -2.0894 -2.0246 + -0.3475 -0.3477 -0.3480 -0.3482 -0.3487 -0.3491 + -0.0329 -0.0329 -0.0329 -0.0330 -0.0330 -0.0330 + 15.0 + -2.2264 -2.1780 -2.1356 -2.0952 -2.0217 -1.9569 + -0.5070 -0.5073 -0.5077 -0.5081 -0.5088 -0.5094 + -0.0731 -0.0732 -0.0732 -0.0732 -0.0732 -0.0733 + 20.0 + -2.1348 -2.0865 -2.0441 -2.0036 -1.9301 -1.8652 + -0.6498 -0.6503 -0.6509 -0.6514 -0.6523 -0.6530 + -0.1277 -0.1277 -0.1277 -0.1277 -0.1278 -0.1279 + 25.0 + -2.0222 -1.9739 -1.9314 -1.8910 -1.8174 -1.7525 + -0.7714 -0.7720 -0.7727 -0.7733 -0.7744 -0.7753 + -0.1948 -0.1948 -0.1949 -0.1949 -0.1950 -0.1951 + 30.0 + -1.8922 -1.8439 -1.8014 -1.7609 -1.6873 -1.6224 + -0.8677 -0.8684 -0.8692 -0.8699 -0.8712 -0.8723 + -0.2724 -0.2725 -0.2725 -0.2726 -0.2727 -0.2729 + 35.0 + -1.7490 -1.7006 -1.6581 -1.6176 -1.5440 -1.4789 + -0.9354 -0.9362 -0.9371 -0.9380 -0.9395 -0.9407 + -0.3582 -0.3583 -0.3583 -0.3584 -0.3586 -0.3588 + 40.0 + -1.5971 -1.5486 -1.5061 -1.4656 -1.3919 -1.3268 + -0.9721 -0.9732 -0.9742 -0.9752 -0.9769 -0.9782 + -0.4494 -0.4495 -0.4496 -0.4497 -0.4499 -0.4502 + 45.0 + -1.4414 -1.3929 -1.3504 -1.3099 -1.2361 -1.1709 + -0.9767 -0.9780 -0.9791 -0.9802 -0.9820 -0.9834 + -0.5432 -0.5433 -0.5434 -0.5436 -0.5438 -0.5442 + 50.0 + -1.2869 -1.2384 -1.1959 -1.1554 -1.0815 -1.0163 + -0.9489 -0.9502 -0.9514 -0.9526 -0.9546 -0.9561 + -0.6368 -0.6369 -0.6370 -0.6372 -0.6375 -0.6379 + 55.0 + -1.1386 -1.0902 -1.0476 -1.0070 -0.9331 -0.8678 + -0.8892 -0.8906 -0.8919 -0.8931 -0.8952 -0.8968 + -0.7272 -0.7273 -0.7275 -0.7276 -0.7280 -0.7285 + 60.0 + -1.0014 -0.9529 -0.9103 -0.8697 -0.7957 -0.7304 + -0.7994 -0.8009 -0.8022 -0.8035 -0.8058 -0.8074 + -0.8116 -0.8118 -0.8120 -0.8122 -0.8126 -0.8131 + 65.0 + -0.8795 -0.8310 -0.7884 -0.7477 -0.6737 -0.6083 + -0.6820 -0.6835 -0.6850 -0.6864 -0.6887 -0.6904 + -0.8875 -0.8877 -0.8879 -0.8882 -0.8886 -0.8892 + 70.0 + -0.7771 -0.7286 -0.6859 -0.6453 -0.5712 -0.5058 + -0.5405 -0.5422 -0.5437 -0.5452 -0.5476 -0.5493 + -0.9526 -0.9528 -0.9531 -0.9533 -0.9539 -0.9545 + 75.0 + -0.6975 -0.6489 -0.6063 -0.5656 -0.4915 -0.4260 + -0.3792 -0.3810 -0.3826 -0.3841 -0.3866 -0.3884 + -1.0049 -1.0052 -1.0054 -1.0057 -1.0063 -1.0070 + 80.0 + -0.6434 -0.5948 -0.5522 -0.5115 -0.4373 -0.3718 + -0.2029 -0.2049 -0.2065 -0.2081 -0.2106 -0.2125 + -1.0429 -1.0431 -1.0434 -1.0436 -1.0443 -1.0450 + 85.0 + -0.6168 -0.5682 -0.5255 -0.4848 -0.4106 -0.3450 + -0.0171 -0.0191 -0.0208 -0.0224 -0.0251 -0.0269 + -1.0653 -1.0655 -1.0658 -1.0661 -1.0668 -1.0676 + 90.0 + -0.6187 -0.5701 -0.5274 -0.4867 -0.4125 -0.3468 + 0.1727 0.1706 0.1689 0.1672 0.1646 0.1628 + -1.0715 -1.0718 -1.0721 -1.0724 -1.0731 -1.0740 + 95.0 + -0.6493 -0.6007 -0.5580 -0.5173 -0.4431 -0.3774 + 0.3607 0.3586 0.3568 0.3552 0.3525 0.3507 + -1.0615 -1.0617 -1.0621 -1.0624 -1.0632 -1.0641 + 100.0 + -0.7081 -0.6595 -0.6168 -0.5761 -0.5018 -0.4361 + 0.5412 0.5391 0.5373 0.5356 0.5329 0.5311 + -1.0355 -1.0358 -1.0361 -1.0364 -1.0372 -1.0382 + 105.0 + -0.7935 -0.7449 -0.7022 -0.6614 -0.5872 -0.5215 + 0.7088 0.7066 0.7048 0.7031 0.7003 0.6986 + -0.9944 -0.9947 -0.9950 -0.9954 -0.9962 -0.9971 + 110.0 + -0.9032 -0.8546 -0.8119 -0.7711 -0.6969 -0.6312 + 0.8582 0.8559 0.8541 0.8523 0.8496 0.8479 + -0.9394 -0.9398 -0.9401 -0.9405 -0.9413 -0.9423 + 115.0 + -1.0342 -0.9856 -0.9428 -0.9021 -0.8279 -0.7622 + 0.9847 0.9824 0.9806 0.9788 0.9761 0.9744 + -0.8725 -0.8728 -0.8732 -0.8736 -0.8744 -0.8754 + 120.0 + -1.1827 -1.1341 -1.0913 -1.0506 -0.9764 -0.9107 + 1.0845 1.0822 1.0803 1.0786 1.0759 1.0742 + -0.7956 -0.7960 -0.7963 -0.7967 -0.7976 -0.7986 + 125.0 + -1.3445 -1.2959 -1.2532 -1.2124 -1.1382 -1.0726 + 1.1544 1.1521 1.1502 1.1485 1.1458 1.1442 + -0.7113 -0.7116 -0.7120 -0.7124 -0.7133 -0.7143 + 130.0 + -1.5149 -1.4662 -1.4235 -1.3828 -1.3086 -1.2430 + 1.1922 1.1898 1.1880 1.1862 1.1835 1.1819 + -0.6221 -0.6225 -0.6228 -0.6232 -0.6241 -0.6251 + 135.0 + -1.6889 -1.6403 -1.5976 -1.5569 -1.4827 -1.4171 + 1.1965 1.1941 1.1923 1.1905 1.1878 1.1863 + -0.5310 -0.5313 -0.5317 -0.5321 -0.5330 -0.5340 + 140.0 + -1.8615 -1.8128 -1.7701 -1.7295 -1.6553 -1.5897 + 1.1670 1.1647 1.1628 1.1611 1.1584 1.1569 + -0.4408 -0.4412 -0.4416 -0.4419 -0.4428 -0.4439 + 145.0 + -2.0274 -1.9789 -1.9363 -1.8956 -1.8214 -1.7558 + 1.1046 1.1022 1.1003 1.0986 1.0959 1.0944 + -0.3546 -0.3549 -0.3553 -0.3556 -0.3565 -0.3576 + 150.0 + -2.1820 -2.1334 -2.0909 -2.0502 -1.9760 -1.9104 + 1.0108 1.0085 1.0065 1.0048 1.0022 1.0007 + -0.2750 -0.2754 -0.2757 -0.2760 -0.2770 -0.2780 + 155.0 + -2.3199 -2.2716 -2.2307 -2.1860 -2.1144 -2.0496 + 0.8891 0.8866 0.8828 0.8853 0.8812 0.8809 + -0.2051 -0.2053 -0.2047 -0.2071 -0.2067 -0.2073 +pP 17 20.0 100.0 + 20.0 + -0.5572 -0.5925 -0.6115 -0.6148 -0.6214 -0.6280 + -0.1641 -0.2069 -0.2521 -0.2978 -0.3892 -0.4806 + -0.0631 -0.0616 -0.0641 -0.0731 -0.0591 -0.0591 + 25.0 + -0.6293 -0.6709 -0.6787 -0.6859 -0.7334 -0.7809 + -0.2287 -0.2654 -0.3116 -0.3588 -0.4290 -0.2992 + -0.0631 -0.1079 -0.0983 -0.1045 -0.1308 -0.1573 + 30.0 + -0.6535 -0.6970 -0.7287 -0.7524 -0.7644 -0.7764 + -0.2816 -0.3188 -0.3578 -0.3979 -0.4827 -0.5675 + -0.1524 -0.1513 -0.1519 -0.1540 -0.1707 -0.1874 + 35.0 + -0.6641 -0.7076 -0.7407 -0.7664 -0.7864 -0.8064 + -0.3314 -0.3672 -0.4057 -0.4449 -0.5293 -0.6137 + -0.2035 -0.2011 -0.2007 -0.2017 -0.2166 -0.2315 + 40.0 + -0.6605 -0.7050 -0.7397 -0.7677 -0.7939 -0.7424 + -0.3699 -0.4052 -0.4428 -0.4821 -0.5679 -0.6583 + -0.2619 -0.2593 -0.2578 -0.2581 -0.2693 -0.3140 + 45.0 + -0.6435 -0.6891 -0.7255 -0.7555 -0.7892 -0.7612 + -0.3940 -0.4286 -0.4655 -0.5047 -0.5904 -0.6848 + -0.3267 -0.3238 -0.3215 -0.3218 -0.3300 -0.3614 + 50.0 + -0.6160 -0.6625 -0.7003 -0.7322 -0.7729 -0.7640 + -0.4002 -0.4341 -0.4704 -0.5089 -0.5936 -0.6896 + -0.3956 -0.3924 -0.3900 -0.3896 -0.3951 -0.4184 + 55.0 + -0.5817 -0.6289 -0.6680 -0.7014 -0.7476 -0.7534 + -0.3865 -0.4196 -0.4553 -0.4929 -0.5761 -0.6718 + -0.4657 -0.4626 -0.4597 -0.4592 -0.4633 -0.4804 + 60.0 + -0.5438 -0.5916 -0.6315 -0.6671 -0.7178 -0.7345 + -0.3514 -0.3836 -0.4184 -0.4557 -0.5369 -0.6313 + -0.5360 -0.5330 -0.5303 -0.5282 -0.5313 -0.5445 + 65.0 + -0.5069 -0.5552 -0.5957 -0.6319 -0.6873 -0.7126 + -0.2947 -0.3259 -0.3598 -0.3955 -0.4752 -0.5677 + -0.6033 -0.6003 -0.5978 -0.5964 -0.5973 -0.6076 + 70.0 + -0.4752 -0.5239 -0.5649 -0.6021 -0.6607 -0.6928 + -0.2173 -0.2478 -0.2803 -0.3153 -0.3927 -0.4824 + -0.6650 -0.6620 -0.6598 -0.6581 -0.6584 -0.6664 + 75.0 + -0.4525 -0.5013 -0.5428 -0.5807 -0.6420 -0.6797 + -0.1206 -0.1496 -0.1811 -0.2150 -0.2901 -0.3766 + -0.7192 -0.7166 -0.7144 -0.7127 -0.7123 -0.7187 + 80.0 + -0.4421 -0.4910 -0.5329 -0.5713 -0.6348 -0.6774 + -0.0072 -0.0352 -0.0654 -0.0979 -0.1687 -0.2531 + -0.7632 -0.7608 -0.7587 -0.7572 -0.7570 -0.7616 + 85.0 + -0.4476 -0.4965 -0.5387 -0.5773 -0.6427 -0.6891 + 0.1213 0.0947 0.0651 0.0344 -0.0336 -0.1138 + -0.7962 -0.7940 -0.7919 -0.7906 -0.7900 -0.7937 + 90.0 + -0.4699 -0.5193 -0.5619 -0.6016 -0.6691 -0.7179 + 0.2557 0.2311 0.2044 0.1759 0.1123 0.0373 + -0.8164 -0.8143 -0.8124 -0.8108 -0.8096 -0.8134 + 95.0 + -0.5096 -0.5584 -0.6008 -0.6406 -0.7091 -0.7618 + 0.3734 0.3490 0.3236 0.2977 0.2397 0.1734 + -0.8175 -0.8160 -0.8147 -0.8139 -0.8139 -0.8171 + 100.0 + -0.5675 -0.6161 -0.6595 -0.6989 -0.7670 -0.8199 + 0.4958 0.4695 0.4461 0.4196 0.3611 0.2946 + -0.8078 -0.8079 -0.8065 -0.8058 -0.8059 -0.8090 +pPKPab 7 145.0 175.0 + 145.0 + -1.9052 -1.9509 -2.0009 -2.0428 -2.1234 -2.1945 + 1.0140 0.9805 0.9576 0.9259 0.8644 0.7979 + -0.4037 -0.4016 -0.3956 -0.3915 -0.3814 -0.3710 + 150.0 + -1.9420 -1.9936 -2.0390 -2.0818 -2.1580 -2.2267 + 0.8570 0.8357 0.8132 0.7899 0.7410 0.6864 + -0.3922 -0.3898 -0.3875 -0.3855 -0.3824 -0.3791 + 155.0 + -2.0155 -2.0660 -2.1102 -2.1516 -2.2264 -2.2883 + 0.7277 0.7050 0.6809 0.6558 0.6003 0.5387 + -0.3672 -0.3653 -0.3635 -0.3620 -0.3596 -0.3592 + 160.0 + -2.0814 -2.1314 -2.1756 -2.2172 -2.2898 -2.3487 + 0.5931 0.5698 0.5442 0.5173 0.4596 0.3952 + -0.3486 -0.3468 -0.3450 -0.3434 -0.3419 -0.3429 + 165.0 + -2.1358 -2.1856 -2.2289 -2.2695 -2.3404 -2.3974 + 0.4495 0.4256 0.4000 0.3731 0.3144 0.2482 + -0.3379 -0.3362 -0.3347 -0.3336 -0.3329 -0.3347 + 170.0 + -2.1728 -2.2223 -2.2654 -2.3056 -2.3757 -2.4315 + 0.3008 0.2767 0.2508 0.2236 0.1641 0.0969 + -0.3377 -0.3362 -0.3348 -0.3339 -0.3335 -0.3359 + 175.0 + -2.1913 -2.2406 -2.2835 -2.3234 -2.3928 -2.4476 + 0.1490 0.1250 0.0990 0.0717 0.0118 -0.0559 + -0.3487 -0.3472 -0.3460 -0.3452 -0.3452 -0.3481 +pPKPbc 3 145.0 155.0 + 145.0 + -1.9159 -1.9817 -2.0230 -2.0721 -2.1525 -2.2197 + 1.0228 1.0057 0.9771 0.9525 0.8930 0.8232 + -0.3988 -0.3875 -0.3856 -0.3782 -0.3682 -0.3592 + 150.0 + -2.1611 -2.2048 -2.2471 -2.2867 -2.3533 -2.4108 + 0.9992 0.9838 0.9665 0.9483 0.9094 0.8593 + -0.2831 -0.2850 -0.2846 -0.2847 -0.2872 -0.2900 + 155.0 + -2.3189 -2.3671 -2.4091 -2.4487 -2.5191 -2.5781 + 0.8872 0.8743 0.8603 0.8457 0.8138 0.7778 + -0.2054 -0.2053 -0.2053 -0.2054 -0.2064 -0.2087 +pPKPdf 14 115.0 180.0 + 115.0 + -1.0397 -1.0904 -1.1352 -1.1780 -1.2561 -1.3253 + 0.9887 0.9790 0.9686 0.9578 0.9342 0.9078 + -0.8659 -0.8631 -0.8599 -0.8565 -0.8493 -0.8412 + 120.0 + -1.1835 -1.2320 -1.2746 -1.3151 -1.3877 -1.4504 + 1.0861 1.0747 1.0624 1.0496 1.0212 0.9889 + -0.7954 -0.7951 -0.7948 -0.7946 -0.7946 -0.7953 + 125.0 + -1.3465 -1.3950 -1.4375 -1.4777 -1.5505 -1.6134 + 1.1574 1.1460 1.1337 1.1207 1.0925 1.0604 + -0.7104 -0.7101 -0.7099 -0.7098 -0.7098 -0.7104 + 130.0 + -1.5177 -1.5662 -1.6086 -1.6489 -1.7217 -1.7846 + 1.1958 1.1844 1.1723 1.1595 1.1314 1.0996 + -0.6207 -0.6204 -0.6202 -0.6201 -0.6201 -0.6206 + 135.0 + -1.6923 -1.7407 -1.7832 -1.8235 -1.8963 -1.9593 + 1.2007 1.1895 1.1775 1.1649 1.1371 1.1056 + -0.5290 -0.5287 -0.5285 -0.5284 -0.5284 -0.5289 + 140.0 + -1.8661 -1.9146 -1.9570 -1.9973 -2.0700 -2.1330 + 1.1720 1.1610 1.1494 1.1370 1.1100 1.0791 + -0.4377 -0.4375 -0.4373 -0.4372 -0.4372 -0.4377 + 145.0 + -2.0342 -2.0826 -2.1250 -2.1653 -2.2380 -2.3011 + 1.1108 1.1003 1.0892 1.0774 1.0514 1.0218 + -0.3497 -0.3495 -0.3493 -0.3492 -0.3492 -0.3498 + 150.0 + -2.1928 -2.2413 -2.2839 -2.3245 -2.3985 -2.4608 + 1.0193 1.0097 0.9992 0.9881 0.9630 0.9360 + -0.2669 -0.2667 -0.2665 -0.2662 -0.2656 -0.2665 + 155.0 + -2.3375 -2.3859 -2.4283 -2.4686 -2.5415 -2.6051 + 0.8994 0.8911 0.8820 0.8725 0.8514 0.8272 + -0.1916 -0.1914 -0.1913 -0.1913 -0.1913 -0.1917 + 160.0 + -2.4636 -2.5120 -2.5544 -2.5947 -2.6677 -2.7316 + 0.7537 0.7469 0.7393 0.7316 0.7141 0.6940 + -0.1259 -0.1258 -0.1257 -0.1257 -0.1257 -0.1260 + 165.0 + -2.5665 -2.6148 -2.6571 -2.6973 -2.7702 -2.8346 + 0.5859 0.5808 0.5753 0.5697 0.5569 0.5413 + -0.0723 -0.0723 -0.0723 -0.0723 -0.0725 -0.0726 + 170.0 + -2.6425 -2.6908 -2.7332 -2.7736 -2.8469 -2.9114 + 0.4005 0.3968 0.3930 0.3892 0.3802 0.3699 + -0.0326 -0.0326 -0.0326 -0.0325 -0.0326 -0.0326 + 175.0 + -2.6891 -2.7375 -2.7798 -2.8202 -2.8936 -2.9583 + 0.2031 0.2017 0.1995 0.1975 0.1931 0.1878 + -0.0082 -0.0082 -0.0082 -0.0082 -0.0082 -0.0082 + 180.0 + -2.7048 -2.7531 -2.7955 -2.8359 -2.9094 -2.9741 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +pPKiKP 32 0.0 155.0 + 0.0 + -2.3493 -2.3976 -2.4400 -2.4804 -2.5539 -2.6186 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + -2.3354 -2.3837 -2.4261 -2.4664 -2.5399 -2.6047 + -0.1766 -0.1765 -0.1773 -0.1788 -0.1802 -0.1820 + -0.0083 -0.0083 -0.0083 -0.0083 -0.0083 -0.0083 + 10.0 + -2.2939 -2.3422 -2.3846 -2.4250 -2.4985 -2.5632 + -0.3475 -0.3503 -0.3504 -0.3516 -0.3546 -0.3580 + -0.0329 -0.0329 -0.0329 -0.0329 -0.0329 -0.0329 + 15.0 + -2.2264 -2.2747 -2.3171 -2.3575 -2.4309 -2.4957 + -0.5070 -0.5088 -0.5107 -0.5130 -0.5176 -0.5228 + -0.0731 -0.0731 -0.0731 -0.0731 -0.0731 -0.0731 + 20.0 + -2.1348 -2.1831 -2.2256 -2.2659 -2.3394 -2.4041 + -0.6498 -0.6521 -0.6553 -0.6579 -0.6640 -0.6710 + -0.1277 -0.1276 -0.1276 -0.1276 -0.1276 -0.1276 + 25.0 + -2.0222 -2.0706 -2.1130 -2.1534 -2.2269 -2.2915 + -0.7714 -0.7743 -0.7780 -0.7815 -0.7891 -0.7977 + -0.1948 -0.1947 -0.1947 -0.1947 -0.1947 -0.1947 + 30.0 + -1.8922 -1.9406 -1.9830 -2.0234 -2.0969 -2.1615 + -0.8677 -0.8714 -0.8754 -0.8796 -0.8889 -0.8991 + -0.2724 -0.2724 -0.2723 -0.2723 -0.2723 -0.2723 + 35.0 + -1.7490 -1.7973 -1.8398 -1.8802 -1.9537 -2.0183 + -0.9354 -0.9401 -0.9444 -0.9494 -0.9600 -0.9719 + -0.3582 -0.3581 -0.3581 -0.3580 -0.3580 -0.3580 + 40.0 + -1.5971 -1.6454 -1.6879 -1.7283 -1.8018 -1.8663 + -0.9721 -0.9770 -0.9823 -0.9878 -0.9999 -1.0135 + -0.4494 -0.4493 -0.4492 -0.4492 -0.4491 -0.4492 + 45.0 + -1.4414 -1.4898 -1.5322 -1.5727 -1.6461 -1.7106 + -0.9767 -0.9822 -0.9882 -0.9944 -1.0079 -1.0230 + -0.5432 -0.5431 -0.5430 -0.5430 -0.5429 -0.5429 + 50.0 + -1.2869 -1.3353 -1.3778 -1.4182 -1.4917 -1.5561 + -0.9489 -0.9551 -0.9615 -0.9684 -0.9832 -0.9999 + -0.6368 -0.6366 -0.6366 -0.6365 -0.6364 -0.6364 + 55.0 + -1.1386 -1.1871 -1.2296 -1.2700 -1.3434 -1.4078 + -0.8892 -0.8960 -0.9029 -0.9104 -0.9266 -0.9448 + -0.7272 -0.7270 -0.7269 -0.7268 -0.7267 -0.7268 + 60.0 + -1.0014 -1.0498 -1.0923 -1.1328 -1.2061 -1.2704 + -0.7994 -0.8067 -0.8142 -0.8222 -0.8397 -0.8593 + -0.8116 -0.8115 -0.8113 -0.8112 -0.8111 -0.8112 + 65.0 + -0.8795 -0.9280 -0.9705 -1.0109 -1.0843 -1.1485 + -0.6820 -0.6898 -0.6979 -0.7064 -0.7252 -0.7462 + -0.8875 -0.8874 -0.8872 -0.8871 -0.8870 -0.8871 + 70.0 + -0.7771 -0.8256 -0.8681 -0.9085 -0.9818 -1.0459 + -0.5405 -0.5485 -0.5574 -0.5665 -0.5864 -0.6089 + -0.9526 -0.9525 -0.9523 -0.9522 -0.9521 -0.9522 + 75.0 + -0.6975 -0.7460 -0.7885 -0.8290 -0.9022 -0.9662 + -0.3792 -0.3878 -0.3971 -0.4068 -0.4278 -0.4515 + -1.0049 -1.0047 -1.0046 -1.0044 -1.0043 -1.0045 + 80.0 + -0.6434 -0.6919 -0.7345 -0.7749 -0.8481 -0.9120 + -0.2029 -0.2119 -0.2217 -0.2319 -0.2540 -0.2789 + -1.0429 -1.0426 -1.0425 -1.0423 -1.0422 -1.0424 + 85.0 + -0.6168 -0.6653 -0.7078 -0.7483 -0.8214 -0.8852 + -0.0171 -0.0265 -0.0368 -0.0474 -0.0706 -0.0967 + -1.0653 -1.0650 -1.0648 -1.0647 -1.0646 -1.0649 + 90.0 + -0.6187 -0.6672 -0.7097 -0.7502 -0.8233 -0.8869 + 0.1727 0.1629 0.1523 0.1412 0.1170 0.0898 + -1.0715 -1.0713 -1.0711 -1.0709 -1.0708 -1.0711 + 95.0 + -0.6493 -0.6979 -0.7404 -0.7808 -0.8539 -0.9174 + 0.3607 0.3505 0.3395 0.3281 0.3030 0.2747 + -1.0615 -1.0612 -1.0610 -1.0608 -1.0608 -1.0611 + 100.0 + -0.7081 -0.7567 -0.7992 -0.8396 -0.9126 -0.9760 + 0.5412 0.5306 0.5194 0.5075 0.4816 0.4523 + -1.0355 -1.0352 -1.0350 -1.0348 -1.0348 -1.0351 + 105.0 + -0.7935 -0.8421 -0.8846 -0.9250 -0.9979 -1.0612 + 0.7088 0.6979 0.6864 0.6741 0.6474 0.6173 + -0.9944 -0.9941 -0.9939 -0.9937 -0.9937 -0.9941 + 110.0 + -0.9032 -0.9518 -0.9943 -1.0346 -1.1075 -1.1707 + 0.8582 0.8471 0.8351 0.8225 0.7951 0.7642 + -0.9394 -0.9392 -0.9389 -0.9388 -0.9388 -0.9392 + 115.0 + -1.0342 -1.0827 -1.1252 -1.1656 -1.2384 -1.3015 + 0.9847 0.9733 0.9610 0.9482 0.9202 0.8885 + -0.8725 -0.8722 -0.8720 -0.8718 -0.8718 -0.8723 + 120.0 + -1.1827 -1.2312 -1.2737 -1.3141 -1.3868 -1.4498 + 1.0845 1.0728 1.0604 1.0473 1.0187 0.9864 + -0.7956 -0.7954 -0.7951 -0.7950 -0.7950 -0.7955 + 125.0 + -1.3445 -1.3930 -1.4355 -1.4758 -1.5485 -1.6114 + 1.1544 1.1428 1.1299 1.1166 1.0875 1.0546 + -0.7113 -0.7110 -0.7108 -0.7106 -0.7106 -0.7112 + 130.0 + -1.5149 -1.5634 -1.6058 -1.6462 -1.7188 -1.7816 + 1.1922 1.1803 1.1674 1.1539 1.1243 1.0909 + -0.6221 -0.6219 -0.6216 -0.6215 -0.6215 -0.6221 + 135.0 + -1.6889 -1.7374 -1.7799 -1.8202 -1.8928 -1.9554 + 1.1965 1.1844 1.1714 1.1577 1.1278 1.0941 + -0.5310 -0.5308 -0.5305 -0.5303 -0.5304 -0.5311 + 140.0 + -1.8615 -1.9100 -1.9525 -1.9927 -2.0652 -2.1278 + 1.1670 1.1548 1.1417 1.1279 1.0978 1.0637 + -0.4408 -0.4406 -0.4403 -0.4402 -0.4403 -0.4410 + 145.0 + -2.0274 -2.0760 -2.1185 -2.1587 -2.2312 -2.2937 + 1.1046 1.0922 1.0790 1.0652 1.0348 1.0005 + -0.3546 -0.3543 -0.3540 -0.3539 -0.3540 -0.3548 + 150.0 + -2.1820 -2.2307 -2.2729 -2.3131 -2.3857 -2.4481 + 1.0108 0.9984 0.9853 0.9714 0.9408 0.9064 + -0.2750 -0.2747 -0.2745 -0.2744 -0.2745 -0.2753 + 155.0 + -2.3199 -2.3690 -2.4107 -2.4512 -2.5242 -2.5868 + 0.8891 0.8763 0.8637 0.8494 0.8183 0.7836 + -0.2051 -0.2045 -0.2047 -0.2044 -0.2042 -0.2049 +sP 20 5.0 100.0 + 5.0 + -0.1764 -0.2491 -0.3134 -0.3754 -0.4846 -0.5938 + -0.0133 0.0340 0.0804 0.1260 0.2154 0.3048 + -0.0019 -0.0015 -0.0005 0.0010 0.0058 0.0106 + 10.0 + -0.3206 -0.3937 -0.4584 -0.5207 -0.6305 -0.7182 + -0.0484 -0.0013 0.0450 0.0905 0.1797 0.2674 + -0.0069 -0.0063 -0.0052 -0.0036 0.0015 0.0100 + 15.0 + -0.4535 -0.5276 -0.5932 -0.6563 -0.7670 -0.8562 + -0.1027 -0.0562 -0.0105 0.0346 0.1234 0.2106 + -0.0178 -0.0170 -0.0157 -0.0138 -0.0080 0.0011 + 20.0 + -0.5572 -0.6365 -0.7077 -0.7769 -0.8834 -0.9810 + -0.1641 -0.1279 -0.0923 -0.0573 0.0396 0.1357 + -0.0631 -0.0616 -0.0597 -0.0574 -0.0381 -0.0152 + 25.0 + -0.6293 -0.7110 -0.7849 -0.8566 -0.9672 -1.0748 + -0.2287 -0.1993 -0.1706 -0.1424 -0.0597 0.0054 + -0.1097 -0.1083 -0.1065 -0.1044 -0.0864 -0.0765 + 30.0 + -0.6535 -0.7369 -0.8109 -0.8822 -1.0127 -1.1273 + -0.2816 -0.2545 -0.2268 -0.1985 -0.1456 -0.0956 + -0.1524 -0.1517 -0.1499 -0.1471 -0.1420 -0.1344 + 35.0 + -0.6641 -0.7466 -0.8214 -0.8940 -1.0264 -1.1414 + -0.3314 -0.3040 -0.2772 -0.2509 -0.2004 -0.1521 + -0.2035 -0.2019 -0.1998 -0.1974 -0.1918 -0.1842 + 40.0 + -0.6605 -0.7434 -0.8187 -0.8919 -1.0256 -1.1418 + -0.3699 -0.3439 -0.3186 -0.2938 -0.2455 -0.2003 + -0.2619 -0.2602 -0.2580 -0.2556 -0.2488 -0.2414 + 45.0 + -0.6435 -0.7269 -0.8028 -0.8766 -1.0112 -1.1290 + -0.3940 -0.3696 -0.3457 -0.3223 -0.2777 -0.2354 + -0.3267 -0.3249 -0.3226 -0.3196 -0.3137 -0.3052 + 50.0 + -0.6160 -0.6999 -0.7762 -0.8505 -0.9860 -1.1051 + -0.4002 -0.3773 -0.3551 -0.3335 -0.2921 -0.2533 + -0.3956 -0.3937 -0.3912 -0.3882 -0.3824 -0.3737 + 55.0 + -0.5817 -0.6659 -0.7425 -0.8172 -0.9535 -1.0733 + -0.3865 -0.3652 -0.3446 -0.3246 -0.2864 -0.2512 + -0.4657 -0.4638 -0.4615 -0.4586 -0.4527 -0.4447 + 60.0 + -0.5438 -0.6283 -0.7052 -0.7800 -0.9170 -1.0376 + -0.3514 -0.3315 -0.3125 -0.2941 -0.2593 -0.2275 + -0.5360 -0.5342 -0.5319 -0.5294 -0.5238 -0.5155 + 65.0 + -0.5069 -0.5916 -0.6687 -0.7438 -0.8811 -1.0025 + -0.2947 -0.2763 -0.2588 -0.2420 -0.2100 -0.1820 + -0.6033 -0.6015 -0.5993 -0.5968 -0.5914 -0.5833 + 70.0 + -0.4752 -0.5602 -0.6374 -0.7124 -0.8501 -0.9712 + -0.2173 -0.2008 -0.1846 -0.1689 -0.1400 -0.1144 + -0.6650 -0.6630 -0.6611 -0.6590 -0.6537 -0.6468 + 75.0 + -0.4525 -0.5374 -0.6147 -0.6899 -0.8277 -0.9488 + -0.1206 -0.1052 -0.0903 -0.0761 -0.0503 -0.0274 + -0.7192 -0.7175 -0.7157 -0.7137 -0.7087 -0.7025 + 80.0 + -0.4421 -0.5271 -0.6044 -0.6796 -0.8174 -0.9385 + -0.0072 0.0067 0.0201 0.0329 0.0563 0.0766 + -0.7632 -0.7617 -0.7600 -0.7582 -0.7537 -0.7481 + 85.0 + -0.4476 -0.5325 -0.6098 -0.6849 -0.8225 -0.9434 + 0.1213 0.1340 0.1458 0.1567 0.1774 0.1954 + -0.7962 -0.7949 -0.7933 -0.7915 -0.7875 -0.7826 + 90.0 + -0.4699 -0.5551 -0.6325 -0.7078 -0.8462 -0.9669 + 0.2557 0.2673 0.2782 0.2886 0.3096 0.3233 + -0.8164 -0.8151 -0.8136 -0.8120 -0.8086 -0.8036 + 95.0 + -0.5096 -0.5944 -0.6716 -0.7467 -0.8846 -1.0061 + 0.3734 0.3849 0.3955 0.4059 0.4259 0.4440 + -0.8175 -0.8165 -0.8154 -0.8142 -0.8114 -0.8078 + 100.0 + -0.5674 -0.6526 -0.7298 -0.8053 -0.9427 -1.0632 + 0.4946 0.5058 0.5157 0.5263 0.5442 0.5591 + -0.8096 -0.8085 -0.8073 -0.8061 -0.8034 -0.8000 +sPKPab 7 145.0 175.0 + 145.0 + -1.9052 -1.9854 -2.0669 -2.1477 -2.2825 -2.4148 + 1.0140 1.0113 1.0182 1.0269 1.0239 1.0333 + -0.4037 -0.4035 -0.3997 -0.3954 -0.3905 -0.3800 + 150.0 + -1.9420 -2.0284 -2.1072 -2.1838 -2.3246 -2.4490 + 0.8570 0.8673 0.8771 0.8863 0.9031 0.9173 + -0.3922 -0.3907 -0.3891 -0.3874 -0.3836 -0.3790 + 155.0 + -2.0155 -2.1013 -2.1794 -2.2554 -2.3949 -2.5182 + 0.7277 0.7382 0.7481 0.7574 0.7742 0.7876 + -0.3672 -0.3660 -0.3647 -0.3632 -0.3599 -0.3556 + 160.0 + -2.0814 -2.1668 -2.2447 -2.3204 -2.4606 -2.5835 + 0.5931 0.6038 0.6138 0.6232 0.6385 0.6514 + -0.3486 -0.3475 -0.3462 -0.3449 -0.3412 -0.3371 + 165.0 + -2.1358 -2.2211 -2.2989 -2.3745 -2.5131 -2.6350 + 0.4495 0.4601 0.4701 0.4794 0.4959 0.5089 + -0.3379 -0.3368 -0.3356 -0.3343 -0.3313 -0.3276 + 170.0 + -2.1728 -2.2580 -2.3356 -2.4110 -2.5493 -2.6708 + 0.3008 0.3115 0.3214 0.3308 0.3472 0.3603 + -0.3377 -0.3367 -0.3356 -0.3344 -0.3315 -0.3280 + 175.0 + -2.1913 -2.2764 -2.3539 -2.4292 -2.5671 -2.6882 + 0.1490 0.1599 0.1698 0.1791 0.1957 0.2088 + -0.3487 -0.3478 -0.3467 -0.3456 -0.3428 -0.3395 +sPKPbc 3 145.0 155.0 + 145.0 + -1.9159 -2.0153 -2.0906 -2.1605 -2.3139 -2.4255 + 1.0228 1.0340 1.0363 1.0368 1.0455 1.0401 + -0.3988 -0.3897 -0.3890 -0.3898 -0.3763 -0.3751 + 150.0 + -2.1611 -2.2407 -2.3176 -2.3921 -2.5276 -2.6440 + 0.9992 1.0039 1.0077 1.0112 1.0169 1.0214 + -0.2831 -0.2852 -0.2848 -0.2845 -0.2839 -0.2840 + 155.0 + -2.3189 -2.4033 -2.4798 -2.5540 -2.6893 -2.8068 + 0.8872 0.8912 0.8950 0.8985 0.9043 0.9086 + -0.2054 -0.2053 -0.2052 -0.2051 -0.2048 -0.2046 +sPKPdf 14 115.0 180.0 + 115.0 + -1.0397 -1.1253 -1.2031 -1.2786 -1.4168 -1.5379 + 0.9887 0.9935 0.9982 1.0026 1.0106 1.0174 + -0.8659 -0.8643 -0.8625 -0.8605 -0.8561 -0.8508 + 120.0 + -1.1835 -1.2683 -1.3447 -1.4194 -1.5554 -1.6741 + 1.0861 1.0901 1.0936 1.0971 1.1027 1.1067 + -0.7954 -0.7950 -0.7950 -0.7947 -0.7941 -0.7935 + 125.0 + -1.3465 -1.4310 -1.5077 -1.5822 -1.7180 -1.8367 + 1.1574 1.1612 1.1648 1.1681 1.1737 1.1776 + -0.7104 -0.7102 -0.7100 -0.7098 -0.7093 -0.7087 + 130.0 + -1.5177 -1.6022 -1.6789 -1.7533 -1.8893 -2.0078 + 1.1958 1.1996 1.2032 1.2065 1.2121 1.2159 + -0.6207 -0.6205 -0.6203 -0.6201 -0.6196 -0.6190 + 135.0 + -1.6923 -1.7767 -1.8535 -1.9279 -2.0638 -2.1824 + 1.2007 1.2044 1.2079 1.2112 1.2166 1.2204 + -0.5290 -0.5288 -0.5286 -0.5284 -0.5279 -0.5274 + 140.0 + -1.8661 -1.9506 -2.0273 -2.1017 -2.2376 -2.3560 + 1.1720 1.1756 1.1790 1.1821 1.1874 1.1910 + -0.4377 -0.4375 -0.4374 -0.4372 -0.4368 -0.4362 + 145.0 + -2.0342 -2.1187 -2.1953 -2.2697 -2.4055 -2.5239 + 1.1108 1.1143 1.1175 1.1204 1.1254 1.1288 + -0.3497 -0.3495 -0.3494 -0.3492 -0.3488 -0.3484 + 150.0 + -2.1928 -2.2773 -2.3540 -2.4285 -2.5646 -2.6843 + 1.0193 1.0224 1.0252 1.0278 1.0320 1.0340 + -0.2669 -0.2668 -0.2666 -0.2664 -0.2659 -0.2647 + 155.0 + -2.3375 -2.4219 -2.4986 -2.5729 -2.7085 -2.8267 + 0.8994 0.9023 0.9048 0.9071 0.9109 0.9135 + -0.1916 -0.1915 -0.1914 -0.1913 -0.1910 -0.1907 + 160.0 + -2.4636 -2.5480 -2.6246 -2.6989 -2.8345 -2.9526 + 0.7537 0.7558 0.7578 0.7597 0.7629 0.7650 + -0.1259 -0.1258 -0.1258 -0.1257 -0.1255 -0.1254 + 165.0 + -2.5665 -2.6509 -2.7274 -2.8016 -2.9370 -3.0547 + 0.5859 0.5875 0.5892 0.5907 0.5934 0.5957 + -0.0723 -0.0723 -0.0722 -0.0722 -0.0722 -0.0723 + 170.0 + -2.6425 -2.7269 -2.8034 -2.8777 -3.0132 -3.1312 + 0.4005 0.4017 0.4027 0.4037 0.4053 0.4064 + -0.0326 -0.0326 -0.0326 -0.0325 -0.0325 -0.0325 + 175.0 + -2.6891 -2.7735 -2.8500 -2.9243 -3.0598 -3.1778 + 0.2031 0.2035 0.2042 0.2048 0.2056 0.2062 + -0.0082 -0.0082 -0.0082 -0.0082 -0.0082 -0.0082 + 180.0 + -2.7048 -2.7892 -2.8657 -2.9400 -3.0755 -3.1934 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +sPKiKP 32 0.0 155.0 + 0.0 + -2.3493 -2.4337 -2.5102 -2.5845 -2.7200 -2.8379 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + -2.3354 -2.4197 -2.4963 -2.5705 -2.7060 -2.8240 + -0.1766 -0.1766 -0.1765 -0.1761 -0.1756 -0.1753 + -0.0083 -0.0083 -0.0083 -0.0083 -0.0083 -0.0083 + 10.0 + -2.2939 -2.3783 -2.4548 -2.5291 -2.6646 -2.7826 + -0.3475 -0.3473 -0.3464 -0.3461 -0.3454 -0.3448 + -0.0329 -0.0329 -0.0329 -0.0329 -0.0329 -0.0329 + 15.0 + -2.2264 -2.3107 -2.3873 -2.4615 -2.5971 -2.7151 + -0.5070 -0.5063 -0.5056 -0.5049 -0.5038 -0.5030 + -0.0731 -0.0731 -0.0731 -0.0731 -0.0731 -0.0731 + 20.0 + -2.1348 -2.2192 -2.2957 -2.3700 -2.5056 -2.6236 + -0.6498 -0.6488 -0.6479 -0.6471 -0.6457 -0.6446 + -0.1277 -0.1276 -0.1276 -0.1276 -0.1276 -0.1275 + 25.0 + -2.0222 -2.1066 -2.1832 -2.2575 -2.3930 -2.5111 + -0.7714 -0.7702 -0.7691 -0.7680 -0.7662 -0.7649 + -0.1948 -0.1948 -0.1947 -0.1947 -0.1947 -0.1946 + 30.0 + -1.8922 -1.9766 -2.0532 -2.1275 -2.2631 -2.3812 + -0.8677 -0.8663 -0.8649 -0.8637 -0.8615 -0.8600 + -0.2724 -0.2724 -0.2724 -0.2723 -0.2723 -0.2722 + 35.0 + -1.7490 -1.8334 -1.9100 -1.9843 -2.1199 -2.2380 + -0.9354 -0.9337 -0.9322 -0.9307 -0.9283 -0.9265 + -0.3582 -0.3581 -0.3581 -0.3581 -0.3580 -0.3578 + 40.0 + -1.5971 -1.6814 -1.7581 -1.8324 -1.9680 -2.0862 + -0.9721 -0.9704 -0.9686 -0.9670 -0.9643 -0.9622 + -0.4494 -0.4493 -0.4493 -0.4492 -0.4491 -0.4489 + 45.0 + -1.4414 -1.5258 -1.6024 -1.6767 -1.8124 -1.9307 + -0.9767 -0.9748 -0.9729 -0.9711 -0.9681 -0.9658 + -0.5432 -0.5432 -0.5431 -0.5430 -0.5429 -0.5427 + 50.0 + -1.2869 -1.3713 -1.4480 -1.5223 -1.6580 -1.7763 + -0.9489 -0.9468 -0.9447 -0.9427 -0.9394 -0.9369 + -0.6368 -0.6367 -0.6366 -0.6365 -0.6363 -0.6361 + 55.0 + -1.1386 -1.2231 -1.2997 -1.3741 -1.5098 -1.6282 + -0.8892 -0.8869 -0.8846 -0.8825 -0.8789 -0.8762 + -0.7272 -0.7271 -0.7270 -0.7269 -0.7267 -0.7264 + 60.0 + -1.0014 -1.0858 -1.1625 -1.2369 -1.3726 -1.4910 + -0.7994 -0.7968 -0.7944 -0.7921 -0.7882 -0.7854 + -0.8116 -0.8115 -0.8114 -0.8113 -0.8110 -0.8107 + 65.0 + -0.8795 -0.9640 -1.0406 -1.1151 -1.2509 -1.3693 + -0.6820 -0.6793 -0.6767 -0.6742 -0.6701 -0.6672 + -0.8875 -0.8874 -0.8873 -0.8872 -0.8869 -0.8866 + 70.0 + -0.7771 -0.8616 -0.9383 -1.0127 -1.1485 -1.2669 + -0.5405 -0.5374 -0.5346 -0.5321 -0.5277 -0.5246 + -0.9526 -0.9525 -0.9524 -0.9523 -0.9519 -0.9516 + 75.0 + -0.6975 -0.7820 -0.8587 -0.9331 -1.0690 -1.1874 + -0.3792 -0.3760 -0.3731 -0.3704 -0.3659 -0.3626 + -1.0049 -1.0048 -1.0047 -1.0045 -1.0042 -1.0038 + 80.0 + -0.6434 -0.7279 -0.8046 -0.8791 -1.0150 -1.1335 + -0.2029 -0.1997 -0.1967 -0.1938 -0.1891 -0.1857 + -1.0429 -1.0427 -1.0426 -1.0424 -1.0420 -1.0416 + 85.0 + -0.6168 -0.7013 -0.7780 -0.8524 -0.9884 -1.1069 + -0.0171 -0.0137 -0.0106 -0.0077 -0.0027 0.0008 + -1.0653 -1.0651 -1.0650 -1.0648 -1.0644 -1.0639 + 90.0 + -0.6187 -0.7032 -0.7799 -0.8544 -0.9903 -1.1089 + 0.1727 0.1762 0.1794 0.1825 0.1876 0.1912 + -1.0715 -1.0714 -1.0712 -1.0710 -1.0706 -1.0701 + 95.0 + -0.6493 -0.7338 -0.8106 -0.8850 -1.0210 -1.1396 + 0.3607 0.3643 0.3677 0.3708 0.3761 0.3798 + -1.0615 -1.0613 -1.0611 -1.0609 -1.0605 -1.0599 + 100.0 + -0.7081 -0.7926 -0.8694 -0.9438 -1.0798 -1.1984 + 0.5412 0.5450 0.5484 0.5516 0.5570 0.5608 + -1.0355 -1.0353 -1.0351 -1.0349 -1.0344 -1.0339 + 105.0 + -0.7935 -0.8780 -0.9548 -1.0293 -1.1652 -1.2838 + 0.7088 0.7126 0.7161 0.7194 0.7248 0.7287 + -0.9944 -0.9942 -0.9940 -0.9938 -0.9933 -0.9927 + 110.0 + -0.9032 -0.9877 -1.0645 -1.1390 -1.2750 -1.3936 + 0.8582 0.8620 0.8656 0.8689 0.8745 0.8784 + -0.9394 -0.9393 -0.9391 -0.9389 -0.9384 -0.9377 + 115.0 + -1.0342 -1.1187 -1.1955 -1.2699 -1.4059 -1.5245 + 0.9847 0.9886 0.9923 0.9957 1.0013 1.0053 + -0.8725 -0.8723 -0.8721 -0.8719 -0.8714 -0.8708 + 120.0 + -1.1827 -1.2672 -1.3439 -1.4184 -1.5545 -1.6731 + 1.0845 1.0885 1.0922 1.0956 1.1014 1.1054 + -0.7956 -0.7955 -0.7953 -0.7950 -0.7945 -0.7939 + 125.0 + -1.3445 -1.4290 -1.5057 -1.5802 -1.7162 -1.8348 + 1.1544 1.1584 1.1622 1.1657 1.1715 1.1755 + -0.7113 -0.7111 -0.7109 -0.7107 -0.7101 -0.7095 + 130.0 + -1.5149 -1.5994 -1.6762 -1.7506 -1.8866 -2.0052 + 1.1922 1.1962 1.2000 1.2035 1.2094 1.2135 + -0.6221 -0.6219 -0.6217 -0.6215 -0.6210 -0.6203 + 135.0 + -1.6889 -1.7734 -1.8501 -1.9246 -2.0606 -2.1791 + 1.1965 1.2006 1.2044 1.2079 1.2139 1.2179 + -0.5310 -0.5308 -0.5306 -0.5304 -0.5299 -0.5292 + 140.0 + -1.8615 -1.9459 -2.0227 -2.0971 -2.2331 -2.3517 + 1.1670 1.1712 1.1750 1.1786 1.1845 1.1886 + -0.4408 -0.4407 -0.4405 -0.4403 -0.4397 -0.4391 + 145.0 + -2.0274 -2.1120 -2.1887 -2.2632 -2.3991 -2.5176 + 1.1046 1.1087 1.1125 1.1162 1.1221 1.1262 + -0.3546 -0.3544 -0.3542 -0.3540 -0.3534 -0.3528 + 150.0 + -2.1820 -2.2667 -2.3432 -2.4179 -2.5538 -2.6722 + 1.0108 1.0148 1.0189 1.0223 1.0283 1.0325 + -0.2750 -0.2748 -0.2747 -0.2743 -0.2738 -0.2732 + 155.0 + -2.3199 -2.4062 -2.4823 -2.5566 -2.6917 -2.8100 + 0.8891 0.8914 0.8959 0.8997 0.9066 0.9109 + -0.2051 -0.2040 -0.2041 -0.2040 -0.2039 -0.2033 +PcP 19 0.0 90.0 + 0.0 + -1.5023 -1.4540 -1.4116 -1.3712 -1.2977 -1.2330 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + -1.4917 -1.4434 -1.4010 -1.3606 -1.2870 -1.2222 + -0.1129 -0.1138 -0.1148 -0.1158 -0.1180 -0.1202 + -0.0068 -0.0068 -0.0069 -0.0069 -0.0070 -0.0070 + 10.0 + -1.4607 -1.4123 -1.3697 -1.3292 -1.2555 -1.1904 + -0.2207 -0.2227 -0.2247 -0.2268 -0.2310 -0.2353 + -0.0270 -0.0271 -0.0272 -0.0273 -0.0275 -0.0278 + 15.0 + -1.4106 -1.3621 -1.3194 -1.2787 -1.2047 -1.1392 + -0.3194 -0.3224 -0.3253 -0.3283 -0.3344 -0.3407 + -0.0597 -0.0599 -0.0601 -0.0603 -0.0608 -0.0614 + 20.0 + -1.3439 -1.2952 -1.2524 -1.2115 -1.1371 -1.0711 + -0.4047 -0.4087 -0.4125 -0.4163 -0.4242 -0.4322 + -0.1035 -0.1038 -0.1042 -0.1046 -0.1054 -0.1063 + 25.0 + -1.2635 -1.2147 -1.1717 -1.1307 -1.0558 -0.9894 + -0.4737 -0.4784 -0.4830 -0.4876 -0.4970 -0.5066 + -0.1568 -0.1573 -0.1577 -0.1583 -0.1594 -0.1608 + 30.0 + -1.1730 -1.1240 -1.0808 -1.0397 -0.9644 -0.8977 + -0.5237 -0.5291 -0.5344 -0.5397 -0.5504 -0.5613 + -0.2175 -0.2181 -0.2187 -0.2194 -0.2209 -0.2227 + 35.0 + -1.0759 -1.0268 -0.9835 -0.9422 -0.8667 -0.7996 + -0.5532 -0.5592 -0.5651 -0.5710 -0.5829 -0.5949 + -0.2835 -0.2842 -0.2850 -0.2859 -0.2877 -0.2899 + 40.0 + -0.9760 -0.9268 -0.8834 -0.8420 -0.7662 -0.6989 + -0.5614 -0.5679 -0.5743 -0.5808 -0.5937 -0.6066 + -0.3527 -0.3535 -0.3544 -0.3554 -0.3576 -0.3602 + 45.0 + -0.8769 -0.8276 -0.7842 -0.7427 -0.6667 -0.5992 + -0.5481 -0.5552 -0.5621 -0.5690 -0.5828 -0.5965 + -0.4228 -0.4237 -0.4248 -0.4259 -0.4284 -0.4313 + 50.0 + -0.7820 -0.7327 -0.6891 -0.6476 -0.5715 -0.5039 + -0.5141 -0.5216 -0.5289 -0.5362 -0.5508 -0.5652 + -0.4918 -0.4929 -0.4941 -0.4953 -0.4981 -0.5013 + 55.0 + -0.6945 -0.6451 -0.6015 -0.5599 -0.4837 -0.4160 + -0.4606 -0.4685 -0.4761 -0.4837 -0.4989 -0.5139 + -0.5579 -0.5591 -0.5604 -0.5617 -0.5647 -0.5682 + 60.0 + -0.6170 -0.5676 -0.5240 -0.4823 -0.4061 -0.3384 + -0.3892 -0.3974 -0.4053 -0.4132 -0.4289 -0.4444 + -0.6194 -0.6206 -0.6219 -0.6234 -0.6266 -0.6303 + 65.0 + -0.5522 -0.5027 -0.4590 -0.4174 -0.3411 -0.2733 + -0.3022 -0.3107 -0.3188 -0.3269 -0.3431 -0.3589 + -0.6746 -0.6759 -0.6773 -0.6788 -0.6823 -0.6862 + 70.0 + -0.5019 -0.4525 -0.4088 -0.3671 -0.2908 -0.2230 + -0.2022 -0.2109 -0.2191 -0.2275 -0.2439 -0.2599 + -0.7222 -0.7236 -0.7251 -0.7267 -0.7303 -0.7344 + 75.0 + -0.4680 -0.4185 -0.3748 -0.3331 -0.2568 -0.1889 + -0.0921 -0.1009 -0.1093 -0.1177 -0.1344 -0.1506 + -0.7613 -0.7627 -0.7643 -0.7660 -0.7697 -0.7740 + 80.0 + -0.4516 -0.4021 -0.3583 -0.3166 -0.2403 -0.1724 + 0.0251 0.0161 0.0076 -0.0009 -0.0176 -0.0339 + -0.7910 -0.7924 -0.7941 -0.7958 -0.7996 -0.8041 + 85.0 + -0.4533 -0.4038 -0.3601 -0.3184 -0.2420 -0.1741 + 0.1457 0.1367 0.1281 0.1196 0.1028 0.0865 + -0.8107 -0.8122 -0.8139 -0.8156 -0.8196 -0.8241 + 90.0 + -0.4736 -0.4240 -0.3803 -0.3386 -0.2622 -0.1943 + 0.2663 0.2573 0.2488 0.2402 0.2235 0.2073 + -0.8202 -0.8217 -0.8234 -0.8252 -0.8292 -0.8339 +ScP 13 0.0 60.0 + 0.0 + -2.1220 -2.0377 -1.9611 -1.8869 -1.7514 -1.6334 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + -2.1109 -2.0266 -1.9500 -1.8757 -1.7401 -1.6221 + -0.1131 -0.1142 -0.1156 -0.1169 -0.1196 -0.1224 + -0.0074 -0.0074 -0.0074 -0.0074 -0.0075 -0.0076 + 10.0 + -2.0783 -1.9938 -1.9172 -1.8428 -1.7070 -1.5888 + -0.2209 -0.2232 -0.2257 -0.2284 -0.2337 -0.2392 + -0.0292 -0.0292 -0.0293 -0.0294 -0.0296 -0.0299 + 15.0 + -2.0259 -1.9414 -1.8646 -1.7901 -1.6541 -1.5355 + -0.3182 -0.3219 -0.3256 -0.3295 -0.3373 -0.3452 + -0.0643 -0.0644 -0.0646 -0.0648 -0.0652 -0.0657 + 20.0 + -1.9568 -1.8721 -1.7952 -1.7206 -1.5842 -1.4653 + -0.4016 -0.4062 -0.4111 -0.4160 -0.4260 -0.4361 + -0.1111 -0.1114 -0.1117 -0.1120 -0.1127 -0.1135 + 25.0 + -1.8744 -1.7896 -1.7125 -1.6378 -1.5012 -1.3820 + -0.4672 -0.4731 -0.4789 -0.4848 -0.4967 -0.5087 + -0.1676 -0.1680 -0.1685 -0.1689 -0.1699 -0.1710 + 30.0 + -1.7826 -1.6977 -1.6206 -1.5457 -1.4089 -1.2894 + -0.5136 -0.5203 -0.5269 -0.5337 -0.5473 -0.5609 + -0.2316 -0.2321 -0.2327 -0.2332 -0.2344 -0.2359 + 35.0 + -1.6854 -1.6004 -1.5231 -1.4482 -1.3112 -1.1916 + -0.5394 -0.5468 -0.5542 -0.5617 -0.5767 -0.5916 + -0.3008 -0.3014 -0.3020 -0.3027 -0.3042 -0.3058 + 40.0 + -1.5864 -1.5013 -1.4240 -1.3490 -1.2120 -1.0923 + -0.5443 -0.5524 -0.5602 -0.5683 -0.5845 -0.6006 + -0.3729 -0.3736 -0.3743 -0.3751 -0.3768 -0.3787 + 45.0 + -1.4890 -1.4039 -1.3266 -1.2516 -1.1145 -0.9947 + -0.5287 -0.5372 -0.5455 -0.5541 -0.5712 -0.5881 + -0.4459 -0.4467 -0.4475 -0.4483 -0.4502 -0.4523 + 50.0 + -1.3961 -1.3111 -1.2337 -1.1587 -1.0215 -0.9018 + -0.4931 -0.5021 -0.5108 -0.5197 -0.5374 -0.5549 + -0.5180 -0.5188 -0.5197 -0.5206 -0.5226 -0.5249 + 55.0 + -1.3105 -1.2254 -1.1480 -1.0729 -0.9358 -0.8160 + -0.4389 -0.4480 -0.4569 -0.4660 -0.4842 -0.5020 + -0.5873 -0.5882 -0.5891 -0.5901 -0.5922 -0.5947 + 60.0 + -1.2343 -1.1492 -1.0718 -0.9967 -0.8595 -0.7397 + -0.3670 -0.3762 -0.3852 -0.3944 -0.4128 -0.4307 + -0.6522 -0.6532 -0.6542 -0.6552 -0.6574 -0.6600 +SKPab 3 130.0 140.0 + 130.0 + -1.9727 -1.8909 -1.8050 -1.7197 -1.5705 -1.4368 + 1.2222 1.2217 1.2101 1.1965 1.1737 1.1519 + -0.6838 -0.6868 -0.6918 -0.6979 -0.7062 -0.7157 + 135.0 + -2.0411 -1.9542 -1.8748 -1.7975 -1.6555 -1.5299 + 1.1786 1.1697 1.1610 1.1521 1.1344 1.1172 + -0.6640 -0.6659 -0.6681 -0.6703 -0.6752 -0.6811 + 140.0 + -2.1465 -2.0598 -1.9807 -1.9038 -1.7626 -1.6378 + 1.1394 1.1306 1.1221 1.1133 1.0960 1.0794 + -0.6243 -0.6261 -0.6281 -0.6302 -0.6348 -0.6402 +SKPbc 5 130.0 150.0 + 130.0 + -1.9935 -1.8980 -1.8242 -1.7593 -1.6335 -1.5221 + 1.2370 1.2261 1.2245 1.2246 1.2207 1.2166 + -0.6744 -0.6821 -0.6824 -0.6784 -0.6750 -0.6732 + 135.0 + -2.2325 -2.1488 -2.0725 -1.9985 -1.8630 -1.7464 + 1.2823 1.2774 1.2729 1.2685 1.2603 1.2535 + -0.5646 -0.5647 -0.5649 -0.5652 -0.5660 -0.5663 + 140.0 + -2.4390 -2.3547 -2.2780 -2.2036 -2.0676 -1.9496 + 1.2613 1.2571 1.2532 1.2494 1.2424 1.2364 + -0.4642 -0.4644 -0.4647 -0.4651 -0.4659 -0.4667 + 145.0 + -2.6277 -2.5434 -2.4668 -2.3924 -2.2563 -2.1373 + 1.1987 1.1953 1.1918 1.1885 1.1823 1.1773 + -0.3701 -0.3702 -0.3704 -0.3707 -0.3714 -0.3725 + 150.0 + -2.7940 -2.7122 -2.6356 -2.5613 -2.4258 -2.3078 + 1.1050 1.1008 1.0978 1.0951 1.0901 1.0859 + -0.2860 -0.2848 -0.2850 -0.2852 -0.2856 -0.2859 +SKPdf 15 110.0 180.0 + 110.0 + -1.5179 -1.4326 -1.3559 -1.2816 -1.1431 -1.0244 + 0.9422 0.9381 0.9345 0.9330 0.9243 0.9199 + -0.9445 -0.9461 -0.9487 -0.9462 -0.9506 -0.9514 + 115.0 + -1.6477 -1.5631 -1.4863 -1.4116 -1.2754 -1.1564 + 1.0673 1.0645 1.0617 1.0589 1.0537 1.0491 + -0.8819 -0.8821 -0.8824 -0.8827 -0.8834 -0.8842 + 120.0 + -1.7975 -1.7129 -1.6359 -1.5613 -1.4250 -1.3062 + 1.1688 1.1660 1.1632 1.1604 1.1551 1.1506 + -0.8045 -0.8048 -0.8051 -0.8054 -0.8061 -0.8069 + 125.0 + -1.9605 -1.8758 -1.7989 -1.7243 -1.5880 -1.4691 + 1.2394 1.2366 1.2338 1.2311 1.2259 1.2214 + -0.7195 -0.7198 -0.7201 -0.7204 -0.7211 -0.7219 + 130.0 + -2.1318 -2.0472 -1.9703 -1.8957 -1.7595 -1.6406 + 1.2769 1.2741 1.2714 1.2686 1.2635 1.2591 + -0.6297 -0.6299 -0.6302 -0.6305 -0.6311 -0.6319 + 135.0 + -2.3075 -2.2230 -2.1461 -2.0715 -1.9354 -1.8166 + 1.2800 1.2772 1.2746 1.2719 1.2669 1.2626 + -0.5372 -0.5374 -0.5377 -0.5380 -0.5386 -0.5393 + 140.0 + -2.4825 -2.3979 -2.3211 -2.2466 -2.1105 -1.9919 + 1.2482 1.2456 1.2430 1.2405 1.2357 1.2317 + -0.4451 -0.4453 -0.4455 -0.4458 -0.4463 -0.4469 + 145.0 + -2.6538 -2.5694 -2.4928 -2.4185 -2.2830 -2.1638 + 1.1814 1.1789 1.1765 1.1740 1.1695 1.1660 + -0.3549 -0.3550 -0.3551 -0.3552 -0.3554 -0.3563 + 150.0 + -2.8121 -2.7281 -2.6515 -2.5772 -2.4416 -2.3233 + 1.0835 1.0809 1.0787 1.0766 1.0726 1.0692 + -0.2714 -0.2714 -0.2714 -0.2715 -0.2718 -0.2721 + 155.0 + -2.9585 -2.8741 -2.7974 -2.7230 -2.5872 -2.4689 + 0.9532 0.9516 0.9498 0.9481 0.9448 0.9420 + -0.1942 -0.1943 -0.1944 -0.1945 -0.1948 -0.1951 + 160.0 + -3.0849 -3.0005 -2.9239 -2.8496 -2.7140 -2.5959 + 0.7966 0.7953 0.7938 0.7924 0.7897 0.7873 + -0.1273 -0.1273 -0.1274 -0.1275 -0.1276 -0.1278 + 165.0 + -3.1871 -3.1027 -3.0261 -2.9518 -2.8163 -2.6982 + 0.6184 0.6174 0.6163 0.6152 0.6132 0.6115 + -0.0731 -0.0731 -0.0732 -0.0732 -0.0733 -0.0734 + 170.0 + -3.2627 -3.1783 -3.1017 -3.0275 -2.8919 -2.7739 + 0.4223 0.4216 0.4209 0.4202 0.4188 0.4177 + -0.0329 -0.0330 -0.0330 -0.0330 -0.0330 -0.0331 + 175.0 + -3.3090 -3.2246 -3.1481 -3.0738 -2.9383 -2.8203 + 0.2143 0.2140 0.2136 0.2132 0.2126 0.2120 + -0.0083 -0.0083 -0.0083 -0.0083 -0.0083 -0.0084 + 180.0 + -3.3246 -3.2403 -3.1637 -3.0894 -2.9540 -2.8360 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +SKiKP 30 0.0 145.0 + 0.0 + -2.9691 -2.8848 -2.8082 -2.7339 -2.5985 -2.4805 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + -2.9551 -2.8707 -2.7942 -2.7199 -2.5844 -2.4665 + -0.1731 -0.1733 -0.1735 -0.1737 -0.1740 -0.1743 + -0.0083 -0.0083 -0.0084 -0.0084 -0.0084 -0.0084 + 10.0 + -2.9135 -2.8291 -2.7526 -2.6783 -2.5428 -2.4248 + -0.3403 -0.3407 -0.3411 -0.3415 -0.3421 -0.3428 + -0.0331 -0.0331 -0.0331 -0.0331 -0.0332 -0.0332 + 15.0 + -2.8457 -2.7613 -2.6847 -2.6105 -2.4749 -2.3569 + -0.4962 -0.4967 -0.4973 -0.4978 -0.4989 -0.4998 + -0.0736 -0.0736 -0.0736 -0.0736 -0.0736 -0.0737 + 20.0 + -2.7538 -2.6694 -2.5928 -2.5185 -2.3830 -2.2649 + -0.6354 -0.6361 -0.6368 -0.6376 -0.6390 -0.6402 + -0.1284 -0.1284 -0.1284 -0.1285 -0.1285 -0.1286 + 25.0 + -2.6407 -2.5564 -2.4798 -2.4055 -2.2699 -2.1518 + -0.7533 -0.7541 -0.7550 -0.7560 -0.7577 -0.7593 + -0.1959 -0.1960 -0.1960 -0.1960 -0.1961 -0.1962 + 30.0 + -2.5103 -2.4259 -2.3493 -2.2749 -2.1393 -2.0212 + -0.8458 -0.8468 -0.8479 -0.8490 -0.8510 -0.8529 + -0.2740 -0.2741 -0.2741 -0.2742 -0.2743 -0.2744 + 35.0 + -2.3665 -2.2821 -2.2054 -2.1311 -1.9954 -1.8772 + -0.9097 -0.9109 -0.9121 -0.9134 -0.9157 -0.9179 + -0.3603 -0.3604 -0.3604 -0.3605 -0.3606 -0.3608 + 40.0 + -2.2140 -2.1296 -2.0529 -1.9786 -1.8428 -1.7246 + -0.9428 -0.9440 -0.9454 -0.9468 -0.9495 -0.9519 + -0.4521 -0.4521 -0.4522 -0.4523 -0.4525 -0.4527 + 45.0 + -2.0578 -1.9733 -1.8966 -1.8222 -1.6865 -1.5682 + -0.9435 -0.9449 -0.9465 -0.9480 -0.9510 -0.9536 + -0.5465 -0.5465 -0.5466 -0.5467 -0.5470 -0.5472 + 50.0 + -1.9027 -1.8183 -1.7416 -1.6672 -1.5313 -1.4130 + -0.9117 -0.9133 -0.9150 -0.9167 -0.9199 -0.9228 + -0.6406 -0.6407 -0.6408 -0.6409 -0.6412 -0.6415 + 55.0 + -1.7539 -1.6694 -1.5927 -1.5183 -1.3824 -1.2640 + -0.8481 -0.8498 -0.8516 -0.8534 -0.8569 -0.8600 + -0.7316 -0.7317 -0.7319 -0.7320 -0.7323 -0.7327 + 60.0 + -1.6161 -1.5316 -1.4549 -1.3804 -1.2445 -1.1260 + -0.7543 -0.7561 -0.7581 -0.7600 -0.7638 -0.7671 + -0.8167 -0.8168 -0.8169 -0.8171 -0.8175 -0.8179 + 65.0 + -1.4938 -1.4093 -1.3325 -1.2580 -1.1220 -1.0035 + -0.6327 -0.6349 -0.6370 -0.6391 -0.6430 -0.6466 + -0.8932 -0.8934 -0.8935 -0.8937 -0.8941 -0.8946 + 70.0 + -1.3909 -1.3064 -1.2296 -1.1551 -1.0191 -0.9004 + -0.4874 -0.4897 -0.4919 -0.4941 -0.4983 -0.5020 + -0.9589 -0.9591 -0.9593 -0.9594 -0.9599 -0.9604 + 75.0 + -1.3110 -1.2264 -1.1496 -1.0750 -0.9390 -0.8203 + -0.3224 -0.3248 -0.3271 -0.3294 -0.3338 -0.3376 + -1.0117 -1.0119 -1.0121 -1.0124 -1.0128 -1.0134 + 80.0 + -1.2565 -1.1719 -1.0951 -1.0206 -0.8844 -0.7657 + -0.1425 -0.1450 -0.1473 -0.1498 -0.1543 -0.1583 + -1.0502 -1.0504 -1.0506 -1.0509 -1.0514 -1.0520 + 85.0 + -1.2296 -1.1450 -1.0681 -0.9936 -0.8574 -0.7386 + 0.0470 0.0444 0.0419 0.0394 0.0347 0.0306 + -1.0731 -1.0733 -1.0736 -1.0738 -1.0744 -1.0750 + 90.0 + -1.2313 -1.1467 -1.0698 -0.9952 -0.8590 -0.7402 + 0.2403 0.2377 0.2351 0.2325 0.2277 0.2234 + -1.0798 -1.0800 -1.0803 -1.0806 -1.0812 -1.0819 + 95.0 + -1.2618 -1.1772 -1.1003 -1.0257 -0.8894 -0.7706 + 0.4317 0.4290 0.4264 0.4237 0.4187 0.4144 + -1.0702 -1.0704 -1.0707 -1.0710 -1.0716 -1.0723 + 100.0 + -1.3205 -1.2359 -1.1590 -1.0844 -0.9481 -0.8292 + 0.6155 0.6127 0.6100 0.6073 0.6022 0.5977 + -1.0445 -1.0448 -1.0450 -1.0453 -1.0460 -1.0468 + 105.0 + -1.4059 -1.3213 -1.2444 -1.1698 -1.0334 -0.9145 + 0.7860 0.7832 0.7804 0.7777 0.7724 0.7679 + -1.0037 -1.0040 -1.0042 -1.0045 -1.0052 -1.0060 + 110.0 + -1.5158 -1.4311 -1.3542 -1.2795 -1.1432 -1.0243 + 0.9382 0.9353 0.9325 0.9297 0.9244 0.9198 + -0.9490 -0.9493 -0.9496 -0.9499 -0.9506 -0.9514 + 115.0 + -1.6469 -1.5622 -1.4853 -1.4106 -1.2743 -1.1553 + 1.0673 1.0644 1.0615 1.0587 1.0533 1.0486 + -0.8822 -0.8825 -0.8828 -0.8831 -0.8839 -0.8847 + 120.0 + -1.7956 -1.7109 -1.6341 -1.5594 -1.4231 -1.3041 + 1.1694 1.1664 1.1636 1.1607 1.1553 1.1505 + -0.8054 -0.8057 -0.8060 -0.8064 -0.8071 -0.8080 + 125.0 + -1.9577 -1.8731 -1.7961 -1.7215 -1.5851 -1.4661 + 1.2413 1.2383 1.2354 1.2325 1.2270 1.2223 + -0.7211 -0.7214 -0.7217 -0.7220 -0.7228 -0.7237 + 130.0 + -2.1285 -2.0438 -1.9669 -1.8922 -1.7559 -1.6369 + 1.2807 1.2778 1.2748 1.2719 1.2664 1.2616 + -0.6319 -0.6322 -0.6325 -0.6329 -0.6336 -0.6345 + 135.0 + -2.3028 -2.2183 -2.1412 -2.0666 -1.9302 -1.8113 + 1.2864 1.2834 1.2805 1.2775 1.2719 1.2671 + -0.5408 -0.5410 -0.5414 -0.5417 -0.5425 -0.5434 + 140.0 + -2.4759 -2.3912 -2.3143 -2.2395 -2.1033 -1.9842 + 1.2580 1.2549 1.2520 1.2490 1.2434 1.2386 + -0.4505 -0.4508 -0.4511 -0.4515 -0.4522 -0.4531 + 145.0 + -2.6421 -2.5575 -2.4805 -2.4060 -2.2696 -2.1508 + 1.1962 1.1932 1.1903 1.1872 1.1816 1.1767 + -0.3642 -0.3644 -0.3648 -0.3650 -0.3659 -0.3666 +PKKPab 5 235.0 255.0 + 235.0 + -1.1749 -1.1317 -1.0944 -1.0604 -0.9956 -0.9336 + 1.5532 1.5522 1.5358 1.5386 1.4799 1.4350 + -1.3497 -1.3492 -1.3474 -1.3467 -1.3421 -1.3425 + 240.0 + -1.1339 -1.0863 -1.0433 -1.0022 -0.9276 -0.8619 + 1.4354 1.4230 1.4105 1.3977 1.3715 1.3443 + -1.3943 -1.3943 -1.3956 -1.3970 -1.3999 -1.4031 + 245.0 + -1.0657 -1.0168 -0.9739 -0.9329 -0.8584 -0.7926 + 1.3450 1.3341 1.3234 1.3124 1.2902 1.2671 + -1.4542 -1.4554 -1.4566 -1.4579 -1.4608 -1.4642 + 250.0 + -1.0086 -0.9596 -0.9166 -0.8755 -0.8008 -0.7348 + 1.2515 1.2414 1.2315 1.2214 1.2013 1.1808 + -1.5085 -1.5097 -1.5111 -1.5125 -1.5156 -1.5192 + 255.0 + -0.9668 -0.9178 -0.8747 -0.8337 -0.7587 -0.6914 + 1.1499 1.1404 1.1312 1.1220 1.1035 1.0870 + -1.5540 -1.5552 -1.5566 -1.5580 -1.5614 -1.5656 +PKKPbc 11 235.0 285.0 + 235.0 + -1.1625 -1.1208 -1.0798 -1.0486 -0.9581 -0.8781 + 1.5926 1.5826 1.5871 1.5752 1.6030 1.6181 + -1.3586 -1.3566 -1.3582 -1.3551 -1.3687 -1.3810 + 240.0 + -1.0554 -1.0025 -0.9559 -0.9116 -0.8301 -0.7547 + 1.6810 1.6775 1.6752 1.6733 1.6717 1.6716 + -1.4496 -1.4532 -1.4567 -1.4599 -1.4666 -1.4752 + 245.0 + -0.9585 -0.9074 -0.8619 -0.8182 -0.7353 -0.6619 + 1.6639 1.6604 1.6578 1.6560 1.6526 1.6494 + -1.5271 -1.5293 -1.5318 -1.5344 -1.5419 -1.5488 + 250.0 + -0.8908 -0.8399 -0.7944 -0.7509 -0.6697 -0.5959 + 1.5922 1.5889 1.5868 1.5847 1.5803 1.5777 + -1.5857 -1.5878 -1.5901 -1.5925 -1.5986 -1.6056 + 255.0 + -0.8539 -0.8030 -0.7577 -0.7142 -0.6336 -0.5602 + 1.4816 1.4786 1.4764 1.4744 1.4710 1.4677 + -1.6248 -1.6268 -1.6290 -1.6313 -1.6368 -1.6434 + 260.0 + -0.8487 -0.7980 -0.7527 -0.7094 -0.6291 -0.5563 + 1.3360 1.3330 1.3308 1.3289 1.3264 1.3258 + -1.6447 -1.6465 -1.6486 -1.6508 -1.6559 -1.6618 + 265.0 + -0.8759 -0.8252 -0.7801 -0.7367 -0.6566 -0.5843 + 1.1716 1.1693 1.1673 1.1666 1.1656 1.1651 + -1.6443 -1.6460 -1.6480 -1.6501 -1.6548 -1.6603 + 270.0 + -0.9373 -0.8870 -0.8421 -0.7991 -0.7193 -0.6468 + 0.9843 0.9817 0.9799 0.9785 0.9775 0.9792 + -1.6231 -1.6247 -1.6264 -1.6283 -1.6328 -1.6382 + 275.0 + -1.0306 -0.9801 -0.9353 -0.8923 -0.8130 -0.7420 + 0.7870 0.7851 0.7837 0.7826 0.7814 0.7818 + -1.5824 -1.5839 -1.5856 -1.5875 -1.5916 -1.5960 + 280.0 + -1.1575 -1.1053 -1.0608 -1.0181 -0.9393 -0.8682 + 0.5817 0.5832 0.5821 0.5811 0.5804 0.5813 + -1.5214 -1.5237 -1.5252 -1.5268 -1.5305 -1.5350 + 285.0 + -1.3103 -1.2603 -1.2159 -1.1734 -1.0949 -1.0240 + 0.3834 0.3818 0.3808 0.3800 0.3798 0.3815 + -1.4446 -1.4458 -1.4471 -1.4486 -1.4521 -1.4563 +PKKPdf 31 210.0 360.0 + 210.0 + -1.6491 -1.5906 -1.5501 -1.5055 -1.4319 -1.3614 + 1.4983 1.5050 1.4963 1.4976 1.4863 1.4834 + -1.1101 -1.1144 -1.1133 -1.1161 -1.1164 -1.1204 + 215.0 + -1.5224 -1.4727 -1.4294 -1.3873 -1.3104 -1.2420 + 1.6774 1.6739 1.6700 1.6670 1.6605 1.6539 + -1.1905 -1.1914 -1.1922 -1.1934 -1.1957 -1.1983 + 220.0 + -1.3992 -1.3496 -1.3057 -1.2640 -1.1867 -1.1181 + 1.8110 1.8074 1.8042 1.8006 1.7945 1.7881 + -1.2707 -1.2716 -1.2727 -1.2736 -1.2762 -1.2790 + 225.0 + -1.2773 -1.2278 -1.1838 -1.1417 -1.0645 -0.9953 + 1.9038 1.9002 1.8970 1.8938 1.8878 1.8820 + -1.3502 -1.3511 -1.3521 -1.3533 -1.3559 -1.3590 + 230.0 + -1.1617 -1.1119 -1.0679 -1.0256 -0.9482 -0.8786 + 1.9547 1.9513 1.9482 1.9452 1.9394 1.9341 + -1.4260 -1.4270 -1.4282 -1.4294 -1.4321 -1.4354 + 235.0 + -1.0567 -1.0069 -0.9626 -0.9204 -0.8427 -0.7729 + 1.9637 1.9605 1.9576 1.9547 1.9493 1.9445 + -1.4957 -1.4968 -1.4980 -1.4992 -1.5021 -1.5055 + 240.0 + -0.9670 -0.9171 -0.8728 -0.8305 -0.7527 -0.6827 + 1.9203 1.9172 1.9144 1.9117 1.9067 1.9022 + -1.5565 -1.5576 -1.5589 -1.5602 -1.5631 -1.5666 + 245.0 + -0.8967 -0.8468 -0.8025 -0.7601 -0.6820 -0.6119 + 1.8360 1.8331 1.8305 1.8280 1.8235 1.8196 + -1.6062 -1.6073 -1.6085 -1.6099 -1.6129 -1.6165 + 250.0 + -0.8495 -0.7995 -0.7552 -0.7127 -0.6346 -0.5643 + 1.7190 1.7163 1.7139 1.7117 1.7076 1.7043 + -1.6424 -1.6435 -1.6448 -1.6462 -1.6493 -1.6530 + 255.0 + -0.8282 -0.7781 -0.7338 -0.6913 -0.6131 -0.5427 + 1.5739 1.5715 1.5695 1.5676 1.5643 1.5604 + -1.6636 -1.6648 -1.6660 -1.6674 -1.6705 -1.6743 + 260.0 + -0.8351 -0.7850 -0.7407 -0.6982 -0.6200 -0.5496 + 1.4027 1.4005 1.3986 1.3968 1.3939 1.3919 + -1.6686 -1.6697 -1.6710 -1.6724 -1.6755 -1.6793 + 265.0 + -0.8717 -0.8217 -0.7774 -0.7349 -0.6567 -0.5863 + 1.2150 1.2131 1.2114 1.2099 1.2076 1.2062 + -1.6562 -1.6573 -1.6586 -1.6600 -1.6631 -1.6667 + 270.0 + -0.9391 -0.8892 -0.8449 -0.8025 -0.7244 -0.6541 + 1.0143 1.0124 1.0110 1.0098 1.0079 1.0071 + -1.6260 -1.6271 -1.6283 -1.6296 -1.6327 -1.6362 + 275.0 + -1.0366 -0.9867 -0.9424 -0.9000 -0.8220 -0.7521 + 0.8078 0.8063 0.8052 0.8042 0.8031 0.8025 + -1.5782 -1.5792 -1.5805 -1.5818 -1.5847 -1.5881 + 280.0 + -1.1647 -1.1150 -1.0711 -1.0291 -0.9519 -0.8801 + 0.5990 0.5973 0.5961 0.5950 0.5934 0.5971 + -1.5126 -1.5135 -1.5145 -1.5157 -1.5181 -1.5224 + 285.0 + -1.3173 -1.2675 -1.2234 -1.1811 -1.1035 -1.0336 + 0.3998 0.3987 0.3980 0.3976 0.3975 0.3988 + -1.4325 -1.4334 -1.4345 -1.4357 -1.4385 -1.4417 + 290.0 + -1.4982 -1.4485 -1.4045 -1.3625 -1.2851 -1.2158 + 0.2066 0.2058 0.2053 0.2050 0.2053 0.2067 + -1.3358 -1.3366 -1.3377 -1.3388 -1.3413 -1.3442 + 295.0 + -1.6979 -1.6483 -1.6045 -1.5626 -1.4857 -1.4167 + 0.0317 0.0311 0.0308 0.0306 0.0311 0.0328 + -1.2277 -1.2285 -1.2295 -1.2304 -1.2327 -1.2354 + 300.0 + -1.9147 -1.8652 -1.8215 -1.7797 -1.7031 -1.6346 + -0.1234 -0.1238 -0.1240 -0.1240 -0.1233 -0.1213 + -1.1094 -1.1102 -1.1110 -1.1119 -1.1139 -1.1163 + 305.0 + -2.1443 -2.0953 -2.0521 -2.0108 -1.9350 -1.8675 + -0.2554 -0.2559 -0.2561 -0.2562 -0.2555 -0.2537 + -0.9833 -0.9837 -0.9843 -0.9849 -0.9864 -0.9882 + 310.0 + -2.3816 -2.3325 -2.2893 -2.2479 -2.1722 -2.1048 + -0.3611 -0.3614 -0.3614 -0.3612 -0.3603 -0.3583 + -0.8522 -0.8527 -0.8533 -0.8539 -0.8553 -0.8570 + 315.0 + -2.6187 -2.5698 -2.5267 -2.4855 -2.4102 -2.3433 + -0.4376 -0.4378 -0.4378 -0.4376 -0.4365 -0.4345 + -0.7207 -0.7211 -0.7216 -0.7221 -0.7233 -0.7247 + 320.0 + -2.8464 -2.7974 -2.7543 -2.7132 -2.6380 -2.5728 + -0.4838 -0.4840 -0.4839 -0.4836 -0.4825 -0.4807 + -0.5941 -0.5945 -0.5949 -0.5954 -0.5965 -0.5969 + 325.0 + -3.0697 -3.0210 -2.9781 -2.9373 -2.8627 -2.7966 + -0.5020 -0.5019 -0.5018 -0.5015 -0.5005 -0.4986 + -0.4695 -0.4697 -0.4700 -0.4703 -0.4711 -0.4719 + 330.0 + -3.2738 -3.2251 -3.1824 -3.1416 -3.0672 -3.0013 + -0.4913 -0.4912 -0.4910 -0.4908 -0.4898 -0.4881 + -0.3554 -0.3556 -0.3558 -0.3561 -0.3567 -0.3574 + 335.0 + -3.4559 -3.4073 -3.3646 -3.3243 -3.2506 -3.1852 + -0.4545 -0.4544 -0.4542 -0.4539 -0.4529 -0.4514 + -0.2534 -0.2536 -0.2538 -0.2537 -0.2540 -0.2543 + 340.0 + -3.6134 -3.5649 -3.5224 -3.4818 -3.4080 -3.3427 + -0.3937 -0.3936 -0.3934 -0.3932 -0.3924 -0.3912 + -0.1651 -0.1652 -0.1653 -0.1654 -0.1657 -0.1660 + 345.0 + -3.7392 -3.6908 -3.6483 -3.6078 -3.5342 -3.4691 + -0.3136 -0.3136 -0.3134 -0.3133 -0.3127 -0.3117 + -0.0945 -0.0945 -0.0946 -0.0947 -0.0948 -0.0950 + 350.0 + -3.8319 -3.7836 -3.7412 -3.7007 -3.6272 -3.5623 + -0.2178 -0.2177 -0.2177 -0.2175 -0.2171 -0.2164 + -0.0424 -0.0424 -0.0425 -0.0425 -0.0425 -0.0426 + 355.0 + -3.8884 -3.8401 -3.7977 -3.7573 -3.6838 -3.6190 + -0.1116 -0.1116 -0.1115 -0.1115 -0.1113 -0.1109 + -0.0107 -0.0107 -0.0107 -0.0107 -0.0107 -0.0107 + 360.0 + -3.9074 -3.8591 -3.8167 -3.7763 -3.7029 -3.6381 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +SKKPab 2 215.0 220.0 + 215.0 + -2.2559 -2.1715 -2.0948 -2.0204 -1.8845 -1.7665 + 1.1792 1.1706 1.1623 1.1538 1.1372 1.1212 + -1.0385 -1.0390 -1.0395 -1.0401 -1.0415 -1.0430 + 220.0 + -2.1683 -2.0832 -2.0061 -1.9308 -1.7942 -1.6749 + 1.2142 1.2056 1.1972 1.1888 1.1736 1.1594 + -1.1100 -1.1109 -1.1117 -1.1129 -1.1148 -1.1170 +SKKPbc 14 215.0 280.0 + 215.0 + -2.2124 -2.1257 -2.0466 -1.9699 -1.8296 -1.7016 + 1.2264 1.2253 1.2243 1.2230 1.2202 1.2256 + -1.0668 -1.0687 -1.0707 -1.0726 -1.0766 -1.0844 + 220.0 + -2.0589 -1.9728 -1.8910 -1.8144 -1.6744 -1.5498 + 1.5230 1.5170 1.5178 1.5123 1.4994 1.4917 + -1.1784 -1.1798 -1.1838 -1.1856 -1.1893 -1.1945 + 225.0 + -1.9108 -1.8248 -1.7464 -1.6702 -1.5306 -1.4044 + 1.6977 1.6914 1.6855 1.6794 1.6678 1.6596 + -1.2854 -1.2867 -1.2882 -1.2897 -1.2930 -1.2993 + 230.0 + -1.7722 -1.6861 -1.6071 -1.5314 -1.3917 -1.2690 + 1.8037 1.7976 1.7919 1.7858 1.7744 1.7639 + -1.3856 -1.3869 -1.3887 -1.3899 -1.3932 -1.3969 + 235.0 + -1.6493 -1.5630 -1.4843 -1.4079 -1.2677 -1.1443 + 1.8537 1.8478 1.8422 1.8366 1.8257 1.8158 + -1.4752 -1.4767 -1.4783 -1.4799 -1.4835 -1.4876 + 240.0 + -1.5422 -1.4562 -1.3779 -1.3018 -1.1612 -1.0373 + 1.8557 1.8501 1.8448 1.8395 1.8289 1.8191 + -1.5550 -1.5562 -1.5575 -1.5589 -1.5627 -1.5670 + 245.0 + -1.4570 -1.3710 -1.2926 -1.2164 -1.0767 -0.9538 + 1.8125 1.8071 1.8021 1.7971 1.7876 1.7793 + -1.6211 -1.6223 -1.6237 -1.6251 -1.6281 -1.6318 + 250.0 + -1.3981 -1.3120 -1.2335 -1.1573 -1.0175 -0.8945 + 1.7296 1.7243 1.7195 1.7146 1.7053 1.6969 + -1.6711 -1.6724 -1.6738 -1.6752 -1.6783 -1.6820 + 255.0 + -1.3684 -1.2825 -1.2042 -1.1282 -0.9887 -0.8659 + 1.6131 1.6086 1.6045 1.6003 1.5926 1.5849 + -1.7033 -1.7044 -1.7056 -1.7069 -1.7097 -1.7131 + 260.0 + -1.3697 -1.2839 -1.2057 -1.1297 -0.9904 -0.8678 + 1.4664 1.4621 1.4583 1.4544 1.4473 1.4411 + -1.7167 -1.7178 -1.7189 -1.7201 -1.7228 -1.7260 + 265.0 + -1.4036 -1.3179 -1.2397 -1.1638 -1.0245 -0.9023 + 1.2948 1.2911 1.2875 1.2838 1.2770 1.2715 + -1.7105 -1.7115 -1.7126 -1.7138 -1.7164 -1.7192 + 270.0 + -1.4706 -1.3850 -1.3071 -1.2314 -1.0926 -0.9705 + 1.1061 1.1024 1.0987 1.0950 1.0884 1.0828 + -1.6842 -1.6851 -1.6860 -1.6871 -1.6894 -1.6922 + 275.0 + -1.5697 -1.4841 -1.4061 -1.3303 -1.1914 -1.0694 + 0.9084 0.9052 0.9022 0.8991 0.8934 0.8886 + -1.6386 -1.6395 -1.6405 -1.6415 -1.6438 -1.6465 + 280.0 + -1.7006 -1.6150 -1.5371 -1.4614 -1.3226 -1.2008 + 0.7046 0.7018 0.6989 0.6962 0.6911 0.6870 + -1.5743 -1.5751 -1.5760 -1.5770 -1.5792 -1.5818 +SKKPdf 32 205.0 360.0 + 205.0 + -2.3370 -2.2549 -2.1793 -2.1060 -1.9668 -1.8469 + 1.3151 1.3091 1.3019 1.2945 1.2910 1.2834 + -1.0644 -1.0645 -1.0639 -1.0633 -1.0659 -1.0672 + 210.0 + -2.2242 -2.1388 -2.0614 -1.9863 -1.8495 -1.7292 + 1.5203 1.5172 1.5136 1.5098 1.5012 1.4942 + -1.1398 -1.1406 -1.1412 -1.1418 -1.1427 -1.1443 + 215.0 + -2.0995 -2.0146 -1.9371 -1.8619 -1.7246 -1.6044 + 1.6956 1.6917 1.6881 1.6843 1.6766 1.6691 + -1.2209 -1.2214 -1.2220 -1.2226 -1.2239 -1.2255 + 220.0 + -1.9718 -1.8868 -1.8093 -1.7339 -1.5965 -1.4760 + 1.8328 1.8290 1.8253 1.8217 1.8141 1.8069 + -1.3038 -1.3042 -1.3049 -1.3056 -1.3070 -1.3087 + 225.0 + -1.8457 -1.7604 -1.6829 -1.6076 -1.4699 -1.3493 + 1.9298 1.9263 1.9226 1.9189 1.9116 1.9046 + -1.3857 -1.3863 -1.3869 -1.3876 -1.3891 -1.3909 + 230.0 + -1.7260 -1.6407 -1.5631 -1.4878 -1.3499 -1.2291 + 1.9855 1.9820 1.9784 1.9748 1.9677 1.9609 + -1.4638 -1.4645 -1.4651 -1.4659 -1.4675 -1.4694 + 235.0 + -1.6175 -1.5322 -1.4546 -1.3792 -1.2411 -1.1201 + 1.9997 1.9963 1.9928 1.9893 1.9824 1.9759 + -1.5355 -1.5361 -1.5368 -1.5376 -1.5393 -1.5413 + 240.0 + -1.5250 -1.4396 -1.3619 -1.2865 -1.1483 -1.0272 + 1.9606 1.9572 1.9539 1.9505 1.9438 1.9375 + -1.5979 -1.5986 -1.5994 -1.6001 -1.6019 -1.6040 + 245.0 + -1.4524 -1.3670 -1.2893 -1.2138 -1.0756 -0.9544 + 1.8831 1.8798 1.8766 1.8733 1.8669 1.8610 + -1.6488 -1.6495 -1.6502 -1.6510 -1.6528 -1.6549 + 250.0 + -1.4035 -1.3181 -1.2404 -1.1649 -1.0267 -0.9054 + 1.7731 1.7700 1.7669 1.7639 1.7579 1.7525 + -1.6859 -1.6866 -1.6873 -1.6881 -1.6899 -1.6920 + 255.0 + -1.3809 -1.2955 -1.2178 -1.1423 -1.0040 -0.8826 + 1.6326 1.6296 1.6267 1.6237 1.6180 1.6128 + -1.7078 -1.7085 -1.7093 -1.7101 -1.7119 -1.7141 + 260.0 + -1.3877 -1.3023 -1.2246 -1.1491 -1.0108 -0.8894 + 1.4693 1.4665 1.4637 1.4609 1.4556 1.4508 + -1.7126 -1.7133 -1.7141 -1.7149 -1.7167 -1.7189 + 265.0 + -1.4253 -1.3399 -1.2621 -1.1867 -1.0484 -0.9272 + 1.2867 1.2840 1.2814 1.2787 1.2737 1.2694 + -1.6996 -1.7003 -1.7010 -1.7018 -1.7036 -1.7057 + 270.0 + -1.4942 -1.4088 -1.3311 -1.2557 -1.1175 -0.9963 + 1.0912 1.0887 1.0863 1.0839 1.0793 1.0755 + -1.6682 -1.6689 -1.6696 -1.6704 -1.6721 -1.6742 + 275.0 + -1.5944 -1.5091 -1.4315 -1.3561 -1.2182 -1.0973 + 0.8884 0.8860 0.8837 0.8813 0.8769 0.8731 + -1.6186 -1.6192 -1.6199 -1.6206 -1.6222 -1.6241 + 280.0 + -1.7244 -1.6391 -1.5616 -1.4862 -1.3483 -1.2274 + 0.6846 0.6825 0.6804 0.6783 0.6746 0.6715 + -1.5515 -1.5521 -1.5528 -1.5535 -1.5550 -1.5569 + 285.0 + -1.8849 -1.7997 -1.7222 -1.6469 -1.5091 -1.3884 + 0.4819 0.4799 0.4780 0.4761 0.4728 0.4702 + -1.4666 -1.4672 -1.4678 -1.4684 -1.4699 -1.4716 + 290.0 + -2.0683 -1.9831 -1.9057 -1.8305 -1.6929 -1.5724 + 0.2916 0.2898 0.2881 0.2864 0.2835 0.2812 + -1.3680 -1.3685 -1.3691 -1.3697 -1.3710 -1.3726 + 295.0 + -2.2737 -2.1887 -2.1113 -2.0362 -1.8988 -1.7785 + 0.1150 0.1136 0.1121 0.1106 0.1080 0.1061 + -1.2562 -1.2567 -1.2572 -1.2578 -1.2590 -1.2605 + 300.0 + -2.4961 -2.4111 -2.3338 -2.2588 -2.1215 -2.0015 + -0.0423 -0.0436 -0.0449 -0.0462 -0.0484 -0.0501 + -1.1343 -1.1348 -1.1352 -1.1357 -1.1368 -1.1381 + 305.0 + -2.7299 -2.6450 -2.5678 -2.4928 -2.3558 -2.2361 + -0.1767 -0.1777 -0.1789 -0.1801 -0.1820 -0.1833 + -1.0053 -1.0057 -1.0061 -1.0065 -1.0075 -1.0086 + 310.0 + -2.9692 -2.8843 -2.8072 -2.7323 -2.5954 -2.4767 + -0.2852 -0.2861 -0.2871 -0.2881 -0.2897 -0.2912 + -0.8726 -0.8730 -0.8734 -0.8738 -0.8746 -0.8752 + 315.0 + -3.2136 -3.1289 -3.0519 -2.9771 -2.8406 -2.7213 + -0.3675 -0.3683 -0.3692 -0.3701 -0.3715 -0.3724 + -0.7366 -0.7369 -0.7372 -0.7375 -0.7382 -0.7390 + 320.0 + -3.4489 -3.3643 -3.2874 -3.2127 -3.0764 -2.9574 + -0.4200 -0.4207 -0.4215 -0.4222 -0.4234 -0.4241 + -0.6053 -0.6055 -0.6057 -0.6060 -0.6065 -0.6072 + 325.0 + -3.6735 -3.5889 -3.5121 -3.4375 -3.3013 -3.1825 + -0.4440 -0.4446 -0.4452 -0.4459 -0.4469 -0.4474 + -0.4796 -0.4798 -0.4800 -0.4802 -0.4806 -0.4811 + 330.0 + -3.8814 -3.7970 -3.7203 -3.6459 -3.5101 -3.3917 + -0.4404 -0.4409 -0.4415 -0.4420 -0.4428 -0.4432 + -0.3631 -0.3632 -0.3632 -0.3633 -0.3636 -0.3639 + 335.0 + -4.0686 -3.9841 -3.9075 -3.8330 -3.6972 -3.5788 + -0.4108 -0.4112 -0.4117 -0.4121 -0.4128 -0.4131 + -0.2580 -0.2581 -0.2582 -0.2583 -0.2585 -0.2587 + 340.0 + -4.2277 -4.1432 -4.0666 -3.9922 -3.8565 -3.7382 + -0.3585 -0.3589 -0.3592 -0.3595 -0.3601 -0.3603 + -0.1686 -0.1686 -0.1687 -0.1688 -0.1689 -0.1691 + 345.0 + -4.3558 -4.2714 -4.1948 -4.1204 -3.9848 -3.8668 + -0.2871 -0.2873 -0.2876 -0.2878 -0.2882 -0.2882 + -0.0965 -0.0966 -0.0966 -0.0966 -0.0967 -0.0967 + 350.0 + -4.4504 -4.3660 -4.2895 -4.2152 -4.0796 -3.9616 + -0.1997 -0.1999 -0.2001 -0.2003 -0.2004 -0.2005 + -0.0432 -0.0432 -0.0433 -0.0433 -0.0433 -0.0434 + 355.0 + -4.5078 -4.4235 -4.3469 -4.2726 -4.1371 -4.0192 + -0.1026 -0.1027 -0.1028 -0.1029 -0.1030 -0.1030 + -0.0109 -0.0109 -0.0109 -0.0109 -0.0109 -0.0109 + 360.0 + -4.5272 -4.4428 -4.3663 -4.2920 -4.1565 -4.0385 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +PP 31 40.0 190.0 + 40.0 + -0.9317 -0.8958 -0.8694 -0.8477 -0.8279 -0.8373 + -0.5796 -0.6114 -0.6441 -0.6758 -0.7306 -0.7697 + -0.2316 -0.2333 -0.2360 -0.2379 -0.2404 -0.2542 + 45.0 + -0.9424 -0.9060 -0.8784 -0.8764 -0.8337 -0.8199 + -0.6662 -0.6968 -0.7284 -0.7617 -0.8110 -0.8489 + -0.2988 -0.3006 -0.3040 -0.3258 -0.3256 -0.3208 + 50.0 + -0.9549 -0.9147 -0.8825 -0.8535 -0.8102 -0.7942 + -0.7513 -0.7763 -0.8006 -0.8263 -0.8749 -0.9174 + -0.3947 -0.3953 -0.3954 -0.3966 -0.3967 -0.3928 + 55.0 + -0.9233 -0.8827 -0.8501 -0.8213 -0.7775 -0.7584 + -0.8057 -0.8303 -0.8549 -0.8800 -0.9288 -0.9707 + -0.4710 -0.4722 -0.4730 -0.4737 -0.4729 -0.4679 + 60.0 + -0.8838 -0.8425 -0.8098 -0.7804 -0.7363 -0.7156 + -0.8482 -0.8732 -0.8967 -0.9213 -0.9695 -1.0122 + -0.5513 -0.5531 -0.5526 -0.5529 -0.5514 -0.5482 + 65.0 + -0.8381 -0.7972 -0.7633 -0.7343 -0.6893 -0.6666 + -0.8762 -0.9007 -0.9252 -0.9491 -0.9964 -1.0390 + -0.6328 -0.6340 -0.6362 -0.6358 -0.6353 -0.6324 + 70.0 + -0.7889 -0.7511 -0.7190 -0.6851 -0.6391 -0.6143 + -0.8896 -0.9146 -0.9384 -0.9607 -1.0073 -1.0498 + -0.7184 -0.7173 -0.7170 -0.7206 -0.7203 -0.7178 + 75.0 + -0.7391 -0.6984 -0.6651 -0.6341 -0.5874 -0.5605 + -0.8870 -0.9105 -0.9336 -0.9566 -1.0023 -1.0445 + -0.8036 -0.8038 -0.8044 -0.8062 -0.8058 -0.8038 + 80.0 + -0.6901 -0.6484 -0.6143 -0.5841 -0.5376 -0.5090 + -0.8686 -0.8912 -0.9136 -0.9364 -0.9820 -1.0239 + -0.8880 -0.8896 -0.8909 -0.8910 -0.8887 -0.8868 + 85.0 + -0.6440 -0.6027 -0.5690 -0.5387 -0.4898 -0.4612 + -0.8347 -0.8572 -0.8795 -0.9021 -0.9460 -0.9889 + -0.9704 -0.9711 -0.9714 -0.9712 -0.9713 -0.9667 + 90.0 + -0.6045 -0.5632 -0.5295 -0.4981 -0.4489 -0.4177 + -0.7878 -0.8101 -0.8324 -0.8536 -0.8975 -0.9394 + -1.0475 -1.0477 -1.0475 -1.0486 -1.0476 -1.0450 + 95.0 + -0.5730 -0.5307 -0.4964 -0.4653 -0.4153 -0.3830 + -0.7303 -0.7508 -0.7721 -0.7940 -0.8375 -0.8800 + -1.1183 -1.1200 -1.1204 -1.1203 -1.1192 -1.1158 + 100.0 + -0.5493 -0.5076 -0.4732 -0.4416 -0.3906 -0.3569 + -0.6610 -0.6827 -0.7043 -0.7253 -0.7683 -0.8115 + -1.1853 -1.1854 -1.1853 -1.1856 -1.1846 -1.1809 + 105.0 + -0.5366 -0.4944 -0.4596 -0.4279 -0.3761 -0.3409 + -0.5878 -0.6083 -0.6294 -0.6511 -0.6943 -0.7371 + -1.2431 -1.2438 -1.2438 -1.2434 -1.2420 -1.2389 + 110.0 + -0.5340 -0.4918 -0.4567 -0.4245 -0.3717 -0.3350 + -0.5092 -0.5303 -0.5516 -0.5713 -0.6144 -0.6587 + -1.2948 -1.2949 -1.2947 -1.2954 -1.2940 -1.2903 + 115.0 + -0.5422 -0.4996 -0.4642 -0.4317 -0.3777 -0.3394 + -0.4299 -0.4510 -0.4702 -0.4912 -0.5348 -0.5787 + -1.3389 -1.3390 -1.3398 -1.3397 -1.3380 -1.3350 + 120.0 + -0.5605 -0.5177 -0.4820 -0.4489 -0.3936 -0.3535 + -0.3515 -0.3714 -0.3918 -0.4129 -0.4568 -0.5018 + -1.3764 -1.3769 -1.3770 -1.3768 -1.3753 -1.3722 + 125.0 + -0.5875 -0.5447 -0.5084 -0.4748 -0.4185 -0.3768 + -0.2789 -0.2978 -0.3184 -0.3395 -0.3825 -0.4274 + -1.4068 -1.4076 -1.4077 -1.4074 -1.4065 -1.4040 + 130.0 + -0.6229 -0.5792 -0.5422 -0.5080 -0.4505 -0.4066 + -0.2104 -0.2308 -0.2515 -0.2728 -0.3156 -0.3613 + -1.4322 -1.4325 -1.4325 -1.4324 -1.4318 -1.4296 + 135.0 + -0.6637 -0.6196 -0.5822 -0.5474 -0.4886 -0.4427 + -0.1516 -0.1716 -0.1920 -0.2130 -0.2558 -0.3018 + -1.4526 -1.4530 -1.4532 -1.4533 -1.4531 -1.4515 + 140.0 + -0.7086 -0.6641 -0.6261 -0.5908 -0.5300 -0.4820 + -0.1016 -0.1214 -0.1416 -0.1624 -0.2056 -0.2517 + -1.4697 -1.4702 -1.4706 -1.4708 -1.4709 -1.4700 + 145.0 + -0.7546 -0.7098 -0.6713 -0.6353 -0.5729 -0.5231 + -0.0622 -0.0816 -0.1015 -0.1221 -0.1651 -0.2108 + -1.4845 -1.4852 -1.4858 -1.4863 -1.4869 -1.4867 + 150.0 + -0.8006 -0.7550 -0.7157 -0.6788 -0.6140 -0.5627 + -0.0323 -0.0516 -0.0714 -0.0919 -0.1349 -0.1801 + -1.4986 -1.4994 -1.5001 -1.5008 -1.5017 -1.5024 + 155.0 + -0.8431 -0.7968 -0.7568 -0.7191 -0.6527 -0.5985 + -0.0122 -0.0313 -0.0508 -0.0710 -0.1134 -0.1587 + -1.5129 -1.5138 -1.5148 -1.5157 -1.5172 -1.5186 + 160.0 + -0.8800 -0.8332 -0.7926 -0.7544 -0.6865 -0.6291 + -0.0009 -0.0195 -0.0386 -0.0584 -0.1000 -0.1448 + -1.5289 -1.5301 -1.5314 -1.5326 -1.5350 -1.5369 + 165.0 + -0.9099 -0.8625 -0.8212 -0.7821 -0.7123 -0.6529 + 0.0038 -0.0144 -0.0332 -0.0525 -0.0932 -0.1372 + -1.5480 -1.5495 -1.5510 -1.5525 -1.5555 -1.5586 + 170.0 + -0.9308 -0.8827 -0.8411 -0.8011 -0.7292 -0.6680 + 0.0036 -0.0141 -0.0322 -0.0510 -0.0906 -0.1332 + -1.5711 -1.5727 -1.5749 -1.5765 -1.5796 -1.5839 + 175.0 + -0.9420 -0.8927 -0.8495 -0.8089 -0.7356 -0.6722 + 0.0014 -0.0156 -0.0332 -0.0513 -0.0896 -0.1311 + -1.5994 -1.6009 -1.6031 -1.6052 -1.6094 -1.6140 + 180.0 + -0.9430 -0.8942 -0.8513 -0.8103 -0.7359 -0.6644 + -0.0003 -0.0167 -0.0337 -0.0512 -0.0882 -0.1309 + -1.6308 -1.6328 -1.6348 -1.6370 -1.6418 -1.6451 + 185.0 + -0.9281 -0.8782 -0.8340 -0.7919 -0.7147 -0.6461 + 0.4042 0.3882 0.3718 0.3551 0.3197 0.2785 + -1.6629 -1.6649 -1.6672 -1.6695 -1.6745 -1.6800 + 190.0 + -0.9072 -0.8566 -0.8116 -0.7687 -0.6898 -0.6193 + 0.7388 0.7243 0.7091 0.6930 0.6575 0.6166 + -1.6996 -1.7022 -1.7050 -1.7079 -1.7141 -1.7210 +P'P' 26 235.0 360.0 + 235.0 + -3.7932 -0.6875 -0.6410 -2.3816 -0.5130 -0.4368 + 1.2662 3.0847 3.0801 0.1692 3.0651 3.0542 + -0.7582 -2.5236 -2.5261 -1.4981 -2.5349 -2.5420 + 240.0 + -3.8863 -0.6856 -0.6390 -2.1888 -0.5102 -0.4332 + 1.0133 3.1074 3.1030 -0.0437 3.0894 3.0800 + -0.7136 -2.5338 -2.5364 -1.6185 -2.5456 -2.5532 + 245.0 + -3.9477 -0.7077 -0.6609 -1.9953 -0.5315 -0.4539 + 1.3678 3.0738 3.0698 0.0066 3.0578 3.0497 + -0.6872 -2.5301 -2.5329 -1.7393 -2.5424 -2.5503 + 250.0 + -3.9767 -0.7566 -0.7096 -1.8074 -0.5797 -0.5018 + 1.6702 2.9909 2.9876 -0.0006 2.9781 2.9720 + -0.6796 -2.5110 -2.5138 -1.8569 -2.5237 -2.5318 + 255.0 + -3.9739 -0.8346 -0.7874 -1.6286 -0.6572 -0.5789 + 1.9623 2.8699 2.8672 -0.0251 2.8593 2.8547 + -0.6904 -2.4751 -2.4780 -1.9692 -2.4881 -2.4964 + 260.0 + -3.9403 -0.9429 -0.8958 -1.4629 -0.7654 -0.6869 + 2.2773 2.7165 2.7143 -0.0226 2.7080 2.7048 + -0.7188 -2.4217 -2.4246 -2.0740 -2.4347 -2.4432 + 265.0 + -3.8778 -1.0824 -1.0353 -1.3132 -0.9047 -0.8262 + 2.5559 2.5360 2.5341 -0.0463 2.5298 2.5278 + -0.7640 -2.3503 -2.3531 -2.1695 -2.3634 -2.3718 + 270.0 + -3.7886 -1.2524 -1.2053 -1.1824 -1.0748 -0.9964 + 2.7983 2.3344 2.3331 -0.0872 2.3304 2.3299 + -0.8246 -2.2612 -2.2641 -2.2542 -2.2743 -2.2827 + 275.0 + -3.6755 -1.4515 -1.4042 -1.0722 -1.2734 -1.1964 + 3.0022 2.1180 2.1174 -0.1401 2.1170 2.1166 + -0.8990 -2.1553 -2.1583 -2.3268 -2.1687 -2.1762 + 280.0 + -3.5396 -1.6812 -1.6342 -0.9820 -1.5044 -1.4266 + 3.1667 1.8894 1.8890 -0.2015 1.8896 1.8918 + -0.9866 -2.0319 -2.0346 -2.3880 -2.0445 -2.0525 + 285.0 + -3.3869 -1.9335 -1.8868 -0.9147 -1.7576 -1.6802 + 3.2858 1.6597 1.6597 -0.2656 1.6618 1.6653 + -1.0838 -1.8952 -1.8978 -2.4359 -1.9073 -1.9150 + 290.0 + -3.0756 -2.1224 -2.0808 -0.8588 -2.0342 -1.9576 + 3.1719 1.3560 1.3604 -0.3254 1.4347 1.4391 + -1.2342 -1.7602 -1.7622 -2.4461 -1.7566 -1.7638 + 295.0 + -3.0416 -2.5000 -2.4537 -0.8428 -2.3263 -2.2506 + 3.3859 1.2108 1.2116 -0.3892 1.2163 1.2217 + -1.3011 -1.5860 -1.5884 -2.4953 -1.5967 -1.6035 + 300.0 + -2.8564 -2.8052 -2.7592 -0.8356 -2.6328 -2.5580 + 3.3596 1.0015 1.0028 -0.4468 1.0087 1.0149 + -1.4168 -1.4185 -1.4208 -2.5082 -1.4285 -1.4347 + 305.0 + -2.6670 -3.1197 -3.0742 -0.8454 -2.9492 -2.8753 + 3.2817 0.8072 0.8086 -0.4964 0.8150 0.8218 + -1.5346 -1.2455 -1.2474 -2.5110 -1.2542 -1.2599 + 310.0 + -2.4808 -3.4306 -3.3854 -0.8688 -3.2618 -3.1889 + 3.1594 0.6343 0.6359 -0.5308 0.6428 0.6499 + -1.6500 -1.0738 -1.0756 -2.5053 -1.0816 -1.0865 + 315.0 + -2.2960 -3.7416 -3.6970 -0.9039 -3.5755 -3.5044 + 2.9904 0.4801 0.4817 -0.5491 0.4885 0.4953 + -1.7642 -0.9018 -0.9031 -2.4925 -0.9079 -0.9118 + 320.0 + -2.1210 -4.0379 -3.9936 -0.9464 -3.8730 -3.8033 + 2.7805 0.3503 0.3519 -0.5496 0.3587 0.3654 + -1.8720 -0.7375 -0.7386 -2.4747 -0.7428 -0.7459 + 325.0 + -1.9548 -4.3212 -4.2774 -0.9946 -4.1587 -4.0900 + 2.5269 0.2418 0.2433 -0.5316 0.2497 0.2559 + -1.9741 -0.5801 -0.5809 -2.4530 -0.5840 -0.5864 + 330.0 + -1.8059 -4.5765 -4.5331 -1.0434 -4.4158 -4.3481 + 2.2412 0.1578 0.1592 -0.4959 0.1650 0.1706 + -2.0655 -0.4380 -0.4386 -2.4302 -0.4408 -0.4426 + 335.0 + -1.6738 -4.8039 -4.7607 -1.0908 -4.6444 -4.5782 + 1.9215 0.0946 0.0958 -0.4434 0.1010 0.1058 + -2.1463 -0.3113 -0.3118 -2.4073 -0.3133 -0.3142 + 340.0 + -1.5610 -4.9989 -4.9560 -1.1343 -4.8404 -4.7741 + 1.5714 0.0502 0.0513 -0.3748 0.0557 0.0598 + -2.2153 -0.2025 -0.2028 -2.3860 -0.2039 -0.2048 + 345.0 + -1.4710 -5.1549 -5.1123 -1.1708 -4.9974 -4.9319 + 1.1988 0.0224 0.0232 -0.2932 0.0266 0.0298 + -2.2702 -0.1154 -0.1155 -2.3678 -0.1161 -0.1166 + 350.0 + -1.4055 -5.2688 -5.2263 -1.1984 -5.1120 -5.0469 + 0.8088 0.0075 0.0081 -0.2014 0.0104 0.0126 + -2.3101 -0.0517 -0.0518 -2.3540 -0.0521 -0.0523 + 355.0 + -1.3658 -5.3381 -5.2957 -1.2155 -5.1817 -5.1169 + 0.4074 0.0015 0.0018 -0.1025 0.0030 0.0041 + -2.3343 -0.0130 -0.0130 -2.3454 -0.0131 -0.0131 + 360.0 + -5.4097 -5.3614 -5.3190 -5.2786 -5.2051 -5.1404 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +Sup 3 0.0 10.0 + 0.0 + -0.0001 -0.0843 -0.1609 -0.2352 -0.3706 -0.4886 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + 0.0000 -0.3001 -0.3261 -0.3644 -0.4558 -0.5502 + 0.0000 0.0637 0.1387 0.1975 0.2622 0.2796 + 0.0000 0.0018 0.0053 0.0079 0.0104 0.0109 + 10.0 + 0.0000 -0.5159 -0.5792 -0.5975 -0.6409 -0.6964 + 0.0000 0.1274 0.0842 0.1578 0.2634 0.3254 + 0.0000 0.0036 0.0051 0.0096 0.0160 0.0205 +S 19 5.0 95.0 + 5.0 + -0.3093 -0.3056 -0.3170 -0.3116 -0.1453 -0.0770 + -0.0233 -0.0746 -0.0594 -0.2432 -0.1288 -0.0687 + -0.0033 -0.0054 0.0802 0.0136 -0.0002 -0.0001 + 10.0 + -0.5677 -0.5360 -0.5252 -0.5144 -0.4071 -0.3686 + -0.0856 -0.1696 -0.2442 -0.3187 -0.3250 -0.3365 + -0.0126 -0.0176 -0.0253 -0.0331 -0.0441 -0.0512 + 15.0 + -0.8058 -0.7664 -0.7357 -0.7172 -0.6689 -0.6602 + -0.1826 -0.2646 -0.3374 -0.3942 -0.5212 -0.6043 + -0.0331 -0.0406 -0.0612 -0.0798 -0.0902 -0.1030 + 20.0 + -1.0139 -0.9507 -0.8980 -0.8831 -0.7871 -0.7219 + -0.2986 -0.3627 -0.4247 -0.4721 -0.5761 -0.6842 + -0.1142 -0.1215 -0.1285 -0.1483 -0.1561 -0.1632 + 25.0 + -1.1470 -1.0705 -1.0134 -0.9455 -0.8398 -0.7678 + -0.4154 -0.4648 -0.5131 -0.5635 -0.6687 -0.7744 + -0.2014 -0.2070 -0.2136 -0.2165 -0.2260 -0.2341 + 30.0 + -1.1855 -1.1081 -1.0406 -0.9771 -0.8687 -0.7892 + -0.5121 -0.5582 -0.6063 -0.6562 -0.7551 -0.8548 + -0.2799 -0.2837 -0.2892 -0.2951 -0.3049 -0.3170 + 35.0 + -1.2008 -1.1225 -1.0532 -0.9875 -0.8740 -0.7862 + -0.5988 -0.6438 -0.6899 -0.7363 -0.8302 -0.9232 + -0.3691 -0.3743 -0.3809 -0.3867 -0.3990 -0.4140 + 40.0 + -1.1929 -1.1131 -1.0419 -0.9741 -0.8553 -0.7599 + -0.6690 -0.7115 -0.7547 -0.7983 -0.8857 -0.9712 + -0.4719 -0.4775 -0.4847 -0.4913 -0.5053 -0.5219 + 45.0 + -1.1634 -1.0818 -1.0088 -0.9392 -0.8155 -0.7137 + -0.7144 -0.7546 -0.7945 -0.8347 -0.9152 -0.9929 + -0.5848 -0.5918 -0.5990 -0.6056 -0.6209 -0.6385 + 50.0 + -1.1152 -1.0327 -0.9581 -0.8862 -0.7582 -0.6511 + -0.7298 -0.7667 -0.8033 -0.8403 -0.9140 -0.9846 + -0.7071 -0.7133 -0.7209 -0.7289 -0.7449 -0.7629 + 55.0 + -1.0550 -0.9711 -0.8956 -0.8224 -0.6909 -0.5787 + -0.7104 -0.7444 -0.7779 -0.8116 -0.8781 -0.9410 + -0.8325 -0.8392 -0.8461 -0.8540 -0.8703 -0.8897 + 60.0 + -0.9887 -0.9038 -0.8271 -0.7528 -0.6187 -0.5031 + -0.6533 -0.6842 -0.7147 -0.7451 -0.8049 -0.8605 + -0.9583 -0.9652 -0.9721 -0.9798 -0.9958 -1.0149 + 65.0 + -0.9235 -0.8382 -0.7607 -0.6855 -0.5491 -0.4311 + -0.5576 -0.5859 -0.6134 -0.6406 -0.6938 -0.7428 + -1.0798 -1.0860 -1.0929 -1.1004 -1.1162 -1.1346 + 70.0 + -0.8670 -0.7810 -0.7027 -0.6272 -0.4892 -0.3696 + -0.4249 -0.4502 -0.4741 -0.4989 -0.5455 -0.5887 + -1.1922 -1.1984 -1.2056 -1.2123 -1.2277 -1.2447 + 75.0 + -0.8254 -0.7392 -0.6608 -0.5849 -0.4458 -0.3247 + -0.2552 -0.2779 -0.3003 -0.3225 -0.3616 -0.3988 + -1.2931 -1.2989 -1.3049 -1.3112 -1.3264 -1.3424 + 80.0 + -0.8061 -0.7196 -0.6409 -0.5647 -0.4253 -0.3034 + -0.0583 -0.0761 -0.0940 -0.1131 -0.1493 -0.1807 + -1.3755 -1.3817 -1.3879 -1.3939 -1.4068 -1.4217 + 85.0 + -0.8140 -0.7277 -0.6491 -0.5729 -0.4335 -0.3109 + 0.1700 0.1536 0.1376 0.1216 0.0917 0.0618 + -1.4398 -1.4449 -1.4504 -1.4559 -1.4679 -1.4808 + 90.0 + -0.8554 -0.7692 -0.6904 -0.6140 -0.4748 -0.3529 + 0.4190 0.4036 0.3884 0.3731 0.3475 0.3266 + -1.4811 -1.4854 -1.4901 -1.4949 -1.5054 -1.5176 + 95.0 + -0.9309 -0.8443 -0.7664 -0.6887 -0.5479 -0.4268 + 0.6630 0.6474 0.6362 0.6179 0.5873 0.5672 + -1.4945 -1.4982 -1.5024 -1.5064 -1.5152 -1.5253 +Sdif 11 100.0 150.0 + 100.0 + -1.0405 -0.9529 -0.8765 -0.7963 -0.6515 -0.5277 + 0.9019 0.8860 0.8823 0.8596 0.8235 0.8083 + -1.4803 -1.4807 -1.4816 -1.4817 -1.4826 -1.4842 + 105.0 + -1.1674 -1.0798 -1.0034 -0.9232 -0.7784 -0.6546 + 1.1440 1.1280 1.1244 1.1016 1.0655 1.0504 + -1.4070 -1.4074 -1.4084 -1.4085 -1.4094 -1.4109 + 110.0 + -1.3288 -1.2412 -1.1648 -1.0845 -0.9398 -0.8160 + 1.3569 1.3409 1.3373 1.3145 1.2784 1.2633 + -1.3138 -1.3143 -1.3152 -1.3153 -1.3162 -1.3178 + 115.0 + -1.5197 -1.4321 -1.3557 -1.2755 -1.1307 -1.0069 + 1.5342 1.5182 1.5146 1.4918 1.4557 1.4406 + -1.2036 -1.2040 -1.2049 -1.2051 -1.2060 -1.2075 + 120.0 + -1.7344 -1.6468 -1.5704 -1.4902 -1.3454 -1.2217 + 1.6705 1.6546 1.6509 1.6282 1.5921 1.5770 + -1.0796 -1.0801 -1.0810 -1.0811 -1.0820 -1.0836 + 125.0 + -1.9664 -1.8788 -1.8024 -1.7221 -1.5774 -1.4536 + 1.7618 1.7458 1.7422 1.7194 1.6833 1.6682 + -0.9457 -0.9462 -0.9471 -0.9472 -0.9481 -0.9496 + 130.0 + -2.2085 -2.1209 -2.0445 -1.9643 -1.8195 -1.6958 + 1.8051 1.7891 1.7855 1.7627 1.7266 1.7115 + -0.8059 -0.8064 -0.8073 -0.8074 -0.8083 -0.8098 + 135.0 + -2.4535 -2.3659 -2.2895 -2.2093 -2.0645 -1.9407 + 1.7992 1.7832 1.7796 1.7568 1.7207 1.7056 + -0.6645 -0.6649 -0.6658 -0.6659 -0.6668 -0.6684 + 140.0 + -2.6939 -2.6063 -2.5299 -2.4497 -2.3049 -2.1811 + 1.7443 1.7283 1.7247 1.7019 1.6658 1.6507 + -0.5257 -0.5261 -0.5271 -0.5272 -0.5281 -0.5296 + 145.0 + -2.9224 -2.8348 -2.7584 -2.6781 -2.5334 -2.4096 + 1.6420 1.6260 1.6224 1.5996 1.5636 1.5484 + -0.3938 -0.3942 -0.3952 -0.3953 -0.3962 -0.3977 + 150.0 + -3.1320 -3.0444 -2.9680 -2.8878 -2.7430 -2.6192 + 1.4955 1.4795 1.4759 1.4531 1.4170 1.4019 + -0.2728 -0.2732 -0.2741 -0.2742 -0.2751 -0.2767 +SKSac 16 65.0 140.0 + 65.0 + -1.0116 -0.9252 -0.8463 -0.7698 -0.6295 -0.5063 + -0.5567 -0.5718 -0.5863 -0.6011 -0.6302 -0.6579 + -1.2331 -1.2357 -1.2387 -1.2416 -1.2483 -1.2560 + 70.0 + -0.9206 -0.8341 -0.7553 -0.6787 -0.5381 -0.4150 + -0.3723 -0.3873 -0.4017 -0.4162 -0.4439 -0.4715 + -1.3235 -1.3262 -1.3291 -1.3322 -1.3393 -1.3470 + 75.0 + -0.8596 -0.7724 -0.6943 -0.6191 -0.4783 -0.3549 + -0.1716 -0.1823 -0.1965 -0.2101 -0.2396 -0.2594 + -1.3964 -1.4004 -1.4029 -1.4051 -1.4137 -1.4237 + 80.0 + -0.8314 -0.7453 -0.6670 -0.5907 -0.4512 -0.3293 + 0.0538 0.0396 0.0252 0.0140 -0.0088 -0.0332 + -1.4590 -1.4616 -1.4642 -1.4676 -1.4746 -1.4817 + 85.0 + -0.8362 -0.7504 -0.6721 -0.5960 -0.4566 -0.3348 + 0.2881 0.2786 0.2676 0.2557 0.2308 0.2141 + -1.4991 -1.5017 -1.5043 -1.5069 -1.5124 -1.5192 + 90.0 + -0.8749 -0.7887 -0.7102 -0.6343 -0.4959 -0.3735 + 0.5317 0.5200 0.5084 0.4985 0.4822 0.4620 + -1.5152 -1.5172 -1.5195 -1.5217 -1.5266 -1.5322 + 95.0 + -0.9472 -0.8623 -0.7846 -0.7088 -0.5695 -0.4480 + 0.7699 0.7628 0.7548 0.7458 0.7271 0.7119 + -1.5071 -1.5086 -1.5103 -1.5123 -1.5167 -1.5215 + 100.0 + -1.0565 -0.9708 -0.8927 -0.8167 -0.6772 -0.5573 + 1.0048 0.9962 0.9877 0.9790 0.9615 0.9504 + -1.4748 -1.4763 -1.4780 -1.4798 -1.4839 -1.4875 + 105.0 + -1.1986 -1.1127 -1.0343 -0.9581 -0.8212 -0.7005 + 1.2204 1.2121 1.2041 1.1959 1.1838 1.1719 + -1.4203 -1.4218 -1.4234 -1.4252 -1.4278 -1.4312 + 110.0 + -1.3702 -1.2844 -1.2062 -1.1302 -0.9942 -0.8733 + 1.4105 1.4032 1.3961 1.3889 1.3783 1.3671 + -1.3460 -1.3472 -1.3487 -1.3502 -1.3521 -1.3553 + 115.0 + -1.5686 -1.4829 -1.4056 -1.3317 -1.1945 -1.0736 + 1.5705 1.5640 1.5582 1.5532 1.5424 1.5323 + -1.2539 -1.2550 -1.2560 -1.2564 -1.2585 -1.2615 + 120.0 + -1.7916 -1.7069 -1.6296 -1.5544 -1.4165 -1.2955 + 1.6961 1.6906 1.6854 1.6801 1.6699 1.6609 + -1.1457 -1.1463 -1.1472 -1.1481 -1.1503 -1.1531 + 125.0 + -2.0327 -1.9476 -1.8701 -1.7949 -1.6571 -1.5374 + 1.7811 1.7759 1.7712 1.7664 1.7575 1.7499 + -1.0252 -1.0259 -1.0268 -1.0276 -1.0297 -1.0315 + 130.0 + -2.2844 -2.1995 -2.1222 -2.0473 -1.9102 -1.7903 + 1.8212 1.8167 1.8126 1.8084 1.8007 1.7941 + -0.8966 -0.8972 -0.8978 -0.8985 -0.9000 -0.9018 + 135.0 + -2.5374 -2.4529 -2.3761 -2.3015 -2.1647 -2.0445 + 1.8151 1.8110 1.8074 1.8038 1.7971 1.7915 + -0.7653 -0.7655 -0.7659 -0.7663 -0.7675 -0.7693 + 140.0 + -2.7852 -2.6999 -2.6260 -2.5539 -2.4200 -2.3020 + 1.7625 1.7594 1.7553 1.7512 1.7445 1.7391 + -0.6347 -0.6354 -0.6342 -0.6332 -0.6327 -0.6332 +SKSdf 16 105.0 180.0 + 105.0 + -1.2059 -1.1209 -1.0453 -0.9692 -0.8286 -0.7139 + 1.1252 1.1207 1.1209 1.1153 1.1028 1.1048 + -1.4797 -1.4830 -1.4792 -1.4818 -1.4866 -1.4853 + 110.0 + -1.3702 -1.2855 -1.2087 -1.1340 -0.9976 -0.8786 + 1.3403 1.3375 1.3348 1.3318 1.3265 1.3218 + -1.3967 -1.3969 -1.3972 -1.3976 -1.3983 -1.3992 + 115.0 + -1.5671 -1.4825 -1.4056 -1.3311 -1.1948 -1.0758 + 1.5239 1.5210 1.5183 1.5155 1.5103 1.5056 + -1.2921 -1.2923 -1.2926 -1.2928 -1.2935 -1.2944 + 120.0 + -1.7887 -1.7041 -1.6271 -1.5524 -1.4162 -1.2972 + 1.6658 1.6629 1.6601 1.6573 1.6521 1.6476 + -1.1732 -1.1734 -1.1738 -1.1741 -1.1748 -1.1756 + 125.0 + -2.0277 -1.9430 -1.8661 -1.7915 -1.6552 -1.5363 + 1.7615 1.7587 1.7560 1.7532 1.7481 1.7436 + -1.0442 -1.0445 -1.0448 -1.0451 -1.0458 -1.0466 + 130.0 + -2.2780 -2.1934 -2.1165 -2.0419 -1.9056 -1.7868 + 1.8088 1.8060 1.8034 1.8007 1.7957 1.7914 + -0.9086 -0.9089 -0.9092 -0.9095 -0.9101 -0.9109 + 135.0 + -2.5315 -2.4469 -2.3701 -2.2955 -2.1593 -2.0405 + 1.8062 1.8036 1.8010 1.7985 1.7937 1.7896 + -0.7710 -0.7713 -0.7715 -0.7718 -0.7724 -0.7731 + 140.0 + -2.7814 -2.6969 -2.6201 -2.5457 -2.4099 -2.2916 + 1.7544 1.7519 1.7496 1.7472 1.7427 1.7387 + -0.6353 -0.6354 -0.6356 -0.6358 -0.6362 -0.6366 + 145.0 + -3.0219 -2.9373 -2.8605 -2.7859 -2.6498 -2.5311 + 1.6548 1.6526 1.6505 1.6484 1.6445 1.6412 + -0.5044 -0.5046 -0.5048 -0.5050 -0.5056 -0.5062 + 150.0 + -3.2446 -3.1600 -3.0833 -3.0088 -2.8728 -2.7542 + 1.5113 1.5097 1.5079 1.5060 1.5027 1.4999 + -0.3830 -0.3832 -0.3833 -0.3835 -0.3839 -0.3844 + 155.0 + -3.4455 -3.3611 -3.2845 -3.2101 -3.0744 -2.9562 + 1.3271 1.3257 1.3241 1.3224 1.3195 1.3170 + -0.2733 -0.2734 -0.2734 -0.2735 -0.2737 -0.2740 + 160.0 + -3.6176 -3.5332 -3.4565 -3.3821 -3.2463 -3.1280 + 1.1082 1.1071 1.1059 1.1047 1.1026 1.1008 + -0.1791 -0.1792 -0.1793 -0.1794 -0.1796 -0.1799 + 165.0 + -3.7578 -3.6734 -3.5968 -3.5224 -3.3868 -3.2687 + 0.8579 0.8570 0.8561 0.8552 0.8535 0.8521 + -0.1024 -0.1024 -0.1025 -0.1025 -0.1026 -0.1027 + 170.0 + -3.8605 -3.7761 -3.6995 -3.6252 -3.4897 -3.3717 + 0.5850 0.5845 0.5838 0.5832 0.5821 0.5811 + -0.0461 -0.0461 -0.0461 -0.0461 -0.0461 -0.0462 + 175.0 + -3.9232 -3.8389 -3.7623 -3.6881 -3.5526 -3.4346 + 0.2966 0.2963 0.2960 0.2956 0.2951 0.2946 + -0.0116 -0.0116 -0.0116 -0.0116 -0.0116 -0.0116 + 180.0 + -3.9444 -3.8600 -3.7835 -3.7092 -3.5737 -3.4557 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +pS 9 60.0 100.0 + 60.0 + -0.9887 -1.0623 -1.1359 -1.2095 -1.3567 -1.5039 + -0.6533 -0.6755 -0.6977 -0.7199 -0.7643 -0.8087 + -0.9583 -0.9270 -0.8957 -0.8644 -0.8018 -0.7392 + 65.0 + -0.9235 -0.9866 -1.0497 -1.1128 -1.2390 -1.3652 + -0.5576 -0.5665 -0.5754 -0.5843 -0.6021 -0.6199 + -1.0798 -1.0577 -1.0356 -1.0135 -0.9693 -0.9251 + 70.0 + -0.8670 -0.9266 -0.9909 -1.0552 -1.1838 -1.3124 + -0.4249 -0.4305 -0.4649 -0.4913 -0.5521 -0.6129 + -1.1922 -1.1741 -1.1459 -1.1177 -1.0613 -1.0049 + 75.0 + -0.8254 -0.8833 -0.9408 -1.0108 -1.1508 -1.2908 + -0.2552 -0.2608 -0.2846 -0.3532 -0.4904 -0.6276 + -1.2931 -1.2771 -1.2555 -1.2209 -1.1517 -1.0825 + 80.0 + -0.8061 -0.8623 -0.9164 -0.9739 -1.0889 -1.2039 + -0.0583 -0.0607 -0.0776 -0.1208 -0.2072 -0.2936 + -1.3755 -1.3631 -1.3464 -1.3219 -1.3593 -1.3229 + 85.0 + -0.8140 -0.8690 -0.9209 -0.9738 -1.0796 -1.1854 + 0.1700 0.1644 0.1488 0.1178 0.0558 -0.0062 + -1.4398 -1.4283 -1.4139 -1.3957 -1.3593 -1.3229 + 90.0 + -0.8554 -0.9092 -0.9580 -1.0086 -1.1195 -1.2304 + 0.4190 0.4131 0.3936 0.3724 0.2011 0.0298 + -1.4811 -1.4713 -1.4587 -1.4447 -1.3944 -1.3441 + 95.0 + -0.9309 -0.9855 -1.0327 -1.0806 -1.1743 -1.2680 + 0.6630 0.6670 0.6530 0.6333 0.5362 0.4391 + -1.4945 -1.4878 -1.4787 -1.4671 -1.4346 -1.4021 + 100.0 + -1.0395 -1.0910 -1.1393 -1.1867 -1.2763 -1.3659 + 0.8937 0.8904 0.8803 0.8640 0.8000 0.7360 + -1.4827 -1.4764 -1.4680 -1.4583 -1.4351 -1.4583 +pSKSac 15 70.0 140.0 + 70.0 + -0.9206 -0.9731 -1.0196 -1.0636 -1.1414 -1.2027 + -0.3723 -0.4225 -0.4784 -0.5388 -0.6790 -0.8580 + -1.3235 -1.3185 -1.3131 -1.3077 -1.2976 -1.2905 + 75.0 + -0.8596 -0.9109 -0.9576 -1.0021 -1.0793 -1.1408 + -0.1716 -0.2184 -0.2741 -0.3350 -0.4725 -0.6521 + -1.3964 -1.3927 -1.3871 -1.3812 -1.3717 -1.3641 + 80.0 + -0.8314 -0.8832 -0.9294 -0.9725 -1.0498 -1.1104 + 0.0538 0.0064 -0.0495 -0.1044 -0.2468 -0.4295 + -1.4590 -1.4536 -1.4472 -1.4418 -1.4290 -1.4200 + 85.0 + -0.8362 -0.8878 -0.9335 -0.9764 -1.0536 -1.1163 + 0.2881 0.2451 0.1987 0.1410 0.0157 -0.1532 + -1.4991 -1.4947 -1.4899 -1.4843 -1.4736 -1.4630 + 90.0 + -0.8749 -0.9263 -0.9705 -1.0143 -1.0912 -1.1560 + 0.5317 0.4929 0.4436 0.3994 0.2856 0.1423 + -1.5152 -1.5115 -1.5074 -1.5031 -1.4944 -1.4856 + 95.0 + -0.9472 -0.9989 -1.0445 -1.0871 -1.1644 -1.2294 + 0.7699 0.7354 0.6962 0.6518 0.5506 0.4231 + -1.5071 -1.5037 -1.5000 -1.4965 -1.4892 -1.4822 + 100.0 + -1.0565 -1.1063 -1.1508 -1.1943 -1.2698 -1.3366 + 1.0048 0.9693 0.9313 0.8928 0.7977 0.6859 + -1.4748 -1.4724 -1.4695 -1.4661 -1.4605 -1.4542 + 105.0 + -1.1986 -1.2494 -1.2935 -1.3342 -1.4123 -1.4775 + 1.2204 1.1897 1.1546 1.1154 1.0327 0.9288 + -1.4203 -1.4178 -1.4155 -1.4136 -1.4077 -1.4031 + 110.0 + -1.3702 -1.4208 -1.4652 -1.5066 -1.5833 -1.6472 + 1.4105 1.3820 1.3503 1.3153 1.2380 1.1427 + -1.3460 -1.3437 -1.3415 -1.3397 -1.3351 -1.3319 + 115.0 + -1.5686 -1.6192 -1.6637 -1.7057 -1.7797 -1.8475 + 1.5705 1.5443 1.5152 1.4838 1.4112 1.3272 + -1.2539 -1.2519 -1.2498 -1.2479 -1.2451 -1.2407 + 120.0 + -1.7916 -1.8403 -1.8851 -1.9276 -2.0037 -2.0688 + 1.6961 1.6713 1.6447 1.6164 1.5516 1.4739 + -1.1457 -1.1448 -1.1427 -1.1408 -1.1374 -1.1349 + 125.0 + -2.0327 -2.0823 -2.1255 -2.1655 -2.2425 -2.3077 + 1.7811 1.7589 1.7343 1.7078 1.6494 1.5795 + -1.0252 -1.0240 -1.0229 -1.0224 -1.0189 -1.0167 + 130.0 + -2.2844 -2.3338 -2.3771 -2.4183 -2.4901 -2.5575 + 1.8212 1.8012 1.7792 1.7558 1.7028 1.6406 + -0.8966 -0.8956 -0.8946 -0.8936 -0.8932 -0.8903 + 135.0 + -2.5374 -2.5852 -2.6255 -2.6677 -2.7444 -2.8106 + 1.8151 1.7973 1.7783 1.7574 1.7106 1.6556 + -0.7653 -0.7652 -0.7659 -0.7645 -0.7618 -0.7599 + 140.0 + -2.7852 -2.8351 -2.8792 -2.9211 -2.9972 -3.0629 + 1.7625 1.7463 1.7286 1.7097 1.6676 1.6189 + -0.6347 -0.6336 -0.6324 -0.6313 -0.6291 -0.6277 +pSKSdf 15 110.0 180.0 + 110.0 + -1.3702 -1.4188 -1.4620 -1.5029 -1.5772 -1.6431 + 1.3403 1.3267 1.3121 1.2965 1.2619 1.2228 + -1.3967 -1.3963 -1.3957 -1.3952 -1.3943 -1.3932 + 115.0 + -1.5671 -1.6160 -1.6589 -1.7000 -1.7743 -1.8398 + 1.5239 1.5105 1.4958 1.4803 1.4459 1.4066 + -1.2921 -1.2916 -1.2911 -1.2905 -1.2896 -1.2887 + 120.0 + -1.7887 -1.8375 -1.8805 -1.9214 -1.9959 -2.0615 + 1.6658 1.6526 1.6379 1.6225 1.5884 1.5494 + -1.1732 -1.1728 -1.1722 -1.1718 -1.1708 -1.1698 + 125.0 + -2.0277 -2.0766 -2.1195 -2.1605 -2.2350 -2.3006 + 1.7615 1.7486 1.7341 1.7189 1.6853 1.6469 + -1.0442 -1.0437 -1.0433 -1.0428 -1.0417 -1.0407 + 130.0 + -2.2780 -2.3268 -2.3698 -2.4107 -2.4851 -2.5507 + 1.8088 1.7959 1.7821 1.7672 1.7344 1.6967 + -0.9086 -0.9082 -0.9077 -0.9073 -0.9063 -0.9054 + 135.0 + -2.5315 -2.5803 -2.6232 -2.6640 -2.7381 -2.8036 + 1.8062 1.7940 1.7804 1.7663 1.7348 1.6984 + -0.7710 -0.7706 -0.7702 -0.7698 -0.7691 -0.7681 + 140.0 + -2.7814 -2.8300 -2.8727 -2.9135 -2.9878 -3.0534 + 1.7544 1.7431 1.7304 1.7170 1.6873 1.6530 + -0.6353 -0.6350 -0.6346 -0.6342 -0.6334 -0.6325 + 145.0 + -3.0219 -3.0706 -3.1134 -3.1541 -3.2282 -3.2927 + 1.6548 1.6443 1.6328 1.6207 1.5938 1.5629 + -0.5044 -0.5041 -0.5037 -0.5034 -0.5028 -0.5025 + 150.0 + -3.2446 -3.2932 -3.3360 -3.3767 -3.4508 -3.5161 + 1.5113 1.5023 1.4921 1.4814 1.4575 1.4298 + -0.3830 -0.3827 -0.3824 -0.3821 -0.3816 -0.3810 + 155.0 + -3.4455 -3.4938 -3.5359 -3.5765 -3.6506 -3.7159 + 1.3271 1.3194 1.3117 1.3025 1.2820 1.2582 + -0.2733 -0.2732 -0.2733 -0.2731 -0.2726 -0.2721 + 160.0 + -3.6176 -3.6661 -3.7087 -3.7493 -3.8231 -3.8883 + 1.1082 1.1016 1.0947 1.0874 1.0707 1.0512 + -0.1791 -0.1790 -0.1788 -0.1787 -0.1783 -0.1780 + 165.0 + -3.7578 -3.8061 -3.8486 -3.8891 -3.9627 -4.0276 + 0.8579 0.8534 0.8478 0.8423 0.8297 0.8152 + -0.1024 -0.1023 -0.1022 -0.1022 -0.1020 -0.1019 + 170.0 + -3.8605 -3.9088 -3.9512 -3.9916 -4.0651 -4.1299 + 0.5850 0.5818 0.5783 0.5746 0.5663 0.5567 + -0.0461 -0.0460 -0.0460 -0.0460 -0.0459 -0.0459 + 175.0 + -3.9232 -3.9715 -4.0139 -4.0543 -4.1278 -4.1925 + 0.2966 0.2977 0.2936 0.2911 0.2872 0.2825 + -0.0116 -0.0116 -0.0116 -0.0116 -0.0116 -0.0116 + 180.0 + -3.9444 -3.9927 -4.0351 -4.0754 -4.1489 -4.2136 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +sS 17 20.0 100.0 + 20.0 + -1.0139 -1.0727 -1.1038 -1.1085 -1.2716 -1.4347 + -0.2986 -0.3779 -0.4612 -0.5442 -0.6911 -0.8380 + -0.1142 -0.1109 -0.1159 -0.1329 -0.1640 -0.1967 + 25.0 + -1.1470 -1.2214 -1.2737 -1.2436 -1.3394 -1.4352 + -0.4154 -0.4816 -0.5489 -0.6546 -0.7764 -0.8982 + -0.2014 -0.1985 -0.1968 -0.1906 -0.2362 -0.2818 + 30.0 + -1.1855 -1.2598 -1.3183 -1.3671 -1.4072 -1.4473 + -0.5121 -0.5762 -0.6437 -0.7132 -0.8617 -1.0102 + -0.2799 -0.2765 -0.2764 -0.2804 -0.3076 -0.3348 + 35.0 + -1.2008 -1.2765 -1.3370 -1.3868 -1.4346 -1.4997 + -0.5988 -0.6628 -0.7304 -0.8019 -0.9479 -1.2050 + -0.3691 -0.3649 -0.3639 -0.3683 -0.3901 -0.5064 + 40.0 + -1.1929 -1.2703 -1.3334 -1.3858 -1.4420 -1.3788 + -0.6690 -0.7325 -0.7990 -0.8694 -1.0191 -1.1785 + -0.4719 -0.4672 -0.4639 -0.4664 -0.4857 -0.5533 + 45.0 + -1.1634 -1.2423 -1.3074 -1.3633 -1.4295 -1.3916 + -0.7144 -0.7775 -0.8443 -0.9137 -1.0643 -1.2300 + -0.5848 -0.5801 -0.5774 -0.5773 -0.5921 -0.6473 + 50.0 + -1.1152 -1.1960 -1.2636 -1.3221 -1.3980 -1.3848 + -0.7298 -0.7919 -0.8581 -0.9274 -1.0783 -1.2475 + -0.7071 -0.7013 -0.6975 -0.6974 -0.7086 -0.7510 + 55.0 + -1.0550 -1.1374 -1.2063 -1.2674 -1.3525 -1.3602 + -0.7104 -0.7718 -0.8370 -0.9052 -1.0554 -1.2270 + -0.8325 -0.8262 -0.8232 -0.8223 -0.8299 -0.8636 + 60.0 + -0.9887 -1.0724 -1.1430 -1.2066 -1.2991 -1.3240 + -0.6533 -0.7141 -0.7782 -0.8458 -0.9949 -1.1664 + -0.9583 -0.9515 -0.9481 -0.9463 -0.9517 -0.9790 + 65.0 + -0.9235 -1.0077 -1.0801 -1.1455 -1.2446 -1.2841 + -0.5576 -0.6171 -0.6805 -0.7468 -0.8940 -1.0651 + -1.0798 -1.0738 -1.0695 -1.0675 -1.0711 -1.0923 + 70.0 + -0.8670 -0.9514 -1.0250 -1.0922 -1.1970 -1.2479 + -0.4249 -0.4824 -0.5447 -0.6099 -0.7547 -0.9226 + -1.1922 -1.1870 -1.1826 -1.1802 -1.1820 -1.2002 + 75.0 + -0.8254 -0.9107 -0.9850 -1.0534 -1.1628 -1.2239 + -0.2552 -0.3130 -0.3733 -0.4365 -0.5777 -0.7436 + -1.2931 -1.2872 -1.2831 -1.2809 -1.2821 -1.2961 + 80.0 + -0.8061 -0.8910 -0.9664 -1.0358 -1.1494 -1.2190 + -0.0583 -0.1096 -0.1701 -0.2286 -0.3674 -0.5299 + -1.3755 -1.3722 -1.3674 -1.3661 -1.3660 -1.3772 + 85.0 + -0.8140 -0.8992 -0.9748 -1.0453 -1.1624 -1.2392 + 0.1700 0.1157 0.0600 0.0010 -0.1307 -0.2865 + -1.4398 -1.4351 -1.4316 -1.4294 -1.4295 -1.4394 + 90.0 + -0.8554 -0.9408 -1.0165 -1.0874 -1.2067 -1.2906 + 0.4190 0.3685 0.3139 0.2560 0.1267 -0.0204 + -1.4811 -1.4771 -1.4738 -1.4715 -1.4708 -1.4790 + 95.0 + -0.9309 -1.0166 -1.0937 -1.1644 -1.2876 -1.3762 + 0.6630 0.6170 0.5728 0.5213 0.4012 0.2589 + -1.4945 -1.4913 -1.4896 -1.4891 -1.4879 -1.4943 + 100.0 + -1.0395 -1.1237 -1.1999 -1.2721 -1.3963 -1.4884 + 0.8937 0.8484 0.7997 0.7490 0.6367 0.5049 + -1.4827 -1.4803 -1.4779 -1.4764 -1.4766 -1.4833 +sSKSac 16 65.0 140.0 + 65.0 + -1.0116 -1.0976 -1.1746 -1.2480 -1.3765 -1.4554 + -0.5567 -0.5956 -0.6367 -0.6798 -0.7728 -0.8530 + -1.2331 -1.2307 -1.2289 -1.2276 -1.2279 -1.2327 + 70.0 + -0.9206 -1.0064 -1.0835 -1.1568 -1.2855 -1.3874 + -0.3723 -0.4110 -0.4519 -0.4947 -0.5879 -0.6937 + -1.3235 -1.3212 -1.3193 -1.3181 -1.3182 -1.3227 + 75.0 + -0.8596 -0.9444 -1.0214 -1.0948 -1.2246 -1.3258 + -0.1716 -0.2067 -0.2476 -0.2902 -0.3853 -0.4867 + -1.3964 -1.3954 -1.3935 -1.3922 -1.3911 -1.3967 + 80.0 + -0.8314 -0.9170 -0.9941 -1.0678 -1.1968 -1.2994 + 0.0538 0.0180 -0.0217 -0.0664 -0.1528 -0.2532 + -1.4590 -1.4565 -1.4541 -1.4517 -1.4511 -1.4546 + 85.0 + -0.8362 -0.9218 -0.9991 -1.0730 -1.2037 -1.3098 + 0.2881 0.2535 0.2196 0.1834 0.0978 0.0030 + -1.4991 -1.4968 -1.4950 -1.4937 -1.4921 -1.4940 + 90.0 + -0.8749 -0.9606 -1.0379 -1.1117 -1.2438 -1.3530 + 0.5317 0.5016 0.4689 0.4333 0.3564 0.2700 + -1.5152 -1.5133 -1.5117 -1.5104 -1.5092 -1.5105 + 95.0 + -0.9472 -1.0331 -1.1108 -1.1854 -1.3185 -1.4287 + 0.7699 0.7426 0.7134 0.6824 0.6124 0.5296 + -1.5071 -1.5053 -1.5038 -1.5026 -1.5014 -1.5025 + 100.0 + -1.0565 -1.1417 -1.2177 -1.2938 -1.4269 -1.5396 + 1.0048 0.9779 0.9478 0.9174 0.8556 0.7814 + -1.4748 -1.4735 -1.4727 -1.4707 -1.4702 -1.4708 + 105.0 + -1.1986 -1.2842 -1.3615 -1.4358 -1.5680 -1.6828 + 1.2204 1.1964 1.1706 1.1433 1.0808 1.0136 + -1.4203 -1.4190 -1.4179 -1.4171 -1.4170 -1.4169 + 110.0 + -1.3702 -1.4557 -1.5331 -1.6077 -1.7415 -1.8552 + 1.4105 1.3881 1.3643 1.3393 1.2833 1.2189 + -1.3460 -1.3448 -1.3437 -1.3429 -1.3424 -1.3431 + 115.0 + -1.5686 -1.6541 -1.7316 -1.8063 -1.9410 -2.0546 + 1.5705 1.5499 1.5280 1.5050 1.4543 1.3942 + -1.2539 -1.2528 -1.2518 -1.2510 -1.2504 -1.2513 + 120.0 + -1.7916 -1.8752 -1.9529 -2.0271 -2.1639 -2.2802 + 1.6961 1.6766 1.6563 1.6356 1.5891 1.5356 + -1.1457 -1.1457 -1.1447 -1.1443 -1.1427 -1.1425 + 125.0 + -2.0327 -2.1177 -2.1947 -2.2690 -2.4024 -2.5197 + 1.7811 1.7640 1.7452 1.7258 1.6830 1.6345 + -1.0252 -1.0245 -1.0240 -1.0236 -1.0239 -1.0234 + 130.0 + -2.2844 -2.3693 -2.4462 -2.5207 -2.6558 -2.7715 + 1.8212 1.8054 1.7890 1.7717 1.7334 1.6895 + -0.8966 -0.8961 -0.8956 -0.8952 -0.8948 -0.8953 + 135.0 + -2.5374 -2.6215 -2.6973 -2.7689 -2.9056 -3.0239 + 1.8151 1.8011 1.7867 1.7716 1.7376 1.6986 + -0.7653 -0.7652 -0.7654 -0.7666 -0.7654 -0.7647 + 140.0 + -2.7852 -2.8704 -2.9478 -3.0228 -3.1594 -3.2777 + 1.7625 1.7496 1.7364 1.7223 1.6916 1.6564 + -0.6347 -0.6341 -0.6335 -0.6330 -0.6320 -0.6314 +sSKSdf 15 110.0 180.0 + 110.0 + -1.3702 -1.4548 -1.5314 -1.6061 -1.7415 -1.8590 + 1.3403 1.3296 1.3180 1.3067 1.2810 1.2520 + -1.3967 -1.3964 -1.3963 -1.3960 -1.3958 -1.3958 + 115.0 + -1.5671 -1.6518 -1.7287 -1.8031 -1.9386 -2.0561 + 1.5239 1.5132 1.5022 1.4904 1.4649 1.4360 + -1.2921 -1.2917 -1.2915 -1.2913 -1.2911 -1.2911 + 120.0 + -1.7887 -1.8733 -1.9501 -2.0245 -2.1601 -2.2778 + 1.6658 1.6553 1.6441 1.6325 1.6072 1.5786 + -1.1732 -1.1729 -1.1727 -1.1725 -1.1723 -1.1722 + 125.0 + -2.0277 -2.1123 -2.1891 -2.2636 -2.3992 -2.5169 + 1.7615 1.7512 1.7401 1.7288 1.7038 1.6757 + -1.0442 -1.0440 -1.0438 -1.0435 -1.0433 -1.0432 + 130.0 + -2.2780 -2.3626 -2.4394 -2.5138 -2.6494 -2.7671 + 1.8088 1.7988 1.7880 1.7769 1.7525 1.7250 + -0.9086 -0.9084 -0.9082 -0.9080 -0.9077 -0.9076 + 135.0 + -2.5315 -2.6161 -2.6929 -2.7673 -2.9028 -3.0204 + 1.8062 1.7964 1.7861 1.7755 1.7523 1.7257 + -0.7710 -0.7708 -0.7706 -0.7705 -0.7702 -0.7702 + 140.0 + -2.7814 -2.8659 -2.9426 -3.0169 -3.1524 -3.2701 + 1.7544 1.7451 1.7358 1.7257 1.7038 1.6788 + -0.6353 -0.6351 -0.6349 -0.6348 -0.6346 -0.6346 + 145.0 + -3.0219 -3.1064 -3.1832 -3.2576 -3.3932 -3.5109 + 1.6548 1.6467 1.6379 1.6287 1.6088 1.5861 + -0.5044 -0.5042 -0.5041 -0.5039 -0.5037 -0.5037 + 150.0 + -3.2446 -3.3291 -3.4058 -3.4802 -3.6158 -3.7337 + 1.5113 1.5037 1.4963 1.4883 1.4706 1.4505 + -0.3830 -0.3829 -0.3827 -0.3826 -0.3824 -0.3823 + 155.0 + -3.4455 -3.5298 -3.6064 -3.6805 -3.8158 -3.9338 + 1.3271 1.3212 1.3148 1.3081 1.2933 1.2761 + -0.2733 -0.2732 -0.2732 -0.2733 -0.2733 -0.2732 + 160.0 + -3.6176 -3.7020 -3.7787 -3.8530 -3.9887 -4.1067 + 1.1082 1.1024 1.0980 1.0921 1.0798 1.0659 + -0.1791 -0.1791 -0.1790 -0.1789 -0.1788 -0.1787 + 165.0 + -3.7578 -3.8421 -3.9187 -3.9930 -4.1285 -4.2465 + 0.8579 0.8530 0.8498 0.8458 0.8366 0.8261 + -0.1024 -0.1023 -0.1023 -0.1023 -0.1022 -0.1022 + 170.0 + -3.8605 -3.9448 -4.0214 -4.0956 -4.2311 -4.3491 + 0.5850 0.5840 0.5802 0.5772 0.5707 0.5639 + -0.0461 -0.0460 -0.0460 -0.0460 -0.0460 -0.0460 + 175.0 + -3.9232 -4.0076 -4.0841 -4.1584 -4.2939 -4.4118 + 0.2966 0.2928 0.2943 0.2928 0.2899 0.2859 + -0.0116 -0.0116 -0.0116 -0.0116 -0.0116 -0.0116 + 180.0 + -3.9444 -4.0287 -4.1053 -4.1795 -4.3150 -4.4330 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +ScS 19 0.0 90.0 + 0.0 + -2.7418 -2.6575 -2.5809 -2.5066 -2.3712 -2.2532 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + -2.7226 -2.6382 -2.5616 -2.4873 -2.3517 -2.2335 + -0.2060 -0.2076 -0.2095 -0.2114 -0.2154 -0.2194 + -0.0124 -0.0125 -0.0125 -0.0126 -0.0127 -0.0128 + 10.0 + -2.6661 -2.5815 -2.5047 -2.4302 -2.2942 -2.1756 + -0.4029 -0.4065 -0.4102 -0.4139 -0.4217 -0.4297 + -0.0492 -0.0494 -0.0496 -0.0498 -0.0502 -0.0507 + 15.0 + -2.5749 -2.4901 -2.4131 -2.3383 -2.2017 -2.0824 + -0.5828 -0.5884 -0.5937 -0.5993 -0.6106 -0.6222 + -0.1088 -0.1092 -0.1096 -0.1100 -0.1109 -0.1119 + 20.0 + -2.4534 -2.3684 -2.2910 -2.2159 -2.0786 -1.9585 + -0.7390 -0.7460 -0.7529 -0.7601 -0.7747 -0.7895 + -0.1888 -0.1893 -0.1900 -0.1906 -0.1921 -0.1939 + 25.0 + -2.3071 -2.2218 -2.1441 -2.0687 -1.9307 -1.8097 + -0.8651 -0.8735 -0.8819 -0.8905 -0.9079 -0.9255 + -0.2859 -0.2867 -0.2876 -0.2886 -0.2907 -0.2932 + 30.0 + -2.1423 -2.0567 -1.9787 -1.9030 -1.7643 -1.6427 + -0.9567 -0.9664 -0.9760 -0.9859 -1.0059 -1.0259 + -0.3966 -0.3977 -0.3989 -0.4001 -0.4029 -0.4062 + 35.0 + -1.9656 -1.8797 -1.8015 -1.7255 -1.5863 -1.4641 + -1.0110 -1.0218 -1.0326 -1.0436 -1.0657 -1.0879 + -0.5170 -0.5183 -0.5198 -0.5213 -0.5247 -0.5288 + 40.0 + -1.7837 -1.6977 -1.6192 -1.5431 -1.4034 -1.2807 + -1.0264 -1.0383 -1.0500 -1.0620 -1.0861 -1.1100 + -0.6431 -0.6447 -0.6464 -0.6482 -0.6522 -0.6569 + 45.0 + -1.6033 -1.5171 -1.4385 -1.3622 -1.2222 -1.0992 + -1.0030 -1.0158 -1.0283 -1.0412 -1.0670 -1.0924 + -0.7711 -0.7729 -0.7748 -0.7769 -0.7814 -0.7868 + 50.0 + -1.4304 -1.3441 -1.2654 -1.1890 -1.0488 -0.9256 + -0.9417 -0.9553 -0.9686 -0.9823 -1.0095 -1.0361 + -0.8972 -0.8992 -0.9014 -0.9037 -0.9087 -0.9147 + 55.0 + -1.2709 -1.1844 -1.1056 -1.0291 -0.8888 -0.7654 + -0.8449 -0.8592 -0.8731 -0.8874 -0.9158 -0.9436 + -1.0180 -1.0202 -1.0226 -1.0251 -1.0306 -1.0371 + 60.0 + -1.1297 -1.0432 -0.9643 -0.8877 -0.7473 -0.6238 + -0.7156 -0.7305 -0.7449 -0.7598 -0.7892 -0.8178 + -1.1304 -1.1327 -1.1353 -1.1380 -1.1439 -1.1509 + 65.0 + -1.0113 -0.9248 -0.8459 -0.7692 -0.6287 -0.5051 + -0.5578 -0.5731 -0.5880 -0.6033 -0.6336 -0.6628 + -1.2315 -1.2340 -1.2368 -1.2396 -1.2459 -1.2533 + 70.0 + -0.9196 -0.8330 -0.7540 -0.6773 -0.5367 -0.4131 + -0.3761 -0.3918 -0.4070 -0.4226 -0.4535 -0.4833 + -1.3191 -1.3217 -1.3246 -1.3276 -1.3342 -1.3420 + 75.0 + -0.8575 -0.7709 -0.6918 -0.6151 -0.4744 -0.3507 + -0.1758 -0.1917 -0.2073 -0.2231 -0.2544 -0.2844 + -1.3911 -1.3938 -1.3969 -1.4000 -1.4069 -1.4150 + 80.0 + -0.8272 -0.7406 -0.6615 -0.5847 -0.4440 -0.3202 + 0.0374 0.0212 0.0056 -0.0104 -0.0419 -0.0721 + -1.4460 -1.4489 -1.4520 -1.4552 -1.4624 -1.4708 + 85.0 + -0.8302 -0.7435 -0.6644 -0.5876 -0.4468 -0.3230 + 0.2573 0.2411 0.2253 0.2093 0.1777 0.1476 + -1.4829 -1.4859 -1.4891 -1.4924 -1.4998 -1.5084 + 90.0 + -0.8668 -0.7801 -0.7010 -0.6242 -0.4835 -0.3596 + 0.4777 0.4615 0.4457 0.4297 0.3982 0.3683 + -1.5013 -1.5043 -1.5076 -1.5110 -1.5185 -1.5273 +PcS 13 0.0 60.0 + 0.0 + -2.1220 -2.0737 -2.0313 -1.9910 -1.9175 -1.8527 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 5.0 + -2.1039 -2.0556 -2.0131 -1.9727 -1.8991 -1.8342 + -0.2058 -0.2070 -0.2083 -0.2096 -0.2125 -0.2154 + -0.0114 -0.0115 -0.0115 -0.0116 -0.0117 -0.0118 + 10.0 + -2.0504 -2.0019 -1.9593 -1.9187 -1.8447 -1.7793 + -0.4034 -0.4060 -0.4086 -0.4113 -0.4167 -0.4225 + -0.0453 -0.0454 -0.0456 -0.0457 -0.0461 -0.0466 + 15.0 + -1.9638 -1.9151 -1.8723 -1.8315 -1.7570 -1.6910 + -0.5857 -0.5896 -0.5934 -0.5973 -0.6052 -0.6135 + -0.1001 -0.1004 -0.1008 -0.1011 -0.1020 -0.1030 + 20.0 + -1.8481 -1.7992 -1.7561 -1.7150 -1.6399 -1.5732 + -0.7462 -0.7511 -0.7560 -0.7609 -0.7710 -0.7814 + -0.1739 -0.1744 -0.1749 -0.1755 -0.1769 -0.1785 + 25.0 + -1.7081 -1.6590 -1.6156 -1.5743 -1.4986 -1.4312 + -0.8790 -0.8849 -0.8907 -0.8966 -0.9085 -0.9206 + -0.2637 -0.2643 -0.2651 -0.2660 -0.2679 -0.2702 + 30.0 + -1.5495 -1.5001 -1.4566 -1.4150 -1.3388 -1.2710 + -0.9799 -0.9866 -0.9932 -0.9998 -1.0132 -1.0268 + -0.3662 -0.3671 -0.3681 -0.3692 -0.3717 -0.3745 + 35.0 + -1.3783 -1.3288 -1.2851 -1.2434 -1.1669 -1.0987 + -1.0458 -1.0532 -1.0604 -1.0677 -1.0823 -1.0969 + -0.4781 -0.4791 -0.4804 -0.4816 -0.4845 -0.4880 + 40.0 + -1.2008 -1.1512 -1.1075 -1.0656 -0.9890 -0.9207 + -1.0749 -1.0829 -1.0906 -1.0984 -1.1139 -1.1293 + -0.5955 -0.5967 -0.5981 -0.5996 -0.6028 -0.6067 + 45.0 + -1.0231 -0.9735 -0.9297 -0.8879 -0.8112 -0.7430 + -1.0666 -1.0750 -1.0831 -1.0913 -1.1074 -1.1233 + -0.7149 -0.7162 -0.7177 -0.7193 -0.7229 -0.7271 + 50.0 + -0.8510 -0.8014 -0.7576 -0.7158 -0.6392 -0.5711 + -1.0214 -1.0301 -1.0384 -1.0468 -1.0634 -1.0796 + -0.8327 -0.8341 -0.8358 -0.8375 -0.8413 -0.8457 + 55.0 + -0.6898 -0.6403 -0.5965 -0.5547 -0.4783 -0.4103 + -0.9406 -0.9496 -0.9581 -0.9666 -0.9834 -0.9996 + -0.9456 -0.9471 -0.9488 -0.9506 -0.9545 -0.9591 + 60.0 + -0.5445 -0.4950 -0.4513 -0.4095 -0.3332 -0.2653 + -0.8268 -0.8358 -0.8443 -0.8529 -0.8696 -0.8856 + -1.0505 -1.0521 -1.0538 -1.0556 -1.0596 -1.0643 +PKSab 3 130.0 140.0 + 130.0 + -1.6410 -1.5826 -1.5320 -1.4887 -1.4056 -1.3356 + 1.5472 1.5505 1.5253 1.5086 1.4800 1.4545 + -0.8753 -0.8853 -0.8896 -0.8917 -0.8983 -0.9034 + 135.0 + -1.8193 -1.7694 -1.7253 -1.6832 -1.6059 -1.5372 + 1.4350 1.4253 1.4160 1.4066 1.3884 1.3707 + -0.7921 -0.7937 -0.7956 -0.7976 -0.8020 -0.8070 + 140.0 + -2.0132 -1.9636 -1.9198 -1.8783 -1.8023 -1.7324 + 1.3231 1.3140 1.3053 1.2965 1.2795 1.2673 + -0.7012 -0.7028 -0.7046 -0.7063 -0.7102 -0.7157 +PKSbc 4 130.0 145.0 + 130.0 + -1.6487 -1.5883 -1.5524 -1.5164 -1.4464 -1.3837 + 1.5741 1.5652 1.5813 1.5882 1.5983 1.6080 + -0.8734 -0.8831 -0.8817 -0.8810 -0.8819 -0.8838 + 135.0 + -1.9134 -1.8658 -1.8231 -1.7820 -1.7097 -1.6433 + 1.6508 1.6488 1.6478 1.6473 1.6475 1.6505 + -0.7488 -0.7491 -0.7500 -0.7511 -0.7521 -0.7548 + 140.0 + -2.1692 -2.1207 -2.0776 -2.0363 -1.9637 -1.8976 + 1.6326 1.6306 1.6295 1.6287 1.6277 1.6291 + -0.6199 -0.6205 -0.6213 -0.6224 -0.6230 -0.6250 + 145.0 + -2.4127 -2.3646 -2.3220 -2.2811 -2.2053 -2.1398 + 1.5537 1.5514 1.5499 1.5487 1.5483 1.5484 + -0.4942 -0.4944 -0.4948 -0.4955 -0.4974 -0.4987 +PKSdf 15 110.0 180.0 + 110.0 + -0.7628 -0.7107 -0.6694 -0.6243 -0.5510 -0.4840 + 1.2636 1.2580 1.2574 1.2517 1.2500 1.2470 + -1.3804 -1.3845 -1.3834 -1.3885 -1.3888 -1.3906 + 115.0 + -0.9536 -0.9052 -0.8623 -0.8217 -0.7474 -0.6819 + 1.4414 1.4394 1.4374 1.4358 1.4332 1.4318 + -1.2827 -1.2829 -1.2833 -1.2836 -1.2845 -1.2855 + 120.0 + -1.1754 -1.1267 -1.0841 -1.0435 -0.9693 -0.9036 + 1.5840 1.5817 1.5800 1.5784 1.5758 1.5744 + -1.1637 -1.1640 -1.1644 -1.1647 -1.1655 -1.1665 + 125.0 + -1.4150 -1.3664 -1.3237 -1.2829 -1.2087 -1.1430 + 1.6809 1.6787 1.6769 1.6753 1.6728 1.6713 + -1.0344 -1.0348 -1.0351 -1.0355 -1.0364 -1.0374 + 130.0 + -1.6649 -1.6163 -1.5735 -1.5328 -1.4586 -1.3931 + 1.7296 1.7274 1.7257 1.7241 1.7217 1.7204 + -0.8993 -0.8996 -0.8999 -0.9003 -0.9011 -0.9021 + 135.0 + -1.9187 -1.8702 -1.8274 -1.7867 -1.7125 -1.6468 + 1.7293 1.7272 1.7256 1.7241 1.7218 1.7206 + -0.7617 -0.7620 -0.7623 -0.7627 -0.7636 -0.7646 + 140.0 + -2.1683 -2.1197 -2.0770 -2.0363 -1.9622 -1.8966 + 1.6808 1.6789 1.6774 1.6760 1.6740 1.6731 + -0.6265 -0.6268 -0.6271 -0.6275 -0.6282 -0.6292 + 145.0 + -2.4091 -2.3609 -2.3186 -2.2784 -2.2024 -2.1357 + 1.5857 1.5838 1.5823 1.5809 1.5803 1.5803 + -0.4961 -0.4962 -0.4963 -0.4964 -0.4981 -0.4996 + 150.0 + -2.6281 -2.5803 -2.5380 -2.4975 -2.4237 -2.3583 + 1.4512 1.4493 1.4480 1.4468 1.4455 1.4450 + -0.3777 -0.3775 -0.3776 -0.3778 -0.3783 -0.3789 + 155.0 + -2.8287 -2.7802 -2.7376 -2.6970 -2.6230 -2.5575 + 1.2749 1.2739 1.2730 1.2723 1.2715 1.2715 + -0.2691 -0.2693 -0.2695 -0.2697 -0.2702 -0.2708 + 160.0 + -3.0007 -2.9523 -2.9098 -2.8693 -2.7957 -2.7306 + 1.0642 1.0633 1.0626 1.0619 1.0611 1.0610 + -0.1759 -0.1760 -0.1761 -0.1762 -0.1765 -0.1768 + 165.0 + -3.1390 -3.0907 -3.0482 -3.0078 -2.9341 -2.8692 + 0.8255 0.8250 0.8245 0.8241 0.8236 0.8236 + -0.1008 -0.1009 -0.1010 -0.1010 -0.1012 -0.1014 + 170.0 + -3.2411 -3.1928 -3.1503 -3.1099 -3.0364 -2.9715 + 0.5635 0.5632 0.5629 0.5626 0.5623 0.5624 + -0.0454 -0.0454 -0.0455 -0.0455 -0.0456 -0.0457 + 175.0 + -3.3035 -3.2552 -3.2128 -3.1724 -3.0990 -3.0342 + 0.2860 0.2858 0.2856 0.2855 0.2854 0.2854 + -0.0115 -0.0115 -0.0115 -0.0115 -0.0115 -0.0115 + 180.0 + -3.3246 -3.2763 -3.2340 -3.1935 -3.1201 -3.0553 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +PKKSab 2 215.0 220.0 + 215.0 + -1.8795 -1.8298 -1.7859 -1.7440 -1.6673 -1.5989 + 2.0893 2.0788 2.0686 2.0587 2.0396 2.0217 + -1.2558 -1.2574 -1.2591 -1.2609 -1.2651 -1.2699 + 220.0 + -1.6898 -1.6403 -1.5932 -1.5552 -1.4798 -1.4138 + 2.1333 2.1242 2.1167 2.1090 2.0965 2.0859 + -1.3862 -1.3878 -1.3918 -1.3911 -1.3945 -1.3979 +PKKSbc 14 215.0 280.0 + 215.0 + -1.8717 -1.8222 -1.7788 -1.7377 -1.6534 -1.5837 + 2.1442 2.1396 2.1354 2.1310 2.1290 2.1239 + -1.2635 -1.2651 -1.2666 -1.2679 -1.2773 -1.2828 + 220.0 + -1.6727 -1.6186 -1.5758 -1.5304 -1.4496 -1.3784 + 2.2784 2.2760 2.2698 2.2667 2.2607 2.2558 + -1.4013 -1.4058 -1.4067 -1.4107 -1.4172 -1.4233 + 225.0 + -1.4686 -1.4184 -1.3739 -1.3315 -1.2468 -1.1740 + 2.3502 2.3455 2.3415 2.3378 2.3320 2.3279 + -1.5407 -1.5424 -1.5443 -1.5463 -1.5551 -1.5620 + 230.0 + -1.2730 -1.2224 -1.1776 -1.1347 -1.0560 -0.9807 + 2.3631 2.3589 2.3554 2.3522 2.3470 2.3431 + -1.6738 -1.6757 -1.6778 -1.6799 -1.6844 -1.6928 + 235.0 + -1.0962 -1.0449 -0.9993 -0.9556 -0.8751 -0.8024 + 2.3219 2.3178 2.3145 2.3114 2.3071 2.3046 + -1.7945 -1.7968 -1.7994 -1.8020 -1.8076 -1.8139 + 240.0 + -0.9383 -0.8877 -0.8428 -0.7980 -0.7163 -0.6431 + 2.2287 2.2255 2.2232 2.2195 2.2144 2.2123 + -1.9036 -1.9054 -1.9074 -1.9106 -1.9169 -1.9234 + 245.0 + -0.8077 -0.7569 -0.7116 -0.6682 -0.5880 -0.5145 + 2.0866 2.0836 2.0814 2.0794 2.0771 2.0756 + -1.9960 -1.9979 -2.0000 -2.0023 -2.0074 -2.0139 + 250.0 + -0.7106 -0.6594 -0.6138 -0.5702 -0.4894 -0.4162 + 1.9026 1.8989 1.8962 1.8939 1.8910 1.8903 + -2.0681 -2.0702 -2.0725 -2.0749 -2.0803 -2.0865 + 255.0 + -0.6508 -0.6000 -0.5548 -0.5114 -0.4308 -0.3577 + 1.6848 1.6829 1.6817 1.6808 1.6769 1.6764 + -2.1176 -2.1194 -2.1214 -2.1235 -2.1288 -2.1347 + 260.0 + -0.6312 -0.5805 -0.5353 -0.4919 -0.4117 -0.3386 + 1.4355 1.4336 1.4325 1.4318 1.4321 1.4293 + -2.1431 -2.1449 -2.1468 -2.1489 -2.1536 -2.1597 + 265.0 + -0.6545 -0.6038 -0.5586 -0.5153 -0.4364 -0.3645 + 1.1615 1.1597 1.1585 1.1576 1.1557 1.1539 + -2.1430 -2.1447 -2.1467 -2.1487 -2.1525 -2.1576 + 270.0 + -0.7233 -0.6731 -0.6284 -0.5855 -0.5060 -0.4338 + 0.8722 0.8695 0.8676 0.8664 0.8655 0.8676 + -2.1157 -2.1171 -2.1187 -2.1205 -2.1246 -2.1297 + 275.0 + -0.8361 -0.7857 -0.7409 -0.6979 -0.6186 -0.5486 + 0.5773 0.5759 0.5750 0.5744 0.5743 0.5713 + -2.0622 -2.0636 -2.0653 -2.0670 -2.0711 -2.0750 + 280.0 + -0.9922 -0.9419 -0.8972 -0.8543 -0.7752 -0.7037 + 0.2813 0.2801 0.2795 0.2792 0.2799 0.2825 + -1.9833 -1.9846 -1.9862 -1.9879 -1.9917 -1.9962 +PKKSdf 32 205.0 360.0 + 205.0 + -2.1742 -2.1301 -2.0805 -2.0451 -1.9665 -1.9012 + 1.8676 1.8587 1.8612 1.8512 1.8479 1.8368 + -1.1584 -1.1573 -1.1603 -1.1590 -1.1625 -1.1631 + 210.0 + -2.0006 -1.9510 -1.9064 -1.8657 -1.7889 -1.7207 + 2.1059 2.1024 2.1000 2.0953 2.0887 2.0819 + -1.2689 -1.2699 -1.2713 -1.2717 -1.2740 -1.2765 + 215.0 + -1.8082 -1.7586 -1.7146 -1.6731 -1.5958 -1.5274 + 2.2979 2.2944 2.2911 2.2875 2.2813 2.2748 + -1.3891 -1.3900 -1.3911 -1.3920 -1.3946 -1.3972 + 220.0 + -1.6096 -1.5602 -1.5163 -1.4742 -1.3969 -1.3278 + 2.4341 2.4305 2.4273 2.4241 2.4180 2.4122 + -1.5129 -1.5136 -1.5147 -1.5159 -1.5185 -1.5215 + 225.0 + -1.4117 -1.3620 -1.3179 -1.2756 -1.1982 -1.1288 + 2.5124 2.5090 2.5059 2.5030 2.4971 2.4918 + -1.6362 -1.6372 -1.6383 -1.6396 -1.6423 -1.6455 + 230.0 + -1.2216 -1.1719 -1.1276 -1.0853 -1.0078 -0.9380 + 2.5320 2.5288 2.5258 2.5229 2.5175 2.5126 + -1.7550 -1.7560 -1.7573 -1.7585 -1.7613 -1.7647 + 235.0 + -1.0465 -0.9965 -0.9523 -0.9100 -0.8321 -0.7622 + 2.4820 2.4789 2.4761 2.4734 2.4683 2.4638 + -1.8652 -1.8663 -1.8675 -1.8688 -1.8718 -1.8752 + 240.0 + -0.8929 -0.8430 -0.7986 -0.7563 -0.6782 -0.6081 + 2.3745 2.3716 2.3690 2.3665 2.3620 2.3581 + -1.9628 -1.9639 -1.9652 -1.9666 -1.9696 -1.9732 + 245.0 + -0.7670 -0.7170 -0.6727 -0.6303 -0.5521 -0.4818 + 2.2184 2.2157 2.2134 2.2111 2.2071 2.2038 + -2.0445 -2.0456 -2.0469 -2.0482 -2.0513 -2.0550 + 250.0 + -0.6740 -0.6240 -0.5798 -0.5373 -0.4593 -0.3885 + 2.0196 2.0173 2.0154 2.0136 2.0106 2.0066 + -2.1070 -2.1081 -2.1094 -2.1107 -2.1138 -2.1178 + 255.0 + -0.6174 -0.5673 -0.5230 -0.4805 -0.4022 -0.3317 + 1.7816 1.7793 1.7775 1.7757 1.7728 1.7708 + -2.1486 -2.1498 -2.1511 -2.1525 -2.1556 -2.1594 + 260.0 + -0.6016 -0.5516 -0.5072 -0.4647 -0.3864 -0.3160 + 1.5166 1.5146 1.5130 1.5116 1.5094 1.5081 + -2.1665 -2.1676 -2.1689 -2.1703 -2.1734 -2.1772 + 265.0 + -0.6282 -0.5782 -0.5339 -0.4914 -0.4132 -0.3428 + 1.2302 1.2284 1.2270 1.2258 1.2240 1.2233 + -2.1597 -2.1609 -2.1621 -2.1635 -2.1666 -2.1702 + 270.0 + -0.6981 -0.6481 -0.6038 -0.5613 -0.4832 -0.4129 + 0.9323 0.9308 0.9297 0.9289 0.9278 0.9280 + -2.1279 -2.1290 -2.1302 -2.1315 -2.1346 -2.1382 + 275.0 + -0.8108 -0.7609 -0.7168 -0.6746 -0.5970 -0.5274 + 0.6312 0.6297 0.6285 0.6275 0.6262 0.6256 + -2.0710 -2.0720 -2.0732 -2.0744 -2.0771 -2.0803 + 280.0 + -0.9637 -0.9139 -0.8697 -0.8274 -0.7497 -0.6797 + 0.3369 0.3358 0.3352 0.3346 0.3345 0.3358 + -1.9907 -1.9917 -1.9929 -1.9941 -1.9969 -2.0002 + 285.0 + -1.1582 -1.1084 -1.0644 -1.0222 -0.9447 -0.8751 + 0.0513 0.0503 0.0498 0.0496 0.0499 0.0515 + -1.8862 -1.8871 -1.8882 -1.8893 -1.8919 -1.8951 + 290.0 + -1.3845 -1.3349 -1.2909 -1.2489 -1.1717 -1.1024 + -0.2097 -0.2104 -0.2106 -0.2108 -0.2102 -0.2084 + -1.7628 -1.7636 -1.7646 -1.7657 -1.7681 -1.7710 + 295.0 + -1.6410 -1.5915 -1.5477 -1.5058 -1.4289 -1.3600 + -0.4438 -0.4443 -0.4444 -0.4444 -0.4436 -0.4415 + -1.6215 -1.6223 -1.6232 -1.6242 -1.6264 -1.6290 + 300.0 + -1.9210 -1.8716 -1.8279 -1.7861 -1.7095 -1.6410 + -0.6443 -0.6446 -0.6447 -0.6445 -0.6435 -0.6413 + -1.4663 -1.4670 -1.4679 -1.4688 -1.4708 -1.4732 + 305.0 + -2.2174 -2.1681 -2.1245 -2.0829 -2.0066 -1.9385 + -0.8063 -0.8065 -0.8065 -0.8063 -0.8051 -0.8028 + -1.3012 -1.3019 -1.3026 -1.3034 -1.3052 -1.3073 + 310.0 + -2.5222 -2.4729 -2.4294 -2.3878 -2.3140 -2.2479 + -0.9262 -0.9264 -0.9262 -0.9259 -0.9254 -0.9237 + -1.1307 -1.1313 -1.1320 -1.1328 -1.1332 -1.1341 + 315.0 + -2.8348 -2.7858 -2.7426 -2.7013 -2.6258 -2.5587 + -1.0037 -1.0038 -1.0037 -1.0034 -1.0022 -1.0001 + -0.9554 -0.9558 -0.9563 -0.9569 -0.9582 -0.9597 + 320.0 + -3.1365 -3.0876 -3.0446 -3.0035 -2.9284 -2.8618 + -1.0348 -1.0350 -1.0348 -1.0345 -1.0334 -1.0314 + -0.7857 -0.7860 -0.7865 -0.7869 -0.7879 -0.7891 + 325.0 + -3.4252 -3.3764 -3.3335 -3.2925 -3.2178 -3.1514 + -1.0221 -1.0220 -1.0218 -1.0215 -1.0205 -1.0186 + -0.6230 -0.6233 -0.6236 -0.6240 -0.6248 -0.6258 + 330.0 + -3.6929 -3.6445 -3.6019 -3.5613 -3.4872 -3.4216 + -0.9669 -0.9667 -0.9664 -0.9661 -0.9650 -0.9633 + -0.4719 -0.4720 -0.4722 -0.4723 -0.4727 -0.4733 + 335.0 + -3.9344 -3.8859 -3.8432 -3.8026 -3.7285 -3.6629 + -0.8716 -0.8715 -0.8713 -0.8711 -0.8702 -0.8688 + -0.3354 -0.3356 -0.3358 -0.3359 -0.3364 -0.3368 + 340.0 + -4.1398 -4.0914 -4.0488 -4.0082 -3.9343 -3.8690 + -0.7423 -0.7422 -0.7421 -0.7419 -0.7412 -0.7400 + -0.2193 -0.2194 -0.2195 -0.2196 -0.2199 -0.2202 + 345.0 + -4.3054 -4.2570 -4.2145 -4.1740 -4.1006 -4.0356 + -0.5841 -0.5840 -0.5840 -0.5838 -0.5829 -0.5818 + -0.1256 -0.1257 -0.1257 -0.1258 -0.1258 -0.1259 + 350.0 + -4.4278 -4.3795 -4.3371 -4.2966 -4.2231 -4.1582 + -0.4018 -0.4018 -0.4017 -0.4015 -0.4012 -0.4005 + -0.0563 -0.0563 -0.0563 -0.0563 -0.0564 -0.0565 + 355.0 + -4.5021 -4.4538 -4.4114 -4.3710 -4.2975 -4.2327 + -0.2050 -0.2050 -0.2049 -0.2049 -0.2047 -0.2043 + -0.0142 -0.0142 -0.0142 -0.0142 -0.0142 -0.0142 + 360.0 + -4.5272 -4.4789 -4.4365 -4.3961 -4.3226 -4.2579 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +SKKSac 43 65.0 275.0 + 65.0 + -1.0118 -0.9252 -0.8464 -0.7698 -0.6296 -0.5063 + -0.5570 -0.5719 -0.5865 -0.6013 -0.6304 -0.6582 + -1.2329 -1.2356 -1.2385 -1.2415 -1.2481 -1.2558 + 70.0 + -0.9204 -0.8339 -0.7551 -0.6785 -0.5382 -0.4150 + -0.3724 -0.3872 -0.4019 -0.4165 -0.4456 -0.4734 + -1.3233 -1.3260 -1.3289 -1.3319 -1.3385 -1.3462 + 75.0 + -0.8585 -0.7720 -0.6932 -0.6167 -0.4765 -0.3533 + -0.1689 -0.1837 -0.1983 -0.2130 -0.2420 -0.2699 + -1.3966 -1.3993 -1.4022 -1.4052 -1.4118 -1.4194 + 80.0 + -0.8285 -0.7421 -0.6632 -0.5867 -0.4465 -0.3233 + 0.0473 0.0324 0.0181 0.0035 -0.0250 -0.0525 + -1.4517 -1.4543 -1.4572 -1.4602 -1.4669 -1.4745 + 85.0 + -0.8316 -0.7451 -0.6662 -0.5897 -0.4495 -0.3264 + 0.2681 0.2528 0.2379 0.2228 0.1938 0.1676 + -1.4873 -1.4899 -1.4927 -1.4957 -1.5022 -1.5099 + 90.0 + -0.8693 -0.7831 -0.7047 -0.6287 -0.4900 -0.3618 + 0.4908 0.4761 0.4617 0.4471 0.4183 0.3930 + -1.5034 -1.5058 -1.5085 -1.5112 -1.5168 -1.5281 + 95.0 + -0.9388 -0.8534 -0.7743 -0.6981 -0.5585 -0.4356 + 0.7060 0.6939 0.6777 0.6635 0.6355 0.6091 + -1.5027 -1.5052 -1.5079 -1.5107 -1.5170 -1.5246 + 100.0 + -1.0430 -0.9563 -0.8771 -0.8003 -0.6593 -0.5353 + 0.9115 0.8965 0.8820 0.8671 0.8378 0.8096 + -1.4821 -1.4848 -1.4877 -1.4907 -1.4974 -1.5050 + 105.0 + -1.1714 -1.0833 -1.0055 -0.9298 -0.7908 -0.6682 + 1.0900 1.0734 1.0610 1.0481 1.0223 0.9970 + -1.4457 -1.4487 -1.4511 -1.4537 -1.4596 -1.4666 + 110.0 + -1.3279 -1.2418 -1.1618 -1.0871 -0.9490 -0.8268 + 1.2476 1.2343 1.2192 1.2074 1.1828 1.1583 + -1.3930 -1.3954 -1.3983 -1.4004 -1.4057 -1.4124 + 115.0 + -1.5061 -1.4200 -1.3416 -1.2639 -1.1264 -1.0045 + 1.3754 1.3623 1.3497 1.3354 1.3114 1.2876 + -1.3268 -1.3291 -1.3316 -1.3346 -1.3394 -1.3457 + 120.0 + -1.7009 -1.6148 -1.5327 -1.4594 -1.3224 -1.2007 + 1.4695 1.4568 1.4424 1.4310 1.4074 1.3843 + -1.2503 -1.2525 -1.2562 -1.2575 -1.2619 -1.2679 + 125.0 + -1.9071 -1.8183 -1.7424 -1.6678 -1.5300 -1.4081 + 1.5268 1.5133 1.5019 1.4899 1.4664 1.4438 + -1.1661 -1.1693 -1.1705 -1.1722 -1.1767 -1.1826 + 130.0 + -2.1201 -2.0350 -1.9573 -1.8816 -1.7422 -1.6189 + 1.5449 1.5328 1.5212 1.5093 1.4862 1.4642 + -1.0772 -1.0788 -1.0807 -1.0828 -1.0878 -1.0941 + 135.0 + -2.3321 -2.2465 -2.1684 -2.0929 -1.9528 -1.8293 + 1.5237 1.5119 1.5005 1.4889 1.4666 1.4456 + -0.9878 -0.9896 -0.9916 -0.9935 -0.9987 -1.0048 + 140.0 + -2.5372 -2.4513 -2.3729 -2.2966 -2.1566 -2.0329 + 1.4634 1.4520 1.4411 1.4300 1.4086 1.3885 + -0.9013 -0.9032 -0.9052 -0.9074 -0.9124 -0.9183 + 145.0 + -2.7292 -2.6431 -2.5646 -2.4882 -2.3481 -2.2286 + 1.3660 1.3551 1.3447 1.3349 1.3136 1.2925 + -0.8213 -0.8232 -0.8253 -0.8274 -0.8323 -0.8363 + 150.0 + -2.9025 -2.8163 -2.7377 -2.6613 -2.5250 -2.4040 + 1.2350 1.2246 1.2146 1.2046 1.1823 1.1616 + -0.7511 -0.7529 -0.7550 -0.7571 -0.7602 -0.7645 + 155.0 + -3.0527 -2.9665 -2.8879 -2.8138 -2.6776 -2.5568 + 1.0741 1.0642 1.0548 1.0424 1.0193 0.9993 + -0.6932 -0.6950 -0.6969 -0.6980 -0.7010 -0.7052 + 160.0 + -3.1788 -3.0935 -3.0158 -2.9402 -2.8016 -2.6797 + 0.8827 0.8718 0.8614 0.8511 0.8314 0.8134 + -0.6490 -0.6504 -0.6519 -0.6536 -0.6573 -0.6618 + 165.0 + -3.2715 -3.1857 -3.1077 -3.0319 -2.8929 -2.7709 + 0.6733 0.6635 0.6540 0.6445 0.6262 0.6094 + -0.6229 -0.6243 -0.6260 -0.6276 -0.6313 -0.6357 + 170.0 + -3.3291 -3.2434 -3.1652 -3.0894 -2.9505 -2.8285 + 0.4528 0.4434 0.4346 0.4256 0.4084 0.3926 + -0.6158 -0.6172 -0.6188 -0.6204 -0.6240 -0.6281 + 175.0 + -3.3509 -3.2652 -3.1871 -3.1114 -2.9727 -2.8512 + 0.2291 0.2202 0.2117 0.2032 0.1837 0.1618 + -0.6283 -0.6297 -0.6311 -0.6327 -0.6362 -0.6406 + 180.0 + -3.3360 -3.2501 -3.1723 -3.0965 -2.9577 -2.8357 + 0.0112 0.0059 0.0038 -0.0034 -0.0205 -0.0450 + -0.6621 -0.6637 -0.6646 -0.6662 -0.6696 -0.6741 + 185.0 + -3.2846 -3.1988 -3.1207 -3.0449 -2.9062 -2.7846 + 0.5178 0.5092 0.5006 0.4918 0.4736 0.4549 + -0.7156 -0.7170 -0.7184 -0.7199 -0.7232 -0.7268 + 190.0 + -3.1994 -3.1137 -3.0361 -2.9601 -2.8216 -2.7002 + 0.9358 0.9267 0.9179 0.9085 0.8899 0.8712 + -0.7876 -0.7888 -0.7899 -0.7915 -0.7944 -0.7978 + 195.0 + -3.0834 -2.9978 -2.9199 -2.8443 -2.7059 -2.5814 + 1.3087 1.2998 1.2910 1.2820 1.2639 1.2545 + -0.8764 -0.8776 -0.8788 -0.8801 -0.8829 -0.8884 + 200.0 + -2.9394 -2.8527 -2.7739 -2.6976 -2.5581 -2.4358 + 1.6228 1.6166 1.6099 1.6026 1.5878 1.5727 + -0.9807 -0.9826 -0.9845 -0.9862 -0.9897 -0.9935 + 205.0 + -2.7679 -2.6820 -2.6037 -2.5278 -2.3886 -2.2666 + 1.8983 1.8907 1.8833 1.8757 1.8605 1.8457 + -1.1006 -1.1020 -1.1034 -1.1048 -1.1079 -1.1115 + 210.0 + -2.5811 -2.4954 -2.4174 -2.3416 -2.2029 -2.0813 + 2.1216 2.1141 2.1067 2.0993 2.0845 2.0700 + -1.2283 -1.2294 -1.2307 -1.2319 -1.2347 -1.2379 + 215.0 + -2.3844 -2.2988 -2.2197 -2.1419 -2.0010 -1.8777 + 2.2938 2.2866 2.2805 2.2750 2.2627 2.2504 + -1.3608 -1.3618 -1.3637 -1.3663 -1.3704 -1.3746 + 220.0 + -2.1779 -2.0920 -2.0137 -1.9377 -1.7984 -1.6756 + 2.4169 2.4103 2.4040 2.3975 2.3849 2.3731 + -1.4986 -1.4998 -1.5011 -1.5025 -1.5055 -1.5092 + 225.0 + -1.9757 -1.8898 -1.8116 -1.7356 -1.5962 -1.4738 + 2.4841 2.4780 2.4720 2.4661 2.4544 2.4434 + -1.6329 -1.6341 -1.6354 -1.6367 -1.6397 -1.6431 + 230.0 + -1.7832 -1.6960 -1.6168 -1.5401 -1.3999 -1.2767 + 2.4972 2.4913 2.4856 2.4800 2.4691 2.4590 + -1.7609 -1.7629 -1.7648 -1.7666 -1.7701 -1.7739 + 235.0 + -1.6026 -1.5166 -1.4383 -1.3622 -1.2227 -1.1000 + 2.4557 2.4503 2.4452 2.4400 2.4301 2.4209 + -1.8816 -1.8828 -1.8841 -1.8854 -1.8884 -1.8918 + 240.0 + -1.4476 -1.3618 -1.2836 -1.2076 -1.0683 -0.9448 + 2.3637 2.3587 2.3541 2.3494 2.3406 2.3317 + -1.9865 -1.9876 -1.9888 -1.9900 -1.9927 -1.9967 + 245.0 + -1.3187 -1.2328 -1.1545 -1.0784 -0.9390 -0.8163 + 2.2217 2.2171 2.2128 2.2084 2.2003 2.1930 + -2.0759 -2.0770 -2.0782 -2.0795 -2.0823 -2.0856 + 250.0 + -1.2262 -1.1404 -1.0622 -0.9862 -0.8469 -0.7245 + 2.0417 2.0374 2.0336 2.0299 2.0227 2.0167 + -2.1431 -2.1442 -2.1453 -2.1465 -2.1491 -2.1523 + 255.0 + -1.1690 -1.0841 -1.0057 -0.9296 -0.7899 -0.6672 + 1.8196 1.8185 1.8136 1.8090 1.8008 1.7939 + -2.1896 -2.1899 -2.1912 -2.1925 -2.1954 -2.1987 + 260.0 + -1.1546 -1.0688 -0.9906 -0.9147 -0.7754 -0.6528 + 1.5643 1.5608 1.5575 1.5542 1.5484 1.5439 + -2.2105 -2.2115 -2.2126 -2.2138 -2.2163 -2.2194 + 265.0 + -1.1834 -1.0976 -1.0193 -0.9434 -0.8041 -0.6816 + 1.2902 1.2872 1.2844 1.2814 1.2764 1.2725 + -2.2058 -2.2067 -2.2079 -2.2089 -2.2115 -2.2145 + 270.0 + -1.2563 -1.1706 -1.0940 -1.0179 -0.8784 -0.7556 + 1.0025 0.9996 0.9909 0.9886 0.9848 0.9823 + -2.1748 -2.1758 -2.1762 -2.1773 -2.1799 -2.1830 + 275.0 + -1.3745 -1.2888 -1.2107 -1.1349 -0.9960 -0.8738 + 0.7039 0.7013 0.6987 0.6961 0.6914 0.6878 + -2.1176 -2.1185 -2.1194 -2.1205 -2.1228 -2.1255 +SKKSdf 33 200.0 360.0 + 200.0 + -2.9250 -2.8420 -2.7684 -2.6861 -2.5545 -2.4277 + 1.5874 1.5795 1.5718 1.5792 1.5604 1.5635 + -1.0808 -1.0799 -1.0795 -1.0833 -1.0810 -1.0854 + 205.0 + -2.7616 -2.6761 -2.5986 -2.5235 -2.3871 -2.2667 + 1.8775 1.8744 1.8709 1.8670 1.8580 1.8510 + -1.1841 -1.1849 -1.1856 -1.1861 -1.1868 -1.1885 + 210.0 + -2.5774 -2.4926 -2.4150 -2.3399 -2.2026 -2.0825 + 2.1244 2.1203 2.1168 2.1129 2.1052 2.0975 + -1.2996 -1.2999 -1.3006 -1.3012 -1.3025 -1.3039 + 215.0 + -2.3810 -2.2960 -2.2186 -2.1431 -2.0058 -1.8852 + 2.3195 2.3156 2.3119 2.3084 2.3006 2.2935 + -1.4221 -1.4225 -1.4231 -1.4239 -1.4252 -1.4269 + 220.0 + -2.1779 -2.0926 -2.0154 -1.9399 -1.8022 -1.6815 + 2.4600 2.4564 2.4526 2.4490 2.4417 2.4347 + -1.5484 -1.5490 -1.5495 -1.5503 -1.5518 -1.5536 + 225.0 + -1.9762 -1.8909 -1.8133 -1.7379 -1.6001 -1.4792 + 2.5429 2.5394 2.5358 2.5322 2.5251 2.5183 + -1.6739 -1.6745 -1.6752 -1.6759 -1.6775 -1.6795 + 230.0 + -1.7825 -1.6973 -1.6197 -1.5444 -1.4062 -1.2853 + 2.5677 2.5642 2.5608 2.5572 2.5504 2.5438 + -1.7947 -1.7953 -1.7960 -1.7967 -1.7985 -1.8004 + 235.0 + -1.6046 -1.5192 -1.4415 -1.3661 -1.2280 -1.1068 + 2.5222 2.5188 2.5155 2.5121 2.5054 2.4990 + -1.9064 -1.9072 -1.9079 -1.9086 -1.9103 -1.9125 + 240.0 + -1.4488 -1.3634 -1.2857 -1.2102 -1.0720 -0.9508 + 2.4217 2.4184 2.4152 2.4119 2.4055 2.3995 + -2.0053 -2.0060 -2.0068 -2.0076 -2.0094 -2.0115 + 245.0 + -1.3211 -1.2358 -1.1581 -1.0827 -0.9445 -0.8234 + 2.2727 2.2697 2.2667 2.2636 2.2577 2.2524 + -2.0879 -2.0885 -2.0893 -2.0900 -2.0918 -2.0938 + 250.0 + -1.2260 -1.1406 -1.0628 -0.9873 -0.8490 -0.7277 + 2.0786 2.0756 2.0727 2.0697 2.0640 2.0589 + -2.1516 -2.1523 -2.1531 -2.1539 -2.1558 -2.1580 + 255.0 + -1.1694 -1.0840 -1.0062 -0.9307 -0.7924 -0.6711 + 1.8491 1.8463 1.8435 1.8407 1.8354 1.8307 + -2.1930 -2.1937 -2.1945 -2.1953 -2.1971 -2.1993 + 260.0 + -1.1538 -1.0684 -0.9906 -0.9152 -0.7769 -0.6556 + 1.5896 1.5869 1.5843 1.5817 1.5767 1.5723 + -2.2106 -2.2113 -2.2121 -2.2128 -2.2147 -2.2168 + 265.0 + -1.1814 -1.0960 -1.0183 -0.9428 -0.8046 -0.6833 + 1.3089 1.3064 1.3040 1.3016 1.2970 1.2932 + -2.2030 -2.2037 -2.2045 -2.2053 -2.2070 -2.2092 + 270.0 + -1.2527 -1.1673 -1.0897 -1.0142 -0.8761 -0.7550 + 1.0166 1.0142 1.0119 1.0096 1.0053 1.0016 + -2.1701 -2.1707 -2.1714 -2.1722 -2.1739 -2.1759 + 275.0 + -1.3681 -1.2828 -1.2051 -1.1296 -0.9915 -0.8704 + 0.7180 0.7159 0.7140 0.7120 0.7085 0.7056 + -2.1114 -2.1120 -2.1127 -2.1135 -2.1152 -2.1172 + 280.0 + -1.5260 -1.4408 -1.3633 -1.2880 -1.1503 -1.0296 + 0.4228 0.4207 0.4187 0.4167 0.4131 0.4103 + -2.0279 -2.0284 -2.0290 -2.0297 -2.0312 -2.0329 + 285.0 + -1.7218 -1.6367 -1.5593 -1.4841 -1.3465 -1.2260 + 0.1415 0.1395 0.1377 0.1360 0.1328 0.1304 + -1.9221 -1.9226 -1.9231 -1.9237 -1.9251 -1.9267 + 290.0 + -1.9531 -1.8681 -1.7908 -1.7157 -1.5783 -1.4580 + -0.1213 -0.1228 -0.1244 -0.1260 -0.1288 -0.1309 + -1.7954 -1.7959 -1.7964 -1.7969 -1.7981 -1.7996 + 295.0 + -2.2151 -2.1301 -2.0528 -1.9777 -1.8405 -1.7204 + -0.3578 -0.3591 -0.3606 -0.3620 -0.3643 -0.3660 + -1.6507 -1.6512 -1.6516 -1.6521 -1.6533 -1.6546 + 300.0 + -2.5007 -2.4158 -2.3385 -2.2635 -2.1264 -2.0064 + -0.5616 -0.5627 -0.5639 -0.5651 -0.5672 -0.5686 + -1.4919 -1.4923 -1.4927 -1.4932 -1.4942 -1.4955 + 305.0 + -2.8036 -2.7187 -2.6415 -2.5665 -2.4296 -2.3097 + -0.7280 -0.7289 -0.7300 -0.7311 -0.7328 -0.7339 + -1.3227 -1.3231 -1.3235 -1.3239 -1.3248 -1.3260 + 310.0 + -3.1164 -3.0316 -2.9544 -2.8796 -2.7429 -2.6235 + -0.8532 -0.8541 -0.8550 -0.8559 -0.8575 -0.8584 + -1.1473 -1.1476 -1.1480 -1.1483 -1.1491 -1.1500 + 315.0 + -3.4261 -3.3414 -3.2643 -3.1895 -3.0528 -2.9334 + -0.9341 -0.9348 -0.9356 -0.9364 -0.9377 -0.9384 + -0.9731 -0.9734 -0.9737 -0.9741 -0.9748 -0.9757 + 320.0 + -3.7336 -3.6490 -3.5720 -3.4973 -3.3609 -3.2417 + -0.9718 -0.9724 -0.9732 -0.9738 -0.9749 -0.9755 + -0.7998 -0.8001 -0.8003 -0.8006 -0.8012 -0.8019 + 325.0 + -4.0297 -3.9451 -3.8683 -3.7937 -3.6576 -3.5389 + -0.9655 -0.9661 -0.9667 -0.9672 -0.9682 -0.9686 + -0.6327 -0.6329 -0.6330 -0.6332 -0.6336 -0.6341 + 330.0 + -4.3020 -4.2175 -4.1407 -4.0662 -3.9303 -3.8117 + -0.9171 -0.9176 -0.9181 -0.9186 -0.9193 -0.9197 + -0.4787 -0.4788 -0.4790 -0.4791 -0.4794 -0.4798 + 335.0 + -4.5452 -4.4607 -4.3840 -4.3096 -4.1737 -4.0553 + -0.8301 -0.8305 -0.8309 -0.8313 -0.8319 -0.8322 + -0.3411 -0.3412 -0.3413 -0.3414 -0.3416 -0.3419 + 340.0 + -4.7535 -4.6691 -4.5924 -4.5180 -4.3823 -4.2640 + -0.7089 -0.7092 -0.7096 -0.7099 -0.7104 -0.7106 + -0.2231 -0.2232 -0.2232 -0.2233 -0.2234 -0.2236 + 345.0 + -4.9227 -4.8383 -4.7617 -4.6874 -4.5518 -4.4337 + -0.5577 -0.5579 -0.5582 -0.5584 -0.5587 -0.5588 + -0.1272 -0.1272 -0.1272 -0.1273 -0.1274 -0.1275 + 350.0 + -5.0462 -4.9618 -4.8852 -4.8110 -4.6754 -4.5574 + -0.3846 -0.3848 -0.3850 -0.3852 -0.3853 -0.3854 + -0.0572 -0.0572 -0.0572 -0.0572 -0.0572 -0.0573 + 355.0 + -5.1215 -5.0372 -4.9606 -4.8864 -4.7509 -4.6329 + -0.1965 -0.1966 -0.1967 -0.1967 -0.1968 -0.1968 + -0.0144 -0.0144 -0.0144 -0.0144 -0.0144 -0.0144 + 360.0 + -5.1469 -5.0626 -4.9860 -4.9118 -4.7763 -4.6583 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +SS 31 40.0 190.0 + 40.0 + -1.6956 -1.6357 -1.5892 -1.5490 -1.5390 -1.5257 + -1.0548 -1.1135 -1.1729 -1.2298 -1.3398 -1.4138 + -0.4203 -0.4250 -0.4308 -0.4342 -0.4773 -0.4675 + 45.0 + -1.7178 -1.7139 -1.6580 -1.6084 -1.5197 -1.4812 + -1.2131 -1.2952 -1.3394 -1.3857 -1.4719 -1.5499 + -0.5450 -0.5940 -0.5957 -0.5991 -0.5970 -0.5939 + 50.0 + -1.7435 -1.6720 -1.6142 -1.5604 -1.4749 -1.4308 + -1.3659 -1.4105 -1.4547 -1.4997 -1.5869 -1.6611 + -0.7206 -0.7264 -0.7280 -0.7286 -0.7274 -0.7180 + 55.0 + -1.6813 -1.6094 -1.5489 -1.4932 -1.4054 -1.3664 + -1.4644 -1.5059 -1.5483 -1.5919 -1.6809 -1.7565 + -0.8616 -0.8626 -0.8635 -0.8638 -0.8637 -0.8508 + 60.0 + -1.6027 -1.5333 -1.4722 -1.4180 -1.3289 -1.2872 + -1.5362 -1.5781 -1.6219 -1.6642 -1.7528 -1.8304 + -1.0035 -1.0024 -1.0048 -1.0024 -1.0042 -0.9949 + 65.0 + -1.5173 -1.4466 -1.3858 -1.3308 -1.2434 -1.1982 + -1.5847 -1.6272 -1.6704 -1.7134 -1.7994 -1.8782 + -1.1500 -1.1511 -1.1534 -1.1525 -1.1509 -1.1442 + 70.0 + -1.4270 -1.3565 -1.2966 -1.2398 -1.1508 -1.1041 + -1.6074 -1.6496 -1.6916 -1.7345 -1.8197 -1.8987 + -1.3008 -1.3017 -1.3018 -1.3033 -1.3027 -1.2952 + 75.0 + -1.3346 -1.2640 -1.2040 -1.1484 -1.0568 -1.0093 + -1.6025 -1.6443 -1.6859 -1.7283 -1.8121 -1.8911 + -1.4528 -1.4533 -1.4532 -1.4524 -1.4542 -1.4445 + 80.0 + -1.2446 -1.1738 -1.1135 -1.0572 -0.9650 -0.9142 + -1.5701 -1.6114 -1.6526 -1.6945 -1.7769 -1.8559 + -1.6027 -1.6032 -1.6031 -1.6028 -1.6038 -1.5959 + 85.0 + -1.1614 -1.0905 -1.0300 -0.9717 -0.8805 -0.8266 + -1.5116 -1.5525 -1.5935 -1.6336 -1.7162 -1.7949 + -1.7476 -1.7478 -1.7473 -1.7495 -1.7473 -1.7408 + 90.0 + -1.0893 -1.0183 -0.9555 -0.8978 -0.8058 -0.7495 + -1.4302 -1.4710 -1.5093 -1.5497 -1.6320 -1.7105 + -1.8839 -1.8838 -1.8867 -1.8872 -1.8842 -1.8783 + 95.0 + -1.0291 -0.9570 -0.8953 -0.8377 -0.7443 -0.6863 + -1.3262 -1.3654 -1.4050 -1.4457 -1.5271 -1.6068 + -2.0143 -2.0155 -2.0158 -2.0153 -2.0126 -2.0057 + 100.0 + -0.9857 -0.9137 -0.8518 -0.7939 -0.6980 -0.6380 + -1.2059 -1.2455 -1.2855 -1.3264 -1.4044 -1.4855 + -2.1329 -2.1331 -2.1327 -2.1317 -2.1319 -2.1242 + 105.0 + -0.9605 -0.8882 -0.8251 -0.7663 -0.6704 -0.6077 + -1.0738 -1.1139 -1.1503 -1.1901 -1.2734 -1.3541 + -2.2392 -2.2388 -2.2408 -2.2405 -2.2362 -2.2299 + 110.0 + -0.9538 -0.8809 -0.8178 -0.7586 -0.6609 -0.5960 + -0.9349 -0.9734 -1.0125 -1.0527 -1.1332 -1.2161 + -2.3325 -2.3330 -2.3330 -2.3323 -2.3300 -2.3229 + 115.0 + -0.9667 -0.8931 -0.8294 -0.7698 -0.6702 -0.6027 + -0.7934 -0.8324 -0.8722 -0.9095 -0.9918 -1.0739 + -2.4132 -2.4134 -2.4129 -2.4137 -2.4107 -2.4051 + 120.0 + -0.9975 -0.9241 -0.8595 -0.7988 -0.6976 -0.6269 + -0.6531 -0.6911 -0.7297 -0.7696 -0.8511 -0.9365 + -2.4822 -2.4826 -2.4829 -2.4825 -2.4803 -2.4741 + 125.0 + -1.0451 -0.9704 -0.9058 -0.8445 -0.7408 -0.6675 + -0.5209 -0.5596 -0.5973 -0.6365 -0.7194 -0.8043 + -2.5392 -2.5395 -2.5400 -2.5400 -2.5377 -2.5329 + 130.0 + -1.1074 -1.0321 -0.9660 -0.9033 -0.7982 -0.7206 + -0.3981 -0.4364 -0.4755 -0.5158 -0.5971 -0.6851 + -2.5866 -2.5871 -2.5873 -2.5870 -2.5860 -2.5813 + 135.0 + -1.1800 -1.1046 -1.0378 -0.9743 -0.8655 -0.7853 + -0.2909 -0.3282 -0.3666 -0.4065 -0.4900 -0.5772 + -2.6251 -2.6260 -2.6267 -2.6269 -2.6258 -2.6228 + 140.0 + -1.2607 -1.1835 -1.1161 -1.0520 -0.9409 -0.8569 + -0.1990 -0.2371 -0.2752 -0.3145 -0.3975 -0.4855 + -2.6576 -2.6585 -2.6595 -2.6602 -2.6603 -2.6585 + 145.0 + -1.3461 -1.2681 -1.1991 -1.1333 -1.0189 -0.9302 + -0.1241 -0.1617 -0.2002 -0.2398 -0.3230 -0.4120 + -2.6865 -2.6878 -2.6890 -2.6900 -2.6909 -2.6903 + 150.0 + -1.4301 -1.3511 -1.2808 -1.2135 -1.0958 -1.0039 + -0.0683 -0.1054 -0.1437 -0.1832 -0.2661 -0.3544 + -2.7137 -2.7153 -2.7169 -2.7182 -2.7202 -2.7215 + 155.0 + -1.5098 -1.4283 -1.3567 -1.2881 -1.1693 -1.0716 + -0.0294 -0.0670 -0.1050 -0.1441 -0.2251 -0.3137 + -2.7417 -2.7432 -2.7452 -2.7470 -2.7510 -2.7532 + 160.0 + -1.5796 -1.4971 -1.4248 -1.3553 -1.2317 -1.1295 + -0.0064 -0.0432 -0.0804 -0.1189 -0.2000 -0.2882 + -2.7720 -2.7739 -2.7767 -2.7793 -2.7842 -2.7881 + 165.0 + -1.6373 -1.5548 -1.4805 -1.4091 -1.2811 -1.1756 + 0.0037 -0.0319 -0.0686 -0.1065 -0.1865 -0.2731 + -2.8077 -2.8106 -2.8136 -2.8165 -2.8222 -2.8287 + 170.0 + -1.6794 -1.5959 -1.5204 -1.4476 -1.3164 -1.2055 + 0.0052 -0.0296 -0.0656 -0.1027 -0.1812 -0.2665 + -2.8498 -2.8535 -2.8573 -2.8611 -2.8687 -2.8769 + 175.0 + -1.7045 -1.6195 -1.5425 -1.4685 -1.3333 -1.2177 + 0.0022 -0.0317 -0.0666 -0.1027 -0.1791 -0.2623 + -2.9013 -2.9048 -2.9087 -2.9138 -2.9223 -2.9328 + 180.0 + -1.7099 -1.6236 -1.5452 -1.4693 -1.3312 -1.2115 + 0.0176 -0.0149 -0.0484 -0.0838 -0.1759 -0.2558 + -2.9627 -2.9671 -2.9718 -2.9766 -2.9859 -2.9967 + 185.0 + -1.6954 -1.6080 -1.5283 -1.4510 -1.3096 -1.1861 + 0.7425 0.7112 0.6778 0.6433 0.5666 0.5069 + -3.0320 -3.0368 -3.0420 -3.0472 -3.0581 -3.0716 + 190.0 + -1.6601 -1.5716 -1.4906 -1.4118 -1.2666 -1.1385 + 1.3310 1.3007 1.2694 1.2370 1.1722 1.0927 + -3.1056 -3.1104 -3.1157 -3.1210 -3.1332 -3.1464 +S'S' 47 130.0 360.0 + 130.0 + -1.2847 -1.2061 -1.1362 -1.0691 -0.9508 -0.8550 + -0.3975 -0.4202 -0.4432 -0.4670 -0.5164 -0.5688 + -2.8926 -2.8907 -2.8884 -2.8860 -2.8799 -2.8718 + 135.0 + -1.3531 -1.2739 -1.2034 -1.1356 -1.0157 -0.9179 + -0.2734 -0.2968 -0.3206 -0.3452 -0.3967 -0.4516 + -2.8909 -2.8893 -2.8875 -2.8854 -2.8803 -2.8734 + 140.0 + -1.4267 -1.3469 -1.2755 -1.2070 -1.0853 -0.9857 + -0.1741 -0.1982 -0.2228 -0.2481 -0.3013 -0.3580 + -2.8863 -2.8851 -2.8837 -2.8822 -2.8781 -2.8725 + 145.0 + -1.5021 -1.4213 -1.3488 -1.2790 -1.1541 -1.0531 + -0.0977 -0.1225 -0.1480 -0.1744 -0.2302 -0.2876 + -2.8815 -2.8808 -2.8799 -2.8788 -2.8759 -2.8716 + 150.0 + -1.5723 -1.4897 -1.4184 -1.3476 -1.2212 -1.1184 + -0.0447 -0.0707 -0.0954 -0.1225 -0.1801 -0.2359 + -2.8791 -2.8788 -2.8784 -2.8780 -2.8766 -2.8754 + 155.0 + -1.6387 -1.5568 -1.4832 -1.4131 -1.2847 -1.1763 + -0.0113 -0.0359 -0.0611 -0.0865 -0.1415 -0.2006 + -2.8859 -2.8864 -2.8867 -2.8872 -2.8874 -2.8870 + 160.0 + -1.6946 -1.6117 -1.5369 -1.4645 -1.3357 -1.2251 + 0.0065 -0.0175 -0.0423 -0.0677 -0.1204 -0.1782 + -2.8995 -2.9003 -2.9011 -2.9018 -2.9036 -2.9044 + 165.0 + -1.7360 -1.6524 -1.5768 -1.5036 -1.3710 -1.2583 + 0.0117 -0.0116 -0.0355 -0.0601 -0.1118 -0.1673 + -2.9200 -2.9212 -2.9223 -2.9235 -2.9255 -2.9282 + 170.0 + -1.7596 -1.6754 -1.5989 -1.5249 -1.3902 -1.2740 + 0.0089 -0.0136 -0.0366 -0.0604 -0.1104 -0.1643 + -2.9479 -2.9497 -2.9514 -2.9530 -2.9561 -2.9591 + 175.0 + -1.7649 -1.6798 -1.6025 -1.5270 -1.3901 -1.2714 + 0.0031 -0.0183 -0.0404 -0.0633 -0.1115 -0.1636 + -2.9850 -2.9868 -2.9886 -2.9904 -2.9948 -2.9989 + 180.0 + -1.7496 -1.6638 -1.5857 -1.5101 -1.3713 -1.2499 + 0.0010 -0.0220 -0.0421 -0.0639 -0.1101 -0.1518 + -3.0305 -3.0324 -3.0343 -3.0363 -3.0417 -3.0471 + 185.0 + -1.7151 -1.6285 -1.5496 -1.4730 -1.3334 -1.2101 + 0.7464 0.7268 0.7057 0.6833 0.6333 0.5759 + -3.0855 -3.0878 -3.0902 -3.0927 -3.0975 -3.1033 + 190.0 + -1.6649 -1.5774 -1.4967 -1.4189 -1.2764 -1.1511 + 1.3637 1.3475 1.3384 1.3222 1.2823 1.2341 + -3.1467 -3.1495 -3.1533 -3.1565 -3.1631 -3.1701 + 195.0 + -1.5964 -1.5090 -1.4291 -1.3514 -1.2070 -1.0786 + 1.9764 1.9566 1.9357 1.9138 1.8811 1.8417 + -3.2179 -3.2205 -3.2232 -3.2260 -3.2338 -3.2424 + 200.0 + -1.5165 -1.4282 -1.3474 -1.2689 -1.1241 -0.9956 + 2.5128 2.4960 2.4783 2.4597 2.4192 2.3736 + -3.2939 -3.2969 -3.3002 -3.3035 -3.3107 -3.3189 + 205.0 + -1.4312 -1.3428 -1.2611 -1.1806 -1.0331 -0.9022 + 2.9694 2.9518 2.9374 2.9270 2.8955 2.8578 + -3.3709 -3.3738 -3.3776 -3.3824 -3.3913 -3.4009 + 210.0 + -1.3379 -1.2491 -1.1676 -1.0883 -0.9416 -0.8109 + 3.3886 3.3728 3.3564 3.3393 3.3026 3.2618 + -3.4522 -3.4553 -3.4588 -3.4624 -3.4703 -3.4793 + 215.0 + -1.2501 -1.1604 -1.0780 -0.9978 -0.8494 -0.7164 + 3.7307 3.7181 3.7048 3.6906 3.6599 3.6259 + -3.5281 -3.5318 -3.5359 -3.5400 -3.5489 -3.5593 + 220.0 + -1.1694 -1.0799 -0.9976 -0.9174 -0.7688 -0.6336 + 4.0113 3.9981 3.9844 3.9704 3.9406 3.9137 + -3.5989 -3.6024 -3.6062 -3.6101 -3.6190 -3.6307 + 225.0 + -1.1023 -1.0124 -0.9297 -0.8491 -0.6995 -0.5649 + 4.2252 4.2136 4.2016 4.1896 4.1634 4.1356 + -3.6607 -3.6644 -3.6684 -3.6726 -3.6820 -3.6930 + 230.0 + -1.0548 -0.9649 -0.8821 -0.8014 -0.6507 -0.5150 + 4.3720 4.3611 4.3500 4.3385 4.3169 4.2930 + -3.7100 -3.7136 -3.7176 -3.7218 -3.7321 -3.7437 + 235.0 + -1.0314 -0.9418 -0.8589 -0.7780 -0.6276 -0.4919 + 4.4525 4.4426 4.4328 4.4228 4.4021 4.3805 + -3.7448 -3.7483 -3.7524 -3.7566 -3.7662 -3.7776 + 240.0 + -1.0398 -0.9497 -0.8668 -0.7858 -0.6353 -0.4994 + 4.4658 4.4571 4.4484 4.4395 4.4213 4.4028 + -3.7599 -3.7636 -3.7677 -3.7720 -3.7816 -3.7930 + 245.0 + -1.0828 -0.9927 -0.9097 -0.8288 -0.6782 -0.5431 + 4.4163 4.4086 4.4008 4.3931 4.3774 4.3611 + -3.7542 -3.7578 -3.7618 -3.7660 -3.7756 -3.7866 + 250.0 + -1.1661 -1.0761 -0.9933 -0.9124 -0.7620 -0.6262 + 4.3065 4.2997 4.2931 4.2864 4.2735 4.2604 + -3.7243 -3.7279 -3.7318 -3.7360 -3.7453 -3.7564 + 255.0 + -1.2900 -1.2001 -1.1181 -1.0377 -0.8881 -0.7532 + 4.1452 4.1394 4.1331 4.1269 4.1151 4.1039 + -3.6698 -3.6734 -3.6768 -3.6807 -3.6895 -3.7001 + 260.0 + -1.4618 -1.3721 -1.2897 -1.2092 -1.0598 -0.9252 + 3.9323 3.9273 3.9225 3.9177 3.9083 3.8998 + -3.5871 -3.5904 -3.5941 -3.5979 -3.6066 -3.6169 + 265.0 + -1.6719 -1.5823 -1.5000 -1.4196 -1.2890 -1.1604 + 3.6877 3.6840 3.6802 3.6764 3.6925 3.6875 + -3.4809 -3.4841 -3.4877 -3.4914 -3.4988 -3.5052 + 270.0 + -1.9345 -1.8468 -1.7666 -1.6886 -1.5444 -1.4160 + 3.4182 3.4157 3.4133 3.4108 3.4063 3.4024 + -3.3484 -3.3504 -3.3526 -3.3548 -3.3600 -3.3663 + 275.0 + -2.2325 -2.1450 -2.0648 -1.9869 -1.8429 -1.7148 + 3.1077 3.1056 3.1036 3.1016 3.0981 3.0954 + -3.1849 -3.1868 -3.1890 -3.1912 -3.1963 -3.2023 + 280.0 + -2.5700 -2.4828 -2.4030 -2.3254 -2.1823 -2.0551 + 2.7840 2.7821 2.7804 2.7786 2.7756 2.7735 + -2.9984 -3.0001 -3.0021 -3.0041 -3.0087 -3.0142 + 285.0 + -2.9423 -2.8551 -2.7754 -2.6978 -2.5548 -2.4277 + 2.4556 2.4541 2.4529 2.4517 2.4499 2.4492 + -2.7916 -2.7933 -2.7952 -2.7972 -2.8017 -2.8071 + 290.0 + -3.3509 -3.2639 -3.1844 -3.1070 -2.9645 -2.8380 + 2.1250 2.1239 2.1230 2.1222 2.1213 2.1215 + -2.5636 -2.5651 -2.5669 -2.5688 -2.5730 -2.5781 + 295.0 + -3.7774 -3.6907 -3.6114 -3.5343 -3.3924 -3.2667 + 1.8092 1.8084 1.8078 1.8073 1.8070 1.8079 + -2.3247 -2.3261 -2.3277 -2.3294 -2.3333 -2.3379 + 300.0 + -4.2218 -4.1353 -4.0562 -3.9794 -3.8381 -3.7132 + 1.5085 1.5082 1.5079 1.5077 1.5080 1.5095 + -2.0751 -2.0764 -2.0779 -2.0794 -2.0829 -2.0870 + 305.0 + -4.6741 -4.5877 -4.5090 -4.4325 -4.2918 -4.1676 + 1.2304 1.2303 1.2303 1.2303 1.2311 1.2330 + -1.8205 -1.8217 -1.8230 -1.8243 -1.8274 -1.8311 + 310.0 + -5.1300 -5.0442 -4.9661 -4.8901 -4.7507 -4.6279 + 0.9767 0.9767 0.9767 0.9767 0.9775 0.9795 + -1.5633 -1.5642 -1.5651 -1.5661 -1.5685 -1.5714 + 315.0 + -5.5777 -5.4921 -5.4141 -5.3383 -5.1993 -5.0772 + 0.7529 0.7530 0.7532 0.7535 0.7546 0.7569 + -1.3103 -1.3111 -1.3120 -1.3129 -1.3150 -1.3175 + 320.0 + -6.0006 -5.9151 -5.8373 -5.7616 -5.6230 -5.5013 + 0.5637 0.5640 0.5643 0.5648 0.5662 0.5687 + -1.0711 -1.0718 -1.0726 -1.0734 -1.0752 -1.0775 + 325.0 + -6.4040 -6.3189 -6.2415 -6.1664 -6.0288 -5.9084 + 0.4041 0.4044 0.4047 0.4051 0.4064 0.4087 + -0.8426 -0.8431 -0.8436 -0.8441 -0.8453 -0.8468 + 330.0 + -6.7726 -6.6877 -6.6104 -6.5353 -6.3981 -6.2781 + 0.2764 0.2767 0.2771 0.2775 0.2789 0.2811 + -0.6337 -0.6340 -0.6345 -0.6349 -0.6360 -0.6372 + 335.0 + -7.0968 -7.0120 -6.9349 -6.8601 -6.7234 -6.6039 + 0.1791 0.1795 0.1798 0.1802 0.1815 0.1835 + -0.4497 -0.4500 -0.4503 -0.4507 -0.4514 -0.4523 + 340.0 + -7.3744 -7.2898 -7.2129 -7.1383 -7.0021 -6.8832 + 0.1080 0.1083 0.1086 0.1090 0.1101 0.1117 + -0.2921 -0.2923 -0.2925 -0.2927 -0.2932 -0.2937 + 345.0 + -7.5954 -7.5109 -7.4342 -7.3597 -7.2238 -7.1052 + 0.0600 0.0603 0.0605 0.0608 0.0616 0.0630 + -0.1666 -0.1668 -0.1669 -0.1670 -0.1673 -0.1676 + 350.0 + -7.7572 -7.6728 -7.5962 -7.5218 -7.3862 -7.2680 + 0.0297 0.0299 0.0300 0.0302 0.0308 0.0318 + -0.0747 -0.0748 -0.0748 -0.0749 -0.0750 -0.0751 + 355.0 + -7.8557 -7.7713 -7.6947 -7.6205 -7.4849 -7.3669 + 0.0117 0.0118 0.0119 0.0120 0.0123 0.0128 + -0.0188 -0.0188 -0.0188 -0.0188 -0.0188 -0.0189 + 360.0 + -7.8887 -7.8044 -7.7278 -7.6536 -7.5181 -7.4001 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 + 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 +SP 17 55.0 135.0 + 55.0 + -1.0975 -1.0223 -0.9570 -0.8956 -0.7944 -0.7287 + -0.8260 -0.8773 -0.9305 -0.9856 -1.1032 -1.2342 + -0.8230 -0.8248 -0.8263 -0.8274 -0.8275 -0.8230 + 60.0 + -1.0835 -1.0079 -0.9420 -0.8800 -0.7772 -0.7091 + -0.9339 -0.9842 -1.0363 -1.0902 -1.2052 -1.3319 + -0.9193 -0.9213 -0.9231 -0.9245 -0.9257 -0.9222 + 65.0 + -1.0508 -0.9749 -0.9087 -0.8461 -0.7409 -0.6212 + -1.0220 -1.0711 -1.1218 -1.1740 -1.2843 -1.3258 + -1.0265 -1.0286 -1.0303 -1.0318 -1.0339 -1.0626 + 70.0 + -0.9723 -0.8919 -0.8201 -0.7507 -0.6270 -0.5280 + -1.0121 -1.0503 -1.0893 -1.1299 -1.2126 -1.2972 + -1.1641 -1.1677 -1.1718 -1.1774 -1.1915 -1.2045 + 75.0 + -0.8874 -0.8026 -0.7272 -0.6550 -0.5269 -0.4225 + -0.9676 -0.9981 -1.0307 -1.0657 -1.1392 -1.2173 + -1.3015 -1.3091 -1.3157 -1.3229 -1.3372 -1.3515 + 80.0 + -0.7938 -0.7098 -0.6348 -0.5630 -0.4337 -0.3259 + -0.8651 -0.8992 -0.9343 -0.9707 -1.0435 -1.1189 + -1.4438 -1.4506 -1.4567 -1.4625 -1.4759 -1.4909 + 85.0 + -0.7122 -0.6282 -0.5525 -0.4798 -0.3480 -0.2370 + -0.7480 -0.7816 -0.8156 -0.8506 -0.9196 -0.9913 + -1.5763 -1.5821 -1.5881 -1.5939 -1.6080 -1.6237 + 90.0 + -0.6423 -0.5580 -0.4532 -0.3787 -0.2444 -0.1303 + -0.6043 -0.6370 -0.4351 -0.4787 -0.5689 -0.6629 + -1.6992 -1.7045 -1.7390 -1.7443 -1.7558 -1.7690 + 95.0 + -0.5802 -0.4944 -0.4165 -0.3414 -0.2044 -0.0860 + -0.2785 -0.3143 -0.3508 -0.3882 -0.4628 -0.5347 + -1.8203 -1.8254 -1.8309 -1.8364 -1.8504 -1.8666 + 100.0 + -0.5540 -0.4675 -0.3885 -0.3126 -0.1739 -0.0542 + -0.1360 -0.1675 -0.1997 -0.2344 -0.3014 -0.3687 + -1.9073 -1.9130 -1.9203 -1.9258 -1.9401 -1.9552 + 105.0 + -0.5441 -0.4572 -0.3780 -0.3014 -0.1614 -0.0394 + 0.0432 0.0148 -0.0161 -0.0463 -0.1081 -0.1717 + -1.9858 -1.9917 -1.9976 -2.0039 -2.0180 -2.0342 + 110.0 + -0.5551 -0.5357 -0.4519 -0.3704 -0.2199 -0.0857 + 0.2377 0.5752 0.5408 0.5053 0.4304 0.3485 + -2.0491 -2.0354 -2.0429 -2.0506 -2.0674 -2.0865 + 115.0 + -0.6503 -0.5597 -0.4763 -0.3953 -0.2457 -0.1132 + 0.7002 0.6696 0.6382 0.6059 0.5385 0.4689 + -2.0727 -2.0792 -2.0863 -2.0935 -2.1095 -2.1284 + 120.0 + -0.6975 -0.6078 -0.5245 -0.4444 -0.2946 -0.1591 + 0.8305 0.8029 0.7751 0.7479 0.6863 0.6100 + -2.1045 -2.1106 -2.1178 -2.1253 -2.1410 -2.1606 + 125.0 + -0.7539 -0.6636 -0.5791 -0.4968 -0.3465 -0.2196 + 0.9463 0.9191 0.8881 0.8559 0.7931 0.7488 + -2.1293 -2.1363 -2.1432 -2.1503 -2.1673 -2.1797 + 130.0 + -0.8459 -0.7557 -0.6728 -0.5920 -0.4426 -0.3095 + 1.1100 1.0854 1.0605 1.0348 0.9815 0.9269 + -2.1303 -2.1360 -2.1423 -2.1488 -2.1634 -2.1805 + 135.0 + -0.9529 -0.8622 -0.7786 -0.6980 -0.5476 -0.4134 + 1.2634 1.2394 1.2150 1.1910 1.1402 1.0869 + -2.1220 -2.1281 -2.1348 -2.1414 -2.1564 -2.1746 +PS 10 90.0 135.0 + 90.0 + -1.1888 -1.1515 -1.1238 -1.1018 0.0000 0.0000 + -0.3513 -0.3829 -0.4088 -0.4262 0.0000 0.0000 + -1.3981 -1.4004 -1.4028 -1.4049 0.0000 0.0000 + 95.0 + -1.2388 -1.2038 -1.1785 -1.1616 -1.1496 0.0000 + -0.3454 -0.3638 -0.3756 -0.3752 -0.3172 0.0000 + -1.4400 -1.4409 -1.4414 -1.4422 -1.4389 0.0000 + 100.0 + -1.3101 -1.2784 -1.2544 -1.2390 -1.2303 0.0000 + -0.2902 -0.3032 -0.3112 -0.3094 -0.2647 0.0000 + -1.4707 -1.4710 -1.4695 -1.4675 -1.4609 0.0000 + 105.0 + -1.4056 -1.3751 -1.3548 -1.3401 -1.4266 -1.4100 + -0.2241 -0.2343 -0.2385 -0.2392 0.1091 0.1086 + -1.4884 -1.4865 -1.4836 -1.4802 -1.4283 -1.4255 + 110.0 + -1.5196 -1.6449 -1.6114 -1.5819 -1.5380 -1.5322 + -0.1659 0.1370 0.1125 0.0894 0.0528 0.0614 + -1.4923 -1.4185 -1.4202 -1.4212 -1.4212 -1.4125 + 115.0 + -1.7880 -1.7484 -1.7174 -1.6909 -1.6591 -1.6499 + 0.0878 0.0674 0.0493 0.0326 0.0101 0.0002 + -1.4158 -1.4162 -1.4161 -1.4153 -1.4098 -1.4008 + 120.0 + -1.9026 -1.8666 -1.8379 -1.8162 -1.7701 -1.7772 + 0.0267 0.0095 -0.0046 -0.0183 -0.0633 -0.0498 + -1.4087 -1.4074 -1.4055 -1.4027 -1.4026 -1.3809 + 125.0 + -2.0026 -1.9644 -1.9344 -1.9143 -1.9035 -1.9147 + -0.0636 -0.0842 -0.1034 -0.1146 -0.1183 -0.1034 + -1.4084 -1.4079 -1.4069 -1.4012 -1.3797 -1.3538 + 130.0 + -2.1305 -2.0972 -2.0730 -2.0538 -2.0344 -2.0457 + -0.1366 -0.1508 -0.1632 -0.1749 -0.1957 -0.1953 + -1.3886 -1.3843 -1.3790 -1.3727 -1.3569 -1.3315 + 135.0 + -2.2513 -2.2180 -2.1952 -2.1761 -2.1570 0.0000 + -0.2358 -0.2518 -0.2660 -0.2802 -0.3060 0.0000 + -1.3724 -1.3682 -1.3622 -1.3559 -1.3396 0.0000 +PnS 6 65.0 90.0 + 65.0 + -1.1639 -1.1349 -1.1085 -1.0821 -1.0821 -1.0821 + -0.9611 -0.9809 -1.0007 -1.0205 -1.0205 -1.0205 + -0.9613 -0.9704 -0.9795 -0.9886 -0.9886 -0.9886 + 70.0 + -1.1365 -1.1007 -1.0713 -1.0419 -1.0419 -1.0419 + -0.9432 -0.9318 -0.8933 -0.8548 -0.8548 -0.8548 + -1.0692 -1.0794 -1.0939 -1.1084 -1.1084 -1.1084 + 75.0 + -1.1166 -1.0824 -1.0576 -1.0319 -1.1229 -1.1229 + -0.8970 -0.8766 -0.8498 -0.7814 -0.6446 -0.6446 + -1.1692 -1.1780 -1.1874 -1.2033 -1.2351 -1.2351 + 80.0 + -1.1082 -1.0771 -1.0554 -1.0377 -1.0023 -1.0023 + -0.8010 -0.7991 -0.7829 -0.7472 -0.6758 -0.6758 + -1.2623 -1.2672 -1.2724 -1.2797 -1.2943 -1.2943 + 85.0 + -1.1190 -1.0891 -1.0693 -1.0543 -1.0243 -1.0243 + -0.7071 -0.7087 -0.6967 -0.6731 -0.6259 -0.6259 + -1.3414 -1.3437 -1.3465 -1.3496 -1.3558 -1.3558 + 90.0 + -1.1502 -1.1211 -1.1031 -1.0051 -1.0051 -1.0051 + -0.6043 -0.6075 -0.5977 -0.5879 -0.5879 -0.5879 + -1.4060 -1.4063 -1.4073 -1.4083 -1.4083 -1.4083 diff --git a/gen-travel-times-app/models/groups.txt b/gen-travel-times-app/models/groups.txt new file mode 100644 index 00000000..2fcd6aab --- /dev/null +++ b/gen-travel-times-app/models/groups.txt @@ -0,0 +1,54 @@ +Ploc: Pg Pb Pn Sg Sb Sn PgPg PbPb PnPn + +Pdep: pP sP pwP PcP + +Pdis: Pb Sb + +Use: Pg Pb Pn P Pdif PKiKP PKPdf PKPab PKPbc PKPdif +Sg Sb Sn S Sdif pPg pPb pPn pP pPdif pwP pPKiKP +pPKPdf pPKPab pPKPbc pPKPdif sPg sPb sPn sP sPdif +sPKiKP sPKPdf sPKPab sPKPbc sPKPdif PcP SKiKP SKPdf +SKPab SKPbc ScP PP + +Chaff: pPg pPb pPn sPg sPb sPn pSg pSb pSn sSg sSb +sSn PgPg PbPb PnPn SgSg SbSb SnSn PgS PbS SPg SPb +SnPg + +P: Pg Pb Pn P Pdif +PKP: PKiKP PKPdf PKPab PKPbc PKPdif PKPpre +S: Sg Sb Sn S Sdif Lg +SKS: SKSdf SKSac +pP: pPg pPb pPn pP pPdif pwP +pPKP: pPKiKP pPKPdf pPKPab pPKPbc pPKPdif +sP: sPg sPb sPn sP sPdif +sPKP: sPKiKP sPKPdf sPKPab sPKPbc sPKPdif +PcP: PcP +- +SP: SnPg SPg SPb SPn SP +SKP: SKiKP SKPdf SKPab SKPbc +ScP: ScP +- +PP: PgPg PbPb PnPn PP +P'P': P'P'df P'P'ab P'P'bc +PKKP: PKKPdf PKKPab PKKPbc +- +SKKP: SKKPdf SKKPab SKKPbc +- +pS: pSg pSb pSn pS pSdif +pSKS: pSKSdf pSKSac +sS: sSg sSb sSn sS sSdif +sSKS: sSKSdf sSKSac +ScS: ScS +- +SS: SgSg SbSb SnSn SS +S'S': S'S'df S'S'ac +PS: PgSn PgS PbS PnS PS +PKS: PKSdf PKSab PKSbc +PcS: PcS +- +PKKS: PKKSdf PKKSab PKKSbc +- +SKKS: SKKSdf SKKSac +- +LR: LR +- \ No newline at end of file diff --git a/gen-travel-times-app/models/mak135.mod b/gen-travel-times-app/models/mak135.mod new file mode 100644 index 00000000..7bc50ca5 --- /dev/null +++ b/gen-travel-times-app/models/mak135.mod @@ -0,0 +1,137 @@ + ak135 136 + 1 0.00 13.0122 11.2622 11.2622 3.6678 3.6678 1.000 0.0000 0.0000 + 2 50.71 13.0117 11.2618 11.2618 3.6675 3.6675 1.000 0.0000 0.0000 + 3 101.43 13.0100 11.2606 11.2606 3.6667 3.6667 1.000 0.0000 0.0000 + 4 152.14 13.0074 11.2586 11.2586 3.6653 3.6653 1.000 0.0000 0.0000 + 5 202.85 13.0036 11.2557 11.2557 3.6633 3.6633 1.000 0.0000 0.0000 + 6 253.56 12.9988 11.2521 11.2521 3.6608 3.6608 1.000 0.0000 0.0000 + 7 304.28 12.9929 11.2477 11.2477 3.6577 3.6577 1.000 0.0000 0.0000 + 8 354.99 12.9859 11.2424 11.2424 3.6540 3.6540 1.000 0.0000 0.0000 + 9 405.70 12.9779 11.2364 11.2364 3.6498 3.6498 1.000 0.0000 0.0000 + 10 456.41 12.9688 11.2295 11.2295 3.6450 3.6450 1.000 0.0000 0.0000 + 11 507.13 12.9586 11.2219 11.2219 3.6396 3.6396 1.000 0.0000 0.0000 + 12 557.84 12.9474 11.2134 11.2134 3.6337 3.6337 1.000 0.0000 0.0000 + 13 659.26 12.9217 11.1941 11.1941 3.6202 3.6202 1.000 0.0000 0.0000 + 14 709.98 12.9072 11.1832 11.1832 3.6126 3.6126 1.000 0.0000 0.0000 + 15 760.69 12.8917 11.1715 11.1715 3.6044 3.6044 1.000 0.0000 0.0000 + 16 811.40 12.8751 11.1590 11.1590 3.5957 3.5957 1.000 0.0000 0.0000 + 17 862.11 12.8574 11.1457 11.1457 3.5864 3.5864 1.000 0.0000 0.0000 + 18 912.83 12.8387 11.1316 11.1316 3.5765 3.5765 1.000 0.0000 0.0000 + 19 963.54 12.8188 11.1166 11.1166 3.5661 3.5661 1.000 0.0000 0.0000 + 20 1014.25 12.7980 11.0983 11.0983 3.5551 3.5551 1.000 0.0000 0.0000 + 21 1064.96 12.7760 11.0850 11.0850 3.5435 3.5435 1.000 0.0000 0.0000 + 22 1115.68 12.7530 11.0718 11.0718 3.5314 3.5314 1.000 0.0000 0.0000 + 23 1166.39 12.7289 11.0585 11.0585 3.5187 3.5187 1.000 0.0000 0.0000 + 24 1217.50 12.7037 11.0427 11.0427 3.5043 3.5043 1.000 0.0000 0.0000 + 25 1217.50 12.1391 10.2890 10.2890 0.0000 0.0000 1.000 0.0000 0.0000 + 26 1267.43 12.1133 10.2854 10.2854 0.0000 0.0000 1.000 0.0000 0.0000 + 27 1317.76 12.0867 10.2745 10.2745 0.0000 0.0000 1.000 0.0000 0.0000 + 28 1368.09 12.0593 10.2565 10.2565 0.0000 0.0000 1.000 0.0000 0.0000 + 29 1418.42 12.0311 10.2329 10.2329 0.0000 0.0000 1.000 0.0000 0.0000 + 30 1468.76 12.0001 10.2049 10.2049 0.0000 0.0000 1.000 0.0000 0.0000 + 31 1519.09 11.9722 10.1739 10.1739 0.0000 0.0000 1.000 0.0000 0.0000 + 32 1569.42 11.9414 10.1415 10.1415 0.0000 0.0000 1.000 0.0000 0.0000 + 33 1670.08 11.8772 10.0768 10.0768 0.0000 0.0000 1.000 0.0000 0.0000 + 34 1720.41 11.8437 10.0439 10.0439 0.0000 0.0000 1.000 0.0000 0.0000 + 35 1770.74 11.8092 10.0103 10.0103 0.0000 0.0000 1.000 0.0000 0.0000 + 36 1821.07 11.7737 9.9761 9.9761 0.0000 0.0000 1.000 0.0000 0.0000 + 37 1871.40 11.7373 9.9410 9.9410 0.0000 0.0000 1.000 0.0000 0.0000 + 38 1921.74 11.6998 9.9051 9.9051 0.0000 0.0000 1.000 0.0000 0.0000 + 39 1972.07 11.6612 9.8682 9.8682 0.0000 0.0000 1.000 0.0000 0.0000 + 40 2022.40 11.6216 9.8304 9.8304 0.0000 0.0000 1.000 0.0000 0.0000 + 41 2072.73 11.5809 9.7914 9.7914 0.0000 0.0000 1.000 0.0000 0.0000 + 42 2123.06 11.5391 9.7513 9.7513 0.0000 0.0000 1.000 0.0000 0.0000 + 43 2173.39 11.4962 9.7100 9.7100 0.0000 0.0000 1.000 0.0000 0.0000 + 44 2223.72 11.4521 9.6673 9.6673 0.0000 0.0000 1.000 0.0000 0.0000 + 45 2274.05 11.4069 9.6232 9.6232 0.0000 0.0000 1.000 0.0000 0.0000 + 46 2324.38 11.3604 9.5777 9.5777 0.0000 0.0000 1.000 0.0000 0.0000 + 47 2374.72 11.3127 9.5306 9.5306 0.0000 0.0000 1.000 0.0000 0.0000 + 48 2425.05 11.2639 9.4814 9.4814 0.0000 0.0000 1.000 0.0000 0.0000 + 49 2475.38 11.2137 9.4297 9.4297 0.0000 0.0000 1.000 0.0000 0.0000 + 50 2525.71 11.1623 9.3760 9.3760 0.0000 0.0000 1.000 0.0000 0.0000 + 51 2576.04 11.1095 9.3205 9.3205 0.0000 0.0000 1.000 0.0000 0.0000 + 52 2626.37 11.0555 9.2634 9.2634 0.0000 0.0000 1.000 0.0000 0.0000 + 53 2676.70 11.0001 9.2042 9.2042 0.0000 0.0000 1.000 0.0000 0.0000 + 54 2727.03 10.9434 9.1426 9.1426 0.0000 0.0000 1.000 0.0000 0.0000 + 55 2777.36 10.8852 9.0792 9.0792 0.0000 0.0000 1.000 0.0000 0.0000 + 56 2827.70 10.8257 9.0138 9.0138 0.0000 0.0000 1.000 0.0000 0.0000 + 57 2878.03 10.7647 8.9461 8.9461 0.0000 0.0000 1.000 0.0000 0.0000 + 58 2928.36 10.7023 8.8761 8.8761 0.0000 0.0000 1.000 0.0000 0.0000 + 59 2978.69 10.6385 8.8036 8.8036 0.0000 0.0000 1.000 0.0000 0.0000 + 60 3029.02 10.5731 8.7283 8.7283 0.0000 0.0000 1.000 0.0000 0.0000 + 61 3079.35 10.5062 8.6496 8.6496 0.0000 0.0000 1.000 0.0000 0.0000 + 62 3129.68 10.4378 8.5692 8.5692 0.0000 0.0000 1.000 0.0000 0.0000 + 63 3180.01 10.3679 8.4861 8.4861 0.0000 0.0000 1.000 0.0000 0.0000 + 64 3230.34 10.2964 8.4001 8.4001 0.0000 0.0000 1.000 0.0000 0.0000 + 65 3280.68 10.2233 8.3122 8.3122 0.0000 0.0000 1.000 0.0000 0.0000 + 66 3331.01 10.1485 8.2213 8.2213 0.0000 0.0000 1.000 0.0000 0.0000 + 67 3381.34 10.0722 8.1283 8.1283 0.0000 0.0000 1.000 0.0000 0.0000 + 68 3431.67 9.9942 8.0382 8.0382 0.0000 0.0000 1.000 0.0000 0.0000 + 69 3479.50 9.9145 8.0000 8.0000 0.0000 0.0000 1.000 0.0000 0.0000 + 70 3479.50 5.5515 13.6602 13.6602 7.2811 7.2811 1.000 0.0000 0.0000 + 71 3531.67 5.5284 13.6566 13.6566 7.2704 7.2704 1.000 0.0000 0.0000 + 72 3581.33 5.5051 13.6530 13.6530 7.2597 7.2597 1.000 0.0000 0.0000 + 73 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 74 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 75 3681.00 5.4582 13.5900 13.5900 7.2258 7.2258 1.000 0.0000 0.0000 + 76 3731.00 5.4345 13.5312 13.5312 7.2031 7.2031 1.000 0.0000 0.0000 + 77 3779.50 5.4108 13.4741 13.4741 7.1807 7.1807 1.000 0.0000 0.0000 + 78 3829.00 5.3869 13.4156 13.4156 7.1586 7.1586 1.000 0.0000 0.0000 + 79 3878.50 5.3628 13.3585 13.3585 7.1369 7.1369 1.000 0.0000 0.0000 + 80 3928.00 5.3386 13.3018 13.3018 7.1144 7.1144 1.000 0.0000 0.0000 + 81 3977.50 5.3142 13.2465 13.2465 7.0931 7.0931 1.000 0.0000 0.0000 + 82 4027.00 5.2898 13.1894 13.1894 7.0720 7.0720 1.000 0.0000 0.0000 + 83 4076.50 5.2651 13.1336 13.1336 7.0500 7.0500 1.000 0.0000 0.0000 + 84 4126.00 5.2403 13.0783 13.0783 7.0281 7.0281 1.000 0.0000 0.0000 + 85 4175.50 5.2154 13.0222 13.0222 7.0063 7.0063 1.000 0.0000 0.0000 + 86 4225.00 5.1904 12.9668 12.9668 6.9855 6.9855 1.000 0.0000 0.0000 + 87 4274.50 5.1652 12.9096 12.9096 6.9627 6.9627 1.000 0.0000 0.0000 + 88 4324.00 5.1398 12.8526 12.8526 6.9418 6.9418 1.000 0.0000 0.0000 + 89 4373.50 5.1143 12.7956 12.7956 6.9194 6.9194 1.000 0.0000 0.0000 + 90 4423.00 5.0887 12.7382 12.7382 6.8972 6.8972 1.000 0.0000 0.0000 + 91 4472.50 5.0629 12.6804 12.6804 6.8742 6.8742 1.000 0.0000 0.0000 + 92 4522.00 5.0370 12.6221 12.6221 6.8515 6.8515 1.000 0.0000 0.0000 + 93 4571.50 5.0109 12.5631 12.5631 6.8286 6.8286 1.000 0.0000 0.0000 + 94 4621.00 4.9847 12.5031 12.5031 6.8052 6.8052 1.000 0.0000 0.0000 + 95 4670.50 4.9584 12.4426 12.4426 6.7815 6.7815 1.000 0.0000 0.0000 + 96 4720.00 4.9319 12.3819 12.3819 6.7573 6.7573 1.000 0.0000 0.0000 + 97 4769.50 4.9052 12.3185 12.3185 6.7326 6.7326 1.000 0.0000 0.0000 + 98 4819.00 4.8785 12.2550 12.2550 6.7073 6.7073 1.000 0.0000 0.0000 + 99 4868.50 4.8515 12.1912 12.1912 6.6815 6.6815 1.000 0.0000 0.0000 + 100 4918.00 4.8245 12.1245 12.1245 6.6555 6.6555 1.000 0.0000 0.0000 + 101 4967.50 4.7973 12.0577 12.0577 6.6285 6.6285 1.000 0.0000 0.0000 + 102 5017.00 4.7699 11.9895 11.9895 6.6008 6.6008 1.000 0.0000 0.0000 + 103 5066.50 4.7424 11.9200 11.9200 6.5727 6.5727 1.000 0.0000 0.0000 + 104 5116.00 4.7148 11.8491 11.8491 6.5439 6.5439 1.000 0.0000 0.0000 + 105 5165.50 4.6870 11.7766 11.7766 6.5138 6.5138 1.000 0.0000 0.0000 + 106 5215.00 4.6591 11.7026 11.7026 6.4828 6.4828 1.000 0.0000 0.0000 + 107 5264.50 4.6310 11.6269 11.6269 6.4510 6.4510 1.000 0.0000 0.0000 + 108 5314.00 4.6028 11.5495 11.5495 6.4187 6.4187 1.000 0.0000 0.0000 + 109 5363.50 4.5744 11.4705 11.4705 6.3854 6.3854 1.000 0.0000 0.0000 + 110 5413.00 4.5459 11.3896 11.3896 6.3512 6.3512 1.000 0.0000 0.0000 + 111 5462.50 4.5173 11.3068 11.3068 6.3160 6.3160 1.000 0.0000 0.0000 + 112 5512.00 4.4885 11.2221 11.2221 6.2798 6.2798 1.000 0.0000 0.0000 + 113 5561.50 4.4596 11.1353 11.1353 6.2426 6.2426 1.000 0.0000 0.0000 + 114 5611.00 4.4305 11.0558 11.0558 6.2095 6.2095 1.000 0.0000 0.0000 + 115 5661.00 4.4010 10.9229 10.9229 6.0897 6.0897 1.000 0.0000 0.0000 + 116 5711.00 4.3714 10.7900 10.7900 5.9600 5.9600 1.000 0.0000 0.0000 + 117 5711.00 4.0646 10.2000 10.2000 5.6100 5.6100 1.000 0.0000 0.0000 + 118 5761.00 4.0028 10.0320 10.0320 5.5040 5.5040 1.000 0.0000 0.0000 + 119 5811.00 3.9410 9.8640 9.8640 5.3980 5.3980 1.000 0.0000 0.0000 + 120 5861.00 3.8793 9.6960 9.6960 5.2920 5.2920 1.000 0.0000 0.0000 + 121 5911.00 3.8175 9.5280 9.5280 5.1860 5.1860 1.000 0.0000 0.0000 + 122 5961.00 3.7557 9.3600 9.3600 5.0800 5.0800 1.000 0.0000 0.0000 + 123 5961.00 3.5470 9.0300 9.0300 4.8700 4.8700 1.000 0.0000 0.0000 + 124 6011.00 3.5167 8.8475 8.8475 4.7830 4.7830 1.000 0.0000 0.0000 + 125 6061.00 3.4864 8.6650 8.6650 4.6960 4.6960 1.000 0.0000 0.0000 + 126 6111.00 3.4561 8.4825 8.4825 4.6090 4.6090 1.000 0.0000 0.0000 + 127 6161.00 3.4258 8.3000 8.3000 4.5230 4.5230 1.000 0.0000 0.0000 + 128 6161.00 3.4258 8.3000 8.3000 4.5180 4.5180 1.000 0.0000 0.0000 + 129 6206.00 3.3985 8.1750 8.1750 4.5090 4.5090 1.000 0.0000 0.0000 + 130 6251.00 3.3713 8.0500 8.0500 4.5000 4.5000 1.000 0.0000 0.0000 + 131 6293.50 3.3455 8.0450 8.0450 4.4900 4.4900 1.000 0.0000 0.0000 + 132 6336.00 3.3198 8.0400 8.0400 4.4800 4.4800 1.000 0.0000 0.0000 + 133 6336.00 2.9200 6.5000 6.5000 3.8500 3.8500 1.000 0.0000 0.0000 + 134 6351.00 2.9200 6.5000 6.5000 3.8500 3.8500 1.000 0.0000 0.0000 + 135 6351.00 2.7200 5.8000 5.8000 3.4600 3.4600 1.000 0.0000 0.0000 + 136 6371.00 2.7200 5.8000 5.8000 3.4600 3.4600 1.000 0.0000 0.0000 diff --git a/gen-travel-times-app/models/mcia.mod b/gen-travel-times-app/models/mcia.mod new file mode 100644 index 00000000..c6cd216f --- /dev/null +++ b/gen-travel-times-app/models/mcia.mod @@ -0,0 +1,145 @@ + cia 144 6371.00 5961.00 6327.50 6356.50 + 1 0.00 13.0122 11.2622 11.2622 3.6678 3.6678 1.000 0.0000 0.0000 + 2 50.71 13.0117 11.2618 11.2618 3.6675 3.6675 1.000 0.0000 0.0000 + 3 101.43 13.0100 11.2606 11.2606 3.6667 3.6667 1.000 0.0000 0.0000 + 4 152.14 13.0074 11.2586 11.2586 3.6653 3.6653 1.000 0.0000 0.0000 + 5 202.85 13.0036 11.2557 11.2557 3.6633 3.6633 1.000 0.0000 0.0000 + 6 253.56 12.9988 11.2521 11.2521 3.6608 3.6608 1.000 0.0000 0.0000 + 7 304.28 12.9929 11.2477 11.2477 3.6577 3.6577 1.000 0.0000 0.0000 + 8 354.99 12.9859 11.2424 11.2424 3.6540 3.6540 1.000 0.0000 0.0000 + 9 405.70 12.9779 11.2364 11.2364 3.6498 3.6498 1.000 0.0000 0.0000 + 10 456.41 12.9688 11.2295 11.2295 3.6450 3.6450 1.000 0.0000 0.0000 + 11 507.13 12.9586 11.2219 11.2219 3.6396 3.6396 1.000 0.0000 0.0000 + 12 557.84 12.9474 11.2134 11.2134 3.6337 3.6337 1.000 0.0000 0.0000 + 13 659.26 12.9217 11.1941 11.1941 3.6202 3.6202 1.000 0.0000 0.0000 + 14 709.98 12.9072 11.1832 11.1832 3.6126 3.6126 1.000 0.0000 0.0000 + 15 760.69 12.8917 11.1715 11.1715 3.6044 3.6044 1.000 0.0000 0.0000 + 16 811.40 12.8751 11.1590 11.1590 3.5957 3.5957 1.000 0.0000 0.0000 + 17 862.11 12.8574 11.1457 11.1457 3.5864 3.5864 1.000 0.0000 0.0000 + 18 912.83 12.8387 11.1316 11.1316 3.5765 3.5765 1.000 0.0000 0.0000 + 19 963.54 12.8188 11.1166 11.1166 3.5661 3.5661 1.000 0.0000 0.0000 + 20 1014.25 12.7980 11.0983 11.0983 3.5551 3.5551 1.000 0.0000 0.0000 + 21 1064.96 12.7760 11.0850 11.0850 3.5435 3.5435 1.000 0.0000 0.0000 + 22 1115.68 12.7530 11.0718 11.0718 3.5314 3.5314 1.000 0.0000 0.0000 + 23 1166.39 12.7289 11.0585 11.0585 3.5187 3.5187 1.000 0.0000 0.0000 + 24 1217.50 12.7037 11.0427 11.0427 3.5043 3.5043 1.000 0.0000 0.0000 + 25 1217.50 12.1391 10.2890 10.2890 0.0000 0.0000 1.000 0.0000 0.0000 + 26 1267.43 12.1133 10.2854 10.2854 0.0000 0.0000 1.000 0.0000 0.0000 + 27 1317.76 12.0867 10.2745 10.2745 0.0000 0.0000 1.000 0.0000 0.0000 + 28 1368.09 12.0593 10.2565 10.2565 0.0000 0.0000 1.000 0.0000 0.0000 + 29 1418.42 12.0311 10.2329 10.2329 0.0000 0.0000 1.000 0.0000 0.0000 + 30 1468.76 12.0001 10.2049 10.2049 0.0000 0.0000 1.000 0.0000 0.0000 + 31 1519.09 11.9722 10.1739 10.1739 0.0000 0.0000 1.000 0.0000 0.0000 + 32 1569.42 11.9414 10.1415 10.1415 0.0000 0.0000 1.000 0.0000 0.0000 + 33 1670.08 11.8772 10.0768 10.0768 0.0000 0.0000 1.000 0.0000 0.0000 + 34 1720.41 11.8437 10.0439 10.0439 0.0000 0.0000 1.000 0.0000 0.0000 + 35 1770.74 11.8092 10.0103 10.0103 0.0000 0.0000 1.000 0.0000 0.0000 + 36 1821.07 11.7737 9.9761 9.9761 0.0000 0.0000 1.000 0.0000 0.0000 + 37 1871.40 11.7373 9.9410 9.9410 0.0000 0.0000 1.000 0.0000 0.0000 + 38 1921.74 11.6998 9.9051 9.9051 0.0000 0.0000 1.000 0.0000 0.0000 + 39 1972.07 11.6612 9.8682 9.8682 0.0000 0.0000 1.000 0.0000 0.0000 + 40 2022.40 11.6216 9.8304 9.8304 0.0000 0.0000 1.000 0.0000 0.0000 + 41 2072.73 11.5809 9.7914 9.7914 0.0000 0.0000 1.000 0.0000 0.0000 + 42 2123.06 11.5391 9.7513 9.7513 0.0000 0.0000 1.000 0.0000 0.0000 + 43 2173.39 11.4962 9.7100 9.7100 0.0000 0.0000 1.000 0.0000 0.0000 + 44 2223.72 11.4521 9.6673 9.6673 0.0000 0.0000 1.000 0.0000 0.0000 + 45 2274.05 11.4069 9.6232 9.6232 0.0000 0.0000 1.000 0.0000 0.0000 + 46 2324.38 11.3604 9.5777 9.5777 0.0000 0.0000 1.000 0.0000 0.0000 + 47 2374.72 11.3127 9.5306 9.5306 0.0000 0.0000 1.000 0.0000 0.0000 + 48 2425.05 11.2639 9.4814 9.4814 0.0000 0.0000 1.000 0.0000 0.0000 + 49 2475.38 11.2137 9.4297 9.4297 0.0000 0.0000 1.000 0.0000 0.0000 + 50 2525.71 11.1623 9.3760 9.3760 0.0000 0.0000 1.000 0.0000 0.0000 + 51 2576.04 11.1095 9.3205 9.3205 0.0000 0.0000 1.000 0.0000 0.0000 + 52 2626.37 11.0555 9.2634 9.2634 0.0000 0.0000 1.000 0.0000 0.0000 + 53 2676.70 11.0001 9.2042 9.2042 0.0000 0.0000 1.000 0.0000 0.0000 + 54 2727.03 10.9434 9.1426 9.1426 0.0000 0.0000 1.000 0.0000 0.0000 + 55 2777.36 10.8852 9.0792 9.0792 0.0000 0.0000 1.000 0.0000 0.0000 + 56 2827.70 10.8257 9.0138 9.0138 0.0000 0.0000 1.000 0.0000 0.0000 + 57 2878.03 10.7647 8.9461 8.9461 0.0000 0.0000 1.000 0.0000 0.0000 + 58 2928.36 10.7023 8.8761 8.8761 0.0000 0.0000 1.000 0.0000 0.0000 + 59 2978.69 10.6385 8.8036 8.8036 0.0000 0.0000 1.000 0.0000 0.0000 + 60 3029.02 10.5731 8.7283 8.7283 0.0000 0.0000 1.000 0.0000 0.0000 + 61 3079.35 10.5062 8.6496 8.6496 0.0000 0.0000 1.000 0.0000 0.0000 + 62 3129.68 10.4378 8.5692 8.5692 0.0000 0.0000 1.000 0.0000 0.0000 + 63 3180.01 10.3679 8.4861 8.4861 0.0000 0.0000 1.000 0.0000 0.0000 + 64 3230.34 10.2964 8.4001 8.4001 0.0000 0.0000 1.000 0.0000 0.0000 + 65 3280.68 10.2233 8.3122 8.3122 0.0000 0.0000 1.000 0.0000 0.0000 + 66 3331.01 10.1485 8.2213 8.2213 0.0000 0.0000 1.000 0.0000 0.0000 + 67 3381.34 10.0722 8.1283 8.1283 0.0000 0.0000 1.000 0.0000 0.0000 + 68 3431.67 9.9942 8.0382 8.0382 0.0000 0.0000 1.000 0.0000 0.0000 + 69 3479.50 9.9145 8.0000 8.0000 0.0000 0.0000 1.000 0.0000 0.0000 + 70 3479.50 5.5515 13.6602 13.6602 7.2811 7.2811 1.000 0.0000 0.0000 + 71 3531.67 5.5284 13.6566 13.6566 7.2704 7.2704 1.000 0.0000 0.0000 + 72 3581.33 5.5051 13.6530 13.6530 7.2597 7.2597 1.000 0.0000 0.0000 + 73 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 74 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 75 3681.00 5.4582 13.5900 13.5900 7.2258 7.2258 1.000 0.0000 0.0000 + 76 3731.00 5.4345 13.5312 13.5312 7.2031 7.2031 1.000 0.0000 0.0000 + 77 3779.50 5.4108 13.4741 13.4741 7.1807 7.1807 1.000 0.0000 0.0000 + 78 3829.00 5.3869 13.4156 13.4156 7.1586 7.1586 1.000 0.0000 0.0000 + 79 3878.50 5.3628 13.3585 13.3585 7.1369 7.1369 1.000 0.0000 0.0000 + 80 3928.00 5.3386 13.3018 13.3018 7.1144 7.1144 1.000 0.0000 0.0000 + 81 3977.50 5.3142 13.2465 13.2465 7.0931 7.0931 1.000 0.0000 0.0000 + 82 4027.00 5.2898 13.1894 13.1894 7.0720 7.0720 1.000 0.0000 0.0000 + 83 4076.50 5.2651 13.1336 13.1336 7.0500 7.0500 1.000 0.0000 0.0000 + 84 4126.00 5.2403 13.0783 13.0783 7.0281 7.0281 1.000 0.0000 0.0000 + 85 4175.50 5.2154 13.0222 13.0222 7.0063 7.0063 1.000 0.0000 0.0000 + 86 4225.00 5.1904 12.9668 12.9668 6.9855 6.9855 1.000 0.0000 0.0000 + 87 4274.50 5.1652 12.9096 12.9096 6.9627 6.9627 1.000 0.0000 0.0000 + 88 4324.00 5.1398 12.8526 12.8526 6.9418 6.9418 1.000 0.0000 0.0000 + 89 4373.50 5.1143 12.7956 12.7956 6.9194 6.9194 1.000 0.0000 0.0000 + 90 4423.00 5.0887 12.7382 12.7382 6.8972 6.8972 1.000 0.0000 0.0000 + 91 4472.50 5.0629 12.6804 12.6804 6.8742 6.8742 1.000 0.0000 0.0000 + 92 4522.00 5.0370 12.6221 12.6221 6.8515 6.8515 1.000 0.0000 0.0000 + 93 4571.50 5.0109 12.5631 12.5631 6.8286 6.8286 1.000 0.0000 0.0000 + 94 4621.00 4.9847 12.5031 12.5031 6.8052 6.8052 1.000 0.0000 0.0000 + 95 4670.50 4.9584 12.4426 12.4426 6.7815 6.7815 1.000 0.0000 0.0000 + 96 4720.00 4.9319 12.3819 12.3819 6.7573 6.7573 1.000 0.0000 0.0000 + 97 4769.50 4.9052 12.3185 12.3185 6.7326 6.7326 1.000 0.0000 0.0000 + 98 4819.00 4.8785 12.2550 12.2550 6.7073 6.7073 1.000 0.0000 0.0000 + 99 4868.50 4.8515 12.1912 12.1912 6.6815 6.6815 1.000 0.0000 0.0000 + 100 4918.00 4.8245 12.1245 12.1245 6.6555 6.6555 1.000 0.0000 0.0000 + 101 4967.50 4.7973 12.0577 12.0577 6.6285 6.6285 1.000 0.0000 0.0000 + 102 5017.00 4.7699 11.9895 11.9895 6.6008 6.6008 1.000 0.0000 0.0000 + 103 5066.50 4.7424 11.9200 11.9200 6.5727 6.5727 1.000 0.0000 0.0000 + 104 5116.00 4.7148 11.8491 11.8491 6.5439 6.5439 1.000 0.0000 0.0000 + 105 5165.50 4.6870 11.7766 11.7766 6.5138 6.5138 1.000 0.0000 0.0000 + 106 5215.00 4.6591 11.7026 11.7026 6.4828 6.4828 1.000 0.0000 0.0000 + 107 5264.50 4.6310 11.6269 11.6269 6.4510 6.4510 1.000 0.0000 0.0000 + 108 5314.00 4.6028 11.5495 11.5495 6.4187 6.4187 1.000 0.0000 0.0000 + 109 5363.50 4.5744 11.4705 11.4705 6.3854 6.3854 1.000 0.0000 0.0000 + 110 5413.00 4.5459 11.3896 11.3896 6.3512 6.3512 1.000 0.0000 0.0000 + 111 5462.50 4.5173 11.3068 11.3068 6.3160 6.3160 1.000 0.0000 0.0000 + 112 5512.00 4.4885 11.2221 11.2221 6.2798 6.2798 1.000 0.0000 0.0000 + 113 5561.50 4.4596 11.1353 11.1353 6.2426 6.2426 1.000 0.0000 0.0000 + 114 5611.00 4.4305 11.0558 11.0558 6.2095 6.2095 1.000 0.0000 0.0000 + 115 5661.00 4.4010 10.9229 10.9229 6.0897 6.0897 1.000 0.0000 0.0000 + 116 5711.00 4.3714 10.7900 10.7900 5.9600 5.9600 1.000 0.0000 0.0000 + 117 5711.00 4.0646 10.2000 10.2000 5.6100 5.6100 1.000 0.0000 0.0000 + 118 5761.00 4.0028 10.0320 10.0320 5.5040 5.5040 1.000 0.0000 0.0000 + 119 5811.00 3.9410 9.8640 9.8640 5.3980 5.3980 1.000 0.0000 0.0000 + 120 5861.00 3.8793 9.6960 9.6960 5.2920 5.2920 1.000 0.0000 0.0000 + 121 5911.00 3.8175 9.5280 9.5280 5.1860 5.1860 1.000 0.0000 0.0000 + 122 5961.00 3.7557 9.3600 9.3600 5.0800 5.0800 1.000 0.0000 0.0000 + 123 5961.00 3.5470 9.0300 9.0300 4.8700 4.8700 1.000 0.0000 0.0000 + 124 6011.00 3.5167 8.8475 8.8475 4.7830 4.7830 1.000 0.0000 0.0000 + 125 6061.00 3.4864 8.6650 8.6650 4.6960 4.6960 1.000 0.0000 0.0000 + 126 6111.00 3.4561 8.4825 8.4825 4.6090 4.6090 1.000 0.0000 0.0000 + 127 6161.00 3.4258 8.3000 8.3000 4.5230 4.5230 1.000 0.0000 0.0000 + 128 6161.00 3.4258 8.3000 8.3000 4.5180 4.5180 1.000 0.0000 0.0000 + 129 6206.00 3.3985 8.1750 8.1750 4.5090 4.5090 1.000 0.0000 0.0000 + 130 6327.50 3.2760 7.9000 7.9000 4.4036 4.4036 1.000 0.0000 0.0000 + 131 6327.50 3.0120 7.1000 7.1000 3.9864 3.9864 1.000 0.0000 0.0000 + 132 6335.50 3.0120 7.1000 7.1000 3.9864 3.9864 1.000 0.0000 0.0000 + 133 6335.50 3.0002 7.1059 7.1059 4.0081 4.0081 1.000 0.0000 0.0000 + 134 6341.50 3.0002 7.1059 7.1059 4.0081 4.0081 1.000 0.0000 0.0000 + 135 6341.50 2.6770 5.8805 5.8805 3.3583 3.3583 1.000 0.0000 0.0000 + 136 6356.50 2.6770 5.8805 5.8805 3.3583 3.3583 1.000 0.0000 0.0000 + 137 6356.50 2.6093 5.5516 5.5516 3.1475 3.1475 1.000 0.0000 0.0000 + 138 6363.50 2.6093 5.5516 5.5516 3.1475 3.1475 1.000 0.0000 0.0000 + 139 6363.50 2.7058 6.0129 6.0129 3.4336 3.4336 1.000 0.0000 0.0000 + 140 6366.50 2.7058 6.0129 6.0129 3.4336 3.4336 1.000 0.0000 0.0000 + 141 6366.50 2.4858 4.9399 4.9399 2.8210 2.8210 1.000 0.0000 0.0000 + 142 6369.50 2.4858 4.9399 4.9399 2.8210 2.8210 1.000 0.0000 0.0000 + 143 6369.50 2.2753 3.7497 3.7497 2.1436 2.1436 1.000 0.0000 0.0000 + 144 6371.00 2.2753 3.7497 3.7497 2.1436 2.1436 1.000 0.0000 0.0000 diff --git a/gen-travel-times-app/models/mcus.mod b/gen-travel-times-app/models/mcus.mod new file mode 100644 index 00000000..3294aad4 --- /dev/null +++ b/gen-travel-times-app/models/mcus.mod @@ -0,0 +1,140 @@ + cus 139 + 1 0.00 13.0122 11.2622 11.2622 3.6678 3.6678 1.000 0.0000 0.0000 + 2 50.71 13.0117 11.2618 11.2618 3.6675 3.6675 1.000 0.0000 0.0000 + 3 101.43 13.0100 11.2606 11.2606 3.6667 3.6667 1.000 0.0000 0.0000 + 4 152.14 13.0074 11.2586 11.2586 3.6653 3.6653 1.000 0.0000 0.0000 + 5 202.85 13.0036 11.2557 11.2557 3.6633 3.6633 1.000 0.0000 0.0000 + 6 253.56 12.9988 11.2521 11.2521 3.6608 3.6608 1.000 0.0000 0.0000 + 7 304.28 12.9929 11.2477 11.2477 3.6577 3.6577 1.000 0.0000 0.0000 + 8 354.99 12.9859 11.2424 11.2424 3.6540 3.6540 1.000 0.0000 0.0000 + 9 405.70 12.9779 11.2364 11.2364 3.6498 3.6498 1.000 0.0000 0.0000 + 10 456.41 12.9688 11.2295 11.2295 3.6450 3.6450 1.000 0.0000 0.0000 + 11 507.13 12.9586 11.2219 11.2219 3.6396 3.6396 1.000 0.0000 0.0000 + 12 557.84 12.9474 11.2134 11.2134 3.6337 3.6337 1.000 0.0000 0.0000 + 13 659.26 12.9217 11.1941 11.1941 3.6202 3.6202 1.000 0.0000 0.0000 + 14 709.98 12.9072 11.1832 11.1832 3.6126 3.6126 1.000 0.0000 0.0000 + 15 760.69 12.8917 11.1715 11.1715 3.6044 3.6044 1.000 0.0000 0.0000 + 16 811.40 12.8751 11.1590 11.1590 3.5957 3.5957 1.000 0.0000 0.0000 + 17 862.11 12.8574 11.1457 11.1457 3.5864 3.5864 1.000 0.0000 0.0000 + 18 912.83 12.8387 11.1316 11.1316 3.5765 3.5765 1.000 0.0000 0.0000 + 19 963.54 12.8188 11.1166 11.1166 3.5661 3.5661 1.000 0.0000 0.0000 + 20 1014.25 12.7980 11.0983 11.0983 3.5551 3.5551 1.000 0.0000 0.0000 + 21 1064.96 12.7760 11.0850 11.0850 3.5435 3.5435 1.000 0.0000 0.0000 + 22 1115.68 12.7530 11.0718 11.0718 3.5314 3.5314 1.000 0.0000 0.0000 + 23 1166.39 12.7289 11.0585 11.0585 3.5187 3.5187 1.000 0.0000 0.0000 + 24 1217.50 12.7037 11.0427 11.0427 3.5043 3.5043 1.000 0.0000 0.0000 + 25 1217.50 12.1391 10.2890 10.2890 0.0000 0.0000 1.000 0.0000 0.0000 + 26 1267.43 12.1133 10.2854 10.2854 0.0000 0.0000 1.000 0.0000 0.0000 + 27 1317.76 12.0867 10.2745 10.2745 0.0000 0.0000 1.000 0.0000 0.0000 + 28 1368.09 12.0593 10.2565 10.2565 0.0000 0.0000 1.000 0.0000 0.0000 + 29 1418.42 12.0311 10.2329 10.2329 0.0000 0.0000 1.000 0.0000 0.0000 + 30 1468.76 12.0001 10.2049 10.2049 0.0000 0.0000 1.000 0.0000 0.0000 + 31 1519.09 11.9722 10.1739 10.1739 0.0000 0.0000 1.000 0.0000 0.0000 + 32 1569.42 11.9414 10.1415 10.1415 0.0000 0.0000 1.000 0.0000 0.0000 + 33 1670.08 11.8772 10.0768 10.0768 0.0000 0.0000 1.000 0.0000 0.0000 + 34 1720.41 11.8437 10.0439 10.0439 0.0000 0.0000 1.000 0.0000 0.0000 + 35 1770.74 11.8092 10.0103 10.0103 0.0000 0.0000 1.000 0.0000 0.0000 + 36 1821.07 11.7737 9.9761 9.9761 0.0000 0.0000 1.000 0.0000 0.0000 + 37 1871.40 11.7373 9.9410 9.9410 0.0000 0.0000 1.000 0.0000 0.0000 + 38 1921.74 11.6998 9.9051 9.9051 0.0000 0.0000 1.000 0.0000 0.0000 + 39 1972.07 11.6612 9.8682 9.8682 0.0000 0.0000 1.000 0.0000 0.0000 + 40 2022.40 11.6216 9.8304 9.8304 0.0000 0.0000 1.000 0.0000 0.0000 + 41 2072.73 11.5809 9.7914 9.7914 0.0000 0.0000 1.000 0.0000 0.0000 + 42 2123.06 11.5391 9.7513 9.7513 0.0000 0.0000 1.000 0.0000 0.0000 + 43 2173.39 11.4962 9.7100 9.7100 0.0000 0.0000 1.000 0.0000 0.0000 + 44 2223.72 11.4521 9.6673 9.6673 0.0000 0.0000 1.000 0.0000 0.0000 + 45 2274.05 11.4069 9.6232 9.6232 0.0000 0.0000 1.000 0.0000 0.0000 + 46 2324.38 11.3604 9.5777 9.5777 0.0000 0.0000 1.000 0.0000 0.0000 + 47 2374.72 11.3127 9.5306 9.5306 0.0000 0.0000 1.000 0.0000 0.0000 + 48 2425.05 11.2639 9.4814 9.4814 0.0000 0.0000 1.000 0.0000 0.0000 + 49 2475.38 11.2137 9.4297 9.4297 0.0000 0.0000 1.000 0.0000 0.0000 + 50 2525.71 11.1623 9.3760 9.3760 0.0000 0.0000 1.000 0.0000 0.0000 + 51 2576.04 11.1095 9.3205 9.3205 0.0000 0.0000 1.000 0.0000 0.0000 + 52 2626.37 11.0555 9.2634 9.2634 0.0000 0.0000 1.000 0.0000 0.0000 + 53 2676.70 11.0001 9.2042 9.2042 0.0000 0.0000 1.000 0.0000 0.0000 + 54 2727.03 10.9434 9.1426 9.1426 0.0000 0.0000 1.000 0.0000 0.0000 + 55 2777.36 10.8852 9.0792 9.0792 0.0000 0.0000 1.000 0.0000 0.0000 + 56 2827.70 10.8257 9.0138 9.0138 0.0000 0.0000 1.000 0.0000 0.0000 + 57 2878.03 10.7647 8.9461 8.9461 0.0000 0.0000 1.000 0.0000 0.0000 + 58 2928.36 10.7023 8.8761 8.8761 0.0000 0.0000 1.000 0.0000 0.0000 + 59 2978.69 10.6385 8.8036 8.8036 0.0000 0.0000 1.000 0.0000 0.0000 + 60 3029.02 10.5731 8.7283 8.7283 0.0000 0.0000 1.000 0.0000 0.0000 + 61 3079.35 10.5062 8.6496 8.6496 0.0000 0.0000 1.000 0.0000 0.0000 + 62 3129.68 10.4378 8.5692 8.5692 0.0000 0.0000 1.000 0.0000 0.0000 + 63 3180.01 10.3679 8.4861 8.4861 0.0000 0.0000 1.000 0.0000 0.0000 + 64 3230.34 10.2964 8.4001 8.4001 0.0000 0.0000 1.000 0.0000 0.0000 + 65 3280.68 10.2233 8.3122 8.3122 0.0000 0.0000 1.000 0.0000 0.0000 + 66 3331.01 10.1485 8.2213 8.2213 0.0000 0.0000 1.000 0.0000 0.0000 + 67 3381.34 10.0722 8.1283 8.1283 0.0000 0.0000 1.000 0.0000 0.0000 + 68 3431.67 9.9942 8.0382 8.0382 0.0000 0.0000 1.000 0.0000 0.0000 + 69 3479.50 9.9145 8.0000 8.0000 0.0000 0.0000 1.000 0.0000 0.0000 + 70 3479.50 5.5515 13.6602 13.6602 7.2811 7.2811 1.000 0.0000 0.0000 + 71 3531.67 5.5284 13.6566 13.6566 7.2704 7.2704 1.000 0.0000 0.0000 + 72 3581.33 5.5051 13.6530 13.6530 7.2597 7.2597 1.000 0.0000 0.0000 + 73 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 74 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 75 3681.00 5.4582 13.5900 13.5900 7.2258 7.2258 1.000 0.0000 0.0000 + 76 3731.00 5.4345 13.5312 13.5312 7.2031 7.2031 1.000 0.0000 0.0000 + 77 3779.50 5.4108 13.4741 13.4741 7.1807 7.1807 1.000 0.0000 0.0000 + 78 3829.00 5.3869 13.4156 13.4156 7.1586 7.1586 1.000 0.0000 0.0000 + 79 3878.50 5.3628 13.3585 13.3585 7.1369 7.1369 1.000 0.0000 0.0000 + 80 3928.00 5.3386 13.3018 13.3018 7.1144 7.1144 1.000 0.0000 0.0000 + 81 3977.50 5.3142 13.2465 13.2465 7.0931 7.0931 1.000 0.0000 0.0000 + 82 4027.00 5.2898 13.1894 13.1894 7.0720 7.0720 1.000 0.0000 0.0000 + 83 4076.50 5.2651 13.1336 13.1336 7.0500 7.0500 1.000 0.0000 0.0000 + 84 4126.00 5.2403 13.0783 13.0783 7.0281 7.0281 1.000 0.0000 0.0000 + 85 4175.50 5.2154 13.0222 13.0222 7.0063 7.0063 1.000 0.0000 0.0000 + 86 4225.00 5.1904 12.9668 12.9668 6.9855 6.9855 1.000 0.0000 0.0000 + 87 4274.50 5.1652 12.9096 12.9096 6.9627 6.9627 1.000 0.0000 0.0000 + 88 4324.00 5.1398 12.8526 12.8526 6.9418 6.9418 1.000 0.0000 0.0000 + 89 4373.50 5.1143 12.7956 12.7956 6.9194 6.9194 1.000 0.0000 0.0000 + 90 4423.00 5.0887 12.7382 12.7382 6.8972 6.8972 1.000 0.0000 0.0000 + 91 4472.50 5.0629 12.6804 12.6804 6.8742 6.8742 1.000 0.0000 0.0000 + 92 4522.00 5.0370 12.6221 12.6221 6.8515 6.8515 1.000 0.0000 0.0000 + 93 4571.50 5.0109 12.5631 12.5631 6.8286 6.8286 1.000 0.0000 0.0000 + 94 4621.00 4.9847 12.5031 12.5031 6.8052 6.8052 1.000 0.0000 0.0000 + 95 4670.50 4.9584 12.4426 12.4426 6.7815 6.7815 1.000 0.0000 0.0000 + 96 4720.00 4.9319 12.3819 12.3819 6.7573 6.7573 1.000 0.0000 0.0000 + 97 4769.50 4.9052 12.3185 12.3185 6.7326 6.7326 1.000 0.0000 0.0000 + 98 4819.00 4.8785 12.2550 12.2550 6.7073 6.7073 1.000 0.0000 0.0000 + 99 4868.50 4.8515 12.1912 12.1912 6.6815 6.6815 1.000 0.0000 0.0000 + 100 4918.00 4.8245 12.1245 12.1245 6.6555 6.6555 1.000 0.0000 0.0000 + 101 4967.50 4.7973 12.0577 12.0577 6.6285 6.6285 1.000 0.0000 0.0000 + 102 5017.00 4.7699 11.9895 11.9895 6.6008 6.6008 1.000 0.0000 0.0000 + 103 5066.50 4.7424 11.9200 11.9200 6.5727 6.5727 1.000 0.0000 0.0000 + 104 5116.00 4.7148 11.8491 11.8491 6.5439 6.5439 1.000 0.0000 0.0000 + 105 5165.50 4.6870 11.7766 11.7766 6.5138 6.5138 1.000 0.0000 0.0000 + 106 5215.00 4.6591 11.7026 11.7026 6.4828 6.4828 1.000 0.0000 0.0000 + 107 5264.50 4.6310 11.6269 11.6269 6.4510 6.4510 1.000 0.0000 0.0000 + 108 5314.00 4.6028 11.5495 11.5495 6.4187 6.4187 1.000 0.0000 0.0000 + 109 5363.50 4.5744 11.4705 11.4705 6.3854 6.3854 1.000 0.0000 0.0000 + 110 5413.00 4.5459 11.3896 11.3896 6.3512 6.3512 1.000 0.0000 0.0000 + 111 5462.50 4.5173 11.3068 11.3068 6.3160 6.3160 1.000 0.0000 0.0000 + 112 5512.00 4.4885 11.2221 11.2221 6.2798 6.2798 1.000 0.0000 0.0000 + 113 5561.50 4.4596 11.1353 11.1353 6.2426 6.2426 1.000 0.0000 0.0000 + 114 5611.00 4.4305 11.0558 11.0558 6.2095 6.2095 1.000 0.0000 0.0000 + 115 5661.00 4.4010 10.9229 10.9229 6.0897 6.0897 1.000 0.0000 0.0000 + 116 5711.00 4.3714 10.7900 10.7900 5.9600 5.9600 1.000 0.0000 0.0000 + 117 5711.00 4.0646 10.2000 10.2000 5.6100 5.6100 1.000 0.0000 0.0000 + 118 5761.00 4.0028 10.0320 10.0320 5.5040 5.5040 1.000 0.0000 0.0000 + 119 5811.00 3.9410 9.8640 9.8640 5.3980 5.3980 1.000 0.0000 0.0000 + 120 5861.00 3.8793 9.6960 9.6960 5.2920 5.2920 1.000 0.0000 0.0000 + 121 5911.00 3.8175 9.5280 9.5280 5.1860 5.1860 1.000 0.0000 0.0000 + 122 5961.00 3.7557 9.3600 9.3600 5.0800 5.0800 1.000 0.0000 0.0000 + 123 5961.00 3.5470 9.0300 9.0300 4.8700 4.8700 1.000 0.0000 0.0000 + 124 6011.00 3.5167 8.8475 8.8475 4.7830 4.7830 1.000 0.0000 0.0000 + 125 6061.00 3.4864 8.6650 8.6650 4.6960 4.6960 1.000 0.0000 0.0000 + 126 6111.00 3.4561 8.4825 8.4825 4.6090 4.6090 1.000 0.0000 0.0000 + 127 6161.00 3.4258 8.3000 8.3000 4.5230 4.5230 1.000 0.0000 0.0000 + 128 6161.00 3.4258 8.3000 8.3000 4.5180 4.5180 1.000 0.0000 0.0000 + 129 6206.00 3.3985 8.1751 8.1751 4.5090 4.5090 1.000 0.0000 0.0000 + 130 6206.00 3.3985 8.1750 8.1750 4.5090 4.5090 1.000 0.0000 0.0000 + 131 6331.00 3.3640 8.1500 8.1500 4.7000 4.7000 1.000 0.0000 0.0000 + 132 6331.00 2.9020 6.7000 6.7000 3.8700 3.8700 1.000 0.0000 0.0000 + 133 6351.00 2.9020 6.7000 6.7000 3.8700 3.8700 1.000 0.0000 0.0000 + 134 6351.00 2.8200 6.4000 6.4000 3.7000 3.7000 1.000 0.0000 0.0000 + 135 6361.00 2.8200 6.4000 6.4000 3.7000 3.7000 1.000 0.0000 0.0000 + 136 6361.00 2.7300 6.1000 6.1000 3.5200 3.5200 1.000 0.0000 0.0000 + 137 6370.00 2.7300 6.1000 6.1000 3.5200 3.5200 1.000 0.0000 0.0000 + 138 6370.00 2.5000 5.0000 5.0000 2.8900 2.8900 1.000 0.0000 0.0000 + 139 6371.00 2.5000 5.0000 5.0000 2.8900 2.8900 1.000 0.0000 0.0000 diff --git a/gen-travel-times-app/models/mogs.mod b/gen-travel-times-app/models/mogs.mod new file mode 100644 index 00000000..86bde1de --- /dev/null +++ b/gen-travel-times-app/models/mogs.mod @@ -0,0 +1,141 @@ + ogs 140 + 1 0.00 13.0122 11.2622 11.2622 3.6678 3.6678 1.000 0.0000 0.0000 + 2 50.71 13.0117 11.2618 11.2618 3.6675 3.6675 1.000 0.0000 0.0000 + 3 101.43 13.0100 11.2606 11.2606 3.6667 3.6667 1.000 0.0000 0.0000 + 4 152.14 13.0074 11.2586 11.2586 3.6653 3.6653 1.000 0.0000 0.0000 + 5 202.85 13.0036 11.2557 11.2557 3.6633 3.6633 1.000 0.0000 0.0000 + 6 253.56 12.9988 11.2521 11.2521 3.6608 3.6608 1.000 0.0000 0.0000 + 7 304.28 12.9929 11.2477 11.2477 3.6577 3.6577 1.000 0.0000 0.0000 + 8 354.99 12.9859 11.2424 11.2424 3.6540 3.6540 1.000 0.0000 0.0000 + 9 405.70 12.9779 11.2364 11.2364 3.6498 3.6498 1.000 0.0000 0.0000 + 10 456.41 12.9688 11.2295 11.2295 3.6450 3.6450 1.000 0.0000 0.0000 + 11 507.13 12.9586 11.2219 11.2219 3.6396 3.6396 1.000 0.0000 0.0000 + 12 557.84 12.9474 11.2134 11.2134 3.6337 3.6337 1.000 0.0000 0.0000 + 13 659.26 12.9217 11.1941 11.1941 3.6202 3.6202 1.000 0.0000 0.0000 + 14 709.98 12.9072 11.1832 11.1832 3.6126 3.6126 1.000 0.0000 0.0000 + 15 760.69 12.8917 11.1715 11.1715 3.6044 3.6044 1.000 0.0000 0.0000 + 16 811.40 12.8751 11.1590 11.1590 3.5957 3.5957 1.000 0.0000 0.0000 + 17 862.11 12.8574 11.1457 11.1457 3.5864 3.5864 1.000 0.0000 0.0000 + 18 912.83 12.8387 11.1316 11.1316 3.5765 3.5765 1.000 0.0000 0.0000 + 19 963.54 12.8188 11.1166 11.1166 3.5661 3.5661 1.000 0.0000 0.0000 + 20 1014.25 12.7980 11.0983 11.0983 3.5551 3.5551 1.000 0.0000 0.0000 + 21 1064.96 12.7760 11.0850 11.0850 3.5435 3.5435 1.000 0.0000 0.0000 + 22 1115.68 12.7530 11.0718 11.0718 3.5314 3.5314 1.000 0.0000 0.0000 + 23 1166.39 12.7289 11.0585 11.0585 3.5187 3.5187 1.000 0.0000 0.0000 + 24 1217.50 12.7037 11.0427 11.0427 3.5043 3.5043 1.000 0.0000 0.0000 + 25 1217.50 12.1391 10.2890 10.2890 0.0000 0.0000 1.000 0.0000 0.0000 + 26 1267.43 12.1133 10.2854 10.2854 0.0000 0.0000 1.000 0.0000 0.0000 + 27 1317.76 12.0867 10.2745 10.2745 0.0000 0.0000 1.000 0.0000 0.0000 + 28 1368.09 12.0593 10.2565 10.2565 0.0000 0.0000 1.000 0.0000 0.0000 + 29 1418.42 12.0311 10.2329 10.2329 0.0000 0.0000 1.000 0.0000 0.0000 + 30 1468.76 12.0001 10.2049 10.2049 0.0000 0.0000 1.000 0.0000 0.0000 + 31 1519.09 11.9722 10.1739 10.1739 0.0000 0.0000 1.000 0.0000 0.0000 + 32 1569.42 11.9414 10.1415 10.1415 0.0000 0.0000 1.000 0.0000 0.0000 + 33 1670.08 11.8772 10.0768 10.0768 0.0000 0.0000 1.000 0.0000 0.0000 + 34 1720.41 11.8437 10.0439 10.0439 0.0000 0.0000 1.000 0.0000 0.0000 + 35 1770.74 11.8092 10.0103 10.0103 0.0000 0.0000 1.000 0.0000 0.0000 + 36 1821.07 11.7737 9.9761 9.9761 0.0000 0.0000 1.000 0.0000 0.0000 + 37 1871.40 11.7373 9.9410 9.9410 0.0000 0.0000 1.000 0.0000 0.0000 + 38 1921.74 11.6998 9.9051 9.9051 0.0000 0.0000 1.000 0.0000 0.0000 + 39 1972.07 11.6612 9.8682 9.8682 0.0000 0.0000 1.000 0.0000 0.0000 + 40 2022.40 11.6216 9.8304 9.8304 0.0000 0.0000 1.000 0.0000 0.0000 + 41 2072.73 11.5809 9.7914 9.7914 0.0000 0.0000 1.000 0.0000 0.0000 + 42 2123.06 11.5391 9.7513 9.7513 0.0000 0.0000 1.000 0.0000 0.0000 + 43 2173.39 11.4962 9.7100 9.7100 0.0000 0.0000 1.000 0.0000 0.0000 + 44 2223.72 11.4521 9.6673 9.6673 0.0000 0.0000 1.000 0.0000 0.0000 + 45 2274.05 11.4069 9.6232 9.6232 0.0000 0.0000 1.000 0.0000 0.0000 + 46 2324.38 11.3604 9.5777 9.5777 0.0000 0.0000 1.000 0.0000 0.0000 + 47 2374.72 11.3127 9.5306 9.5306 0.0000 0.0000 1.000 0.0000 0.0000 + 48 2425.05 11.2639 9.4814 9.4814 0.0000 0.0000 1.000 0.0000 0.0000 + 49 2475.38 11.2137 9.4297 9.4297 0.0000 0.0000 1.000 0.0000 0.0000 + 50 2525.71 11.1623 9.3760 9.3760 0.0000 0.0000 1.000 0.0000 0.0000 + 51 2576.04 11.1095 9.3205 9.3205 0.0000 0.0000 1.000 0.0000 0.0000 + 52 2626.37 11.0555 9.2634 9.2634 0.0000 0.0000 1.000 0.0000 0.0000 + 53 2676.70 11.0001 9.2042 9.2042 0.0000 0.0000 1.000 0.0000 0.0000 + 54 2727.03 10.9434 9.1426 9.1426 0.0000 0.0000 1.000 0.0000 0.0000 + 55 2777.36 10.8852 9.0792 9.0792 0.0000 0.0000 1.000 0.0000 0.0000 + 56 2827.70 10.8257 9.0138 9.0138 0.0000 0.0000 1.000 0.0000 0.0000 + 57 2878.03 10.7647 8.9461 8.9461 0.0000 0.0000 1.000 0.0000 0.0000 + 58 2928.36 10.7023 8.8761 8.8761 0.0000 0.0000 1.000 0.0000 0.0000 + 59 2978.69 10.6385 8.8036 8.8036 0.0000 0.0000 1.000 0.0000 0.0000 + 60 3029.02 10.5731 8.7283 8.7283 0.0000 0.0000 1.000 0.0000 0.0000 + 61 3079.35 10.5062 8.6496 8.6496 0.0000 0.0000 1.000 0.0000 0.0000 + 62 3129.68 10.4378 8.5692 8.5692 0.0000 0.0000 1.000 0.0000 0.0000 + 63 3180.01 10.3679 8.4861 8.4861 0.0000 0.0000 1.000 0.0000 0.0000 + 64 3230.34 10.2964 8.4001 8.4001 0.0000 0.0000 1.000 0.0000 0.0000 + 65 3280.68 10.2233 8.3122 8.3122 0.0000 0.0000 1.000 0.0000 0.0000 + 66 3331.01 10.1485 8.2213 8.2213 0.0000 0.0000 1.000 0.0000 0.0000 + 67 3381.34 10.0722 8.1283 8.1283 0.0000 0.0000 1.000 0.0000 0.0000 + 68 3431.67 9.9942 8.0382 8.0382 0.0000 0.0000 1.000 0.0000 0.0000 + 69 3479.50 9.9145 8.0000 8.0000 0.0000 0.0000 1.000 0.0000 0.0000 + 70 3479.50 5.5515 13.6602 13.6602 7.2811 7.2811 1.000 0.0000 0.0000 + 71 3531.67 5.5284 13.6566 13.6566 7.2704 7.2704 1.000 0.0000 0.0000 + 72 3581.33 5.5051 13.6530 13.6530 7.2597 7.2597 1.000 0.0000 0.0000 + 73 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 74 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 75 3681.00 5.4582 13.5900 13.5900 7.2258 7.2258 1.000 0.0000 0.0000 + 76 3731.00 5.4345 13.5312 13.5312 7.2031 7.2031 1.000 0.0000 0.0000 + 77 3779.50 5.4108 13.4741 13.4741 7.1807 7.1807 1.000 0.0000 0.0000 + 78 3829.00 5.3869 13.4156 13.4156 7.1586 7.1586 1.000 0.0000 0.0000 + 79 3878.50 5.3628 13.3585 13.3585 7.1369 7.1369 1.000 0.0000 0.0000 + 80 3928.00 5.3386 13.3018 13.3018 7.1144 7.1144 1.000 0.0000 0.0000 + 81 3977.50 5.3142 13.2465 13.2465 7.0931 7.0931 1.000 0.0000 0.0000 + 82 4027.00 5.2898 13.1894 13.1894 7.0720 7.0720 1.000 0.0000 0.0000 + 83 4076.50 5.2651 13.1336 13.1336 7.0500 7.0500 1.000 0.0000 0.0000 + 84 4126.00 5.2403 13.0783 13.0783 7.0281 7.0281 1.000 0.0000 0.0000 + 85 4175.50 5.2154 13.0222 13.0222 7.0063 7.0063 1.000 0.0000 0.0000 + 86 4225.00 5.1904 12.9668 12.9668 6.9855 6.9855 1.000 0.0000 0.0000 + 87 4274.50 5.1652 12.9096 12.9096 6.9627 6.9627 1.000 0.0000 0.0000 + 88 4324.00 5.1398 12.8526 12.8526 6.9418 6.9418 1.000 0.0000 0.0000 + 89 4373.50 5.1143 12.7956 12.7956 6.9194 6.9194 1.000 0.0000 0.0000 + 90 4423.00 5.0887 12.7382 12.7382 6.8972 6.8972 1.000 0.0000 0.0000 + 91 4472.50 5.0629 12.6804 12.6804 6.8742 6.8742 1.000 0.0000 0.0000 + 92 4522.00 5.0370 12.6221 12.6221 6.8515 6.8515 1.000 0.0000 0.0000 + 93 4571.50 5.0109 12.5631 12.5631 6.8286 6.8286 1.000 0.0000 0.0000 + 94 4621.00 4.9847 12.5031 12.5031 6.8052 6.8052 1.000 0.0000 0.0000 + 95 4670.50 4.9584 12.4426 12.4426 6.7815 6.7815 1.000 0.0000 0.0000 + 96 4720.00 4.9319 12.3819 12.3819 6.7573 6.7573 1.000 0.0000 0.0000 + 97 4769.50 4.9052 12.3185 12.3185 6.7326 6.7326 1.000 0.0000 0.0000 + 98 4819.00 4.8785 12.2550 12.2550 6.7073 6.7073 1.000 0.0000 0.0000 + 99 4868.50 4.8515 12.1912 12.1912 6.6815 6.6815 1.000 0.0000 0.0000 + 100 4918.00 4.8245 12.1245 12.1245 6.6555 6.6555 1.000 0.0000 0.0000 + 101 4967.50 4.7973 12.0577 12.0577 6.6285 6.6285 1.000 0.0000 0.0000 + 102 5017.00 4.7699 11.9895 11.9895 6.6008 6.6008 1.000 0.0000 0.0000 + 103 5066.50 4.7424 11.9200 11.9200 6.5727 6.5727 1.000 0.0000 0.0000 + 104 5116.00 4.7148 11.8491 11.8491 6.5439 6.5439 1.000 0.0000 0.0000 + 105 5165.50 4.6870 11.7766 11.7766 6.5138 6.5138 1.000 0.0000 0.0000 + 106 5215.00 4.6591 11.7026 11.7026 6.4828 6.4828 1.000 0.0000 0.0000 + 107 5264.50 4.6310 11.6269 11.6269 6.4510 6.4510 1.000 0.0000 0.0000 + 108 5314.00 4.6028 11.5495 11.5495 6.4187 6.4187 1.000 0.0000 0.0000 + 109 5363.50 4.5744 11.4705 11.4705 6.3854 6.3854 1.000 0.0000 0.0000 + 110 5413.00 4.5459 11.3896 11.3896 6.3512 6.3512 1.000 0.0000 0.0000 + 111 5462.50 4.5173 11.3068 11.3068 6.3160 6.3160 1.000 0.0000 0.0000 + 112 5512.00 4.4885 11.2221 11.2221 6.2798 6.2798 1.000 0.0000 0.0000 + 113 5561.50 4.4596 11.1353 11.1353 6.2426 6.2426 1.000 0.0000 0.0000 + 114 5611.00 4.4305 11.0558 11.0558 6.2095 6.2095 1.000 0.0000 0.0000 + 115 5661.00 4.4010 10.9229 10.9229 6.0897 6.0897 1.000 0.0000 0.0000 + 116 5711.00 4.3714 10.7900 10.7900 5.9600 5.9600 1.000 0.0000 0.0000 + 117 5711.00 4.0646 10.2000 10.2000 5.6100 5.6100 1.000 0.0000 0.0000 + 118 5761.00 4.0028 10.0320 10.0320 5.5040 5.5040 1.000 0.0000 0.0000 + 119 5811.00 3.9410 9.8640 9.8640 5.3980 5.3980 1.000 0.0000 0.0000 + 120 5861.00 3.8793 9.6960 9.6960 5.2920 5.2920 1.000 0.0000 0.0000 + 121 5911.00 3.8175 9.5280 9.5280 5.1860 5.1860 1.000 0.0000 0.0000 + 122 5961.00 3.7557 9.3600 9.3600 5.0800 5.0800 1.000 0.0000 0.0000 + 123 5961.00 3.5470 9.0300 9.0300 4.8700 4.8700 1.000 0.0000 0.0000 + 124 6011.00 3.5167 8.8475 8.8475 4.7830 4.7830 1.000 0.0000 0.0000 + 125 6061.00 3.4864 8.6650 8.6650 4.6960 4.6960 1.000 0.0000 0.0000 + 126 6111.00 3.4561 8.4825 8.4825 4.6090 4.6090 1.000 0.0000 0.0000 + 127 6161.00 3.4258 8.3000 8.3000 4.5230 4.5230 1.000 0.0000 0.0000 + 128 6161.00 3.4258 8.3000 8.3000 4.5180 4.5180 1.000 0.0000 0.0000 + 129 6206.00 3.3985 8.1750 8.1750 4.5090 4.5090 1.000 0.0000 0.0000 + 130 6329.00 3.2760 7.9000 7.9000 4.6200 4.6200 1.000 0.0000 0.0000 + 131 6329.00 2.8223 6.4100 6.4100 3.7052 3.7052 1.000 0.0000 0.0000 + 132 6350.00 2.8223 6.4100 6.4100 3.7052 3.7052 1.000 0.0000 0.0000 + 133 6350.00 2.8223 6.2700 6.2700 3.6243 3.6243 1.000 0.0000 0.0000 + 134 6363.00 2.8223 6.2700 6.2700 3.6243 3.6243 1.000 0.0000 0.0000 + 135 6363.00 2.7812 6.2700 6.2700 3.6243 3.6243 1.000 0.0000 0.0000 + 136 6369.50 2.7812 5.8000 5.8000 3.3526 3.3526 1.000 0.0000 0.0000 + 137 6369.50 2.6089 4.1500 4.1500 2.3988 2.3988 1.000 0.0000 0.0000 + 138 6370.00 2.6089 4.1500 4.1500 2.3988 2.3988 1.000 0.0000 0.0000 + 139 6370.00 2.2150 2.9500 2.9500 1.7052 1.7052 1.000 0.0000 0.0000 + 140 6371.00 2.2150 2.7000 2.7000 1.5607 1.5607 1.000 0.0000 0.0000 diff --git a/gen-travel-times-app/models/mwus.mod b/gen-travel-times-app/models/mwus.mod new file mode 100644 index 00000000..ddd0d6b7 --- /dev/null +++ b/gen-travel-times-app/models/mwus.mod @@ -0,0 +1,138 @@ + wus 137 + 1 0.00 13.0122 11.2622 11.2622 3.6678 3.6678 1.000 0.0000 0.0000 + 2 50.71 13.0117 11.2618 11.2618 3.6675 3.6675 1.000 0.0000 0.0000 + 3 101.43 13.0100 11.2606 11.2606 3.6667 3.6667 1.000 0.0000 0.0000 + 4 152.14 13.0074 11.2586 11.2586 3.6653 3.6653 1.000 0.0000 0.0000 + 5 202.85 13.0036 11.2557 11.2557 3.6633 3.6633 1.000 0.0000 0.0000 + 6 253.56 12.9988 11.2521 11.2521 3.6608 3.6608 1.000 0.0000 0.0000 + 7 304.28 12.9929 11.2477 11.2477 3.6577 3.6577 1.000 0.0000 0.0000 + 8 354.99 12.9859 11.2424 11.2424 3.6540 3.6540 1.000 0.0000 0.0000 + 9 405.70 12.9779 11.2364 11.2364 3.6498 3.6498 1.000 0.0000 0.0000 + 10 456.41 12.9688 11.2295 11.2295 3.6450 3.6450 1.000 0.0000 0.0000 + 11 507.13 12.9586 11.2219 11.2219 3.6396 3.6396 1.000 0.0000 0.0000 + 12 557.84 12.9474 11.2134 11.2134 3.6337 3.6337 1.000 0.0000 0.0000 + 13 659.26 12.9217 11.1941 11.1941 3.6202 3.6202 1.000 0.0000 0.0000 + 14 709.98 12.9072 11.1832 11.1832 3.6126 3.6126 1.000 0.0000 0.0000 + 15 760.69 12.8917 11.1715 11.1715 3.6044 3.6044 1.000 0.0000 0.0000 + 16 811.40 12.8751 11.1590 11.1590 3.5957 3.5957 1.000 0.0000 0.0000 + 17 862.11 12.8574 11.1457 11.1457 3.5864 3.5864 1.000 0.0000 0.0000 + 18 912.83 12.8387 11.1316 11.1316 3.5765 3.5765 1.000 0.0000 0.0000 + 19 963.54 12.8188 11.1166 11.1166 3.5661 3.5661 1.000 0.0000 0.0000 + 20 1014.25 12.7980 11.0983 11.0983 3.5551 3.5551 1.000 0.0000 0.0000 + 21 1064.96 12.7760 11.0850 11.0850 3.5435 3.5435 1.000 0.0000 0.0000 + 22 1115.68 12.7530 11.0718 11.0718 3.5314 3.5314 1.000 0.0000 0.0000 + 23 1166.39 12.7289 11.0585 11.0585 3.5187 3.5187 1.000 0.0000 0.0000 + 24 1217.50 12.7037 11.0427 11.0427 3.5043 3.5043 1.000 0.0000 0.0000 + 25 1217.50 12.1391 10.2890 10.2890 0.0000 0.0000 1.000 0.0000 0.0000 + 26 1267.43 12.1133 10.2854 10.2854 0.0000 0.0000 1.000 0.0000 0.0000 + 27 1317.76 12.0867 10.2745 10.2745 0.0000 0.0000 1.000 0.0000 0.0000 + 28 1368.09 12.0593 10.2565 10.2565 0.0000 0.0000 1.000 0.0000 0.0000 + 29 1418.42 12.0311 10.2329 10.2329 0.0000 0.0000 1.000 0.0000 0.0000 + 30 1468.76 12.0001 10.2049 10.2049 0.0000 0.0000 1.000 0.0000 0.0000 + 31 1519.09 11.9722 10.1739 10.1739 0.0000 0.0000 1.000 0.0000 0.0000 + 32 1569.42 11.9414 10.1415 10.1415 0.0000 0.0000 1.000 0.0000 0.0000 + 33 1670.08 11.8772 10.0768 10.0768 0.0000 0.0000 1.000 0.0000 0.0000 + 34 1720.41 11.8437 10.0439 10.0439 0.0000 0.0000 1.000 0.0000 0.0000 + 35 1770.74 11.8092 10.0103 10.0103 0.0000 0.0000 1.000 0.0000 0.0000 + 36 1821.07 11.7737 9.9761 9.9761 0.0000 0.0000 1.000 0.0000 0.0000 + 37 1871.40 11.7373 9.9410 9.9410 0.0000 0.0000 1.000 0.0000 0.0000 + 38 1921.74 11.6998 9.9051 9.9051 0.0000 0.0000 1.000 0.0000 0.0000 + 39 1972.07 11.6612 9.8682 9.8682 0.0000 0.0000 1.000 0.0000 0.0000 + 40 2022.40 11.6216 9.8304 9.8304 0.0000 0.0000 1.000 0.0000 0.0000 + 41 2072.73 11.5809 9.7914 9.7914 0.0000 0.0000 1.000 0.0000 0.0000 + 42 2123.06 11.5391 9.7513 9.7513 0.0000 0.0000 1.000 0.0000 0.0000 + 43 2173.39 11.4962 9.7100 9.7100 0.0000 0.0000 1.000 0.0000 0.0000 + 44 2223.72 11.4521 9.6673 9.6673 0.0000 0.0000 1.000 0.0000 0.0000 + 45 2274.05 11.4069 9.6232 9.6232 0.0000 0.0000 1.000 0.0000 0.0000 + 46 2324.38 11.3604 9.5777 9.5777 0.0000 0.0000 1.000 0.0000 0.0000 + 47 2374.72 11.3127 9.5306 9.5306 0.0000 0.0000 1.000 0.0000 0.0000 + 48 2425.05 11.2639 9.4814 9.4814 0.0000 0.0000 1.000 0.0000 0.0000 + 49 2475.38 11.2137 9.4297 9.4297 0.0000 0.0000 1.000 0.0000 0.0000 + 50 2525.71 11.1623 9.3760 9.3760 0.0000 0.0000 1.000 0.0000 0.0000 + 51 2576.04 11.1095 9.3205 9.3205 0.0000 0.0000 1.000 0.0000 0.0000 + 52 2626.37 11.0555 9.2634 9.2634 0.0000 0.0000 1.000 0.0000 0.0000 + 53 2676.70 11.0001 9.2042 9.2042 0.0000 0.0000 1.000 0.0000 0.0000 + 54 2727.03 10.9434 9.1426 9.1426 0.0000 0.0000 1.000 0.0000 0.0000 + 55 2777.36 10.8852 9.0792 9.0792 0.0000 0.0000 1.000 0.0000 0.0000 + 56 2827.70 10.8257 9.0138 9.0138 0.0000 0.0000 1.000 0.0000 0.0000 + 57 2878.03 10.7647 8.9461 8.9461 0.0000 0.0000 1.000 0.0000 0.0000 + 58 2928.36 10.7023 8.8761 8.8761 0.0000 0.0000 1.000 0.0000 0.0000 + 59 2978.69 10.6385 8.8036 8.8036 0.0000 0.0000 1.000 0.0000 0.0000 + 60 3029.02 10.5731 8.7283 8.7283 0.0000 0.0000 1.000 0.0000 0.0000 + 61 3079.35 10.5062 8.6496 8.6496 0.0000 0.0000 1.000 0.0000 0.0000 + 62 3129.68 10.4378 8.5692 8.5692 0.0000 0.0000 1.000 0.0000 0.0000 + 63 3180.01 10.3679 8.4861 8.4861 0.0000 0.0000 1.000 0.0000 0.0000 + 64 3230.34 10.2964 8.4001 8.4001 0.0000 0.0000 1.000 0.0000 0.0000 + 65 3280.68 10.2233 8.3122 8.3122 0.0000 0.0000 1.000 0.0000 0.0000 + 66 3331.01 10.1485 8.2213 8.2213 0.0000 0.0000 1.000 0.0000 0.0000 + 67 3381.34 10.0722 8.1283 8.1283 0.0000 0.0000 1.000 0.0000 0.0000 + 68 3431.67 9.9942 8.0382 8.0382 0.0000 0.0000 1.000 0.0000 0.0000 + 69 3479.50 9.9145 8.0000 8.0000 0.0000 0.0000 1.000 0.0000 0.0000 + 70 3479.50 5.5515 13.6602 13.6602 7.2811 7.2811 1.000 0.0000 0.0000 + 71 3531.67 5.5284 13.6566 13.6566 7.2704 7.2704 1.000 0.0000 0.0000 + 72 3581.33 5.5051 13.6530 13.6530 7.2597 7.2597 1.000 0.0000 0.0000 + 73 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 74 3631.00 5.4817 13.6494 13.6494 7.2490 7.2490 1.000 0.0000 0.0000 + 75 3681.00 5.4582 13.5900 13.5900 7.2258 7.2258 1.000 0.0000 0.0000 + 76 3731.00 5.4345 13.5312 13.5312 7.2031 7.2031 1.000 0.0000 0.0000 + 77 3779.50 5.4108 13.4741 13.4741 7.1807 7.1807 1.000 0.0000 0.0000 + 78 3829.00 5.3869 13.4156 13.4156 7.1586 7.1586 1.000 0.0000 0.0000 + 79 3878.50 5.3628 13.3585 13.3585 7.1369 7.1369 1.000 0.0000 0.0000 + 80 3928.00 5.3386 13.3018 13.3018 7.1144 7.1144 1.000 0.0000 0.0000 + 81 3977.50 5.3142 13.2465 13.2465 7.0931 7.0931 1.000 0.0000 0.0000 + 82 4027.00 5.2898 13.1894 13.1894 7.0720 7.0720 1.000 0.0000 0.0000 + 83 4076.50 5.2651 13.1336 13.1336 7.0500 7.0500 1.000 0.0000 0.0000 + 84 4126.00 5.2403 13.0783 13.0783 7.0281 7.0281 1.000 0.0000 0.0000 + 85 4175.50 5.2154 13.0222 13.0222 7.0063 7.0063 1.000 0.0000 0.0000 + 86 4225.00 5.1904 12.9668 12.9668 6.9855 6.9855 1.000 0.0000 0.0000 + 87 4274.50 5.1652 12.9096 12.9096 6.9627 6.9627 1.000 0.0000 0.0000 + 88 4324.00 5.1398 12.8526 12.8526 6.9418 6.9418 1.000 0.0000 0.0000 + 89 4373.50 5.1143 12.7956 12.7956 6.9194 6.9194 1.000 0.0000 0.0000 + 90 4423.00 5.0887 12.7382 12.7382 6.8972 6.8972 1.000 0.0000 0.0000 + 91 4472.50 5.0629 12.6804 12.6804 6.8742 6.8742 1.000 0.0000 0.0000 + 92 4522.00 5.0370 12.6221 12.6221 6.8515 6.8515 1.000 0.0000 0.0000 + 93 4571.50 5.0109 12.5631 12.5631 6.8286 6.8286 1.000 0.0000 0.0000 + 94 4621.00 4.9847 12.5031 12.5031 6.8052 6.8052 1.000 0.0000 0.0000 + 95 4670.50 4.9584 12.4426 12.4426 6.7815 6.7815 1.000 0.0000 0.0000 + 96 4720.00 4.9319 12.3819 12.3819 6.7573 6.7573 1.000 0.0000 0.0000 + 97 4769.50 4.9052 12.3185 12.3185 6.7326 6.7326 1.000 0.0000 0.0000 + 98 4819.00 4.8785 12.2550 12.2550 6.7073 6.7073 1.000 0.0000 0.0000 + 99 4868.50 4.8515 12.1912 12.1912 6.6815 6.6815 1.000 0.0000 0.0000 + 100 4918.00 4.8245 12.1245 12.1245 6.6555 6.6555 1.000 0.0000 0.0000 + 101 4967.50 4.7973 12.0577 12.0577 6.6285 6.6285 1.000 0.0000 0.0000 + 102 5017.00 4.7699 11.9895 11.9895 6.6008 6.6008 1.000 0.0000 0.0000 + 103 5066.50 4.7424 11.9200 11.9200 6.5727 6.5727 1.000 0.0000 0.0000 + 104 5116.00 4.7148 11.8491 11.8491 6.5439 6.5439 1.000 0.0000 0.0000 + 105 5165.50 4.6870 11.7766 11.7766 6.5138 6.5138 1.000 0.0000 0.0000 + 106 5215.00 4.6591 11.7026 11.7026 6.4828 6.4828 1.000 0.0000 0.0000 + 107 5264.50 4.6310 11.6269 11.6269 6.4510 6.4510 1.000 0.0000 0.0000 + 108 5314.00 4.6028 11.5495 11.5495 6.4187 6.4187 1.000 0.0000 0.0000 + 109 5363.50 4.5744 11.4705 11.4705 6.3854 6.3854 1.000 0.0000 0.0000 + 110 5413.00 4.5459 11.3896 11.3896 6.3512 6.3512 1.000 0.0000 0.0000 + 111 5462.50 4.5173 11.3068 11.3068 6.3160 6.3160 1.000 0.0000 0.0000 + 112 5512.00 4.4885 11.2221 11.2221 6.2798 6.2798 1.000 0.0000 0.0000 + 113 5561.50 4.4596 11.1353 11.1353 6.2426 6.2426 1.000 0.0000 0.0000 + 114 5611.00 4.4305 11.0558 11.0558 6.2095 6.2095 1.000 0.0000 0.0000 + 115 5661.00 4.4010 10.9229 10.9229 6.0897 6.0897 1.000 0.0000 0.0000 + 116 5711.00 4.3714 10.7900 10.7900 5.9600 5.9600 1.000 0.0000 0.0000 + 117 5711.00 4.0646 10.2000 10.2000 5.6100 5.6100 1.000 0.0000 0.0000 + 118 5761.00 4.0028 10.0320 10.0320 5.5040 5.5040 1.000 0.0000 0.0000 + 119 5811.00 3.9410 9.8640 9.8640 5.3980 5.3980 1.000 0.0000 0.0000 + 120 5861.00 3.8793 9.6960 9.6960 5.2920 5.2920 1.000 0.0000 0.0000 + 121 5911.00 3.8175 9.5280 9.5280 5.1860 5.1860 1.000 0.0000 0.0000 + 122 5961.00 3.7557 9.3600 9.3600 5.0800 5.0800 1.000 0.0000 0.0000 + 123 5961.00 3.5470 9.0300 9.0300 4.8700 4.8700 1.000 0.0000 0.0000 + 124 6011.00 3.5167 8.8475 8.8475 4.7830 4.7830 1.000 0.0000 0.0000 + 125 6061.00 3.4864 8.6650 8.6650 4.6960 4.6960 1.000 0.0000 0.0000 + 126 6111.00 3.4561 8.4825 8.4825 4.6090 4.6090 1.000 0.0000 0.0000 + 127 6161.00 3.4258 8.3000 8.3000 4.5230 4.5230 1.000 0.0000 0.0000 + 128 6161.00 3.4258 8.3000 8.3000 4.5180 4.5180 1.000 0.0000 0.0000 + 129 6331.00 3.2760 7.9000 7.9000 4.6200 4.6200 1.000 0.0000 0.0000 + 130 6331.00 2.8223 6.4075 6.4075 3.7680 3.7680 1.000 0.0000 0.0000 + 131 6350.00 2.8223 6.4075 6.4075 3.7680 3.7680 1.000 0.0000 0.0000 + 132 6350.00 2.7812 6.2708 6.2708 3.7396 3.7396 1.000 0.0000 0.0000 + 133 6363.00 2.7812 6.2708 6.2708 3.7396 3.7396 1.000 0.0000 0.0000 + 134 6363.00 2.6089 5.5445 5.5445 3.2953 3.2953 1.000 0.0000 0.0000 + 135 6369.10 2.6089 5.5445 5.5445 3.2953 3.2953 1.000 0.0000 0.0000 + 136 6369.10 2.2150 3.4065 3.4065 2.0089 2.0089 1.000 0.0000 0.0000 + 137 6371.00 2.2150 3.4065 3.4065 2.0089 2.0089 1.000 0.0000 0.0000 diff --git a/gen-travel-times-app/models/phases.txt b/gen-travel-times-app/models/phases.txt new file mode 100644 index 00000000..2e9a281b --- /dev/null +++ b/gen-travel-times-app/models/phases.txt @@ -0,0 +1,24 @@ +P +PKiKP +pP +sP +pPKiKP +sPKiKP +PcP +ScP +SKP +SKiKP +PKKP +SKKP +PP +S +pS +sS +ScS +PcS +PKS +PKKS +SKKS +SS +SP +PS \ No newline at end of file diff --git a/gen-travel-times-app/models/topo.dat b/gen-travel-times-app/models/topo.dat new file mode 100644 index 00000000..bf8fca2c Binary files /dev/null and b/gen-travel-times-app/models/topo.dat differ diff --git a/gen-travel-times-app/models/ttstats.txt b/gen-travel-times-app/models/ttstats.txt new file mode 100644 index 00000000..e7082b3c --- /dev/null +++ b/gen-travel-times-app/models/ttstats.txt @@ -0,0 +1,1536 @@ + Pg 0 11 + 0 -0.08 0.35 0.0 + 1 -0.03 0.34 48172.0 * + 2 -0.11 0.45 14874.0 * + 3 -0.54 1.07 * 3112.0 * + 4 0.08 1.96 2171.0 + 5 0.32 3.20 * 944.0 + 6 0.96 3.20 304.0 * + 7 0.25 2.76 126.0 * + 8 3.12 4.22 99.0 + 9 -0.98 1.62 19.0 + 10 -0.03 5.50 23.0 + Pb 0 9 + 0 -1.33 2.22 0.0 + 1 -0.49 1.05 * 202.0 * + 2 -0.52 1.25 172.0 + 3 -0.48 1.31 104.0 + 4 -1.02 1.82 125.0 + 5 -1.53 2.55 89.0 + 6 -0.30 2.68 * 63.0 + 7 -0.75 1.69 32.0 * + 8 -0.75 3.00 5.0 + Pn 0 22 + 0 0.06 0.69 0.0 + 1 0.09 0.65 17623.0 * + 2 0.31 0.93 23485.0 * + 3 0.32 1.07 12012.0 + 4 0.10 1.12 7270.0 * + 5 0.00 1.12 4012.0 + 6 -0.05 1.22 * 2841.0 * + 7 -0.17 1.17 2132.0 + 8 -0.22 1.11 1660.0 + 9 -0.21 1.03 1305.0 + 10 -0.03 0.99 * 1119.0 + 11 0.01 1.43 1253.0 + 12 0.16 1.37 768.0 + 13 0.03 1.40 417.0 * + 14 0.27 1.74 463.0 + 15 0.51 1.78 * 471.0 + 16 0.23 1.49 300.0 + 17 0.10 1.56 214.0 + 18 -0.23 1.07 168.0 * + 19 1.16 1.25 49.0 + 20 0.57 0.77 54.0 + 21 0.15 0.95 24.0 + P 14 100 + 18 0.29 1.67 7564.0 + 19 0.28 1.60 7760.2 + 20 0.24 1.57 8302.3 + 21 0.17 1.52 9111.1 + 22 0.09 1.46 9862.2 + 23 -0.01 1.41 10296.4 + 24 -0.07 1.36 10335.6 * + 25 -0.08 1.31 10068.2 + 26 -0.04 1.26 * 9660.1 + 27 0.01 1.22 9254.6 * + 28 0.03 1.21 8918.7 + 29 0.02 1.22 8697.0 * + 30 0.09 1.20 8529.9 + 31 0.09 1.19 8858.9 + 32 0.10 1.18 9094.3 * + 33 0.10 1.16 9266.8 + 34 0.10 1.15 9400.4 + 35 0.11 1.14 9512.8 + 36 0.11 1.13 9617.2 + 37 0.11 1.11 9722.0 + 38 0.11 1.10 9832.7 + 39 0.10 1.09 9951.5 + 40 0.10 1.07 10078.7 + 41 0.10 1.06 10213.0 + 42 0.09 1.05 10351.7 + 43 0.09 1.04 10491.6 + 44 0.08 1.03 10629.0 + 45 0.07 1.02 10760.1 + 46 0.06 1.01 10881.3 + 47 0.05 1.01 10989.4 + 48 0.04 1.00 11081.9 + 49 0.03 0.99 11157.0 * + 50 0.02 0.99 11213.4 + 51 0.00 0.98 * 11251.0 + 52 -0.01 0.97 11270.4 + 53 -0.02 0.97 11273.0 + 54 -0.04 0.96 11261.2 + 55 -0.05 0.96 11237.9 + 56 -0.06 0.96 11206.9 + 57 -0.07 0.95 11172.4 + 58 -0.08 0.95 11139.1 + 59 -0.09 0.95 11112.0 + 60 -0.10 0.94 11096.2 + 61 -0.11 0.94 11096.8 + 62 -0.11 0.94 11118.8 * + 63 -0.12 0.94 11167.0 + 64 -0.12 0.93 11245.3 + 65 -0.12 0.93 11357.5 + 66 -0.11 0.93 11506.1 + 67 -0.11 0.92 11693.0 + 68 -0.10 0.92 11919.0 * + 69 -0.10 0.92 12183.6 + 70 -0.09 0.92 12485.0 + 71 -0.08 0.91 12820.3 + 72 -0.07 0.91 13184.7 + 73 -0.06 0.91 13572.6 + 74 -0.05 0.91 13976.3 + 75 -0.04 0.91 14387.3 + 76 -0.04 0.90 14795.2 + 77 -0.03 0.90 15188.8 + 78 -0.03 0.91 15555.5 + 79 -0.02 0.91 15882.0 + 80 -0.02 0.91 16154.2 * + 81 -0.02 0.92 16357.6 + 82 -0.03 0.92 16477.6 + 83 -0.03 0.93 * 16500.1 * + 84 -0.04 0.94 16411.6 + 85 -0.04 0.96 16199.9 + 86 -0.05 0.98 15854.7 + 87 -0.05 1.00 15367.9 * + 88 -0.05 1.02 14734.9 + 89 -0.04 1.05 13954.9 + 90 -0.02 1.09 13031.8 + 91 0.01 1.13 11975.4 + 92 0.00 1.15 11122.4 + 93 -0.01 1.19 10311.5 + 94 -0.03 1.22 9467.1 + 95 -0.05 1.25 8746.5 + 96 -0.03 1.29 7580.9 + 97 -0.01 1.33 6460.8 + 98 -0.01 1.33 * 6419.7 + 99 0.00 1.47 5350.0 + 100 0.25 1.60 4550.4 + Pdif 99 132 + 100 0.25 1.60 4550.4 + 101 0.37 1.67 4257.7 + 102 0.50 1.74 3820.6 + 103 0.62 1.83 3330.8 + 104 0.72 1.92 2847.7 + 105 0.80 2.02 2405.8 * + 106 0.88 2.14 * 2021.7 + 107 0.96 2.27 1699.5 + 108 1.07 2.41 1435.4 + 109 1.21 2.56 1221.2 + 110 1.39 2.72 1046.8 * + 111 1.59 2.89 902.2 + 112 1.81 3.05 779.0 + 113 2.03 3.20 670.9 + 114 2.25 3.34 573.8 + 115 2.44 3.45 * 486.0 + 116 2.60 3.53 407.3 + 117 2.71 3.58 338.8 + 118 2.78 3.61 281.8 * + 119 2.81 3.61 237.5 + 120 2.81 3.60 205.8 + 121 2.80 3.59 185.4 + 122 2.79 3.59 173.2 + 123 2.83 3.61 164.7 + 124 2.92 3.66 * 154.7 + 125 3.07 3.76 138.3 + 126 3.30 3.91 113.2 + 127 3.56 4.09 81.6 + 128 3.78 4.28 54.7 * + 129 3.84 4.42 56.2 + 132 4.20 4.90 0.0 + PKiKP 54 116 + 55 0.34 5.00 0.0 + 105 0.34 3.20 * 205.3 + 106 0.41 2.80 118.4 * + 107 0.48 2.60 142.4 + 108 0.55 2.38 272.8 + 109 0.59 2.14 * 526.6 + 110 0.61 1.95 899.7 * + 111 0.59 1.84 1352.5 + 112 0.54 1.78 1817.8 + 113 0.48 1.71 2220.9 * + 114 0.43 1.60 2504.6 + 115 0.38 1.47 2651.1 + PKPdf 115 180 + 115 0.38 1.47 2651.1 + 116 0.35 1.37 2691.8 + 117 0.23 1.22 2003.2 + 118 0.20 1.11 * 2865.5 + 119 0.18 1.05 3491.5 + 120 0.16 1.01 3926.9 + 121 0.15 1.00 * 4211.4 + 122 0.15 1.01 4378.7 * + 123 0.15 1.02 4457.6 + 124 0.16 1.05 4471.9 + 125 0.17 1.08 4441.6 + 126 0.19 1.11 4382.8 + 127 0.21 1.14 4308.2 + 128 0.23 1.17 4227.9 + 129 0.25 1.19 4149.4 + 130 0.28 1.22 4078.0 + 131 0.30 1.24 4017.2 + 132 0.32 1.25 * 3968.9 + 133 0.34 1.26 3933.8 * + 134 0.35 1.26 3911.5 + 135 0.36 1.26 3900.9 + 136 0.37 1.26 3900.2 + 137 0.38 1.26 3907.1 + 138 0.38 1.25 3919.1 + 139 0.37 1.24 3933.5 + 140 0.36 1.23 3947.7 + 141 0.35 1.22 3958.9 + 142 0.33 1.21 3964.8 + 143 0.31 1.20 3963.1 + 144 0.29 1.20 3951.8 * + 145 0.26 1.19 * 3929.2 + 146 0.24 1.19 3894.2 + 147 0.21 1.18 3845.7 + 148 0.18 1.19 3783.2 + 149 0.15 1.19 3706.5 + 150 0.12 1.19 3615.9 + 151 0.09 1.20 3511.8 * + 152 0.07 1.21 3395.0 + 153 0.04 1.22 3266.7 + 154 0.03 1.23 3128.2 + 155 0.01 1.25 2981.0 + 156 0.00 1.26 2826.9 + 157 0.00 1.27 2667.6 + 158 0.00 1.29 2504.9 + 159 0.00 1.30 2340.8 + 160 0.02 1.31 2176.9 + 161 0.03 1.32 2015.1 + 162 0.05 1.33 1856.9 + 163 0.08 1.34 1703.7 + 164 0.11 1.35 1556.7 + 165 0.14 1.35 1416.8 + 166 0.18 1.35 1284.7 + 167 0.21 1.35 1160.7 * + 168 0.25 1.35 1044.9 + 169 0.28 1.34 937.2 + 170 0.31 1.34 836.9 + 171 0.34 1.33 743.3 + 172 0.35 1.33 655.3 + 173 0.36 1.32 571.8 + 174 0.35 1.32 491.4 + 175 0.33 1.33 412.7 + 176 0.29 1.34 334.2 + 177 0.23 1.35 254.9 + 178 0.14 1.38 * 173.5 * + 179 0.03 1.42 89.7 + 180 -0.10 1.47 3.3 + PKPab 144 179 + 155 0.54 1.19 817.7 + 156 0.49 1.23 831.4 + 157 0.47 1.22 852.7 + 158 0.47 1.21 864.8 * + 159 0.47 1.21 859.2 + 160 0.48 1.22 833.4 + 161 0.48 1.24 788.7 * + 162 0.48 1.27 728.7 + 163 0.46 1.29 657.6 + 164 0.43 1.31 580.2 + 165 0.39 1.32 500.7 + 166 0.35 1.33 422.6 + 167 0.31 1.33 348.7 + 168 0.28 1.33 281.2 + 169 0.26 1.34 221.6 * + 170 0.26 1.36 170.8 + 171 0.28 1.39 129.8 + 172 0.32 1.42 98.8 + 173 0.38 1.45 77.7 + 174 0.45 1.48 65.7 + 175 0.54 1.49 60.5 + 176 0.64 1.50 57.3 + 177 0.77 1.51 47.7 + 178 0.92 1.58 18.0 + PKPbc 144 156 + 145 0.00 1.00 4000.0 + 150 0.33 1.00 * 3435.7 * + 151 0.33 1.00 3435.7 + 152 0.62 1.20 1510.3 * + 153 0.67 1.61 1365.6 + 154 0.67 1.77 * 1238.9 + 155 0.70 2.17 1108.1 + 156 0.62 2.71 872.1 + PKPdif 155 164 + 156 0.62 2.71 872.1 + 157 0.36 3.26 * 571.9 * + 158 -0.04 3.79 341.6 + 159 -0.46 4.23 * 252.6 + 160 -0.78 4.48 221.0 + 161 -1.01 4.55 143.2 * + 164 -2.00 5.00 0.1 + PKPpre 122 144 + 122 -7.68 3.61 8.8 + 123 -7.61 3.63 9.4 + 124 -7.59 3.61 17.2 + 125 -7.66 * 3.58 25.7 + 126 -7.86 3.58 32.5 + 127 -8.17 3.60 38.0 + 128 -8.58 3.63 43.7 + 129 -9.06 3.67 51.6 + 130 -9.56 3.68 63.3 * + 131 -10.02 * 3.66 79.6 + 132 -10.41 3.60 * 100.4 + 133 -10.67 3.48 124.9 + 134 -10.77 * 3.32 151.0 + 135 -10.68 3.10 176.3 + 136 -10.39 * 2.85 198.1 + 137 -9.91 2.57 213.7 * + 138 -9.26 * 2.29 220.9 + 139 -8.48 2.01 218.0 + 140 -7.63 1.76 * 204.8 + 141 -6.76 1.55 181.9 + 142 -5.95 1.39 151.5 + 143 -5.27 1.29 116.7 + pP 14 100 + 15 0.15 4.10 200.0 + 29 0.15 2.52 608.4 * + 30 0.15 2.37 577.9 + 31 0.15 2.26 562.7 + 32 0.16 2.18 * 559.4 + 33 0.16 2.12 565.0 + 34 0.17 2.08 576.9 + 35 0.18 2.06 593.2 + 36 0.18 2.04 612.0 + 37 0.19 2.02 632.1 + 38 0.20 2.01 652.3 + 39 0.20 2.00 671.9 + 40 0.20 1.99 690.3 + 41 0.20 1.98 707.1 + 42 0.20 1.96 722.0 + 43 0.20 1.95 735.0 + 44 0.19 1.93 746.2 + 45 0.18 1.91 755.6 + 46 0.17 1.89 763.5 + 47 0.16 1.88 770.1 + 48 0.15 1.86 775.8 + 49 0.13 1.84 780.9 + 50 0.12 1.83 785.7 + 51 0.10 1.81 790.6 + 52 0.08 1.80 796.0 + 53 0.07 1.79 802.1 + 54 0.05 1.78 809.2 + 55 0.03 1.77 817.7 + 56 0.02 1.76 827.7 + 57 0.00 1.76 839.6 + 58 -0.01 1.75 853.3 + 59 -0.02 1.75 869.0 + 60 -0.03 1.74 886.9 * + 61 -0.04 1.74 906.9 + 62 -0.04 1.74 929.0 + 63 -0.04 1.73 953.1 + 64 -0.04 1.73 979.1 + 65 -0.04 1.72 1007.0 + 66 -0.03 1.71 1036.4 + 67 -0.03 1.70 1067.2 + 68 -0.02 1.69 1099.0 + 69 -0.01 1.68 1131.7 + 70 0.00 1.67 1164.9 + 71 0.01 1.65 1198.1 + 72 0.02 1.64 1231.1 + 73 0.03 1.62 1263.3 + 74 0.04 1.61 1294.4 + 75 0.05 1.59 1324.0 + 76 0.06 1.58 1351.4 + 77 0.06 1.58 1376.2 + 78 0.06 1.57 * 1397.8 + 79 0.06 1.57 1415.7 + 80 0.06 1.58 1429.3 + 81 0.05 1.59 1437.8 * + 82 0.04 1.61 1440.6 + 83 0.03 1.63 1437.0 + 84 0.02 1.65 1426.1 + 85 0.00 1.68 1407.1 + 86 -0.01 1.71 1379.1 + 87 -0.02 1.74 1340.9 + 88 -0.02 1.76 1291.5 * + 89 -0.01 1.78 * 1229.6 + 90 0.01 1.77 1153.7 + 91 0.04 1.75 * 1062.4 + 92 0.04 1.80 900.0 + 100 -0.78 3.68 134.6 + pPdif 99 132 + 100 -0.78 3.68 134.6 + 101 -1.17 3.91 99.2 + 102 -1.40 4.27 53.9 + 103 -1.60 4.55 24.9 * + 104 -1.89 4.73 21.2 + 105 -2.32 4.93 30.6 + 106 -2.86 5.23 35.5 + 107 -3.45 5.60 * 30.7 + 108 -4.07 5.82 28.8 + 109 -4.66 5.89 36.7 * + 132 -4.66 7.50 0.0 + sP 14 100 + 29 0.48 3.29 323.6 + 30 0.46 3.11 329.8 + 31 0.46 2.96 334.9 + 32 0.48 2.85 * 339.3 + 33 0.50 2.76 343.3 + 34 0.52 2.70 347.1 + 35 0.55 2.66 * 350.8 + 36 0.57 2.63 354.5 + 37 0.59 2.62 358.1 + 38 0.61 2.62 361.6 + 39 0.62 2.63 364.9 + 40 0.63 2.65 367.9 + 41 0.63 2.67 370.5 + 42 0.63 2.69 372.7 * + 43 0.62 2.71 374.4 + 44 0.61 2.73 375.4 + 45 0.60 2.76 375.8 + 46 0.58 2.78 375.6 + 47 0.56 2.79 374.7 + 48 0.54 2.81 373.1 + 49 0.52 2.82 371.0 + 50 0.49 2.83 * 368.5 + 51 0.47 2.83 365.5 + 52 0.44 2.82 362.2 + 53 0.42 2.82 358.8 + 54 0.39 2.81 355.4 + 55 0.37 2.79 352.2 + 56 0.35 2.78 349.3 + 57 0.32 2.76 346.9 + 58 0.30 2.73 345.2 + 59 0.28 2.71 344.2 + 60 0.26 2.69 344.3 + 61 0.24 2.66 345.3 + 62 0.23 2.64 347.6 * + 63 0.21 2.61 351.0 + 64 0.20 2.59 355.8 + 65 0.19 2.57 361.9 + 66 0.17 2.55 369.2 + 67 0.17 2.54 377.7 + 68 0.16 2.53 387.4 + 69 0.16 2.52 398.0 + 70 0.16 2.52 409.4 + 71 0.16 2.53 421.3 + 72 0.17 2.54 * 433.6 + 73 0.18 2.56 445.8 + 74 0.19 2.58 457.7 + 75 0.22 2.61 469.0 + 76 0.24 2.65 479.2 + 77 0.27 2.69 487.9 + 78 0.31 2.73 494.9 + 79 0.35 2.78 499.7 + 80 0.40 2.83 501.9 * + 81 0.44 2.89 501.3 + 82 0.49 2.95 497.6 + 83 0.54 3.01 490.6 + 84 0.59 3.06 480.2 + 85 0.62 3.12 466.5 + 86 0.65 3.16 449.5 + 87 0.65 3.20 429.7 + 88 0.63 3.24 407.5 + 89 0.58 3.25 383.7 + 90 0.49 3.26 359.2 + 91 0.34 3.24 335.4 + pwP 23 100 + 29 4.67 2.19 133.1 + 30 4.67 2.23 165.9 + 31 4.67 2.25 184.9 * + 32 4.67 2.26 194.2 + 33 4.67 2.26 * 197.0 + 34 4.67 2.25 195.8 + 35 4.67 2.24 192.7 + 36 4.67 2.23 189.2 + 37 4.67 2.21 186.2 + 38 4.67 2.20 184.5 + 39 4.67 2.19 184.4 + 40 4.67 2.17 186.2 * + 41 4.67 2.16 189.9 + 42 4.67 2.15 195.1 + 43 4.67 2.14 201.8 + 44 4.67 2.13 209.5 + 45 4.67 2.13 218.0 + 46 4.67 2.12 226.8 + 47 4.67 2.11 235.6 + 48 4.67 2.10 244.0 + 49 4.67 2.09 251.8 + 50 4.67 2.08 258.7 + 51 4.67 2.07 264.7 * + 52 4.67 2.05 269.5 + 53 4.67 2.04 273.2 + 54 4.67 2.02 275.7 + 55 4.67 2.00 277.3 + 56 4.67 1.98 278.0 + 57 4.67 1.95 278.0 + 58 4.67 1.93 277.6 + 59 4.67 1.90 277.1 + 60 4.67 1.88 276.7 + 61 4.67 1.85 276.8 + 62 4.67 1.83 277.7 + 63 4.67 1.80 279.7 + 64 4.67 1.78 283.0 + 65 4.67 1.76 287.9 * + 66 4.67 1.74 294.5 + 67 4.67 1.72 303.0 + 68 4.67 1.71 313.4 + 69 4.67 1.70 325.8 + 70 4.67 1.69 340.0 + 71 4.67 1.69 355.8 + 72 4.67 1.69 * 373.1 + 73 4.67 1.69 391.3 + 74 4.67 1.70 410.2 + 75 4.67 1.71 429.2 + 76 4.67 1.72 447.8 + 77 4.67 1.73 465.3 + 78 4.67 1.75 481.1 + 79 4.67 1.77 494.4 + 80 4.67 1.79 504.7 + 81 4.67 1.81 511.4 * + 82 4.67 1.83 513.8 + 83 4.67 1.85 511.6 + 84 4.67 1.86 504.4 + 85 4.67 1.88 492.3 + 86 4.67 1.90 475.4 + 87 4.67 1.92 454.2 + 88 4.67 1.93 429.6 + 89 4.67 1.95 403.0 + 90 4.67 1.97 376.4 + 91 4.67 1.99 352.3 + pPKiKP 104 116 + 105 0.02 1.62 70.1 + 106 -0.55 2.27 53.0 + 107 -0.61 2.35 51.5 * + 108 -0.60 2.44 52.6 + 109 -0.65 2.64 55.0 + 110 -0.73 2.87 60.0 + 111 -0.80 3.03 * 67.2 + 112 -0.83 3.07 74.4 + 113 -0.82 3.00 78.2 * + 114 -0.74 2.86 77.2 + 115 -0.61 2.68 72.8 + pPKPdf 115 180 + 115 -0.61 2.68 72.8 + 116 -0.42 2.49 68.7 + 117 -0.53 2.55 42.8 + 118 -0.42 2.47 93.3 + 119 -0.32 2.40 133.9 + 120 -0.25 2.35 165.8 + 121 -0.18 2.31 190.0 + 122 -0.13 2.29 207.3 + 123 -0.09 2.28 * 218.8 + 124 -0.05 2.28 225.1 * + 125 -0.03 2.29 227.0 + 126 0.00 2.31 225.3 + 127 0.01 2.33 220.6 + 128 0.03 2.36 213.4 + 129 0.04 2.40 204.2 + 130 0.05 2.43 193.7 + 131 0.06 2.48 182.1 + 132 0.07 2.52 169.9 + 133 0.07 2.56 157.5 + 134 0.08 2.61 145.0 + 135 0.09 2.65 132.8 + 136 0.10 2.69 121.1 + 137 0.11 2.73 110.1 + 138 0.12 2.77 99.8 + 139 0.14 2.80 90.6 + 140 0.15 2.84 82.3 + 141 0.17 2.86 75.1 + 142 0.18 2.88 69.0 + 143 0.20 2.90 64.0 * + 144 0.21 2.91 60.1 + 145 0.23 2.92 57.2 + 146 0.25 2.92 55.4 + 147 0.27 2.92 * 54.4 + 148 0.28 2.91 54.4 + 149 0.30 2.90 55.1 + 150 0.31 2.88 56.4 + 151 0.33 2.85 58.2 + 152 0.34 2.82 60.5 + 153 0.35 2.79 63.1 + 154 0.36 2.75 65.8 + 155 0.36 2.71 68.5 + 156 0.36 2.66 71.2 + 157 0.36 2.61 73.6 + 158 0.36 2.55 75.7 + 159 0.36 2.50 77.4 + 160 0.35 2.44 78.6 + 161 0.34 2.38 79.2 + 162 0.32 2.32 79.1 + 163 0.31 2.27 78.2 * + 164 0.29 2.21 76.6 + 165 0.27 2.15 74.3 + 166 0.25 2.10 71.1 + 167 0.22 2.05 67.3 + 168 0.20 2.01 62.8 + 169 0.18 1.98 57.7 + 170 0.16 1.95 52.2 + 171 0.14 1.93 * 46.3 + 172 0.13 1.92 40.3 + 173 0.11 1.92 34.5 + 174 0.11 1.94 29.0 + 175 0.11 1.97 24.2 + 176 0.13 2.01 20.4 + 177 0.15 2.07 18.0 + 178 0.19 2.15 17.5 + pPKPab 144 179 + 155 -0.44 1.88 72.3 + 156 -0.36 1.73 * 73.7 + 157 -0.32 1.90 74.6 + 158 -0.29 2.12 75.1 * + 159 -0.28 2.30 74.8 + 160 -0.28 2.38 * 73.4 + 161 -0.29 2.39 70.6 + 162 -0.29 2.36 66.3 + 163 -0.29 2.32 60.8 + 164 -0.30 2.29 54.3 + 165 -0.30 2.28 47.4 + 166 -0.29 2.28 40.6 + 167 -0.29 2.27 34.4 + 168 -0.29 2.24 * 29.3 + 169 -0.29 2.18 25.3 * + 170 -0.29 2.09 22.5 + 171 -0.31 1.98 20.6 + 172 -0.35 1.88 19.2 + 173 -0.40 1.79 18.0 + 174 -0.48 1.73 16.7 + 175 -0.59 1.64 15.8 + 176 -0.74 1.38 16.7 + pPKPbc 144 156 + 145 0.89 3.00 20.0 + 154 0.89 2.94 23.7 + 155 0.02 2.48 29.4 + 156 -0.03 2.43 32.4 + pPKPdif 155 164 + 156 -0.03 2.43 32.4 + 157 -0.36 2.25 35.4 + 158 -0.53 2.02 35.3 + 159 -0.32 1.90 32.1 + 160 -0.12 1.82 29.2 * + 161 -0.22 1.66 27.8 + 164 -0.22 1.20 0.0 + Sg 0 14 + 0 -0.31 0.74 0.0 + 1 0.02 0.92 1522.0 * + 2 0.11 0.92 1187.0 + 3 0.09 1.04 436.0 * + 4 0.19 1.32 406.0 + 5 0.07 1.58 * 454.0 + 6 -0.52 2.65 299.0 + 7 0.68 3.40 528.0 * + 8 0.80 3.78 360.0 + 9 1.02 4.08 * 221.0 + 10 2.45 3.93 178.0 + 11 2.90 3.34 105.0 + 12 2.80 3.08 47.0 + 13 3.45 3.38 34.0 + Sb 0 11 + 1 -0.18 1.91 11.0 + 2 -0.25 0.37 * 12.0 + 3 -0.35 0.66 24.0 + 7 0.00 0.84 * 13.0 + 8 -0.25 1.10 14.0 + 9 -0.85 2.13 10.0 + 10 -0.20 1.91 11.0 + Sn 0 25 + 0 -0.08 0.83 0.0 + 1 -0.01 0.84 1733.0 * + 2 0.33 1.20 2199.0 * + 3 0.78 2.04 1166.0 + 4 1.00 2.38 * 886.0 * + 5 1.38 2.67 432.0 + 6 1.05 2.64 268.0 * + 7 1.21 2.39 175.0 + 8 0.80 2.01 * 152.0 + 9 1.23 2.61 124.0 + 10 1.13 1.87 79.0 + 11 1.52 1.84 74.0 + 12 1.33 2.28 55.0 * + 13 1.42 2.75 17.0 + 14 3.35 2.84 24.0 + 15 3.10 2.50 15.0 + 18 2.35 2.64 12.0 + 19 0.15 1.18 10.0 + 24 3.00 2.50 8.0 + S 14 100 + 18 -0.18 2.42 2073.4 + 19 -1.14 3.42 1730.9 + 20 -1.10 3.28 1725.4 + 21 -1.15 3.16 1810.2 + 22 -1.16 3.06 1869.0 + 23 -0.99 2.89 1875.4 + 24 -0.78 2.78 1853.6 + 25 -0.73 2.88 * 1838.4 + 26 -0.79 3.09 1835.0 + 27 -0.79 3.19 1779.8 + 28 -0.87 3.52 * 1305.1 + 29 -0.86 3.51 1343.9 + 30 -0.85 3.49 1379.5 * + 31 -0.86 3.46 1413.5 + 32 -0.86 3.43 1446.8 + 33 -0.86 3.41 1479.9 + 34 -0.85 3.38 1513.1 + 35 -0.84 3.36 1546.3 + 36 -0.82 3.34 1579.3 + 37 -0.80 3.33 1611.8 + 38 -0.77 3.31 1643.2 + 39 -0.74 3.30 1673.2 + 40 -0.71 3.30 1701.2 + 41 -0.68 3.29 1727.0 + 42 -0.65 3.28 1750.0 + 43 -0.62 3.27 1770.1 + 44 -0.60 3.26 1787.1 + 45 -0.59 3.25 1800.9 * + 46 -0.58 3.24 1811.5 + 47 -0.57 3.22 1819.1 + 48 -0.57 3.20 1823.9 + 49 -0.58 3.17 1826.3 + 50 -0.59 3.15 1826.6 + 51 -0.60 3.12 1825.4 + 52 -0.61 3.09 1823.1 + 53 -0.63 3.07 1820.4 + 54 -0.64 3.04 1817.7 + 55 -0.65 3.02 1815.8 + 56 -0.65 3.00 1815.0 + 57 -0.65 2.98 1816.0 + 58 -0.64 2.96 1819.3 + 59 -0.63 2.95 1825.1 * + 60 -0.61 2.95 * 1833.8 + 61 -0.59 2.95 1845.7 + 62 -0.56 2.95 1860.7 + 63 -0.52 2.96 1879.0 + 64 -0.49 2.97 1900.3 + 65 -0.45 2.99 1924.4 + 66 -0.41 3.01 1951.0 + 67 -0.37 3.03 1979.6 + 68 -0.34 3.06 2009.7 + 69 -0.32 3.08 2040.6 + 70 -0.30 3.10 2071.7 + 71 -0.29 3.12 2102.5 + 72 -0.30 3.13 2132.3 + 73 -0.32 3.14 2160.5 + 74 -0.34 3.15 2187.0 + 75 -0.37 3.15 2211.5 + 76 -0.40 3.15 2234.2 + 77 -0.42 3.15 2255.7 + 78 -0.42 3.16 2277.0 + 79 -0.39 3.17 * 2299.7 * + 80 -0.31 3.20 2326.1 + 100 -0.66 4.42 215.4 + Sdif 99 132 + 100 -0.66 4.42 215.4 + 101 -0.59 4.28 204.2 + 102 -0.41 4.37 181.1 + 103 -0.25 4.60 152.6 + 104 -0.14 4.87 123.5 + 105 -0.09 5.11 96.8 + 106 -0.06 5.23 * 74.5 + 107 -0.02 5.22 57.2 + 108 0.05 5.07 44.9 * + 109 0.17 4.81 37.2 + 110 0.34 4.49 33.0 + 111 0.55 4.16 31.3 + 112 0.78 3.90 31.0 + 113 1.01 3.77 * 31.0 + 114 1.22 3.82 30.5 + 115 1.39 4.09 29.1 + 116 1.51 4.57 26.5 + 117 1.59 5.24 23.0 + 118 1.66 6.04 18.9 + 119 1.75 6.88 14.9 + 120 1.90 7.64 11.8 + 121 2.14 8.21 10.5 + 122 2.49 8.47 * 11.4 + 123 2.90 8.34 14.7 + 124 3.26 7.81 19.7 + 125 3.34 7.00 24.7 + 126 2.73 6.17 26.5 * + 127 0.81 5.80 19.9 + 132 0.81 4.00 1.0 + PcP 14 100 + 25 0.88 1.93 189.2 + 26 0.76 1.97 197.5 + 27 0.68 1.91 211.1 + 28 0.65 1.80 228.1 + 29 0.63 1.67 247.0 + 30 0.63 1.54 266.4 + 31 0.63 1.43 285.4 + 32 0.64 1.35 303.1 + 33 0.64 1.30 * 319.1 + 34 0.64 1.27 332.9 + 35 0.64 1.27 344.3 * + 36 0.64 1.30 353.2 + 37 0.63 1.34 359.7 + 38 0.62 1.39 363.9 + 39 0.61 1.45 366.0 + 40 0.60 1.51 366.2 + 41 0.59 1.56 364.8 + 42 0.58 1.61 362.2 + 43 0.57 1.64 358.5 + 44 0.56 1.67 354.3 + 45 0.55 1.69 349.7 + 46 0.54 1.70 345.0 + 47 0.54 1.70 340.5 + 48 0.53 1.70 336.5 + 49 0.52 1.70 333.0 + 50 0.51 1.71 330.1 + 51 0.50 1.72 328.1 + 52 0.48 1.75 326.9 + 53 0.45 1.79 326.4 + 54 0.43 1.85 326.7 + 55 0.39 1.94 327.7 + 56 0.36 2.04 * 329.1 + 57 0.31 2.17 331.0 + 58 0.26 2.32 333.0 + 59 0.21 2.49 335.1 + 60 0.15 2.68 337.0 + 61 0.09 2.88 338.6 + 62 0.03 3.10 339.7 + 63 -0.03 3.32 340.3 + 64 -0.09 3.55 340.4 + 65 -0.15 3.78 340.0 + 66 -0.20 4.01 339.3 + 67 -0.25 4.24 338.5 + 68 -0.30 4.49 338.2 + 69 -0.35 4.75 * 338.9 + 70 -0.40 5.05 341.5 + 99 -0.40 6.00 300.0 + ScS 0 101 + 18 -0.15 3.39 84.1 + 19 0.07 3.25 82.0 + 20 0.18 3.21 * 80.4 + 21 0.23 3.23 79.7 + 22 0.25 3.31 80.1 + 23 0.26 3.41 81.8 + 24 0.26 3.53 84.6 + 25 0.27 3.66 88.4 + 26 0.29 3.79 93.2 + 27 0.31 3.90 98.5 + 28 0.33 4.00 104.2 + 29 0.36 4.08 110.1 + 30 0.37 4.13 116.0 + 31 0.38 4.16 * 121.6 + 32 0.37 4.17 126.8 + 33 0.34 4.16 131.5 + 34 0.30 4.12 135.6 + 35 0.23 4.07 139.0 + 36 0.14 4.00 141.7 + 37 0.04 3.92 143.9 * + 38 -0.08 3.83 145.5 + 39 -0.21 3.74 146.6 + 40 -0.34 3.65 147.3 + 41 -0.47 3.57 147.7 + 42 -0.60 3.49 148.0 + 43 -0.72 3.42 148.2 + 44 -0.81 3.37 148.5 + 45 -0.89 3.34 148.8 + 46 -0.94 3.33 * 149.4 + 47 -0.96 3.34 150.2 + 48 -0.96 3.37 151.2 + 49 -0.92 3.43 152.3 + 50 -0.86 3.50 153.5 * + 51 -0.78 3.60 154.7 + 52 -0.68 3.72 155.8 + 53 -0.57 3.85 156.5 + 54 -0.46 3.98 156.8 + 55 -0.35 4.13 156.5 + 56 -0.26 4.27 155.4 + 57 -0.19 4.40 153.4 + 58 -0.14 4.51 150.6 + 59 -0.13 4.60 146.9 + 60 -0.14 4.65 * 142.6 + 61 -0.19 4.64 138.0 + 62 -0.24 4.58 133.6 + 63 -0.29 4.44 130.3 + 64 -0.30 4.20 * 129.2 + 65 -0.23 3.86 131.7 + 100 -0.23 4.50 120.0 + ScP 4 64 + 5 0.98 3.00 20.0 + 18 0.98 2.44 * 108.8 + 19 1.01 2.46 115.4 + 20 0.99 2.52 126.2 + 21 0.95 2.60 139.4 + 22 0.89 2.69 153.5 + 23 0.85 2.77 167.3 + 24 0.81 2.85 180.0 + 25 0.79 2.92 191.3 + 26 0.78 2.98 200.9 + 27 0.78 3.03 208.7 + 28 0.79 3.07 214.7 + 29 0.81 3.08 219.2 + 30 0.83 3.09 * 222.3 + 31 0.84 3.09 224.2 + 32 0.85 3.07 225.3 + 33 0.86 3.04 225.7 + 34 0.85 3.00 225.6 * + 35 0.83 2.96 225.2 + 36 0.81 2.90 224.6 + 37 0.77 2.85 223.9 + 38 0.72 2.78 223.2 + 39 0.66 2.72 222.4 + 40 0.60 2.65 221.4 + 41 0.53 2.58 220.2 + 42 0.46 2.51 218.7 + 43 0.40 2.44 216.7 + 44 0.34 2.38 214.1 + 45 0.30 2.32 210.7 + 46 0.26 2.26 206.5 + 47 0.23 2.22 201.2 + 48 0.22 2.18 194.9 + 49 0.22 2.16 187.5 + 50 0.23 2.15 179.0 + 51 0.24 2.16 * 169.4 + 52 0.27 2.18 159.0 + 53 0.29 2.23 147.8 + 54 0.32 2.29 136.1 + 55 0.34 2.38 124.3 + 56 0.35 2.48 112.6 + 57 0.35 2.61 101.4 + 58 0.34 2.74 91.2 + 59 0.31 2.89 82.4 + 60 0.28 3.04 75.4 + 61 0.24 3.17 70.4 + 62 0.20 3.29 67.9 + 63 0.19 3.36 67.9 + SKiKP 49 111 + 50 -1.33 7.00 0.1 + 98 -1.33 5.34 * 12.7 * + 99 0.55 5.70 11.5 + 100 1.69 5.46 11.4 + 101 2.25 5.01 11.4 + 102 2.37 4.58 11.5 + 103 2.18 4.34 * 11.9 + 104 1.79 4.31 12.8 + 105 1.29 4.48 14.5 + 106 0.75 4.78 16.8 + 107 0.25 5.13 19.4 + 108 -0.16 5.41 21.8 + 109 -0.45 5.54 23.3 + 110 -0.57 5.49 23.8 + SKPdf 110 165 + 110 -0.57 5.49 23.8 + 111 -0.52 5.25 23.6 + 112 -0.27 4.92 24.5 + 113 0.17 4.68 29.9 + 114 0.56 4.81 58.0 + 115 0.66 4.49 63.6 + 116 0.80 4.16 66.7 * + 117 0.94 3.84 68.1 + 118 1.08 3.53 68.4 + 119 1.19 3.24 68.2 + 120 1.27 2.98 67.7 + 121 1.31 2.75 67.2 + 122 1.30 2.55 * 66.7 + 123 1.24 2.40 66.4 + 124 1.13 2.29 66.3 + 125 0.97 2.23 * 66.3 + 126 0.76 2.21 66.4 + 127 0.52 2.24 66.6 + 128 0.24 2.31 66.8 + 129 -0.07 2.41 66.9 + 130 -0.40 2.54 66.9 + 131 -0.73 2.70 66.9 + 132 -1.06 2.86 66.6 + 133 -1.38 3.04 66.2 + 134 -1.69 3.22 65.6 * + 135 -1.97 3.39 64.9 + 136 -2.21 3.55 64.0 + 137 -2.42 3.70 63.1 + 138 -2.58 3.83 62.1 + 139 -2.68 3.94 61.0 + 140 -2.74 4.02 59.9 + 141 -2.75 4.10 58.8 + 142 -2.70 4.15 57.8 + 143 -2.60 4.20 56.8 + 144 -2.46 4.25 55.8 + 145 -2.27 4.31 54.8 + 146 -2.06 4.39 53.9 + 147 -1.81 4.50 52.8 + 148 -1.55 4.64 51.6 + 149 -1.27 4.84 * 50.2 + 150 -1.00 5.09 48.5 * + 151 -0.74 5.41 46.4 + 152 -0.49 5.79 44.0 + 153 -0.26 6.22 41.1 + 154 -0.06 6.70 37.8 + 155 0.12 7.21 34.1 + 156 0.27 7.70 30.1 + 157 0.41 8.13 * 26.0 + 158 0.55 8.44 22.1 + 159 0.71 8.54 18.8 + 160 0.91 8.34 16.8 + SKPab 130 143 + 131 0.32 2.00 140.0 + 135 0.32 2.04 * 103.1 + 136 0.31 2.24 95.6 + 137 0.33 2.72 83.8 + 138 0.28 3.43 72.6 + 139 0.01 3.88 64.4 + 140 -0.33 3.98 58.9 + 141 -0.09 4.80 53.3 + SKPbc 130 150 + 131 1.95 2.00 250.0 + 141 1.95 2.13 158.4 + 142 1.75 2.06 * 154.1 + 143 1.81 2.13 147.6 * + 144 1.83 2.33 133.5 + 145 1.53 2.45 112.0 + 146 1.24 2.44 92.6 + 147 1.27 2.48 79.6 + 148 0.20 2.68 38.4 + SKSac 62 145 + 63 0.19 3.40 800.0 + 90 0.19 3.58 788.2 * + 91 0.28 3.32 719.4 + 92 0.35 3.29 687.5 + 93 0.42 3.37 674.4 + 94 0.49 3.47 667.3 + 95 0.56 3.54 657.9 + 96 0.64 3.58 641.3 + 97 0.72 3.57 615.2 * + 98 0.81 3.53 579.4 + 99 0.90 3.48 535.2 + 100 0.98 3.43 484.5 + 101 1.06 3.39 430.0 + 102 1.13 3.37 374.4 + 103 1.19 3.38 320.2 + 104 1.24 3.41 269.8 + 105 1.28 3.45 224.9 + 106 1.31 3.50 186.8 + 107 1.32 3.55 156.0 * + 108 1.33 3.58 132.7 + 109 1.32 3.58 116.3 + 110 1.31 3.54 * 105.9 + 111 1.30 3.48 100.2 + 112 1.28 3.37 97.6 + 113 1.26 3.25 96.6 + 114 1.24 3.12 95.7 + 115 1.23 3.01 93.4 + 116 1.21 2.93 89.1 + 117 1.19 2.91 * 82.2 + 118 1.16 2.96 73.2 + 119 1.12 3.09 63.3 + 120 1.04 3.28 54.4 * + 121 0.93 3.48 49.6 + 122 0.75 3.61 53.0 + 123 0.48 3.51 69.7 + 144 0.48 6.30 70.0 + PP 28 180 + 29 2.23 3.00 400.0 + 52 2.23 4.20 * 421.8 * + 53 2.02 4.39 385.7 + 54 1.85 4.55 354.5 + 55 1.71 4.70 328.0 + 56 1.60 4.82 306.2 + 57 1.52 4.92 288.9 + 58 1.45 5.01 275.9 + 59 1.41 5.07 267.0 + 60 1.38 5.13 262.1 + 61 1.36 5.17 261.0 * + 62 1.36 5.19 * 263.3 + 63 1.36 5.21 268.9 + 64 1.37 5.22 277.5 + 65 1.39 5.21 288.9 + 66 1.40 5.20 302.8 + 67 1.42 5.19 319.0 + 68 1.44 5.16 337.1 + 69 1.46 5.13 357.0 + 70 1.48 5.10 378.3 + 71 1.50 5.06 400.9 + 72 1.52 5.02 424.4 + 73 1.53 4.98 448.6 + 74 1.54 4.93 473.4 + 75 1.54 4.88 498.4 + 76 1.55 4.84 523.4 + 77 1.55 4.79 548.3 + 78 1.54 4.74 572.8 + 79 1.53 4.69 596.8 + 80 1.52 4.64 620.1 + 81 1.51 4.59 642.5 + 82 1.49 4.55 663.9 + 83 1.47 4.50 684.1 + 84 1.44 4.46 703.0 + 85 1.41 4.42 720.6 + 86 1.38 4.38 736.6 + 87 1.35 4.34 751.1 + 88 1.32 4.30 764.0 + 89 1.28 4.27 775.1 + 90 1.25 4.24 784.5 + 91 1.21 4.21 792.1 + 92 1.17 4.18 798.0 + 93 1.13 4.16 802.0 * + 94 1.09 4.13 804.3 + 95 1.06 4.11 804.8 + 96 1.02 4.10 * 803.6 + 97 0.98 4.08 800.6 + 98 0.94 4.07 796.0 + 99 0.91 4.06 789.8 + 100 0.87 4.05 782.0 + 101 0.84 4.04 772.8 + 102 0.81 4.03 762.3 + 103 0.77 4.03 750.4 + 104 0.75 4.02 737.3 + 105 0.72 4.02 723.2 + 106 0.69 4.02 708.0 + 107 0.67 4.02 692.0 + 108 0.65 4.03 675.2 + 109 0.63 4.03 657.7 + 110 0.61 4.03 639.7 + 111 0.59 4.04 621.2 + 112 0.58 4.04 602.5 + 113 0.56 4.05 583.5 + 114 0.55 4.06 564.5 + 115 0.54 4.06 545.5 + 116 0.53 4.07 526.6 + 117 0.53 4.08 508.0 + 118 0.52 4.08 489.7 + 119 0.52 4.09 471.9 + 120 0.51 4.10 454.6 + 121 0.51 4.11 437.9 + 122 0.51 4.11 422.0 + 123 0.51 4.12 406.8 + 124 0.51 4.12 392.4 + 125 0.51 4.13 378.9 + 126 0.51 4.13 366.4 + 127 0.51 4.14 354.9 + 128 0.51 4.14 344.3 + 129 0.51 4.14 334.8 + 130 0.51 4.14 326.4 + 131 0.52 4.14 318.9 * + 132 0.52 4.14 312.6 + 133 0.52 4.14 307.2 + 134 0.52 4.14 302.8 + 135 0.52 4.14 299.4 + 136 0.52 4.13 296.9 + 137 0.52 4.13 295.2 + 138 0.52 4.12 294.3 + 139 0.52 4.11 294.1 + 140 0.52 4.11 294.5 + 141 0.52 4.10 * 295.5 + 142 0.52 4.09 296.8 + 143 0.52 4.08 298.5 + 144 0.52 4.07 300.4 + 145 0.52 4.06 302.4 + 146 0.53 4.04 304.3 + 147 0.53 4.03 306.1 + 148 0.53 4.02 307.6 + 149 0.53 4.00 308.8 + 150 0.54 3.99 309.4 + 151 0.54 3.97 309.3 + 152 0.55 3.96 308.5 + 153 0.55 3.94 306.8 + 154 0.56 3.92 304.1 + 155 0.57 3.91 300.3 + 156 0.58 3.89 295.4 * + 157 0.59 3.87 289.2 + 158 0.60 3.85 281.8 + 159 0.61 3.83 273.0 + 160 0.62 3.81 263.0 + 161 0.63 3.79 251.6 + 162 0.64 3.77 238.9 + 163 0.65 3.74 225.0 + 164 0.66 3.72 210.1 + 165 0.67 3.70 194.2 + 166 0.67 3.67 177.4 + 167 0.68 3.64 160.2 + 168 0.67 3.61 142.6 + 169 0.66 3.59 * 125.1 + 170 0.65 3.55 108.0 + 171 0.63 3.52 91.8 + 172 0.59 3.48 76.9 + 173 0.55 3.45 63.9 + 174 0.49 3.41 53.5 + 175 0.42 3.36 46.4 + 176 0.33 3.31 43.3 * + 177 0.22 3.26 45.3 + 178 0.09 3.21 53.3 + 179 -0.07 3.15 68.3 + 180 -0.26 3.08 91.7 + P'P'df 65 110 + 78 0.28 7.27 61.7 + 79 0.12 6.64 61.8 + 80 -0.11 6.67 67.2 + 81 -0.32 6.80 74.1 + 82 -0.44 6.80 79.8 + 83 -0.48 6.61 83.1 * + 84 -0.47 6.30 83.6 + 85 -0.42 5.98 81.6 + 86 -0.37 5.74 77.5 + 87 -0.34 5.66 * 72.1 + 88 -0.33 5.75 66.1 + 89 -0.33 5.99 60.2 + 90 -0.34 6.31 55.0 + 91 -0.34 6.64 50.6 * + 92 -0.33 6.87 47.2 + 93 -0.29 6.92 * 44.7 + 94 -0.24 6.77 42.6 + 95 -0.20 6.40 40.8 + 96 -0.19 5.89 38.6 + 97 -0.24 5.32 35.8 + 98 -0.41 4.86 32.1 + 99 -0.72 4.63 * 27.7 + 100 -1.17 4.72 23.0 + 101 -1.71 5.10 19.3 + 102 -2.21 5.51 18.2 + 103 -2.40 5.34 22.4 + P'P'bc 48 71 + 49 -2.91 4.00 20.0 + 55 -2.91 4.01 * 15.6 * + 56 -1.49 3.42 19.0 + 57 -1.41 3.16 23.1 + 58 -1.42 2.82 * 28.6 + 59 -1.25 2.50 34.0 + 60 -1.02 2.33 37.5 * + 61 -0.86 2.29 38.5 + 62 -0.80 2.23 37.1 + 63 -0.78 2.03 34.6 + 64 -0.70 1.71 32.1 + 65 -0.57 1.47 30.5 + 66 -0.51 1.41 * 29.6 + 67 -0.68 1.01 28.0 + 70 -0.68 1.00 22.0 + SS 28 180 + 29 2.59 5.00 220.0 + 55 2.59 6.03 * 153.8 + 56 1.90 6.44 149.4 + 57 1.38 6.77 145.6 + 58 1.01 7.04 142.6 + 59 0.76 7.25 140.4 + 60 0.62 7.42 139.0 + 61 0.55 7.54 138.5 * + 62 0.55 7.64 * 138.6 + 63 0.60 7.71 139.6 + 64 0.68 7.77 141.2 + 65 0.79 7.81 143.4 + 66 0.91 7.83 146.2 + 67 1.05 7.85 149.4 + 68 1.18 7.86 152.9 + 69 1.31 7.87 156.7 + 70 1.43 7.88 160.7 + 71 1.55 7.88 164.8 + 72 1.65 7.89 168.9 + 73 1.74 7.89 172.8 + 74 1.82 7.90 176.6 + 75 1.88 7.90 180.1 + 76 1.92 7.90 183.2 + 77 1.96 7.91 186.0 + 78 1.98 7.91 188.3 + 79 1.99 7.91 190.0 + 80 1.99 7.91 191.3 + 81 1.98 7.91 191.9 + 82 1.97 7.90 191.9 + 83 1.95 7.90 191.2 * + 84 1.93 7.88 * 190.0 + 85 1.90 7.87 188.0 + 86 1.88 7.85 185.5 + 87 1.85 7.83 182.3 + 88 1.83 7.80 178.5 + 89 1.81 7.76 174.1 + 90 1.79 7.73 169.2 + 91 1.77 7.69 163.8 + 92 1.76 7.64 158.0 + 93 1.76 7.59 151.8 + 94 1.76 7.54 145.2 + 95 1.76 7.48 138.3 + 96 1.77 7.43 131.3 + 97 1.78 7.37 124.1 + 98 1.80 7.31 116.7 + 99 1.82 7.24 109.4 + 100 1.85 7.18 102.1 + 101 1.88 7.12 94.9 + 102 1.91 7.07 87.9 + 103 1.94 7.01 81.1 + 104 1.97 6.96 74.6 + 105 2.00 6.91 68.5 + 106 2.02 6.86 62.7 + 107 2.05 6.83 57.3 + 108 2.07 6.79 52.4 + 109 2.09 6.77 48.0 + 110 2.11 6.75 44.2 + 111 2.12 6.73 40.8 + 112 2.12 6.73 * 38.0 + 113 2.12 6.73 35.8 * + 114 2.12 6.74 34.1 + 115 2.11 6.76 32.9 + 116 2.10 6.78 32.3 + 117 2.08 6.82 32.1 + 118 2.06 6.86 32.4 + 119 2.03 6.90 33.1 + 120 2.01 6.95 34.2 + 121 1.98 7.01 35.6 + 122 1.96 7.07 37.2 + 123 1.93 7.13 39.0 + 124 1.91 7.20 41.0 + 125 1.90 7.26 42.9 + 126 1.89 7.33 44.9 + 127 1.88 7.39 46.8 + 128 1.89 7.45 48.5 + 129 1.91 7.51 50.0 + 130 1.94 7.57 51.2 + 131 1.98 7.61 52.1 + 132 2.04 7.65 52.6 * + 133 2.11 7.69 52.7 + 134 2.20 7.71 * 52.4 + 135 2.29 7.73 51.8 + 136 2.41 7.73 50.7 + 137 2.53 7.73 49.3 + 138 2.65 7.71 47.7 + 139 2.79 7.69 46.0 + 140 2.92 7.67 44.2 + 141 3.04 7.63 42.7 + 142 3.15 7.60 41.6 + 143 3.24 7.57 41.3 + 144 3.29 7.54 42.0 * + 145 3.30 7.52 44.1 + 146 3.25 7.52 48.2 + 147 3.12 7.54 54.7 + 148 2.89 7.59 64.3 * + 149 2.55 7.68 77.6 + 180 2.55 7.10 70.0 + SPn 64 94 + 64 2.30 5.00 0.0 + 77 2.30 5.30 * 106.9 + 78 2.33 5.71 115.6 + 79 2.30 6.21 126.9 + 80 2.19 6.59 137.1 + 81 2.04 6.81 * 148.0 + 82 1.90 6.91 160.7 + 83 1.80 6.90 173.4 + 84 1.74 6.84 183.3 + 85 1.68 6.78 189.1 + 86 1.59 6.78 192.5 + 87 1.46 6.81 195.7 + 88 1.41 6.55 194.8 + SP 89 135 + 94 2.28 6.87 231.1 + 95 1.78 6.62 235.7 + 96 1.65 6.49 234.0 * + 97 1.66 6.43 226.3 + 98 1.67 6.42 213.8 + 99 1.59 6.44 197.9 + 100 1.41 6.45 179.9 + 101 1.13 6.44 161.4 + 102 0.81 6.40 143.6 + 103 0.47 6.33 127.6 + 104 0.17 6.23 114.3 + 105 -0.05 6.10 104.2 + 106 -0.17 5.95 97.4 * + 107 -0.16 5.80 94.0 + 108 -0.01 5.66 93.5 + 109 0.26 5.54 95.6 + 110 0.64 5.46 99.5 + 111 1.10 5.42 104.4 + 112 1.60 5.44 * 109.5 + 113 2.10 5.52 114.1 + 114 2.56 5.65 117.5 + 115 2.94 5.83 119.1 * + 116 3.22 6.05 118.5 + 117 3.37 6.30 115.6 + 118 3.39 6.54 110.5 + 119 3.27 6.77 103.4 + 120 3.03 6.95 * 95.1 + 121 2.71 7.08 86.0 + 122 2.33 7.14 77.1 + 123 1.94 7.12 69.1 + 124 1.58 7.05 62.6 + 125 1.28 6.96 57.9 + 126 1.04 6.91 54.9 + 127 0.84 7.02 52.5 + 128 0.58 7.42 48.5 + SKKSac 62 180 + 64 -0.27 6.17 40.4 + 65 -0.55 5.07 41.7 + 66 -0.75 4.15 42.4 + 67 -0.88 3.40 42.7 + 68 -0.95 2.81 * 42.6 + 69 -0.96 2.35 42.3 + 70 -0.94 2.00 41.8 + 71 -0.87 1.77 41.1 + 72 -0.77 1.63 * 40.4 + 73 -0.65 1.56 39.7 + 74 -0.50 1.56 38.9 + 75 -0.35 1.62 38.2 + 76 -0.18 1.73 37.6 + 77 0.00 1.88 * 37.0 + 78 0.18 2.06 36.6 + 79 0.36 2.27 36.2 + 80 0.53 2.49 36.0 + 81 0.70 2.73 35.8 + 82 0.86 2.97 35.7 * + 83 1.01 3.22 35.8 + 84 1.15 3.46 35.9 + 85 1.28 3.71 36.1 + 86 1.39 3.94 36.4 + 87 1.49 4.17 36.7 + 88 1.58 4.39 37.0 + 89 1.65 4.59 37.4 + 90 1.70 4.78 * 37.8 + 91 1.74 4.95 38.3 + 92 1.77 5.11 38.7 + 93 1.78 5.25 39.1 + 94 1.77 5.38 39.4 + 95 1.76 5.49 39.7 + 96 1.72 5.58 40.0 + 97 1.68 5.66 40.2 + 98 1.63 5.72 40.4 + 99 1.57 5.77 * 40.5 + 100 1.49 5.80 40.5 * + 101 1.41 5.82 40.5 + 102 1.33 5.82 40.3 + 103 1.23 5.82 40.1 + 104 1.13 5.80 39.9 + 105 1.03 5.78 39.5 + 106 0.93 5.74 39.1 + 107 0.82 5.70 38.7 + 108 0.72 5.65 38.2 + 109 0.61 5.60 37.6 + 110 0.51 5.55 37.0 + 111 0.41 5.49 36.4 + 112 0.31 5.42 35.7 + 113 0.22 5.36 35.1 + 114 0.13 5.29 34.4 + 115 0.05 5.23 33.8 + 116 -0.02 5.17 33.2 + 117 -0.09 5.11 32.6 + 118 -0.14 5.05 32.0 + 119 -0.19 4.99 31.6 + 120 -0.24 4.94 31.1 + 121 -0.27 4.89 30.8 + 122 -0.29 4.84 30.6 + 123 -0.30 4.80 30.4 + 124 -0.31 4.77 30.4 + 125 -0.30 4.74 30.5 + 126 -0.29 4.71 30.7 * + 127 -0.27 4.69 31.0 + 128 -0.23 4.67 * 31.4 + 129 -0.19 4.66 32.0 + 130 -0.14 4.66 32.7 + 131 -0.09 4.65 33.6 + 132 -0.02 4.66 34.6 + 133 0.05 4.66 35.7 + 134 0.12 4.67 36.9 + 135 0.20 4.68 38.2 + 136 0.29 4.70 39.7 + 137 0.37 4.72 41.2 + 138 0.46 4.74 42.8 + 139 0.56 4.76 44.5 + 140 0.65 4.78 46.2 + 141 0.74 4.81 48.0 + 142 0.83 4.83 49.7 + 143 0.92 4.85 51.5 + 144 1.00 4.87 53.3 + 145 1.08 4.89 55.0 + 146 1.16 4.91 56.6 + 147 1.23 4.92 58.1 + 148 1.29 4.94 59.5 + 149 1.35 4.95 60.8 + 150 1.40 4.95 61.9 + 151 1.44 4.95 62.8 + 152 1.47 4.95 63.5 + 153 1.49 4.94 * 64.0 + 154 1.51 4.93 64.2 + 155 1.51 4.92 64.1 * + 156 1.50 4.90 63.8 + 157 1.49 4.87 63.1 + 158 1.47 4.84 62.2 + 159 1.44 4.80 60.9 + 160 1.41 4.76 59.3 + 161 1.36 4.72 57.4 + 162 1.32 4.67 55.1 + 163 1.27 4.62 52.7 + 164 1.23 4.56 49.9 + 165 1.18 4.51 46.9 + 166 1.15 4.45 43.8 + 167 1.12 4.39 40.5 + 168 1.10 4.32 37.2 + 169 1.10 4.26 33.8 + 170 1.11 4.20 30.6 + 171 1.16 4.14 27.6 + 172 1.23 4.08 24.8 + 173 1.34 4.02 22.6 + 174 1.49 3.97 21.0 + 175 1.69 3.92 20.1 * + 176 1.95 3.88 20.2 + 177 2.27 3.85 21.5 + 178 2.66 3.82 24.2 + PKKPab 71 125 + 72 2.13 6.00 0.1 + 110 2.13 3.88 * 73.0 * + 111 2.12 3.34 81.4 + 112 2.19 3.33 78.4 + 113 2.22 3.30 79.5 + 114 2.11 3.21 83.2 + 115 1.88 3.14 84.7 + 116 1.62 3.10 83.1 + 117 1.47 3.02 80.9 + 118 1.48 2.87 81.4 + 119 1.60 2.66 85.1 + 120 1.70 2.49 88.5 + 121 1.69 2.40 87.5 + 122 1.82 1.96 88.9 + PKKPdf 69 120 + 70 1.90 2.50 0.0 + 82 1.90 2.00 * 61.3 + 83 1.83 2.03 63.8 + 84 1.76 2.08 68.1 + 85 1.68 2.16 73.5 + 86 1.60 2.24 79.5 + 87 1.52 2.33 85.5 + 88 1.45 2.43 91.3 + 89 1.38 2.52 96.6 + 90 1.32 2.61 101.0 + 91 1.27 2.69 104.3 + 92 1.24 2.76 106.6 + 93 1.22 2.81 107.8 * + 94 1.22 2.86 107.7 + 95 1.24 2.89 106.5 + 96 1.27 2.90 * 104.2 + 97 1.31 2.90 101.0 + 98 1.36 2.88 96.9 + 99 1.43 2.86 92.2 + 100 1.49 2.81 86.9 + 101 1.56 2.76 81.3 + 102 1.63 2.70 75.5 + 103 1.69 2.62 69.8 + PKKPbc 103 125 + 104 1.74 2.54 64.2 + 105 1.78 2.45 59.0 + 106 1.81 2.36 54.4 + 107 1.81 2.26 50.3 + 108 1.79 2.16 47.0 + 109 1.76 2.06 44.4 + 110 1.69 1.96 42.7 + 111 1.61 1.87 41.7 + 112 1.50 1.77 41.4 + 113 1.38 1.67 41.7 + 114 1.23 1.58 42.4 + 115 1.07 1.49 43.2 + 116 0.90 1.40 43.7 + 117 0.73 1.30 43.7 + 118 0.55 1.21 42.5 + 119 0.37 1.11 39.6 + 120 0.20 1.00 34.3 + 121 0.05 0.89 25.8 + 122 -0.10 0.75 13.3 + Lg 2 12 + 2 65.41 6.00 1.0 + 12 392.45 6.00 1.0 + LR 2 40 + 2 63.54 6.00 1.0 + 40 1270.80 6.00 1.0 diff --git a/gen-travel-times-app/params/ak135_mod.d b/gen-travel-times-app/params/ak135_mod.d deleted file mode 100644 index a1fc29a2..00000000 --- a/gen-travel-times-app/params/ak135_mod.d +++ /dev/null @@ -1,150 +0,0 @@ -# ak135_mod.d -# -# This file represents the ak135 velocity model, -# giving P and S velocities in m/s, as well as density -# for each depth(in km) between earth surface and core. -# Discontinuities in velocity are expressed by listing -# the same depth twice with different velocities (see 20km for first example) -# velocity between listed depths is based on linear interpolation of the two -# closest entries. The Model has addition surface layer (negative depth) for -# station elevation correction. The layer with 0 depth is assumed to be the mean -# radius of the earth. -# ============================================================= -# depth P vel. S vel. density older density - -20.000 5.8 3.46 2.449 2.72 - 0.000 5.8000 3.4600 2.4490 2.7200 - 20.000 5.8000 3.4600 2.4490 2.7200 - 20.000 6.5000 3.8500 2.7142 2.9200 - 35.000 6.5000 3.8500 2.7142 2.9200 - 35.000 8.0400 4.4800 3.2976 3.3198 - 77.500 8.0450 4.4900 3.2994 3.3455 - 120.000 8.0500 4.5000 3.3013 3.3713 - 165.000 8.1750 4.5090 3.3487 3.3985 - 210.000 8.3000 4.5180 3.3960 3.4258 - 210.000 8.3000 4.5230 3.3960 3.4258 - 260.000 8.4825 4.6090 3.4652 3.4561 - 310.000 8.6650 4.6960 3.5343 3.4864 - 360.000 8.8475 4.7830 3.6034 3.5167 - 410.000 9.0300 4.8700 3.6726 3.5470 - 410.000 9.3600 5.0800 3.7976 3.7557 - 460.000 9.5280 5.1860 3.8612 3.8175 - 510.000 9.6960 5.2920 3.9248 3.8793 - 560.000 9.8640 5.3980 3.9885 3.9410 - 610.000 10.0320 5.5040 4.0521 4.0028 - 660.000 10.2000 5.6100 4.1158 4.0646 - 660.000 10.7900 5.9600 4.3393 4.3714 - 710.000 10.9229 6.0897 4.3896 4.4010 - 760.000 11.0558 6.2095 4.4399 4.4305 - 809.500 11.1353 6.2426 4.4701 4.4596 - 859.000 11.2221 6.2798 4.5029 4.4885 - 908.500 11.3068 6.3160 4.5350 4.5173 - 958.000 11.3896 6.3512 4.5664 4.5459 - 1007.500 11.4705 6.3854 4.5970 4.5744 - 1057.000 11.5495 6.4187 4.6270 4.6028 - 1106.500 11.6269 6.4510 4.6563 4.6310 - 1156.000 11.7026 6.4828 4.6849 4.6591 - 1205.500 11.7766 6.5138 4.7130 4.6870 - 1255.000 11.8491 6.5439 4.7404 4.7148 - 1304.500 11.9200 6.5727 4.7673 4.7424 - 1354.000 11.9895 6.6008 4.7936 4.7699 - 1403.500 12.0577 6.6285 4.8195 4.7973 - 1453.000 12.1245 6.6555 4.8448 4.8245 - 1502.500 12.1912 6.6815 4.8700 4.8515 - 1552.000 12.2550 6.7073 4.8942 4.8785 - 1601.500 12.3185 6.7326 4.9182 4.9052 - 1651.000 12.3819 6.7573 4.9423 4.9319 - 1700.500 12.4426 6.7815 4.9653 4.9584 - 1750.000 12.5031 6.8052 4.9882 4.9847 - 1799.500 12.5631 6.8286 5.0109 5.0109 - 1849.000 12.6221 6.8515 5.0333 5.0370 - 1898.500 12.6804 6.8742 5.0553 5.0629 - 1948.000 12.7382 6.8972 5.0772 5.0887 - 1997.500 12.7956 6.9194 5.0990 5.1143 - 2047.000 12.8526 6.9418 5.1206 5.1398 - 2096.500 12.9096 6.9627 5.1422 5.1652 - 2146.000 12.9668 6.9855 5.1638 5.1904 - 2195.500 13.0222 7.0063 5.1848 5.2154 - 2245.000 13.0783 7.0281 5.2061 5.2403 - 2294.500 13.1336 7.0500 5.2270 5.2651 - 2344.000 13.1894 7.0720 5.2481 5.2898 - 2393.500 13.2465 7.0931 5.2698 5.3142 - 2443.000 13.3018 7.1144 5.2907 5.3386 - 2492.500 13.3585 7.1369 5.3122 5.3628 - 2542.000 13.4156 7.1586 5.3338 5.3869 - 2591.500 13.4741 7.1807 5.3560 5.4108 - 2640.000 13.5312 7.2031 5.3776 5.4345 - 2690.000 13.5900 7.2258 5.3999 5.4582 - 2740.000 13.6494 7.2490 5.4224 5.4817 - 2740.000 13.6494 7.2490 5.4224 5.4817 - 2789.670 13.6530 7.2597 5.4238 5.5051 - 2839.330 13.6566 7.2704 5.4251 5.5284 - 2891.500 13.6602 7.2811 5.4265 5.5515 - 2891.500 8.0000 0.0000 9.9145 - 2939.330 8.0382 0.0000 9.9942 - 2989.660 8.1283 0.0000 10.0722 - 3039.990 8.2213 0.0000 10.1485 - 3090.320 8.3122 0.0000 10.2233 - 3140.660 8.4001 0.0000 10.2964 - 3190.990 8.4861 0.0000 10.3679 - 3241.320 8.5692 0.0000 10.4378 - 3291.650 8.6496 0.0000 10.5062 - 3341.980 8.7283 0.0000 10.5731 - 3392.310 8.8036 0.0000 10.6385 - 3442.640 8.8761 0.0000 10.7023 - 3492.970 8.9461 0.0000 10.7647 - 3543.300 9.0138 0.0000 10.8257 - 3593.640 9.0792 0.0000 10.8852 - 3643.970 9.1426 0.0000 10.9434 - 3694.300 9.2042 0.0000 11.0001 - 3744.630 9.2634 0.0000 11.0555 - 3794.960 9.3205 0.0000 11.1095 - 3845.290 9.3760 0.0000 11.1623 - 3895.620 9.4297 0.0000 11.2137 - 3945.950 9.4814 0.0000 11.2639 - 3996.280 9.5306 0.0000 11.3127 - 4046.620 9.5777 0.0000 11.3604 - 4096.950 9.6232 0.0000 11.4069 - 4147.280 9.6673 0.0000 11.4521 - 4197.610 9.7100 0.0000 11.4962 - 4247.940 9.7513 0.0000 11.5391 - 4298.270 9.7914 0.0000 11.5809 - 4348.600 9.8304 0.0000 11.6216 - 4398.930 9.8682 0.0000 11.6612 - 4449.260 9.9051 0.0000 11.6998 - 4499.600 9.9410 0.0000 11.7373 - 4549.930 9.9761 0.0000 11.7737 - 4600.260 10.0103 0.0000 11.8092 - 4650.590 10.0439 0.0000 11.8437 - 4700.920 10.0768 0.0000 11.8772 - 4801.580 10.1415 0.0000 11.9414 - 4851.910 10.1739 0.0000 11.9722 - 4902.240 10.2049 0.0000 12.0001 - 4952.580 10.2329 0.0000 12.0311 - 5002.910 10.2565 0.0000 12.0593 - 5053.240 10.2745 0.0000 12.0867 - 5103.570 10.2854 0.0000 12.1133 - 5153.500 10.2890 0.0000 12.1391 - 5153.500 11.0427 3.5043 12.7037 - 5204.610 11.0585 3.5187 12.7289 - 5255.320 11.0718 3.5314 12.7530 - 5306.040 11.0850 3.5435 12.7760 - 5356.750 11.0983 3.5551 12.7980 - 5407.460 11.1166 3.5661 12.8188 - 5458.170 11.1316 3.5765 12.8387 - 5508.890 11.1457 3.5864 12.8574 - 5559.600 11.1590 3.5957 12.8751 - 5610.310 11.1715 3.6044 12.8917 - 5661.020 11.1832 3.6126 12.9072 - 5711.740 11.1941 3.6202 12.9217 - 5813.160 11.2134 3.6337 12.9474 - 5863.870 11.2219 3.6396 12.9586 - 5914.590 11.2295 3.6450 12.9688 - 5965.300 11.2364 3.6498 12.9779 - 6016.010 11.2424 3.6540 12.9859 - 6066.720 11.2477 3.6577 12.9929 - 6117.440 11.2521 3.6608 12.9988 - 6168.150 11.2557 3.6633 13.0036 - 6218.860 11.2586 3.6653 13.0074 - 6269.570 11.2606 3.6667 13.0100 - 6320.290 11.2618 3.6675 13.0117 - 6371.000 11.2622 3.6678 13.0122 diff --git a/gen-travel-times-app/params/gen-travel-times.d b/gen-travel-times-app/params/gen-travel-times.d deleted file mode 100644 index b5b1c443..00000000 --- a/gen-travel-times-app/params/gen-travel-times.d +++ /dev/null @@ -1,45 +0,0 @@ -# gen-travel-times.d -# Configuration file for the glass parameters -{ - "Configuration": "gen-travel-times-app", - - # The file extension to use for travel time files - "FileExtension": ".trv", - - # The output directory to write travel time files to - "OutputPath": "./", - - # The earth model to use - "Model": "./params/ak135_mod.d", - - # The list of travel time files to generate - "Branches": - [ - { - "Cmd": "GenerateTraveltime", - - # Branch name - "Branch": "P", - - # The rays (phases) to use in generating the file - "Rays": ["Pup", "P", "Pdiff"], - # The distance warp for this file - "DeltaTimeWarp": { - "MinimumDistance": 0.0, # Start of warp - "MaximumDistance": 360.0, # End of warp - "SlopeDecayConstant": 0.10, # the decay exponent - "SlopeZero": 0.05, # the slope value at minimum - "SlopeInfinite": 1.0 # the slope value at maximum - }, - # The Depth warp for this file - "DepthTimeWarp": { - "MinimumDepth": -10.0, # Start of warp - "MaximumDepth": 800.0, # End of warp - "SlopeDecayConstant": 0.10, # the decay exponent - "SlopeZero": 1.0, # the slope value at minimum - "SlopeInfinite": 10.0 # the slope value at maximum - } - } - ] -} -# End of gen-travel-times.d diff --git a/gen-travel-times-app/src/main/java/gov/usgs/GenTravelTimes/App.java b/gen-travel-times-app/src/main/java/gov/usgs/GenTravelTimes/App.java new file mode 100644 index 00000000..223de21c --- /dev/null +++ b/gen-travel-times-app/src/main/java/gov/usgs/GenTravelTimes/App.java @@ -0,0 +1,763 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package gov.usgs.GenTravelTimes; + +import gov.usgs.traveltime.*; +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.ArrayList; +import java.util.Arrays; +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Level; +import org.apache.log4j.LogManager; +import org.apache.log4j.Logger; +import org.apache.log4j.PropertyConfigurator; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.json.simple.parser.ParseException; + +public class App { + /** The current version of station-lookup */ + public static final String VERSION = "v0.1.0"; + + /** A String containing the definition of an empty string for config file parsing. */ + private static final String EMPTY_STRING = ""; + + /** A String containing the definition the comment line identifier for config file parsing. */ + private static final String COMMENT_IDENTIFIER = "#"; + + /** A double value used to signify that there was no valid travel time */ + private static final Double INVALID_TRAVEL_TIME = -10.0; + + /** A String value used to signify that there was no valid phase */ + private static final String INVALID_PHASE = ""; + + /** A String containing the argument for specifying the config file. */ + public static final String MODE_CONFIGFILE = "--configFile="; + + /** A String containing the argument for specifying the log configuration file path. */ + public static final String LOGCONFIG_ARGUMENT = "--logConfig="; + + /** Log4J logger */ + static Logger logger = Logger.getLogger(App.class); + + public static void main(String[] args) { + if (args == null || args.length == 0) { + System.out.println( + "Usage: \n\tgen-glass-ttt --configFile='file path' " + "[--logConfig='file path']"); + System.exit(1); + } + + // defaults + String configPath = null; + String logConfigPath = null; + String fileType = "TRAV"; + + // process arguments + StringBuffer argumentList = new StringBuffer(); + for (String arg : args) { + // save arguments for logging + argumentList.append(arg).append(" "); + + if (arg.startsWith(MODE_CONFIGFILE)) { + // get mode + configPath = arg.replace(MODE_CONFIGFILE, ""); + } else if (arg.startsWith(LOGCONFIG_ARGUMENT)) { + // get kafka output config path + logConfigPath = arg.replace(LOGCONFIG_ARGUMENT, ""); + } + } + + // setup log4j + if ((logConfigPath != null) && (!"".equals(logConfigPath))) { + System.out.println("Using custom logging configuration"); + PropertyConfigurator.configure(logConfigPath); + } else { + System.out.println("Using default logging configuration"); + BasicConfigurator.configure(); + LogManager.getRootLogger().setLevel(Level.INFO); + } + + // get config from file + JSONObject configuration = readConfigurationFromFile(configPath); + if (configuration == null) { + logger.error("Configuration is null, exitting."); + System.exit(1); + } + + // travel time package configuration values, make configurable? + boolean readPhaseStats = true; + boolean readEllipticity = true; + boolean readTopography = true; + boolean returnAllPhases = true; // all phase return + boolean returnBackBranches = true; // Return back branches + boolean rstt = false; // always false, not implemented + boolean tectonic = true; // source is a tectonic province + double elev = 0.0d; + + // get the location of the model files + String modelPath = "./models/"; + if (configuration.containsKey("EarthModelPath")) { + modelPath = (String) configuration.get("EarthModelPath"); + } + + // get the extension + String fileExtension = ".trv"; + if (configuration.containsKey("FileExtension")) { + fileExtension = (String) configuration.get("FileExtension"); + } + + // get the output file + String outputPath = "./"; + if (configuration.containsKey("OutputPath")) { + outputPath = (String) configuration.get("OutputPath"); + } + + // whetehr to generate debug file + boolean writeDebugFile = false; + if (configuration.containsKey("WriteDebugFile")) { + writeDebugFile = (boolean) configuration.get("WriteDebugFile"); + } + + // get branches + JSONArray branchArray = null; + if (configuration.containsKey("Branches")) { + branchArray = (JSONArray) configuration.get("Branches"); + } else { + logger.error("Missing required configuration key Branches, exitting."); + System.exit(1); + } + + // if we had any branches + if ((branchArray != null) && (!branchArray.isEmpty())) { + // go through the whole array + for (int i = 0; i < branchArray.size(); i++) { + JSONObject branchConfig = (JSONObject) branchArray.get(i); + + // get branch name + String branchName = null; + if (branchConfig.containsKey("BranchName")) { + branchName = (String) branchConfig.get("BranchName"); + } else { + logger.error("Missing required configuration key BranchName, exitting."); + System.exit(1); + } + + // get file name + String fileName = null; + if (branchConfig.containsKey("FileName")) { + fileName = (String) branchConfig.get("FileName"); + } else { + // default to branch name if not specified + fileName = branchName; + } + + // get earth model + String earthModel = "ak135"; + if (branchConfig.containsKey("EarthModel")) { + earthModel = (String) branchConfig.get("EarthModel"); + } + + // get phase list + String[] phaseList = null; + String phaseString = ""; + if (branchConfig.containsKey("PhaseList")) { + JSONArray phaseArray = (JSONArray) branchConfig.get("PhaseList"); + + if ((phaseArray != null) && (!phaseArray.isEmpty())) { + phaseList = new String[phaseArray.size()]; + + // go through the whole array + for (int j = 0; j < phaseArray.size(); j++) { + // add to list + phaseList[j] = (String) phaseArray.get(j); + + // add to string (for file) + if (j > 0) { + // comma delimit + phaseString += ","; + } + phaseString += (String) phaseArray.get(j); + } + } + } else { + logger.error("Missing required configuration key PhaseList, exitting."); + System.exit(1); + } + + // get min distance + Double minimumDistance = null; + if (branchConfig.containsKey("MinimumDistance")) { + minimumDistance = (double) branchConfig.get("MinimumDistance"); + } else { + logger.error("Missing required configuration key MinimumDistance, exitting."); + System.exit(1); + } + + // get max distance + Double maximumDistance = null; + if (branchConfig.containsKey("MaximumDistance")) { + maximumDistance = (double) branchConfig.get("MaximumDistance"); + } else { + logger.error("Missing required configuration key MaximumDistance, exitting."); + System.exit(1); + } + + // get number of distances + Integer numberOfDistances = null; + if (branchConfig.containsKey("NumberOfDistances")) { + numberOfDistances = ((Long) branchConfig.get("NumberOfDistances")).intValue(); + } else { + logger.error("Missing required configuration key NumberOfDistances, exitting."); + System.exit(1); + } + + // get min depth + Double minimumDepth = null; + if (branchConfig.containsKey("MinimumDepth")) { + minimumDepth = (double) branchConfig.get("MinimumDepth"); + } else { + logger.error("Missing required configuration key MinimumDepth, exitting."); + System.exit(1); + } + + // get max depth + Double maximumDepth = null; + if (branchConfig.containsKey("MaximumDepth")) { + maximumDepth = (double) branchConfig.get("MaximumDepth"); + } else { + logger.error("Missing required configuration key MaximumDepth, exitting."); + System.exit(1); + } + + // get number of depths + Integer numberOfDepths = null; + if (branchConfig.containsKey("NumberOfDepths")) { + numberOfDepths = ((Long) branchConfig.get("NumberOfDepths")).intValue(); + } else { + logger.error("Missing required configuration key NumberOfDepths, exitting."); + System.exit(1); + } + + // calculate steps + Double distanceStep = (maximumDistance - minimumDistance) / (double) numberOfDistances; + Double depthStep = (maximumDepth - minimumDepth) / (double) numberOfDepths; + + logger.info( + "Generating ttt file: " + + "\nFile Name: \n\t" + + outputPath + + "/" + + fileName + + fileExtension + + "\nBranch Name: \n\t" + + branchName + + "\nPhases: \n\t" + + phaseString + + "\nDistance parameters: " + + "\n\tMinDist: " + + String.valueOf(minimumDistance) + + "\n\tMaxDist: " + + String.valueOf(maximumDistance) + + "\n\tNumDist: " + + String.valueOf(numberOfDistances) + + "\n\t(Calculated) DistStep: " + + String.valueOf(distanceStep) + + "\nDepth parameters: " + + "\n\tMinDepth: " + + String.valueOf(minimumDepth) + + "\n\tMaxDepth: " + + String.valueOf(maximumDepth) + + "\n\tNumDepth: " + + String.valueOf(numberOfDepths) + + "\n\t(Calculated) DepthStep: " + + String.valueOf(depthStep)); + + // Initialize the local travel-time manager and setup the current model + TTSessionLocal ttLocal = null; + try { + ttLocal = new TTSessionLocal(readPhaseStats, readEllipticity, readTopography, modelPath); + } catch (IOException e) { + System.out.println("Unable to read travel-time auxiliary data."); + } + + ArrayList travelTimeArray = new ArrayList(); + ArrayList travelTimeRows = new ArrayList(); + + // calculate travel time interpolation array + // for each depth + for (int depthCount = 0; depthCount < numberOfDepths; depthCount++) { + // compute current depth + Double currentDepth = minimumDepth + (depthStep * depthCount); + + // Set up a session for this depth + try { + ttLocal.newSession( + earthModel, + currentDepth, + phaseList, + returnAllPhases, + returnBackBranches, + tectonic, + rstt); + + } catch (Exception e) { + System.out.println("Session setup failed"); + System.exit(1); + } + + // calculate travel time interpolation row for this depth + String rowString = ""; + for (int distanceCount = 0; distanceCount < numberOfDistances; distanceCount++) { + // compute current distance + Double currentDistance = minimumDistance + (distanceStep * distanceCount); + + // init to defaults + Double rowEntry = INVALID_TRAVEL_TIME; + String rowPhase = INVALID_PHASE; + + // get the best travel time + TTimeData phase = getBestPhase(ttLocal.getTT(elev, currentDistance), phaseList); + + // is the phase valid and positive + if ((phase != null) && (phase.getTT() >= 0)) { + // round travel time to 5 decimals + rowEntry = Math.floor(phase.getTT() * 100000) / 100000; + + // if the row entry is less than or equal to zero, use the + // default "no data" indicator + if (rowEntry <= 0) { + rowEntry = INVALID_TRAVEL_TIME; + } + + // remember the phase used to generate the tt file (for debug file) + rowPhase = phase.getPhCode(); + } else { + // no valid travel time + rowEntry = INVALID_TRAVEL_TIME; + rowPhase = INVALID_PHASE; + } + + // add the phase travel time to the list + travelTimeArray.add(rowEntry); + + // add to string (for debug file) + if (distanceCount > 0) { + // comma delimit + rowString += ","; + } + rowString += + String.format("%.2f", currentDepth) + + ":" + + String.format("%.2f", currentDistance) + + ":" + + String.valueOf(rowEntry) + + ":" + + rowPhase; + } + + // add this row string to list of row strings (for debug file) + travelTimeRows.add(rowString); + } + + logger.info(branchName + " travelTimeArray Generated, Writing file"); + + // we should have everything we need now, so now write the binary travel + // time file to disk + try { + // A travel time file is a binary file with a header and the travel time + // interpolation array + // The file consists of the following: + // + // - 4 ascii characters plus null termination - 5 bytes + // - 16 ascii characters plus null termination - 17 bytes + // - 64 ascii characters plus null termination - 65 bytes + // - 1 int value, 4 bytes + // - 1 double value, 8 bytes + // - 1 double value, 8 bytes + // - 1 int value, 4 bytes + // - 1 double value, 8 bytes + // - 1 double value, 8 bytes + // - + // (numberOfDistancePoints * numberOfDepthPoints) double values, + // (numberOfDistancePoints * numberOfDepthPoints) * 8 bytes + // + + // create binary capable output stream + DataOutputStream outputFile = + new DataOutputStream( + new BufferedOutputStream( + new FileOutputStream(outputPath + "/" + fileName + fileExtension))); + + // write header values + // File type is a character array of 4 ascii characters plus null termination + outputFile.write(getCStringBytes(fileType), 0, 5); + + // branch name is a character array of 16 ascii characters plus null termination + outputFile.write(getCStringBytes(padRight(branchName, 16)), 0, 17); + + // The phase list is a character array of 64 ascii characters plus null termination + outputFile.write(getCStringBytes(padRight(phaseString, 64)), 0, 65); + + // write number of distance points, 1 int, 4 bytes + outputFile.write(getCIntBytes(numberOfDistances.intValue()), 0, Integer.BYTES); + + // write the minimum distance, 1 double, 8 bytes + outputFile.write(getCDoubleBytes(minimumDistance.doubleValue()), 0, Double.BYTES); + + // write the maximum distance, 1 double, 8 bytes + outputFile.write(getCDoubleBytes(maximumDistance.doubleValue()), 0, Double.BYTES); + + // write number of depth points, 1 int, 4 bytes + outputFile.write(getCIntBytes(numberOfDepths.intValue()), 0, Integer.BYTES); + + // write the minimum depth, 1 double, 8 bytes + outputFile.write(getCDoubleBytes(minimumDepth.doubleValue()), 0, Double.BYTES); + + // write the maximum depth, 1 double, 8 bytes + outputFile.write(getCDoubleBytes(maximumDepth.doubleValue()), 0, Double.BYTES); + + // write travel time interpolation array, + // (numberOfDistances * numberOfDepths) doubles, + // (numberOfDistances * numberOfDepths * 8) bytes + outputFile.write( + getCDoubleArrayBytes(travelTimeArray), + 0, + (Double.BYTES * numberOfDistances * numberOfDepths)); + + // done with file + outputFile.close(); + } catch (FileNotFoundException e) { + logger.error(e.toString()); + continue; + } catch (IOException e) { + logger.error(e.toString()); + continue; + } + + // write a debug (ascii) tt file if asked + if (writeDebugFile) { + try { + // create a ascii file + PrintWriter fileWriter = new PrintWriter(outputPath + "/" + fileName + ".txt", "UTF-8"); + + // write header values + // File type + fileWriter.println(fileType); + + // branch name + fileWriter.println(padRight(branchName, 16)); + + // The phase list + fileWriter.println(padRight(phaseString, 16)); + + // write number of distance points + fileWriter.println(numberOfDistances); + + // write the minimum distance + fileWriter.println(minimumDistance); + + // write the maximum distance + fileWriter.println(maximumDistance); + + // write number of depth points + fileWriter.println(numberOfDepths); + + // write the minimum depth + fileWriter.println(minimumDepth); + + // write the maximum depth + fileWriter.println(maximumDepth); + + // write travel time interpolation array + for (Object row : travelTimeRows) { + fileWriter.println((String) row); + } + fileWriter.println(); + + // done with file + fileWriter.flush(); + fileWriter.close(); + } catch (Exception e) { + + // log exception + logger.error(e.toString()); + } + } + logger.info(branchName + " File Written"); + } + } + } + + /** + * This method to gets the "best" (for now earliest) TTimeData from a given TTime entry, ensuring + * that the entry used is in the given phase list filter + * + * @param ttEntry a TTime containing the travel time entry to use + * @param commentIdentifier a String[] containing the phase name filter list + * @return a TTimeData containing the "best" travel time data entry, or null if one is not found + */ + public static TTimeData getBestPhase(TTime ttEntry, String[] phaseList) { + // nullchecks + if (ttEntry == null) { + return null; + } + if (ttEntry.getNumPhases() == 0) { + return null; + } + + // if we don't have a phase name filter list, return the first (earliest) + // phase + if (phaseList == null) { + return ttEntry.getPhase(0); + } + + // go through each phase in the entry + for (int i = 0; i < ttEntry.getNumPhases(); i++) { + TTimeData aPhase = ttEntry.getPhase(i); + + // return the first (earliest) phase in the phase list + // that matches the phase list filter, we do this because + // certain phases (like P) are generic and return more than one + // phase. + if (Arrays.asList(phaseList).contains(aPhase.getPhCode())) { + return (aPhase); + } + } + + // we didn't get a valid phase + return null; + } + + /** + * This method converts the provided integer into the equivalent bytes which are readable by a + * C/C++ program + * + * @param value an integer containing the number to convert + * @return a byte[] containing the equivalent bytes + */ + public static byte[] getCIntBytes(int value) { + // Create the ByteBuffer and init the byte order to the native byte order (rather than the + // java default). We do this to ensure that the integer is readable by + // a c/c++ program. + ByteBuffer buffer = ByteBuffer.allocate(Integer.BYTES).order(ByteOrder.nativeOrder()); + + // write the int to bytes + buffer.putInt(value); + + // return the bytes + return (buffer.array()); + } + + /** + * This method converts the provided double into the equivalent bytes which are readable by a + * C/C++ program + * + * @param value an double containing the number to convert + * @return a byte[] containing the equivalent bytes + */ + public static byte[] getCDoubleBytes(double value) { + // Create the ByteBuffer and init the byte order to the native byte order (rather than the + // java default). We do this to ensure that the double is readable by + // a c/c++ program. + ByteBuffer buffer = ByteBuffer.allocate(Double.BYTES).order(ByteOrder.nativeOrder()); + + // write the double to bytes + buffer.putDouble(value); + + // return the bytes + return (buffer.array()); + } + + /** + * This method converts the provided ArrayList of doubles into the equivalent bytes which are + * readable by a C/C++ program + * + * @param value an double containing the number to convert + * @return a byte[] containing the equivalent bytes + */ + public static byte[] getCDoubleArrayBytes(ArrayList data) { + // nullcheck + if (data == null) { + return null; + } + + // allocate a byte array of the proper size + byte[] bytes = new byte[data.size() * Double.BYTES]; + + // for each element in the ArrayList + for (int i = 0; i < data.size(); i++) { + // Convert the double to bytes + byte[] doubleBytes = getCDoubleBytes((double) data.get(i)); + + // copy the bytes into the byte array + System.arraycopy(doubleBytes, 0, bytes, (i * Double.BYTES), Double.BYTES); + } + + // return the bytes + return bytes; + } + + /** + * This method converts the provided String into the equivalent bytes which are readable by a + * C/C++ program + * + * @param s a String containing the string to convert + * @return a byte[] containing the equivalent bytes + */ + public static byte[] getCStringBytes(String s) { + try { + // Create a byte[] from the string with the appropriate character byte + // size for c characters. We do this because by default java uses unicode + // (two bytes) as opposed to c/c++ (one byte) + byte[] stringBytes = s.getBytes("ISO-8859-1"); + + // null terminate the byte string array (java doesn't null terminate strings) + byte[] ntBytes = new byte[stringBytes.length + 1]; + System.arraycopy(stringBytes, 0, ntBytes, 0, stringBytes.length); + + // return the bytes + return ntBytes; + } catch (UnsupportedEncodingException e) { + logger.error(e); + return null; + } + } + + /** + * This method pads to the right the provided string with the designated number of spaces + * + * @param s a String containing the string to pad + * @param n an Integer containing the number of spaces to pad + * @return a String containing the padded string + */ + public static String padRight(String s, int n) { + return String.format("%-" + n + "s", s); + } + + /** + * Convenience to read a json formatted configuration file identified by the given configuration + * file name. + * + * @param configFileName a String containing the configuration file name. + * @return a JSONObject containing the configuration + */ + public static JSONObject readConfigurationFromFile(final String configFileName) { + + // read the config file + File configFile = new File(configFileName); + if (!configFile.exists()) { + logger.error("Error, configuration file not found."); + return (null); + } + + // set up the reader, read the file + BufferedReader configReader = null; + StringBuffer configBuffer = new StringBuffer(); + try { + configReader = new BufferedReader(new FileReader(configFile)); + String line = null; + + // while there are lines + while ((line = configReader.readLine()) != null) { + // strip any comments + String strippedLine = stripCommentsFromLine(line, COMMENT_IDENTIFIER); + + // add line to buffer + if (!line.isEmpty()) { + configBuffer.append(strippedLine).append("\n"); + } + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + if (configReader != null) { + configReader.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + // parse config file into json + JSONObject configJSON = null; + try { + JSONParser configParser = new JSONParser(); + configJSON = (JSONObject) configParser.parse(configBuffer.toString()); + } catch (ParseException e) { + e.printStackTrace(); + } + + return (configJSON); + } + + /** + * Convenience method to strip comments from a line from a configuration file identified by the + * given comment identifier. This function will return any characters up to the comment identifier + * and not return any characters after (and including) the comment identifier up to the end of + * provided line string. This function will return an empty string if the line string starts with + * a comment identifier. + * + * @param line a String containing the configuration line to strip. + * @param commentIdentifier a String containing the comment identifier character/string + * @return a String containing the line without comments. + */ + public static String stripCommentsFromLine(String line, final String commentIdentifier) { + + // nullcheck + if (line != null) { + // empty checks + if (line.isEmpty()) { + return (line); + } + if (commentIdentifier.isEmpty()) { + return (line); + } + + // look for the comment identifier + int position = line.indexOf(commentIdentifier); + + // check position + if (position == 0) { + // identifier found in the first position + // the whole line is a comment + // return none of this line + return (EMPTY_STRING); + } else if (position == -1) { + // no identifier found + // no part of the line is a comment, + // return entire line + return (line); + } else { + // found identifier somewhere in the line + // everything after the identifier is a comment + // everything before is the line + // return the part of the line starting at 0 + // and going to position of the identifier + return (line.substring(0, position)); + } + } + + // return empty line (if null) + return (EMPTY_STRING); + } + + public String getGreeting() { + return "Hello world."; + } +} diff --git a/gen-travel-times-app/src/main/resources/config.json b/gen-travel-times-app/src/main/resources/config.json new file mode 100644 index 00000000..b5f13d5f --- /dev/null +++ b/gen-travel-times-app/src/main/resources/config.json @@ -0,0 +1,109 @@ +{ + "EarthModelPath" : "./models/", + "FileExtension" : ".trv", + "OutputPath" : "./", + "WriteDebugFile" :true, + "Branches" : [ + { + "BranchName" : "P", + "EarthModel" : "ak135", # "ak135", "cus", "wus", "ogs", "cia" + "PhaseList" : [ + "Pb", + "Pg", + "Pn", + "P", + "Pdif", + "PKPpre", + "PKPdf" + ], + "MinimumDistance" : 0.0, + "MaximumDistance" : 180.0, + "NumberOfDistances" : 720, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + }, + { + "BranchName" : "S", + "EarthModel" : "ak135", + "PhaseList" : [ + "Sb", + "Sg", + "Sn", + "S", + "Sdif" + ], + "MinimumDistance" : 0.0, + "MaximumDistance" : 180.0, + "NumberOfDistances" : 720, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + }, + { + "BranchName" : "PcP", + "EarthModel" : "ak135", + "PhaseList" : [ + "PcP" + ], + "MinimumDistance" : 0.0, + "MaximumDistance" : 98.0, + "NumberOfDistances" : 392, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + }, + { + "BranchName" : "PP", + "EarthModel" : "ak135", + "PhaseList" : [ + "PP" + ], + "MinimumDistance" : 25.0, + "MaximumDistance" : 180.0, + "NumberOfDistances" : 620, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + }, + { + "BranchName" : "PKPab", + "EarthModel" : "ak135", + "PhaseList" : [ + "PKPab" + ], + "MinimumDistance" : 143.0, + "MaximumDistance" : 180.0, + "NumberOfDistances" : 148, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + }, + { + "BranchName" : "PKPbc", + "EarthModel" : "ak135", + "PhaseList" : [ + "PKPbc" + ], + "MinimumDistance" : 143.0, + "MaximumDistance" : 155.0, + "NumberOfDistances" : 48, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + }, + { + "BranchName" : "PKPdf", + "EarthModel" : "ak135", + "PhaseList" : [ + "PKPdf" + ], + "MinimumDistance" : 113.0, + "MaximumDistance" : 180.0, + "NumberOfDistances" : 268, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + } + ] +} \ No newline at end of file diff --git a/gen-travel-times-app/src/main/resources/config_cus.json b/gen-travel-times-app/src/main/resources/config_cus.json new file mode 100644 index 00000000..5a103abd --- /dev/null +++ b/gen-travel-times-app/src/main/resources/config_cus.json @@ -0,0 +1,44 @@ +{ + "EarthModelPath" : "./models/", + "FileExtension" : ".trv", + "OutputPath" : "./", + "WriteDebugFile" :true, + "Branches" : [ + { + "BranchName" : "P", + "FileName" : "cus_P" + "EarthModel" : "cus", + "PhaseList" : [ + "Pb", + "Pg", + "Pn", + "P", + "Pdif" + ], + "MinimumDistance" : 0.0, + "MaximumDistance" : 180.0, + "NumberOfDistances" : 720, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + }, + { + "BranchName" : "S", + "FileName" : "cus_S" + "EarthModel" : "cus", + "PhaseList" : [ + "Sb", + "Sg", + "Sn", + "S", + "Sdif" + ], + "MinimumDistance" : 0.0, + "MaximumDistance" : 180.0, + "NumberOfDistances" : 720, + "MinimumDepth" : 0.0, + "MaximumDepth" : 800.0, + "NumberOfDepths" : 160 + } + ] +} diff --git a/gen-travel-times-app/src/test/java/gov/usgs/GenTravelTimes/AppTest.java b/gen-travel-times-app/src/test/java/gov/usgs/GenTravelTimes/AppTest.java new file mode 100644 index 00000000..b044d3c7 --- /dev/null +++ b/gen-travel-times-app/src/test/java/gov/usgs/GenTravelTimes/AppTest.java @@ -0,0 +1,16 @@ +/* + * This Java source file was generated by the Gradle 'init' task. + */ +package gov.usgs.GenTravelTimes; + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class AppTest { + @Test + public void testAppHasAGreeting() { + App classUnderTest = new App(); + assertNotNull("app should have a greeting", classUnderTest.getGreeting()); + } +} diff --git a/glasscore/glasslib/src/Glass.cpp b/glasscore/glasslib/src/Glass.cpp index 558f1f9e..16364a92 100644 --- a/glasscore/glasslib/src/Glass.cpp +++ b/glasscore/glasslib/src/Glass.cpp @@ -331,6 +331,17 @@ bool CGlass::initialize(std::shared_ptr com) { // set up the first phase travel time m_pDefaultNucleationTravelTime->setup(phs, file); + std::string debugFile = ""; + if (phsObj.HasKey("DebugFile")) { + debugFile = phsObj["DebugFile"].ToString(); + } + double debugDepth = 0; + if (phsObj.HasKey("DebugDepth")) { + debugDepth = phsObj["DebugDepth"].ToDouble(); + } + if (debugFile != "") { + m_pDefaultNucleationTravelTime->writeToFile(debugFile, debugDepth); + } } else { std::lock_guard < std::mutex > ttGuard(m_TTTMutex); // if no first phase, default to P @@ -474,22 +485,32 @@ bool CGlass::initialize(std::shared_ptr com) { // set up this phase m_pAssociationTravelTimes->addPhase(phs, pdRange, pdAssoc, file); - - // test this phase - if (m_bTestTravelTimes) { - m_pAssociationTravelTimes->testTravelTimes(phs); - } } + } else { glass3::util::Logger::log("error", "No association Phase array provided"); return (false); } - // setup if we are going to print phase travel times for debuging - if ((com->HasKey("TestTravelTimes")) - && ((*com)["TestTravelTimes"].GetType() == json::ValueType::BoolVal)) { - m_bTestTravelTimes = (*com)["TestTravelTimes"].ToBool(); + std::string ttDebugPath = "./"; + if (com->HasKey("TTDebugPath")) { + ttDebugPath = (*com)["TTDebugPath"].ToString(); + } + + int numTTDebugDepths = 0; + json::Array ttDebugDepths; + if ((com->HasKey("TTDebugDepth") && + ((*com)["TTDebugDepth"].GetType() == json::ValueType::ArrayVal))) { + ttDebugDepths = (*com)["TTDebugDepth"].ToArray(); + numTTDebugDepths = ttDebugDepths.size(); + } + + if ((ttDebugPath != "") && (numTTDebugDepths > 0)) { + for (int z = 0; z < numTTDebugDepths; z++) { + m_pAssociationTravelTimes->writeToFiles(ttDebugPath, + ttDebugDepths[z].ToDouble()); + } } // Change locator diff --git a/glasscore/glasslib/src/Web.cpp b/glasscore/glasslib/src/Web.cpp index 02d97625..e531aba6 100644 --- a/glasscore/glasslib/src/Web.cpp +++ b/glasscore/glasslib/src/Web.cpp @@ -17,7 +17,6 @@ #include #include #include "Glass.h" -#include "Terra.h" #include "Pick.h" #include "Node.h" #include "SiteList.h" @@ -1011,6 +1010,29 @@ bool CWeb::loadTravelTimes(json::Object *gridConfiguration) { return (false); } + std::string ttDebugPath = "./"; + if (phsObj.HasKey("TTDebugPath")) { + ttDebugPath = phsObj["TTDebugPath"].ToString(); + } + + int numTTDebugDepths = 0; + json::Array ttDebugDepths; + if ((phsObj.HasKey("TTDebugDepth") && + (phsObj["TTDebugDepth"].GetType() == json::ValueType::ArrayVal))) { + ttDebugDepths = phsObj["TTDebugDepth"].ToArray(); + numTTDebugDepths = ttDebugDepths.size(); + } + + if ((ttDebugPath != "") && (numTTDebugDepths > 0)) { + for (int z = 0; z < numTTDebugDepths; z++) { + std::string fileName = ttDebugPath + "/" + m_sName + + + "nuc_" + m_pNucleationTravelTime1->m_sPhase + "_" + + std::to_string(ttDebugDepths[z].ToDouble()) + ".csv"; + + m_pNucleationTravelTime1->writeToFile(fileName, + ttDebugDepths[z].ToDouble()); + } + } } else { // if no first phase, use default from glass m_pNucleationTravelTime1.reset(); @@ -1074,6 +1096,30 @@ bool CWeb::loadTravelTimes(json::Object *gridConfiguration) { "location " + file + " for second phase: " + phs); return (false); } + + std::string ttDebugPath = "./"; + if (phsObj.HasKey("TTDebugPath")) { + ttDebugPath = phsObj["TTDebugPath"].ToString(); + } + + int numTTDebugDepths = 0; + json::Array ttDebugDepths; + if ((phsObj.HasKey("TTDebugDepth") && + (phsObj["TTDebugDepth"].GetType() == json::ValueType::ArrayVal))) { + ttDebugDepths = phsObj["TTDebugDepth"].ToArray(); + numTTDebugDepths = ttDebugDepths.size(); + } + + if ((ttDebugPath != "") && (numTTDebugDepths > 0)) { + for (int z = 0; z < numTTDebugDepths; z++) { + std::string fileName = ttDebugPath + "/" + m_sName + + + "nuc_" + m_pNucleationTravelTime2->m_sPhase + "_" + + std::to_string(ttDebugDepths[z].ToDouble()) + ".csv"; + + m_pNucleationTravelTime2->writeToFile(fileName, + ttDebugDepths[z].ToDouble()); + } + } } else { // no second phase // clean out old phase if any diff --git a/glasscore/testdata/P.trv b/glasscore/testdata/P.trv index 636894ee..1c43f704 100644 Binary files a/glasscore/testdata/P.trv and b/glasscore/testdata/P.trv differ diff --git a/glasscore/testdata/S.trv b/glasscore/testdata/S.trv index 1abfec98..7a22d758 100644 Binary files a/glasscore/testdata/S.trv and b/glasscore/testdata/S.trv differ diff --git a/glasscore/tests/hypo_unittest.cpp b/glasscore/tests/hypo_unittest.cpp index 59e11960..b9c8a785 100644 --- a/glasscore/tests/hypo_unittest.cpp +++ b/glasscore/tests/hypo_unittest.cpp @@ -59,19 +59,19 @@ #define ANNEAL_LATITUDE 42.011810141430075 #define ANNEAL_LONGITUDE -119.36313949833216 #define ANNEAL_DEPTH 3.7997271318948496 -#define ANNEAL_TIME 3648515731.6680002 +#define ANNEAL_TIME 3648515732.3372693 #define ANNEAL_BAYES 31.352108346757745 #define LOCALIZE_LATITUDE 42.011810141430075 #define LOCALIZE_LONGITUDE -119.36313949833216 -#define LOCALIZE_DEPTH 11.755308705815905 -#define LOCALIZE_TIME 3648515732.3961039 +#define LOCALIZE_DEPTH 10.038057115005586 +#define LOCALIZE_TIME 3648515732.3254061 #define LOCALIZE_BAYES 31.389001001003624 #define LOCALIZE_RES_LATITUDE 42.011810141430075 #define LOCALIZE_RES_LONGITUDE -119.36313949833216 -#define LOCALIZE_RES_DEPTH 11.755308705815905 -#define LOCALIZE_RES_TIME 3648515732.3961039 +#define LOCALIZE_RES_DEPTH 10.038057115005586 +#define LOCALIZE_RES_TIME 3648515731.985167 #define LOCALIZE_RES_BAYES 31.389001001003624 #define PRUNESIZE 0 diff --git a/glasscore/tests/terra_unittest.cpp b/glasscore/tests/terra_unittest.cpp deleted file mode 100644 index 5f621bca..00000000 --- a/glasscore/tests/terra_unittest.cpp +++ /dev/null @@ -1,454 +0,0 @@ -#include -#include - -#include - -#include "Terra.h" - - -#define TESTPATH "testdata" -#define MODELFILE "ak135_mod.d" - -#define NLAYER 138 -#define EARTHRADIUS 6371.0 -#define OUTERDISCONTINUITY 68 -#define INNERDISCONTINUITY 23 -#define NDISCONTINUITIES 8 - -#define PARSESTRING " 510.000 9.6960 5.2920 3.9248 3.8793" -#define PARSESIZE 5; -#define PARSEVALUE1 "510.000" -#define PARSEVALUE2 "9.6960" -#define PARSEVALUE3 "5.2920" -#define PARSEVALUE4 "3.9248" -#define PARSEVALUE5 "3.8793" - -#define TESTRADIUS 5523.0 -#define PINTERPOLATION 11.2028 -#define SINTERPOLATION 6.2715 - -#define TURNRADIUS 3479.5 - -#define EVALUATETEST 0.01345 -#define EVALUATETIMEP 0.10425 -#define EVALUATEDISTANCEP 0.0001 -#define EVALUATETAUP 0.076425 -#define EVALUATETIMES 0.18983 -#define EVALUATEDISTANCES 0.00010 -#define EVALUATETAUS 0.13393 - -#define INTEGRATETEST 13.46972 -#define INTEGRATETIMEP 107.62532 -#define INTEGRATEDISTANCEP 0.10845 -#define INTEGRATETAUP 79.99607 -#define INTEGRATETIMES 197.63114 -#define INTEGRATEDISTANCES 0.11443 -#define INTEGRATETAUS 142.94343 - -#define ROMBERGTEST 13.46972 -#define ROMBERGTIMEP 107.61990 -#define ROMBERGDISTANCEP 0.10845 -#define ROMBERGTAUP 79.99345 -#define ROMBERGTIMES 197.62740 -#define ROMBERGDISTANCES 0.11443 -#define ROMBERGTAUS 142.93856 - -// test to see if the hypo can be constructed -TEST(TerraTest, Construction) { - glass3::util::Logger::disable(); - - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - // assert default values - ASSERT_EQ(0, testTerra->nLayer)<< "nLayer is zero"; - ASSERT_EQ(0, testTerra->dEarthRadius)<< "dEarthRadius is zero"; - ASSERT_EQ(-1, testTerra->iOuterDiscontinuity)<< "iOuterDiscontinuity is -1"; - ASSERT_EQ(-1, testTerra->iInnerDiscontinuity)<< "iInnerDiscontinuity is -1"; - ASSERT_EQ(0, testTerra->nDiscontinuities)<< "nDiscontinuities is zero"; -} - -// test to see if the hypo can be constructed -TEST(TerraTest, Load) { - glass3::util::Logger::disable(); - - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - // build model path - std::string testModelPath = "./" + std::string(TESTPATH) + "/" - + std::string(MODELFILE); - - // load model - bool result = testTerra->load(testModelPath.c_str()); - - // check success - ASSERT_TRUE(result)<< "load successful"; - - // assert loaded values - // check nLayer - int nLayer = testTerra->nLayer; - int expectedNLayer = NLAYER; - ASSERT_EQ(nLayer, expectedNLayer); - - // check earthRadius - double earthRadius = testTerra->dEarthRadius; - double expectedEarthRadius = EARTHRADIUS; - ASSERT_NEAR(earthRadius, expectedEarthRadius, 0.0001); - - // check outerDiscontinuity - int outerDiscontinuity = testTerra->iOuterDiscontinuity; - int expectedOuterDiscontinuity = OUTERDISCONTINUITY; - ASSERT_EQ(outerDiscontinuity, expectedOuterDiscontinuity); - - // check innerDiscontinuity - int innerDiscontinuity = testTerra->iInnerDiscontinuity; - int expectedInnerDiscontinuity = INNERDISCONTINUITY; - ASSERT_EQ(innerDiscontinuity, expectedInnerDiscontinuity); - - // check nDiscontinuities - int nDiscontinuities = testTerra->nDiscontinuities; - int expectedNDiscontinuities = NDISCONTINUITIES; - ASSERT_EQ(nDiscontinuities, expectedNDiscontinuities); - - // now clear - testTerra->clear(); - - // assert default values - ASSERT_EQ(0, testTerra->nLayer)<< "nLayer is zero"; - ASSERT_EQ(0, testTerra->dEarthRadius)<< "dEarthRadius is zero"; - ASSERT_EQ(-1, testTerra->iOuterDiscontinuity)<< "iOuterDiscontinuity is -1"; - ASSERT_EQ(-1, testTerra->iInnerDiscontinuity)<< "iInnerDiscontinuity is -1"; - ASSERT_EQ(0, testTerra->nDiscontinuities)<< "nDiscontinuities is zero"; -} - -TEST(TerraTest, Parse) { - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - std::string parseLine = std::string(PARSESTRING); - - json::Array results = testTerra->parse(parseLine.c_str()); - - // check data - // size - int size = results.size(); - int expectedSize = PARSESIZE; - ASSERT_EQ(size, expectedSize); - - // check value 1 - std::string value1 = results[0]; - std::string expectedValue1 = std::string(PARSEVALUE1); - ASSERT_STREQ(value1.c_str(), expectedValue1.c_str()); - - // check value 2 - std::string value2 = results[1]; - std::string expectedValue2 = std::string(PARSEVALUE2); - ASSERT_STREQ(value2.c_str(), expectedValue2.c_str()); - - // check value 3 - std::string value3 = results[2]; - std::string expectedValue3 = std::string(PARSEVALUE3); - ASSERT_STREQ(value3.c_str(), expectedValue3.c_str()); - - // check value 4 - std::string value4 = results[3]; - std::string expectedValue4 = std::string(PARSEVALUE4); - ASSERT_STREQ(value4.c_str(), expectedValue4.c_str()); - - // check value 5 - std::string value5 = results[4]; - std::string expectedValue5 = std::string(PARSEVALUE5); - ASSERT_STREQ(value5.c_str(), expectedValue5.c_str()); -} - -// test Interpolate velocity for P -TEST(TerraTest, PTest) { - glass3::util::Logger::disable(); - - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - // build model path - std::string testModelPath = "./" + std::string(TESTPATH) + "/" - + std::string(MODELFILE); - - // load model - bool result = testTerra->load(testModelPath.c_str()); - - // check success - ASSERT_TRUE(result)<< "load successful"; - - // check p interpolation - double pInterpolation = testTerra->P(TESTRADIUS); - double expectedPInterpolation = PINTERPOLATION; - ASSERT_NEAR(pInterpolation, expectedPInterpolation, 0.0001); -} - -// test Interpolate velocity for S -TEST(TerraTest, STest) { - glass3::util::Logger::disable(); - - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - // build model path - std::string testModelPath = "./" + std::string(TESTPATH) + "/" - + std::string(MODELFILE); - - // load model - bool result = testTerra->load(testModelPath.c_str()); - - // check success - ASSERT_TRUE(result)<< "load successful"; - - // check p interpolation - double sInterpolation = testTerra->S(TESTRADIUS); - double expectedSInterpolation = SINTERPOLATION; - ASSERT_NEAR(sInterpolation, expectedSInterpolation, 0.0001); -} - -// Note that testTerra->P and testTerra->S just call interpolateVelocity -// so why test it. - -// test calcuating turning radius -TEST(TerraTest, TurnRadius) { - glass3::util::Logger::disable(); - - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - // build model path - std::string testModelPath = "./" + std::string(TESTPATH) + "/" - + std::string(MODELFILE); - - // load model - bool result = testTerra->load(testModelPath.c_str()); - - // check success - ASSERT_TRUE(result)<< "load successful"; - - // compute test values (for P) - int lowerIndex = testTerra->iOuterDiscontinuity + 1; - int upperIndex = testTerra->nLayer - 1; - int layerIndex = testTerra->iOuterDiscontinuity + 1; - double rayParam = testTerra->dLayerRadii[layerIndex] - / testTerra->dLayerPVel[layerIndex]; - - // Check P turning radius - double turnRadius = testTerra->calculateTurnRadius(lowerIndex, upperIndex, - testTerra->dLayerPVel, - rayParam); - double expectedTurnRadius = TURNRADIUS; - ASSERT_NEAR(turnRadius, expectedTurnRadius, 0.0001); -} - -// test calcuating evaluate function -TEST(TerraTest, EvaluateFunction) { - glass3::util::Logger::disable(); - - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - // build model path - std::string testModelPath = "./" + std::string(TESTPATH) + "/" - + std::string(MODELFILE); - - // load model - bool result = testTerra->load(testModelPath.c_str()); - - // check success - ASSERT_TRUE(result)<< "load successful"; - - // compute ray parameters - int layerIndex = testTerra->iOuterDiscontinuity + 1; - double rayParamP = testTerra->dLayerRadii[layerIndex] - / testTerra->dLayerPVel[layerIndex]; - double rayParamS = testTerra->dLayerRadii[layerIndex] - / testTerra->dLayerSVel[layerIndex]; - - double earthRadius = TESTRADIUS; - - // Check evaluateFunction FUN_TEST - double test = testTerra->evaluateFunction(FUN_TEST, earthRadius, rayParamP); - double expectedTest = EVALUATETEST; - ASSERT_NEAR(test, expectedTest, 0.0001); - - // Check evaluateFunction FUN_P_TIME - double timeP = testTerra->evaluateFunction(FUN_P_TIME, earthRadius, - rayParamP); - double expectedTimeP = EVALUATETIMEP; - ASSERT_NEAR(timeP, expectedTimeP, 0.0001); - - // Check evaluateFunction FUN_P_DELTA - double distanceP = testTerra->evaluateFunction(FUN_P_DELTA, earthRadius, - rayParamP); - double expectedDistanceP = EVALUATEDISTANCEP; - ASSERT_NEAR(distanceP, expectedDistanceP, 0.0001); - - // Check evaluateFunction FUN_P_TAU - double tauP = testTerra->evaluateFunction(FUN_P_TAU, earthRadius, - rayParamP); - double expectedTauP = EVALUATETAUP; - ASSERT_NEAR(tauP, expectedTauP, 0.0001); - - // Check evaluateFunction FUN_S_TIME - double timeS = testTerra->evaluateFunction(FUN_S_TIME, earthRadius, - rayParamS); - double expectedTimeS = EVALUATETIMES; - ASSERT_NEAR(timeS, expectedTimeS, 0.0001); - - // Check evaluateFunction FUN_S_DELTA - double distanceS = testTerra->evaluateFunction(FUN_S_DELTA, earthRadius, - rayParamS); - double expectedDistanceS = EVALUATEDISTANCES; - ASSERT_NEAR(distanceS, expectedDistanceS, 0.0001); - - // Check evaluateFunction FUN_S_TAU - double tauS = testTerra->evaluateFunction(FUN_S_TAU, earthRadius, - rayParamS); - double expectedTauS = EVALUATETAUS; - ASSERT_NEAR(tauS, expectedTauS, 0.0001); -} - -// test integrating ray segment -TEST(TerraTest, IntegrateRaySegment) { - glass3::util::Logger::disable(); - - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - // build model path - std::string testModelPath = "./" + std::string(TESTPATH) + "/" - + std::string(MODELFILE); - - // load model - bool result = testTerra->load(testModelPath.c_str()); - - // check success - ASSERT_TRUE(result)<< "load successful"; - - // compute ray parameters - int layerIndex = testTerra->iOuterDiscontinuity + 1; - double rayParamP = testTerra->dLayerRadii[layerIndex] - / testTerra->dLayerPVel[layerIndex]; - double rayParamS = testTerra->dLayerRadii[layerIndex] - / testTerra->dLayerSVel[layerIndex]; - - // set up radius - double startRadius = TESTRADIUS - 500; - double endRadius = TESTRADIUS + 500; - - // Check integrateRaySegment FUN_TEST - double test = testTerra->integrateRaySegment(FUN_TEST, startRadius, - endRadius, rayParamP); - double expectedTest = INTEGRATETEST; - ASSERT_NEAR(test, expectedTest, 0.0001); - - // Check integrateRaySegment FUN_P_TIME - double timeP = testTerra->integrateRaySegment(FUN_P_TIME, startRadius, - endRadius, rayParamP); - double expectedTimeP = INTEGRATETIMEP; - ASSERT_NEAR(timeP, expectedTimeP, 0.0001); - - // Check integrateRaySegment FUN_P_DELTA - double distanceP = testTerra->integrateRaySegment(FUN_P_DELTA, startRadius, - endRadius, rayParamP); - double expectedDistanceP = INTEGRATEDISTANCEP; - ASSERT_NEAR(distanceP, expectedDistanceP, 0.0001); - - // Check integrateRaySegment FUN_P_TAU - double tauP = testTerra->integrateRaySegment(FUN_P_TAU, startRadius, - endRadius, rayParamP); - double expectedTauP = INTEGRATETAUP; - ASSERT_NEAR(tauP, expectedTauP, 0.0001); - - // Check integrateRaySegment FUN_S_TIME - double timeS = testTerra->integrateRaySegment(FUN_S_TIME, startRadius, - endRadius, rayParamS); - double expectedTimeS = INTEGRATETIMES; - ASSERT_NEAR(timeS, expectedTimeS, 0.0001); - - // Check integrateRaySegment FUN_S_DELTA - double distanceS = testTerra->integrateRaySegment(FUN_S_DELTA, startRadius, - endRadius, rayParamS); - double expectedDistanceS = INTEGRATEDISTANCES; - ASSERT_NEAR(distanceS, expectedDistanceS, 0.0001); - - // Check integrateRaySegment FUN_S_TAU - double tauS = testTerra->integrateRaySegment(FUN_S_TAU, startRadius, - endRadius, rayParamS); - double expectedTauS = INTEGRATETAUS; - ASSERT_NEAR(tauS, expectedTauS, 0.0001); -} - -// test integrating ray segment -TEST(TerraTest, RombergIntegration) { - glass3::util::Logger::disable(); - - // construct a Terra object - traveltime::CTerra * testTerra = new traveltime::CTerra(); - - // build model path - std::string testModelPath = "./" + std::string(TESTPATH) + "/" - + std::string(MODELFILE); - - // load model - bool result = testTerra->load(testModelPath.c_str()); - - // check success - ASSERT_TRUE(result)<< "load successful"; - - // compute ray parameters - int layerIndex = testTerra->iOuterDiscontinuity + 1; - double rayParamP = testTerra->dLayerRadii[layerIndex] - / testTerra->dLayerPVel[layerIndex]; - double rayParamS = testTerra->dLayerRadii[layerIndex] - / testTerra->dLayerSVel[layerIndex]; - - // set up radius - double startRadius = TESTRADIUS - 500; - double endRadius = TESTRADIUS + 500; - - // Check integrateRaySegment FUN_TEST - double test = testTerra->rombergIntegration(FUN_TEST, startRadius, - endRadius, rayParamP); - double expectedTest = ROMBERGTEST; - ASSERT_NEAR(test, expectedTest, 0.0001); - - // Check integrateRaySegment FUN_P_TIME - double timeP = testTerra->rombergIntegration(FUN_P_TIME, startRadius, - endRadius, rayParamP); - double expectedTimeP = ROMBERGTIMEP; - ASSERT_NEAR(timeP, expectedTimeP, 0.0001); - - // Check integrateRaySegment FUN_P_DELTA - double distanceP = testTerra->rombergIntegration(FUN_P_DELTA, startRadius, - endRadius, rayParamP); - double expectedDistanceP = ROMBERGDISTANCEP; - ASSERT_NEAR(distanceP, expectedDistanceP, 0.0001); - - // Check integrateRaySegment FUN_P_TAU - double tauP = testTerra->rombergIntegration(FUN_P_TAU, startRadius, - endRadius, rayParamP); - double expectedTauP = ROMBERGTAUP; - ASSERT_NEAR(tauP, expectedTauP, 0.0001); - - // Check integrateRaySegment FUN_S_TIME - double timeS = testTerra->rombergIntegration(FUN_S_TIME, startRadius, - endRadius, rayParamS); - double expectedTimeS = ROMBERGTIMES; - ASSERT_NEAR(timeS, expectedTimeS, 0.0001); - - // Check integrateRaySegment FUN_S_DELTA - double distanceS = testTerra->rombergIntegration(FUN_S_DELTA, startRadius, - endRadius, rayParamS); - double expectedDistanceS = ROMBERGDISTANCES; - ASSERT_NEAR(distanceS, expectedDistanceS, 0.0001); - - // Check integrateRaySegment FUN_S_TAU - double tauS = testTerra->rombergIntegration(FUN_S_TAU, startRadius, - endRadius, rayParamS); - double expectedTauS = ROMBERGTAUS; - ASSERT_NEAR(tauS, expectedTauS, 0.0001); -} diff --git a/glasscore/tests/timewarp_unittest.cpp b/glasscore/tests/timewarp_unittest.cpp deleted file mode 100644 index 13bdcf3c..00000000 --- a/glasscore/tests/timewarp_unittest.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include - -#include - -#include "TimeWarp.h" - -#define GRIDMINIMUM 0.0 -#define GRIDMAXIMUM 360.0 -#define DECAYCONSTANT 0.10 -#define SLOPEZERO 0.05 -#define SLOPEINFINITY 1.0 -#define GRIDINDEX 66.6392 -#define GRIDVALUE 4 - -// tests to see if the timewarp can be constructed -TEST(TimeWarpTest, Construction) { - glass3::util::Logger::disable(); - - // construct a timewarp - traveltime::CTimeWarp timeWarp(GRIDMINIMUM, GRIDMAXIMUM, DECAYCONSTANT, - SLOPEZERO, - SLOPEINFINITY); - - // setup? - ASSERT_TRUE(timeWarp.m_bSetup); - - // dGridMinimum - ASSERT_EQ(GRIDMINIMUM, timeWarp.m_dGridMinimum)<< "Grid Minimum Check"; - - // dGridMaximum - ASSERT_EQ(GRIDMAXIMUM, timeWarp.m_dGridMaximum)<< "Grid Maximum Check"; - - // dDecayConstant - ASSERT_EQ(DECAYCONSTANT, timeWarp.m_dDecayConstant)<< "Decay Constant Check"; - - // dSlopeZero - ASSERT_EQ(SLOPEZERO, timeWarp.m_dSlopeZero)<< "Slope Zero Check"; - - // dSlopeInfinity - ASSERT_EQ(SLOPEINFINITY, timeWarp.m_dSlopeInfinity)<< "Slope Infinity Check"; -} - -// tests the time warp copy constructor -TEST(TimeWarpTest, Copy) { - glass3::util::Logger::disable(); - - // construct a timewarp - traveltime::CTimeWarp timeWarp1; - - // setup? - ASSERT_FALSE(timeWarp1.m_bSetup); - - // dGridMinimum - ASSERT_EQ(0, timeWarp1.m_dGridMinimum)<< "Grid Minimum Check"; - - // dGridMaximum - ASSERT_EQ(0, timeWarp1.m_dGridMaximum)<< "Grid Maximum Check"; - - // dDecayConstant - ASSERT_EQ(0, timeWarp1.m_dDecayConstant)<< "Decay Constant Check"; - - // dSlopeZero - ASSERT_EQ(0, timeWarp1.m_dSlopeZero)<< "Slope Zero Check"; - - // dSlopeInfinity - ASSERT_EQ(0, timeWarp1.m_dSlopeInfinity)<< "Slope Infinity Check"; - - // construct a second timewarp - traveltime::CTimeWarp timeWarp2(GRIDMINIMUM, GRIDMAXIMUM, DECAYCONSTANT, - SLOPEZERO, - SLOPEINFINITY); - // copy - timeWarp1 = traveltime::CTimeWarp(timeWarp2); - - // setup? - ASSERT_TRUE(timeWarp1.m_bSetup); - - // dGridMinimum - ASSERT_EQ(GRIDMINIMUM, timeWarp1.m_dGridMinimum)<< "Grid Minimum Check"; - - // dGridMaximum - ASSERT_EQ(GRIDMAXIMUM, timeWarp1.m_dGridMaximum)<< "Grid Maximum Check"; - - // dDecayConstant - ASSERT_EQ(DECAYCONSTANT, timeWarp1.m_dDecayConstant)<< "Decay Constant Check"; - - // dSlopeZero - ASSERT_EQ(SLOPEZERO, timeWarp1.m_dSlopeZero)<< "Slope Zero Check"; - - // dSlopeInfinity - ASSERT_EQ(SLOPEINFINITY, timeWarp1.m_dSlopeInfinity)<< "Slope Infinity Check"; -} - -// tests the time warp operations -TEST(TimeWarpTest, Operations) { - glass3::util::Logger::disable(); - - // construct a timewarp - traveltime::CTimeWarp timeWarp(GRIDMINIMUM, GRIDMAXIMUM, DECAYCONSTANT, - SLOPEZERO, - SLOPEINFINITY); - - ASSERT_NEAR(GRIDINDEX, timeWarp.calculateGridPoint(GRIDVALUE), 0.0001)<< "Grid Index Check"; - - ASSERT_NEAR(GRIDVALUE, timeWarp.calculateValue(GRIDINDEX), 0.001)<< "Grid Value Check"; -} diff --git a/glasscore/tests/traveltime_unittest.cpp b/glasscore/tests/traveltime_unittest.cpp index 4ccb133a..d58bcf14 100644 --- a/glasscore/tests/traveltime_unittest.cpp +++ b/glasscore/tests/traveltime_unittest.cpp @@ -10,16 +10,22 @@ #define PHASE "P" #define PHASEFILENAME "P.trv" -#define NDISTANCEWARP 550 -#define NDEPTHWARP 105 +#define NDISTANCES 720 +#define MINDIST 0.0 +#define MAXDIST 180.0 + +#define NDEPTHS 160 +#define MINDEPTH 0.0 +#define MAXDEPTH 800.0 #define LATITUDE 0.0 #define LONGITUDE 0.0 #define DEPTH 50.0 #define DISTANCE 50.0 -#define TIME 529.2 -#define TIME2 50.553 -#define BILINEAR 50.553 +#define DELTATIME 529.2172 +#define GEOTIME 529.217199 +#define TIME2 169.71368 +#define BILINEAR 529.217200 // tests to see if the traveltime can be constructed TEST(TravelTimeTest, Construction) { @@ -28,11 +34,23 @@ TEST(TravelTimeTest, Construction) { // construct a traveltime traveltime::CTravelTime traveltime; - // nDistanceWarp - ASSERT_EQ(0, traveltime.m_iNumDistanceWarp)<< "nDistanceWarp Check"; + // m_iNumDistances + ASSERT_EQ(0, traveltime.m_iNumDistances)<< "m_iNumDistances Check"; + + // m_dMinimumDistance + ASSERT_EQ(0, traveltime.m_dMinimumDistance)<< "m_dMinimumDistance Check"; + + // m_dMaximumDistance + ASSERT_EQ(0, traveltime.m_dMaximumDistance)<< "m_dMaximumDistance Check"; + + // m_iNumDepths + ASSERT_EQ(0, traveltime.m_iNumDepths)<< "m_iNumDepths Check"; - // nDepthWarp - ASSERT_EQ(0, traveltime.m_iNumDepthWarp)<< "nDepthWarp Check"; + // m_dMinimumDepth + ASSERT_EQ(0, traveltime.m_dMinimumDepth)<< "m_dMinimumDepth Check"; + + // m_dMaximumDepth + ASSERT_EQ(0, traveltime.m_dMaximumDepth)<< "m_dMaximumDepth Check"; // dDepth ASSERT_EQ(0, traveltime.m_dDepth)<< "Depth Check"; @@ -41,11 +59,7 @@ TEST(TravelTimeTest, Construction) { ASSERT_EQ(0, traveltime.m_dDelta)<< "Delta Check"; // pointers - ASSERT_EQ(NULL, traveltime.m_pDistanceWarp)<< "pDistanceWarp null"; - ASSERT_EQ(NULL, traveltime.m_pDepthWarp)<< "pDepthWarp null"; ASSERT_EQ(NULL, traveltime. m_pTravelTimeArray)<< "pTravelTimeArray null"; - ASSERT_EQ(NULL, traveltime.m_pDepthDistanceArray)<< "pDepthDistanceArray null"; - ASSERT_EQ(NULL, traveltime.m_pPhaseArray)<< "pPhaseArray null"; } // tests to see if the traveltime can be setup @@ -65,11 +79,23 @@ TEST(TravelTimeTest, Setup) { // phase name ASSERT_STREQ(traveltime.m_sPhase.c_str(), phasename.c_str()); - // nDistanceWarp - ASSERT_EQ(NDISTANCEWARP, traveltime.m_iNumDistanceWarp)<< "nDistanceWarp Check"; + // m_iNumDistances + ASSERT_EQ(NDISTANCES, traveltime.m_iNumDistances)<< "m_iNumDistances Check"; + + // m_dMinimumDistance + ASSERT_NEAR(MINDIST, traveltime.m_dMinimumDistance, .001)<< "m_dMinimumDistance Check"; + + // m_dMaximumDistance + ASSERT_NEAR(MAXDIST, traveltime.m_dMaximumDistance, .001)<< "m_dMaximumDistance Check"; - // nDepthWarp - ASSERT_EQ(NDEPTHWARP, traveltime.m_iNumDepthWarp)<< "nDepthWarp Check"; + // m_iNumDepths + ASSERT_EQ(NDEPTHS, traveltime.m_iNumDepths)<< "m_iNumDepths Check"; + + // m_dMinimumDepth + ASSERT_NEAR(MINDEPTH, traveltime.m_dMinimumDepth, .001)<< "m_dMinimumDepth Check"; + + // m_dMaximumDepth + ASSERT_NEAR(MAXDEPTH, traveltime.m_dMaximumDepth, .001)<< "m_dMaximumDepth Check"; // dDepth ASSERT_EQ(0, traveltime.m_dDepth)<< "Depth Check"; @@ -78,13 +104,8 @@ TEST(TravelTimeTest, Setup) { ASSERT_EQ(0, traveltime.m_dDelta)<< "Delta Check"; // pointers - ASSERT_TRUE(NULL != traveltime.m_pDistanceWarp)<< "pDistanceWarp not null"; - ASSERT_TRUE(NULL != traveltime.m_pDepthWarp)<< "pDepthWarp not null"; ASSERT_TRUE(NULL != traveltime. m_pTravelTimeArray)<< "pTravelTimeArray not " "null"; - ASSERT_TRUE(NULL != traveltime.m_pDepthDistanceArray)<< "pDepthDistanceArray " - "not null"; - ASSERT_TRUE(NULL != traveltime.m_pPhaseArray)<< "pPhaseArray not null"; } // tests the time warp copy constructor @@ -110,11 +131,23 @@ TEST(TravelTimeTest, Copy) { // phase name ASSERT_STREQ(traveltime1.m_sPhase.c_str(), phasename.c_str()); - // nDistanceWarp - ASSERT_EQ(NDISTANCEWARP, traveltime1.m_iNumDistanceWarp)<< "nDistanceWarp Check"; + // m_iNumDistances + ASSERT_EQ(NDISTANCES, traveltime1.m_iNumDistances)<< "m_iNumDistances Check"; + + // m_dMinimumDistance + ASSERT_NEAR(MINDIST, traveltime1.m_dMinimumDistance, .001)<< "m_dMinimumDistance Check"; + + // m_dMaximumDistance + ASSERT_NEAR(MAXDIST, traveltime1.m_dMaximumDistance, .001)<< "m_dMaximumDistance Check"; + + // m_iNumDepths + ASSERT_EQ(NDEPTHS, traveltime1.m_iNumDepths)<< "m_iNumDepths Check"; + + // m_dMinimumDepth + ASSERT_NEAR(MINDEPTH, traveltime1.m_dMinimumDepth, .001)<< "m_dMinimumDepth Check"; - // nDepthWarp - ASSERT_EQ(NDEPTHWARP, traveltime1.m_iNumDepthWarp)<< "nDepthWarp Check"; + // m_dMaximumDepth + ASSERT_NEAR(MAXDEPTH, traveltime1.m_dMaximumDepth, .001)<< "m_dMaximumDepth Check"; // dDepth ASSERT_NEAR(DEPTH, traveltime1.m_dDepth, 0.001)<< "Depth Check"; @@ -123,13 +156,8 @@ TEST(TravelTimeTest, Copy) { ASSERT_EQ(0, traveltime1.m_dDelta)<< "Delta Check"; // pointers - ASSERT_TRUE(NULL != traveltime1.m_pDistanceWarp)<< "pDistanceWarp not null"; - ASSERT_TRUE(NULL != traveltime1.m_pDepthWarp)<< "pDepthWarp not null"; ASSERT_TRUE(NULL != traveltime1. m_pTravelTimeArray)<< "pTravelTimeArray not " "null"; - ASSERT_TRUE(NULL != traveltime1.m_pDepthDistanceArray)<< "pDepthDistanceArray " - "not null"; - ASSERT_TRUE(NULL != traveltime1.m_pPhaseArray)<< "pPhaseArray not null"; } // tests traveltime operations @@ -150,7 +178,7 @@ TEST(TravelTimeTest, Operations) { traveltime.setTTOrigin(LATITUDE, LONGITUDE, DEPTH); // T(delta) - ASSERT_NEAR(TIME, traveltime.T(DISTANCE), 0.001)<< "T(delta) Check"; + ASSERT_NEAR(DELTATIME, traveltime.T(DISTANCE), 0.001)<< "T(delta) Check"; // dDepth ASSERT_NEAR(DEPTH, traveltime.m_dDepth, 0.001)<< "Depth Check"; @@ -162,7 +190,7 @@ TEST(TravelTimeTest, Operations) { testGeo.setGeographic(LATITUDE, LONGITUDE + DISTANCE, DEPTH); // T(geo) - ASSERT_NEAR(TIME, traveltime.T(&testGeo), 0.001)<< "T(geo) Check"; + ASSERT_NEAR(GEOTIME, traveltime.T(&testGeo), 0.001)<< "T(geo) Check"; // dDepth ASSERT_NEAR(DEPTH, traveltime.m_dDepth, 0.001)<< "Depth Check"; @@ -174,5 +202,5 @@ TEST(TravelTimeTest, Operations) { ASSERT_NEAR(TIME2, traveltime.T(DISTANCE,DEPTH), 0.001)<< "T(delta, distance) Check"; // NOLINT // bilinear - ASSERT_NEAR(BILINEAR, traveltime.bilinear(DISTANCE,DEPTH), 0.001)<< "bilinear Check"; // NOLINT + // ASSERT_NEAR(BILINEAR, traveltime.bilinear(DISTANCE,DEPTH), 0.001)<< "bilinear Check"; // NOLINT } diff --git a/glasscore/tests/ttt_unittest.cpp b/glasscore/tests/ttt_unittest.cpp index 78fac75d..f0a8e8b9 100644 --- a/glasscore/tests/ttt_unittest.cpp +++ b/glasscore/tests/ttt_unittest.cpp @@ -19,10 +19,10 @@ #define DISTANCE 20.0 #define BADDISTANCE 160.0 #define BADDEPTH 800 -#define TIME1 265.0485 -#define TIME2 484.4298 -#define TIME3 268.3447 -#define TIME4 490.4684 +#define TIME1 265.071320 +#define TIME2 484.43422 +#define TIME3 268.36624 +#define TIME4 490.47196 #define BADTIME -1 // tests to see if the ttt can be constructed diff --git a/glasscore/traveltime/include/GenTrv.h b/glasscore/traveltime/include/GenTrv.h deleted file mode 100644 index f204087e..00000000 --- a/glasscore/traveltime/include/GenTrv.h +++ /dev/null @@ -1,200 +0,0 @@ -/***************************************** - * This file is documented for Doxygen. - * If you modify this file please update - * the comments so that Doxygen will still - * be able to work. - ****************************************/ -#ifndef GENTRV_H -#define GENTRV_H - -#include -#include -#include -#include - -namespace traveltime { - -class CTerra; -class CRay; -class CTimeWarp; - -/** - * \brief traveltime branch generator - * - * The CGenTrv class is used to generate the travel time table files used - * by CTrv to rapidly calculate travel times using cubic interpolation - * a N x M grid given a json configuration of the phase/branches to generate. - */ -class CGenTrv { - public: - /** - * \brief CGenTrv constructor - */ - CGenTrv(); - - /** - * \brief CGenTrv constructor - * - * The constructor for the CGenTrv class. - * Initializes members to provided values. - * - * \param modelFile - A std::string containing the model file name - * \param outputPath - A std::string containing the output path - * \param fileExtension - A std::string containing the output file extension - */ - CGenTrv(std::string modelFile, std::string outputPath, - std::string fileExtension); - - /** - * \brief CGenTrv destructor - */ - ~CGenTrv(); - - /** - * \brief CGenTrv clear function - */ - void clear(); - - /** - * \brief CGenTrv setup function - * - * The setup function for the CGenTrv class. - * Initializes members to provided values. - * - * \param modelFile - A std::string containing the model file name - * \param outputPath - A std::string containing the output path - * \param fileExtension - A std::string containing the output file extension - * \return returns true if successful, false otherwise - */ - bool setup(std::string modelFile, std::string outputPath, - std::string fileExtension); - - /** - * \brief Generate travel time file - * - * Generate a travel time file based on the provided json configuration - * - * \param com - A pointer to a json object containing the configuration - * for the travel time file - * \return Returns true if the file was generated, false otherwise. - */ - bool generate(json::Object *com); - - /** - * \brief Generate depth row of the travel time interpolation grid - * - * Generate A row of travel times and a row distances indexed by the - * given depth. - * - * \param iDepth - An integer containing the index of the depth row being - * generated - * \param travelTimeArray - A pointer to an array of double values - * filled in with the travel times for the given depth index - * \param depthDistanceArray - A pointer to an array of double values - * filled in with the distances for the given depth index - * \param phaseArray - A pointer to an array of characters containing the - * filled in with the phases for the given depth index - * \return Returns the number of holes (discontinuities?) patched during - * generation. - */ - int Row(int iDepth, double *travelTimeArray, double *depthDistanceArray, - char *phaseArray); - - /** - * \brief Compute travel time - * - * Compute the traveltime from the given phase, distance, and depth - * - * This routine uses reciprocity to calculate travel times when source is - * above station - * - * \param phase - A std::string containing the phase to use - * \param delta - A double value containing the distance to use - * \param depth - A double value containing the depth to use - * \return Returns true if successful, false otherwise - */ - bool T(std::string phase, double delta, double depth); - - /** - * \brief A string containing the output path - */ - std::string m_OutputPath; - - /** - * \brief A string containing the output file extension - */ - std::string m_FileExtension; - - /** - * \brief A boolean flag indicating whether CGenTrav has been set up - */ - bool bSetup = false; - - /** - * \brief An integer variable containing the number of rays to generate - */ - int nRays; - - /** - * \brief An integer variable containing the grid index for the distance - * warp - */ - int nDistanceWarp; - - /** - * \brief An integer variable containing the grid index for the depth - * warp - */ - int nDepthWarp; - - /** - * \brief A double variable containing the most recent travel time value - * calculated by T() - */ - double dTravelTime; - - /** - * \brief A double variable containing the most recent depth distance value - * calculated by T() - */ - double dDepthDistance; - - /** - * \brief A double variable containing the most recent ray parameter value - * calculated by T() - */ - double rayParameter; - - /** - * \brief A string containing the most recent phase calculated by T() - */ - std::string Phase; - - /** - * \brief A vector of strings containing the names of rays to generate - */ - std::vector vRays; - - /** - * \brief A pointer to the earth model object used in generation - */ - CTerra *pTerra; - - /** - * \brief A pointer to the travel time ray parameters object used in - * generation - */ - CRay *pRay; - - /** - * \brief A pointer to the distance warp object used in generation - */ - CTimeWarp *pDistanceWarp; - - /** - * \brief A pointer to the depth warp object used in generation - */ - CTimeWarp *pDepthWarp; -}; -} // namespace traveltime -#endif // GENTRV_H diff --git a/glasscore/traveltime/include/Ray.h b/glasscore/traveltime/include/Ray.h deleted file mode 100644 index 75538806..00000000 --- a/glasscore/traveltime/include/Ray.h +++ /dev/null @@ -1,338 +0,0 @@ -/***************************************** - * This file is documented for Doxygen. - * If you modify this file please update - * the comments so that Doxygen will still - * be able to work. - ****************************************/ -#ifndef RAY_H -#define RAY_H - -namespace traveltime { - -/** - * \brief enumeration of possible travel time ray phase indexes - */ -enum PhaseIndexes { - RAY_Pup, - RAY_P, - RAY_Pdiff, - RAY_PP, - RAY_PPP, - RAY_PKP, - RAY_PKIKP, - RAY_PKPab, - RAY_PKPbc, - RAY_PKPdf, - RAY_PcP, - RAY_Sup, - RAY_S, - RAY_Sdiff, - RAY_SS, - RAY_SSS -}; - -/** - * \brief array containing possible travel time ray phase names - */ -static const char *PhaseIndexesValues[] = { "Pup", "P", "Pdiff", "PP", "PPP", - "PKP", "PKIKP", "PKPab", "PKPbc", "PKPdf", "PcP", "Sup", "S", "Sdiff", - "SS", "SSS" }; - -/** - * \brief number of possible travel time ray phases - */ -static const int nPhase = 16; - -class CTerra; -class CGeo; - -/** - * \brief traveltime ray path class - * - * The traveltime CRay class is a class that encapsulates - * calculating travel time ray parameters, and using the ray - * parameters to calculate expected travel times and distances. - * The Ray parameters are calculated via inversions over a - * provided CTerra earth structure model. - * - * Note that as written, CRay is NOT thread safe. - */ -class CRay { - public: - /** - * \brief CRay constructor - * - * The constructor for the CRay class. - */ - CRay(); - - /** - * \brief CRay advanced constructor - * - * The advanced constructor for the CRay class. - * - * \param terra - A pointer to the CTerra for CRay to use - */ - explicit CRay(CTerra *terra); - - /** - * \brief CRay init method - * - * The initialize method for the CRay class. - * - * \param terra - A pointer to the CTerra for CRay to use - */ - void initialize(CTerra *terra); - - /** - * \brief CRay destructor - * - * The destructor for the CRay class. - */ - virtual ~CRay(); - - /** - * \brief CRay clear function - */ - void clear(); - - /** - * \brief Setup CRay class - * - * Setup CRay class based on the previously defined iPhaseIndex (via - * setPhase) - */ - void setupRayParam(); - - /** - * \brief Set the phase for ray parameters - * - * Sets the iPhaseIndex for this CRay to the provided phase string - * \param phase - A const char* representing the phase string - * \return Returns the phase index as an integer if successful, -1 if not - */ - int setPhase(const char *phase); - - /** - * \brief Set the depth for calculations - * - * Set source depth prior to travel time or delta calculations - * \param depth - A double variable representing depth in kilometers - */ - void setDepth(double depth); - - /** - * \brief Calculate basic travel time from distance - * - * Calculate the basic travel time using the given distance - * - * NOTE Does not appear to be used - * - * \param delta - A double variable containing the distance in radians to - * use in calculating the travel time - * \return Returns the calculated travel time in seconds if successful, -1 - * otherwise - */ - double travelBasic(double delta); - - /** - * \brief Calculate minimum travel time from distance - * - * Calculate minimum travel time from Tau curve for current branch using - * the given distance - * - * \param delta - A double variable containing the distance in radians to - * use in calculating the travel time - * \return Returns the calculated travel time in seconds if successful, -1 - * otherwise - */ - double travel(double delta); - - /** - * \brief Calculate minimum travel time from distance and radius - * - * Calculate minimum travel time from Tau curve for current branch using - * the given distance and earth radius - * - * \param delta - A double variable containing the distance in radians to - * use in calculating the travel time - * \param earthRadius - A double variable containing the earth radius in - * kilometers - * \return Returns the calculated travel time in seconds if successful, -1 - * otherwise - */ - double travel(double delta, double earthRadius); - - /** - * \brief Calculate minimum travel time from distance and radius - * - * Calculate minimum travel time from Tau curve for current branch using - * the given distance and earth radius, passing the ray parameter - * - * \param delta - A double variable containing the distance in radians to - * use in calculating the travel time - * \param earthRadius - A double variable containing the earth radius in - * kilometers - * \param rayParam - A pointer to a double variable to return the ray - * parameter. - * \return Returns the calculated travel time in seconds if successful, -1 - * otherwise - */ - double travel(double delta, double earthRadius, double *rayParam); - - /** - * \brief Calculate minimum distance from travel time - * - * Calculate the minimum distance for current branch using - * the given travel time, passing the ray parameter - * - * NOTE Does not appear to be used - * - * \param time - A double variable containing the travel time in seconds to - * use in calculating the distance - * \param rayParam - A pointer to a double variable to return the ray - * parameter. - * \return Returns the calculated distance in radians if successful, -1 - * otherwise if there is no such arrival - */ - double delta(double time, double *rayParam = 0); - - /** - * \brief Calculate travel time as a function of ray parameter. - * - * Calculate the travel time given the ray parameter and depth - * - * NOTE Does not appear to be used - * - * \param rayParam - A double variable containing the ray parameter. - * \param earthRadius - A double variable containing the earth radius in - * kilometers - * \return Returns the calculated travel time in seconds if successful, -1 - * otherwise if there is no such arrival - */ - double T(double rayParam, double earthRadius); - - /** - * \brief Calculate distance as a function of ray parameter. - * - * Calculate the distance given the ray parameter and - * depth (expressed as an earth radius) - * - * NOTE Does not appear to be used - * - * \param rayParam - A double variable containing the ray parameter. - * \param earthRadius - A double variable containing the earth radius in - * kilometers - * \return Returns the calculated distance in radians if successful, -1 - * otherwise if there is no such arrival - */ - double D(double rayParam, double earthRadius); - - /** - * \brief Calculate tau as a function of ray parameter. - * - * Calculate the tau given the ray parameter and - * depth (expressed as an earth radius) - * - * \param rayParam - A double variable containing the ray parameter. - * \param earthRadius - A double variable containing the earth radius in - * kilometers - * \return Returns the calculated tau if successful, -1 - * otherwise - */ - double tau(double rayParam, double earthRadius); - - /** - * \brief Calculate time, distance, or tau integrals over depth. - * - * Calculate the time, distance, or tau integrals given the ray parameter - * and depth (expressed as an earth radius) - * - * This is an internal routine - * - * \param functionIndex - An integer parameter indicating what to integrate - * \param rayParam - A double variable containing the ray parameter. - * \param earthRadius - A double variable containing the earth radius in - * kilometers - * \return Returns the calculated tau if successful, -1 - * otherwise - */ - double integrateFunction(int functionIndex, double rayParam, - double earthRadius); - - /** - * \brief Calculates theta function - * - * Calculates theta function after Buland and Chapman(1983) - * I think.... - * - * \param rayParam - The ray parameter - * \param dFunFac - The function factor - * \param dDelta - The distance - * \param dRcvr - The receiver function - * \return Returns the theta function - */ - double calculateThetaFunction(double rayParam, double dFunFac, - double dDelta, double dRcvr); - - /** - * \brief Calculate bracket minima - * - * Calculate the bracket minima from a provided 1-dimensional function - * - * \param x - A pointer to an array of 6 doubles defining the function - * \param dFunFac - The function factor - * \param dDelta - The distance - * \param dRcvr - The receiver function - */ - void calculateBracketMinima(double *x, double dFunFac, double dDelta, - double dRcvr); - - /** - * \brief Calculate minimum using brent algorithm - * - * Calculate the minimum using the brent algorithm - * - * \param xx - A pointer to an array of 3 doubles defining the function - * \param tol - A double value containing the tolerance - * \param xmin - A pointer to a double value to hold the minimum function x - * \param dFunFac - The function factor - * \param dDelta - The distance - * \param dRcvr - The receiver function - * \return returns the minimum - */ - double brentMinimization(double *xx, double tol, double *xmin, - double dFunFac, double dDelta, double dRcvr); - - /** - * \brief A pointer to the CTerra object containing the earth - * structure model. - */ - CTerra *pTerra; - - /** - * \brief An integer variable containing the index of the phase - * (from the phase enumeration) for this ray. - */ - int iPhaseIndex; - - /** - * \brief A double variable containing the radius of the earth - * at a specific source depth in kilometers. - */ - double dEarthRadius; - - /** - * \brief A double variable containing the minimum ray parameter - * for the phase. - */ - double dMinimumRayParam; - - /** - * \brief A double variable containing the maximum ray parameter - * for the phase. - */ - double dMaximumRayParam; -}; -} // namespace traveltime -#endif // RAY_H diff --git a/glasscore/traveltime/include/Spline.h b/glasscore/traveltime/include/Spline.h deleted file mode 100644 index 54cae9b4..00000000 --- a/glasscore/traveltime/include/Spline.h +++ /dev/null @@ -1,110 +0,0 @@ -/***************************************** - * This file is documented for Doxygen. - * If you modify this file please update - * the comments so that Doxygen will still - * be able to work. - ****************************************/ -#ifndef SPLINE_H -#define SPLINE_H - -namespace traveltime { -/** - * \brief traveltime spline class - * - * The traveltime CSpline class is a class that encapsulates - * a cubic spline with natural end points (second derivative 0) - * to increase the accuracy of travel-time lookups - */ -class CSpline { - public: - /** - * \brief CSpline constructor - * - * The constructor for the CSpline class. - */ - CSpline(); - - /** - * \brief CSpline advanced constructor - * - * The advanced constructor for the CSpline class. - * - * \param n - An integer value containing the number of - * control points for the spline - * \param x - A pointer to an array of doubles (of size n) containing - * the x part of the control points - * \param y - A pointer to an array of doubles (of size n) containing - * the y part of the control points - */ - CSpline(int n, double *x, double *y); - - /** - * \brief CSpline destructor - * - * The destructor for the CSpline class. - */ - virtual ~CSpline(); - - /** - * \brief CSpline clear function - */ - void clear(); - - /** - * \brief CSpline setup function - * - * The setup function for the CSpline class, - * generating the spline from a set of n (x,y) control - * points. - * - * \param n - An integer value containing the number of - * control points for the spline - * \param x - A pointer to an array of doubles (of size n) containing - * the x part of the control points - * \param y - A pointer to an array of doubles (of size n) containing - * the y part of the control points - */ - void setup(int n, double *x, double *y); - - /** - * \brief Get a point on the spline - * - * Given an x, get the corresponding y point on the spline - * - * \param x - A double value containing the x to use - * \return Returns the corresponding y value, returns 0.0 if - * no corresponding value. - */ - double Y(double x); - - /** - * \brief Spline test function - */ - void test(); - - /** - * \brief An integer value containing the number of control points - * in the spline - */ - int nX; - - /** - * \brief A pointer to a dynamic array of double values (of size nX) - * containing the x part of the control points. - */ - double *dX; - - /** - * \brief A pointer to a dynamic array of double values (of size nX) - * containing the y part of the control points. - */ - double *dY; - - /** - * \brief A pointer to a dynamic array of double values (of size nX) - * containing the derivative values - */ - double *dY2; -}; -} // namespace traveltime -#endif // SPLINE_H diff --git a/glasscore/traveltime/include/TTT.h b/glasscore/traveltime/include/TTT.h index 189ee614..367d1310 100644 --- a/glasscore/traveltime/include/TTT.h +++ b/glasscore/traveltime/include/TTT.h @@ -15,8 +15,6 @@ namespace traveltime { -class CRay; - /** * \brief travel time interface class * @@ -48,6 +46,17 @@ class CTTT { */ ~CTTT(); +/** + * \brief Write out travel times to files + * + * This function prints the available travel time points for the travel + * time contained in this TravelTime at a given depth to a given file. + * + * \param outPath - A std::string containing the directory to write to. + * \param depth - A double containing the depth to use + */ + void writeToFiles(std::string outDir, double depth); + /** * \brief CTTT clear function */ @@ -162,7 +171,7 @@ class CTTT { * * Prints travel-times for a phase for testing purposes */ - double testTravelTimes(std::string phase); + // double testTravelTimes(std::string phase); // constants diff --git a/glasscore/traveltime/include/Terra.h b/glasscore/traveltime/include/Terra.h deleted file mode 100644 index 8f062140..00000000 --- a/glasscore/traveltime/include/Terra.h +++ /dev/null @@ -1,262 +0,0 @@ -/***************************************** - * This file is documented for Doxygen. - * If you modify this file please update - * the comments so that Doxygen will still - * be able to work. - ****************************************/ -#ifndef TERRA_H -#define TERRA_H - -#include -#include - -namespace traveltime { - -#define MAXLAYERS 200 -#define ROMB_MAX 20 - -// It is significant that the S phase is 1 greater -// than the corresponding P phase. -#define FUN_TEST 1000 -#define FUN_P_TIME 0 -#define FUN_P_DELTA 2 -#define FUN_P_TAU 4 -#define FUN_S_TIME 1 -#define FUN_S_DELTA 3 -#define FUN_S_TAU 5 - -/** - * \brief travel time earth structure model class - * - * The traveltime CTerra class is a class that loads, - * parses, and contains the earth structure model. - * The class also performs various travel time interpolation and - * integration calculations. - */ -class CTerra { - public: - /** - * \brief CTerra constructor - * - * The constructor for the CTerra class. - */ - CTerra(); - - /** - * \brief CTerra alternate constructor - * - * The alternate constructor for the CTerra class. - * Loads the earth structure model from a file. - * \param filename - A string containing the path and file name of the earth - * model file on disk. - */ - explicit CTerra(std::string filename); - - /** - * \brief CTerra destructor - * - * The destructor for the CTerra class. - */ - virtual ~CTerra(); - - /** - * \brief CTerra clear function - */ - void clear(); - - /** - * \brief Load earth model from file - * - * Loads the earth structure model from a file. - * \param filename - A string containing the path and file name of the earth - * model file on disk. - * \return Returns true if successful. - */ - bool load(std::string filename); - - /** - * \brief Parse a line from the file - * - * Parse a line from the earth model file - * \param line - A pointer character array containing the line - * to parse. - * \return Returns a json::Array of the values parsed - */ - json::Array parse(const char *line); - - /** - * \brief Interpolate P velocity - * - * Interpolate P velocity using the given radius - * currently linear only - * \param radius - A double value containing the earth radius - * to use - * \return Returns a double containing the P velocity. - */ - double P(double radius); - - /** - * \brief Interpolate S velocity - * - * Interpolate S velocity using the given radius - * currently linear only - * \param radius - A double value containing the earth radius - * to use - * \return Returns a double containing the S velocity. - */ - double S(double radius); - - /** - * \brief Interpolate Phase velocity - * - * Interpolate Phase velocity using the given radius and - * velocity table - * currently linear only - * \param radius - A double value containing the earth radius - * to use - * \param layerVelocity - A pointer to the array of double values containing - * the phase velocity in kilometers per second at each layer of the - * velocity model. - * \return Returns a double containing the velocity. - */ - double interpolateVelocity(double radius, double *layerVelocity); - - /** - * \brief Calculate ray bottoming radius - * - * Calculate bottoming radius for a ray with a given - * ray parameter between specified model index - * bounds. Out of range values cause interpolation from closest - * valid interval. - * (This is an internal helper method for Tau(). - * - * Assumes p monotonically increasing between lowerIndex and middleIndex. - * Out of range values cause interpolation from closest valid interval. - * - * \param lowerIndex - An integer value containing the lower model index - * \param upperIndex - An integer value containing the upper model index - * \param layerVelocity - A pointer to the array of double values containing - * the phase velocity in kilometers per second at each layer of the - * velocity model. - * \param rayParam - A double value containing the ray parameter. - * \return Returns a double containing the bottoming radius - */ - double calculateTurnRadius(int lowerIndex, int upperIndex, - double *layerVelocity, double rayParam); - - /** - * \brief Evaluate function during integration - * - * Evaluate the specified function (time, delta, tau) during integration - * - * \param functionIndex - An integer value containing the index of the - * function to integrate - * \param earthRadius - A double value containing the earth radius - * to use - * \param rayParam - A double value containing the ray parameter to use - * \return Returns a double containing the evaluated function value - */ - double evaluateFunction(int functionIndex, double earthRadius, - double rayParam); - - /** - * \brief Compute the integral of a segment of the function - * - * Compute the integral of the function (time, delta, tau) over ray - * segment separated by parameter discontinuities - * - * \param functionIndex - An integer value containing the index of the - * function to integrate - * \param startingRadius - A double value containing the starting earth - * radius - * \param endingRadius - A double value containing the ending earth radius - * \param rayParam - A double value containing the ray parameter - * \return Returns a double containing the integral - */ - double integrateRaySegment(int functionIndex, double startingRadius, - double endingRadius, double rayParam); - - /** - * \brief Compute the integral of the function - * - * Compute the integral of the function (time, delta, tau) between two - * earth radii using the Romberg integration formula - * - * Singularities allowed at end points - * - * \param functionIndex - An integer value containing the index of the - * function to integrate - * \param startingRadius - A double value containing the starting earth - * radius - * \param endingRadius - A double value containing the ending earth radius - * \param rayParam - a double value containing the ray parameter - * \return Returns a double containing the integral - */ - double rombergIntegration(int functionIndex, double startingRadius, - double endingRadius, double rayParam); - - /** - * \brief A string containing the path to the model - * file. - */ - std::string sModelFilePath; - - /** - * \brief An integer containing the number of seismic - * discontinuities - */ - int nDiscontinuities; - - /** - * \brief An array of integer values containing indexes of each - * seismic discontinuity - */ - int iDiscontinuityIndexes[20]; - - /** - * \brief An integer value containing the index of the - * inner core seismic discontinuity - */ - int iInnerDiscontinuity; - - /** - * \brief An integer value containing the index of the - * outer core seismic discontinuity - */ - int iOuterDiscontinuity; - - /** - * \brief A int64_t integer value containing the number of - * layers in the velocity model - */ - int64_t nLayer; - - /** - * \brief A double value containing the radius of the earth - * (at 0 depth) - */ - double dEarthRadius; - - /** - * \brief An array of double values containing the radius of the earth - * at each layer of the velocity model. Ordered from the center of the - * earth out. - */ - double dLayerRadii[MAXLAYERS]; - - /** - * \brief An array of double values containing P velocity in kilometers per - * second at each layer of the velocity model. Ordered from the center of - * the earth out. - */ - double dLayerPVel[MAXLAYERS]; - - /** - * \brief An array of double values containing S velocity in kilometers per - * second at each layer of the velocity model. Ordered from the center of - * the earth out. - */ - double dLayerSVel[MAXLAYERS]; -}; -} // namespace traveltime -#endif // TERRA_H diff --git a/glasscore/traveltime/include/TimeWarp.h b/glasscore/traveltime/include/TimeWarp.h deleted file mode 100644 index 49b047bc..00000000 --- a/glasscore/traveltime/include/TimeWarp.h +++ /dev/null @@ -1,138 +0,0 @@ -/***************************************** - * This file is documented for Doxygen. - * If you modify this file please update - * the comments so that Doxygen will still - * be able to work. - ****************************************/ -#ifndef TIMEWARP_H -#define TIMEWARP_H - -namespace traveltime { - -/** - * \brief traveltime branch generator - * - * The CGenTrv class is used to generate the travel time tables used - * by CTrv to rapidly calculate travel times using cubic interpolation - * a N x M grid. - * - * CGenTrv uses smart pointers (std::shared_ptr). - */ -class CTimeWarp { - public: - /** - * \brief CTimeWarp constructor - * - * The constructor for the CTimeWarp class. - */ - CTimeWarp(); - - /** - * \brief CTimeWarp copy constructor - * - * The copy constructor for the CTimeWarp class. - */ - CTimeWarp(const CTimeWarp & timeWarp); - - /** - * \brief CTimeWarp advanced constructor - * - * The advanced constructor for the CTimeWarp class. - * - * \param gridMin - A double value containing the Lowest value mapped to the - * grid - * \param gridMax - A double value containing the Highest value mapped to - * the grid - * \param decayConst - A double value containing the Decay exponent - * \param slopeZero - A double value containing the slope value per grid at - * 0 - * \param slopeInf - A double value containing the slope value per grid at - * infinity - */ - CTimeWarp(double gridMin, double gridMax, double decayConst, - double slopeZero, double slopeInf); - - /** - * \brief CTimeWarp destructor - * - * The destructor for the CTimeWarp class. - */ - ~CTimeWarp(); - - /** - * \brief CTimeWarp clear function - */ - void clear(); - - /** - * \brief CTimeWarp setup function - * - * The setup function for the CTimeWarp class, - * generating the time warp from the given values - * - * \param gridMin - A double value containing the Lowest value mapped to the - * grid - * \param gridMax - A double value containing the Highest value mapped to - * the grid - * \param decayConst - A double value containing the Decay exponent - * \param slopeZero - A double value containing the slope value per grid at - * 0 - * \param slopeInf - A double value containing the slope value per grid at - * infinity - */ - void setup(double gridMin, double gridMax, double decayConst, - double slopeZero, double slopeInf); - - /** - * \brief Calculate grid index - * - * Calculate grid index from interpolated value - * - * \param value - A double value containing the interpolated value to use - * \return Returns the corresponding grid index - */ - double calculateGridPoint(double value); - - /** - * \brief Calculate interpolated value - * - * Calculate interpolated value at given grid point - * - * \param gridPoint - A double value containing the grid point to use - * \return Returns the corresponding interpolated value - */ - double calculateValue(double gridPoint); - - /** - * \brief A double value containing the Lowest value mapped to the grid - */ - double m_dGridMinimum; - - /** - * \brief A double value containing the Highest value mapped to the grid - */ - double m_dGridMaximum; - - /** - * \brief A double value containing the Decay exponent - */ - double m_dDecayConstant; - - /** - * \brief A double value containing the slope value per grid at 0 - */ - double m_dSlopeZero; - - /** - * \brief A double value containing the slope value per grid at infinity - */ - double m_dSlopeInfinity; - - /** - * \brief A boolean value containing the flag indicating whether the time - * warp is setup - */ - bool m_bSetup; -}; -} // namespace traveltime -#endif // TIMEWARP_H diff --git a/glasscore/traveltime/include/Trav.h b/glasscore/traveltime/include/Trav.h deleted file mode 100644 index 35975587..00000000 --- a/glasscore/traveltime/include/Trav.h +++ /dev/null @@ -1,161 +0,0 @@ -/***************************************** - * This file is documented for Doxygen. - * If you modify this file please update - * the comments so that Doxygen will still - * be able to work. - ****************************************/ -#ifndef TRAV_H -#define TRAV_H -#include -#include - -namespace traveltime { - -#define MAX_POINTS 5000 // the maximum number of branch points for time or - // distance - -// forward declarations -class CRay; -class CSpline; - -/** - * \brief traveltime branch class - * - * The traveltime CTrav class is a class that encapsulates - * one or more 1D interpolated distance/time spline functions representing - * seismic phase branches at a specific depth. - * - * The CTrav class uses the distance/time spline functions to calculate the - * expected travel times and distances. - * The spline functions are generated from the provided CRay parameters. - * - */ -class CTrav { - public: - /** - * \brief CTrav constructor - * - * The constructor for the CTrav class. - */ - CTrav(); - - /** - * \brief CTrav destructor - * - * The destructor for the CTrav class. - */ - ~CTrav(); - - /** - * \brief Generate branch and spline data - * - * Generate the branches and splines using a given CRay, phase string - * and depth. - * - * \param ray - A pointer to the CRay object to use - * \param phase - A const char* representing the phase string - * \param depth - A double variable representing depth in kilometers - * \return Returns true if the branch data and splines were generated, - * false otherwise. - */ - bool genBranch(CRay *ray, std::string phase, double depth); - - /** - * \brief Generate a branch for a phase - * - * Generate branch data for a phase using a given CRay and distance range. - * - * \param ray - A pointer to the CRay object to use - * \param startDistance - A double variable representing lower limit of the - * distance range - * \param endDistance - A double variable representing upper limit of the - * distance range - */ - void branch(CRay *ray, double startDistance, double endDistance); - - /** - * \brief Calculate travel time from distance - * - * Calculate travel time in seconds from a given distance in degrees - * - * \param delta - A double variable representing distance in degrees to - * calculate the travel time at - * \return Returns a double variable containing the travel time in seconds - */ - double T(double delta); - - /** - * \brief Calculate distance from travel time - * - * Calculate distance in degrees from a given travel time in seconds - * - * \param travelTime - A double variable representing travel time in seconds - * to calculate the distance from - * \return Returns a double variable containing the distance in degrees - */ - double D(double travelTime); - - /** - * \brief A std::string variable containing the phase or phase class - */ - std::string sPhase; - - /** - * \brief A double variable containing the depth from surface - */ - double dZ; - - /** - * \brief A pointer to a CSpline containing the generated time spline - */ - CSpline *tSpline; - - /** - * \brief A pointer to a CSpline containing the generated distance spline - */ - CSpline *dSpline; - - /** - * \brief A double variable containing the lower limit of the distance - * validity range in degrees - */ - double dDeg0; - - /** - * \brief A double variable containing the upper limit of the distance - * validity range in degrees - */ - double dDeg1; - - /** - * \brief A double variable containing the lower limit of the travel time - * validity range in seconds - */ - double dTrv0; - - /** - * \brief A double variable containing the upper limit of the travel time - * validity range in seconds - */ - double dTrv1; - - /** - * \brief An integer variable containing number of points used to generate - * the branches - */ - int nTrv; - - /** - * \brief A temporary array of distance (degrees) double values used - * in generating the branches - */ - double *dDeg; - - /** - * \brief A temporary array of travel time (seconds) double values - * used in generating the branches - */ - double *dTrv; -}; -} // namespace traveltime -#endif // TRAV_H diff --git a/glasscore/traveltime/include/TravelTime.h b/glasscore/traveltime/include/TravelTime.h index 5f18fa90..966d2fc1 100644 --- a/glasscore/traveltime/include/TravelTime.h +++ b/glasscore/traveltime/include/TravelTime.h @@ -23,10 +23,6 @@ */ namespace traveltime { -// forward declarations -class CRay; -class CTimeWarp; - /** * \brief travel time phase class * @@ -72,6 +68,17 @@ class CTravelTime { */ bool setup(std::string phase = "P", std::string file = ""); + /** + * \brief Write out travel times to file + * + * This function prints the available travel time points for the travel + * time contained in this TravelTime at a given depth to a given file. + * + * \param fileName - A std::string containing the file name to write to. + * \param depth - A double containing the depth to use + */ + void writeToFile(std::string fileName, double depth); + /** * \brief CTravelTime clear function */ @@ -144,56 +151,122 @@ class CTravelTime { double T(int deltaIndex, int depthIndex); /** - * \brief Compute travel time in seconds via bilinear interpolation + * \brief Compute bilinear interpolation + * + * Compute a bilinear interpolation from the provided values + * + * \param q_x1y1 - A double containing the interpolation value for (x1, y1) + * \param q_x1y2 - A double containing the interpolation value for (x1, y2) + * \param q_x2y1 - A double containing the interpolation value for (x2, y1) + * \param q_x2y2 - A double containing the interpolation value for (x2, y2) + * \param x1 - A double containing first x interpolation coordinate + * \param y1 - A double containing first y interpolation coordinate + * \param x2 - A double containing second x interpolation coordinate + * \param y2 - A double containing second y interpolation coordinate + * \param x - A double containing the given x coordinate + * \param y - A double containing the given y coordinate + * \return Returns a double containing the resulting bilinear interpolation + */ + double bilinearInterpolation(double q_x1y1, double q_x1y2, double q_x2y1, + double q_x2y2, double x1, double y1, double x2, double y2, double x, + double y); + + /** + * \brief Compute interpolation grid distance index * - * Compute a traveltime from travel time array via a bilinear interpolation - * using T() and the given distance and depth + * Compute an interpolation grid index from the given distance * * \param distance - A double value containing the distance to use - * \param depth - A double value containing depth to use - * \return Returns the travel time in seconds, or -1.0 if there is - * no valid travel time + * \return Returns the distance index */ - double bilinear(double distance, double depth); + int getIndexFromDistance(double distance); /** - * \brief A pointer to the distance warp object used + * \brief Compute distance using interpolation grid index + * + * Compute a distance using the given interpolation grid index + * + * \param index - An integer value containing the interpolation grid index to + * use + * \return Returns the distance */ - CTimeWarp *m_pDistanceWarp; + double getDistanceFromIndex(int index); /** - * \brief A pointer to the depth warp object used + * \brief Compute interpolation grid depth index + * + * Compute an interpolation grid index from the given depth + * + * \param depth - A double value containing the depth to use + * \return Returns the depth index */ - CTimeWarp *m_pDepthWarp; + int getIndexFromDepth(double depth); /** - * \brief An integer variable containing the grid index for the distance - * warp + * \brief Compute depth using interpolation grid index + * + * Compute a depth using the given interpolation grid index + * + * \param index - An integer value containing the interpolation grid index to + * use + * \return Returns the depth */ - int m_iNumDistanceWarp; + double getDepthFromIndex(int index); + /** - * \brief An integer variable containing the grid index for the depth - * warp + * \brief An integer variable containing the array index size for the distance + * array */ - int m_iNumDepthWarp; + int m_iNumDistances; /** - * \brief An array of double values containing the travel times indexed by - * depth and distance + * \brief A double variable containing the minimum distance of the depth + * distance array */ - double * m_pTravelTimeArray; + double m_dMinimumDistance; + + /** + * \brief A double variable containing the maximum distance of the depth + * distance array + */ + double m_dMaximumDistance; + + /** + * \brief A double variable containing the spacing, or step, between distance + * points in the depth distance array + */ + double m_dDistanceStep; + + /** + * \brief An integer variable containing the array index size for the depth + * array + */ + int m_iNumDepths; /** - * \brief An array of double values containing the distances indexed by - * depth + * \brief A double variable containing the minimum depth of the depth + * distance array */ - double * m_pDepthDistanceArray; + double m_dMinimumDepth; /** - * \brief An array of characters containing the phases + * \brief A double variable containing the maximum Depth of the depth + * distance array */ - char * m_pPhaseArray; + double m_dMaximumDepth; + + /** + * \brief A double variable containing the spacing, or step, between depth + * points in the depth distance array + */ + double m_dDepthStep; + + /** + * \brief An array of double values containing the travel times indexed by + * depth and distance + */ + double * m_pTravelTimeArray; /** * \brief A std::std::string containing the name of the phase used for this diff --git a/glasscore/traveltime/src/GenTrv.cpp b/glasscore/traveltime/src/GenTrv.cpp deleted file mode 100644 index 023322f3..00000000 --- a/glasscore/traveltime/src/GenTrv.cpp +++ /dev/null @@ -1,830 +0,0 @@ -#include "GenTrv.h" -#include -#include -#include -#include -#include -#include -#include "Spline.h" -#include "Terra.h" -#include "Ray.h" -#include "TimeWarp.h" - -namespace traveltime { - -// ---------------------------------------------------------CGenTrv -CGenTrv::CGenTrv() { - clear(); - m_OutputPath = ""; - m_FileExtension = ""; - bSetup = false; - pDistanceWarp = NULL; - pDepthWarp = NULL; - pTerra = NULL; - pRay = NULL; -} - -// ---------------------------------------------------------CGenTrv -CGenTrv::CGenTrv(std::string modelFile, std::string outputPath, - std::string fileExtension) { - clear(); - m_OutputPath = ""; - m_FileExtension = ""; - bSetup = false; - pDistanceWarp = NULL; - pDepthWarp = NULL; - pTerra = NULL; - pRay = NULL; - - setup(modelFile, outputPath, fileExtension); -} - -// ---------------------------------------------------------~CGenTrv -CGenTrv::~CGenTrv() { - if (pTerra != NULL) { - delete (pTerra); - } - pTerra = NULL; - - if (pRay != NULL) { - delete (pRay); - } - pRay = NULL; - m_OutputPath = ""; - m_FileExtension = ""; - bSetup = false; -} - -// ---------------------------------------------------------clear -void CGenTrv::clear() { - nDistanceWarp = 0; - nDepthWarp = 0; - nRays = 0; - rayParameter = 0; - dDepthDistance = 0; - dTravelTime = 0; - Phase = ""; - vRays.clear(); - - if (pDistanceWarp != NULL) { - delete (pDistanceWarp); - } - pDistanceWarp = NULL; - - if (pDepthWarp != NULL) { - delete (pDepthWarp); - } - pDepthWarp = NULL; -} - -// ---------------------------------------------------------setup -bool CGenTrv::setup(std::string modelFile, std::string outputPath, - std::string fileExtension) { - if (bSetup == true) { - return (true); - } - - // create earth structure class - pTerra = new CTerra(); - - // load earth model - if (pTerra->load(modelFile.c_str())) { - glass3::util::Logger::log( - "debug", - "CGenTrv::setup: Terra nLayer: " - + std::to_string(pTerra->nLayer) + " dEarthRadius: " - + std::to_string(pTerra->dEarthRadius)); - } else { - glass3::util::Logger::log( - "error", "CGenTrv::setup: Unable to load Model: " + modelFile); - return (false); - } - - // create ray path class - pRay = new CRay(); - pRay->pTerra = pTerra; - - m_OutputPath = outputPath; - m_FileExtension = fileExtension; - bSetup = true; - - return (true); -} - -// ---------------------------------------------------------generate -bool CGenTrv::generate(json::Object *com) { - if (bSetup == false) { - glass3::util::Logger::log("error", - "CGenTrv::generate: Call setup before " - "generate."); - return (false); - } - - // null check json - if (com == NULL) { - glass3::util::Logger::log( - "error", "CGenTrv::generate: NULL json communication."); - return (false); - } - - clear(); - - // check for a command - if (com->HasKey("Cmd") - && ((*com)["Cmd"].GetType() == json::ValueType::StringVal)) { - std::string command = (*com)["Cmd"].ToString(); - - if (command != "GenerateTraveltime") { - glass3::util::Logger::log( - "warning", "CGenTrv::generate: Non-Correlation message " - "passed in."); - return (false); - } - } else { - // no command or type - glass3::util::Logger::log( - "error", "CGenTrv::generate: Missing required Cmd Key."); - return (false); - } - - // definition variables - std::string branchName = ""; - nRays = 0; - - // branch name - if (com->HasKey("Branch") - && ((*com)["Branch"].GetType() == json::ValueType::StringVal)) { - branchName = (*com)["Branch"].ToString(); - glass3::util::Logger::log( - "info", "CGenTrv::generate: Using Branch: " + branchName); - } else { - glass3::util::Logger::log( - "error", "CGenTrv::generate: Missing required Branch Key."); - return (false); - } - - // get phases - if ((com->HasKey("Rays")) - && ((*com)["Rays"].GetType() == json::ValueType::ArrayVal)) { - // get the array of phase entries - json::Array rays = (*com)["Rays"].ToArray(); - - // for each phase in the array - for (auto val : rays) { - // make sure the phase is an object - if (val.GetType() != json::ValueType::StringVal) { - continue; - } - - std::string ray = val.ToString(); - - if (ray == "") { - continue; - } - - // add phase to list - nRays++; - vRays.push_back(ray); - - glass3::util::Logger::log("info", - "CGenTrv::generate: Using ray: " + ray); - } - } else { - glass3::util::Logger::log( - "error", "CGenTrv::generate: Missing required Phases key"); - return (false); - } - - // pDistanceWarp - if ((com->HasKey("DeltaTimeWarp")) - && ((*com)["DeltaTimeWarp"].GetType() == json::ValueType::ObjectVal)) { - // get object - json::Object delta = (*com)["DeltaTimeWarp"].ToObject(); - - // timewarp variables - double gridMin = 0; - double gridMax = 0; - double decayConst = 0; - double slopeZero = 0; - double slopeInf = 0; - - // gridMin - if ((delta.HasKey("MinimumDistance")) - && (delta["MinimumDistance"].GetType() - == json::ValueType::DoubleVal)) { - gridMin = delta["MinimumDistance"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DeltaTimeWarp MinimumDistance: " - + std::to_string(gridMin)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DeltaTimeWarp MinimumDistance key."); - return (false); - } - - // gridMax - if ((delta.HasKey("MaximumDistance")) - && (delta["MaximumDistance"].GetType() - == json::ValueType::DoubleVal)) { - gridMax = delta["MaximumDistance"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DeltaTimeWarp MaximumDistance: " - + std::to_string(gridMax)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DeltaTimeWarp MaximumDistance key."); - return (false); - } - - // decayConst - if ((delta.HasKey("SlopeDecayConstant")) - && (delta["SlopeDecayConstant"].GetType() - == json::ValueType::DoubleVal)) { - decayConst = delta["SlopeDecayConstant"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DeltaTimeWarp SlopeDecayConstant: " - + std::to_string(decayConst)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DeltaTimeWarp " - "SlopeDecayConstant key."); - return (false); - } - - // slopeZero - if ((delta.HasKey("SlopeZero")) - && (delta["SlopeZero"].GetType() == json::ValueType::DoubleVal)) { - slopeZero = delta["SlopeZero"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DeltaTimeWarp SlopeZero: " - + std::to_string(slopeZero)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DeltaTimeWarp " - "SlopeZero key."); - return (false); - } - - // slopeInf - if ((delta.HasKey("SlopeInfinite")) - && (delta["SlopeInfinite"].GetType() - == json::ValueType::DoubleVal)) { - slopeInf = delta["SlopeInfinite"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DeltaTimeWarp SlopeInfinite: " - + std::to_string(slopeInf)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DeltaTimeWarp " - "SlopeInfinite key."); - return (false); - } - - // create distance timewarp - pDistanceWarp = new CTimeWarp(gridMin, gridMax, decayConst, slopeZero, - slopeInf); - nDistanceWarp = pDistanceWarp->calculateGridPoint(gridMax); - - glass3::util::Logger::log( - "debug", - "CGenTrv::generate: pDistanceWarp: minDistance: " - + std::to_string( - pDistanceWarp->calculateValue( - pDistanceWarp->calculateGridPoint(gridMin))) - + " -> maxDistance:" - + std::to_string( - pDistanceWarp->calculateValue( - pDistanceWarp->calculateGridPoint(gridMax)))); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DeltaTimeWarp key"); - return (false); - } - - // pDepthWarp - if ((com->HasKey("DepthTimeWarp")) - && ((*com)["DepthTimeWarp"].GetType() == json::ValueType::ObjectVal)) { - // get object - json::Object delta = (*com)["DepthTimeWarp"].ToObject(); - - // timewarp variables - double gridMin = 0; - double gridMax = 0; - double decayConst = 0; - double slopeZero = 0; - double slopeInf = 0; - - // gridMin - if ((delta.HasKey("MinimumDepth")) - && (delta["MinimumDepth"].GetType() - == json::ValueType::DoubleVal)) { - gridMin = delta["MinimumDepth"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DepthTimeWarp MinimumDepth: " - + std::to_string(gridMin)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DepthTimeWarp " - "MinimumDepth key."); - return (false); - } - - // gridMax - if ((delta.HasKey("MaximumDepth")) - && (delta["MaximumDepth"].GetType() - == json::ValueType::DoubleVal)) { - gridMax = delta["MaximumDepth"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DepthTimeWarp MaximumDepth: " - + std::to_string(gridMax)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DepthTimeWarp " - "MaximumDepth key."); - return (false); - } - - // decayConst - if ((delta.HasKey("SlopeDecayConstant")) - && (delta["SlopeDecayConstant"].GetType() - == json::ValueType::DoubleVal)) { - decayConst = delta["SlopeDecayConstant"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DepthTimeWarp SlopeDecayConstant: " - + std::to_string(decayConst)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DepthTimeWarp " - "SlopeDecayConstant key."); - return (false); - } - - // slopeZero - if ((delta.HasKey("SlopeZero")) - && (delta["SlopeZero"].GetType() == json::ValueType::DoubleVal)) { - slopeZero = delta["SlopeZero"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DepthTimeWarp SlopeZero: " - + std::to_string(slopeZero)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DepthTimeWarp SlopeZero key."); - return (false); - } - - // slopeInf - if ((delta.HasKey("SlopeInfinite")) - && (delta["SlopeInfinite"].GetType() - == json::ValueType::DoubleVal)) { - slopeInf = delta["SlopeInfinite"].ToDouble(); - - glass3::util::Logger::log( - "info", - "CGenTrv::generate: Using DepthTimeWarp SlopeInfinite: " - + std::to_string(slopeInf)); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DepthTimeWarp SlopeInfinite key."); - return (false); - } - - // create depth timewarp - pDepthWarp = new CTimeWarp(gridMin, gridMax, decayConst, slopeZero, - slopeInf); - nDepthWarp = pDepthWarp->calculateGridPoint(gridMax); - - glass3::util::Logger::log( - "debug", - "CGenTrv::generate: pDepthWarp: minDepth: " - + std::to_string( - pDepthWarp->calculateValue(pDepthWarp->calculateGridPoint(gridMin))) - + " -> maxDepth:" - + std::to_string( - pDepthWarp->calculateValue(pDepthWarp->calculateGridPoint(gridMax)))); - } else { - glass3::util::Logger::log( - "error", - "CGenTrv::generate: Missing required DepthTimeWarp key"); - return (false); - } - - glass3::util::Logger::log( - "debug", - "CGenTrv::generate: nDistanceWarp: " + std::to_string(nDistanceWarp) - + " nDepthWarp: " + std::to_string(nDepthWarp)); - - // Unit tests - // UnitTest("Pup", 1, 250, 34.99); - // UnitTest("P", 30, 50, 363.82); - // UnitTest("P", 50, 250, 509.04); - // UnitTest("P", 90, 100, 768.24); - - glass3::util::Logger::log("info", - "CGenTrv::generate: Generating depth layers."); - - // set up for interpolation - double *travelTimeArray = new double[nDistanceWarp * nDepthWarp]; - double *depthDistanceArray = new double[nDistanceWarp * nDepthWarp]; - char *phaseArray = new char[nDistanceWarp * nDepthWarp]; - - // generate interpolation grid (depth, time) - // for each depth - for (int iDepth = 0; iDepth < nDepthWarp; iDepth++) { - // generate row - Row(iDepth, &travelTimeArray[iDepth * nDistanceWarp], - &depthDistanceArray[iDepth * nDistanceWarp], - &phaseArray[iDepth * nDistanceWarp]); - - // init min/max for this depth - int minDelta = -1; - int maxDelta = -1; - - // get travel times for this depth - double *tDistTravelTime = &travelTimeArray[iDepth * nDistanceWarp]; - - // for each distance at this depth - for (int iDelta = 0; iDelta < nDistanceWarp; iDelta++) { - glass3::util::Logger::log( - "debug", - "CGenTrv::generate: iDelta: " + std::to_string(iDelta) - + " distance: " - + std::to_string(pDistanceWarp->calculateValue(iDelta))); - - // check to see if there is a valid travel time at this - // distance for this depth - if (tDistTravelTime[iDelta] > 0.0) { - // only set minimum distance if there is not one already - if (minDelta < 0) { - minDelta = iDelta; - } - - // set maximum distance - maxDelta = iDelta; - } - } - - // check to see if there was a valid travel time for this depth - if (maxDelta < 0) { - glass3::util::Logger::log( - "debug", - "CGenTrv::generate: iDepth:" + std::to_string(iDepth) - + " depth:" - + std::to_string(pDepthWarp->calculateValue(iDepth)) - + " No Travel Times for this depth."); - - continue; - } - } - - // Create output file - // Compute header values - // type is a trav file - std::string fileType = "TRAV"; - - // set endian - int16_t endianType = 1; - - // copy branch name - char branch[16]; - int branchNameSize = branchName.size(); - for (int i = 0; i < 16; i++) { - if (i < branchNameSize) { - branch[i] = branchName[i]; - } else { - // null terminate - branch[i] = 0; - } - } - - // generate phase list - std::string phaseList = ""; - for (int i = 0; i < nRays; i++) { - if (i < 0) { - // comma delimit - phaseList += ","; - } - phaseList += vRays[i]; - } - - // copy phase list - char phases[64]; - int phaseListSize = phaseList.size(); - for (int i = 0; i < 64; i++) { - if (i < phaseListSize) { - phases[i] = phaseList[i]; - } else { - // null terminate - phases[i] = 0; - } - } - - // open file - std::string outFileName = m_OutputPath + branchName + m_FileExtension; - - glass3::util::Logger::log( - "info", "CGenTrv::generate: writing file: " + outFileName); - - FILE *outFile = fopen(outFileName.c_str(), "wb"); - - // write header values - fwrite(&fileType, 1, 4, outFile); - fwrite(&endianType, 1, 2, outFile); - fwrite(branch, 1, 16, outFile); - fwrite(phases, 1, 64, outFile); - - // Output distance warp parameters - fwrite(&nDistanceWarp, 1, 4, outFile); - fwrite(&pDistanceWarp->m_dGridMinimum, 1, 8, outFile); - fwrite(&pDistanceWarp->m_dGridMaximum, 1, 8, outFile); - fwrite(&pDistanceWarp->m_dDecayConstant, 1, 8, outFile); - fwrite(&pDistanceWarp->m_dSlopeZero, 1, 8, outFile); - fwrite(&pDistanceWarp->m_dSlopeInfinity, 1, 8, outFile); - - // Output depth warp paramters - fwrite(&nDepthWarp, 1, 4, outFile); - fwrite(&pDepthWarp->m_dGridMinimum, 1, 8, outFile); - fwrite(&pDepthWarp->m_dGridMaximum, 1, 8, outFile); - fwrite(&pDepthWarp->m_dDecayConstant, 1, 8, outFile); - fwrite(&pDepthWarp->m_dSlopeZero, 1, 8, outFile); - fwrite(&pDepthWarp->m_dSlopeInfinity, 1, 8, outFile); - - // Output interpolation grids - fwrite(travelTimeArray, 1, 8 * nDistanceWarp * nDepthWarp, outFile); - fwrite(depthDistanceArray, 1, 8 * nDistanceWarp * nDepthWarp, outFile); - fwrite(phaseArray, 1, nDistanceWarp * nDepthWarp, outFile); - - // done with file - fclose(outFile); - - glass3::util::Logger::log("info", - "CGenTrv::generate: file writing complete."); - - // cleanup - delete[] (travelTimeArray); - delete[] (depthDistanceArray); - delete[] (phaseArray); - - return (true); -} - -// ---------------------------------------------------------Row -int CGenTrv::Row(int iDepth, double *travelTimeArray, - double *depthDistanceArray, char *phaseArray) { - glass3::util::Logger::log( - "debug", - "CGenTrv::Row: iDepth: " + std::to_string(iDepth) + +" depth:" - + std::to_string(pDepthWarp->calculateValue(iDepth))); - - // array to hold ray parameters - // NOTE: This doesn't appear to be used by anything - double *rayParameters = new double[nDistanceWarp]; - - // init travelTimeArray - for (int i = 0; i < nDistanceWarp; i++) { - travelTimeArray[i] = -10.0; - } - - // get current depth - double depth = pDepthWarp->calculateValue(iDepth); - - // for each phase - for (int phaseIndex = 0; phaseIndex < nRays; phaseIndex++) { - // get the current phase - std::string phase = vRays[phaseIndex]; - - glass3::util::Logger::log("debug", "CGenTrv::Row: Phase:" + phase); - - // for each distance at this depth - for (int distanceIndex = 0; distanceIndex < nDistanceWarp; - distanceIndex++) { - // get the current distance - double distance = pDistanceWarp->calculateValue(distanceIndex); - - // generate traveltime for this phase / distance / depth - if (T(phase, distance, depth)) { - // check to see if the travel time array has either an invalid - // travel time OR the new travel time is earlier than the travel - // time stored in the array - if ((travelTimeArray[distanceIndex] < 0.0) - || (dTravelTime < travelTimeArray[distanceIndex])) { - // set arrays to new time/distance/ray/phase - travelTimeArray[distanceIndex] = dTravelTime; - depthDistanceArray[distanceIndex] = dDepthDistance; - rayParameters[distanceIndex] = rayParameter; - - // NOTE: we're putting an int into a char array?!?! - phaseArray[distanceIndex] = phaseIndex; - } - } - } - } - - // Patch holes (discontinuities?) - int holeStart = -1; - int holeEnd; - int state = 0; - int nHoles = 0; - for (int distanceIndex = 0; distanceIndex < nDistanceWarp; - distanceIndex++) { - switch (state) { - case 0: - // Looking for first good travel time value - if (travelTimeArray[distanceIndex] > 0) { - // found it, start looking for last good - state = 1; - } - break; - case 1: - // Looking for last good travel time value - if (travelTimeArray[distanceIndex] < 0) { - // found hole - holeStart = distanceIndex - 1; - - // look for end of hole - state = 2; - } - break; - case 2: - // Looking for end of the hole (next good travel time value) - if (travelTimeArray[distanceIndex] > 0) { - // start patching - holeEnd = distanceIndex; - - // compute the travel time difference between the start - // and the end of the hole - double travelTimeDifference = travelTimeArray[holeEnd] - - travelTimeArray[holeStart]; - - // for each index in the hole - for (int j = holeStart + 1; j < holeEnd; j++) { - // we've found a hole - nHoles++; - - double a = (travelTimeArray[holeEnd] - - travelTimeArray[j]) / travelTimeDifference; - double b = (travelTimeArray[j] - - travelTimeArray[holeStart]) - / travelTimeDifference; - - // compute new travel time for this index - travelTimeArray[j] = a * travelTimeArray[holeStart] - + b * travelTimeArray[holeEnd]; - - // compute new distance for this index - depthDistanceArray[j] = a - * depthDistanceArray[holeStart] - + b * depthDistanceArray[holeEnd]; - - // compute new ray parameter for this index - rayParameters[j] = a * rayParameters[holeStart] - + b * rayParameters[holeEnd]; - } - - // looking for another hole - state = 1; - } - break; - } - } - - glass3::util::Logger::log( - "debug", - "CGenTrv::Row: Patched: " + std::to_string(nHoles) + " holes."); - - // cleanup - if (rayParameters) { - delete[] (rayParameters); - } - - return (nHoles); -} - -// ---------------------------------------------------------UnitTest -/* void CGenTrv::UnitTest(std::string phase, double delta, double depth, double - tcorr) { - // Calculate integrated times to compare against AK135 - // tables to ensure that there are no huge problems - // in the accuracy of the traveltime branch calculations. - // This test should probably be extended to be more comprehensive - double travelTime = T(phase, delta, depth); - printf("%s D:%.2f pDepthWarp:%.2f : %.2f - %.2f = %.2f\n", phase.c_str(), - delta, depth, travelTime, - tcorr, travelTime - tcorr); - } - */ - -// ---------------------------------------------------------T -bool CGenTrv::T(std::string phase, double delta, double depth) { - // delta in degrees, depth in km - // This routine uses reciprocity to calculate travel - // times when source is above station - - // make sure distance not less than minimum - if (fabs(delta) < 0.01) { - delta = 0.01; - } - - // get earth radius from earth model - double earthRadius = pTerra->dEarthRadius; - - // init travel time and ray parameter - double rayParam = 0.0; - dTravelTime = -10.0; - double travelTime = -10.0; - - // set up radius - double radius = earthRadius; - double sourceRadius = earthRadius - depth; - - // check to see if source is above earth radius - if (sourceRadius > radius) { - double rtmp = sourceRadius; - sourceRadius = radius; - radius = rtmp; - } - - // init travel time ray parameters object - pRay->setPhase(phase.c_str()); - pRay->setDepth(earthRadius - sourceRadius); - pRay->setupRayParam(); - - // get travel time and ray parameter - travelTime = pRay->travel( - (glass3::util::GlassMath::k_DegreesToRadians * delta), radius, - &rayParam); - - // check for valid travel time - if (travelTime < 0) { - // no travel time - return (false); - } - - if ((dTravelTime < 0) || (travelTime < dTravelTime)) { - // set up radius - radius = earthRadius + 1; - sourceRadius = earthRadius - depth; - - // check to see if source is above earth radius - if (sourceRadius > radius) { - double rtmp = sourceRadius; - sourceRadius = radius; - radius = rtmp; - } - - // init travel time ray parameters object - pRay->setDepth(earthRadius - sourceRadius); - pRay->setupRayParam(); - - // get travel time and ray parameter - double tdif = pRay->travel( - (glass3::util::GlassMath::k_DegreesToRadians * delta), radius); - - // check for valid travel time - if (tdif < 0) { - // no traveltime - return (false); - } - - // fill in values - dTravelTime = travelTime; - dDepthDistance = tdif - dTravelTime; - rayParameter = rayParam; - Phase = phase; - - // have a travel time - return (true); - } - - // no traveltime - return (false); -} -} // namespace traveltime diff --git a/glasscore/traveltime/src/Ray.cpp b/glasscore/traveltime/src/Ray.cpp deleted file mode 100644 index 52309fb0..00000000 --- a/glasscore/traveltime/src/Ray.cpp +++ /dev/null @@ -1,855 +0,0 @@ -#include "Ray.h" -#include -#include -#include -#include -#include "Terra.h" - -namespace traveltime { - -// ------------------------------------------------------------------CRay -CRay::CRay() { - clear(); -} - -// ------------------------------------------------------------------CRay -CRay::CRay(CTerra *terra) { - clear(); - - initialize(terra); -} - -// ------------------------------------------------------------------~CRay -CRay::~CRay() { - clear(); -} - -// ---------------------------------------------------------initialize -void CRay::initialize(CTerra *terra) { - pTerra = terra; -} - -// ---------------------------------------------------------clear -void CRay::clear() { - pTerra = NULL; - - dMinimumRayParam = 0; - dMaximumRayParam = 0; - dEarthRadius = 0; - iPhaseIndex = -1; -} - -// ------------------------------------------------------------------setPhase -int CRay::setPhase(const char *phase) { - // look for phase in phase list - for (int i = 0; i < nPhase; i++) { - // is this it - if (strcmp(phase, PhaseIndexesValues[i]) != 0) { - continue; - } - - // found it - iPhaseIndex = i; - return (iPhaseIndex); - } - - // no matching phase found - return (-1); -} - -// --------------------------------------------------------------setupRayParam -void CRay::setupRayParam() { - // nullcheck - if (pTerra == NULL) { - return; - } - - int layerIndex; - - // init to defaults - dMinimumRayParam = 0.0; - dMaximumRayParam = 1.0; - - // based on the phase we're set up for, setup - // the ray parameters - switch (iPhaseIndex) { - case RAY_Pup: - dMinimumRayParam = 0.0; - dMaximumRayParam = dEarthRadius / pTerra->P(dEarthRadius); - break; - - case RAY_P: - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - dMaximumRayParam = dEarthRadius / pTerra->P(dEarthRadius); - break; - - case RAY_Pdiff: - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - dMaximumRayParam = dMinimumRayParam; - break; - - case RAY_PP: - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - dMaximumRayParam = dEarthRadius / pTerra->P(dEarthRadius); - break; - - case RAY_PPP: - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - dMaximumRayParam = dEarthRadius / pTerra->P(dEarthRadius); - break; - - case RAY_PKP: - case RAY_PKPab: - case RAY_PKPbc: - layerIndex = pTerra->iInnerDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMaximumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - break; - - case RAY_PKIKP: - case RAY_PKPdf: - layerIndex = 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - layerIndex = pTerra->iInnerDiscontinuity; - dMaximumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - break; - - case RAY_PcP: - layerIndex = 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMaximumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerPVel[layerIndex]; - break; - - case RAY_Sup: - dMinimumRayParam = 0.0; - dMaximumRayParam = dEarthRadius / pTerra->S(dEarthRadius); - break; - - case RAY_S: - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerSVel[layerIndex]; - dMaximumRayParam = dEarthRadius / pTerra->S(dEarthRadius); - break; - - case RAY_Sdiff: - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerSVel[layerIndex]; - dMaximumRayParam = dMinimumRayParam; - break; - - case RAY_SS: - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerSVel[layerIndex]; - dMaximumRayParam = dEarthRadius / pTerra->S(dEarthRadius); - break; - - case RAY_SSS: - layerIndex = pTerra->iOuterDiscontinuity + 1; - dMinimumRayParam = pTerra->dLayerRadii[layerIndex] - / pTerra->dLayerSVel[layerIndex]; - dMaximumRayParam = dEarthRadius / pTerra->S(dEarthRadius); - break; - - default: - break; - } - // printf("Setup phaseIndex %d dMinimumRayParam:%.6f dMaximumRayParam:%.6f\n", - // iPhaseIndex, dMinimumRayParam, dMaximumRayParam); -} - -// ------------------------------------------------------------------setDepth -void CRay::setDepth(double depth) { - // use earthmodel radius if available - if (pTerra) { - dEarthRadius = pTerra->dEarthRadius - depth; - } else { - dEarthRadius = 6371.0 - depth; - } -} - -// ------------------------------------------------------------------travel -double CRay::travel(double delta) { - return (travel(delta, pTerra->dEarthRadius)); -} - -// ------------------------------------------------------------------travel -double CRay::travel(double delta, double earthRadius) { - double rayParam; - - return (travel(delta, earthRadius, &rayParam)); -} - -// ------------------------------------------------------------------travel -double CRay::travel(double delta, double earthRadius, double *rayParam) { - // Calculate minimum travel time from Tau curve for current - // branch. Returns least travel time as well as ray parameter - // at minimum. - // nullcheck - if (pTerra == NULL) { - return (-1); - } - - int ip; - - double calcRayParam; - double pinc; - double x[3]; - double y1, y2; - double time; - double d; - double trav; - double rturn; - int nbranch; - - glass3::util::Logger::log( - "debug", - "CRay::travel: delta:" + std::to_string(delta) + " earthRadius:" - + std::to_string(earthRadius)); - - trav = -10.0; // Indicates no arrivals detected - - double funFac = 1.0; - - switch (iPhaseIndex) { - case RAY_Pdiff: - rturn = pTerra->dLayerRadii[pTerra->iOuterDiscontinuity + 1]; - d = 2.0 - * pTerra->integrateRaySegment(FUN_P_DELTA, rturn, - dEarthRadius, - dMinimumRayParam) - + pTerra->integrateRaySegment(FUN_P_DELTA, dEarthRadius, - earthRadius, - dMinimumRayParam); - if (delta < d) { - return (trav); - } - time = 2.0 - * pTerra->integrateRaySegment(FUN_P_TIME, rturn, - dEarthRadius, - dMinimumRayParam) - + pTerra->integrateRaySegment(FUN_P_TIME, dEarthRadius, - earthRadius, - dMinimumRayParam); - trav = - time - + glass3::util::GlassMath::k_RadiansToDegrees - * (delta - d) - * pTerra->dLayerRadii[pTerra - ->iOuterDiscontinuity + 1] - * glass3::util::Geo::k_DegreesToKm - / earthRadius - / pTerra->dLayerPVel[pTerra - ->iOuterDiscontinuity + 1]; - *rayParam = dMinimumRayParam; - return trav; - case RAY_Sdiff: - rturn = pTerra->dLayerRadii[pTerra->iOuterDiscontinuity + 1]; - d = 2.0 - * pTerra->integrateRaySegment(FUN_S_DELTA, rturn, - dEarthRadius, - dMinimumRayParam) - + pTerra->integrateRaySegment(FUN_S_DELTA, dEarthRadius, - earthRadius, - dMinimumRayParam); - if (delta < d) - return (trav); - time = 2.0 - * pTerra->integrateRaySegment(FUN_S_TIME, rturn, - dEarthRadius, - dMinimumRayParam) - + pTerra->integrateRaySegment(FUN_S_TIME, dEarthRadius, - earthRadius, - dMinimumRayParam); - trav = - time - + glass3::util::GlassMath::k_RadiansToDegrees - * (delta - d) - * pTerra->dLayerRadii[pTerra - ->iOuterDiscontinuity + 1] - * glass3::util::Geo::k_DegreesToKm - / earthRadius - / pTerra->dLayerSVel[pTerra - ->iOuterDiscontinuity + 1]; - *rayParam = dMinimumRayParam; - return trav; - } - double p1, p2; - double pincmax = 2.0; - double pincmin = 1.0e-8; - pinc = pincmin; - p2 = dMaximumRayParam + pinc; - ip = 0; - nbranch = 0; // Branch index to resolve multiple phases - p1 = y1 = y2 = 0.0; - time = -5.0; - - if (false) { - double qinc = 1.0; - for (double calcRayParam = dMinimumRayParam; - calcRayParam < dMaximumRayParam + qinc; calcRayParam += qinc) { - double q = calcRayParam; - if (q > dMaximumRayParam) { - q = dMaximumRayParam; - } - // printf("%.4f %.6f\n", q, - // calculateThetaFunction(q, funFac, delta, earthRadius)); - } - return (-13.0); - } - - while (p2 > dMinimumRayParam) { - // printf("%d p2:%.4f dMinimumRayParam:%.4f\n", ip, p2, dMinimumRayParam); - double p0 = p1; - p1 = p2; - p2 -= pinc; - calcRayParam = p2; - if (calcRayParam < dMinimumRayParam) { - calcRayParam = dMinimumRayParam; - } - double y0 = y1; - y1 = y2; - y2 = calculateThetaFunction(calcRayParam, funFac, delta, earthRadius); - - // Skip first two calculations - if (ip++ < 2) { - continue; - } - - if (y1 < y0 && y1 < y2) { - funFac = 1.0; - pinc = pincmin; - } else if (y1 > y0 && y1 > y2) { - funFac = -1.0; - pinc = pincmin; - } else { - // Accelerate search by expanding search mesh - pinc *= 2.0; - if (pinc > pincmax) { - pinc = pincmax; - } - continue; - } - x[0] = calcRayParam; - x[1] = p1; - x[2] = p0; - time = funFac - * brentMinimization(x, 2.0e-3, &calcRayParam, funFac, delta, - earthRadius); - nbranch++; - switch (iPhaseIndex) { - case RAY_PKPab: - // First extrema in rayParam order - if (nbranch == 1) { - trav = time; - *rayParam = calcRayParam; - } - break; - case RAY_PKPbc: - // Second extrema in rayParam order - if (nbranch == 2) { - trav = time; - *rayParam = calcRayParam; - } - break; - default: - // For all other multiple branches accept the earliest arrival - if (trav < 0.0 || time < trav) { - trav = time; - *rayParam = calcRayParam; - } - break; - } - funFac = 1.0; - } - switch (iPhaseIndex) { - case RAY_PKPbc: - // For PKPbc to exist, PKPab must also, otherwise phase is PKPab - if (nbranch < 2) { - trav = -12.0; - } - break; - } - return (trav); -} - -// ------------------------------------------------------------------travelBasic -// travelBasic: Calculate travel time (seconds) for given distance (radians) -double CRay::travelBasic(double delta) { - double x[6]; - double trav; - double xmin; - int i; - - x[1] = dMinimumRayParam; - x[2] = dMinimumRayParam + 1.0; - - double funFac = 1.0; - - if (calculateThetaFunction(x[2], funFac, delta, dEarthRadius) - > calculateThetaFunction(x[1], funFac, delta, dEarthRadius)) { - funFac = -1.0; - } - - for (i = 0; i < 2; i++) { - x[0] = x[1]; - x[1] = x[2]; - calculateBracketMinima(x, funFac, delta, dEarthRadius); - double time = funFac - * brentMinimization(x, 2.0e-3, &xmin, funFac, delta, - dEarthRadius); - if (i == 0) { - trav = time; - } - if (time < trav) { - trav = time; - } - if (x[2] >= dMaximumRayParam) { - break; - } - x[1] = xmin; - funFac = -funFac; - } - return (trav); -} - -// ------------------------------------------------------------------delta -double CRay::delta(double time, double *pret) { - // Find the minimum delta given a travel-time - // Returns -1.0 for no such arrival - // nullcheck - if (pTerra == NULL) { - return (-1); - } - - double dmax = -1.0; - double pmax; - int n = 1000; - - for (int i = 0; i < n; i++) { - double pdel = (dMaximumRayParam - dMinimumRayParam) / (n - 1); - double t1 = 0; - double p2 = dMinimumRayParam + i * pdel; - double t2 = integrateFunction(FUN_P_TIME, p2, pTerra->dEarthRadius); - - if (!i) { - t1 = t2; - continue; - } - - if ((t1 < time && t2 > time) || (t2 < time && t1 > time)) { - double dcal = -1.0; - double p1 = p2 - pdel; - double t2save = t2; - double rayParam = 0; - for (int iref = 0; iref < 5; iref++) { - rayParam = p1 + (time - t1) * (p2 - p1) / (t2 - t1); - double tcal = integrateFunction(FUN_P_TIME, rayParam, - pTerra->dEarthRadius); - dcal = integrateFunction(FUN_P_DELTA, rayParam, - pTerra->dEarthRadius); - - if (fabs(tcal - time) < 0.5) { - break; - } - - if (t2 > t1) { - if (tcal > time) { - p2 = rayParam; - t2 = tcal; - } else { - p1 = rayParam; - t1 = tcal; - } - } else { - if (tcal > time) { - p1 = rayParam; - t1 = tcal; - } else { - p2 = rayParam; - t2 = tcal; - } - } - } - - t2 = t2save; - - if (dcal > dmax) { - dmax = dcal; - pmax = rayParam; - } - } - t1 = t2; - } - *pret = pmax; - return (dmax); -} - -// ------------------------------------------------------------------T -double CRay::T(double rayParam, double earthRadius) { - // Calculate travel time as a function of ray parameter. - return (integrateFunction(FUN_P_TIME, rayParam, earthRadius)); -} - -// ------------------------------------------------------------------D -double CRay::D(double rayParam, double earthRadius) { - // Calculate distance (radians) as a function of ray parameter - if (rayParam < 0.0001) { - return (0.0); - } - return (integrateFunction(FUN_P_DELTA, rayParam, earthRadius)); -} - -// ------------------------------------------------------------------tau -double CRay::tau(double rayParam, double earthRadius) { - // tau(rayParam): Calculate Tau as a function of ray parameter - return (integrateFunction(FUN_P_TAU, rayParam, earthRadius)); -} - -// -----------------------------------------------------------integrateFunction -double CRay::integrateFunction(int functionIndex, double rayParam, - double earthRadius) { - // integrateFunction(functionIndex, rayParam): Time, range, and tau - // integrals over depth. This is an internal routine. - // nullcheck - if (pTerra == NULL) { - return (-1); - } - - double rturn; // Turning radius (if applicable) - int ilay1; // Innermost model index - int ilay2; // Outermost model index - double val; // Integral accumulator - - if (rayParam < dMinimumRayParam || rayParam > dMaximumRayParam) { - return -100.0; - } - - val = 0.0; - switch (iPhaseIndex) { - case RAY_Pup: - val = pTerra->integrateRaySegment(functionIndex, dEarthRadius, - earthRadius, rayParam); - break; - case RAY_P: - ilay1 = pTerra->iOuterDiscontinuity + 1; - ilay2 = pTerra->nLayer - 1; - rturn = pTerra->calculateTurnRadius(ilay1, ilay2, - pTerra->dLayerPVel, rayParam); - val = 2.0 - * pTerra->integrateRaySegment(functionIndex, rturn, - dEarthRadius, rayParam) - + pTerra->integrateRaySegment(functionIndex, dEarthRadius, - earthRadius, rayParam); - break; - case RAY_Pdiff: - val = 0.0; - break; - case RAY_PP: - ilay1 = pTerra->iOuterDiscontinuity + 1; - ilay2 = pTerra->nLayer - 1; - rturn = pTerra->calculateTurnRadius(ilay1, ilay2, - pTerra->dLayerPVel, rayParam); - val = 4.0 - * pTerra->integrateRaySegment(functionIndex, rturn, - dEarthRadius, rayParam) - + 3.0 - * pTerra->integrateRaySegment(functionIndex, - dEarthRadius, - earthRadius, - rayParam); - break; - case RAY_PPP: - ilay1 = pTerra->iOuterDiscontinuity + 1; - ilay2 = pTerra->nLayer - 1; - rturn = pTerra->calculateTurnRadius(ilay1, ilay2, - pTerra->dLayerPVel, rayParam); - val = 6.0 - * pTerra->integrateRaySegment(functionIndex, rturn, - dEarthRadius, rayParam) - + 5.0 - * pTerra->integrateRaySegment(functionIndex, - dEarthRadius, - earthRadius, - rayParam); - break; - case RAY_PKP: - case RAY_PKPab: - case RAY_PKPbc: - ilay1 = pTerra->iInnerDiscontinuity + 1; - ilay2 = pTerra->iOuterDiscontinuity; - rturn = pTerra->calculateTurnRadius(ilay1, ilay2, - pTerra->dLayerPVel, rayParam); - val = 2.0 - * pTerra->integrateRaySegment(functionIndex, rturn, - dEarthRadius, rayParam) - + pTerra->integrateRaySegment(functionIndex, dEarthRadius, - earthRadius, rayParam); - break; - case RAY_PKIKP: - case RAY_PKPdf: - ilay1 = 1; - ilay2 = pTerra->iInnerDiscontinuity; - rturn = pTerra->calculateTurnRadius(ilay1, ilay2, - pTerra->dLayerPVel, rayParam); - val = 2.0 - * pTerra->integrateRaySegment(functionIndex, rturn, - dEarthRadius, rayParam) - + pTerra->integrateRaySegment(functionIndex, dEarthRadius, - earthRadius, rayParam); - break; - case RAY_PcP: - rturn = pTerra->dLayerRadii[pTerra->iOuterDiscontinuity + 1]; - val = 2.0 - * pTerra->integrateRaySegment(functionIndex, rturn, - dEarthRadius, rayParam) - + pTerra->integrateRaySegment(functionIndex, dEarthRadius, - earthRadius, rayParam); - - break; - case RAY_Sup: - val = pTerra->integrateRaySegment(functionIndex + 1, dEarthRadius, - earthRadius, rayParam); - break; - case RAY_S: - ilay1 = pTerra->iOuterDiscontinuity + 1; - ilay2 = pTerra->nLayer - 1; - rturn = pTerra->calculateTurnRadius(ilay1, ilay2, - pTerra->dLayerSVel, rayParam); - val = 2.0 - * pTerra->integrateRaySegment(functionIndex + 1, rturn, - dEarthRadius, rayParam) - + pTerra->integrateRaySegment(functionIndex + 1, - dEarthRadius, earthRadius, - rayParam); - break; - case RAY_Sdiff: - return 0.0; - case RAY_SS: - ilay1 = pTerra->iOuterDiscontinuity + 1; - ilay2 = pTerra->nLayer - 1; - rturn = pTerra->calculateTurnRadius(ilay1, ilay2, - pTerra->dLayerSVel, rayParam); - val = 4.0 - * pTerra->integrateRaySegment(functionIndex + 1, rturn, - dEarthRadius, rayParam) - + 3.0 - * pTerra->integrateRaySegment(functionIndex + 1, - dEarthRadius, - earthRadius, - rayParam); - break; - case RAY_SSS: - ilay1 = pTerra->iOuterDiscontinuity + 1; - ilay2 = pTerra->nLayer - 1; - rturn = pTerra->calculateTurnRadius(ilay1, ilay2, - pTerra->dLayerSVel, rayParam); - val = 6.0 - * pTerra->integrateRaySegment(functionIndex + 1, rturn, - dEarthRadius, rayParam) - + 5.0 - * pTerra->integrateRaySegment(functionIndex + 1, - dEarthRadius, - earthRadius, - rayParam); - break; - default: - break; - } - return val; -} - -// ------------------------------------------------------calculateThetaFunction -double CRay::calculateThetaFunction(double rayParam, double dFunFac, - double dDelta, double dRcvr) { - // Calculates theta function after Buland and Chapman(1983) - // Assumes x in radians - // Reflect at dMaximumRayParam - if (rayParam > dMaximumRayParam) { - rayParam = 2.0 * dMaximumRayParam - rayParam; - } - - double theta = tau(rayParam, dRcvr) + rayParam * dDelta; - double result = dFunFac * theta; - - return (result); -} - -// ------------------------------------------------------calculateBracketMinima -static double dArg1; -static double dArg2; -#define ITMAX 50 -#define SHFT(a, b, c, d) (a)=(b); (b)=(c); (c)=(d); -#define GOLD 1.618034 -#define GLIMIT 100.0 -#define TINY 1.0e-20 -#define SIGN(a, b) ((b) > 0.0 ? fabs(a) : -fabs(a)) -#define FMAX(a, b) (dArg1 = (a), dArg2 = (b), (dArg1 > dArg2) ? dArg1 : dArg2) -void CRay::calculateBracketMinima(double *x, double dFunFac, double dDelta, - double dRcvr) { - // calculateBracketMinima: Bracket function minima (1-dimensional) - double ulim; - double u; - double r; - double q; - double fu; - double dum; - double ax = x[0]; - double bx = x[1]; - double cx = x[2]; - double fa = calculateThetaFunction(ax, dFunFac, dDelta, dRcvr); // x[3]; - double fb = calculateThetaFunction(bx, dFunFac, dDelta, dRcvr); // x[4]; - double fc = x[5]; - - if (fb > fa) { - SHFT(dum, ax, bx, dum) - SHFT(dum, fb, fa, dum) - } - cx = bx + GOLD * (bx - ax); - fc = calculateThetaFunction(cx, dFunFac, dDelta, dRcvr); - while (fb > fc) { - r = (bx - ax) * (fb - fc); - q = (bx - cx) * (fb - fa); - u = bx - - ((bx - cx) * q - (bx - ax) * r) - / (2.0 * SIGN(FMAX(fabs(q-r), TINY), q - r)); - ulim = bx + GLIMIT * (cx - bx); - if ((bx - u) * (u - cx) > 0.0) { - fu = calculateThetaFunction(u, dFunFac, dDelta, dRcvr); - if (fu < fc) { - ax = bx; - bx = u; - fa = fb; - fb = fu; - goto pau; - } else if (fu > fb) { - cx = u; - fc = fu; - goto pau; - } - u = cx + GOLD * (cx - bx); - fu = calculateThetaFunction(u, dFunFac, dDelta, dRcvr); - } else if ((cx - u) * (u - ulim) > 0.0) { - fu = calculateThetaFunction(u, dFunFac, dDelta, dRcvr); - if (fu < fc) { - SHFT(bx, cx, u, cx+GOLD*(cx - bx)) - SHFT(fb, fc, fu, - calculateThetaFunction(u, dFunFac, dDelta, dRcvr)) - } - } else if ((u - ulim) * (ulim - cx) >= 0.0) { - u = ulim; - fu = calculateThetaFunction(u, dFunFac, dDelta, dRcvr); - } else { - u = cx + GOLD * (cx - bx); - fu = calculateThetaFunction(u, dFunFac, dDelta, dRcvr); - } - SHFT(ax, bx, cx, u); - SHFT(fa, fb, fc, fu); - } - - pau: x[0] = ax; - x[1] = bx; - x[2] = cx; - x[3] = fa; - x[4] = fb; - x[5] = fc; - return; -} - -// -----------------------------------------------------------brentMinimization -#define CGOLD 0.3819660 -#define ZEPS 1.0e-10 -double CRay::brentMinimization(double *xx, double tol, double *xmin, - double dFunFac, double dDelta, double dRcvr) { - int iter; - double ax = xx[0]; - double bx = xx[1]; - double cx = xx[2]; - double a, b, d; - double etemp; - double fv, fw, fx; - double p, q, r; - double u, v, w, x; - double e = 0.0; - - a = (ax < cx ? ax : cx); - b = (ax > cx ? ax : cx); - x = w = v = bx; - fw = fv = fx = calculateThetaFunction(x, dFunFac, dDelta, dRcvr); - for (iter = 1; iter <= ITMAX; iter++) { - double xm = 0.5 * (a + b); - double tol1 = tol * fabs(x) + ZEPS; - double tol2 = 2.0 * tol1; - if (fabs(x - xm) <= (tol2 - 0.5 * (b - a))) { - *xmin = x; - return fx; - } - if (fabs(e) > tol1) { - r = (x - w) * (fx - fv); - q = (x - v) * (fx - fw); - p = (x - v) * q - (x - w) * r; - q = 2.0 * (q - r); - if (q > 0.0) - p = -p; - q = fabs(q); - etemp = e; - e = d; - if (fabs(p) >= fabs(0.5 * q * etemp) || p <= q * (a - x) - || p >= q * (b - x)) { - d = CGOLD * (e = (x >= xm ? a - x : b - x)); - } else { - d = p / q; - u = x + d; - if (u - a < tol2 || b - u < tol2) - d = SIGN(tol1, xm - x); - } - } else { - d = CGOLD * (e = (x >= xm ? a - x : b - x)); - } - u = (fabs(d) >= tol1 ? x + d : x + SIGN(tol1, d)); - double fu = calculateThetaFunction(u, dFunFac, dDelta, dRcvr); - if (fu <= fx) { - if (u >= x) - a = x; - else - b = x; - SHFT(v, w, x, u) - SHFT(fv, fw, fx, fu) - } else { - if (u < x) - a = u; - else - b = u; - if (fu <= fw || w == x) { - v = w; - w = u; - fv = fw; - fw = fu; - } else if (fu <= fv || v == x || v == w) { - v = u; - fv = fu; - } - } - } - *xmin = x; - return fx; -} -} // namespace traveltime diff --git a/glasscore/traveltime/src/Spline.cpp b/glasscore/traveltime/src/Spline.cpp deleted file mode 100644 index 4729d7a1..00000000 --- a/glasscore/traveltime/src/Spline.cpp +++ /dev/null @@ -1,176 +0,0 @@ -#include "Spline.h" -#include -#include - -namespace traveltime { - -// ---------------------------------------------------------CSpline -CSpline::CSpline() { - clear(); -} - -// ---------------------------------------------------------CSpline -CSpline::CSpline(int n, double *x, double *y) { - setup(n, x, y); -} - -// ---------------------------------------------------------~CSpline -CSpline::~CSpline() { - clear(); -} - -// ---------------------------------------------------------clear -void CSpline::clear() { - nX = 0; - - if (dX) { - delete[] (dX); - dX = NULL; - } - if (dY) { - delete[] (dY); - dY = NULL; - } - if (dY2) { - delete[] (dY2); - dY2 = NULL; - } -} - -// ---------------------------------------------------------CSpline -void CSpline::setup(int n, double *x, double *y) { - clear(); - - // nullchecks - if (n == 0) { - glass3::util::Logger::log("error", - "CSpline::setup: n is 0."); - return; - } - if (x == NULL) { - glass3::util::Logger::log("error", - "CSpline::setup: NULL x"); - return; - } - if (y == NULL) { - glass3::util::Logger::log("error", - "CSpline::setup: NULL y."); - return; - } - - // remember number of points - nX = n; - - // create control point arrays - dX = new double[n]; - dY = new double[n]; - dY2 = new double[n]; - double *u = new double[n]; - - // fill in control point arrays - for (int i = 0; i < n; i++) { - dX[i] = x[i]; - dY[i] = y[i]; - } - - // init derivative value arrays - u[0] = 0.0; - dY2[0] = 0.0; - - // compute derivative values - for (int i = 1; i < n - 1; i++) { - double sig = (x[i] - x[i - 1]) / (x[i + 1] - x[i - 1]); - double p = sig * dY2[i - 1] + 2.0; - dY2[i] = (sig - 1.0) / p; - u[i] = (y[i + 1] - y[i]) / (x[i + 1] - x[i]) - - (y[i] - y[i - 1]) / (x[i] - x[i - 1]); - u[i] = (6.0 * u[i] / (x[i + 1] - x[i - 1]) - sig * u[i - 1]) / p; - } - dY2[n - 1] = 0.0; - - for (int k = n - 2; k >= 0; k--) { - dY2[k] = dY2[k] * dY2[k + 1] + u[k]; - } - - // cleanup - delete[] (u); -} - -// ---------------------------------------------------------CSpline -double CSpline::Y(double x) { - // nullchecks - if (nX == 0) { - glass3::util::Logger::log("error", - "CSpline::Y: nX is 0."); - return (0); - } - if (dX == NULL) { - glass3::util::Logger::log("error", - "CSpline::Y: NULL dX"); - return (0); - } - if (dY == NULL) { - glass3::util::Logger::log("error", - "CSpline::Y: NULL dY."); - return (0); - } - if (dY2 == NULL) { - glass3::util::Logger::log("error", - "CSpline::Y: NULL dY2."); - return (0); - } - - int klo = 1; - int khi = nX; - - // find index corresponding to x - while (khi - klo > 1) { - int k = (khi + klo) >> 1; - - if (dX[k - 1] > x) { - khi = k; - } else { - klo = k; - } - } - - // compute and check x value - double h = dX[khi - 1] - dX[klo - 1]; - // NOTE: Why 1.0 - 30? - if (h < 1.0 - 30) { - return (0.0); - } - - double a = (dX[khi - 1] - x) / h; - double b = (x - dX[klo - 1]) / h; - - // compute y value - double y = a * dY[klo - 1] + b * dY[khi - 1] - + ((a * a * a - a) * dY2[klo - 1] + (b * b * b - b) * dY2[khi - 1]) - * h * h / 6.0; - - return (y); -} - -// ---------------------------------------------------------Test -/* move to unit test - void CSpline::test() { - double x[100]; - double y[100]; - CSpline spline; - double xx; - double yy; - double rr; - - for (int i = 0; i < 11; i++) { - x[i] = 0.1 * i; - y[i] = sin(x[i] * 6.28318530); - } - spline.Setup(11, x, y); - for (int i = 0; i < 101; i++) { - xx = 0.01 * i; - yy = spline.Y(xx); - rr = sin(xx * 6.28318530); - } - }*/ -} // namespace traveltime diff --git a/glasscore/traveltime/src/TTT.cpp b/glasscore/traveltime/src/TTT.cpp index 2164138a..d1fd6136 100644 --- a/glasscore/traveltime/src/TTT.cpp +++ b/glasscore/traveltime/src/TTT.cpp @@ -6,7 +6,6 @@ #include #include #include "TravelTime.h" -#include "Ray.h" namespace traveltime { @@ -69,6 +68,18 @@ void CTTT::clear() { } } +// -------------------------------------------------------writeToFiles +void CTTT::writeToFiles(std::string outDir, double depth) { + // write out each ttfile we know about as csv + for (int i = 0; i < k_iMaximumNumberOfTravelTimes; i++) { + if (m_pTravelTimes[i] != NULL) { + std::string fileName = outDir + "/" + m_pTravelTimes[i]->m_sPhase + + "_" + std::to_string(depth) + ".csv"; + m_pTravelTimes[i]->writeToFile(fileName, depth); + } + } +} + // ---------------------------------------------------------addPhase // Add phase to list to be calculated bool CTTT::addPhase(std::string phase, double *weightRange, double *assocRange, @@ -212,8 +223,8 @@ double CTTT::T(double delta, std::string phase) { return (CTravelTime::k_dTravelTimeInvalid); } -// ---------------------------------------------------------T -double CTTT::testTravelTimes(std::string phase) { +// ---------------------------------------------------------testTravelTimes +/* double CTTT::testTravelTimes(std::string phase) { // Calculate time from delta (degrees) double time = 0; std::ofstream outfile; @@ -245,7 +256,7 @@ double CTTT::testTravelTimes(std::string phase) { outfile.close(); return (1.0); -} +} */ // ---------------------------------------------------------T double CTTT::T(glass3::util::Geo *geo, double tObserved) { diff --git a/glasscore/traveltime/src/Terra.cpp b/glasscore/traveltime/src/Terra.cpp deleted file mode 100644 index 324851ff..00000000 --- a/glasscore/traveltime/src/Terra.cpp +++ /dev/null @@ -1,514 +0,0 @@ -#include "Terra.h" -#include -#include -#include -#include -#include -#include - -namespace traveltime { - -// ---------------------------------------------------------CTerra -CTerra::CTerra() { - clear(); -} - -// ---------------------------------------------------------CTerra -CTerra::CTerra(std::string filename) { - load(filename); -} - -// ---------------------------------------------------------~CTerra -CTerra::~CTerra() { -} - -// ---------------------------------------------------------clear -void CTerra::clear() { - nLayer = 0; - dEarthRadius = 0.0; - iOuterDiscontinuity = -1; - iInnerDiscontinuity = -1; - nDiscontinuities = 0; -} - -// ---------------------------------------------------------load -bool CTerra::load(std::string filename) { - // null check - if (filename == "") { - glass3::util::Logger::log("error", - "CTerra::load: Empty filename provided."); - return (false); - } - - // reset - clear(); - - // file handle - FILE *earthModelFile; - - // file buffer - char buf[4096]; - double dFileLayerRadii[MAXLAYERS]; - double dFileLayerPVel[MAXLAYERS]; - double dFileLayerSVel[MAXLAYERS]; - - // Remember the path - sModelFilePath = filename; - - // open the model file - earthModelFile = fopen(filename.c_str(), "rt"); - - // make sure we loaded a valid file - if (!earthModelFile) { - glass3::util::Logger::log( - "error", - "CTerra::load: Unable to open earth model file: " + filename); - return (false); - } - - // loop through file until - while (true) { - // get the next line from the file - char * line = fgets(buf, 4000, earthModelFile); - - // make sure we got a line - // (also ends the loop when we get to the end of the file) - if (!line) { - break; - } - - // parse the line into an array - json::Array arr = parse(line); - - // make sure the line parsed - if (arr.size() < 1) { - break; - } - - // get the first sting in the line - std::string str = (std::string) arr[0]; - - // lines that start with # are comments, skip - if (str == "#") { - continue; - } - - // make sure we've got enough entries on the line - // we should have 3 - if (arr.size() < 3) { - break; - } - - // first string is the radius of the layer - str = (std::string) arr[0]; - dFileLayerRadii[nLayer] = atof(str.c_str()); - - // second string is the P velocity - str = (std::string) arr[1]; - dFileLayerPVel[nLayer] = atof(str.c_str()); - - // third string is the S velocity - str = (std::string) arr[2]; - dFileLayerSVel[nLayer] = atof(str.c_str()); - nLayer++; - } - - // close the model file - fclose(earthModelFile); - - // Assume max depth is center of planet - dEarthRadius = dFileLayerRadii[nLayer - 1]; - - // Invert so are arranged with increasing radius. - for (int i = 0; i < nLayer; i++) { - dLayerRadii[i] = dEarthRadius - dFileLayerRadii[nLayer - i - 1]; - dLayerPVel[i] = dFileLayerPVel[nLayer - i - 1]; - dLayerSVel[i] = dFileLayerSVel[nLayer - i - 1]; - } - - // for each layer - for (int i = 0; i < nLayer - 1; i++) { - // is this a discontinuity - if ((dLayerRadii[i] > (dLayerRadii[i + 1] - 0.001)) - && (dLayerRadii[i] < (dLayerRadii[i + 1] + 0.001))) { - // save this discontinuity - iDiscontinuityIndexes[nDiscontinuities++] = i; - - // is this the inner core discontinuity - if ((dLayerSVel[i] > 0.01) && (dLayerSVel[i + 1] < 0.01)) { - iInnerDiscontinuity = i; - } - - // is this the outer core discontinuity - if ((dLayerSVel[i] < 0.01) && (dLayerSVel[i + 1] > 0.01)) { - iOuterDiscontinuity = i; - } - } - } - - glass3::util::Logger::log( - "debug", - "CTerra::load: Loaded earth model file: " + filename); - - return (true); -} - -// ---------------------------------------------------------parse -json::Array CTerra::parse(const char *line) { - // NOTE: Why are we using a json array!? - // switch to vector or something that doesn't require - // an external library - json::Array arr; - char str[1000]; - - // set up to search for the start of a string - int state = 0; - int strLength = 0; - - // For each character in the line - for (int i = 0; i < static_cast(strlen(line)); i++) { - char c = line[i]; - switch (state) { - case 0: - // Looking for first non-blank - if (c == ' ' || c == '\t' || c == ',' || c == '\n' - || c == '\r') { - continue; - } - - // copy first character - str[0] = c; - - // init string length to 1 - strLength = 1; - - // found the start of the string, - // setup to search for the end - state = 1; - break; - - case 1: - // Looking for end of string - if (c == ' ' || c == '\t' || c == ',' || c == '\n' - || c == '\r') { - // found end of string - // null terminate - str[strLength] = 0; - - // add string to array - arr.push_back(std::string(str)); - - // reset for next string - // set up to search for the start of a string - strLength = 0; - state = 0; - } else { - // not at end, copy next character - str[strLength++] = c; - } - break; - } - } - - // if we have a valid string - if (strLength) { - // null terminate - str[strLength] = 0; - - // add string to array - arr.push_back(std::string(str)); - } - - // return the array of strings - return (arr); -} - -// ---------------------------------------------------------P -double CTerra::P(double radius) { - // Interpolate velocity for P, currently linear only - return (interpolateVelocity(radius, dLayerPVel)); -} - -// ---------------------------------------------------------S -double CTerra::S(double radius) { - // Interpolate velocity for S, currently linear only - return (interpolateVelocity(radius, dLayerSVel)); -} - -// ---------------------------------------------------------interpolateVelocity -double CTerra::interpolateVelocity(double radius, double *layerVelocity) { - double velocity; - int lowerIndex = -1; - int upperIndex = nLayer; - - // use a binary search to find the layer index for the given - // earth radius. The found index is stored in the lower index - while (upperIndex - lowerIndex > 1) { - // compute the current middle index - // right shift bits by one (effectively divide by 2) - int middleIndex = (upperIndex + lowerIndex) >> 1; - - if (radius > dLayerRadii[middleIndex]) { - // if the given radius is greater than layer radius of - // the middle index, set the lower index to the current - // middle index - lowerIndex = middleIndex; - } else { - // if the given radius is less than layer radius of - // the middle index, set the upper index to the current - // middle index - upperIndex = middleIndex; - } - } - - // lower index can't be less than 0 - if (lowerIndex < 0) { - lowerIndex = 0; - } - - // lower index also can't be greater than the number of layers - if (lowerIndex > nLayer - 2) { - lowerIndex = nLayer - 2; - } - - // compute velocity at the identified layer - velocity = - layerVelocity[lowerIndex] - + (radius - dLayerRadii[lowerIndex]) - * (layerVelocity[lowerIndex + 1] - - layerVelocity[lowerIndex]) - / (dLayerRadii[lowerIndex + 1] - - dLayerRadii[lowerIndex]); - - return (velocity); -} - -// ---------------------------------------------------------calculateTurnRadius -double CTerra::calculateTurnRadius(int lowerIndex, int upperIndex, - double *layerVelocity, double rayParam) { - int myLowerIndex = lowerIndex; - int myUpperIndex = upperIndex; - int middleIndex; - - // use a binary search to find the layer index for the given - // earth radius. The found index is stored in the lower index - while (myUpperIndex - myLowerIndex > 1) { - // compute the current middle index - middleIndex = (myUpperIndex + myLowerIndex) >> 1; - - // compute the current ray parameter - double currentRayParam = dLayerRadii[middleIndex] - / layerVelocity[middleIndex]; - - if (rayParam > currentRayParam) { - // if the given ray param is greater than the current ray param at - // the middle index, set the lower index to the current - // middle index - myLowerIndex = middleIndex; - } else { - // if the given ray param is less than the current ray param at - // the middle index, set the upper index to the current - // middle index - myUpperIndex = middleIndex; - } - } - // lower index can't be less than 0 - if (myLowerIndex < 0) { - myLowerIndex = 0; - } - - // lower index also can't be greater than the number of layers - if (myLowerIndex > nLayer - 2) { - myLowerIndex = nLayer - 2; - } - - // get radii and velocities for calculation - double radius = dLayerRadii[myLowerIndex]; - double radius2 = dLayerRadii[myLowerIndex + 1]; - double velocity = layerVelocity[myLowerIndex]; - double velocity2 = layerVelocity[myLowerIndex + 1]; - - // Messy formula for radius because velocity not rayparam is linearly - // interpolated. - double turnRadius = rayParam - * (radius * (velocity2 - velocity) - velocity * (radius2 - radius)) - / (rayParam * (velocity2 - velocity) - (radius2 - radius)); - - return (turnRadius); -} - -// ---------------------------------------------------------evaluateFunction -double CTerra::evaluateFunction(int functionIndex, double earthRadius, - double rayParam) { - double velocity; - double result = 0.0; - - switch (functionIndex) { - case FUN_TEST: - // test evaluateFunction - result = 1.0 / sqrt(earthRadius); - // result = sin(earthRadius); - // result = earthRadius*earthRadius; - break; - - case FUN_P_TIME: - // evaluate the time function for P - velocity = P(earthRadius); - result = 1.0 - / sqrt(1.0 / velocity / velocity - - rayParam * rayParam / earthRadius / earthRadius) - / velocity / velocity; - break; - - case FUN_P_DELTA: - // evaluate the distance function for P - velocity = P(earthRadius); - result = rayParam - / sqrt(1.0 / velocity / velocity - - rayParam * rayParam / earthRadius / earthRadius) - / earthRadius / earthRadius; - break; - - case FUN_P_TAU: - // evaluate the Tau function for P - velocity = P(earthRadius); - result = sqrt( - 1.0 / velocity / velocity - - rayParam * rayParam / earthRadius / earthRadius); - break; - - case FUN_S_TIME: - // evaluate the time function for S - velocity = S(earthRadius); - result = 1.0 - / sqrt(1.0 / velocity / velocity - - rayParam * rayParam / earthRadius / earthRadius) - / velocity / velocity; - break; - - case FUN_S_DELTA: - // evaluate the distance function for S - velocity = S(earthRadius); - result = rayParam - / sqrt(1.0 / velocity / velocity - - rayParam * rayParam / earthRadius / earthRadius) - / earthRadius / earthRadius; - break; - - case FUN_S_TAU: - // evaluate the tau function for S - velocity = S(earthRadius); - result = sqrt( - 1.0 / velocity / velocity - - rayParam * rayParam / earthRadius / earthRadius); - break; - } - - return (result); -} - -// ---------------------------------------------------------integrateRaySegment -double CTerra::integrateRaySegment(int functionIndex, double startingRadius, - double endingRadius, double rayParam) { - double myStartingRadius = startingRadius; - double myEndingRadius = endingRadius; - double result = 0.0; - - // for the number of seismic discontinuities - for (int i = 0; i < nDiscontinuities; i++) { - // get the current discontinuities - int currentBreak = iDiscontinuityIndexes[i]; - - // continue if the starting radius is less or equal to the - // current discontinuity radius - if (dLayerRadii[currentBreak] <= myStartingRadius) { - continue; - } - - // compute if the ending radius is greater than the - // current discontinuity radius - if (dLayerRadii[currentBreak] < myEndingRadius) { - // compute the current function integral and add to the result - result += rombergIntegration(functionIndex, myStartingRadius, - dLayerRadii[currentBreak], - rayParam); - - // move to the next earth radius - myStartingRadius = dLayerRadii[currentBreak + 1]; - } - } - if (myEndingRadius > myStartingRadius) { - result += rombergIntegration(functionIndex, myStartingRadius, - myEndingRadius, rayParam); - } - - return (result); -} - -// ---------------------------------------------------------rombergIntegration -double CTerra::rombergIntegration(int functionIndex, double startingRadius, - double endingRadius, double rayParam) { - double accuracy = 1.0e-6; - double stepSize = 2; - double lowerLimit = startingRadius; - double upperLimit = endingRadius; - double rows[ROMB_MAX + 1]; - int rowIndex = 0; - double prevInt = 0; - int countLimit = 1; - - rows[0] = 0; - upperLimit -= lowerLimit; - - // loop until we've hit the maximum number of steps - for (int step = 0; step < ROMB_MAX; ++step) { - double currentStep = stepSize / 2 - 1; - double currentSum = 0.0; - - for (int count = 0; count < countLimit; count++) { - double t = 1 - currentStep * currentStep; - double currentLimit = currentStep + t * currentStep / 2; - currentLimit = (currentLimit * upperLimit + upperLimit) / 2 - + lowerLimit; - currentSum += t - * evaluateFunction(functionIndex, currentLimit, rayParam); - currentStep += stepSize; - } - - // compute trapezoidal steps - currentStep = 4; - double previousRow = rows[0]; - rows[0] = (rows[0] + stepSize * currentSum) / 2.0; - for (rowIndex = 0; rowIndex <= step; rowIndex++) { - double nextRow = rows[rowIndex + 1]; - rows[rowIndex + 1] = (currentStep * rows[rowIndex] - previousRow) - / (currentStep - 1); - previousRow = nextRow; - currentStep *= 4; - } - - // break out of loop if we're accurate enough - if (fabs(rows[rowIndex] - prevInt) - < accuracy * fabs(rows[rowIndex]) * 16) { - break; - } - - // save this trapezoidal step for next loop - prevInt = rows[rowIndex]; - - // increase lim for next loop - // left shift bits by one - // (effectively multiply by 2) - countLimit <<= 1; - - // decrease step size for next loop - stepSize /= 2.0; - } - - // compute final value from the last trapezoidal step and - // upper limit - double value = rows[rowIndex] * upperLimit * 3 / 4; - - return (value); -} -} // namespace traveltime diff --git a/glasscore/traveltime/src/TimeWarp.cpp b/glasscore/traveltime/src/TimeWarp.cpp deleted file mode 100644 index afb7aae8..00000000 --- a/glasscore/traveltime/src/TimeWarp.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "TimeWarp.h" -#include -#include - -namespace traveltime { - -// ---------------------------------------------------------CTimeWarp -CTimeWarp::CTimeWarp() { - clear(); -} - -// ---------------------------------------------------------CTimeWarp -CTimeWarp::CTimeWarp(double gridMin, double gridMax, double decayConst, - double slopeZero, double slopeInf) { - clear(); - - setup(gridMin, gridMax, decayConst, slopeZero, slopeInf); -} - -// ---------------------------------------------------------CTimeWarp -CTimeWarp::CTimeWarp(const CTimeWarp & timeWarp) { - clear(); - - m_dGridMinimum = timeWarp.m_dGridMinimum; - m_dGridMaximum = timeWarp.m_dGridMaximum; - m_dDecayConstant = timeWarp.m_dDecayConstant; - m_dSlopeZero = timeWarp.m_dSlopeZero; - m_dSlopeInfinity = timeWarp.m_dSlopeInfinity; - m_bSetup = timeWarp.m_bSetup; -} - -// ---------------------------------------------------------~CTimeWarp -CTimeWarp::~CTimeWarp() { - clear(); -} - -// ---------------------------------------------------------clear -void CTimeWarp::clear() { - m_dGridMinimum = 0; - m_dGridMaximum = 0; - m_dDecayConstant = 0; - m_dSlopeZero = 0; - m_dSlopeInfinity = 0; - m_bSetup = false; -} - -// ---------------------------------------------------------setup -void CTimeWarp::setup(double gridMin, double gridMax, double decayConst, - double slopeZero, double slopeInf) { - m_dGridMinimum = gridMin; - m_dGridMaximum = gridMax; - m_dDecayConstant = decayConst; - m_dSlopeZero = slopeZero; - m_dSlopeInfinity = slopeInf; - m_bSetup = true; -} - -// ---------------------------------------------------------grid -double CTimeWarp::calculateGridPoint(double value) { - // Calculate grid point value from given value - if (m_bSetup == false) { - glass3::util::Logger::log( - "error", "CTimeWarp::grid: Time Warp is not set up."); - } - - // Transform a value on a physical measurement scale to one on a pre- - // conceived internal scale (grid point), where data points exist at each - // natural-integral value, such that the data points are equidistant on the - // internal scale, and conceived such that they efficiently represent - // changes in the physical curve scale. - double a = 1.0 / m_dSlopeInfinity; - double b = 1.0 / m_dSlopeZero - 1.0 / m_dSlopeInfinity; - double c = b * exp(-m_dDecayConstant * m_dGridMinimum) / m_dDecayConstant - - a * m_dGridMinimum; - - // calculate grid point value - double grid = a * value - - b * exp(-m_dDecayConstant * value) / m_dDecayConstant + c; - - return (grid); -} - -// ---------------------------------------------------------value -double CTimeWarp::calculateValue(double gridPoint) { - // Calculate interpolated value at given grid point - if (m_bSetup == false) { - glass3::util::Logger::log( - "error", "CTimeWarp::value: Time Warp is not set up."); - } - - // init - double a = 1.0 / m_dSlopeInfinity; - double b = 1.0 / m_dSlopeZero - 1.0 / m_dSlopeInfinity; - double value = 0.5 * (m_dGridMinimum + m_dGridMaximum); - - // Calculate interpolated value - // NOTE: Why 100 here? - for (int i = 0; i < 100; i++) { - double f = calculateGridPoint(value) - gridPoint; - if (fabs(f) < 0.000001) { - break; - } - - double fp = a + b * exp(-m_dDecayConstant * value); - value -= f / fp; - } - return (value); -} -} // namespace traveltime diff --git a/glasscore/traveltime/src/Trav.cpp b/glasscore/traveltime/src/Trav.cpp deleted file mode 100644 index 523e4a9d..00000000 --- a/glasscore/traveltime/src/Trav.cpp +++ /dev/null @@ -1,268 +0,0 @@ -#include "Trav.h" -#include -#include -#include -#include -#include "Ray.h" -#include "Spline.h" - -namespace traveltime { - -// ---------------------------------------------------------CTrav -CTrav::CTrav() { - nTrv = 0; - dTrv0 = 0; - dTrv1 = 0; - dDeg0 = 0; - dDeg1 = 0; - dZ = 0; - sPhase = ""; - - dTrv = NULL; - dDeg = NULL; - tSpline = NULL; - dSpline = NULL; -} - -// ---------------------------------------------------------~CTrav -CTrav::~CTrav() { - if (tSpline) { - delete (tSpline); - } - if (dSpline) { - delete (dSpline); - } - if (dTrv) { - delete (dTrv); - } - if (dDeg) { - delete (dDeg); - } -} - -// ---------------------------------------------------------genBranch -bool CTrav::genBranch(CRay *ray, std::string phase, double depth) { - // nullcheck - if (ray == NULL) { - glass3::util::Logger::log("error", - "CTrav::genBranch: NULL CRay provided"); - return (false); - } - - if (phase == "") { - glass3::util::Logger::log("error", - "CTrav::genBranch: empty phase provided"); - return (false); - } - - // set phase and depth - dZ = depth; - sPhase = phase; - - // set initial values - double startDistance = 0.0; - double endDistance = 180.0; - nTrv = 0; - - // allocate distance and travel time arrays - dDeg = new double[MAX_POINTS]; - dTrv = new double[MAX_POINTS]; - - // set up ray - ray->setDepth(depth); - - // generate branch based on phase name - if (phase == "P") { - // P is special, combine Pup, P, and Pdiff - // generate Pup - ray->setPhase("Pup"); - ray->setupRayParam(); - branch(ray, startDistance, endDistance); - - // set start distance for next branch - if (nTrv) { - startDistance = dDeg[nTrv - 1] + 0.25; - } - - // generate P - ray->setPhase("P"); - ray->setupRayParam(); - branch(ray, startDistance, endDistance); - - // set start distance for next branch - if (nTrv) { - startDistance = dDeg[nTrv - 1] + 0.25; - } - - // generate PDiff - ray->setPhase("Pdiff"); - ray->setupRayParam(); - branch(ray, startDistance, endDistance); - } else if (phase == "S") { - // S is also special, combine Sup and S - // generate Sup - ray->setPhase("Sup"); - ray->setupRayParam(); - branch(ray, startDistance, endDistance); - - // set start distance for next branch - if (nTrv) { - startDistance = dDeg[nTrv - 1] + 0.25; - } - - // generate S - ray->setPhase("S"); - ray->setupRayParam(); - branch(ray, startDistance, endDistance); - } else { - // handle any other branch - // generate branch - ray->setPhase(phase.c_str()); - ray->setupRayParam(); - branch(ray, startDistance, endDistance); - } - - // if we have at least 3 points, generate - // time and distance splines - if (nTrv > 3) { - tSpline = new CSpline(nTrv, dDeg, dTrv); - dSpline = new CSpline(nTrv, dTrv, dDeg); - } - - // set distance validity range - dDeg0 = dDeg[0]; - dDeg1 = dDeg[nTrv - 1]; - - // set the travel time validity range - dTrv0 = dTrv[0]; - dTrv1 = dTrv[nTrv - 1]; - - // cleanup distance and travel time arrays - delete[] (dDeg); - delete[] (dTrv); - - // check splines - if ((tSpline != NULL) && (dSpline != NULL)) { - return (true); - } - - glass3::util::Logger::log( - "error", - "CTrav::genBranch: Problem generating branch, splines were not" - " created successfully"); - - // something went wrong - return (false); -} - -// ---------------------------------------------------------branch -void CTrav::branch(CRay *ray, double startDistance, double endDistance) { - // int state = 0; - double minDistance = 0.01; // NOTE: hardcoded - - // for each distance increment between the starting and ending distance - // limits. NOTE: Distance increment is hardcoded to 0.25 - for (double distance = startDistance; distance < endDistance; distance += - 0.25) { - // branches arrays bounds check - if ((nTrv + 1) > MAX_POINTS) { - continue; - } - - double traveltime = -1; - - // check to see if distance less than the minimum allowed - if (distance <= minDistance) { - // use minimum - traveltime = ray->travel( - glass3::util::GlassMath::k_DegreesToRadians * minDistance); - } else { - // use provided - traveltime = ray->travel( - glass3::util::GlassMath::k_DegreesToRadians * distance); - } - - // check for valid travel time - if (traveltime < 0.0) { - continue; - } - - // populate distance / travel time for this point - dDeg[nTrv] = distance; - dTrv[nTrv] = traveltime; - nTrv++; - - /* NOTE: This is the original code, however I don't see how this is - * effectively different than the above. It looks like an attempt - * to have a different starting point than subsequent points, however - * other than the state change, the cases are identical. - * Keep in case this was somehow important. - switch (state) { - case 0: - // check for valid travel time - if (traveltime < 0.0) { - continue; - } - state = 1; - - // populate distance / traveltime for this point - dDeg[nTrv] = distance; - dTrv[nTrv] = traveltime; - nTrv++; - - break; - case 1: - // check for valid travel time - if (traveltime < 0.0) { - continue; - } - - // populate distance / traveltime for this point - dDeg[nTrv] = distance; - dTrv[nTrv] = traveltime; - nTrv++; - - break; - } - */ - } -} - -// ---------------------------------------------------------T -double CTrav::T(double delta) { - // Calculate travel time from distance in degrees - if (tSpline == NULL) { - glass3::util::Logger::log("error", "CTrav::T: NULL tSpline"); - return (-1.0); - } - - // make sure delta is in the valid distance range - if (delta < (dDeg0 - 0.001)) { - return (-1.0); - } - if (delta > dDeg1) { - return (-1.0); - } - - return (tSpline->Y(delta)); -} - -// ---------------------------------------------------------D -double CTrav::D(double travelTime) { - // Calculate distance (degrees) from travel time - if (dSpline == NULL) { - glass3::util::Logger::log("error", "CTrav::D: NULL dSpline"); - return (-1.0); - } - - // make sure travelTime is in the valid time range - if (travelTime < (dTrv0 - 0.001)) { - return (-1.0); - } - if (travelTime > dTrv1) { - return (-1.0); - } - - return (dSpline->Y(travelTime)); -} -} // namespace traveltime diff --git a/glasscore/traveltime/src/TravelTime.cpp b/glasscore/traveltime/src/TravelTime.cpp index a5684515..4c19b967 100644 --- a/glasscore/traveltime/src/TravelTime.cpp +++ b/glasscore/traveltime/src/TravelTime.cpp @@ -5,7 +5,7 @@ #include #include #include -#include "TimeWarp.h" +#include namespace traveltime { @@ -15,43 +15,36 @@ const std::string CTravelTime::k_dPhaseInvalid = ""; // NOLINT // ---------------------------------------------------------CTravelTime CTravelTime::CTravelTime() { - m_pDistanceWarp = NULL; - m_pDepthWarp = NULL; m_pTravelTimeArray = NULL; - m_pDepthDistanceArray = NULL; - m_pPhaseArray = NULL; clear(); } // ---------------------------------------------------------CTravelTime CTravelTime::CTravelTime(const CTravelTime &travelTime) { - m_pDistanceWarp = NULL; - m_pDepthWarp = NULL; m_pTravelTimeArray = NULL; - m_pDepthDistanceArray = NULL; - m_pPhaseArray = NULL; clear(); - m_iNumDistanceWarp = travelTime.m_iNumDistanceWarp; - m_iNumDepthWarp = travelTime.m_iNumDepthWarp; + m_iNumDistances = travelTime.m_iNumDistances; + m_dMinimumDistance = travelTime.m_dMinimumDistance; + m_dMaximumDistance = travelTime.m_dMaximumDistance; + m_dDistanceStep = travelTime.m_dDistanceStep; + + m_iNumDepths = travelTime.m_iNumDepths; + m_dMinimumDepth = travelTime.m_dMinimumDepth; + m_dMaximumDepth = travelTime.m_dMaximumDepth; + m_dDepthStep = travelTime.m_dDepthStep; + m_dDepth = travelTime.m_dDepth; m_dDelta = travelTime.m_dDelta; m_sPhase = travelTime.m_sPhase; - // null check these? - m_pDistanceWarp = new CTimeWarp(*travelTime.m_pDistanceWarp); - m_pDepthWarp = new CTimeWarp(*travelTime.m_pDepthWarp); - - m_pTravelTimeArray = new double[m_iNumDistanceWarp * m_iNumDepthWarp]; - m_pDepthDistanceArray = new double[m_iNumDistanceWarp * m_iNumDepthWarp]; - m_pPhaseArray = new char[m_iNumDistanceWarp * m_iNumDepthWarp]; + // null check? + m_pTravelTimeArray = new double[m_iNumDistances * m_iNumDepths]; - for (int i = 0; i < (m_iNumDistanceWarp * m_iNumDepthWarp); i++) { + for (int i = 0; i < (m_iNumDistances * m_iNumDepths); i++) { m_pTravelTimeArray[i] = travelTime.m_pTravelTimeArray[i]; - m_pDepthDistanceArray[i] = travelTime.m_pDepthDistanceArray[i]; - m_pPhaseArray[i] = travelTime.m_pPhaseArray[i]; } } @@ -62,39 +55,92 @@ CTravelTime::~CTravelTime() { // ---------------------------------------------------------clear void CTravelTime::clear() { - m_iNumDistanceWarp = 0; - m_iNumDepthWarp = 0; + m_iNumDistances = 0; + m_dMinimumDistance = 0; + m_dMaximumDistance = 0; + m_dDistanceStep = 0; + + m_iNumDepths = 0; + m_dMinimumDepth = 0; + m_dMaximumDepth = 0; + m_dDepthStep = 0; + m_dDepth = 0; m_dDelta = 0; m_sPhase = CTravelTime::k_dPhaseInvalid; - if (m_pDistanceWarp) { - delete (m_pDistanceWarp); - } - m_pDistanceWarp = NULL; - - if (m_pDepthWarp) { - delete (m_pDepthWarp); - } - m_pDepthWarp = NULL; - if (m_pTravelTimeArray) { delete (m_pTravelTimeArray); } m_pTravelTimeArray = NULL; +} + +// -----------------------------------------------------writeToFile +void CTravelTime::writeToFile(std::string fileName, double depth) { + if (fileName == "") { + return; + } - if (m_pDepthDistanceArray) { - delete (m_pDepthDistanceArray); + // bounds check depth + if (depth < m_dMinimumDepth) { + return; + } else if (depth > m_dMaximumDepth) { + return; } - m_pDepthDistanceArray = NULL; - if (m_pPhaseArray) { - delete (m_pPhaseArray); + glass3::util::Logger::log("info", + "CTravelTime::writeToFile: writing: " + fileName); + + // set the depth + m_dDepth = depth; + + // compute distance step + double distanceStep = (m_dMaximumDistance - m_dMinimumDistance) + / static_cast(m_iNumDistances); + + // init to minimum distance + double aDistance = m_dMinimumDistance; + + glass3::util::Logger::log("info", + "CTravelTime::writeToFile: Depth: " + std::to_string(depth) + + " NumDist: " + std::to_string(m_iNumDistances) + + " MinDist: " + std::to_string(m_dMinimumDistance) + + " MaxDist: " + std::to_string(m_dMaximumDistance) + + " StartDist: " + std::to_string(aDistance)); + + int count = 0; + std::string fileString = "Distance,Time\n"; + for (int i = 0; i < m_iNumDistances; i++) { + // get the travel time for this distance + double aTime = T(aDistance); + + // make sure we got a valid time + if (aTime > 0) { + count++; + // add this distance/time to the file string + // as csv + fileString += std::to_string(aDistance) + "," + + std::to_string(aTime) + "\n"; + } + + // update to the next distance + aDistance += distanceStep; } - m_pPhaseArray = NULL; + + glass3::util::Logger::log("info", + "CTravelTime::writeToFile: Generated " + std::to_string(count) + + " points. "); + + // now, write the file to disk + std::ofstream outfile; + outfile.open(fileName, std::ios::out); + outfile << fileString; + + // done + outfile.close(); } -// ---------------------------------------------------------Setup +// ---------------------------------------------------------setup bool CTravelTime::setup(std::string phase, std::string file) { // nullcheck if (phase == CTravelTime::k_dPhaseInvalid) { @@ -121,11 +167,28 @@ bool CTravelTime::setup(std::string phase, std::string file) { return (false); } + // A travel time file is a binary file with a header and the travel time + // interpolation array + // The file consists of the following: + // + // - 4 ascii characters plus null termination - 5 bytes + // - 16 ascii characters plus null termination - 17 bytes + // - 64 ascii characters plus null termination - 65 bytes + // - 1 int value, 4 bytes + // - 1 double value, 8 bytes + // - 1 double value, 8 bytes + // - 1 int value, 4 bytes + // - 1 double value, 8 bytes + // - 1 double value, 8 bytes + // - + // (numberOfDistancePoints * numberOfDepthPoints) double values, + // (numberOfDistancePoints * numberOfDepthPoints) * 8 bytes + // + // header - // read file type - char fileType[8]; - fread(fileType, 1, 4, inFile); - fileType[4] = 0; + // read + char fileType[5]; + fread(fileType, sizeof(char), 5, inFile); // check file type if (strcmp(fileType, "TRAV") != 0) { @@ -137,78 +200,75 @@ bool CTravelTime::setup(std::string phase, std::string file) { return (false); } - // read endian - int16_t endianType; - fread(&endianType, 1, 2, inFile); - - // read branch - char branch[16]; - fread(branch, 1, 16, inFile); - - // read phase list - char phaseList[64]; - fread(phaseList, 1, 64, inFile); - - // read distance warp - double vlow = 0; - double vhigh = 0; - double alpha = 0; - double bzero = 0; - double binf = 0; - m_iNumDistanceWarp = 0; - fread(&m_iNumDistanceWarp, 1, 4, inFile); - fread(&vlow, 1, 8, inFile); - fread(&vhigh, 1, 8, inFile); - fread(&alpha, 1, 8, inFile); - fread(&bzero, 1, 8, inFile); - fread(&binf, 1, 8, inFile); - - char sLog[1024]; - snprintf(sLog, sizeof(sLog), - "CTravelTime::Setup: pDistanceWarp %d %.2f %.2f %.2f %.2f %.2f", - m_iNumDistanceWarp, vlow, vhigh, alpha, bzero, binf); - glass3::util::Logger::log(sLog); - - // create distance warp - m_pDistanceWarp = new CTimeWarp(vlow, vhigh, alpha, bzero, binf); - - // read depth warp - vlow = 0; - vhigh = 0; - alpha = 0; - bzero = 0; - binf = 0; - m_iNumDepthWarp = 0; - fread(&m_iNumDepthWarp, 1, 4, inFile); - fread(&vlow, 1, 8, inFile); - fread(&vhigh, 1, 8, inFile); - fread(&alpha, 1, 8, inFile); - fread(&bzero, 1, 8, inFile); - fread(&binf, 1, 8, inFile); - - snprintf(sLog, sizeof(sLog), - "CTravelTime::Setup: pDepthWarp %d %.2f %.2f %.2f %.2f %.2f", - m_iNumDepthWarp, vlow, vhigh, alpha, bzero, binf); - glass3::util::Logger::log(sLog); - - // create depth warp - m_pDepthWarp = new CTimeWarp(vlow, vhigh, alpha, bzero, binf); - - // create interpolation grids - m_pTravelTimeArray = new double[m_iNumDistanceWarp * m_iNumDepthWarp]; - m_pDepthDistanceArray = new double[m_iNumDistanceWarp * m_iNumDepthWarp]; - m_pPhaseArray = new char[m_iNumDistanceWarp * m_iNumDepthWarp]; - - // read interpolation grids - fread(m_pTravelTimeArray, 1, 8 * m_iNumDistanceWarp * m_iNumDepthWarp, - inFile); - fread(m_pDepthDistanceArray, 1, 8 * m_iNumDistanceWarp * m_iNumDepthWarp, + // read + char branch[17]; + fread(branch, sizeof(char), 17, inFile); + + // read + char phaseList[65]; + fread(phaseList, sizeof(char), 65, inFile); + + // read + m_iNumDistances = 0; + fread(&m_iNumDistances, sizeof(int), 1, inFile); + + // read + m_dMinimumDistance = 0; + fread(&m_dMinimumDistance, sizeof(double), 1, inFile); + + // read + m_dMaximumDistance = 0; + fread(&m_dMaximumDistance, sizeof(double), 1, inFile); + + // read + m_iNumDepths = 0; + fread(&m_iNumDepths, sizeof(int), 1, inFile); + + // read + m_dMinimumDepth = 0; + fread(&m_dMinimumDepth, sizeof(double), 1, inFile); + + // read + m_dMaximumDepth = 0; + fread(&m_dMaximumDepth, sizeof(double), 1, inFile); + + // check for valid data + if ((m_iNumDistances <= 0) || (m_iNumDepths <= 0)) { + glass3::util::Logger::log("error", + "CTravelTime::Setup: Invalid data read from input file"); + fclose(inFile); + return (false); + } + + // allocate travel time interpolation array + m_pTravelTimeArray = new double[m_iNumDistances * m_iNumDepths]; + + // read + fread(m_pTravelTimeArray, 1, sizeof(double) * m_iNumDistances * m_iNumDepths, inFile); - fread(m_pPhaseArray, 1, m_iNumDistanceWarp * m_iNumDepthWarp, inFile); // done with file fclose(inFile); + // compute steps + m_dDistanceStep = (m_dMaximumDistance - m_dMinimumDistance) + / static_cast(m_iNumDistances); + m_dDepthStep = (m_dMaximumDepth - m_dMinimumDepth) / + static_cast(m_iNumDepths); + + glass3::util::Logger::log( + "debug", + "CTravelTime::Setup: Read: Branch Name |" + std::string(branch) + + "| Phase List |" + std::string(phaseList) + + "| Num Dist: " + std::to_string(m_iNumDistances) + + ", Min Dist: " + std::to_string(m_dMinimumDistance) + + ", Max Dist: " + std::to_string(m_dMaximumDistance) + + ", Dist Step: " + std::to_string(m_dDistanceStep) + + ", Num Depth: " + std::to_string(m_iNumDepths) + + ", Min Depth: " + std::to_string(m_dMinimumDepth) + + ", Max Depth: " + std::to_string(m_dMaximumDepth) + + ", Depth Step: " + std::to_string(m_dDepthStep)); + return (true); } @@ -237,80 +297,177 @@ double CTravelTime::T(glass3::util::Geo *geo) { } // ---------------------------------------------------------T - double CTravelTime::T(double delta) { - // Calculate travel time given delta in degrees - double depth = m_pDepthWarp->calculateGridPoint(m_dDepth); - double distance = m_pDistanceWarp->calculateGridPoint(delta); - - // compute travel time using bilinear interpolation - double travelTime = bilinear(distance, depth); m_dDelta = delta; - return (travelTime); -} - -// ---------------------------------------------------------T -double CTravelTime::T(int deltaIndex, int depthIndex) { // bounds checks - if ((deltaIndex < 0) || (deltaIndex >= m_iNumDistanceWarp)) { + if((m_dDelta < m_dMinimumDistance) || (m_dDelta > m_dMaximumDistance)) { + return (k_dTravelTimeInvalid); + } + if((m_dDepth < m_dMinimumDepth) || (m_dDepth > m_dMaximumDepth)) { + return (k_dTravelTimeInvalid); + } + + double inDistance = m_dDelta; + double inDepth = m_dDepth; + + // calculate distance interpolation indexes and values + int distanceIndex1 = getIndexFromDistance(inDistance); + double distance1 = getDistanceFromIndex(distanceIndex1); + int distanceIndex2 = distanceIndex1 + 1; + double distance2 = getDistanceFromIndex(distanceIndex2); + + // calculate depth interpolation indexes and values + int depthIndex1 = getIndexFromDepth(inDepth); + double depth1 = getDepthFromIndex(depthIndex1); + int depthIndex2 = depthIndex1 + 1; + double depth2 = getDepthFromIndex(depthIndex2); + + // lookup travel time interpolation values from using the indexes + double travelTime11 = T(distanceIndex1, depthIndex1); + double travelTime12 = T(distanceIndex1, depthIndex2); + double travelTime21 = T(distanceIndex2, depthIndex1); + double travelTime22 = T(distanceIndex2, depthIndex2); + + // check travel time interpolation values + if ((travelTime11 < 0) || (travelTime12 < 0) + || (travelTime21 < 0) || (travelTime22 < 0)) { + // no traveltime return (k_dTravelTimeInvalid); } - if ((depthIndex < 0) || (depthIndex >= m_iNumDepthWarp)) { + + // get traveltime via bilinear interpolation using the values and + // input distance/depth + double outTravelTime = bilinearInterpolation( + travelTime11, travelTime12, travelTime21, travelTime22, + distance1, depth1, distance2, depth2, + inDistance, inDepth); + + // check final travel time + if (outTravelTime < 0) { + // no traveltime return (k_dTravelTimeInvalid); } - // get traveltime from travel time array - double travelTime = m_pTravelTimeArray[depthIndex * m_iNumDistanceWarp - + deltaIndex]; + return (outTravelTime); +} - return (travelTime); +// ------------------------------------------------------getIndexFromDistance +int CTravelTime::getIndexFromDistance(double distance) { + if (m_dDistanceStep < 0) { + return (0); + } + + // we need to convert from actual distance in degrees to an index point within + // the distance range specified for this branch's traveltime interpolation + // array so that the travel time can be computed using bilinear interpolation + // of the travel time array using distance and distance index points. + + // we divide the integer equivelent of the actual value (using floor()) + // minus the start of the range by the actual step size + int distanceIndex = static_cast(floor(((distance - m_dMinimumDistance) + / m_dDistanceStep))); + + // bounds checks + if (distanceIndex < 0) { + return(0); + } else if (distanceIndex > m_iNumDistances) { + return(m_iNumDistances - 1); + } else { + return (distanceIndex); + } } -// ---------------------------------------------------------Bilinear -double CTravelTime::bilinear(double distance, double depth) { - double interpolationGrid[2][2]; - double travelTime; - int startingDelta = static_cast(distance); - int startingDepth = static_cast(depth); - bool error = false; - - // generate interpolation grid - for (int i = 0; i < 2; i++) { - // calculate distance index - int deltaIndex = startingDelta + i; - - for (int j = 0; j < 2; j++) { - // calculate depth index - int depthIndex = startingDepth + j; - - // get current travel time from travel time array - double time = T(deltaIndex, depthIndex); - - // check current travel time - if (time < 0.0) { - error = true; - } - - // store travel time in interpolation grid - interpolationGrid[i][j] = time; - } +// ------------------------------------------------------getDistanceFromIndex +double CTravelTime::getDistanceFromIndex(int index) { + if (m_dDistanceStep < 0) { + return (0); + } + if (index < 0) { + return (0); + } + + double distance = (index * m_dDistanceStep) + m_dMinimumDistance; - double s = distance - floor(distance); - double t = depth - floor(depth); + return distance; +} - // compute overall travel time by interpolating grid - travelTime = interpolationGrid[0][0] * (1.0f - s) * (1.0f - t) - + interpolationGrid[0][1] * (1.0f - s) * t - + interpolationGrid[1][0] * s * (1.0f - t) - + interpolationGrid[1][1] * s * t; +// ------------------------------------------------------getIndexFromDepth +int CTravelTime::getIndexFromDepth(double depth) { + if (m_dDepthStep < 0) { + return (0); } - // check if we had errors - if (error) { - // no traveltime + // we need to convert from actual depth in kilometers to an index point within + // the depth range specified for this branch's traveltime interpolation array + // so that the travel time can be computed using bilinear interpolation of the + // travel time array using distance and depth index points. + + // we divide the integer equivelent of the actual value (using floor()) + // minus the start of the range by the actual step size + int depthIndex = static_cast(floor(((depth - m_dMinimumDepth) + / m_dDepthStep))); + + // bounds checks + if (depthIndex < 0) { + return(0); + } else if (depthIndex > m_iNumDepths) { + return(m_iNumDepths - 1); + } else { + return (depthIndex); + } +} + +// ------------------------------------------------------getDepthFromIndex +double CTravelTime::getDepthFromIndex(int index) { + if (m_dDepthStep < 0) { + return (0); + } + if (index < 0) { + return (0); + } + + double depth = (index * m_dDepthStep) + m_dMinimumDepth; + + return(depth); +} + +// -------------------------------------------------------bilinearInterpolation +double CTravelTime::bilinearInterpolation(double q_x1y1, double q_x1y2, + double q_x2y1, double q_x2y2, double x1, double y1, double x2, double y2, + double x, double y) { + // check values to avoid div by 0 + if ((x1 == x2) || (y1 == y2)) { + return(-1.0); + } + + double x2x1 = x2 - x1; + double y2y1 = y2 - y1; + double x2x = x2 - x; + double y2y = y2 - y; + double yy1 = y - y1; + double xx1 = x - x1; + + return 1.0 / (x2x1 * y2y1) * ( + q_x1y1 * x2x * y2y + + q_x2y1 * xx1 * y2y + + q_x1y2 * x2x * yy1 + + q_x2y2 * xx1 * yy1); +} + +// ---------------------------------------------------------T +double CTravelTime::T(int deltaIndex, int depthIndex) { + // bounds checks + if ((deltaIndex < 0) || (deltaIndex >= m_iNumDistances)) { return (k_dTravelTimeInvalid); } + if ((depthIndex < 0) || (depthIndex >= m_iNumDepths)) { + return (k_dTravelTimeInvalid); + } + + // get traveltime from travel time array + double travelTime = m_pTravelTimeArray[depthIndex * m_iNumDistances + + deltaIndex]; return (travelTime); } diff --git a/glasscore/traveltime/tt-files/P.trv b/glasscore/traveltime/tt-files/P.trv index 636894ee..03d489bb 100644 Binary files a/glasscore/traveltime/tt-files/P.trv and b/glasscore/traveltime/tt-files/P.trv differ diff --git a/glasscore/traveltime/tt-files/PKPab.trv b/glasscore/traveltime/tt-files/PKPab.trv index 3a155fd9..96ec3540 100644 Binary files a/glasscore/traveltime/tt-files/PKPab.trv and b/glasscore/traveltime/tt-files/PKPab.trv differ diff --git a/glasscore/traveltime/tt-files/PKPbc.trv b/glasscore/traveltime/tt-files/PKPbc.trv index 7d800963..fe3b7a48 100644 Binary files a/glasscore/traveltime/tt-files/PKPbc.trv and b/glasscore/traveltime/tt-files/PKPbc.trv differ diff --git a/glasscore/traveltime/tt-files/PKPdf.trv b/glasscore/traveltime/tt-files/PKPdf.trv index 769ebad6..fb49aedd 100644 Binary files a/glasscore/traveltime/tt-files/PKPdf.trv and b/glasscore/traveltime/tt-files/PKPdf.trv differ diff --git a/glasscore/traveltime/tt-files/PP.trv b/glasscore/traveltime/tt-files/PP.trv index 132a0295..c3a79fb0 100644 Binary files a/glasscore/traveltime/tt-files/PP.trv and b/glasscore/traveltime/tt-files/PP.trv differ diff --git a/glasscore/traveltime/tt-files/PcP.trv b/glasscore/traveltime/tt-files/PcP.trv index ee4103d5..a8c32161 100644 Binary files a/glasscore/traveltime/tt-files/PcP.trv and b/glasscore/traveltime/tt-files/PcP.trv differ diff --git a/glasscore/traveltime/tt-files/S.trv b/glasscore/traveltime/tt-files/S.trv index 1abfec98..e0234ef9 100644 Binary files a/glasscore/traveltime/tt-files/S.trv and b/glasscore/traveltime/tt-files/S.trv differ diff --git a/glasscore/traveltime/tt-files/cus_P.trv b/glasscore/traveltime/tt-files/cus_P.trv new file mode 100644 index 00000000..ebe9640d Binary files /dev/null and b/glasscore/traveltime/tt-files/cus_P.trv differ diff --git a/glasscore/traveltime/tt-files/cus_S.trv b/glasscore/traveltime/tt-files/cus_S.trv new file mode 100644 index 00000000..6da4b737 Binary files /dev/null and b/glasscore/traveltime/tt-files/cus_S.trv differ diff --git a/neic-glass3.code-workspace b/neic-glass3.code-workspace index b3374cc1..131efa0d 100644 --- a/neic-glass3.code-workspace +++ b/neic-glass3.code-workspace @@ -77,7 +77,11 @@ "string_view": "cpp", "unordered_map": "cpp", "vector": "cpp", - "regex": "cpp" + "regex": "cpp", + "complex": "cpp", + "*.tcc": "cpp", + "cinttypes": "cpp", + "hashtable": "cpp" } } } \ No newline at end of file