diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..68c14d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,62 @@ +# Compiled object files +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Static libraries +*.lib +*.a + +# Compiled Dynamic libraries +*.dll +*.so +*.dylib + +# Executables +*.exe +*.out +*.app + +# Fortran module files +*.mod +*.smod + +# Debug files +*.dSYM/ +*.stackdump + +# Build directories +/build/ +/bin/ +/lib/ +/CMakeFiles/ +/cmake-build-*/ + +/EXAMPLES/*/OUTPUT_FILES/ + +# CMake generated files +CMakeCache.txt +CMakeFiles/ +Makefile +cmake_install.cmake +CTestTestfile.cmake +install_manifest.txt + +# IDE files +*.swp +*.swo +*.user +*.workspace +*.project +*.idea/ +.vscode/ + +# Logs +*.log + +# OS generated files +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index a1db332..eb751a3 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -1,13 +1,13 @@ { "configurations": [ { - "name": "LINUX", + "name": "macOS", "includePath": [ "${workspaceFolder}/**", "~/software/eigen-3.4.0", - "/opt/homebrew/Cellar/open-mpi/5.0.7/include", - "/Users/nqdu/software/miniconda3/include/python3.11", - "/Users/nqdu/software/miniconda3/lib/python3.11/site-packages/pybind11/include" + "/opt/homebrew/Cellar/open-mpi/5.0.8/include", + "/Users/nqdu/software/miniconda3/include/python3.12", + "/Users/nqdu/software/miniconda3/lib/python3.12/site-packages/pybind11/include" ], "compilerPath": "/usr/bin/g++", "cStandard": "gnu17", diff --git a/.vscode/launch.json b/.vscode/launch.json index 65950d0..d8606af 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,17 +1,20 @@ { "version": "0.2.0", "configurations": [ - { - "name": "Python + LLDB", - "type":"debugpy", - "request": "launch", - "program": "${workspaceFolder}/example/love1/step0_database.py", - "args": ["model.txt", - "1", "1", "1", "0"], + { + "name": "(lldb) Launch", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/bin/surfani", + "args": ["model.txt","0.01","0.5","100","0"], + "cwd": "${workspaceFolder}/example/orthorhombic", + "stopAtEntry": false, + // "program": "${workspaceFolder}/a.out", + // "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": false, + "MIMode": "lldb" + } - "cwd": "${workspaceFolder}/example/love1", - "stopOnEntry": false - } ] - } - \ No newline at end of file +} diff --git a/.vscode/launch1.json b/.vscode/launch1.json deleted file mode 100644 index fed5ae2..0000000 --- a/.vscode/launch1.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "name": "(lldb) Launch", - "type": "cppdbg", - "request": "launch", - "program": "${workspaceFolder}/bin/surfrayl", - "args": ["model.txt","0.01","1","1"], - "cwd": "${workspaceFolder}/example/rayleigh", - "stopAtEntry": false, - // "program": "${workspaceFolder}/a.out", - // "cwd": "${workspaceFolder}", - "environment": [], - "externalConsole": false, - "MIMode": "lldb" - } - - ] -} diff --git a/CMakeLists.txt b/CMakeLists.txt index 8948f6d..771680b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_Fortran_MODULE_DIRECTORY ${PROJECT_SOURCE_DIR}/build/obj) ################# cmake setup ################# -set(CMAKE_CXX_FLAGS "-g -Wall") +set(CMAKE_CXX_FLAGS "-g -Wall -DEIGEN_DONT_PARALLELIZE") set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native") @@ -53,9 +53,6 @@ endif() set(CMAKE_VERBOSE_MAKEFILE on) ################# find packages ################# -# path of *.cmake files -#set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/include/cmake) - # eigen include_directories(${EIGEN_INC}) @@ -65,6 +62,13 @@ find_package(LAPACK REQUIRED) find_package(LAPACKE REQUIRED) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEIGEN_USE_LAPACKE") +#find_package(OpenMP REQUIRED) +if (OPENMP_FOUND) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") + include_directories(${OpenMP_CXX_INCLUDE_DIRS}) +endif() + ################# include paths ################# include_directories(${PROJECT_SOURCE_DIR}/src) #include_directories(${PROJECT_SOURCE_DIR}/include) @@ -73,7 +77,7 @@ include_directories(${PROJECT_SOURCE_DIR}/src) add_subdirectory(${PROJECT_SOURCE_DIR}/src/shared) add_subdirectory(${PROJECT_SOURCE_DIR}/src/mesh) add_subdirectory(${PROJECT_SOURCE_DIR}/src/vti) -# add_subdirectory(${PROJECT_SOURCE_DIR}/src/tti) +add_subdirectory(${PROJECT_SOURCE_DIR}/src/aniso) # add_subdirectory(${PROJECT_SOURCE_DIR}/src/multiphysics) # check build libraries diff --git a/README.md b/README.md index d8d2b6e..41098d4 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # SpecSWD -**SpecSWD** is a software to compute surface wave dispersions and do sensitivity analysis for 1-D fully anisotropic, wealy anelastic media. It utilizes spectral element method and quadratic eigenvalue solver to handle multiphysics (elastic-acoustic coupling), strong anisotropy and discontinuities inside the study region. -**SpecSWD** also provides high-level sensitivity analysis framework (adjoint methods) for any user-defined quantities. +**SpecSWD** is a software designed to compute surface wave dispersions and perform sensitivity analysis for 1-D fully anisotropic, weakly anelastic media. It utilizes the spectral element method and a quadratic eigenvalue solver to effectively handle multiphysics (elastic-acoustic coupling), strong anisotropy, and discontinuities within the study region. -For installation, user manual, please refer to [docs](https://nqdu.github.io/SpecSWD/). +SpecSWD also offers a high-level sensitivity analysis framework (using adjoint methods) for any user-defined quantities. + +For installation instructions and the user manual, please refer to the [documentation](https://nqdu.github.io/SpecSWD/). For theoretical background and implementation details, please refer to this [EarthArXiv link](https://doi.org/10.31223/X57J37). diff --git a/bin/surflove b/bin/surflove index 8fa2e7d..7109446 100755 Binary files a/bin/surflove and b/bin/surflove differ diff --git a/bin/surfrayl b/bin/surfrayl index 04d2615..425e270 100755 Binary files a/bin/surfrayl and b/bin/surfrayl differ diff --git a/code_gen/aniso_code_gen.ipynb b/code_gen/aniso_code_gen.ipynb index 40f1614..795fea0 100644 --- a/code_gen/aniso_code_gen.ipynb +++ b/code_gen/aniso_code_gen.ipynb @@ -60,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -130,7 +130,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -142,7 +142,7 @@ "-2*U*c11*k*cos(phi)**2*conjugate(U) - 2*U*c12*k*sin(phi)*cos(phi)*conjugate(W) + I*U*c13*cos(phi)*conjugate(Vdot) - 2*U*c14*k*sin(phi)*cos(phi)*conjugate(V) + I*U*c14*cos(phi)*conjugate(Wdot) - 2*U*c15*k*cos(phi)**2*conjugate(V) + I*U*c15*cos(phi)*conjugate(Udot) - 4*U*c16*k*sin(phi)*cos(phi)*conjugate(U) - 2*U*c16*k*cos(phi)**2*conjugate(W) - 2*U*c26*k*sin(phi)**2*conjugate(W) + I*U*c36*sin(phi)*conjugate(Vdot) - 2*U*c46*k*sin(phi)**2*conjugate(V) + I*U*c46*sin(phi)*conjugate(Wdot) - 2*U*c56*k*sin(phi)*cos(phi)*conjugate(V) + I*U*c56*sin(phi)*conjugate(Udot) - 2*U*c66*k*sin(phi)**2*conjugate(U) - 2*U*c66*k*sin(phi)*cos(phi)*conjugate(W) - I*Udot*c15*cos(phi)*conjugate(U) - I*Udot*c25*sin(phi)*conjugate(W) - I*Udot*c45*sin(phi)*conjugate(V) - I*Udot*c55*cos(phi)*conjugate(V) - I*Udot*c56*sin(phi)*conjugate(U) - I*Udot*c56*cos(phi)*conjugate(W) - 2*V*c14*k*sin(phi)*cos(phi)*conjugate(U) - 2*V*c15*k*cos(phi)**2*conjugate(U) - 2*V*c24*k*sin(phi)**2*conjugate(W) - 2*V*c25*k*sin(phi)*cos(phi)*conjugate(W) + I*V*c34*sin(phi)*conjugate(Vdot) + I*V*c35*cos(phi)*conjugate(Vdot) - 2*V*c44*k*sin(phi)**2*conjugate(V) + I*V*c44*sin(phi)*conjugate(Wdot) - 4*V*c45*k*sin(phi)*cos(phi)*conjugate(V) + I*V*c45*sin(phi)*conjugate(Udot) + I*V*c45*cos(phi)*conjugate(Wdot) - 2*V*c46*k*sin(phi)**2*conjugate(U) - 2*V*c46*k*sin(phi)*cos(phi)*conjugate(W) - 2*V*c55*k*cos(phi)**2*conjugate(V) + I*V*c55*cos(phi)*conjugate(Udot) - 2*V*c56*k*sin(phi)*cos(phi)*conjugate(U) - 2*V*c56*k*cos(phi)**2*conjugate(W) - I*Vdot*c13*cos(phi)*conjugate(U) - I*Vdot*c23*sin(phi)*conjugate(W) - I*Vdot*c34*sin(phi)*conjugate(V) - I*Vdot*c35*cos(phi)*conjugate(V) - I*Vdot*c36*sin(phi)*conjugate(U) - I*Vdot*c36*cos(phi)*conjugate(W) - 2*W*c12*k*sin(phi)*cos(phi)*conjugate(U) - 2*W*c16*k*cos(phi)**2*conjugate(U) - 2*W*c22*k*sin(phi)**2*conjugate(W) + I*W*c23*sin(phi)*conjugate(Vdot) - 2*W*c24*k*sin(phi)**2*conjugate(V) + I*W*c24*sin(phi)*conjugate(Wdot) - 2*W*c25*k*sin(phi)*cos(phi)*conjugate(V) + I*W*c25*sin(phi)*conjugate(Udot) - 2*W*c26*k*sin(phi)**2*conjugate(U) - 4*W*c26*k*sin(phi)*cos(phi)*conjugate(W) + I*W*c36*cos(phi)*conjugate(Vdot) - 2*W*c46*k*sin(phi)*cos(phi)*conjugate(V) + I*W*c46*cos(phi)*conjugate(Wdot) - 2*W*c56*k*cos(phi)**2*conjugate(V) + I*W*c56*cos(phi)*conjugate(Udot) - 2*W*c66*k*sin(phi)*cos(phi)*conjugate(U) - 2*W*c66*k*cos(phi)**2*conjugate(W) - I*Wdot*c14*cos(phi)*conjugate(U) - I*Wdot*c24*sin(phi)*conjugate(W) - I*Wdot*c44*sin(phi)*conjugate(V) - I*Wdot*c45*cos(phi)*conjugate(V) - I*Wdot*c46*sin(phi)*conjugate(U) - I*Wdot*c46*cos(phi)*conjugate(W)" ] }, - "execution_count": 5, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -153,7 +153,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -230,7 +230,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -443,6 +443,13 @@ "fileid.close()" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "code", "execution_count": null, @@ -453,7 +460,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "base", "language": "python", "name": "python3" }, @@ -467,7 +474,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.2" + "version": "3.11.8" } }, "nbformat": 4, diff --git a/code_gen/tti_code_gen.ipynb b/code_gen/tti_code_gen.ipynb index a9de77b..6222798 100644 --- a/code_gen/tti_code_gen.ipynb +++ b/code_gen/tti_code_gen.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -59,9 +59,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 lambda\n", + "1 lambda\n", + "2 2*lambda\n", + "3 0\n", + "4 0\n", + "5 0\n", + "6 lambda\n", + "7 2*lambda\n", + "8 0\n", + "9 0\n", + "10 0\n", + "11 lambda\n", + "12 0\n", + "13 0\n", + "14 0\n", + "15 0\n", + "16 0\n", + "17 0\n", + "18 0\n", + "19 0\n", + "20 0\n" + ] + } + ], "source": [ "lam = sp.symbols(\"lambda\")\n", "c = sp.Array.zeros(3,3,3,3)\n", @@ -90,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -136,7 +164,7 @@ "# # tti tensor\n", "axis_direc = sp.Array([sp.cos(dphi) * sp.sin(theta0),sp.sin(dphi) * sp.sin(theta0),sp.cos(theta0)])\n", "#axis_direc = sp.Array([0,0,1])\n", - "#axis_direc = sp.Array([0,0,1])\n", + "axis_direc = sp.Array([0,0,1])\n", "A,N,C,L,F = sp.symbols('A,N,C,L,F',real=True)\n", "c = sp.Array.zeros(3,3,3,3)\n", "c = c.as_mutable()\n", @@ -167,10 +195,10 @@ { "data": { "text/latex": [ - "$\\displaystyle \\left[\\begin{matrix}\\dot{U} & \\dot{W} & i \\dot{V}\\end{matrix}\\right]$" + "$\\displaystyle \\left[\\begin{matrix}\\dot{U} & \\dot{W} & \\dot{V}\\end{matrix}\\right]$" ], "text/plain": [ - "[Udot, Wdot, I*Vdot]" + "[Udot, Wdot, Vdot]" ] }, "execution_count": 7, @@ -184,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -196,7 +224,7 @@ "\n", "# axis location\n", "phi0 = sp.symbols(\"phi0\",real=True)\n", - "theta0 = 0 * sp.symbols(\"theta0\",real=True)\n", + "theta0 = sp.symbols(\"theta0\",real=True)\n", "k_hat = sp.Array([1,0,0])\n", "k = k_hat * k0\n", "t_hat = sp.Array([0,1,0])\n", @@ -218,9 +246,9 @@ "dphi = sp.symbols(\"dphi\",real=True)\n", "\n", "# # tti tensor\n", - "axis_direc = sp.Array([sp.cos(dphi) * sp.sin(theta0),sp.sin(dphi) * sp.sin(theta0),sp.cos(theta0)])\n", - "#axis_direc = sp.Array([0,0,1])\n", + "#axis_direc = sp.Array([sp.cos(dphi) * sp.sin(theta0),sp.sin(dphi) * sp.sin(theta0),sp.cos(theta0)])\n", "#axis_direc = sp.Array([0,0,1])\n", + "axis_direc = sp.Array([0,0,1])\n", "A,N,C,L,F = sp.symbols('A,N,C,L,F',real=True)\n", "c = sp.Array.zeros(3,3,3,3)\n", "c = c.as_mutable()\n", @@ -257,36 +285,92 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle - A U k^{2} \\overline{U} - C \\dot{V} \\overline{\\dot{V}} + F U k \\overline{\\dot{V}} + F \\dot{V} k \\overline{U} - L \\dot{U} k \\overline{V} - L \\dot{U} \\overline{\\dot{U}} - L V k^{2} \\overline{V} - L V k \\overline{\\dot{U}} - L \\dot{W} \\overline{\\dot{W}} - N W k^{2} \\overline{W} + U \\omega^{2} \\rho \\overline{U} + V \\omega^{2} \\rho \\overline{V} + W \\omega^{2} \\rho \\overline{W}$" + ], + "text/plain": [ + "-A*U*k**2*conjugate(U) - C*Vdot*conjugate(Vdot) + F*U*k*conjugate(Vdot) + F*Vdot*k*conjugate(U) - L*Udot*k*conjugate(V) - L*Udot*conjugate(Udot) - L*V*k**2*conjugate(V) - L*V*k*conjugate(Udot) - L*Wdot*conjugate(Wdot) - N*W*k**2*conjugate(W) + U*omega**2*rho*conjugate(U) + V*omega**2*rho*conjugate(V) + W*omega**2*rho*conjugate(W)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "Lag" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{matrix}L \\dot{U} + L V k & L \\dot{W} & i C \\dot{V} - i F U k\\end{matrix}\\right]$" + ], + "text/plain": [ + "[L*Udot + L*V*k, L*Wdot, I*C*Vdot - I*F*U*k]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "T" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle A U k \\overline{U} - \\frac{F U \\overline{\\dot{V}}}{2} - \\frac{F \\dot{V} \\overline{U}}{2} + \\frac{L \\dot{U} \\overline{V}}{2} + L V k \\overline{V} + \\frac{L V \\overline{\\dot{U}}}{2} + N W k \\overline{W}$" + ], + "text/plain": [ + "A*U*k*conjugate(U) - F*U*conjugate(Vdot)/2 - F*Vdot*conjugate(U)/2 + L*Udot*conjugate(V)/2 + L*V*k*conjugate(V) + L*V*conjugate(Udot)/2 + N*W*k*conjugate(W)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "sp.diff(-Lag/2,k0)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\frac{\\chi k \\omega^{2} \\overline{\\chi}}{\\rho}$" + ], + "text/plain": [ + "chi*k*omega**2*conjugate(chi)/rho" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "sp.diff(Lag_ac/2,k0)" ] @@ -300,7 +384,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -377,9 +461,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "k^0, Udot psidot = L\n", + "k^1, V psidot = L\n", + "k^1, Vdot psi = -F\n", + "k^2, U psi = A\n", + "k^0, Wdot psidot = L\n", + "k^2, W psi = N\n", + "k^0, Vdot psidot = I*C\n", + "k^1, U psidot = -I*F\n", + "k^1, Udot psi = I*L\n", + "k^2, V psi = I*L\n", + "A\n", + "C\n", + "F\n", + "L\n", + "N\n", + "theta0\n", + "dphi\n", + "k\n", + "[k, 0, 0] (3, 3, 3, 3) 3\n" + ] + } + ], "source": [ "funclist = {\n", " \"re\":'real',\n", @@ -501,6 +611,7 @@ "\n", "# compute kernels d{Lag}/d{Param}\n", "for param in [A,C,F,L,N,theta0,dphi,k0]:\n", + " print(param)\n", " expr = sp.diff(Lag,param)\n", " param_out = param \n", " if param == k0:\n", diff --git a/example/ac/gen_model.py b/example/ac/gen_model.py deleted file mode 100644 index bb566ac..0000000 --- a/example/ac/gen_model.py +++ /dev/null @@ -1,32 +0,0 @@ -import numpy as np -from scipy.interpolate import interp1d - -z = np.linspace(0,70,10) -nz = len(z) -vs = 2.5 + 0.02 * z - -# vs[10:20] = 1.4 -# vs[40:50] = 2.5 - -vp = 1.732 * vs -rho = 0.3601 * vp + 0.541 -thk = np.zeros_like(z) -thk[0:nz-1] = np.diff(z) - -# fluid -vs[0] = 0. -vp[0] = 1.5 -rho[0] = 1.0 - -f = open("model.txt","w") -f.write("%d\n"%(nz)) -for i in range(nz): - f.write("%f %f %f %f %f %f 1.\n"%(thk[i],rho[i],vp[i],vp[i],vs[i],vs[i])) -f.close() - -z = np.zeros_like(thk) -z[1:] = np.cumsum(thk)[:nz-1] - -intp = interp1d(z,vs) -print(intp(45.755604)) -#print(z) \ No newline at end of file diff --git a/example/ac/group.jpg b/example/ac/group.jpg deleted file mode 100644 index ec9698f..0000000 Binary files a/example/ac/group.jpg and /dev/null differ diff --git a/example/ac/model.txt b/example/ac/model.txt deleted file mode 100644 index 7e236a0..0000000 --- a/example/ac/model.txt +++ /dev/null @@ -1,11 +0,0 @@ -10 -5.0 1.000000 1.500000 1.500000 0.000000 0.000000 1. -12.5 2.197252 4.599422 4.599422 2.655556 2.655556 1. -5.7 2.294271 4.868844 4.868844 2.811111 2.811111 1. -7.777778 2.391290 5.138267 5.138267 2.966667 2.966667 1. -7.777778 2.488309 5.407689 5.407689 3.122222 3.122222 1. -7.777778 2.585328 5.677111 5.677111 3.277778 3.277778 1. -7.777778 2.682347 5.946533 5.946533 3.433333 3.433333 1. -7.777778 2.779366 6.215956 6.215956 3.588889 3.588889 1. -30. 2.876385 6.485378 6.485378 3.744444 3.744444 1. -0.000000 2.973403 6.754800 6.754800 3.900000 3.900000 1. diff --git a/example/ac/out/database.bin b/example/ac/out/database.bin deleted file mode 100644 index d28baed..0000000 Binary files a/example/ac/out/database.bin and /dev/null differ diff --git a/example/ac/out/swd.cps.txt b/example/ac/out/swd.cps.txt deleted file mode 100644 index ac2642d..0000000 --- a/example/ac/out/swd.cps.txt +++ /dev/null @@ -1,601 +0,0 @@ -100.000000 93.915600 88.201400 82.834800 77.794800 73.061500 68.616100 64.441200 60.520300 56.838000 53.379800 50.131900 47.081700 44.217100 41.526700 39.000000 36.627100 34.398600 32.305600 30.340000 28.494000 26.760300 25.132100 23.603000 22.166900 20.818100 19.551500 18.361900 17.244700 16.195400 15.210000 14.284600 13.415500 12.599200 11.832600 11.112700 10.436500 9.801530 9.205170 8.645090 8.119080 7.625090 7.161140 6.725430 6.316230 5.931920 5.571000 5.232040 4.913700 4.614730 4.333950 4.070250 3.822600 3.590020 3.371590 3.166450 2.973790 2.792850 2.622920 2.463330 2.313450 2.172690 2.040500 1.916340 1.799750 1.690240 1.587400 1.490820 1.400110 1.314920 1.234920 1.159780 1.089210 1.022940 0.960701 0.902248 0.847351 0.795795 0.747375 0.701902 0.659195 0.619087 0.581419 0.546043 0.512820 0.481618 0.452314 0.424793 0.398947 0.374674 0.351877 0.330467 0.310360 0.291477 0.273742 0.257086 0.241444 0.226754 0.212957 0.200000 -0 3.40321 3.24658 0 -1 3.39237 3.22002 0 -2 3.38037 3.19024 0 -3 3.36701 3.15636 0 -4 3.35208 3.11804 0 -5 3.33535 3.07505 0 -6 3.31655 3.02695 0 -7 3.29542 2.97353 0 -8 3.27167 2.91487 0 -9 3.24505 2.85101 0 -10 3.2153 2.78253 0 -11 3.18224 2.71067 0 -12 3.14578 2.63627 0 -13 3.10594 2.56097 0 -14 3.06287 2.48645 0 -15 3.01692 2.41439 0 -16 2.96854 2.34656 0 -17 2.91833 2.28384 0 -18 2.86696 2.22662 0 -19 2.81503 2.17495 0 -20 2.7631 2.12766 0 -21 2.71152 2.08332 0 -22 2.66047 2.04021 0 -23 2.60992 1.99631 0 -24 2.55967 1.95013 0 -25 2.50934 1.90001 0 -26 2.45845 1.84458 0 -27 2.40642 1.78311 0 -28 2.35262 1.71501 0 -29 2.29641 1.64084 0 -30 2.23731 1.5626 0 -31 2.17517 1.48422 0 -32 2.11047 1.41124 0 -33 2.04446 1.34995 0 -34 1.97914 1.30473 0 -35 1.91671 1.27663 0 -36 1.85898 1.26392 0 -37 1.80705 1.2629 0 -38 1.76124 1.26993 0 -39 1.72137 1.28181 0 -40 1.68694 1.29641 0 -41 1.65735 1.31206 0 -42 1.63199 1.32796 0 -43 1.61026 1.34334 0 -44 1.59165 1.35786 0 -45 1.57572 1.37143 0 -46 1.56206 1.38388 0 -47 1.55036 1.39522 0 -48 1.54034 1.40558 0 -49 1.53174 1.41485 0 -50 1.52438 1.42316 0 -51 1.51808 1.43077 0 -52 1.5127 1.43733 0 -53 1.5081 1.44335 0 -54 1.50417 1.44843 0 -55 1.50083 1.45337 0 -56 1.49799 1.45757 0 -57 1.49559 1.46122 0 -58 1.49356 1.46449 0 -59 1.49185 1.46737 0 -60 1.49042 1.4698 0 -61 1.48923 1.47202 0 -62 1.48824 1.47396 0 -63 1.48742 1.47556 0 -64 1.48675 1.47709 0 -65 1.48621 1.47836 0 -66 1.48577 1.47944 0 -67 1.48542 1.48035 0 -68 1.48514 1.48125 0 -69 1.48492 1.48167 0 -70 1.48476 1.48231 0 -71 1.48463 1.48275 0 -72 1.48453 1.48312 0 -73 1.48446 1.48338 0 -74 1.48441 1.48364 0 -75 1.48438 1.4838 0 -76 1.48435 1.48393 0 -77 1.48433 1.48402 0 -78 1.48432 1.48407 0 -79 1.48432 1.4841 0 -80 1.48431 1.48414 0 -81 1.48431 1.48416 0 -82 1.48431 1.48417 0 -83 1.48431 1.48417 0 -84 1.48431 1.48419 0 -85 1.48431 1.48418 0 -86 1.48431 1.48418 0 -87 1.48431 1.48419 0 -88 1.48431 1.48419 0 -89 1.48431 1.48419 0 -90 1.48431 1.48419 0 -91 1.48431 1.48418 0 -92 1.48431 1.48419 0 -93 1.48431 1.48419 0 -94 1.48431 1.48419 0 -95 1.48431 1.4842 0 -96 1.48431 1.48419 0 -97 1.48431 1.48418 0 -98 1.48431 1.48419 0 -99 1.48431 1.48421 0 -0 0 0 1 -1 0 0 1 -2 0 0 1 -3 0 0 1 -4 0 0 1 -5 0 0 1 -6 0 0 1 -7 0 0 1 -8 0 0 1 -9 0 0 1 -10 0 0 1 -11 0 0 1 -12 0 0 1 -13 0 0 1 -14 0 0 1 -15 0 0 1 -16 0 0 1 -17 0 0 1 -18 0 0 1 -19 0 0 1 -20 3.89286 3.68594 1 -21 3.87412 3.53718 1 -22 3.84752 3.42697 1 -23 3.81541 3.33709 1 -24 3.77921 3.2586 1 -25 3.73973 3.18378 1 -26 3.69724 3.10775 1 -27 3.65157 3.02559 1 -28 3.60214 2.93265 1 -29 3.54807 2.82748 1 -30 3.48823 2.70727 1 -31 3.42127 2.57088 1 -32 3.34555 2.4164 1 -33 3.25916 2.24672 1 -34 3.16147 2.08465 1 -35 3.05664 1.97253 1 -36 2.95414 1.93263 1 -37 2.86257 1.94603 1 -38 2.78507 1.9845 1 -39 2.72086 2.02862 1 -40 2.6677 2.06904 1 -41 2.62324 2.10215 1 -42 2.58545 2.12648 1 -43 2.55265 2.14109 1 -44 2.5234 2.14562 1 -45 2.49646 2.1388 1 -46 2.47058 2.11861 1 -47 2.44445 2.08123 1 -48 2.4164 2.0207 1 -49 2.38413 1.92811 1 -50 2.34428 1.79428 1 -51 2.29224 1.61926 1 -52 2.2238 1.4339 1 -53 2.14052 1.29444 1 -54 2.05224 1.22598 1 -55 1.96955 1.2092 1 -56 1.89747 1.21858 1 -57 1.8366 1.23893 1 -58 1.78572 1.26288 1 -59 1.74325 1.28705 1 -60 1.70769 1.30999 1 -61 1.67778 1.3311 1 -62 1.65253 1.35032 1 -63 1.63111 1.36757 1 -64 1.61287 1.38299 1 -65 1.59729 1.39672 1 -66 1.58395 1.40891 1 -67 1.57248 1.41972 1 -68 1.56262 1.42939 1 -69 1.55412 1.43789 1 -70 1.54679 1.44516 1 -71 1.54045 1.45209 1 -72 1.53498 1.45781 1 -73 1.53024 1.46327 1 -74 1.52615 1.46775 1 -75 1.52261 1.47195 1 -76 1.51955 1.47545 1 -77 1.5169 1.47864 1 -78 1.51461 1.48158 1 -79 1.51264 1.48398 1 -80 1.51093 1.48612 1 -81 1.50946 1.48784 1 -82 1.50819 1.48969 1 -83 1.50709 1.49101 1 -84 1.50614 1.49235 1 -85 1.50532 1.49347 1 -86 1.50462 1.49425 1 -87 1.50401 1.49496 1 -88 1.50348 1.49575 1 -89 1.50302 1.49621 1 -90 1.50263 1.49672 1 -91 1.50229 1.49712 1 -92 1.50199 1.49763 1 -93 1.50174 1.49795 1 -94 1.50151 1.49832 1 -95 1.50132 1.49861 1 -96 1.50115 1.49874 1 -97 1.50896 3.14642 1 -98 1.50785 1.49132 1 -99 1.50688 1.49244 1 -0 0 0 2 -1 0 0 2 -2 0 0 2 -3 0 0 2 -4 0 0 2 -5 0 0 2 -6 0 0 2 -7 0 0 2 -8 0 0 2 -9 0 0 2 -10 0 0 2 -11 0 0 2 -12 0 0 2 -13 0 0 2 -14 0 0 2 -15 0 0 2 -16 0 0 2 -17 0 0 2 -18 0 0 2 -19 0 0 2 -20 0 0 2 -21 0 0 2 -22 0 0 2 -23 0 0 2 -24 0 0 2 -25 0 0 2 -26 0 0 2 -27 0 0 2 -28 0 0 2 -29 0 0 2 -30 0 3.74438 2 -31 3.87319 3.33979 2 -32 3.82345 3.05809 2 -33 3.75322 2.7963 2 -34 3.66239 2.55336 2 -35 3.55888 2.43185 2 -36 3.46108 2.44394 2 -37 3.37886 2.50157 2 -38 3.31115 2.55363 2 -39 3.25432 2.58916 2 -40 3.20536 2.61175 2 -41 3.16224 2.62407 2 -42 3.12356 2.62988 2 -43 3.08835 2.63058 2 -44 3.05587 2.62715 2 -45 3.02556 2.6202 2 -46 2.99691 2.60898 2 -47 2.96945 2.59318 2 -48 2.94268 2.57196 2 -49 2.91593 2.53994 2 -50 2.88792 2.48478 2 -51 2.85543 2.36575 2 -52 2.80798 2.0755 2 -53 2.72781 1.77504 2 -54 2.64115 1.80394 2 -55 2.57495 1.90576 2 -56 2.52462 1.96317 2 -57 2.48182 1.96077 2 -58 2.43965 1.89423 2 -59 2.391 1.75158 2 -60 2.32671 1.53458 2 -61 2.23926 1.31829 2 -62 2.13623 1.20194 2 -63 2.03637 1.17466 2 -64 1.95011 1.18717 2 -65 1.87861 1.21308 2 -66 1.81989 1.24205 2 -67 1.77156 1.27031 2 -68 1.73152 1.29648 2 -69 1.69813 1.32014 2 -70 1.6701 1.34134 2 -71 1.64644 1.36006 2 -72 1.62635 1.37669 2 -73 1.60923 1.39142 2 -74 1.59458 1.40447 2 -75 1.582 1.41582 2 -76 1.57117 1.42598 2 -77 1.56183 1.43489 2 -78 1.55375 1.4427 2 -79 1.54676 1.44964 2 -80 1.54069 1.45567 2 -81 1.53543 1.46113 2 -82 1.53086 1.46579 2 -83 1.52688 1.47 2 -84 1.52343 1.47369 2 -85 1.52042 1.47693 2 -86 1.5178 1.47992 2 -87 1.51553 1.48249 2 -88 1.51354 1.48452 2 -89 1.51182 1.48668 2 -90 1.51031 1.48817 2 -91 1.509 2.66124 2 -92 1.50786 2.42479 2 -93 1.50686 2.24964 2 -94 1.506 1.00538 2 -95 1.50524 1.04761 2 -96 1.50458 1.08791 2 -97 1.51586 6.60143 2 -98 1.5139 2.44456 2 -99 1.51218 2.26978 2 -0 0 0 3 -1 0 0 3 -2 0 0 3 -3 0 0 3 -4 0 0 3 -5 0 0 3 -6 0 0 3 -7 0 0 3 -8 0 0 3 -9 0 0 3 -10 0 0 3 -11 0 0 3 -12 0 0 3 -13 0 0 3 -14 0 0 3 -15 0 0 3 -16 0 0 3 -17 0 0 3 -18 0 0 3 -19 0 0 3 -20 0 0 3 -21 0 0 3 -22 0 0 3 -23 0 0 3 -24 0 0 3 -25 0 0 3 -26 0 0 3 -27 0 0 3 -28 0 0 3 -29 0 0 3 -30 0 0 3 -31 0 0 3 -32 0 0 3 -33 0 0 3 -34 0 0 3 -35 3.88415 3.30711 3 -36 3.83187 3.10582 3 -37 3.77626 3.06995 3 -38 3.72257 3.0324 3 -39 3.66933 2.97812 3 -40 3.6156 2.92113 3 -41 3.56172 2.87288 3 -42 3.50875 2.83671 3 -43 3.45762 2.81026 3 -44 3.40883 2.78849 3 -45 3.36241 2.76824 3 -46 3.31811 2.74624 3 -47 3.27549 2.72036 3 -48 3.23393 2.68731 3 -49 3.19237 2.63775 3 -50 3.14835 2.54284 3 -51 3.0933 2.29163 3 -52 3.00137 1.88282 3 -53 2.90597 2.1134 3 -54 2.85709 2.38309 3 -55 2.82747 2.47458 3 -56 2.80462 2.50687 3 -57 2.78505 2.51919 3 -58 2.76741 2.52045 3 -59 2.75061 2.50455 3 -60 2.73181 2.41244 3 -61 2.69139 1.88347 3 -62 2.60082 1.6929 3 -63 2.52598 1.79581 3 -64 2.46608 1.79241 3 -65 2.40411 1.65199 3 -66 2.32315 1.40642 3 -67 2.21611 1.2137 3 -68 2.10265 1.1541 3 -69 2.00264 1.1615 3 -70 1.9203 1.18938 3 -71 1.85343 1.22158 3 -72 1.79895 1.25294 3 -73 1.75422 1.28174 3 -74 1.71717 1.30764 3 -75 1.68624 1.33054 3 -76 1.66024 1.35092 3 -77 1.63824 1.36884 3 -78 1.61954 1.38454 3 -79 1.60357 1.39844 3 -80 1.58987 1.41063 3 -81 1.5781 1.42135 3 -82 1.56794 1.43085 3 -83 1.55916 1.4392 3 -84 1.55156 1.44659 3 -85 1.54497 1.4529 3 -86 1.53924 1.45866 3 -87 1.53425 1.46367 3 -88 1.52992 1.46809 3 -89 1.52614 1.47196 3 -90 1.52284 1.47531 3 -91 1.51997 1.47856 3 -92 1.51746 1.48086 3 -93 1.51528 1.48336 3 -94 1.51336 0.89249 3 -95 1.5117 0.938673 3 -96 1.51024 0.983374 3 -97 1.52474 1.47427 3 -98 1.52168 2.96415 3 -99 1.519 2.65108 3 -0 0 0 4 -1 0 0 4 -2 0 0 4 -3 0 0 4 -4 0 0 4 -5 0 0 4 -6 0 0 4 -7 0 0 4 -8 0 0 4 -9 0 0 4 -10 0 0 4 -11 0 0 4 -12 0 0 4 -13 0 0 4 -14 0 0 4 -15 0 0 4 -16 0 0 4 -17 0 0 4 -18 0 0 4 -19 0 0 4 -20 0 0 4 -21 0 0 4 -22 0 0 4 -23 0 0 4 -24 0 0 4 -25 0 0 4 -26 0 0 4 -27 0 0 4 -28 0 0 4 -29 0 0 4 -30 0 0 4 -31 0 0 4 -32 0 0 4 -33 0 0 4 -34 0 0 4 -35 0 0 4 -36 0 0 4 -37 0 0 4 -38 0 0 4 -39 3.89406 3.61041 4 -40 3.86652 3.40111 4 -41 3.83081 3.31538 4 -42 3.79242 3.25375 4 -43 3.75152 3.17541 4 -44 3.70635 3.07462 4 -45 3.65592 2.97135 4 -46 3.60127 2.88602 4 -47 3.54454 2.82025 4 -48 3.48729 2.76363 4 -49 3.42962 2.69776 4 -50 3.36869 2.57376 4 -51 3.2911 2.24426 4 -52 3.18244 2.12829 4 -53 3.11037 2.45393 4 -54 3.06688 2.56597 4 -55 3.0324 2.59472 4 -56 3.00181 2.59735 4 -57 2.97333 2.58787 4 -58 2.94583 2.56472 4 -59 2.91728 2.49725 4 -60 2.87659 2.14616 4 -61 2.78168 1.84899 4 -62 2.73645 2.43239 4 -63 2.72089 2.54066 4 -64 2.71028 2.5659 4 -65 2.70105 2.55991 4 -66 2.68833 2.36454 4 -67 2.60815 1.55665 4 -68 2.51533 1.68202 4 -69 2.44142 1.64164 4 -70 2.35674 1.41479 4 -71 2.24397 1.19932 4 -72 2.12268 1.13692 4 -73 2.01687 1.14887 4 -74 1.93083 1.18056 4 -75 1.86155 1.21532 4 -76 1.80544 1.24835 4 -77 1.75955 1.27832 4 -78 1.72164 1.30493 4 -79 1.69005 1.32849 4 -80 1.66353 1.34924 4 -81 1.64113 1.3675 4 -82 1.62208 1.38335 4 -83 1.60583 1.39754 4 -84 1.5919 1.40989 4 -85 1.57992 1.42074 4 -86 1.56959 1.43031 4 -87 1.56065 1.43879 4 -88 1.55292 1.44614 4 -89 1.5462 1.45246 4 -90 1.54036 1.45819 4 -91 1.53528 1.46344 4 -92 1.53085 1.46777 4 -93 1.52699 1.4717 4 -94 1.52362 1.4704 4 -95 1.52068 1.47331 4 -96 1.51811 1.476 4 -97 1.53568 1.46365 4 -98 1.53124 1.46779 4 -99 1.52737 1.47183 4 -0 0 0 5 -1 0 0 5 -2 0 0 5 -3 0 0 5 -4 0 0 5 -5 0 0 5 -6 0 0 5 -7 0 0 5 -8 0 0 5 -9 0 0 5 -10 0 0 5 -11 0 0 5 -12 0 0 5 -13 0 0 5 -14 0 0 5 -15 0 0 5 -16 0 0 5 -17 0 0 5 -18 0 0 5 -19 0 0 5 -20 0 0 5 -21 0 0 5 -22 0 0 5 -23 0 0 5 -24 0 0 5 -25 0 0 5 -26 0 0 5 -27 0 0 5 -28 0 0 5 -29 0 0 5 -30 0 0 5 -31 0 0 5 -32 0 0 5 -33 0 0 5 -34 0 0 5 -35 0 0 5 -36 0 0 5 -37 0 0 5 -38 0 0 5 -39 0 0 5 -40 0 0 5 -41 0 0 5 -42 0 0 5 -43 3.89796 3.68867 5 -44 3.87243 3.4173 5 -45 3.83777 3.34035 5 -46 3.80121 3.28368 5 -47 3.76109 3.17474 5 -48 3.71236 3.01168 5 -49 3.65275 2.84828 5 -50 3.58176 2.64679 5 -51 3.48352 2.23281 5 -52 3.36572 2.34229 5 -53 3.29535 2.59403 5 -54 3.24586 2.65967 5 -55 3.2036 2.6713 5 -56 3.16514 2.66835 5 -57 3.12947 2.66266 5 -58 3.09597 2.64793 5 -59 3.06202 2.56564 5 -60 3.00341 1.94515 5 -61 2.91203 2.28684 5 -62 2.87816 2.52047 5 -63 2.85526 2.55383 5 -64 2.83471 2.54266 5 -65 2.81268 2.4553 5 -66 2.76268 1.75052 5 -67 2.69848 2.47101 5 -68 2.68927 2.58992 5 -69 2.68355 2.60024 5 -70 2.67667 2.4864 5 -71 2.58925 1.48068 5 -72 2.48885 1.60188 5 -73 2.4009 1.46511 5 -74 2.28877 1.21807 5 -75 2.16033 1.12647 5 -76 2.04606 1.1343 5 -77 1.95347 1.16737 5 -78 1.87945 1.20412 5 -79 1.81986 1.2389 5 -80 1.77135 1.27031 5 -81 1.73144 1.29819 5 -82 1.69828 1.32274 5 -83 1.67051 1.34431 5 -84 1.64709 1.3632 5 -85 1.62722 1.37958 5 -86 1.61027 1.39454 5 -87 1.59576 1.4071 5 -88 1.5833 1.4183 5 -89 1.57255 1.42828 5 -90 1.56326 1.437 5 -91 1.55521 1.44432 5 -92 1.54823 1.45103 5 -93 1.54216 1.45699 5 -94 1.53687 1.46211 5 -95 1.53227 1.46675 5 -96 1.52825 1.47052 5 -97 1.54877 1.45109 5 -98 1.54267 1.45709 5 -99 1.53735 1.46205 5 diff --git a/example/ac/out/swd.txt b/example/ac/out/swd.txt deleted file mode 100644 index 64a7825..0000000 --- a/example/ac/out/swd.txt +++ /dev/null @@ -1,2767 +0,0 @@ -100 93.9156 88.2014 82.8348 77.7948 73.0615 68.6161 64.4412 60.5203 56.838 53.3798 50.1319 47.0817 44.2171 41.5267 39 36.6271 34.3986 32.3056 30.34 28.494 26.7603 25.1321 23.603 22.1669 20.8181 19.5515 18.3619 17.2447 16.1954 15.21 14.2846 13.4155 12.5992 11.8326 11.1127 10.4365 9.80153 9.20517 8.64509 8.11908 7.62509 7.16114 6.72543 6.31623 5.93192 5.571 5.23204 4.9137 4.61473 4.33395 4.07025 3.8226 3.59002 3.37159 3.16645 2.97379 2.79285 2.62292 2.46333 2.31345 2.17269 2.0405 1.91634 1.79975 1.69024 1.5874 1.49082 1.40011 1.31492 1.23492 1.15978 1.08921 1.02294 0.960701 0.902248 0.847351 0.795795 0.747375 0.701902 0.659195 0.619087 0.581419 0.546043 0.51282 0.481618 0.452314 0.424793 0.398947 0.374674 0.351877 0.330467 0.31036 0.291477 0.273742 0.257086 0.241444 0.226754 0.212957 0.2 -0 3.416909 3.251521 0 -1 3.399821 3.224693 0 -2 3.384892 3.191838 0 -3 3.372657 3.159970 0 -4 3.359454 3.122120 0 -5 3.338521 3.077037 0 -6 3.319878 3.027615 0 -7 3.294510 2.973094 0 -8 3.272106 2.914735 0 -9 3.246612 2.851345 0 -10 3.217962 2.784886 0 -11 3.183440 2.710804 0 -12 3.147236 2.637513 0 -13 3.106190 2.561131 0 -14 3.063052 2.485570 0 -15 3.017962 2.414480 0 -16 2.968130 2.346401 0 -17 2.918388 2.283881 0 -18 2.867122 2.226913 0 -19 2.815173 2.174963 0 -20 2.763299 2.127943 0 -20 3.893216 3.675700 1 -21 2.711364 2.083324 0 -21 3.874040 3.536883 1 -22 2.660628 2.040029 0 -22 3.847406 3.426149 1 -23 2.610094 1.996032 0 -23 3.815368 3.336658 1 -24 2.559768 1.950185 0 -24 3.779022 3.257985 1 -25 2.509412 1.899849 0 -25 3.739824 3.183492 1 -26 2.458574 1.844499 0 -26 3.697071 3.107288 1 -27 2.406547 1.783140 0 -27 3.651553 3.026096 1 -28 2.352574 1.714861 0 -28 3.601873 2.932837 1 -29 2.296431 1.640888 0 -29 3.548146 2.827581 1 -30 2.237253 1.562766 0 -30 3.488185 2.707654 1 -30 3.899797 3.675969 2 -31 2.175282 1.484155 0 -31 3.421259 2.570936 1 -31 3.873193 3.339091 2 -32 2.110585 1.411138 0 -32 3.345544 2.416432 1 -32 3.823425 3.058163 2 -33 2.044494 1.349919 0 -33 3.259132 2.246867 1 -33 3.753174 2.796441 2 -34 1.979257 1.304527 0 -34 3.161430 2.084192 1 -34 3.662334 2.552700 2 -35 1.916729 1.276628 0 -35 3.056608 1.972617 1 -35 3.558877 2.431892 2 -35 3.884182 3.303470 3 -36 1.858966 1.263939 0 -36 2.954156 1.932596 1 -36 3.461086 2.444079 2 -36 3.831866 3.105742 3 -37 1.807078 1.262908 0 -37 2.862581 1.945992 1 -37 3.378882 2.501442 2 -37 3.776280 3.069942 3 -38 1.761271 1.269905 0 -38 2.785053 1.984481 1 -38 3.311201 2.553426 2 -38 3.722583 3.032246 3 -39 1.721365 1.281927 0 -39 2.720892 2.028709 1 -39 3.254340 2.589186 2 -39 3.669319 2.978361 3 -39 3.894333 3.591715 4 -40 1.686982 1.296530 0 -40 2.667674 2.069190 1 -40 3.205363 2.611514 2 -40 3.615586 2.921196 3 -40 3.866514 3.401133 4 -41 1.657394 1.312377 0 -41 2.623254 2.102192 1 -41 3.162242 2.624058 2 -41 3.561702 2.872761 3 -41 3.830796 3.315358 4 -42 1.632067 1.328362 0 -42 2.585444 2.126371 1 -42 3.123579 2.629865 2 -42 3.508740 2.836858 3 -42 3.792415 3.253768 4 -43 1.610372 1.343972 0 -43 2.552654 2.141061 1 -43 3.088350 2.630586 2 -43 3.457618 2.810283 3 -43 3.751517 3.175470 4 -43 3.898749 3.630614 5 -44 1.591823 1.358810 0 -44 2.523398 2.145626 1 -44 3.055881 2.627115 2 -44 3.408827 2.788724 3 -44 3.706357 3.074628 4 -44 3.872428 3.416774 5 -45 1.575954 1.372774 0 -45 2.496470 2.138902 1 -45 3.025563 2.619909 2 -45 3.362415 2.768231 3 -45 3.655915 2.971396 4 -45 3.837776 3.340338 5 -46 1.562414 1.385740 0 -46 2.470589 2.118761 1 -46 2.996909 2.608937 2 -46 3.318110 2.746310 3 -46 3.601275 2.885961 4 -46 3.801208 3.283885 5 -47 1.550368 1.395263 0 -47 2.444453 2.081279 1 -47 2.969448 2.593550 2 -47 3.275503 2.720301 3 -47 3.544544 2.820176 4 -47 3.761090 3.174605 5 -47 3.879634 3.375432 6 -48 1.540347 1.405593 0 -48 2.416411 2.020693 1 -48 2.942684 2.572039 2 -48 3.233927 2.686974 3 -48 3.487286 2.763667 4 -48 3.712364 3.011499 5 -48 3.841023 3.311121 6 -49 1.531758 1.414914 0 -49 2.384127 1.928217 1 -49 2.915930 2.540061 2 -49 3.192374 2.637635 3 -49 3.429617 2.697828 4 -49 3.652750 2.848165 5 -49 3.803368 3.282463 6 -50 1.524403 1.423308 0 -50 2.344292 1.794344 1 -50 2.887925 2.484949 2 -50 3.148358 2.542996 3 -50 3.368696 2.573934 4 -50 3.581761 2.647344 5 -50 3.758957 3.022919 6 -50 3.855660 3.123022 7 -51 1.518111 1.430857 0 -51 2.292237 1.619303 1 -51 2.855429 2.365767 2 -51 3.093303 2.291807 3 -51 3.291091 2.244436 4 -51 3.483515 2.232173 5 -51 3.666217 2.339498 6 -51 3.792905 2.959118 7 -51 3.882508 2.928860 8 -52 1.512736 1.437639 0 -52 2.223802 1.433904 1 -52 2.807978 2.075645 2 -52 3.001369 1.881831 3 -52 3.182440 2.127924 4 -52 3.365719 2.342398 5 -52 3.550929 2.545206 6 -52 3.724869 2.880551 7 -52 3.818363 3.218185 8 -53 1.508145 1.443721 0 -53 2.140519 1.294408 1 -53 2.727811 1.774773 2 -53 2.905972 2.113684 3 -53 3.110366 2.454265 4 -53 3.295349 2.594237 5 -53 3.478407 2.703901 6 -53 3.655825 2.807641 7 -53 3.780097 3.261852 8 -53 3.857967 3.124803 9 -54 1.504251 1.449197 0 -54 2.052256 1.226006 1 -54 2.641146 1.803911 2 -54 2.857089 2.383323 3 -54 3.066873 2.566207 4 -54 3.245856 2.659675 5 -54 3.420313 2.724764 6 -54 3.587444 2.769467 7 -54 3.734922 3.046306 8 -54 3.810459 3.318433 9 -54 3.897880 3.453194 10 -55 1.500947 1.454136 0 -55 1.969578 1.209326 1 -55 2.574949 1.905871 2 -55 2.827475 2.474724 3 -55 3.032398 2.594750 4 -55 3.203612 2.671237 5 -55 3.367791 2.720181 6 -55 3.524570 2.786408 7 -55 3.679676 2.973470 8 -55 3.782975 3.449889 9 -55 3.858889 3.299896 10 -56 1.498161 1.458604 0 -56 1.897536 1.218848 1 -56 2.524620 1.963265 2 -56 2.804616 2.506903 3 -56 3.001806 2.597448 4 -56 3.165147 2.668437 5 -56 3.319822 2.725047 6 -56 3.470592 2.827064 7 -56 3.627093 2.968289 8 -56 3.758544 3.342512 9 -56 3.818967 3.293093 10 -57 1.495829 1.462673 0 -57 1.836698 1.239360 1 -57 2.481829 1.960855 2 -57 2.785047 2.519356 3 -57 2.973329 2.587927 4 -57 3.129471 2.662714 5 -57 3.276861 2.736801 6 -57 3.424318 2.845530 7 -57 3.576815 2.908316 8 -57 3.714216 2.908232 9 -57 3.782825 3.295961 10 -57 3.844182 3.012891 11 -58 1.493583 1.464694 0 -58 1.785737 1.262916 1 -58 2.439647 1.894312 2 -58 2.767414 2.520844 3 -58 2.945831 2.564736 4 -58 3.095963 2.648035 5 -58 3.237868 2.726397 6 -58 3.380820 2.787446 7 -58 3.518411 2.677581 8 -58 3.632689 2.616347 9 -58 3.743209 3.129154 10 -58 3.795386 3.360565 11 -58 3.873795 3.290177 12 -59 1.491895 1.467662 0 -59 1.743265 1.287098 1 -59 2.390996 1.751840 2 -59 2.750618 2.504560 3 -59 2.917277 2.497312 4 -59 3.062025 2.566064 5 -59 3.196714 2.564683 6 -59 3.323879 2.384762 7 -59 3.430139 2.288315 8 -59 3.549654 2.588666 9 -59 3.679532 2.517615 10 -59 3.762602 2.881091 11 -59 3.802846 2.678851 12 -59 3.871329 2.895095 13 -60 1.490479 1.470311 0 -60 1.707707 1.310089 1 -60 2.326726 1.534682 2 -60 2.731799 2.412927 3 -60 2.876592 2.147652 4 -60 3.003410 1.943614 5 -60 3.105064 1.901875 6 -60 3.212206 2.290335 7 -60 3.335002 2.490402 8 -60 3.446296 2.344746 9 -60 3.547780 2.610303 10 -60 3.670794 2.814243 11 -60 3.759141 3.197038 12 -60 3.796354 3.064760 13 -60 3.860627 3.191602 14 -61 1.489311 1.472697 0 -61 1.677819 1.331306 1 -61 2.239275 1.318263 2 -61 2.691393 1.883112 3 -61 2.781671 1.848064 4 -61 2.912034 2.288317 5 -61 3.038236 2.559277 6 -61 3.160763 2.634528 7 -61 3.273189 2.571750 8 -61 3.372591 2.693971 9 -61 3.490059 2.854493 10 -61 3.602454 2.779635 11 -61 3.703322 2.983039 12 -61 3.769079 3.545394 13 -61 3.819714 3.266318 14 -61 3.881822 3.176758 15 -62 1.488355 1.474855 0 -62 1.652580 1.350575 1 -62 2.136246 1.201943 2 -62 2.600834 1.692700 3 -62 2.736454 2.432941 4 -62 2.878165 2.520712 5 -62 3.008500 2.635331 6 -62 3.122543 2.618632 7 -62 3.222887 2.645016 8 -62 3.328188 2.806504 9 -62 3.441531 2.802743 10 -62 3.540483 2.826506 11 -62 3.649534 2.945098 12 -62 3.742762 3.036920 13 -62 3.775666 3.336387 14 -62 3.827811 3.229696 15 -62 3.887820 3.277834 16 -63 1.487595 1.476835 0 -63 1.631182 1.367922 1 -63 2.036410 1.174799 2 -63 2.525981 1.795933 3 -63 2.720893 2.540907 4 -63 2.855263 2.553921 5 -63 2.982268 2.614853 6 -63 3.085553 2.604765 7 -63 3.183998 2.714630 8 -63 3.290756 2.787294 9 -63 3.391951 2.753360 10 -63 3.488265 2.833262 11 -63 3.588068 2.750785 12 -63 3.674977 2.849634 13 -63 3.755288 3.378529 14 -63 3.784841 3.199346 15 -63 3.835462 3.159228 16 -63 3.890269 3.242779 17 -64 1.486792 1.477504 0 -64 1.612892 1.383071 1 -64 1.950123 1.187202 2 -64 2.466080 1.792565 3 -64 2.710281 2.565929 4 -64 2.834708 2.542702 5 -64 2.955059 2.560805 6 -64 3.051630 2.610828 7 -64 3.151203 2.704057 8 -64 3.251438 2.687476 9 -64 3.342056 2.669377 10 -64 3.433013 2.646855 11 -64 3.517317 2.656625 12 -64 3.610145 2.759131 13 -64 3.697071 2.734159 14 -64 3.758788 3.452995 15 -64 3.789834 3.114458 16 -64 3.838042 3.019967 17 -64 3.889777 2.930130 18 -65 1.486265 1.478895 0 -65 1.597315 1.396836 1 -65 1.878631 1.213141 2 -65 2.404113 1.652329 3 -65 2.701051 2.560157 4 -65 2.812675 2.455647 5 -65 2.922431 2.386265 6 -65 3.016714 2.431288 7 -65 3.108100 2.245265 8 -65 3.187101 2.001455 9 -65 3.261822 2.066424 10 -65 3.342230 2.215267 11 -65 3.423418 2.262396 12 -65 3.499935 2.360726 13 -65 3.583028 2.551999 14 -65 3.664368 2.683746 15 -65 3.743939 3.035577 16 -65 3.768902 3.302438 17 -65 3.810561 3.102098 18 -65 3.855661 3.000286 19 -66 1.485855 1.480156 0 -66 1.583976 1.409088 1 -66 1.819913 1.242185 2 -66 2.323164 1.406471 3 -66 2.688333 2.367446 4 -66 2.762679 1.747370 5 -66 2.843357 1.869510 6 -66 2.934781 2.193768 7 -66 3.019711 2.497120 8 -66 3.107899 2.583752 9 -66 3.194259 2.639770 10 -66 3.273699 2.623506 11 -66 3.352924 2.716967 12 -66 3.434444 2.776348 13 -66 3.516436 2.798077 14 -66 3.596249 2.799625 15 -66 3.672796 2.827173 16 -66 3.744821 3.202374 17 -66 3.767214 3.418575 18 -66 3.807763 3.329456 19 -66 3.853212 3.203585 20 -67 1.485547 1.481319 0 -67 1.572527 1.419984 1 -67 1.771588 1.270501 2 -67 2.216121 1.213612 3 -67 2.608161 1.556174 4 -67 2.698484 2.472132 5 -67 2.798551 2.469455 6 -67 2.897674 2.532794 7 -67 2.991332 2.651601 8 -67 3.073073 2.630470 9 -67 3.155939 2.664165 10 -67 3.228131 2.688101 11 -67 3.309617 2.769671 12 -67 3.385368 2.765349 13 -67 3.461773 2.774293 14 -67 3.535067 2.827530 15 -67 3.612760 2.911040 16 -67 3.691463 2.931144 17 -67 3.752111 3.377911 18 -67 3.770704 3.186158 19 -67 3.806200 3.194291 20 -67 3.846599 3.000670 21 -67 3.890275 3.195223 22 -68 1.485321 1.482404 0 -68 1.562683 1.429664 1 -68 1.731571 1.296740 2 -68 2.102678 1.154173 3 -68 2.515339 1.682284 4 -68 2.689264 2.590216 5 -68 2.778928 2.524659 6 -68 2.874432 2.569431 7 -68 2.967108 2.611054 8 -68 3.042005 2.631242 9 -68 3.119213 2.617674 10 -68 3.191493 2.732907 11 -68 3.267680 2.680767 12 -68 3.339228 2.744451 13 -68 3.408449 2.728019 14 -68 3.483841 2.807763 15 -68 3.553069 2.677844 16 -68 3.618653 2.612096 17 -68 3.683786 2.808688 18 -68 3.748297 3.286335 19 -68 3.765069 3.329999 20 -68 3.799459 3.329324 21 -68 3.840647 3.057234 22 -68 3.881455 2.989490 23 -69 1.484989 1.482377 0 -69 1.554146 1.437991 1 -69 1.698149 1.320242 2 -69 2.002649 1.161495 3 -69 2.441409 1.641898 4 -69 2.683548 2.600450 5 -69 2.761588 2.499702 6 -69 2.852681 2.512024 7 -69 2.937555 2.434403 8 -69 3.010525 2.483901 9 -69 3.075959 2.341701 10 -69 3.150602 2.276146 11 -69 3.206230 2.073342 12 -69 3.269548 1.963272 13 -69 3.328677 2.172427 14 -69 3.386827 2.339210 15 -69 3.458549 2.513078 16 -69 3.519248 2.416381 17 -69 3.577140 2.460437 18 -69 3.644536 2.822959 19 -69 3.711549 2.827754 20 -69 3.754260 3.553920 21 -69 3.774127 3.097990 22 -69 3.800874 3.170051 23 -69 3.840910 3.200064 24 -69 3.882819 3.190633 25 -70 1.484857 1.483123 0 -70 1.546817 1.445570 1 -70 1.670128 1.341431 2 -70 1.920319 1.189432 3 -70 2.356745 1.414887 4 -70 2.676672 2.489623 5 -70 2.731026 1.932308 6 -70 2.793631 1.682601 7 -70 2.860307 2.115764 8 -70 2.935520 2.316607 9 -70 3.005525 2.557986 10 -70 3.066241 2.538285 11 -70 3.142427 2.673816 12 -70 3.199671 2.685800 13 -70 3.269870 2.677420 14 -70 3.332303 2.745531 15 -70 3.387858 2.639222 16 -70 3.454187 2.845732 17 -70 3.517367 2.919313 18 -70 3.584756 2.781136 19 -70 3.644359 2.891278 20 -70 3.705703 2.933322 21 -70 3.752760 3.585431 22 -70 3.769950 3.143538 23 -70 3.793466 3.156086 24 -70 3.827547 3.115873 25 -70 3.863288 3.124563 26 -71 1.484770 1.483828 0 -71 1.540488 1.452294 1 -71 1.646477 1.360275 2 -71 1.853465 1.221725 3 -71 2.243991 1.199197 4 -71 2.589248 1.480374 5 -71 2.679755 2.567855 6 -71 2.746048 2.490637 7 -71 2.830339 2.548559 8 -71 2.902728 2.540184 9 -71 2.979139 2.631797 10 -71 3.034844 2.668186 11 -71 3.107838 2.623863 12 -71 3.166974 2.753575 13 -71 3.223656 2.623353 14 -71 3.287095 2.701467 15 -71 3.341804 2.864922 16 -71 3.408692 2.775603 17 -71 3.469976 2.773732 18 -71 3.520080 2.782885 19 -71 3.584066 2.727636 20 -71 3.638072 2.773415 21 -71 3.691074 2.899742 22 -71 3.749198 3.436459 23 -71 3.760956 3.254277 24 -71 3.784646 3.343310 25 -71 3.816292 3.164615 26 -71 3.848145 3.099638 27 -71 3.887691 3.218129 28 -72 1.484602 1.483726 0 -72 1.534992 1.458104 1 -72 1.626367 1.376803 2 -72 1.798973 1.252995 3 -72 2.122681 1.136874 4 -72 2.488854 1.602216 5 -72 2.675061 2.618549 6 -72 2.731698 2.541545 7 -72 2.811488 2.532785 8 -72 2.878639 2.547785 9 -72 2.952352 2.529109 10 -72 3.010844 2.667426 11 -72 3.068309 2.464153 12 -72 3.132657 2.526214 13 -72 3.179776 2.592915 14 -72 3.239655 2.439754 15 -72 3.300002 2.241993 16 -72 3.339629 2.154587 17 -72 3.392505 2.164448 18 -72 3.448723 2.187840 19 -72 3.495027 2.379149 20 -72 3.545661 2.102693 21 -72 3.597135 2.447622 22 -72 3.651119 2.773645 23 -72 3.703329 2.590850 24 -72 3.749793 3.470697 25 -72 3.761283 3.123767 26 -72 3.781945 3.266909 27 -72 3.812029 3.113448 28 -72 3.840645 2.881235 29 -72 3.874395 3.098323 30 -73 1.484563 1.484216 0 -73 1.530264 1.463359 1 -73 1.609256 1.391542 2 -73 1.754251 1.281831 3 -73 2.016892 1.148914 4 -73 2.400901 1.465377 5 -73 2.671325 2.596004 6 -73 2.716798 2.385554 7 -73 2.780600 1.960137 8 -73 2.836295 1.788303 9 -73 2.884060 1.912369 10 -73 2.946600 2.193571 11 -73 3.001976 2.591218 12 -73 3.051247 2.440510 13 -73 3.113879 2.549247 14 -73 3.162940 2.773766 15 -73 3.215996 2.673231 16 -73 3.278404 2.624104 17 -73 3.322061 2.774259 18 -73 3.370902 2.698182 19 -73 3.428845 2.746577 20 -73 3.480015 2.965012 21 -73 3.531419 2.753447 22 -73 3.584667 2.747932 23 -73 3.635818 2.946792 24 -73 3.681958 2.830221 25 -73 3.738632 3.052030 26 -73 3.752871 3.604209 27 -73 3.772817 3.494679 28 -73 3.797440 3.162920 29 -73 3.821148 3.031294 30 -73 3.852492 3.125967 31 -73 3.886072 3.109877 32 -74 1.484554 1.484708 0 -74 1.526177 1.468015 1 -74 1.594614 1.404564 2 -74 1.717209 1.307741 3 -74 1.930852 1.180669 4 -74 2.288786 1.217934 5 -74 2.600618 1.392606 6 -74 2.671912 2.583095 7 -74 2.718300 2.503621 8 -74 2.787544 2.494623 9 -74 2.850769 2.590844 10 -74 2.910621 2.528186 11 -74 2.978335 2.634842 12 -74 3.017631 2.664086 13 -74 3.077069 2.616748 14 -74 3.137315 2.735562 15 -74 3.177523 2.688887 16 -74 3.226465 2.600166 17 -74 3.284930 2.762230 18 -74 3.327599 2.841515 19 -74 3.377558 2.707013 20 -74 3.432617 2.651362 21 -74 3.474922 2.878717 22 -74 3.521427 2.761239 23 -74 3.574949 2.689361 24 -74 3.623536 2.790582 25 -74 3.661518 2.719566 26 -74 3.714092 2.850001 27 -74 3.750051 3.658607 28 -74 3.763433 3.314026 29 -74 3.779027 3.134120 30 -74 3.802889 3.243876 31 -74 3.831701 3.059138 32 -74 3.860367 2.895895 33 -74 3.890794 2.955097 34 -75 1.484459 1.484499 0 -75 1.522620 1.472029 1 -75 1.582016 1.415934 2 -75 1.686262 1.330660 3 -75 1.861572 1.215396 4 -75 2.160337 1.126397 5 -75 2.485664 1.530628 6 -75 2.668663 2.630219 7 -75 2.707560 2.566699 8 -75 2.769060 2.502079 9 -75 2.833393 2.555223 10 -75 2.883691 2.484951 11 -75 2.948266 2.403089 12 -75 2.995843 2.636038 13 -75 3.038337 2.291123 14 -75 3.089855 2.036616 15 -75 3.136813 2.215788 16 -75 3.171541 2.128435 17 -75 3.210775 1.870620 18 -75 3.260547 2.263502 19 -75 3.305258 2.613616 20 -75 3.342523 2.515922 21 -75 3.389303 2.497797 22 -75 3.442169 2.709952 23 -75 3.480463 2.762180 24 -75 3.521354 2.614956 25 -75 3.570220 2.722525 26 -75 3.619852 3.022085 27 -75 3.660999 2.853558 28 -75 3.707822 2.765012 29 -75 3.748418 3.553104 30 -75 3.756776 3.187909 31 -75 3.770803 3.347939 32 -75 3.793369 3.376605 33 -75 3.818878 3.186626 34 -75 3.845325 3.023945 35 -75 3.872794 2.933974 36 -76 1.484471 1.484867 0 -76 1.519569 1.475654 1 -76 1.571199 1.426072 2 -76 1.660262 1.351006 3 -76 1.805463 1.248443 4 -76 2.046065 1.134339 5 -76 2.385453 1.369261 6 -76 2.665219 2.511948 7 -76 2.690874 1.979647 8 -76 2.723832 1.653341 9 -76 2.771648 2.010957 10 -76 2.828900 2.406860 11 -76 2.873553 2.461154 12 -76 2.934169 2.464737 13 -76 2.987062 2.728451 14 -76 3.022720 2.593188 15 -76 3.074326 2.555234 16 -76 3.126472 2.706147 17 -76 3.163157 2.814797 18 -76 3.208216 2.619152 19 -76 3.257883 2.642210 20 -76 3.301417 2.844841 21 -76 3.336324 2.764841 22 -76 3.381835 2.648034 23 -76 3.431348 2.814601 24 -76 3.471713 2.986624 25 -76 3.512197 2.779934 26 -76 3.557818 2.649398 27 -76 3.603475 2.870269 28 -76 3.639347 2.883747 29 -76 3.678403 2.734988 30 -76 3.725252 2.877506 31 -76 3.749243 3.696500 32 -76 3.761963 3.563016 33 -76 3.778240 3.320249 34 -76 3.797187 3.250897 35 -76 3.821472 3.174951 36 -76 3.846176 3.067468 37 -76 3.874455 3.112445 38 -77 1.484507 1.485276 0 -77 1.516926 1.478845 1 -77 1.561860 1.435015 2 -77 1.638280 1.368959 3 -77 1.759576 1.278429 4 -77 1.953492 1.167459 5 -77 2.259375 1.155657 6 -77 2.542889 1.419868 7 -77 2.665942 2.632777 8 -77 2.696804 2.580141 9 -77 2.746874 2.525966 10 -77 2.808214 2.538653 11 -77 2.852976 2.607748 12 -77 2.904182 2.507796 13 -77 2.965219 2.560297 14 -77 2.997506 2.707116 15 -77 3.038891 2.561826 16 -77 3.091972 2.529020 17 -77 3.136769 2.589696 18 -77 3.164710 2.610140 19 -77 3.208712 2.427486 20 -77 3.254692 2.313111 21 -77 3.295220 2.418578 22 -77 3.324558 2.263893 23 -77 3.358913 1.854757 24 -77 3.401028 2.218388 25 -77 3.444422 2.357373 26 -77 3.474313 2.450035 27 -77 3.508300 2.367697 28 -77 3.551605 2.386911 29 -77 3.593310 2.734707 30 -77 3.630134 3.001215 31 -77 3.669427 2.750196 32 -77 3.711587 2.607780 33 -77 3.747457 3.547376 34 -77 3.754194 3.196877 35 -77 3.765598 3.315602 36 -77 3.783552 3.313534 37 -77 3.803034 3.095831 38 -77 3.823988 3.150900 39 -77 3.850399 3.179997 40 -77 3.877676 3.153520 41 -78 1.484440 1.484991 0 -78 1.514631 1.481592 1 -78 1.553774 1.442815 2 -78 1.619563 1.384665 3 -78 1.721658 1.305050 4 -78 1.879469 1.204183 5 -78 2.128553 1.113445 6 -78 2.432201 1.422925 7 -78 2.664035 2.626658 8 -78 2.689198 2.525814 9 -78 2.729274 2.278377 10 -78 2.776439 1.799673 11 -78 2.817862 1.746209 12 -78 2.850240 2.138573 13 -78 2.892872 2.198526 14 -78 2.948856 2.374671 15 -78 2.987138 2.719447 16 -78 3.018668 2.575031 17 -78 3.066827 2.556719 18 -78 3.112405 2.569530 19 -78 3.147575 2.851293 20 -78 3.179842 2.654007 21 -78 3.224259 2.668346 22 -78 3.270959 2.701333 23 -78 3.305359 2.847574 24 -78 3.332766 2.660475 25 -78 3.375753 2.735094 26 -78 3.420942 2.752008 27 -78 3.458023 2.964008 28 -78 3.488598 2.872331 29 -78 3.530382 2.632019 30 -78 3.568903 2.737262 31 -78 3.609373 2.981938 32 -78 3.639742 2.922755 33 -78 3.677157 2.780073 34 -78 3.721427 2.745757 35 -78 3.747696 3.635671 36 -78 3.755128 3.260713 37 -78 3.764781 3.275255 38 -78 3.781032 3.428516 39 -78 3.801483 3.337675 40 -78 3.822345 3.215901 41 -78 3.846500 3.159736 42 -78 3.870711 2.999037 43 -78 3.895052 3.143859 44 -79 1.484486 1.485346 0 -79 1.512652 1.484044 1 -79 1.546788 1.449777 2 -79 1.603596 1.398579 3 -79 1.690083 1.328646 4 -79 1.819884 1.239011 5 -79 2.018702 1.138078 6 -79 2.309421 1.186459 7 -79 2.571072 1.327688 8 -79 2.663658 2.633995 9 -79 2.687765 2.586356 10 -79 2.727323 2.536211 11 -79 2.779974 2.509029 12 -79 2.829640 2.614917 13 -79 2.863827 2.557682 14 -79 2.915826 2.503870 15 -79 2.968129 2.610590 16 -79 2.994428 2.725621 17 -79 3.031562 2.547168 18 -79 3.073794 2.555652 19 -79 3.121102 2.566083 20 -79 3.148729 2.784789 21 -79 3.180890 2.458037 22 -79 3.218310 2.389361 23 -79 3.259752 2.423124 24 -79 3.297210 2.496410 25 -79 3.319062 2.128217 26 -79 3.351245 1.971689 27 -79 3.387158 2.139816 28 -79 3.426743 2.224439 29 -79 3.456748 2.422613 30 -79 3.480103 2.516023 31 -79 3.519927 2.525740 32 -79 3.557608 2.499473 33 -79 3.595115 2.683721 34 -79 3.623740 2.929839 35 -79 3.654733 2.826243 36 -79 3.698702 2.737815 37 -79 3.734428 2.735015 38 -79 3.747996 3.686202 39 -79 3.757556 3.577364 40 -79 3.770407 3.337237 41 -79 3.783931 3.207615 42 -79 3.802048 3.255997 43 -79 3.822215 3.057724 44 -79 3.842023 3.045993 45 -79 3.865964 3.019259 46 -79 3.888125 2.973930 47 -80 1.484430 1.485096 0 -80 1.510945 1.486164 1 -80 1.540713 1.455848 2 -80 1.589893 1.410746 3 -80 1.663552 1.349343 4 -80 1.771368 1.270398 5 -80 1.931125 1.175754 6 -80 2.171568 1.105006 7 -80 2.446175 1.400034 8 -80 2.662170 2.634793 9 -80 2.681915 2.564299 10 -80 2.714092 2.400785 11 -80 2.755230 2.015964 12 -80 2.795313 1.629512 13 -80 2.829023 2.044300 14 -80 2.856131 2.173679 15 -80 2.900205 2.292302 16 -80 2.950160 2.434467 17 -80 2.984095 2.751767 18 -80 3.009462 2.561679 19 -80 3.049352 2.613741 20 -80 3.092721 2.552586 21 -80 3.132487 2.724519 22 -80 3.153081 2.747626 23 -80 3.187986 2.694574 24 -80 3.228856 2.690291 25 -80 3.269541 2.611430 26 -80 3.298855 2.908901 27 -80 3.322909 2.715171 28 -80 3.359878 2.753582 29 -80 3.399865 2.695549 30 -80 3.435704 2.723229 31 -80 3.462435 3.049440 32 -80 3.493404 2.782027 33 -80 3.530534 2.732370 34 -80 3.566613 2.647513 35 -80 3.600397 2.867723 36 -80 3.626431 3.034031 37 -80 3.657570 2.693184 38 -80 3.693977 2.862746 39 -80 3.734280 2.918546 40 -80 3.747608 3.699708 41 -80 3.756237 3.605561 42 -80 3.768044 3.366118 43 -80 3.780016 3.171983 44 -80 3.795877 3.236021 45 -80 3.813981 2.990233 46 -80 3.830792 3.014029 47 -80 3.853218 3.150782 48 -80 3.876282 2.999292 49 -80 3.897805 3.005987 50 -81 1.484490 1.485442 0 -81 1.509472 1.488042 1 -81 1.535457 1.461266 2 -81 1.578128 1.421526 3 -81 1.641149 1.367601 4 -81 1.731469 1.298309 5 -81 1.861347 1.213481 6 -81 2.052308 1.123156 7 -81 2.318779 1.175845 8 -81 2.561866 1.302147 9 -81 2.661747 2.641039 10 -81 2.680256 2.605073 11 -81 2.710958 2.560333 12 -81 2.753227 2.518014 13 -81 2.802786 2.522956 14 -81 2.836812 2.651771 15 -81 2.871146 2.517051 16 -81 2.918007 2.480574 17 -81 2.963780 2.533055 18 -81 2.987255 2.764299 19 -81 3.018901 2.503301 20 -81 3.051838 2.425852 21 -81 3.092171 2.325519 22 -81 3.130216 2.354352 23 -81 3.148030 2.295048 24 -81 3.173960 2.003723 25 -81 3.206450 2.072555 26 -81 3.237628 1.922153 27 -81 3.272232 2.260659 28 -81 3.298376 2.815477 29 -81 3.322390 2.509492 30 -81 3.354325 2.564173 31 -81 3.390258 2.642340 32 -81 3.427011 2.540471 33 -81 3.453732 2.910848 34 -81 3.475401 2.742679 35 -81 3.509633 2.763862 36 -81 3.544430 2.728937 37 -81 3.580697 2.843876 38 -81 3.612664 3.094260 39 -81 3.634876 2.720840 40 -81 3.665260 2.701266 41 -81 3.699286 2.823249 42 -81 3.736089 2.866947 43 -81 3.747272 3.695883 44 -81 3.754983 3.602001 45 -81 3.765551 3.355578 46 -81 3.775912 3.194055 47 -81 3.790270 3.376196 48 -81 3.808722 3.288963 49 -81 3.825832 3.032206 50 -81 3.843859 3.090624 51 -81 3.864721 3.136230 52 -81 3.887086 3.185818 53 -82 1.484444 1.485223 0 -82 1.508195 1.489654 1 -82 1.530875 1.465984 2 -82 1.567964 1.430949 3 -82 1.622106 1.383579 4 -82 1.698306 1.322836 5 -82 1.805116 1.247981 6 -82 1.957340 1.161403 7 -82 2.177168 1.097298 8 -82 2.431286 1.341760 9 -82 2.660445 2.613412 10 -82 2.674718 2.433418 11 -82 2.696094 1.960629 12 -82 2.719773 1.633539 13 -82 2.751058 1.958277 14 -82 2.793827 2.280722 15 -82 2.829687 2.592956 16 -82 2.856385 2.484298 17 -82 2.898539 2.488820 18 -82 2.942834 2.506852 19 -82 2.978869 2.789954 20 -82 2.997601 2.602665 21 -82 3.029610 2.653576 22 -82 3.066197 2.591378 23 -82 3.106919 2.553892 24 -82 3.135464 2.844891 25 -82 3.154080 2.724862 26 -82 3.187952 2.718044 27 -82 3.220184 2.613643 28 -82 3.256730 2.605820 29 -82 3.289312 2.848022 30 -82 3.306975 2.769836 31 -82 3.334985 2.680979 32 -82 3.367983 2.760258 33 -82 3.403764 2.633916 34 -82 3.437809 2.683363 35 -82 3.457867 2.918220 36 -82 3.482059 2.557279 37 -82 3.511090 2.662056 38 -82 3.545981 2.715499 39 -82 3.580357 2.429628 40 -82 3.606719 2.745263 41 -82 3.625785 2.585019 42 -82 3.655359 2.327588 43 -82 3.684490 2.231040 44 -82 3.715098 2.080228 45 -82 3.742790 2.441779 46 -82 3.747329 3.497856 47 -82 3.754538 3.504440 48 -82 3.765397 3.415020 49 -82 3.777855 2.975924 50 -82 3.789050 2.698572 51 -82 3.803553 2.880345 52 -82 3.819401 2.807502 53 -82 3.836591 2.954133 54 -82 3.856751 2.942982 55 -82 3.876632 2.795224 56 -82 3.895974 2.709763 57 -83 1.484424 1.485086 0 -83 1.507095 1.491061 1 -83 1.526899 1.470156 2 -83 1.559174 1.439251 3 -83 1.605847 1.397620 4 -83 1.670527 1.344377 5 -83 1.759254 1.278709 6 -83 1.882116 1.200780 7 -83 2.055767 1.118824 8 -83 2.293832 1.131670 9 -83 2.520316 1.325195 10 -83 2.660235 2.646441 11 -83 2.674304 2.620525 12 -83 2.697776 2.580678 13 -83 2.730543 2.528801 14 -83 2.771602 2.469320 15 -83 2.814428 2.488037 16 -83 2.837251 2.565887 17 -83 2.870272 2.305214 18 -83 2.906872 2.055112 19 -83 2.942206 1.726467 20 -83 2.973448 2.050956 21 -83 2.986296 2.201033 22 -83 3.013126 2.318423 23 -83 3.041549 2.344726 24 -83 3.075227 2.371298 25 -83 3.112236 2.553585 26 -83 3.137412 2.900897 27 -83 3.157427 2.598354 28 -83 3.185540 2.668526 29 -83 3.215660 2.587324 30 -83 3.249726 2.609371 31 -83 3.283781 2.841199 32 -83 3.301437 2.933612 33 -83 3.328029 2.660689 34 -83 3.354798 2.693650 35 -83 3.384551 2.649164 36 -83 3.419202 2.751101 37 -83 3.448361 3.063887 38 -83 3.466623 2.811910 39 -83 3.492723 2.716281 40 -83 3.522589 2.824236 41 -83 3.554292 2.696411 42 -83 3.586499 2.743582 43 -83 3.609156 3.087405 44 -83 3.628881 2.815055 45 -83 3.658489 2.861317 46 -83 3.688764 2.745208 47 -83 3.717547 2.827214 48 -83 3.746210 3.690740 49 -83 3.750609 3.436938 50 -83 3.756108 3.312254 51 -83 3.764999 3.464463 52 -83 3.777386 3.426513 53 -83 3.790219 3.144856 54 -83 3.802608 3.104392 55 -83 3.818303 3.124171 56 -83 3.834063 3.012661 57 -83 3.851228 3.062321 58 -83 3.869783 3.086182 59 -83 3.889863 3.146096 60 -84 1.484472 1.485392 0 -84 1.506151 1.492294 1 -84 1.523442 1.473862 2 -84 1.551583 1.446610 3 -84 1.591920 1.409996 4 -84 1.647112 1.363314 5 -84 1.721442 1.305812 6 -84 1.821861 1.237034 7 -84 1.959709 1.158857 8 -84 2.151786 1.092440 9 -84 2.387500 1.238376 10 -84 2.615023 1.182333 11 -84 2.659889 2.633352 12 -84 2.672754 2.590723 13 -84 2.693974 2.553116 14 -84 2.723489 2.522267 15 -84 2.760880 2.498426 16 -84 2.803115 2.517007 17 -84 2.829905 2.683193 18 -84 2.856373 2.539783 19 -84 2.892193 2.529041 20 -84 2.931089 2.490049 21 -84 2.970908 2.646296 22 -84 2.984238 2.701565 23 -84 3.010362 2.632208 24 -84 3.037605 2.558952 25 -84 3.072363 2.433837 26 -84 3.104601 2.386591 27 -84 3.132841 2.748177 28 -84 3.147168 2.441224 29 -84 3.173079 2.308033 30 -84 3.196273 1.948986 31 -84 3.222146 1.954889 32 -84 3.253748 2.007662 33 -84 3.279460 2.141043 34 -84 3.295543 2.775203 35 -84 3.316875 2.504016 36 -84 3.343636 2.666350 37 -84 3.371430 2.487308 38 -84 3.400387 2.555129 39 -84 3.433028 2.705238 40 -84 3.451704 2.976155 41 -84 3.469960 2.690701 42 -84 3.497717 2.782495 43 -84 3.524090 2.757731 44 -84 3.555699 2.717373 45 -84 3.586381 2.794473 46 -84 3.607981 3.180500 47 -84 3.628093 2.751835 48 -84 3.651235 2.655599 49 -84 3.678597 2.903409 50 -84 3.709320 2.799326 51 -84 3.740394 2.889296 52 -84 3.746488 3.688245 53 -84 3.752062 3.637151 54 -84 3.760425 3.542724 55 -84 3.769806 3.271421 56 -84 3.779006 3.224195 57 -84 3.791681 3.349693 58 -84 3.806026 3.223240 59 -84 3.819949 3.131701 60 -84 3.835704 3.109969 61 -84 3.851690 3.119192 62 -84 3.870431 3.207398 63 -84 3.889865 3.038156 64 -85 1.484451 1.485269 0 -85 1.505328 1.493349 1 -85 1.520433 1.477101 2 -85 1.544984 1.453051 3 -85 1.579937 1.420836 4 -85 1.627231 1.379880 5 -85 1.689963 1.329556 6 -85 1.772950 1.269276 7 -85 1.883853 1.199162 8 -85 2.034795 1.124147 9 -85 2.239399 1.091442 10 -85 2.456871 1.310963 11 -85 2.659003 2.637196 12 -85 2.669269 2.567751 13 -85 2.685900 2.378115 14 -85 2.706943 1.920963 15 -85 2.728544 1.616780 16 -85 2.755708 1.951599 17 -85 2.791990 2.271361 18 -85 2.823444 2.609615 19 -85 2.841899 2.503009 20 -85 2.874327 2.519360 21 -85 2.908133 2.491222 22 -85 2.948013 2.490061 23 -85 2.975706 2.835526 24 -85 2.990895 2.643653 25 -85 3.015433 2.673947 26 -85 3.042490 2.557979 27 -85 3.074359 2.594912 28 -85 3.108757 2.576358 29 -85 3.133052 2.923099 30 -85 3.147707 2.634781 31 -85 3.170766 2.711028 32 -85 3.195951 2.674961 33 -85 3.228399 2.596844 34 -85 3.257196 2.516906 35 -85 3.284368 2.747182 36 -85 3.297184 2.867907 37 -85 3.321959 2.660713 38 -85 3.343808 2.587482 39 -85 3.370745 2.545911 40 -85 3.401150 2.301334 41 -85 3.426671 2.197195 42 -85 3.446969 2.678020 43 -85 3.460722 2.331556 44 -85 3.485143 2.301309 45 -85 3.507447 2.179751 46 -85 3.530441 1.886534 47 -85 3.555383 2.371832 48 -85 3.586755 2.564023 49 -85 3.605303 2.902191 50 -85 3.620947 2.659988 51 -85 3.646701 2.652325 52 -85 3.670173 2.697768 53 -85 3.696792 2.618858 54 -85 3.725543 2.672164 55 -85 3.745878 3.685908 56 -85 3.749528 3.372036 57 -85 3.753752 3.164125 58 -85 3.760540 3.430386 59 -85 3.770471 3.476928 60 -85 3.781620 3.319915 61 -85 3.792550 3.199055 62 -85 3.805549 3.169361 63 -85 3.818425 2.946482 64 -85 3.831595 3.145721 65 -85 3.848777 3.231763 66 -85 3.865805 3.149970 67 -85 3.883492 3.159208 68 -86 1.484436 1.485185 0 -86 1.504620 1.494262 1 -86 1.517813 1.479953 2 -86 1.539249 1.458726 3 -86 1.569604 1.430369 4 -86 1.610287 1.394416 5 -86 1.663548 1.350358 6 -86 1.732781 1.297643 7 -86 1.823195 1.235919 8 -86 1.942954 1.166197 9 -86 2.104169 1.098368 10 -86 2.312696 1.121797 11 -86 2.513420 1.275858 12 -86 2.658717 2.649180 13 -86 2.668227 2.630197 14 -86 2.684131 2.598382 15 -86 2.706431 2.550876 16 -86 2.734972 2.477515 17 -86 2.768850 2.346088 18 -86 2.804231 2.121423 19 -86 2.825413 2.356469 20 -86 2.842238 1.755397 21 -86 2.865769 1.847710 22 -86 2.891351 2.069763 23 -86 2.924794 2.255179 24 -86 2.961049 2.450632 25 -86 2.977436 2.824755 26 -86 2.996336 2.597766 27 -86 3.016537 2.628691 28 -86 3.045973 2.582733 29 -86 3.074390 2.533898 30 -86 3.105373 2.559397 31 -86 3.130983 2.941082 32 -86 3.144137 2.727086 33 -86 3.166622 2.721877 34 -86 3.187318 2.616203 35 -86 3.215503 2.657745 36 -86 3.244299 2.623433 37 -86 3.273331 2.659591 38 -86 3.290750 3.074801 39 -86 3.308724 2.714958 40 -86 3.329186 2.710569 41 -86 3.350785 2.684373 42 -86 3.378768 2.682742 43 -86 3.407352 2.717995 44 -86 3.435828 2.725611 45 -86 3.449538 3.013671 46 -86 3.466744 2.620430 47 -86 3.489040 2.855545 48 -86 3.513417 2.670125 49 -86 3.538064 2.576993 50 -86 3.566367 2.611954 51 -86 3.591445 2.649026 52 -86 3.606739 3.058953 53 -86 3.624999 2.521053 54 -86 3.647563 2.530802 55 -86 3.668815 2.343385 56 -86 3.692463 2.044273 57 -86 3.715876 2.361609 58 -86 3.744320 2.808695 59 -86 3.746452 3.320346 60 -86 3.750859 3.411875 61 -86 3.757574 3.329827 62 -86 3.765419 2.829600 63 -86 3.772340 2.618309 64 -86 3.782033 3.023954 65 -86 3.793610 2.823063 66 -86 3.803847 2.732587 67 -86 3.816766 2.988532 68 -86 3.830615 2.865800 69 -86 3.844284 2.933738 70 -86 3.860127 2.962541 71 -86 3.875671 2.917861 72 -86 3.892016 2.984934 73 -87 1.484423 1.485131 0 -87 1.504009 1.495052 1 -87 1.515533 1.482464 2 -87 1.534264 1.463729 3 -87 1.560669 1.438756 4 -87 1.595778 1.407176 5 -87 1.641231 1.368579 6 -87 1.699450 1.322499 7 -87 1.774029 1.268495 8 -87 1.870433 1.206526 9 -87 1.996960 1.138807 10 -87 2.164799 1.082443 11 -87 2.368632 1.171120 12 -87 2.563530 1.191703 13 -87 2.658389 2.649594 14 -87 2.666889 2.632934 15 -87 2.681087 2.608236 16 -87 2.701044 2.577541 17 -87 2.726754 2.541645 18 -87 2.758015 2.501368 19 -87 2.793425 2.469507 20 -87 2.821444 2.660608 21 -87 2.836654 2.498346 22 -87 2.863430 2.458111 23 -87 2.890448 2.254249 24 -87 2.921710 1.925198 25 -87 2.950183 1.687363 26 -87 2.972389 2.264169 27 -87 2.980964 2.173333 28 -87 3.000920 2.452712 29 -87 3.020604 2.298941 30 -87 3.045183 2.459101 31 -87 3.072916 2.493947 32 -87 3.103528 2.461437 33 -87 3.127791 2.784834 34 -87 3.137649 2.781776 35 -87 3.159437 2.776904 36 -87 3.178830 2.643414 37 -87 3.204166 2.638049 38 -87 3.229490 2.586404 39 -87 3.255580 2.598194 40 -87 3.283051 2.895308 41 -87 3.293804 2.931906 42 -87 3.314655 2.774434 43 -87 3.333167 2.723298 44 -87 3.355030 2.621152 45 -87 3.380658 2.743796 46 -87 3.408153 2.661699 47 -87 3.432934 2.708160 48 -87 3.447118 3.169794 49 -87 3.465478 2.805487 50 -87 3.485157 2.810183 51 -87 3.505948 2.740950 52 -87 3.530691 2.640202 53 -87 3.554921 2.663103 54 -87 3.579489 2.723067 55 -87 3.600778 3.227648 56 -87 3.614245 2.959122 57 -87 3.637838 2.812724 58 -87 3.655464 2.653539 59 -87 3.678621 2.706280 60 -87 3.703153 2.564869 61 -87 3.728019 2.670416 62 -87 3.745601 3.701737 63 -87 3.748720 3.458221 64 -87 3.752347 3.103826 65 -87 3.757445 3.357990 66 -87 3.765393 3.473400 67 -87 3.774865 3.312280 68 -87 3.783570 3.016112 69 -87 3.793269 3.158303 70 -87 3.805479 3.088146 71 -87 3.816825 2.858805 72 -87 3.829337 2.905790 73 -87 3.842803 2.668918 74 -87 3.855390 2.655593 75 -87 3.870000 2.850668 76 -87 3.886160 2.874138 77 -88 1.484481 1.485450 0 -88 1.503482 1.495736 1 -88 1.513553 1.484684 2 -88 1.529933 1.468158 3 -88 1.552934 1.446158 4 -88 1.583311 1.418401 5 -88 1.622274 1.384569 6 -88 1.671558 1.344271 7 -88 1.733689 1.297108 8 -88 1.812354 1.242767 9 -88 1.913062 1.181578 10 -88 2.043954 1.117199 11 -88 2.214380 1.075633 12 -88 2.408378 1.211037 13 -88 2.605058 1.127798 14 -88 2.658087 2.646986 15 -88 2.665673 2.625923 16 -88 2.678307 2.599841 17 -88 2.696008 2.572912 18 -88 2.718803 2.545710 19 -88 2.746685 2.517938 20 -88 2.779095 2.494856 21 -88 2.812203 2.552557 22 -88 2.825981 2.676941 23 -88 2.849178 2.557401 24 -88 2.872505 2.514728 25 -88 2.902512 2.429607 26 -88 2.934381 2.353670 27 -88 2.964729 2.283544 28 -88 2.975730 2.739899 29 -88 2.993141 2.348703 30 -88 3.008016 1.986125 31 -88 3.027825 1.895218 32 -88 3.048489 1.946753 33 -88 3.070925 2.068393 34 -88 3.098774 2.355221 35 -88 3.124574 2.548318 36 -88 3.133614 2.819168 37 -88 3.151943 2.670872 38 -88 3.167894 2.638393 39 -88 3.190998 2.657729 40 -88 3.215399 2.631771 41 -88 3.239461 2.508659 42 -88 3.265128 2.623440 43 -88 3.285895 3.042738 44 -88 3.296670 2.799113 45 -88 3.316402 2.816908 46 -88 3.333174 2.695631 47 -88 3.356960 2.723859 48 -88 3.379783 2.628787 49 -88 3.402808 2.647096 50 -88 3.428915 2.700708 51 -88 3.444270 3.181595 52 -88 3.458244 2.859987 53 -88 3.478494 2.915651 54 -88 3.497191 2.713256 55 -88 3.518075 2.599628 56 -88 3.540542 2.790452 57 -88 3.566556 2.709570 58 -88 3.589283 2.771490 59 -88 3.602722 3.278457 60 -88 3.619978 2.830156 61 -88 3.638325 2.854537 62 -88 3.657476 2.793603 63 -88 3.679631 2.697696 64 -88 3.703590 2.762938 65 -88 3.727466 2.712960 66 -88 3.745456 3.692892 67 -88 3.748064 3.347654 68 -88 3.750900 3.030617 69 -88 3.755484 3.388665 70 -88 3.762478 3.467554 71 -88 3.770374 3.281453 72 -88 3.777671 3.195084 73 -88 3.787095 3.397655 74 -88 3.798812 3.370277 75 -88 3.810101 3.131244 76 -88 3.821003 3.046222 77 -88 3.833100 3.026280 78 -88 3.845849 3.057424 79 -88 3.860136 2.968211 80 -88 3.873366 2.800863 81 -88 3.887568 2.854024 82 -89 1.484473 1.485414 0 -89 1.503029 1.496327 1 -89 1.511821 1.486619 2 -89 1.526153 1.472042 3 -89 1.546210 1.452645 4 -89 1.572561 1.428239 5 -89 1.606086 1.398559 6 -89 1.648042 1.363295 7 -89 1.700217 1.322107 8 -89 1.765159 1.274662 9 -89 1.846536 1.220793 10 -89 1.949745 1.161211 11 -89 2.082436 1.101049 12 -89 2.251658 1.074984 13 -89 2.434821 1.226382 14 -89 2.633174 1.110897 15 -89 2.657852 2.634337 16 -89 2.664670 2.596455 17 -89 2.675898 2.567191 18 -89 2.691544 2.547097 19 -89 2.711661 2.530275 20 -89 2.736306 2.513183 21 -89 2.765289 2.495758 22 -89 2.797433 2.496293 23 -89 2.820357 2.716173 24 -89 2.834279 2.557012 25 -89 2.856257 2.589364 26 -89 2.880800 2.500440 27 -89 2.910011 2.469739 28 -89 2.939749 2.421248 29 -89 2.969288 2.572103 30 -89 2.976496 2.645114 31 -89 2.993098 2.618427 32 -89 3.009769 2.346523 33 -89 3.030318 2.147238 34 -89 3.049014 1.879703 35 -89 3.071649 1.804918 36 -89 3.092804 1.945760 37 -89 3.117475 2.292485 38 -89 3.130524 2.942291 39 -89 3.144855 2.552588 40 -89 3.158876 2.594932 41 -89 3.177227 2.558004 42 -89 3.199080 2.672395 43 -89 3.222313 2.554655 44 -89 3.246013 2.549620 45 -89 3.270524 2.620178 46 -89 3.286344 3.071889 47 -89 3.297213 2.691936 48 -89 3.314183 2.907095 49 -89 3.332872 2.740606 50 -89 3.354211 2.699587 51 -89 3.374899 2.629253 52 -89 3.395968 2.599783 53 -89 3.421335 2.752635 54 -89 3.441316 3.121894 55 -89 3.450826 2.845337 56 -89 3.468505 2.816899 57 -89 3.483962 2.852317 58 -89 3.505648 2.702228 59 -89 3.525246 2.725489 60 -89 3.548031 2.726824 61 -89 3.570456 2.640324 62 -89 3.592434 2.859283 63 -89 3.602412 3.170997 64 -89 3.618824 2.910632 65 -89 3.637514 3.021322 66 -89 3.656730 2.756641 67 -89 3.676552 2.591022 68 -89 3.697106 2.787620 69 -89 3.720128 2.627059 70 -89 3.740909 2.800585 71 -89 3.745524 3.714515 72 -89 3.748586 3.681988 73 -89 3.753420 3.647391 74 -89 3.759668 3.542449 75 -89 3.766103 3.235345 76 -89 3.772258 3.219117 77 -89 3.780765 3.364902 78 -89 3.790278 3.244288 79 -89 3.799398 3.171052 80 -89 3.810128 3.192147 81 -89 3.821098 2.998326 82 -89 3.831863 3.005045 83 -89 3.844292 2.932435 84 -89 3.855840 2.840718 85 -89 3.868881 2.963529 86 -89 3.882478 2.942606 87 -89 3.896439 3.011576 88 -90 1.484466 1.485400 0 -90 1.502633 1.496827 1 -90 1.510316 1.488321 2 -90 1.522855 1.475455 3 -90 1.540370 1.458360 4 -90 1.563273 1.436889 5 -90 1.592203 1.410828 6 -90 1.628090 1.379943 7 -90 1.672222 1.343959 8 -90 1.726355 1.302568 9 -90 1.792988 1.255513 10 -90 1.875681 1.202763 11 -90 1.979532 1.145366 12 -90 2.111485 1.089644 13 -90 2.276509 1.076001 14 -90 2.449922 1.222515 15 -90 2.645437 1.132908 16 -90 2.657659 2.601431 17 -90 2.663786 2.539442 18 -90 2.673729 2.518359 19 -90 2.687499 2.514114 20 -90 2.705176 2.512406 21 -90 2.726882 2.505938 22 -90 2.752568 2.495042 23 -90 2.781797 2.486229 24 -90 2.811542 2.552356 25 -90 2.822809 2.695919 26 -90 2.842550 2.593169 27 -90 2.861370 2.548926 28 -90 2.887254 2.504200 29 -90 2.913827 2.470636 30 -90 2.942953 2.404480 31 -90 2.969724 2.664563 32 -90 2.976353 2.616101 33 -90 2.991408 2.628641 34 -90 3.006620 2.332581 35 -90 3.025443 2.297438 36 -90 3.044174 1.838515 37 -90 3.063510 1.847009 38 -90 3.084516 1.919426 39 -90 3.106318 2.127123 40 -90 3.127176 2.832815 41 -90 3.134709 2.618190 42 -90 3.150240 2.709925 43 -90 3.164368 2.520451 44 -90 3.183718 2.648092 45 -90 3.202967 2.592531 46 -90 3.225456 2.603037 47 -90 3.249340 2.589781 48 -90 3.271024 2.540043 49 -90 3.285349 3.111982 50 -90 3.296317 2.760856 51 -90 3.311521 2.915352 52 -90 3.329114 2.745905 53 -90 3.348529 2.665459 54 -90 3.366053 2.669548 55 -90 3.388978 2.663230 56 -90 3.410706 2.627405 57 -90 3.432453 2.769049 58 -90 3.443423 3.200575 59 -90 3.457298 2.770416 60 -90 3.472013 2.971162 61 -90 3.490397 2.774933 62 -90 3.509295 2.666182 63 -90 3.527054 2.656465 64 -90 3.547421 2.745213 65 -90 3.572278 2.748860 66 -90 3.591989 2.831571 67 -90 3.601104 3.200295 68 -90 3.616970 2.872915 69 -90 3.632890 2.890019 70 -90 3.648029 2.650368 71 -90 3.668434 2.776302 72 -90 3.687596 2.718133 73 -90 3.709045 2.723540 74 -90 3.730170 2.538331 75 -90 3.745232 3.706249 76 -90 3.747378 3.486622 77 -90 3.749947 3.131680 78 -90 3.753439 3.362396 79 -90 3.758967 3.514769 80 -90 3.765841 3.462615 81 -90 3.772824 3.247974 82 -90 3.779782 3.261365 83 -90 3.788816 3.337808 84 -90 3.798528 3.072753 85 -90 3.806891 2.847591 86 -90 3.816710 2.912439 87 -90 3.826721 2.825359 88 -90 3.837716 2.965884 89 -90 3.850042 2.728620 90 -90 3.860517 2.503959 91 -90 3.872389 2.748902 92 -90 3.885516 2.769791 93 -90 3.898250 2.648708 94 -91 1.484469 1.485412 0 -91 1.502290 1.497261 1 -91 1.509011 1.489811 2 -91 1.519985 1.478470 3 -91 1.535290 1.463392 4 -91 1.555225 1.444490 5 -91 1.580260 1.421595 6 -91 1.611086 1.394525 7 -91 1.648620 1.363054 8 -91 1.694118 1.326937 9 -91 1.749293 1.285919 10 -91 1.816522 1.239799 11 -91 1.899153 1.188663 12 -91 2.001856 1.133781 13 -91 2.130819 1.082061 14 -91 2.289503 1.074899 15 -91 2.454614 1.209800 16 -91 2.643010 1.106437 17 -91 2.657362 2.623285 18 -91 2.662711 2.571273 19 -91 2.671458 2.544389 20 -91 2.683568 2.535029 21 -91 2.699141 2.528280 22 -91 2.718256 2.519311 23 -91 2.740921 2.507373 24 -91 2.767018 2.493570 25 -91 2.795715 2.490170 26 -91 2.817896 2.714459 27 -91 2.828133 2.565810 28 -91 2.846376 2.616296 29 -91 2.866558 2.512231 30 -91 2.890483 2.496583 31 -91 2.915418 2.425101 32 -91 2.943656 2.331009 33 -91 2.968214 2.469991 34 -91 2.974275 2.633227 35 -91 2.988189 2.534018 36 -91 3.000800 2.015936 37 -91 3.016447 2.075915 38 -91 3.032243 1.802979 39 -91 3.049980 2.043912 40 -91 3.070689 2.268257 41 -91 3.093044 2.287196 42 -91 3.116012 2.500948 43 -91 3.128651 3.010701 44 -91 3.140260 2.672879 45 -91 3.151836 2.744640 46 -91 3.169267 2.626713 47 -91 3.185113 2.637011 48 -91 3.204225 2.643164 49 -91 3.226891 2.650486 50 -91 3.247652 2.537361 51 -91 3.268889 2.598146 52 -91 3.284222 3.126531 53 -91 3.293679 2.776793 54 -91 3.307512 2.883815 55 -91 3.321655 2.709447 56 -91 3.340408 2.791681 57 -91 3.357826 2.656801 58 -91 3.377175 2.623657 59 -91 3.397048 2.622934 60 -91 3.417951 2.733438 61 -91 3.438852 3.073737 62 -91 3.445758 2.897621 63 -91 3.460858 2.825141 64 -91 3.472880 2.779118 65 -91 3.490023 2.744900 66 -91 3.508040 2.727816 67 -91 3.525119 2.718134 68 -91 3.547205 2.681090 69 -91 3.566385 2.583247 70 -91 3.586520 2.743492 71 -91 3.598332 3.294340 72 -91 3.609844 2.735947 73 -91 3.625097 2.902694 74 -91 3.638693 2.464547 75 -91 3.654964 2.597958 76 -91 3.673723 2.668712 77 -91 3.692369 2.458433 78 -91 3.710861 2.324165 79 -91 3.731901 2.196819 80 -91 3.745118 3.564562 81 -91 3.746670 2.698480 82 -91 3.748464 2.727059 83 -91 3.751927 3.310966 84 -91 3.756972 3.419446 85 -91 3.762953 3.219307 86 -91 3.768540 2.829874 87 -91 3.774518 3.036979 88 -91 3.782458 3.099723 89 -91 3.790080 2.832006 90 -91 3.797797 3.036697 91 -91 3.807795 3.086977 92 -91 3.817169 2.685391 93 -91 3.825839 2.731418 94 -91 3.836137 2.822122 95 -91 3.846502 2.859976 96 -91 3.857706 2.928427 97 -91 3.869320 3.004121 98 -91 3.882116 2.994742 99 -91 3.894015 2.812139 100 -92 1.484477 1.485446 0 -92 1.501992 1.497630 1 -92 1.507861 1.491109 2 -92 1.517470 1.481112 3 -92 1.530859 1.467820 4 -92 1.548243 1.451182 5 -92 1.569960 1.431053 6 -92 1.596523 1.407304 7 -92 1.628614 1.379761 8 -92 1.667106 1.348215 9 -92 1.713216 1.312460 10 -92 1.768560 1.272280 11 -92 1.835333 1.227523 12 -92 1.916607 1.178353 13 -92 2.016584 1.126122 14 -92 2.140640 1.077564 15 -92 2.291530 1.070304 16 -92 2.449360 1.192781 17 -92 2.626567 1.068788 18 -92 2.657085 2.647079 19 -92 2.661665 2.627842 20 -92 2.669265 2.606091 21 -92 2.679897 2.585919 22 -92 2.693585 2.568660 23 -92 2.710392 2.550851 24 -92 2.730355 2.531007 25 -92 2.753457 2.509722 26 -92 2.779395 2.489100 27 -92 2.806613 2.502422 28 -92 2.819159 2.737812 29 -92 2.833858 2.572987 30 -92 2.848526 2.554356 31 -92 2.869743 2.469991 32 -92 2.890701 2.395886 33 -92 2.914333 2.193785 34 -92 2.938434 1.888275 35 -92 2.959040 1.676603 36 -92 2.971358 2.721577 37 -92 2.979702 2.035481 38 -92 2.988975 2.388582 39 -92 3.004764 2.425033 40 -92 3.019373 2.425042 41 -92 3.037598 2.454746 42 -92 3.056858 2.535112 43 -92 3.079248 2.481366 44 -92 3.100616 2.508369 45 -92 3.122555 2.657983 46 -92 3.129058 2.957829 47 -92 3.142573 2.864893 48 -92 3.154220 2.660920 49 -92 3.169633 2.672915 50 -92 3.184510 2.681995 51 -92 3.204805 2.667881 52 -92 3.223569 2.609172 53 -92 3.243568 2.587078 54 -92 3.264976 2.571309 55 -92 3.281813 2.930935 56 -92 3.287602 2.877408 57 -92 3.302121 2.961415 58 -92 3.314625 2.742415 59 -92 3.331421 2.745139 60 -92 3.345990 2.604469 61 -92 3.362804 2.660199 62 -92 3.383361 2.695777 63 -92 3.402234 2.582582 64 -92 3.422501 2.593926 65 -92 3.438780 3.049901 66 -92 3.445119 2.750709 67 -92 3.458931 2.840109 68 -92 3.470899 2.714017 69 -92 3.486585 2.451078 70 -92 3.501277 2.659454 71 -92 3.519196 2.515986 72 -92 3.537679 2.211121 73 -92 3.553649 1.917597 74 -92 3.570735 2.135006 75 -92 3.588400 2.150853 76 -92 3.597376 3.125482 77 -92 3.608946 2.445915 78 -92 3.621636 2.539038 79 -92 3.633256 2.296641 80 -92 3.649136 2.604502 81 -92 3.666370 2.673065 82 -92 3.682492 2.603058 83 -92 3.701865 2.551136 84 -92 3.718925 2.653226 85 -92 3.739459 2.826113 86 -92 3.745152 3.730927 87 -92 3.747235 3.702350 88 -92 3.750562 3.654324 89 -92 3.754812 3.498158 90 -92 3.758921 3.140107 91 -92 3.763236 3.294950 92 -92 3.769579 3.442539 93 -92 3.776640 3.244894 94 -92 3.782567 3.049866 95 -92 3.789788 3.309376 96 -92 3.798617 3.295307 97 -92 3.806983 3.158226 98 -92 3.815831 3.141717 99 -92 3.824920 2.997768 100 -92 3.833797 3.084407 101 -92 3.844386 3.167037 102 -92 3.855057 3.154790 103 -92 3.866602 3.154301 104 -92 3.877850 3.021818 105 -92 3.888822 3.121122 106 -93 1.484487 1.485498 0 -93 1.501737 1.497953 1 -93 1.506866 1.492246 2 -93 1.515283 1.483445 3 -93 1.527000 1.471724 4 -93 1.542169 1.457062 5 -93 1.561044 1.439361 6 -93 1.584008 1.418513 7 -93 1.611548 1.394379 8 -93 1.644314 1.366805 9 -93 1.683145 1.335611 10 -93 1.729177 1.300620 11 -93 1.783876 1.261641 12 -93 1.849255 1.218573 13 -93 1.928041 1.171605 14 -93 2.023935 1.122017 15 -93 2.141569 1.075707 16 -93 2.283607 1.063253 17 -93 2.434739 1.170139 18 -93 2.597576 1.070730 19 -93 2.656873 2.652341 20 -93 2.660843 2.643217 21 -93 2.667454 2.629910 22 -93 2.676733 2.613573 23 -93 2.688720 2.594718 24 -93 2.703429 2.573562 25 -93 2.720945 2.549023 26 -93 2.741230 2.519570 27 -93 2.764163 2.482504 28 -93 2.789266 2.434576 29 -93 2.813245 2.506538 30 -93 2.820139 2.602629 31 -93 2.835592 2.489057 32 -93 2.849086 2.205305 33 -93 2.866919 1.918822 34 -93 2.882258 1.708473 35 -93 2.900018 1.847680 36 -93 2.921585 2.163623 37 -93 2.944652 2.328675 38 -93 2.968304 2.618078 39 -93 2.972786 2.711172 40 -93 2.984003 2.786091 41 -93 2.996870 2.624100 42 -93 3.010667 2.657296 43 -93 3.027704 2.565370 44 -93 3.044380 2.603138 45 -93 3.065080 2.567441 46 -93 3.085402 2.529383 47 -93 3.105835 2.542466 48 -93 3.125585 2.927882 49 -93 3.130829 2.758745 50 -93 3.142396 2.861857 51 -93 3.153956 2.628793 52 -93 3.168104 2.754957 53 -93 3.183391 2.628888 54 -93 3.200693 2.661287 55 -93 3.218716 2.606700 56 -93 3.237343 2.473919 57 -93 3.255802 2.561476 58 -93 3.276271 2.630800 59 -93 3.284090 3.110549 60 -93 3.295687 2.677341 61 -93 3.304507 2.636341 62 -93 3.318570 2.535997 63 -93 3.332529 2.497234 64 -93 3.346545 2.252944 65 -93 3.363317 2.179217 66 -93 3.378438 1.964433 67 -93 3.394038 1.850113 68 -93 3.410132 2.158057 69 -93 3.429861 2.436813 70 -93 3.439795 3.093259 71 -93 3.447767 2.368975 72 -93 3.459081 2.827491 73 -93 3.470776 2.613320 74 -93 3.486356 2.744019 75 -93 3.500385 2.709364 76 -93 3.517450 2.704143 77 -93 3.534808 2.573279 78 -93 3.550715 2.693478 79 -93 3.570652 2.671155 80 -93 3.588071 2.679547 81 -93 3.596493 3.308901 82 -93 3.606875 2.796709 83 -93 3.618540 3.030954 84 -93 3.631579 2.909247 85 -93 3.648799 2.846828 86 -93 3.662276 2.806750 87 -93 3.679725 2.802960 88 -93 3.697509 2.697106 89 -93 3.713436 2.609290 90 -93 3.730723 2.816357 91 -93 3.745004 3.730601 92 -93 3.746653 3.656284 93 -93 3.748889 3.340245 94 -93 3.751134 3.260413 95 -93 3.754710 3.521810 96 -93 3.759668 3.572018 97 -93 3.765333 3.474084 98 -93 3.770691 3.276254 99 -93 3.776338 3.360325 100 -93 3.783647 3.403448 101 -93 3.791021 3.170331 102 -93 3.797536 3.105109 103 -93 3.805481 3.209296 104 -93 3.813620 3.171227 105 -93 3.822399 3.262333 106 -93 3.832313 3.186935 107 -93 3.841216 3.064308 108 -93 3.851076 3.155775 109 -93 3.861520 3.022185 110 -93 3.871066 2.982544 111 -93 3.881636 3.105167 112 -93 3.893105 3.164286 113 -94 1.484456 1.485298 0 -94 1.501511 1.498226 1 -94 1.505997 1.493237 2 -94 1.513371 1.485487 3 -94 1.523626 1.475150 4 -94 1.536881 1.462229 5 -94 1.553320 1.446656 6 -94 1.573215 1.428336 7 -94 1.596940 1.407175 8 -94 1.624951 1.383040 9 -94 1.657873 1.355802 10 -94 1.696479 1.325305 11 -94 1.741802 1.291392 12 -94 1.795157 1.253900 13 -94 1.858317 1.212755 14 -94 1.933697 1.168142 15 -94 2.024443 1.121145 16 -94 2.134560 1.076442 17 -94 2.266819 1.056372 18 -94 2.411240 1.138620 19 -94 2.559602 1.098925 20 -94 2.656702 2.653362 21 -94 2.660150 2.646694 22 -94 2.665911 2.635787 23 -94 2.674001 2.620476 24 -94 2.684447 2.599858 25 -94 2.697272 2.572331 26 -94 2.712483 2.532217 27 -94 2.729990 2.465739 28 -94 2.749567 2.327917 29 -94 2.770142 1.993504 30 -94 2.788840 1.563470 31 -94 2.806448 1.784706 32 -94 2.817117 2.640908 33 -94 2.827818 2.337391 34 -94 2.839198 2.483180 35 -94 2.856488 2.463210 36 -94 2.873254 2.495298 37 -94 2.893778 2.473564 38 -94 2.915580 2.485337 39 -94 2.938330 2.470733 40 -94 2.962827 2.520594 41 -94 2.970825 2.905114 42 -94 2.980449 2.787141 43 -94 2.989612 2.635655 44 -94 3.002955 2.727137 45 -94 3.018003 2.577928 46 -94 3.032753 2.606662 47 -94 3.050648 2.568845 48 -94 3.069696 2.521839 49 -94 3.087896 2.458326 50 -94 3.109080 2.481488 51 -94 3.125515 2.872478 52 -94 3.130077 2.566747 53 -94 3.140246 2.775703 54 -94 3.151088 2.364284 55 -94 3.163062 2.502781 56 -94 3.176778 2.172274 57 -94 3.190459 1.849362 58 -94 3.202949 2.012308 59 -94 3.219537 2.050614 60 -94 3.235039 2.144034 61 -94 3.252166 2.354460 62 -94 3.270489 2.431813 63 -94 3.282402 3.138012 64 -94 3.289823 2.719960 65 -94 3.299658 2.898421 66 -94 3.311657 2.608066 67 -94 3.324100 2.728553 68 -94 3.336822 2.648532 69 -94 3.353508 2.773371 70 -94 3.370213 2.676701 71 -94 3.385977 2.579926 72 -94 3.403773 2.626009 73 -94 3.420809 2.639290 74 -94 3.436977 3.022010 75 -94 3.441749 2.950218 76 -94 3.454049 2.972723 77 -94 3.463121 2.795425 78 -94 3.477562 2.892635 79 -94 3.491606 2.866416 80 -94 3.505977 2.632245 81 -94 3.521075 2.690580 82 -94 3.536176 2.719681 83 -94 3.553787 2.712295 84 -94 3.571209 2.723309 85 -94 3.589442 2.901349 86 -94 3.596364 3.296987 87 -94 3.606742 2.708847 88 -94 3.616321 3.031355 89 -94 3.628902 2.817503 90 -94 3.643619 2.891441 91 -94 3.656793 2.778302 92 -94 3.672291 2.727114 93 -94 3.687636 2.684902 94 -94 3.704222 2.838662 95 -94 3.721928 2.622553 96 -94 3.738123 2.727740 97 -94 3.744977 3.736649 98 -94 3.746576 3.715616 99 -94 3.749139 3.674123 100 -94 3.752463 3.543644 101 -94 3.755824 3.234951 102 -94 3.759283 3.304269 103 -94 3.764237 3.464938 104 -94 3.770082 3.360027 105 -94 3.775427 3.032674 106 -94 3.780759 3.118168 107 -94 3.787471 3.110688 108 -94 3.793593 2.993783 109 -94 3.800624 3.255326 110 -94 3.809223 3.232361 111 -94 3.816954 2.986548 112 -94 3.824747 3.073571 113 -94 3.833755 3.077157 114 -94 3.842682 3.028506 115 -94 3.852326 2.930512 116 -94 3.861455 2.638498 117 -94 3.870302 2.564133 118 -94 3.879635 2.687944 119 -94 3.890180 2.757808 120 -95 1.484463 1.485375 0 -95 1.501320 1.498464 1 -95 1.505246 1.494111 2 -95 1.511700 1.487286 3 -95 1.520689 1.478180 4 -95 1.532273 1.466785 5 -95 1.546605 1.453075 6 -95 1.563888 1.436977 7 -95 1.584381 1.418404 8 -95 1.608440 1.397266 9 -95 1.636497 1.373452 10 -95 1.669121 1.346849 11 -95 1.707004 1.317313 12 -95 1.751066 1.284712 13 -95 1.802475 1.248913 14 -95 1.862781 1.209854 15 -95 1.934027 1.167683 16 -95 2.018893 1.123236 17 -95 2.120725 1.079898 18 -95 2.242471 1.052433 19 -95 2.379176 1.100857 20 -95 2.516236 1.133449 21 -95 2.656548 2.651360 22 -95 2.659511 2.637144 23 -95 2.664448 2.607925 24 -95 2.671325 2.545145 25 -95 2.679965 2.394757 26 -95 2.689810 2.029752 27 -95 2.699529 1.644641 28 -95 2.710213 1.854675 29 -95 2.724471 2.208233 30 -95 2.741866 2.368040 31 -95 2.761744 2.428731 32 -95 2.783786 2.452939 33 -95 2.806764 2.492869 34 -95 2.816708 2.757568 35 -95 2.828152 2.623547 36 -95 2.838595 2.585325 37 -95 2.855352 2.578414 38 -95 2.870860 2.530548 39 -95 2.890491 2.503009 40 -95 2.910040 2.475316 41 -95 2.931674 2.411755 42 -95 2.954192 2.375054 43 -95 2.969609 2.859390 44 -95 2.974842 2.453015 45 -95 2.982214 2.637061 46 -95 2.994738 2.444946 47 -95 3.004705 2.067438 48 -95 3.017491 1.981479 49 -95 3.029604 1.890612 50 -95 3.043292 1.959695 51 -95 3.058791 2.290689 52 -95 3.076116 2.299367 53 -95 3.093833 2.413486 54 -95 3.112957 2.507261 55 -95 3.125864 3.043836 56 -95 3.132483 2.655640 57 -95 3.139791 2.793868 58 -95 3.151456 2.696287 59 -95 3.162446 2.761712 60 -95 3.177407 2.662115 61 -95 3.190628 2.660761 62 -95 3.206097 2.602697 63 -95 3.221930 2.592205 64 -95 3.238227 2.637673 65 -95 3.257662 2.607873 66 -95 3.274489 2.575090 67 -95 3.282330 3.154319 68 -95 3.290370 2.776730 69 -95 3.298408 2.945241 70 -95 3.311909 2.794965 71 -95 3.322609 2.766427 72 -95 3.336195 2.702393 73 -95 3.350701 2.708667 74 -95 3.364614 2.636087 75 -95 3.380575 2.569333 76 -95 3.395580 2.631002 77 -95 3.413609 2.686528 78 -95 3.431111 2.548457 79 -95 3.438487 3.229104 80 -95 3.446730 2.683081 81 -95 3.455378 2.881757 82 -95 3.466198 2.592326 83 -95 3.478770 2.761712 84 -95 3.490870 2.569767 85 -95 3.505548 2.314323 86 -95 3.517615 2.248641 87 -95 3.532442 2.178307 88 -95 3.545838 1.852841 89 -95 3.560621 2.158179 90 -95 3.575833 2.247537 91 -95 3.590759 2.454815 92 -95 3.595694 3.030884 93 -95 3.606050 2.563377 94 -95 3.614454 2.826710 95 -95 3.626356 2.543091 96 -95 3.638103 2.804773 97 -95 3.651453 2.906541 98 -95 3.667322 2.680779 99 -95 3.681069 2.642510 100 -95 3.694896 2.641096 101 -95 3.710885 2.669266 102 -95 3.726669 2.705460 103 -95 3.743194 2.833853 104 -95 3.744968 3.701239 105 -95 3.746450 3.671808 106 -95 3.748804 3.655232 107 -95 3.751942 3.606647 108 -95 3.755564 3.412338 109 -95 3.758790 3.171825 110 -95 3.762629 3.428971 111 -95 3.767995 3.541038 112 -95 3.774011 3.449691 113 -95 3.779445 3.202099 114 -95 3.784873 3.267380 115 -95 3.791654 3.265919 116 -95 3.797903 3.060123 117 -95 3.804315 3.220795 118 -95 3.812172 3.256031 119 -95 3.819710 3.172696 120 -95 3.827678 3.217603 121 -95 3.836233 3.176162 122 -95 3.844737 3.156289 123 -95 3.853848 3.021185 124 -95 3.861759 2.919267 125 -95 3.870937 3.114806 126 -95 3.880865 3.035413 127 -95 3.889905 2.974287 128 -95 3.899300 3.078298 129 -96 1.484489 1.485484 0 -96 1.501152 1.498670 1 -96 1.504585 1.494866 2 -96 1.510244 1.488871 3 -96 1.518119 1.480842 4 -96 1.528259 1.470802 5 -96 1.540773 1.458730 6 -96 1.555801 1.444569 7 -96 1.573556 1.428259 8 -96 1.594287 1.409726 9 -96 1.618319 1.388888 10 -96 1.646040 1.365646 11 -96 1.677957 1.339899 12 -96 1.714708 1.311534 13 -96 1.757063 1.280421 14 -96 1.806068 1.246461 15 -96 1.863018 1.209589 16 -96 1.929642 1.169907 17 -96 2.008153 1.128004 18 -96 2.101372 1.086134 19 -96 2.212094 1.053243 20 -96 2.339237 1.067274 21 -96 2.469154 1.144184 22 -96 2.620602 1.026422 23 -96 2.656463 2.652441 24 -96 2.659178 2.643814 25 -96 2.663710 2.631991 26 -96 2.670063 2.618799 27 -96 2.678247 2.604814 28 -96 2.688281 2.590373 29 -96 2.700215 2.574776 30 -96 2.714050 2.557401 31 -96 2.729850 2.536768 32 -96 2.747570 2.511854 33 -96 2.767153 2.479372 34 -96 2.788273 2.434656 35 -96 2.809472 2.416992 36 -96 2.816428 2.713926 37 -96 2.827520 2.525429 38 -96 2.836873 2.283110 39 -96 2.850863 2.092481 40 -96 2.862417 1.762240 41 -96 2.876145 1.761753 42 -96 2.891202 2.097632 43 -96 2.908575 2.261437 44 -96 2.928836 2.365741 45 -96 2.949154 2.430489 46 -96 2.968478 2.756784 47 -96 2.971614 2.658614 48 -96 2.979382 2.821628 49 -96 2.990266 2.708378 50 -96 2.999996 2.648046 51 -96 3.013503 2.647943 52 -96 3.025795 2.588700 53 -96 3.041721 2.626888 54 -96 3.057223 2.546542 55 -96 3.073686 2.536091 56 -96 3.091334 2.564449 57 -96 3.110266 2.490758 58 -96 3.124630 2.903346 59 -96 3.128189 2.722081 60 -96 3.136694 2.922598 61 -96 3.147035 2.672406 62 -96 3.156627 2.746881 63 -96 3.169737 2.581173 64 -96 3.181298 2.535489 65 -96 3.194182 2.491465 66 -96 3.209858 2.463506 67 -96 3.223757 2.117342 68 -96 3.237730 1.993109 69 -96 3.252765 1.878821 70 -96 3.266651 1.913170 71 -96 3.280150 2.451662 72 -96 3.283277 2.504294 73 -96 3.292480 2.786642 74 -96 3.300281 2.551651 75 -96 3.311961 2.746750 76 -96 3.322504 2.610565 77 -96 3.335278 2.486747 78 -96 3.346357 2.651172 79 -96 3.361220 2.666060 80 -96 3.376106 2.631319 81 -96 3.390942 2.631693 82 -96 3.406173 2.563760 83 -96 3.422394 2.651867 84 -96 3.436229 2.982531 85 -96 3.439884 2.902254 86 -96 3.449730 2.987201 87 -96 3.457333 2.871366 88 -96 3.470740 2.958206 89 -96 3.481276 2.795897 90 -96 3.494172 2.745205 91 -96 3.507257 2.723741 92 -96 3.519467 2.667627 93 -96 3.533918 2.696940 94 -96 3.549432 2.807013 95 -96 3.565836 2.663468 96 -96 3.579721 2.650653 97 -96 3.592971 3.317671 98 -96 3.597825 2.908640 99 -96 3.607925 3.066518 100 -96 3.616253 2.870748 101 -96 3.628724 2.822493 102 -96 3.639144 2.883123 103 -96 3.651668 2.754617 104 -96 3.665569 2.778806 105 -96 3.677799 2.750824 106 -96 3.693064 2.888788 107 -96 3.709743 2.676726 108 -96 3.723404 2.607727 109 -96 3.737516 2.627200 110 -96 3.744857 3.738031 111 -96 3.746087 3.717225 112 -96 3.748063 3.663514 113 -96 3.750563 3.466418 114 -96 3.752908 3.160340 115 -96 3.755691 3.400277 116 -96 3.759760 3.534616 117 -96 3.764494 3.462613 118 -96 3.768961 3.182341 119 -96 3.773143 3.255257 120 -96 3.778792 3.415858 121 -96 3.784982 3.277456 122 -96 3.790434 3.078331 123 -96 3.796390 3.162111 124 -96 3.802889 3.103087 125 -96 3.809325 3.179242 126 -96 3.817092 3.230467 127 -96 3.824683 2.901916 128 -96 3.831246 2.798405 129 -96 3.838853 2.844045 130 -96 3.846389 2.872283 131 -96 3.854904 2.979583 132 -96 3.863645 2.824792 133 -96 3.872049 2.689100 134 -96 3.880538 2.566531 135 -96 3.889041 2.499743 136 -96 3.897332 2.534095 137 -97 1.484468 1.485370 0 -97 1.501008 1.498848 1 -97 1.504009 1.495524 2 -97 1.508968 1.490256 3 -97 1.515869 1.483175 4 -97 1.524747 1.474325 5 -97 1.535680 1.463690 6 -97 1.548785 1.451234 7 -97 1.564196 1.436899 8 -97 1.582110 1.420634 9 -97 1.602769 1.402383 10 -97 1.626445 1.382055 11 -97 1.653520 1.359587 12 -97 1.684415 1.334875 13 -97 1.719680 1.307822 14 -97 1.760001 1.278327 15 -97 1.806248 1.246294 16 -97 1.859521 1.211665 17 -97 1.921220 1.174491 18 -97 1.993196 1.135153 19 -97 2.077720 1.095039 20 -97 2.177327 1.059186 21 -97 2.293070 1.047902 22 -97 2.417251 1.111751 23 -97 2.546381 1.079393 24 -97 2.656337 2.653782 25 -97 2.658668 2.648241 26 -97 2.662572 2.638365 27 -97 2.668068 2.622956 28 -97 2.675102 2.599244 29 -97 2.683715 2.560785 30 -97 2.693825 2.485553 31 -97 2.705274 2.312128 32 -97 2.717251 1.909119 33 -97 2.728304 1.592037 34 -97 2.740573 1.895903 35 -97 2.756477 2.234780 36 -97 2.774940 2.371432 37 -97 2.795115 2.429678 38 -97 2.813545 2.654383 39 -97 2.817690 2.610087 40 -97 2.828088 2.686123 41 -97 2.839725 2.556076 42 -97 2.852008 2.595347 43 -97 2.867267 2.528470 44 -97 2.882976 2.533958 45 -97 2.900190 2.482613 46 -97 2.919112 2.461379 47 -97 2.937926 2.419128 48 -97 2.958346 2.351346 49 -97 2.969200 2.913813 50 -97 2.974999 2.625903 51 -97 2.980624 2.519117 52 -97 2.990665 2.552733 53 -97 2.999954 2.089613 54 -97 3.010395 2.162937 55 -97 3.021205 1.779720 56 -97 3.032428 2.007310 57 -97 3.045121 2.192517 58 -97 3.059595 2.265023 59 -97 3.074119 2.431062 60 -97 3.091448 2.446984 61 -97 3.107878 2.459423 62 -97 3.123281 2.707903 63 -97 3.126327 2.891600 64 -97 3.134552 2.970131 65 -97 3.143780 2.714454 66 -97 3.152402 2.753275 67 -97 3.163188 2.627502 68 -97 3.174363 2.746346 69 -97 3.187487 2.642690 70 -97 3.200783 2.666653 71 -97 3.214637 2.612710 72 -97 3.229100 2.548223 73 -97 3.243631 2.631390 74 -97 3.260632 2.615895 75 -97 3.276336 2.589395 76 -97 3.281553 3.149800 77 -97 3.289159 2.861802 78 -97 3.295353 2.858652 79 -97 3.306802 2.833198 80 -97 3.315338 2.735061 81 -97 3.327792 2.730843 82 -97 3.339009 2.719527 83 -97 3.351787 2.631490 84 -97 3.365157 2.522012 85 -97 3.376871 2.551506 86 -97 3.392389 2.594267 87 -97 3.407504 2.410754 88 -97 3.421374 2.256308 89 -97 3.434030 2.253047 90 -97 3.437953 3.029688 91 -97 3.447019 2.685021 92 -97 3.453473 2.379766 93 -97 3.463464 2.111363 94 -97 3.471818 2.320841 95 -97 3.482296 2.234507 96 -97 3.493798 2.201602 97 -97 3.503702 2.463785 98 -97 3.517391 2.528217 99 -97 3.530357 2.556051 100 -97 3.544266 2.593872 101 -97 3.557698 2.471483 102 -97 3.571427 2.512529 103 -97 3.585406 2.762160 104 -97 3.593506 3.456675 105 -97 3.601515 2.941049 106 -97 3.608973 3.067223 107 -97 3.618507 2.701000 108 -97 3.629146 3.005523 109 -97 3.639826 2.761437 110 -97 3.651636 2.759730 111 -97 3.663937 2.808796 112 -97 3.676008 2.759689 113 -97 3.690051 2.740760 114 -97 3.703955 2.736356 115 -97 3.716789 2.660135 116 -97 3.731766 2.883736 117 -97 3.744785 3.731051 118 -97 3.745768 3.654760 119 -97 3.747120 3.346319 120 -97 3.748497 3.274965 121 -97 3.750699 3.527252 122 -97 3.753776 3.590508 123 -97 3.757410 3.527782 124 -97 3.761047 3.272768 125 -97 3.764338 3.246144 126 -97 3.768714 3.432153 127 -97 3.773825 3.344886 128 -97 3.778322 3.116668 129 -97 3.783062 3.296934 130 -97 3.789114 3.327133 131 -97 3.794716 3.127019 132 -97 3.800225 3.235061 133 -97 3.807001 3.261140 134 -97 3.813295 3.134911 135 -97 3.819912 3.244480 136 -97 3.827489 3.205533 137 -97 3.834431 3.073038 138 -97 3.841596 3.129902 139 -97 3.849354 3.197355 140 -97 3.857852 3.241992 141 -97 3.866623 3.061630 142 -97 3.873986 2.899451 143 -97 3.882075 2.992113 144 -97 3.890359 3.027082 145 -97 3.899104 3.118693 146 -98 1.484451 1.485295 0 -98 1.500875 1.498995 1 -98 1.503507 1.496098 2 -98 1.507853 1.491470 3 -98 1.513904 1.485233 4 -98 1.521684 1.477432 5 -98 1.531254 1.468070 6 -98 1.542675 1.457091 7 -98 1.556086 1.444495 8 -98 1.571607 1.430212 9 -98 1.589423 1.414206 10 -98 1.609740 1.396415 11 -98 1.632824 1.376780 12 -98 1.658972 1.355220 13 -98 1.688575 1.331664 14 -98 1.722116 1.306032 15 -98 1.760148 1.278225 16 -98 1.803410 1.248165 17 -98 1.852821 1.215797 18 -98 1.909496 1.181127 19 -98 1.974940 1.144378 20 -98 2.050960 1.106345 21 -98 2.139752 1.069701 22 -98 2.243089 1.044205 23 -98 2.358897 1.064779 24 -98 2.477120 1.119239 25 -98 2.615944 1.009812 26 -98 2.656260 2.653605 27 -98 2.658356 2.648122 28 -98 2.661858 2.639881 29 -98 2.666771 2.629918 30 -98 2.673085 2.618616 31 -98 2.680836 2.606567 32 -98 2.690059 2.593158 33 -98 2.700733 2.577617 34 -98 2.712911 2.559825 35 -98 2.726604 2.537432 36 -98 2.741801 2.508783 37 -98 2.758442 2.465509 38 -98 2.776351 2.388897 39 -98 2.794971 2.221173 40 -98 2.811764 2.057478 41 -98 2.815650 2.428539 42 -98 2.824373 2.104500 43 -98 2.830779 1.803262 44 -98 2.841648 2.127054 45 -98 2.851605 2.227064 46 -98 2.865768 2.378783 47 -98 2.879344 2.434945 48 -98 2.895726 2.446823 49 -98 2.912568 2.473167 50 -98 2.930410 2.458216 51 -98 2.949892 2.469910 52 -98 2.967121 2.634092 53 -98 2.969834 2.810910 54 -98 2.976516 2.866639 55 -98 2.985657 2.738088 56 -98 2.993135 2.621369 57 -98 3.003906 2.699370 58 -98 3.014848 2.609805 59 -98 3.027536 2.621787 60 -98 3.039829 2.521753 61 -98 3.053928 2.567434 62 -98 3.068694 2.472414 63 -98 3.083522 2.381038 64 -98 3.098713 2.364433 65 -98 3.114908 2.092958 66 -98 3.124605 2.900018 67 -98 3.128392 2.170473 68 -98 3.134070 2.582144 69 -98 3.142597 2.075512 70 -98 3.149284 2.196281 71 -98 3.158832 2.054523 72 -98 3.167760 2.412072 73 -98 3.179195 2.434663 74 -98 3.191161 2.442685 75 -98 3.201903 2.452850 76 -98 3.215924 2.579236 77 -98 3.229788 2.554233 78 -98 3.243666 2.531917 79 -98 3.258747 2.530081 80 -98 3.272451 2.577468 81 -98 3.280846 3.210523 82 -98 3.287057 2.855617 83 -98 3.292549 2.929142 84 -98 3.303095 2.874061 85 -98 3.310939 2.717481 86 -98 3.321033 2.673980 87 -98 3.331279 2.819391 88 -98 3.343327 2.690976 89 -98 3.355589 2.735431 90 -98 3.367903 2.657123 91 -98 3.380815 2.650163 92 -98 3.395110 2.639730 93 -98 3.407544 2.559815 94 -98 3.422037 2.683667 95 -98 3.435612 3.071892 96 -98 3.438663 2.953647 97 -98 3.446958 3.096899 98 -98 3.453982 2.795211 99 -98 3.464110 2.850472 100 -98 3.471663 2.677402 101 -98 3.483126 2.797019 102 -98 3.493957 2.827813 103 -98 3.505858 2.676083 104 -98 3.517662 2.610802 105 -98 3.529920 2.717098 106 -98 3.543200 2.488977 107 -98 3.555849 2.503756 108 -98 3.569422 2.354261 109 -98 3.581544 2.358459 110 -98 3.592270 3.198984 111 -98 3.596039 2.558636 112 -98 3.604528 2.995191 113 -98 3.612191 2.253190 114 -98 3.620913 2.002777 115 -98 3.628409 2.369432 116 -98 3.639113 2.388774 117 -98 3.650191 2.335880 118 -98 3.659921 2.515245 119 -98 3.672438 2.363415 120 -98 3.683527 2.443363 121 -98 3.695917 2.545067 122 -98 3.708339 2.633164 123 -98 3.722508 2.631567 124 -98 3.735983 2.599803 125 -98 3.744753 3.729575 126 -98 3.745644 3.644942 127 -98 3.746873 3.302444 128 -98 3.748094 3.199312 129 -98 3.750032 3.523734 130 -98 3.752788 3.620367 131 -98 3.756143 3.620293 132 -98 3.759875 3.528133 133 -98 3.763391 3.315909 134 -98 3.766870 3.368692 135 -98 3.771433 3.477225 136 -98 3.776498 3.318423 137 -98 3.780646 3.009982 138 -98 3.785138 3.272749 139 -98 3.790940 3.310249 140 -98 3.796313 3.131691 141 -98 3.801696 3.176972 142 -98 3.807752 3.133834 143 -98 3.813464 3.116792 144 -98 3.819978 3.198422 145 -98 3.826574 3.084222 146 -98 3.832949 3.142143 147 -98 3.840325 3.163373 148 -98 3.847298 3.086622 149 -98 3.854715 3.155143 150 -98 3.862467 3.080068 151 -98 3.869873 3.103696 152 -98 3.878171 3.184872 153 -98 3.886820 3.132447 154 -98 3.894921 2.875883 155 -99 1.484462 1.485420 0 -99 1.500769 1.499132 1 -99 1.503073 1.496601 2 -99 1.506874 1.492534 3 -99 1.512184 1.487047 4 -99 1.519005 1.480171 5 -99 1.527382 1.471919 6 -99 1.537362 1.462255 7 -99 1.549042 1.451171 8 -99 1.562519 1.438624 9 -99 1.577928 1.424576 10 -99 1.595419 1.408985 11 -99 1.615188 1.391805 12 -99 1.637453 1.372976 13 -99 1.662492 1.352444 14 -99 1.690611 1.330128 15 -99 1.722238 1.305974 16 -99 1.757832 1.279894 17 -99 1.798002 1.251819 18 -99 1.843487 1.221691 19 -99 1.895190 1.189494 20 -99 1.954285 1.155336 21 -99 2.022222 1.119647 22 -99 2.100777 1.083767 23 -99 2.191749 1.052143 24 -99 2.295846 1.040649 25 -99 2.407828 1.086995 26 -99 2.523373 1.080537 27 -99 2.656141 2.644940 28 -99 2.657877 2.596867 29 -99 2.660694 2.476891 30 -99 2.664405 2.153132 31 -99 2.668418 1.724288 32 -99 2.672939 1.821646 33 -99 2.679073 2.167651 34 -99 2.686856 2.365851 35 -99 2.696086 2.456800 36 -99 2.706720 2.491075 37 -99 2.718741 2.507418 38 -99 2.732133 2.511843 39 -99 2.746955 2.505496 40 -99 2.763107 2.494633 41 -99 2.780526 2.481845 42 -99 2.798920 2.469836 43 -99 2.813712 2.737364 44 -99 2.817812 2.557413 45 -99 2.825317 2.676421 46 -99 2.836215 2.552757 47 -99 2.845555 2.517303 48 -99 2.858804 2.420226 49 -99 2.870670 2.289847 50 -99 2.884349 1.954623 51 -99 2.896825 1.698946 52 -99 2.908902 1.751218 53 -99 2.923710 2.058822 54 -99 2.940177 2.289945 55 -99 2.957319 2.371979 56 -99 2.968624 2.935458 57 -99 2.973318 2.745100 58 -99 2.977804 2.645636 59 -99 2.985770 2.770864 60 -99 2.994664 2.622775 61 -99 3.003460 2.690663 62 -99 3.015354 2.625385 63 -99 3.025398 2.591991 64 -99 3.038243 2.610134 65 -99 3.051107 2.585874 66 -99 3.064713 2.522263 67 -99 3.078534 2.567508 68 -99 3.094150 2.517380 69 -99 3.109026 2.489206 70 -99 3.122830 2.686667 71 -99 3.125353 2.923691 72 -99 3.132006 2.988888 73 -99 3.140012 2.718709 74 -99 3.146604 2.706164 75 -99 3.156069 2.586490 76 -99 3.164602 2.661800 77 -99 3.175986 2.515403 78 -99 3.186157 2.474318 79 -99 3.197443 2.211682 80 -99 3.208308 2.028517 81 -99 3.219343 2.047360 82 -99 3.231216 1.757486 83 -99 3.242080 2.046213 84 -99 3.255676 2.300594 85 -99 3.268885 2.284417 86 -99 3.279936 3.044139 87 -99 3.282893 2.657017 88 -99 3.289211 2.991812 89 -99 3.296691 2.650445 90 -99 3.304171 2.878012 91 -99 3.313731 2.688768 92 -99 3.323307 2.834434 93 -99 3.333891 2.637643 94 -99 3.344002 2.602273 95 -99 3.354473 2.730662 96 -99 3.367257 2.675552 97 -99 3.379816 2.694496 98 -99 3.392413 2.597504 99 -99 3.404650 2.610671 100 -99 3.418964 2.646013 101 -99 3.431104 2.623007 102 -99 3.436612 3.333104 103 -99 3.443455 2.976607 104 -99 3.448609 2.976808 105 -99 3.458641 2.939230 106 -99 3.465950 2.854183 107 -99 3.476267 2.793484 108 -99 3.485993 2.774333 109 -99 3.494825 2.644742 110 -99 3.506747 2.815770 111 -99 3.518265 2.798476 112 -99 3.530601 2.689061 113 -99 3.542340 2.637895 114 -99 3.555202 2.705557 115 -99 3.567318 2.561766 116 -99 3.580474 2.687854 117 -99 3.591631 3.215343 118 -99 3.594621 2.824572 119 -99 3.602282 3.097073 120 -99 3.608511 2.828152 121 -99 3.618417 2.912231 122 -99 3.626072 2.910721 123 -99 3.637875 2.758185 124 -99 3.647143 2.561075 125 -99 3.656242 2.485964 126 -99 3.667606 2.513853 127 -99 3.678705 2.379030 128 -99 3.689264 2.483987 129 -99 3.702238 2.162110 130 -99 3.712908 1.983712 131 -99 3.723935 1.974529 132 -99 3.735593 2.333093 133 -99 3.744716 3.732813 134 -99 3.745531 3.678424 135 -99 3.746781 3.415567 136 -99 3.748034 2.873664 137 -99 3.749508 3.214937 138 -99 3.751849 3.499444 139 -99 3.754795 3.521749 140 -99 3.758059 3.306181 141 -99 3.760898 2.848077 142 -99 3.763751 3.152519 143 -99 3.767798 3.372713 144 -99 3.772079 3.239814 145 -99 3.775923 3.164995 146 -99 3.780447 3.345749 147 -99 3.785749 3.281890 148 -99 3.790470 2.970957 149 -99 3.795035 3.052836 150 -99 3.800446 3.064102 151 -99 3.805486 3.065686 152 -99 3.811401 3.242048 153 -99 3.817768 3.063483 154 -99 3.823081 2.941512 155 -99 3.829280 3.134466 156 -99 3.835907 3.090976 157 -99 3.842398 3.072702 158 -99 3.849114 3.049818 159 -99 3.855927 3.108137 160 -99 3.863378 3.104712 161 -99 3.870514 3.051643 162 -99 3.878062 3.126310 163 -99 3.885941 3.060716 164 -99 3.893510 3.045512 165 diff --git a/example/ac/phase.jpg b/example/ac/phase.jpg deleted file mode 100644 index 5a84db1..0000000 Binary files a/example/ac/phase.jpg and /dev/null differ diff --git a/example/ac/run.sh b/example/ac/run.sh deleted file mode 100644 index eabdcbd..0000000 --- a/example/ac/run.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -set -e - -# clean directory -rm -rf out -mkdir -p out - -sourcedir=`pwd`/../../ -echo $sourcedir - - -# run sem -time $sourcedir/bin/surfvti_ac model.txt 0.01 5 100 - -# convert database to h5file # -#python $sourcedir/scripts/binary2h5.py out/database.bin out/swd.txt out/kernels.h5 - -# run benckmark -\rm -f *.so bench_cps.py -ln -s $sourcedir/lib/cps* . -\cp $sourcedir/scripts/bench_cps.py . - -python bench_cps.py 2 - -# plot displ -python $sourcedir/scripts/plot_disp.py 5 - -# # plot_kernel.py file period_id mode -# python plot_kernels.py out/kernels.h5 20 0 - -\rm -f *.so bench_cps.py diff --git a/example/aniso-bench/benchmark.py b/example/aniso-bench/benchmark.py new file mode 100644 index 0000000..4e2eb93 --- /dev/null +++ b/example/aniso-bench/benchmark.py @@ -0,0 +1,72 @@ +from specd import THSolver +import numpy as np +import matplotlib.pyplot as plt +import matplotlib as mpl +mpl.rcParams['lines.linewidth'] = 1.5 +mpl.rcParams['font.size'] = 10 +mpl.rcParams['xtick.labelsize']=15 +mpl.rcParams['ytick.labelsize']=15 +mpl.rcParams['axes.labelsize']=15 +mpl.rcParams['legend.fontsize'] = 20 +mpl.rcParams['legend.fontsize'] = 20 +mpl.rcParams['savefig.bbox'] = 'tight' + +model = np.loadtxt("model.txt.cps") +sol = THSolver(model[:,0],model[:,2],model[:,4],model[:,1]) + +max_mode = 15 +cmap = plt.get_cmap("viridis",max_mode) +norm = mpl.colors.Normalize(vmin=0, vmax=max_mode-1) +sm = plt.cm.ScalarMappable(cmap=cmap,norm=norm) # Normalize the color range +fig,ax = plt.subplots(1,2,figsize=(12,6)) + +T = np.loadtxt("out/swd.txt",max_rows=1) +nt = len(T) +data = np.loadtxt("out/swd.txt",skiprows=1) +c_cps1 = T * 0 +c_cps2 = T * 0 +u_cps1 = T * 0 +u_cps2 = T * 0 +freqs = 1./T + +for imode in range(max_mode): + for it in range(nt): + c_cps1[it:it+1] = sol.compute_swd('Rc',imode,T[it:it+1]) + c_cps2[it:it+1] = sol.compute_swd('Lc',imode,T[it:it+1]) + u_cps1[it:it+1] = sol.compute_swd('Rg',imode,T[it:it+1]) + u_cps2[it:it+1] = sol.compute_swd('Lg',imode,T[it:it+1]) + + # get sem + idx = data[:,-1] == imode + c = data[idx,1] + u = data[idx,3] + T0 = T[np.int32(data[idx,0])] + + # plot + label1 = None + label2 = None + label_sem = None + if imode == 0: + label1 = 'R' + label2 = 'L' + label_sem = 'SEM' + ax[0].plot(1./T0,c,color=cmap(imode), label=label_sem) + idx = c_cps1 > 0 + ax[0].scatter(freqs[idx],c_cps1[idx],s=10,color='k',label=label1) + idx = c_cps2 > 0 + ax[0].scatter(freqs[idx],c_cps2[idx],s=10,color='b',label=label2) + + ax[1].plot(1./T0,u,color=cmap(imode), label=label_sem) + idx = u_cps1 > 0 + ax[1].scatter(freqs[idx],u_cps1[idx],s=10,color='k',label=label1) + idx = u_cps2 > 0 + ax[1].scatter(freqs[idx],u_cps2[idx],s=10,color='b',label=label2) + +ax[0].legend() +ax[1].legend() +ax[0].set_xlabel("Frequency,Hz") +ax[0].set_ylabel("Phase Velocity, km/s") +ax[1].set_xlabel("Frequency,Hz") +ax[1].set_ylabel("Group Velocity, km/s") +#fig.colorbar(sm,ax=ax.ravel().tolist(),label='order',location='bottom',pad=0.1,shrink=0.4,format='%d') +fig.savefig("eigenvalues.jpg",dpi=300) \ No newline at end of file diff --git a/example/love/group_kernel.jpg b/example/love/group_kernel.jpg new file mode 100644 index 0000000..d9e52e0 Binary files /dev/null and b/example/love/group_kernel.jpg differ diff --git a/example/rayleigh/eigenvalues.jpg b/example/rayleigh/eigenvalues.jpg deleted file mode 100644 index d623371..0000000 Binary files a/example/rayleigh/eigenvalues.jpg and /dev/null differ diff --git a/example/rayleigh/eigenvalues.pdf b/example/rayleigh/eigenvalues.pdf deleted file mode 100644 index 6622273..0000000 Binary files a/example/rayleigh/eigenvalues.pdf and /dev/null differ diff --git a/example/rayleigh/gen_model.py b/example/rayleigh/gen_model.py deleted file mode 100644 index ac00182..0000000 --- a/example/rayleigh/gen_model.py +++ /dev/null @@ -1,36 +0,0 @@ -import numpy as np - -def brocher(vsz): - vpz = 0.9409 + 2.0947*vsz - 0.8206*vsz**2+ \ - 0.2683*vsz**3 - 0.0251*vsz**4 - rhoz = 1.6612 * vpz - 0.4721 * vpz**2 + \ - 0.0671 * vpz**3 - 0.0043 * vpz**4 + \ - 0.000106 * vpz**5 - - return vpz,rhoz - -z = np.linspace(0,120,3) -nz = len(z) -vs = 3.0 + 0.02 * z -vp,rho = brocher(vs) -thk = np.zeros_like(z) -thk[0:nz-1] = np.diff(z) -Qa = z * 0 -Qb = z * 0 -Qb[:nz-1] = 200 -Qb[nz-1] = 400 -Qa = Qb * 9/4. - -f = open("model.txt.cps","w") -for i in range(nz): - f.write("%f %f %f %f %f %f 1.\n"%(thk[i],rho[i],vp[i],vp[i],vs[i],vs[i])) -f.close() - -# write specswd file -f = open("model.txt","w") -f.write("1 0\n") -for i in range(nz): - f.write("%f %f %f %f %f 1. %f %f %f\n"%(z[i],rho[i],vp[i],vp[i],vs[i],Qa[i],Qa[i],Qb[i])) - if i < nz-1: - f.write("%f %f %f %f %f 1. %f %f %f\n"%(z[i+1],rho[i],vp[i],vp[i],vs[i],Qa[i],Qa[i],Qb[i])) -f.close() \ No newline at end of file diff --git a/example/rayleigh/model.txt.low b/example/rayleigh/model.txt.low deleted file mode 100644 index 363cf0b..0000000 --- a/example/rayleigh/model.txt.low +++ /dev/null @@ -1,11 +0,0 @@ -10 -5.555556 2.723926 6.062000 6.062000 3.500000 3.500000 1. -5.555556 2.793225 6.254444 6.254444 3.611111 3.611111 1. -5.555556 2.862525 6.446889 6.446889 3.722222 3.722222 1. -5.555556 2.931824 6.639333 6.639333 3.833333 3.833333 1. -5.555556 1.757200 3.377400 3.377400 1.944444 1.944444 1. -5.555556 3.070422 7.024222 7.024222 4.055556 4.055556 1. -5.555556 3.139722 7.216667 7.216667 4.166667 4.166667 1. -5.555556 3.209021 7.409111 7.409111 4.277778 4.277778 1. -5.555556 3.278320 7.601556 7.601556 4.388889 4.388889 1. -0.000000 3.347619 7.794000 7.794000 4.500000 4.500000 1. \ No newline at end of file diff --git a/example/rayleigh/test.jpg b/example/rayleigh/test.jpg deleted file mode 100644 index 43a4499..0000000 Binary files a/example/rayleigh/test.jpg and /dev/null differ diff --git a/example/scholte/__pycache__/step0_database.cpython-311.pyc b/example/scholte/__pycache__/step0_database.cpython-311.pyc new file mode 100644 index 0000000..c3a3c6e Binary files /dev/null and b/example/scholte/__pycache__/step0_database.cpython-311.pyc differ diff --git a/example/rayleigh/benchmark.py b/example/scholte/benchmark.py similarity index 100% rename from example/rayleigh/benchmark.py rename to example/scholte/benchmark.py diff --git a/example/scholte/eigenvalues.jpg b/example/scholte/eigenvalues.jpg new file mode 100644 index 0000000..ca361bf Binary files /dev/null and b/example/scholte/eigenvalues.jpg differ diff --git a/example/scholte/eigenvecs.jpg b/example/scholte/eigenvecs.jpg new file mode 100644 index 0000000..ff2675c Binary files /dev/null and b/example/scholte/eigenvecs.jpg differ diff --git a/example/scholte/group_deriv.jpg b/example/scholte/group_deriv.jpg new file mode 100644 index 0000000..c66d947 Binary files /dev/null and b/example/scholte/group_deriv.jpg differ diff --git a/example/scholte/kernels.h5 b/example/scholte/kernels.h5 new file mode 100644 index 0000000..3616bf9 Binary files /dev/null and b/example/scholte/kernels.h5 differ diff --git a/example/rayleigh/model.txt b/example/scholte/model.txt similarity index 100% rename from example/rayleigh/model.txt rename to example/scholte/model.txt diff --git a/example/rayleigh/model.txt.cps b/example/scholte/model.txt.cps similarity index 100% rename from example/rayleigh/model.txt.cps rename to example/scholte/model.txt.cps diff --git a/example/scholte/phase_deriv.jpg b/example/scholte/phase_deriv.jpg new file mode 100644 index 0000000..f1f6cf2 Binary files /dev/null and b/example/scholte/phase_deriv.jpg differ diff --git a/example/rayleigh/plot_kernels.py b/example/scholte/plot_kernels.py similarity index 100% rename from example/rayleigh/plot_kernels.py rename to example/scholte/plot_kernels.py diff --git a/example/rayleigh/run.sh b/example/scholte/run.sh similarity index 100% rename from example/rayleigh/run.sh rename to example/scholte/run.sh diff --git a/example/rayleigh/run_att.sh b/example/scholte/run_att.sh similarity index 100% rename from example/rayleigh/run_att.sh rename to example/scholte/run_att.sh diff --git a/example/scholte/step0_database.py b/example/scholte/step0_database.py new file mode 100644 index 0000000..e20a309 --- /dev/null +++ b/example/scholte/step0_database.py @@ -0,0 +1,316 @@ +from specd import SpecWorkSpace +import numpy as np +import h5py +import sys +import os + +def brocher(vsz): + vpz = 0.9409 + 2.0947*vsz - 0.8206*vsz**2+ \ + 0.2683*vsz**3 - 0.0251*vsz**4 + rhoz = 1.6612 * vpz - 0.4721 * vpz**2 + \ + 0.0671 * vpz**3 - 0.0043 * vpz**4 + \ + 0.000106 * vpz**5 + + return vpz,rhoz + +def test_model(): + z = np.linspace(0,120,3) + nz = len(z) + vs = 3.0 + 0.02 * z + vp,rho = brocher(vs) + thk = np.zeros_like(z) + thk[0:nz-1] = np.diff(z) + Qa = z * 0 + Qb = z * 0 + Qb[:nz-1] = 200 + Qb[nz-1] = 400 + Qa = Qb * 9/4. + + return thk,vp,vs,rho,Qa,Qb + +def test_fluid(): + z = np.array([0.,5.,50,100.]) + nz = len(z) + vs = 3.0 + 0.02 * z + vs[0] = 0. + vp,rho = brocher(vs) + vp[0] = 1.5 + rho[0] = 1. + thk = np.zeros_like(z) + thk[0:nz-1] = np.diff(z) + Qa = z * 0 + Qb = z * 0 + Qb[:nz-1] = 200 + Qb[nz-1] = 400 + Qa = Qb * 9/4. + + return thk,vp,vs,rho,Qa,Qb + +def cps2spec(thk:np.ndarray,param:np.ndarray): + nz = len(thk) + z_spec = np.zeros((nz*2-1)) + param_spec = np.zeros_like(z_spec) + z = thk * 0. + z[1:] = np.cumsum(thk)[:nz-1] + + id = 0 + for i in range(nz): + z_spec[id] = z[i] + param_spec[id] = param[i] + id += 1 + if i < nz - 1: + z_spec[id] = z[i+1] + param_spec[id] = param[i] + id += 1 + + return z_spec,param_spec + +def test_fluid2(): + data_str = \ + """ + 5.0 1.000000 1.500000 1.500000 0.000000 0.000000 1. + 12.5 2.197252 4.599422 4.599422 2.655556 2.655556 1. + 5.7 2.294271 4.868844 4.868844 2.811111 2.811111 1. + 7.777778 2.391290 5.138267 5.138267 2.966667 2.966667 1. + 7.777778 2.488309 5.407689 5.407689 3.122222 3.122222 1. + 7.777778 2.585328 5.677111 5.677111 3.277778 3.277778 1. + 7.777778 2.682347 5.946533 5.946533 3.433333 3.433333 1. + 7.777778 2.779366 6.215956 6.215956 3.588889 3.588889 1. + 30. 2.876385 6.485378 6.485378 3.744444 3.744444 1. + 0.000000 2.973403 6.754800 6.754800 3.900000 3.900000 1. + """ + data = np.float64(data_str.split()) + data = data.reshape((10,7)) + thk,vp,vs,rho = (data[:,idx] for idx in [0,2,4,1]) + + Qa = thk * 0 + 400 + Qb = thk * 0 + 200. + + return thk,vp,vs,rho,Qa,Qb + +def compute_database(freqs:np.ndarray,kltype:int,z:np.ndarray, + rho:np.ndarray,vph:np.ndarray,vpv:np.ndarray, + vsv:np.ndarray,eta:np.ndarray,Qa=None, + Qc=None,Ql=None): + # initialize + ws = SpecWorkSpace() + ws.initialize( + 'rayl', + z = z, + rho = rho, + vph = vph, + vpv = vpv, + vsv = vsv, + eta = eta, + Qa = Qa, + Qc = Qc, + Ql = Ql + ) + has_att = True + if (Qa is None) or (Qc is None) or (Ql is None): + has_att = False + + # open file to save database + fio = h5py.File("kernels.h5","w") + fio.create_group("swd/") + fio.attrs['HAS_ATT'] = has_att + fio.create_group("kernels/") + + # kl names + if has_att: + dname = ['C','Q'] + kl_name = ['vph','vpv','vsv','eta','Qvph','Qvpv','Qvsv','vp','Qvp','rho'] + else: + dname = ['C'] + kl_name = ['vph','vpv','vsv','eta','vp','rho'] + + # save period vector + T = 1. / freqs + nt = len(T) + fio.create_dataset("T",shape=(nt,),dtype='f4') + fio['T'][:] = T + + # compute phase/group velocity and kernels + max_m = -1 + for it in range(nt): + c = ws.compute_egn(freqs[it],0.,only_phase=False) + + # save coordinates + z = ws.get_znodes() + npts = len(z) + fio.create_dataset(f"kernels/{it}/zcords",dtype='f4',shape =(npts)) + fio[f'kernels/{it}/zcords'][:] = z[:] + + # compute group velocity + max_mode = len(c) + max_m = max(max_m,max_mode) + for imode in range(max_mode): + gname = f"swd/mode{imode}" + dname = f"kernels/{it}/mode{imode}" + fio.create_group(dname) + if gname not in fio.keys(): + fio.create_group(f"{gname}") + fio.create_dataset(f"{gname}/T",shape=(nt,),dtype='f4',fillvalue=0.) + fio.create_dataset(f"{gname}/c",shape=(nt,),dtype='f4',fillvalue=0.) + fio.create_dataset(f"{gname}/u",shape=(nt,),dtype='f4',fillvalue=0.) + + if has_att: + fio.create_dataset(f"{gname}/cQ",shape=(nt,),dtype='f4',fillvalue=0.) + fio.create_dataset(f"{gname}/uQ",shape=(nt,),dtype='f4',fillvalue=0.) + + # save c/u + u = ws.group_velocity(imode) + fio[f"{gname}/T"][it] = T[it] + if not has_att: + fio[f"{gname}/c"][it] = c[imode] + fio[f"{gname}/u"][it] = u + else: + fio[f"{gname}/c"][it] = np.real(c[imode]) + fio[f"{gname}/u"][it] = u.real + fio[f"{gname}/cQ"][it] = 0.5 * c[imode].real / c[imode].imag + fio[f"{gname}/uQ"][it] = 0.5 * u.real / u.imag + + if np.isnan(u): + print(T[it],imode,c[imode],u) + + # save eigenfucntions + if has_att: + egn_r,egn_i = ws.get_egnfunc(imode,return_displ=True) + displ = egn_r + 1j * egn_i + PTYPE = 'c8' + else: + displ = ws.get_egnfunc(imode,return_displ=True) + PTYPE = 'f4' + ncomps,_ = displ.shape + comp_name = ['U','V'] + for icomp in range(ncomps): + fio.create_dataset(f"{dname}/{comp_name[icomp]}",dtype=PTYPE,shape=(npts)) + fio[f"{dname}/{comp_name[icomp]}"][:] = displ[icomp,:] + + # compute kernels + if has_att: + if kltype == 0: + fc,fq = ws.get_phase_kl(imode) + else: + fc,fq = ws.get_group_kl(imode) + else: + fq = None + if kltype == 0: + fc = ws.get_phase_kl(imode) + else: + fc = ws.get_group_kl(imode) + nkers,nz = fc.shape + for iker in range(nkers): + name = f"kernels/{it}/mode{imode}/C_{kl_name[iker]}" + fio.create_dataset(name,dtype='f4',shape=(nz,)) + fio[name][:] = fc[iker,:] + + if has_att: + name = f"kernels/{it}/mode{imode}/Q_{kl_name[iker]}" + fio.create_dataset(name,dtype='f4',shape=(nz,)) + fio[name][:] = fq[iker,:] + fio.close() + + # reset T/c/u + fio = h5py.File("kernels.h5","a") + for imode in range(max_m): + gname = f"swd/mode{imode}" + T0 = fio[f"{gname}/T"][:] + idx0 = T0 > 0 + T0 = T0[idx0] + + # reset + nt0 = len(T0) + c = fio[f'{gname}/c'][idx0] + u = fio[f'{gname}/u'][idx0] + del fio[f"{gname}/T"] + del fio[f"{gname}/c"] + del fio[f"{gname}/u"] + fio.create_dataset(f'{gname}/c',shape=(nt0),dtype='f4') + fio.create_dataset(f'{gname}/u',shape=(nt0),dtype='f4') + fio.create_dataset(f'{gname}/T',shape=(nt0),dtype='f4') + fio[f'{gname}/c'][:] = c + fio[f'{gname}/u'][:] = u + fio[f'{gname}/T'][:] = T0 + + if has_att: + cQ = fio[f'{gname}/cQ'][idx0] + uQ = fio[f'{gname}/uQ'][idx0] + del fio[f'{gname}/cQ'] + del fio[f'{gname}/uQ'] + fio.create_dataset(f'{gname}/cQ',shape=(nt0),dtype='f4') + fio.create_dataset(f'{gname}/uQ',shape=(nt0),dtype='f4') + fio[f'{gname}/cQ'][:] = cQ + fio[f'{gname}/uQ'][:] = uQ + + fio.close() + + +def main(): + ############### USER PARAMS ############## + # frequencies + nt = 100 + freqs = 10**np.linspace(np.log10(0.01),np.log10(0.5),nt) + T = 1. / freqs + + # kernel type + kltype = 1 # phase kernels + + ############## STOP HERE ######################## + + thk,vp,vs,rho,Qa,Qb = test_fluid() + z_spec,vp_spec = cps2spec(thk,vp) + _,vs_spec = cps2spec(thk,vs) + _,rho_spec = cps2spec(thk,rho) + + # create database + compute_database(freqs,kltype,z_spec,rho_spec,vp_spec, + vp_spec,vs_spec,vs_spec*0.+1.) + + # write cps model + f = open("model.txt.cps","w") + for i in range(len(thk)): + f.write("%f %f %f %f %f %f 1.\n" + %(thk[i],rho[i],vp[i],vp[i],vs[i],vs[i])) + f.close() + + # write sem model + f = open("model.txt","w") + f.write("1 0\n") + for i in range(len(z_spec)): + f.write("%f %f %f %f %f 1.\n" + %(z_spec[i],rho_spec[i],vp_spec[i], + vp_spec[i],vs_spec[i])) + f.close() + + +if __name__ == "__main__": + main() + +# def main(): +# if len(sys.argv) != 6: +# print("Usage: python database.py modelfile f0 f1 nt KERNEL_TYPE") +# exit(1) + +# # get input args +# modelfile = sys.argv[1] +# f0 = float(sys.argv[2]) +# f1 = float(sys.argv[3]) +# nt = int(sys.argv[4]) +# ktype = int(sys.argv[5]) + +# # load model +# model = np.loadtxt(modelfile,skiprows=1) +# HAS_ATT = np.loadtxt("model.txt",max_rows=1,dtype=int)[1] + +# # frequency list +# freqs = 10**np.linspace(np.log10(f0),np.log10(f1),nt) + +# # compute databse +# if HAS_ATT == 0: +# compute_database(model,freqs,ktype) +# else: +# compute_database_att(model,freqs,ktype) + +# if __name__ == "__main__": +# main() \ No newline at end of file diff --git a/example/scholte/step1_bench_cps.py b/example/scholte/step1_bench_cps.py new file mode 100644 index 0000000..8acd208 --- /dev/null +++ b/example/scholte/step1_bench_cps.py @@ -0,0 +1,108 @@ +from specd import THSolver +import numpy as np +import matplotlib.pyplot as plt +import matplotlib as mpl +import h5py +from step0_database import test_fluid + +mpl.rcParams['lines.linewidth'] = 1.5 +mpl.rcParams['font.size'] = 10 +mpl.rcParams['xtick.labelsize']=15 +mpl.rcParams['ytick.labelsize']=15 +mpl.rcParams['axes.labelsize']=15 +mpl.rcParams['legend.fontsize'] = 20 +mpl.rcParams['legend.fontsize'] = 20 +mpl.rcParams['savefig.bbox'] = 'tight' + +def main(): + # init solver + thk,vp,vs,rho,_,_ = test_fluid() + sol = THSolver(thk,vp,vs,rho) + + # open h5file + fio = h5py.File("kernels.h5","r") + + # get period + T = fio['T'][:] + nt = len(T) + max_mode = 6 + + # phase velocity and group velocity + # plotting maps + cmap = plt.get_cmap("viridis",max_mode) + norm = mpl.colors.Normalize(vmin=0, vmax=max_mode-1) + sm = plt.cm.ScalarMappable(cmap=cmap,norm=norm) # Normalize the color range + fig,ax = plt.subplots(1,2,figsize=(15,6)) + + # compute phase velocities + for imode in range(max_mode): + gname = f"swd/mode{imode}" + T0 = fio[f'{gname}/T'][:] + c = fio[f'{gname}/c'][:] + u = fio[f'{gname}/u'][:] + + # cps phase velocity + c_cps = T0 * 0. + u_cps = c_cps * 0. + nt0 = len(T0) + for it in range(nt0): + c_cps[it:it+1] = sol.compute_swd('Rc',imode,T0[it:it+1]) + u_cps[it:it+1] = sol.compute_swd('Rg',imode,T0[it:it+1]) + + # plot + label = None + if imode == 0: + label = 'T-H' + freqs = 1. / T0 + ax[0].plot(freqs,c,color=cmap(imode)) + idx = c_cps > 0 + ax[0].scatter(freqs[idx],c_cps[idx],s=10,color='k',label=label) + ax[1].plot(freqs,u,color=cmap(imode)) + ax[1].scatter(freqs[idx],u_cps[idx],s=10,color='k',label=label) + + ax[0].legend() + ax[0].set_xlabel("Frequency,Hz") + ax[0].set_ylabel("Phase Velocity, km/s") + ax[1].legend() + ax[1].set_xlabel("Frequency,Hz") + ax[1].set_ylabel("Group Velocity, km/s") + + fig.colorbar(sm,ax=ax.ravel().tolist(),label='order',location='bottom',pad=0.1,shrink=0.4,format='%d') + fig.savefig("eigenvalues.jpg",dpi=300) + + # plot eigenfunctions + max_mode = 10 + cmap = plt.get_cmap("viridis",max_mode) + norm = mpl.colors.Normalize(vmin=0, vmax=max_mode-1) + sm = plt.cm.ScalarMappable(cmap=cmap,norm=norm) + fig1,ax1 = plt.subplots(1,2,figsize=(10,10)) + it = nt - 1 + z = fio[f'kernels/{it}/zcords'][:] + for imode in range(max_mode): + dname = f"kernels/{it}/mode{imode}" + if not (f'{dname}/U' in fio.keys()): + continue + U = fio[f'{dname}/U'][:] + V = fio[f'{dname}/V'][:] + U = U / np.max(np.abs(U)) + imode + V = V / np.max(np.abs(V)) + imode + + ax1[0].plot(U,z,color=cmap(imode)) + ax1[1].plot(V,z,color=cmap(imode)) + ax1[0].set_ylabel("depth,km") + ax1[0].set_title(r"Normalized $U_x$") + ax1[1].set_title(r"Normalized $U_z$") + ax1[0].set_ylim(-5,100) + ax1[1].set_ylim(-5,100) + ax1[0].axhline(5,ls='--',color='grey') + ax1[1].axhline(5,ls='--',color='grey') + ax1[0].invert_yaxis() + ax1[1].invert_yaxis() + fig1.colorbar(sm,ax=ax1.ravel().tolist(),label='order',location='bottom',pad=0.05,shrink=0.4,format='%d') + fig1.savefig("eigenvecs.jpg",dpi=300) + + # close file + fio.close() + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/example/scholte/step2_kernels.py b/example/scholte/step2_kernels.py new file mode 100644 index 0000000..29cab08 --- /dev/null +++ b/example/scholte/step2_kernels.py @@ -0,0 +1,112 @@ +from specd import THSolver +import numpy as np +import matplotlib.pyplot as plt +import matplotlib as mpl +import h5py +from step0_database import test_fluid + +mpl.rcParams['lines.linewidth'] = 1.5 +mpl.rcParams['font.size'] = 10 +mpl.rcParams['xtick.labelsize']=15 +mpl.rcParams['ytick.labelsize']=15 +mpl.rcParams['axes.labelsize']=15 +mpl.rcParams['legend.fontsize'] = 20 +mpl.rcParams['legend.fontsize'] = 20 +mpl.rcParams['savefig.bbox'] = 'tight' + +def main(): + + # open h5file + fio = h5py.File("kernels.h5","r") + + # get period + T = fio['T'][:] + nt = len(T) + max_mode = 6 + + # compute phase/group kernels + thk,vp,vs,rho,_,_ = test_fluid() + nz = len(vp) + kl = np.zeros((3,nz,nt)) + x = np.zeros((3,nz)) + x[0,:] = vp * 1. + x[1,:] = vs * 1. + x[2,:] = rho * 1. + dx = 0.01 + for i in range(3): + for iz in range(nz): + x0 = x[i,iz] * 1. + if x0 == 0: + continue + x[i,iz] = x0 * (1 + dx) + sol = THSolver(thk,x[0,:],x[1,:],x[2,:]) + c1 = np.zeros((nt)) + for it in range(nt): + c1[it:it+1] = sol.compute_swd('Rg',0,T[it:it+1]) + #del sol + + c2 = np.zeros((nt)) + x[i,iz] = x0 * (1 - dx) + sol = THSolver(thk,x[0,:],x[1,:],x[2,:]) + for it in range(nt): + c2[it:it+1] = sol.compute_swd('Rg',0,T[it:it+1]) + #del sol + + kl[i,iz,:] = (c1 - c2) / (x0 * dx * 2) + + # copy back + x[i,iz] = x0 * 1. + + # read kernels from sem + kl_sem = kl * 0 + for it in range(nt): + vpv_kl = fio[f"kernels/{it}/mode0/C_vpv"][:] + vph_kl = fio[f"kernels/{it}/mode0/C_vph"][:] + vp_kl = fio[f"kernels/{it}/mode0/C_vp"][:] + vs_kl = fio[f"kernels/{it}/mode0/C_vsv"][:] + rho_kl = fio[f"kernels/{it}/mode0/C_rho"][:] + nz_tomo = len(vpv_kl) + assert(nz_tomo + 1 == nz * 2) + + for iz in range(nz): + izt = iz * 2 + kl_sem[0,iz,it] = vpv_kl[izt] + vph_kl[izt] + vp_kl[izt] + kl_sem[1,iz,it] = vs_kl[izt] + kl_sem[2,iz,it] = rho_kl[izt] + + if iz < nz - 1: + izt = izt + 1 + kl_sem[0,iz,it] += vpv_kl[izt] + vph_kl[izt] + vp_kl[izt] + kl_sem[1,iz,it] += vs_kl[izt] + kl_sem[2,iz,it] += rho_kl[izt] + #print(kl_sem[0,:,:]) + + fig,ax = plt.subplots(1,2,figsize=(15,6)) + idx = [0,2] + for i in range(2): + for iz in range(nz): + m = np.max(abs(kl[idx[i],iz,:])) + m1 = np.max(abs(kl_sem[idx[i],iz,:])) + print(m1,m) + if m == 0: m = 1. + if m1 == 0: m1 = 1. + label1 = None + label2 = None + if iz == nz-1: + label1 = 'FD' + label2 = 'SEM' + ax[i].scatter(1./T,kl[idx[i],iz,:] / m + iz,s=5,color='k',label=label1) + ax[i].plot(1./T,kl_sem[idx[i],iz,:] / m1 + iz,color='m',label=label2) + + for i in range(2): + ax[i].set_yticks([i for i in range(nz)]) # positions + ax[0].set_yticklabels([rf'$\frac{{\partial{{u}}}}{{\partial{{\alpha_{{{i+1}}}}}}}$' for i in range(nz)]) # labels + ax[1].set_yticklabels([rf'$\frac{{\partial{{u}}}}{{\partial{{\beta_{{{i+1}}}}}}}$' for i in range(nz)]) # labels + ax[0].set_xlabel("Frequency, Hz") + ax[1].set_xlabel("Frequency, Hz") + ax[0].legend() + ax[1].legend() + fig.savefig("group_deriv.jpg",dpi=300) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/example/scholte/test.bin b/example/scholte/test.bin new file mode 100644 index 0000000..c58b50f Binary files /dev/null and b/example/scholte/test.bin differ diff --git a/example/scholte/test.ipynb b/example/scholte/test.ipynb new file mode 100644 index 0000000..3cd4e69 --- /dev/null +++ b/example/scholte/test.ipynb @@ -0,0 +1,289 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.io import FortranFile \n", + "import numpy as np " + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [], + "source": [ + "def solve_block_lower(P,b):\n", + " n = P.shape[0]\n", + " bsize = np.zeros((n),dtype=int)\n", + " bsize[:] = 1\n", + "\n", + " i = 0\n", + " while i < n-1:\n", + " if abs(P[i,i+1]) > 1.0e-12:\n", + " bsize[i] = 2\n", + " bsize[i+1] = 0\n", + " i += 2\n", + " else:\n", + " i += 1\n", + " \n", + " # solve linear system \n", + " x = b * 0.\n", + " i = 0\n", + " while i < n:\n", + " idx = np.arange(0,i)\n", + " if bsize[i] == 1:\n", + " s = np.sum(P[i,idx] * x[idx])\n", + " if abs(P[i,i]) < 1.0e-12:\n", + " x[i] = 0\n", + " print(P[i,i],i,x[i])\n", + " else:\n", + " x[i] = (b[i] - s) / P[i,i]\n", + "\n", + " i += 1\n", + " \n", + " else:\n", + " rhs1 = b[i] - np.sum(P[i,idx] * x[idx])\n", + " rhs2 = b[i+1] - np.sum(P[i+1,idx] * x[idx])\n", + " a11 = P[i,i]; a12 = P[i,i+1]\n", + " a21 = P[i+1,i]; a22 = P[i+1,i+1]\n", + " det = a11 * a22 - a12 * a21\n", + " if abs(det) > 1.0e-12:\n", + " x[i] = (a22 * rhs1 - a12 * rhs2) / det\n", + " x[i+1] = (-a21 * rhs1 + a11 * rhs2) / det\n", + " else:\n", + " x[i] = 0. \n", + " x[i+1] = 0.\n", + " i += 2 \n", + " return x,bsize \n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [], + "source": [ + "def read_file():\n", + " fio = FortranFile(\"test.bin\")\n", + " P = fio.read_reals('f4')\n", + " b = fio.read_reals('f4')\n", + " x_obj = fio.read_reals('f4')\n", + " fio.close()\n", + " n = len(b)\n", + "\n", + " P = np.reshape(P,(n,n)).T \n", + "\n", + " return P,b,x_obj" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [], + "source": [ + "P,b,x_obj = read_file()" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0 33 0.0\n", + "[ -0. -0. -0. -0. 0. -0. 0.001 0.\n", + " 0. -0. -0. -0. 0.015 0. -0.001 -0.\n", + " -0. 0.001 0.001 -0. 0. 0. 0. 0.001\n", + " -0. -0. 0.001 -0. 0.001 -0. -0. -0.\n", + " 0.001 9.838 -0.581 -1.606 -6.162 12.978 4.493 -6.108\n", + " 5.086 -31.23 -8.667 77.187 -78.425 8.857 -160.856 70.262\n", + " 15.766 37.232 94.054 -51.905 -50.944 106.823 26.85 -93.902\n", + " -15.388 -7.694 20.99 88.501 50.807 87.819 42.728 -37.644\n", + " 106.059 -36.271 145.839 915.695 -87.449 -305.754]\n" + ] + } + ], + "source": [ + "x,bsize = solve_block_lower(P,b)\n", + "print(x - x_obj)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ -0.053, 0.011, -0.083, 0.16 , 0.061, -0.019, 0.47 ,\n", + " 0.001, -0.015, 0.008, 0.047, 0.185, -8.91 , -0.027,\n", + " 0.393, 0.229, 0.189, -0.372, -0.638, 0.211, -0.048,\n", + " -0.089, 0.034, -0.562, 0.232, 0.273, 0.071, -0.233,\n", + " -6.725, 0.705, -1.949, 5.412, -6.779, -10.191, -1.971,\n", + " -12.128, 7.633, 7.576, -7.665, 5.288, 2.899, 3.774,\n", + " -32.23 , -65.428, 37.813, -56.19 , 79.697, -29.693, -35.977,\n", + " 13.125, -48.254, 11.599, 6.032, -10.697, 22.732, 7.22 ,\n", + " -21.134, -2.17 , 1.283, -5.072, -11.043, -4.351, -7.429,\n", + " 5.064, -6.817, 3.889, -11.245, -79.367, 6.201, 22.596],\n", + " dtype=float32)" + ] + }, + "execution_count": 116, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_obj - np.linalg.solve(P.T @ P,P.T @ b)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-13.304, 0. , 0. , 0. , 0. , 0. , 0. ],\n", + " [ -3.427, -9.304, 0. , 0. , 0. , 0. , 0. ],\n", + " [ -2.405, -2.807, -9.872, 0. , 0. , 0. , 0. ],\n", + " [ -6.54 , 4.867, -5.963, -9.021, 0. , 0. , 0. ],\n", + " [ -6.297, 4.013, 2.65 , 9.995, -2.351, 0. , 0. ],\n", + " [ -3.168, 7.764, 5.674, 0.859, -1.532, -10.869, 0. ],\n", + " [ 11.806, 2.838, 6.75 , 6.926, -2.791, 7.143, -9.934]],\n", + " dtype=float32)" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.set_printoptions(precision=3,suppress=True)\n", + "P[63:,63:]" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0. , -0. , -0. , -0. , 0. , 0. , 0. , 0. ,\n", + " 0. , 0. , 0. , 0. , 0. , 0. , -0. , -0. ,\n", + " 0. , 0. , -0. , 0. , -0. , -0. , -0. , -0. ,\n", + " 0. , -0. , 0. , 0. , -0. , 0. , 0. , 0. ,\n", + " 0. , 0. , 0. , 0. , 0. , -0. , -0. , 0. ,\n", + " 0. , -0. , 0. , 0. , -0. , -0. , 0. , -0.001,\n", + " -0. , 0. , 0. , -0. , -0. , 0. , 0. , 0. ,\n", + " -0. , 0. , 0. , 0.001, 0.001, 0. , 0.001, 0. ,\n", + " 0. , 0. , -0. , -0.001, -0. , 0. ], dtype=float32)" + ] + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P @ x - b" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ -0.152, 0.025, -0.194, 0.314, 0.1 , -0.036,\n", + " 0.815, 0.015, 0.009, 0.062, 0.102, 0.34 ,\n", + " -7.178, 0.009, 0.248, 0.113, 0.16 , -0.321,\n", + " -0.641, 0.087, -0.359, 0.146, -0.444, -1.384,\n", + " 0.606, 1.588, -0.676, 0.622, -5.746, 1.504,\n", + " -0.969, 2.894, -7.472, 0. , -5.895, -6.313,\n", + " 1.765, 19.086, 11.314, 8.305, -13.494, 5.609,\n", + " -46.343, 5.283, -45.651, -55.922, -95.361, 41.277,\n", + " -22.301, 64.509, 50.585, -31.501, -48.726, 86.498,\n", + " 55.88 , -78.965, -41.397, -6.521, 21.498, 91.827,\n", + " 22.754, 89.307, 18.682, -33.195, 102.782, -14.244,\n", + " 139.821, 915.695, -60.989, -260.032], dtype=float32)" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-19.05 , 4.118, 0. , 0. ],\n", + " [ -5.542, 0.488, 0. , 0. ],\n", + " [-15.551, 1.877, 0. , 0. ],\n", + " [ 15.142, -2.355, 1.666, -0.075]], dtype=float32)" + ] + }, + "execution_count": 113, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P[31:35,31:35]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.8" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/example/vti-bench/cps330.cpython-311-darwin.so b/example/vti-bench/cps330.cpython-311-darwin.so deleted file mode 120000 index 48497df..0000000 --- a/example/vti-bench/cps330.cpython-311-darwin.so +++ /dev/null @@ -1 +0,0 @@ -../..//lib/cps330.cpython-311-darwin.so \ No newline at end of file diff --git a/example/vti-bench/cps330.cpython-311-darwin.so b/example/vti-bench/cps330.cpython-311-darwin.so new file mode 100755 index 0000000..a55e793 Binary files /dev/null and b/example/vti-bench/cps330.cpython-311-darwin.so differ diff --git a/lib/libswd.cpython-311-darwin.so b/lib/libswd.cpython-311-darwin.so index 1677b66..7650c9f 100755 Binary files a/lib/libswd.cpython-311-darwin.so and b/lib/libswd.cpython-311-darwin.so differ diff --git a/misc/source/markdown/gallery.md b/misc/source/markdown/gallery.md index 114e60d..22758ab 100644 --- a/misc/source/markdown/gallery.md +++ b/misc/source/markdown/gallery.md @@ -15,6 +15,26 @@ ![image](../../../example/love/group_deriv_veloc_att.jpg) *Benchmark of group velocity sensitivity kernels ith Analytical Solution* +## Scholte Wave example +| Layer Number | h | $\rho$ | $\alpha$| $\beta$ | +| -------- | ------- |---- |--| --| +| 1 | 5 | 1.0 | 1.5 | 0 | +| 2 | 45 | 2.57 | 5.22 | 3.1 | +| 3 | 50 | 2.95 | 6.94 | 4.0 | +| 2 | $\infty$ | 3.57 | 5.0 | 8.75 |5.0 | + +![image](../../../example/scholte/eigenvalues.jpg) +*Benchmark of phase/group/ velocities with CPS330.* + +![image](../../../example/scholte/eigenvecs.jpg) +*Normalized eigenfunctions* + +![image](../../../example/scholte/phase_deriv.jpg) +*Benchmark of phase velocity derivativates with FD approximation* + +![image](../../../example/scholte/group_deriv.jpg) +*Benchmark of group velocity derivativates with FD approximation* +