From de89d3bc26ed4c38ede739bc49b741816a76e354 Mon Sep 17 00:00:00 2001 From: dmayerich Date: Tue, 2 Apr 2013 17:01:40 -0500 Subject: [PATCH] Initial commit. --- CMakeLists.txt | 35 +++++++++++++++++++++++++++++++++++ FindMatplotlib.cmake | 45 +++++++++++++++++++++++++++++++++++++++++++++ FindPyQt4.cmake | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 12 ++++++++++++ cube27.pos | 27 +++++++++++++++++++++++++++ cyl3000fvp5.pos | 3000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ cylslab3000.pos | 3000 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ etaGold.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ etaSilver.txt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ mpidefs-parallel.f90 | 256 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mpidefs-serial.f90 | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ msinput.inp | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm-generic-main-v2.2.f90 | 488 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm-gui.py | 215 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm-intrinsics.f90 | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm-main-v2.2.f90 | 417 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm-manual-2011-v2.2.pdf | Bin 0 -> 1946171 bytes mstm-modules-v2.2.f90 | 6041 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm_gallery.pdf | Bin 0 -> 26747347 bytes mstm_guiwindow.ui | 359 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm_materials.py | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm_parameters.py | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ mstm_simparser.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ spectralOut.txt | 0 24 files changed, 14550 insertions(+), 0 deletions(-) create mode 100644 CMakeLists.txt create mode 100644 FindMatplotlib.cmake create mode 100644 FindPyQt4.cmake create mode 100644 README.md create mode 100644 cube27.pos create mode 100644 cyl3000fvp5.pos create mode 100644 cylslab3000.pos create mode 100644 etaGold.txt create mode 100644 etaSilver.txt create mode 100644 mpidefs-parallel.f90 create mode 100644 mpidefs-serial.f90 create mode 100644 msinput.inp create mode 100644 mstm-generic-main-v2.2.f90 create mode 100644 mstm-gui.py create mode 100644 mstm-intrinsics.f90 create mode 100644 mstm-main-v2.2.f90 create mode 100644 mstm-manual-2011-v2.2.pdf create mode 100644 mstm-modules-v2.2.f90 create mode 100644 mstm_gallery.pdf create mode 100644 mstm_guiwindow.ui create mode 100644 mstm_materials.py create mode 100644 mstm_parameters.py create mode 100644 mstm_simparser.py create mode 100644 spectralOut.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4f11e5b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,35 @@ +# CMake project file for our t-matrix framework +cmake_minimum_required (VERSION 2.8) +project (ms-tmatrix) +enable_language(Fortran) + +find_package(PythonInterp REQUIRED) + +#find any non-standard modules +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}") +find_package(Matplotlib REQUIRED) +find_package(PyQt4) + +#copy all of the front-end scripts to the binary directory +file(GLOB PY_SCRIPTS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/*.py") +add_custom_target( frontend-scripts ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${PY_SCRIPTS}) +foreach(PY_SCRIPT ${PY_SCRIPTS}) + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PY_SCRIPT} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${PY_SCRIPT} ${CMAKE_CURRENT_BINARY_DIR}/${PY_SCRIPT} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${PY_SCRIPTS} + ) +endforeach(PY_SCRIPT) + +#copy default input data +configure_file(msinput.inp ${CMAKE_CURRENT_BINARY_DIR}/msinput.inp @ONLY) +configure_file(cube27.pos ${CMAKE_CURRENT_BINARY_DIR}/cube27.pos @ONLY) +configure_file(cyl3000fvp5.pos ${CMAKE_CURRENT_BINARY_DIR}/cyl3000fvp5.pos @ONLY) +configure_file(cylslab3000.pos ${CMAKE_CURRENT_BINARY_DIR}/cylslab3000.pos @ONLY) +configure_file(etaGold.txt ${CMAKE_CURRENT_BINARY_DIR}/etaGold.txt @ONLY) +configure_file(etaSilver.txt ${CMAKE_CURRENT_BINARY_DIR}/etaSilver.txt @ONLY) +configure_file(mstm_guiwindow.ui ${CMAKE_CURRENT_BINARY_DIR}/mstm_guiwindow.ui @ONLY) + + +#compile the FORTRAN code +file(GLOB SRC "mpidefs-serial.f90" "mstm-intrinsics.f90" "mstm-modules-v2.2.f90" "mstm-main-v2.2.f90") +add_executable(ms-tmatrix ${SRC}) \ No newline at end of file diff --git a/FindMatplotlib.cmake b/FindMatplotlib.cmake new file mode 100644 index 0000000..dff486f --- /dev/null +++ b/FindMatplotlib.cmake @@ -0,0 +1,45 @@ +# - Find the matplotlib libraries +# This module finds IF matplotlib is installed, and sets the following variables +# indicating where it is. +# +# MATPLOTLIB_FOUND - was matplotlib found +# MATPLOTLIB_VERSION - the version of matplotlib found as a string +# MATPLOTLIB_VERSION_MAJOR - the major version number of matplotlib +# MATPLOTLIB_VERSION_MINOR - the minor version number of matplotlib +# MATPLOTLIB_VERSION_PATCH - the patch version number of matplotlib +# MATPLOTLIB_PATH_DIRS - path to the matplotlib include files + +IF(PYTHONINTERP_FOUND) + # Try to import matplotlib into Python interpreter. Python + # interpreter was found previously as required package, so + # don't take care about this. + execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" + "import matplotlib as m; print(m.__version__); print(m.__path__[0]);" + RESULT_VARIABLE _MATPLOTLIB_SEARCH_SUCCESS + OUTPUT_VARIABLE _MATPLOTLIB_VALUES + ERROR_VARIABLE _MATPLOTLIB_ERROR_VALUE + OUTPUT_STRIP_TRAILING_WHITESPACE) + + IF(_MATPLOTLIB_SEARCH_SUCCESS MATCHES 0) + set(MATPLOTLIB_FOUND TRUE) + + # Convert the process output into a list + string(REGEX REPLACE ";" "\\\\;" _MATPLOTLIB_VALUES ${_MATPLOTLIB_VALUES}) + string(REGEX REPLACE "\n" ";" _MATPLOTLIB_VALUES ${_MATPLOTLIB_VALUES}) + list(GET _MATPLOTLIB_VALUES 0 MATPLOTLIB_VERSION) + list(GET _MATPLOTLIB_VALUES 1 MATPLOTLIB_PATH_DIRS) + + # Make sure all directory separators are '/' + string(REGEX REPLACE "\\\\" "/" MATPLOTLIB_PATH_DIRS ${MATPLOTLIB_PATH_DIRS}) + + # Get the major and minor version numbers + string(REGEX REPLACE "\\." ";" _MATPLOTLIB_VERSION_LIST ${MATPLOTLIB_VERSION}) + list(GET _MATPLOTLIB_VERSION_LIST 0 MATPLOTLIB_VERSION_MAJOR) + list(GET _MATPLOTLIB_VERSION_LIST 1 MATPLOTLIB_VERSION_MINOR) + list(GET _MATPLOTLIB_VERSION_LIST 2 MATPLOTLIB_VERSION_PATCH) + ELSE() + set(MATPLOTLIB_FOUND FALSE) + ENDIF() +ELSE() + set(MATPLOTLIB_FOUND FALSE) +ENDIF() \ No newline at end of file diff --git a/FindPyQt4.cmake b/FindPyQt4.cmake new file mode 100644 index 0000000..37f645e --- /dev/null +++ b/FindPyQt4.cmake @@ -0,0 +1,53 @@ +# Find PyQt4 +# ~~~~~~~~~~ +# Copyright (c) 2007-2008, Simon Edwards +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. +# +# PyQt4 website: http://www.riverbankcomputing.co.uk/pyqt/index.php +# +# Find the installed version of PyQt4. FindPyQt4 should only be called after +# Python has been found. +# +# This file defines the following variables: +# +# PYQT4_VERSION - The version of PyQt4 found expressed as a 6 digit hex number +# suitable for comparision as a string +# +# PYQT4_VERSION_STR - The version of PyQt4 as a human readable string. +# +# PYQT4_VERSION_TAG - The PyQt version tag using by PyQt's sip files. +# +# PYQT4_SIP_DIR - The directory holding the PyQt4 .sip files. +# +# PYQT4_SIP_FLAGS - The SIP flags used to build PyQt. + +IF(EXISTS PYQT4_VERSION) + # Already in cache, be silent + SET(PYQT4_FOUND TRUE) +ELSE(EXISTS PYQT4_VERSION) + + FIND_FILE(_find_pyqt_py FindPyQt.py PATHS ${CMAKE_MODULE_PATH}) + + EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} OUTPUT_VARIABLE pyqt_config) + IF(pyqt_config) + STRING(REGEX REPLACE "^pyqt_version:([^\n]+).*$" "\\1" PYQT4_VERSION ${pyqt_config}) + STRING(REGEX REPLACE ".*\npyqt_version_str:([^\n]+).*$" "\\1" PYQT4_VERSION_STR ${pyqt_config}) + STRING(REGEX REPLACE ".*\npyqt_version_tag:([^\n]+).*$" "\\1" PYQT4_VERSION_TAG ${pyqt_config}) + STRING(REGEX REPLACE ".*\npyqt_sip_dir:([^\n]+).*$" "\\1" PYQT4_SIP_DIR ${pyqt_config}) + STRING(REGEX REPLACE ".*\npyqt_sip_flags:([^\n]+).*$" "\\1" PYQT4_SIP_FLAGS ${pyqt_config}) + + SET(PYQT4_FOUND TRUE) + ENDIF(pyqt_config) + + IF(PYQT4_FOUND) + IF(NOT PYQT4_FIND_QUIETLY) + MESSAGE(STATUS "Found PyQt4 version: ${PYQT4_VERSION_STR}") + ENDIF(NOT PYQT4_FIND_QUIETLY) + ELSE(PYQT4_FOUND) + IF(PYQT4_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find Python") + ENDIF(PYQT4_FIND_REQUIRED) + ENDIF(PYQT4_FOUND) + +ENDIF(EXISTS PYQT4_VERSION) diff --git a/README.md b/README.md new file mode 100644 index 0000000..913c3f4 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +This software is designed to be used with CMake, so we recommend using it to build the application. + +The MSTM application requires a Fortran compiler and OpenMP. + +In addition, the GUI requires: + +Python -- http://www.python.org/ +Qt4 (user interface library) -- http://qt-project.org/ +PyQt4 (Python library for Qt4) -- http://wiki.python.org/moin/PyQt4 +matlibplot (Plotting library for Python) -- http://matplotlib.org/ + +These should be available easily through most Linux package managers and can be downloaded individually for Windows systems. If they are installed through Linux, CMake should be able to find them without any problems. Windows users may have to point CMake to the installed locations. \ No newline at end of file diff --git a/cube27.pos b/cube27.pos new file mode 100644 index 0000000..24cb00d --- /dev/null +++ b/cube27.pos @@ -0,0 +1,27 @@ +1. -2. -2. -2. 1. 1. +1. -2. -2. 0 1. 1. +1. -2. -2. 2. 1. 1. +1. -2. 0 -2. 1. 1. +1. -2. 0 0 1. 1. +1. -2. 0 2. 1. 1. +1. -2. 2. -2. 1. 1. +1. -2. 2. 0 1. 1. +1. -2. 2. 2. 1. 1. +1. 0 -2. -2. 1. 1. +1. 0 -2. 0 1. 1. +1. 0 -2. 2. 1. 1. +1. 0 0 -2. 1. 1. +1. 0 0 0 1. 1. +1. 0 0 2. 1. 1. +1. 0 2. -2. 1. 1. +1. 0 2. 0 1. 1. +1. 0 2. 2. 1. 1. +1. 2. -2. -2. 1. 1. +1. 2. -2. 0 1. 1. +1. 2. -2. 2. 1. 1. +1. 2. 0 -2. 1. 1. +1. 2. 0 0 1. 1. +1. 2. 0 2. 1. 1. +1. 2. 2. -2. 1. 1. +1. 2. 2. 0 1. 1. +1. 2. 2. 2. 1. 1. diff --git a/cyl3000fvp5.pos b/cyl3000fvp5.pos new file mode 100644 index 0000000..b5c5b14 --- /dev/null +++ b/cyl3000fvp5.pos @@ -0,0 +1,3000 @@ + 1. -0.12965E+02 -0.93624E+01 -0.99941E+01 + 1. 0.85070E+01 0.16922E+02 -0.99904E+01 + 1. 0.35559E+01 0.13697E+02 -0.99814E+01 + 1. -0.21028E+01 -0.40664E+01 -0.99752E+01 + 1. 0.16388E+02 0.24331E+01 -0.99732E+01 + 1. 0.12191E+02 -0.53233E+01 -0.99640E+01 + 1. -0.63155E+01 0.54762E+00 -0.99566E+01 + 1. -0.16808E+02 -0.66680E+01 -0.99510E+01 + 1. -0.38971E+01 0.16950E+02 -0.99405E+01 + 1. 0.14536E+02 -0.75087E+00 -0.99361E+01 + 1. 0.10011E+02 0.12734E+02 -0.99304E+01 + 1. 0.19577E+02 0.19602E+01 -0.99235E+01 + 1. -0.38874E+01 0.66963E+01 -0.99166E+01 + 1. -0.16619E+02 0.77769E+01 -0.99108E+01 + 1. -0.19262E+01 0.29369E+00 -0.99008E+01 + 1. -0.45367E+01 -0.14913E+02 -0.98994E+01 + 1. -0.76987E+01 -0.63255E+01 -0.98870E+01 + 1. -0.69447E+00 -0.74946E+01 -0.98822E+01 + 1. -0.19576E+02 0.63091E+00 -0.98789E+01 + 1. 0.12397E+02 0.15573E+02 -0.98702E+01 + 1. -0.15526E+02 0.44510E+01 -0.98611E+01 + 1. 0.43635E+01 0.11015E+02 -0.98534E+01 + 1. -0.88401E+01 0.44805E+01 -0.98514E+01 + 1. 0.11902E+02 -0.15124E+02 -0.98434E+01 + 1. 0.14525E+02 0.12588E+02 -0.98395E+01 + 1. -0.11177E+02 0.13433E+02 -0.98273E+01 + 1. -0.12716E+00 0.15386E+02 -0.98207E+01 + 1. 0.67438E+01 -0.67611E+01 -0.98138E+01 + 1. -0.96134E+01 0.15372E+02 -0.98114E+01 + 1. -0.12177E+02 -0.24229E+01 -0.98009E+01 + 1. -0.12666E+02 -0.48327E+01 -0.97974E+01 + 1. 0.58753E+01 -0.27347E+01 -0.97919E+01 + 1. -0.15659E+02 -0.21863E+01 -0.97862E+01 + 1. 0.71397E+01 -0.10003E+02 -0.97758E+01 + 1. -0.13601E+00 0.55659E+01 -0.97677E+01 + 1. -0.77498E+01 0.85131E+01 -0.97647E+01 + 1. -0.98243E+01 0.10896E+02 -0.97566E+01 + 1. 0.70499E+01 -0.15910E+02 -0.97477E+01 + 1. -0.15316E+01 -0.12234E+02 -0.97461E+01 + 1. 0.16559E+02 0.87679E+01 -0.97363E+01 + 1. 0.13209E+02 0.39911E+01 -0.97309E+01 + 1. 0.46898E+01 -0.15977E+02 -0.97266E+01 + 1. -0.11894E+02 0.63805E+00 -0.97197E+01 + 1. -0.10899E+02 -0.10216E+02 -0.97107E+01 + 1. 0.15537E+01 -0.12742E+02 -0.97040E+01 + 1. 0.95296E+01 -0.13359E+02 -0.96995E+01 + 1. 0.14894E+02 -0.46716E+01 -0.96904E+01 + 1. 0.41886E+01 -0.98142E+01 -0.96866E+01 + 1. 0.15893E+02 -0.93592E+01 -0.96734E+01 + 1. 0.13701E+02 -0.72705E+01 -0.96695E+01 + 1. -0.84370E+01 -0.16242E+02 -0.96618E+01 + 1. -0.57945E+01 0.16151E+02 -0.96545E+01 + 1. 0.53057E+01 -0.13966E+02 -0.96501E+01 + 1. 0.12104E+02 0.12289E+02 -0.96464E+01 + 1. 0.90752E+01 0.14213E+01 -0.96377E+01 + 1. 0.41127E+00 -0.18735E+02 -0.96332E+01 + 1. -0.62457E+01 0.58332E+01 -0.96266E+01 + 1. -0.78919E+01 0.24838E+01 -0.96148E+01 + 1. 0.53353E+01 0.19207E+02 -0.96111E+01 + 1. 0.26592E+00 -0.66718E+00 -0.96051E+01 + 1. -0.42934E+01 0.95216E+01 -0.95991E+01 + 1. -0.21728E+01 0.53178E+01 -0.95897E+01 + 1. -0.19033E+02 0.60782E+01 -0.95817E+01 + 1. -0.56455E+01 -0.60247E+01 -0.95739E+01 + 1. 0.37324E+01 0.72618E+00 -0.95696E+01 + 1. -0.70891E+01 -0.17799E+02 -0.95655E+01 + 1. 0.15303E+02 -0.12749E+02 -0.95552E+01 + 1. -0.68308E+01 0.14032E+02 -0.95518E+01 + 1. -0.17202E+01 0.84350E+01 -0.95446E+01 + 1. 0.23021E+01 -0.47083E+01 -0.95348E+01 + 1. -0.61204E+00 0.12671E+02 -0.95307E+01 + 1. 0.36889E+01 0.48344E+01 -0.95215E+01 + 1. 0.14339E+02 0.70811E+01 -0.95167E+01 + 1. -0.55337E+01 -0.21995E+01 -0.95100E+01 + 1. 0.16382E+02 -0.32772E+01 -0.95061E+01 + 1. -0.17172E+01 -0.17904E+02 -0.94970E+01 + 1. -0.17184E+02 -0.42935E+01 -0.94907E+01 + 1. 0.45522E+01 -0.45899E+01 -0.94828E+01 + 1. 0.12125E+02 -0.10435E+02 -0.94743E+01 + 1. 0.15970E+02 0.10790E+02 -0.94729E+01 + 1. 0.16473E+02 0.17185E+00 -0.94630E+01 + 1. 0.12650E+02 -0.18238E+01 -0.94545E+01 + 1. -0.15189E+02 -0.81921E+01 -0.94471E+01 + 1. -0.17909E+02 -0.85967E+01 -0.94443E+01 + 1. 0.94085E+01 -0.17749E+01 -0.94379E+01 + 1. 0.86253E+01 -0.61852E+01 -0.94295E+01 + 1. 0.18235E+02 0.75681E+01 -0.94237E+01 + 1. -0.12852E+02 -0.74127E+01 -0.94154E+01 + 1. -0.12068E+02 0.72710E+01 -0.94098E+01 + 1. -0.82542E+01 -0.10638E+02 -0.94066E+01 + 1. 0.10740E+02 0.25815E+01 -0.93953E+01 + 1. 0.58269E+01 -0.61338E-01 -0.93893E+01 + 1. -0.59887E+01 0.31064E+01 -0.93820E+01 + 1. -0.16136E+02 0.11566E+01 -0.93789E+01 + 1. 0.12673E+02 0.93274E+01 -0.93671E+01 + 1. -0.76655E+01 -0.23670E+01 -0.93602E+01 + 1. 0.17239E+02 0.43301E+01 -0.93536E+01 + 1. -0.14090E+02 0.86260E+00 -0.93523E+01 + 1. -0.36694E+01 -0.13088E+02 -0.93425E+01 + 1. -0.15033E+02 0.12883E+02 -0.93364E+01 + 1. 0.54747E+01 0.73678E+01 -0.93273E+01 + 1. 0.11184E+02 -0.70293E+01 -0.93225E+01 + 1. -0.62900E+01 0.10415E+02 -0.93190E+01 + 1. -0.61622E+00 -0.27437E+01 -0.93087E+01 + 1. 0.16535E+01 0.13153E+02 -0.93066E+01 + 1. 0.72539E+00 0.22450E+01 -0.92948E+01 + 1. 0.14297E+01 0.67372E+01 -0.92933E+01 + 1. 0.10418E+02 -0.11470E+02 -0.92841E+01 + 1. 0.28941E+01 -0.27008E+01 -0.92780E+01 + 1. -0.73668E+01 -0.87661E+01 -0.92721E+01 + 1. 0.13623E+02 0.12116E+01 -0.92655E+01 + 1. 0.66149E+01 0.12475E+02 -0.92598E+01 + 1. -0.12678E+02 0.15442E+02 -0.92524E+01 + 1. -0.28672E+01 0.33557E+01 -0.92443E+01 + 1. -0.12854E+02 -0.14593E+02 -0.92353E+01 + 1. -0.49908E+01 -0.17075E+02 -0.92329E+01 + 1. -0.14031E+02 -0.33746E+01 -0.92211E+01 + 1. 0.15814E+01 0.10803E+02 -0.92195E+01 + 1. 0.98881E+01 -0.44901E+01 -0.92113E+01 + 1. 0.86778E+01 0.10863E+02 -0.92020E+01 + 1. 0.58363E+01 0.40170E+01 -0.91975E+01 + 1. -0.41879E+01 -0.73750E+01 -0.91898E+01 + 1. 0.14852E+02 0.50703E+01 -0.91853E+01 + 1. -0.40961E+01 0.19042E+02 -0.91773E+01 + 1. -0.51800E+00 -0.96622E+01 -0.91686E+01 + 1. 0.14617E+02 -0.10887E+02 -0.91613E+01 + 1. 0.11199E+01 -0.63856E+01 -0.91547E+01 + 1. -0.98372E+01 0.21105E+01 -0.91522E+01 + 1. -0.10287E+02 -0.51245E+00 -0.91401E+01 + 1. 0.67853E+01 -0.45976E+01 -0.91395E+01 + 1. 0.37715E+01 0.15622E+02 -0.91325E+01 + 1. 0.76988E+01 0.88123E+01 -0.91226E+01 + 1. -0.41771E+01 0.14191E+02 -0.91157E+01 + 1. 0.98434E+01 -0.88095E+01 -0.91124E+01 + 1. -0.13552E+02 0.38767E+01 -0.91048E+01 + 1. -0.10001E+02 -0.15063E+02 -0.90977E+01 + 1. 0.24919E+01 -0.15923E+02 -0.90909E+01 + 1. -0.96944E+01 -0.77051E+01 -0.90826E+01 + 1. -0.75942E+01 0.17006E+02 -0.90744E+01 + 1. -0.86421E+01 -0.46246E+01 -0.90670E+01 + 1. -0.20268E+01 0.14451E+02 -0.90622E+01 + 1. 0.25649E+01 0.18175E+02 -0.90562E+01 + 1. -0.10462E+02 0.54579E+01 -0.90499E+01 + 1. -0.15684E+02 -0.11313E+02 -0.90453E+01 + 1. 0.13924E+02 -0.14125E+02 -0.90334E+01 + 1. 0.10806E+02 -0.25169E+00 -0.90293E+01 + 1. 0.86059E+01 -0.17910E+02 -0.90222E+01 + 1. 0.12093E+02 0.58994E+01 -0.90139E+01 + 1. -0.35407E+01 -0.58539E+00 -0.90115E+01 + 1. 0.60208E+01 0.99562E+01 -0.90001E+01 + 1. 0.30316E+01 0.88095E+01 -0.89944E+01 + 1. -0.17377E+02 0.47615E+01 -0.89920E+01 + 1. 0.43469E+01 -0.76060E+01 -0.89841E+01 + 1. -0.10709E+02 -0.52675E+01 -0.89795E+01 + 1. -0.11972E+02 0.11564E+02 -0.89686E+01 + 1. -0.81731E+00 -0.54869E+01 -0.89629E+01 + 1. -0.14050E+02 0.65784E+01 -0.89535E+01 + 1. 0.19905E+02 -0.96167E+00 -0.89508E+01 + 1. -0.12822E+02 -0.11130E+02 -0.89458E+01 + 1. 0.12430E+00 0.17839E+02 -0.89367E+01 + 1. 0.24154E+01 -0.10731E+02 -0.89331E+01 + 1. -0.44862E+01 -0.40489E+01 -0.89234E+01 + 1. -0.17380E+02 -0.16030E+01 -0.89143E+01 + 1. -0.15379E+02 -0.55455E+01 -0.89133E+01 + 1. -0.44002E+01 0.15541E+01 -0.89002E+01 + 1. -0.40603E+01 0.11832E+02 -0.88936E+01 + 1. -0.21719E+01 0.10892E+02 -0.88921E+01 + 1. 0.19628E+02 -0.33844E+01 -0.88821E+01 + 1. -0.19330E+02 -0.46178E+01 -0.88742E+01 + 1. 0.16926E+02 -0.54990E+01 -0.88728E+01 + 1. -0.10048E+01 -0.16082E+02 -0.88604E+01 + 1. 0.81468E+01 0.48332E+01 -0.88569E+01 + 1. -0.16978E+02 0.96853E+01 -0.88506E+01 + 1. -0.13778E+02 0.91493E+01 -0.88465E+01 + 1. 0.17832E+02 -0.88284E+01 -0.88388E+01 + 1. -0.24500E+01 -0.10694E+02 -0.88302E+01 + 1. 0.14492E+02 -0.27149E+01 -0.88246E+01 + 1. -0.75461E+01 0.12232E+02 -0.88145E+01 + 1. -0.71187E+01 -0.12235E+02 -0.88100E+01 + 1. 0.74122E+01 -0.14045E+02 -0.88035E+01 + 1. -0.63399E+01 -0.15118E+02 -0.87934E+01 + 1. 0.24190E+01 -0.18373E+02 -0.87884E+01 + 1. -0.11234E+02 0.35494E+01 -0.87845E+01 + 1. -0.81761E+01 0.67723E+01 -0.87750E+01 + 1. 0.91350E+01 0.74105E+01 -0.87696E+01 + 1. 0.38679E+01 0.28890E+01 -0.87607E+01 + 1. -0.94179E+01 0.92015E+01 -0.87588E+01 + 1. 0.68910E+01 0.17163E+02 -0.87521E+01 + 1. 0.32649E+01 -0.13943E+02 -0.87441E+01 + 1. 0.11483E+02 -0.13379E+02 -0.87378E+01 + 1. 0.20543E+01 -0.90770E+00 -0.87302E+01 + 1. 0.13476E+02 0.14071E+02 -0.87201E+01 + 1. -0.19466E+01 0.17580E+02 -0.87185E+01 + 1. 0.10189E+02 -0.15122E+02 -0.87080E+01 + 1. 0.87027E+01 0.14008E+02 -0.87056E+01 + 1. -0.17640E+02 0.26597E+01 -0.86973E+01 + 1. 0.11674E+02 -0.36610E+01 -0.86890E+01 + 1. 0.13900E+02 0.10811E+02 -0.86828E+01 + 1. 0.18278E+02 0.88575E+00 -0.86761E+01 + 1. -0.43653E+01 0.46751E+01 -0.86674E+01 + 1. 0.76140E+01 -0.25575E+01 -0.86665E+01 + 1. -0.14197E+02 0.11117E+02 -0.86585E+01 + 1. 0.34402E-01 0.89502E+01 -0.86482E+01 + 1. 0.11197E+02 0.14086E+02 -0.86412E+01 + 1. -0.21110E+01 -0.14193E+02 -0.86352E+01 + 1. 0.10357E+02 0.92557E+01 -0.86326E+01 + 1. 0.47724E+01 -0.17669E+02 -0.86237E+01 + 1. 0.13358E+01 0.47061E+01 -0.86172E+01 + 1. -0.50046E+01 -0.10772E+02 -0.86078E+01 + 1. -0.41061E+01 -0.19181E+02 -0.86046E+01 + 1. -0.89085E+01 -0.13224E+02 -0.85938E+01 + 1. 0.79173E+01 -0.11550E+02 -0.85898E+01 + 1. 0.18881E+02 -0.62745E+01 -0.85804E+01 + 1. 0.14976E+02 0.30291E+01 -0.85790E+01 + 1. 0.14031E+01 0.15042E+02 -0.85668E+01 + 1. -0.17295E+01 -0.19929E+02 -0.85630E+01 + 1. 0.18424E+02 0.28866E+01 -0.85596E+01 + 1. -0.10665E+02 -0.11917E+02 -0.85495E+01 + 1. 0.73102E+01 -0.83652E+01 -0.85461E+01 + 1. 0.99508E+01 0.17196E+02 -0.85381E+01 + 1. 0.60374E+01 0.15201E+02 -0.85326E+01 + 1. 0.72906E+01 0.10016E+01 -0.85266E+01 + 1. -0.10037E+02 -0.16977E+02 -0.85141E+01 + 1. -0.52988E+01 0.74435E+01 -0.85092E+01 + 1. -0.95700E+01 0.13332E+02 -0.85039E+01 + 1. 0.17484E+00 -0.11879E+02 -0.84936E+01 + 1. 0.71191E+00 -0.17101E+02 -0.84913E+01 + 1. -0.21364E+01 -0.75803E+01 -0.84818E+01 + 1. 0.12778E+02 -0.88022E+01 -0.84755E+01 + 1. 0.48148E+01 -0.11941E+02 -0.84729E+01 + 1. -0.67166E+01 -0.45744E+01 -0.84640E+01 + 1. -0.17708E+01 0.17423E+01 -0.84574E+01 + 1. -0.10138E+02 0.17147E+02 -0.84521E+01 + 1. -0.11992E+01 0.19598E+02 -0.84406E+01 + 1. -0.15498E+02 -0.50427E+00 -0.84336E+01 + 1. -0.19765E+02 0.21570E+01 -0.84317E+01 + 1. 0.32091E+00 -0.14286E+02 -0.84239E+01 + 1. 0.13132E+01 -0.91410E+01 -0.84167E+01 + 1. 0.18336E+02 0.57850E+01 -0.84122E+01 + 1. 0.17863E+02 -0.11144E+01 -0.84048E+01 + 1. -0.73414E+01 0.45137E+01 -0.83966E+01 + 1. -0.83738E+01 0.34437E+00 -0.83894E+01 + 1. -0.17991E+02 0.75537E+01 -0.83850E+01 + 1. -0.60142E+01 0.18592E+02 -0.83777E+01 + 1. -0.12787E+02 0.21140E+01 -0.83712E+01 + 1. 0.71931E+01 0.66350E+01 -0.83607E+01 + 1. -0.18038E+02 -0.63271E+01 -0.83600E+01 + 1. 0.47326E+01 -0.19394E+01 -0.83493E+01 + 1. -0.12906E+02 0.13541E+02 -0.83435E+01 + 1. -0.17975E+02 0.50683E+00 -0.83362E+01 + 1. -0.15205E+01 -0.95566E+00 -0.83282E+01 + 1. 0.47613E+01 0.13671E+02 -0.83211E+01 + 1. 0.10373E+01 -0.34373E+01 -0.83177E+01 + 1. -0.25973E+01 -0.26473E+01 -0.83108E+01 + 1. 0.15028E+02 -0.61197E+01 -0.83042E+01 + 1. -0.81094E+01 0.15021E+02 -0.82971E+01 + 1. -0.31900E+01 -0.55276E+01 -0.82917E+01 + 1. 0.15112E+02 0.89344E+01 -0.82820E+01 + 1. -0.12272E+01 0.41319E+01 -0.82782E+01 + 1. -0.54286E+01 -0.13304E+02 -0.82709E+01 + 1. -0.95435E+01 -0.95597E+01 -0.82656E+01 + 1. 0.10279E+02 0.42993E+01 -0.82551E+01 + 1. -0.27258E+00 0.11021E+02 -0.82481E+01 + 1. -0.19925E+01 0.69056E+01 -0.82402E+01 + 1. 0.16305E+02 0.62390E+01 -0.82390E+01 + 1. 0.57555E+01 -0.98817E+01 -0.82330E+01 + 1. -0.11748E+02 0.88725E+01 -0.82232E+01 + 1. 0.10715E+02 0.11590E+02 -0.82188E+01 + 1. -0.12884E+02 -0.68941E+00 -0.82093E+01 + 1. 0.16143E+02 -0.78386E+01 -0.82054E+01 + 1. 0.35767E+01 0.11985E+02 -0.81995E+01 + 1. 0.11890E+02 0.78088E+01 -0.81870E+01 + 1. -0.13700E+02 -0.87684E+01 -0.81834E+01 + 1. -0.15391E+02 0.33080E+01 -0.81776E+01 + 1. 0.15731E+01 0.19760E+02 -0.81675E+01 + 1. -0.56295E+01 0.13097E+02 -0.81641E+01 + 1. 0.11850E+02 0.12920E+01 -0.81592E+01 + 1. 0.45174E+01 0.18015E+02 -0.81477E+01 + 1. -0.16027E+02 0.67457E+01 -0.81435E+01 + 1. 0.15659E+02 0.12324E+02 -0.81395E+01 + 1. -0.65313E+01 0.15638E+01 -0.81316E+01 + 1. -0.10210E+02 -0.34459E+01 -0.81234E+01 + 1. -0.19825E+02 -0.45991E+00 -0.81136E+01 + 1. -0.44308E+01 0.16088E+02 -0.81129E+01 + 1. -0.32345E+01 -0.15956E+02 -0.81051E+01 + 1. -0.15917E+02 -0.35863E+01 -0.80970E+01 + 1. -0.65927E+01 -0.70832E+00 -0.80916E+01 + 1. -0.14298E+02 -0.12614E+02 -0.80852E+01 + 1. -0.12309E+02 -0.34906E+01 -0.80769E+01 + 1. -0.10082E+02 0.72194E+01 -0.80688E+01 + 1. 0.54895E+01 -0.60893E+01 -0.80613E+01 + 1. -0.11658E+02 -0.84580E+01 -0.80541E+01 + 1. 0.17670E+02 0.91994E+01 -0.80503E+01 + 1. 0.29389E+01 0.60787E+01 -0.80457E+01 + 1. 0.91241E+01 0.26722E+01 -0.80341E+01 + 1. -0.21673E+01 0.12741E+02 -0.80301E+01 + 1. 0.13740E+02 -0.45909E+01 -0.80218E+01 + 1. -0.12509E+02 0.52973E+01 -0.80165E+01 + 1. 0.30955E+01 -0.60832E+01 -0.80081E+01 + 1. 0.82690E+01 0.15886E+02 -0.80002E+01 + 1. 0.59213E+00 0.68252E+00 -0.80000E+01 + 1. -0.18988E+02 -0.27237E+01 -0.79930E+01 + 1. -0.75414E+01 0.94685E+01 -0.79849E+01 + 1. -0.75211E+01 -0.71355E+01 -0.79793E+01 + 1. 0.14225E+02 -0.48232E+00 -0.79673E+01 + 1. -0.28471E+01 0.90489E+01 -0.79664E+01 + 1. -0.54978E+01 -0.85248E+01 -0.79537E+01 + 1. -0.17188E+02 -0.10231E+02 -0.79495E+01 + 1. 0.16396E+02 -0.10243E+02 -0.79465E+01 + 1. -0.19758E+00 -0.78737E+01 -0.79378E+01 + 1. -0.11727E+02 -0.13503E+02 -0.79333E+01 + 1. 0.56761E+01 0.24035E+01 -0.79219E+01 + 1. 0.64636E+00 -0.19921E+02 -0.79179E+01 + 1. -0.10563E+02 0.15156E+02 -0.79072E+01 + 1. 0.51727E+01 -0.14981E+02 -0.79000E+01 + 1. -0.19160E+02 0.49698E+01 -0.78960E+01 + 1. 0.95624E+01 -0.71136E+01 -0.78885E+01 + 1. 0.11649E+02 -0.55853E+01 -0.78820E+01 + 1. -0.11812E+02 -0.16071E+02 -0.78740E+01 + 1. 0.85457E+01 -0.16173E+02 -0.78721E+01 + 1. 0.69381E+01 -0.17864E+02 -0.78628E+01 + 1. -0.89174E+01 -0.15112E+01 -0.78543E+01 + 1. 0.11940E+02 -0.15726E+02 -0.78531E+01 + 1. 0.12399E+02 0.40743E+01 -0.78420E+01 + 1. 0.30231E+00 0.13369E+02 -0.78344E+01 + 1. 0.35252E+01 -0.92540E+01 -0.78302E+01 + 1. -0.13121E+02 -0.58179E+01 -0.78235E+01 + 1. 0.12933E+02 -0.12024E+02 -0.78168E+01 + 1. 0.83967E+01 -0.50084E+01 -0.78080E+01 + 1. 0.51216E+01 0.56930E+01 -0.78004E+01 + 1. -0.32167E+00 0.16254E+02 -0.77956E+01 + 1. -0.57685E+01 -0.18292E+02 -0.77920E+01 + 1. -0.16066E+02 0.11440E+02 -0.77829E+01 + 1. 0.10109E+02 -0.26874E+01 -0.77743E+01 + 1. 0.86523E+01 -0.71006E+00 -0.77687E+01 + 1. -0.79867E+01 -0.17475E+02 -0.77603E+01 + 1. -0.16472E+02 -0.79900E+01 -0.77593E+01 + 1. 0.17435E+02 -0.30463E+01 -0.77484E+01 + 1. -0.11400E+02 0.68375E+00 -0.77414E+01 + 1. -0.26559E+01 -0.12377E+02 -0.77374E+01 + 1. -0.88018E+01 0.11060E+02 -0.77304E+01 + 1. 0.48016E+01 0.85515E+01 -0.77261E+01 + 1. 0.16781E+02 0.18208E+01 -0.77185E+01 + 1. 0.28977E+01 0.11469E+01 -0.77116E+01 + 1. 0.96957E+01 -0.12720E+02 -0.77030E+01 + 1. 0.30617E+01 -0.40592E+01 -0.76942E+01 + 1. 0.11438E+02 0.15844E+02 -0.76933E+01 + 1. -0.77825E+00 -0.18263E+02 -0.76842E+01 + 1. -0.87829E+01 0.31137E+01 -0.76796E+01 + 1. 0.96070E+01 -0.10399E+02 -0.76730E+01 + 1. -0.54990E+01 0.94154E+01 -0.76617E+01 + 1. 0.72023E+01 0.11203E+02 -0.76545E+01 + 1. 0.15662E+02 -0.40166E+01 -0.76507E+01 + 1. 0.39304E+01 -0.19317E+02 -0.76417E+01 + 1. 0.13908E+02 0.63981E+01 -0.76359E+01 + 1. -0.51401E+01 -0.60315E+01 -0.76310E+01 + 1. -0.35040E+01 -0.93864E+01 -0.76214E+01 + 1. 0.47579E+01 0.31293E+00 -0.76192E+01 + 1. -0.57072E+01 -0.29198E+01 -0.76095E+01 + 1. 0.77312E-01 0.67751E+01 -0.76038E+01 + 1. 0.56242E+01 -0.36166E+01 -0.75952E+01 + 1. 0.24741E+01 0.16734E+02 -0.75922E+01 + 1. 0.17754E+01 -0.12663E+02 -0.75861E+01 + 1. 0.12730E+02 0.12139E+02 -0.75765E+01 + 1. -0.70928E+01 -0.10197E+02 -0.75695E+01 + 1. -0.14810E+02 0.52121E+01 -0.75661E+01 + 1. -0.14854E+02 0.14601E+01 -0.75559E+01 + 1. -0.79079E+01 -0.15236E+02 -0.75476E+01 + 1. -0.90033E+01 -0.11345E+02 -0.75422E+01 + 1. 0.14494E+01 0.29337E+01 -0.75373E+01 + 1. -0.61453E+01 0.14932E+02 -0.75302E+01 + 1. -0.85088E+01 0.17947E+02 -0.75265E+01 + 1. -0.40522E+01 0.29621E+01 -0.75196E+01 + 1. -0.29905E+01 -0.17903E+02 -0.75073E+01 + 1. -0.59610E+01 0.57769E+01 -0.75033E+01 + 1. -0.10748E+02 -0.66328E+01 -0.74986E+01 + 1. -0.30780E+01 0.19424E+02 -0.74885E+01 + 1. -0.82561E+00 -0.37629E+01 -0.74842E+01 + 1. 0.15902E+02 -0.15405E+01 -0.74762E+01 + 1. 0.49219E+01 0.10662E+02 -0.74696E+01 + 1. 0.29467E+01 0.14108E+02 -0.74624E+01 + 1. 0.66231E+01 -0.12606E+01 -0.74562E+01 + 1. 0.34481E+01 0.19649E+02 -0.74529E+01 + 1. 0.13355E+02 -0.70547E+01 -0.74448E+01 + 1. 0.15291E+02 -0.12379E+02 -0.74369E+01 + 1. 0.11597E+02 -0.10140E+02 -0.74285E+01 + 1. 0.13855E+02 -0.10250E+02 -0.74207E+01 + 1. 0.19794E+02 0.16951E+01 -0.74196E+01 + 1. 0.11957E+02 0.98078E+01 -0.74084E+01 + 1. 0.16561E+02 0.39446E+01 -0.74042E+01 + 1. -0.17607E+02 -0.45296E+01 -0.73955E+01 + 1. -0.14083E+02 -0.21434E+01 -0.73874E+01 + 1. 0.13119E+02 -0.21317E+01 -0.73867E+01 + 1. 0.16622E+01 0.80371E+01 -0.73758E+01 + 1. 0.89610E+01 0.12270E+02 -0.73686E+01 + 1. -0.46671E+01 -0.10028E+01 -0.73636E+01 + 1. -0.28338E+01 0.52586E+01 -0.73576E+01 + 1. -0.10632E+02 0.11807E+02 -0.73527E+01 + 1. 0.36796E+01 -0.16442E+02 -0.73459E+01 + 1. 0.87508E+01 0.95956E+01 -0.73362E+01 + 1. -0.11241E+02 -0.17827E+01 -0.73272E+01 + 1. -0.23384E+01 0.15469E+02 -0.73253E+01 + 1. 0.10443E+01 -0.52727E+01 -0.73138E+01 + 1. 0.13876E+02 0.17674E+01 -0.73091E+01 + 1. 0.20744E+01 0.10405E+02 -0.73018E+01 + 1. 0.19372E+02 0.42051E+01 -0.72979E+01 + 1. 0.18991E+02 -0.47495E+01 -0.72893E+01 + 1. -0.11448E+01 -0.10682E+02 -0.72832E+01 + 1. 0.63650E+01 0.18639E+02 -0.72799E+01 + 1. -0.14079E+02 -0.10547E+02 -0.72718E+01 + 1. 0.59831E+01 -0.13149E+02 -0.72635E+01 + 1. 0.11475E+02 -0.78694E+01 -0.72589E+01 + 1. -0.12954E+02 0.74808E+01 -0.72526E+01 + 1. -0.55913E+01 -0.16337E+02 -0.72426E+01 + 1. -0.62964E+01 0.11365E+02 -0.72386E+01 + 1. 0.86038E+01 0.17923E+02 -0.72317E+01 + 1. 0.22462E+01 -0.14816E+02 -0.72205E+01 + 1. -0.15475E+02 0.84730E+01 -0.72183E+01 + 1. 0.73120E+01 0.13640E+02 -0.72105E+01 + 1. -0.36663E+01 0.72712E+01 -0.72015E+01 + 1. 0.94555E+01 0.60158E+01 -0.71978E+01 + 1. 0.32368E-01 -0.16011E+01 -0.71870E+01 + 1. -0.14881E+02 0.13005E+02 -0.71858E+01 + 1. 0.18271E+02 -0.75849E+01 -0.71761E+01 + 1. 0.98494E+01 0.14623E+02 -0.71733E+01 + 1. -0.12928E+02 0.10266E+02 -0.71607E+01 + 1. 0.35868E+01 0.41848E+01 -0.71539E+01 + 1. -0.69858E+01 0.77292E+01 -0.71512E+01 + 1. -0.17542E+02 0.39414E+01 -0.71460E+01 + 1. 0.67259E+01 0.43597E+01 -0.71349E+01 + 1. 0.16402E+02 0.10708E+02 -0.71331E+01 + 1. 0.31087E+01 -0.20278E+01 -0.71248E+01 + 1. -0.88037E+01 0.51148E+01 -0.71173E+01 + 1. -0.28238E+01 -0.18749E-01 -0.71106E+01 + 1. -0.85834E+01 -0.50941E+01 -0.71026E+01 + 1. 0.55200E+01 -0.78985E+01 -0.70967E+01 + 1. 0.77170E+01 -0.98178E+01 -0.70883E+01 + 1. 0.55726E+01 0.16679E+02 -0.70830E+01 + 1. -0.97784E+01 -0.14637E+02 -0.70747E+01 + 1. 0.10921E+02 -0.78991E+00 -0.70732E+01 + 1. 0.13023E+02 -0.13972E+02 -0.70646E+01 + 1. -0.37138E+01 0.14029E+02 -0.70564E+01 + 1. -0.14344E+02 -0.43347E+01 -0.70480E+01 + 1. -0.95568E+00 -0.14965E+02 -0.70413E+01 + 1. -0.32639E+01 0.11066E+02 -0.70375E+01 + 1. -0.11263E+02 -0.10662E+02 -0.70312E+01 + 1. 0.74363E+00 0.18045E+02 -0.70208E+01 + 1. 0.14505E+01 -0.10714E+02 -0.70171E+01 + 1. -0.11320E+02 0.26188E+01 -0.70124E+01 + 1. -0.13530E+02 0.34172E+01 -0.70052E+01 + 1. 0.14446E+02 0.13498E+02 -0.69943E+01 + 1. 0.19845E+02 -0.17525E+01 -0.69902E+01 + 1. -0.16042E+02 -0.18093E+01 -0.69850E+01 + 1. -0.48345E+01 0.10748E+01 -0.69784E+01 + 1. -0.15743E+02 -0.11670E+02 -0.69684E+01 + 1. -0.58789E+01 0.35805E+01 -0.69604E+01 + 1. -0.58919E+01 0.17041E+02 -0.69591E+01 + 1. -0.17467E+02 0.91785E+01 -0.69516E+01 + 1. 0.12392E+02 0.14234E+02 -0.69467E+01 + 1. -0.40167E+01 -0.14005E+02 -0.69367E+01 + 1. 0.67448E+01 0.91378E+01 -0.69321E+01 + 1. -0.80091E+01 0.13259E+02 -0.69243E+01 + 1. 0.14348E+02 0.39702E+01 -0.69158E+01 + 1. -0.33020E+01 -0.39947E+01 -0.69085E+01 + 1. 0.96580E+01 0.83376E+00 -0.69040E+01 + 1. 0.19121E+01 -0.17794E+02 -0.68944E+01 + 1. -0.77314E+01 -0.13342E+02 -0.68879E+01 + 1. -0.12359E+01 -0.56307E+01 -0.68859E+01 + 1. 0.35610E+01 -0.11122E+02 -0.68736E+01 + 1. -0.10838E+02 0.48866E+01 -0.68679E+01 + 1. -0.15426E+02 -0.65133E+01 -0.68661E+01 + 1. 0.17411E+02 0.73878E+01 -0.68575E+01 + 1. 0.40132E+01 -0.13629E+02 -0.68514E+01 + 1. -0.13715E+02 -0.14393E+02 -0.68458E+01 + 1. -0.17351E+01 -0.87784E+01 -0.68347E+01 + 1. -0.94285E+01 -0.81157E+01 -0.68275E+01 + 1. -0.12722E+02 0.15055E+02 -0.68217E+01 + 1. -0.76009E+01 -0.31767E+01 -0.68197E+01 + 1. -0.58066E+01 -0.11533E+02 -0.68092E+01 + 1. 0.17090E+01 -0.73952E+01 -0.68003E+01 + 1. 0.16852E+02 -0.53917E+01 -0.67974E+01 + 1. 0.10404E+02 0.80109E+01 -0.67878E+01 + 1. -0.32767E+01 0.17226E+02 -0.67826E+01 + 1. 0.75688E+01 -0.14707E+02 -0.67784E+01 + 1. -0.17374E+02 0.18735E+01 -0.67681E+01 + 1. 0.18144E+01 0.12471E+02 -0.67628E+01 + 1. -0.10178E+02 0.96669E+01 -0.67599E+01 + 1. -0.30469E+01 -0.68186E+01 -0.67479E+01 + 1. 0.15562E+02 0.55766E+00 -0.67413E+01 + 1. 0.96032E+01 -0.14521E+02 -0.67366E+01 + 1. 0.11403E+02 0.56438E+01 -0.67287E+01 + 1. -0.52090E+00 -0.12910E+02 -0.67201E+01 + 1. 0.10141E+02 -0.43883E+01 -0.67134E+01 + 1. 0.11503E+02 0.26692E+01 -0.67097E+01 + 1. -0.19161E+02 -0.57064E+01 -0.67032E+01 + 1. 0.18535E+02 0.98620E-01 -0.66987E+01 + 1. -0.11552E+02 -0.48205E+01 -0.66870E+01 + 1. 0.18965E-01 0.19936E+02 -0.66860E+01 + 1. -0.49916E+01 0.18955E+02 -0.66750E+01 + 1. -0.94228E+01 0.56521E+00 -0.66677E+01 + 1. 0.77771E+01 0.16205E+01 -0.66603E+01 + 1. -0.18521E+02 -0.92628E+00 -0.66568E+01 + 1. 0.60708E+00 0.49262E+01 -0.66483E+01 + 1. 0.14150E+02 0.10182E+02 -0.66461E+01 + 1. -0.12400E+02 0.12503E+02 -0.66393E+01 + 1. -0.69158E+00 0.88270E+01 -0.66314E+01 + 1. 0.13361E+02 0.80722E+01 -0.66223E+01 + 1. 0.10280E+02 -0.16804E+02 -0.66181E+01 + 1. 0.72809E+00 0.14976E+02 -0.66070E+01 + 1. -0.12576E+02 -0.12198E+02 -0.66010E+01 + 1. -0.78414E+00 0.20687E+01 -0.65953E+01 + 1. 0.71900E+01 -0.61352E+01 -0.65927E+01 + 1. 0.21949E+01 -0.19761E+02 -0.65851E+01 + 1. -0.19645E+02 0.32465E+01 -0.65767E+01 + 1. 0.56229E+01 -0.19085E+02 -0.65683E+01 + 1. 0.14542E+02 -0.85328E+01 -0.65640E+01 + 1. -0.17829E+01 -0.19898E+02 -0.65549E+01 + 1. 0.49514E+01 0.14677E+02 -0.65473E+01 + 1. 0.78970E+01 -0.26307E+01 -0.65465E+01 + 1. 0.92947E+01 -0.86602E+01 -0.65348E+01 + 1. -0.11449E+01 0.11854E+02 -0.65273E+01 + 1. 0.57248E+01 -0.16573E+02 -0.65250E+01 + 1. -0.15761E+02 -0.94820E+01 -0.65167E+01 + 1. -0.18111E+02 -0.79791E+01 -0.65108E+01 + 1. 0.55297E+01 -0.10891E+02 -0.65018E+01 + 1. -0.85134E+01 0.15880E+02 -0.64944E+01 + 1. -0.18612E+02 0.72510E+01 -0.64897E+01 + 1. 0.12594E+02 -0.39881E+01 -0.64832E+01 + 1. 0.90149E+01 0.40904E+01 -0.64745E+01 + 1. 0.34381E+01 0.77871E+01 -0.64712E+01 + 1. -0.99651E+01 -0.17135E+02 -0.64627E+01 + 1. -0.43907E+01 -0.18891E+02 -0.64541E+01 + 1. -0.10397E+02 0.16551E+02 -0.64530E+01 + 1. -0.13067E+02 0.15388E+01 -0.64436E+01 + 1. -0.12683E+02 -0.77203E+01 -0.64365E+01 + 1. 0.15234E+01 -0.35986E+00 -0.64307E+01 + 1. 0.15428E+02 0.79489E+01 -0.64261E+01 + 1. 0.32329E+00 -0.16587E+02 -0.64187E+01 + 1. -0.65478E+01 -0.51759E+01 -0.64107E+01 + 1. -0.89387E+01 0.72420E+01 -0.64006E+01 + 1. 0.36333E+01 -0.78128E+01 -0.63966E+01 + 1. 0.10259E+02 0.17126E+02 -0.63903E+01 + 1. -0.27884E+01 -0.19867E+01 -0.63835E+01 + 1. 0.57827E+01 0.12219E+02 -0.63774E+01 + 1. 0.17522E+02 -0.96229E+01 -0.63686E+01 + 1. 0.80804E+01 -0.11974E+02 -0.63640E+01 + 1. -0.30841E+01 -0.10887E+02 -0.63580E+01 + 1. -0.73949E+01 -0.86136E+01 -0.63496E+01 + 1. 0.60930E+01 0.67968E+01 -0.63407E+01 + 1. 0.42327E+01 -0.53033E+01 -0.63377E+01 + 1. -0.65649E+01 0.28585E+00 -0.63306E+01 + 1. -0.86865E+00 0.35375E-02 -0.63201E+01 + 1. -0.15063E+02 0.10500E+02 -0.63140E+01 + 1. -0.16898E+01 0.38852E+01 -0.63093E+01 + 1. 0.12520E+02 0.20843E+00 -0.63026E+01 + 1. 0.49111E+01 -0.12405E+01 -0.62970E+01 + 1. 0.16433E+02 0.56419E+01 -0.62877E+01 + 1. 0.12452E+01 -0.35625E+01 -0.62825E+01 + 1. -0.13422E+01 0.17638E+02 -0.62743E+01 + 1. 0.11419E+02 -0.12934E+02 -0.62732E+01 + 1. -0.97908E+01 -0.27088E+01 -0.62621E+01 + 1. 0.14894E+02 -0.55901E+01 -0.62586E+01 + 1. -0.13407E+01 0.13848E+02 -0.62486E+01 + 1. 0.82385E+01 -0.17424E+02 -0.62420E+01 + 1. -0.15377E+02 0.31793E-01 -0.62373E+01 + 1. -0.13795E+01 0.63954E+01 -0.62331E+01 + 1. -0.49546E+01 -0.74651E+01 -0.62201E+01 + 1. 0.41088E+01 0.19142E+01 -0.62176E+01 + 1. 0.10498E+02 0.10472E+02 -0.62116E+01 + 1. -0.39773E+01 0.93196E+01 -0.62019E+01 + 1. 0.85097E+01 0.75527E+01 -0.61986E+01 + 1. -0.15422E+02 0.35609E+01 -0.61912E+01 + 1. -0.11305E+02 0.79298E+01 -0.61828E+01 + 1. -0.27892E+01 -0.15487E+02 -0.61764E+01 + 1. -0.17172E+02 0.58495E+01 -0.61718E+01 + 1. 0.74049E+01 0.15762E+02 -0.61655E+01 + 1. -0.12735E+02 -0.30214E+01 -0.61583E+01 + 1. 0.14726E+02 -0.27534E+01 -0.61496E+01 + 1. 0.38786E+01 0.17460E+02 -0.61453E+01 + 1. -0.19155E+02 -0.37236E+01 -0.61397E+01 + 1. 0.15672E+02 -0.10812E+02 -0.61281E+01 + 1. -0.54454E+01 0.13006E+02 -0.61216E+01 + 1. 0.17946E+02 0.32140E+01 -0.61144E+01 + 1. -0.67632E+01 0.95791E+01 -0.61070E+01 + 1. -0.78040E+01 0.18937E+01 -0.61064E+01 + 1. 0.17643E+02 -0.17725E+01 -0.60941E+01 + 1. -0.46386E+01 0.15601E+02 -0.60889E+01 + 1. 0.20587E+01 0.63730E+01 -0.60806E+01 + 1. 0.19027E+02 0.61374E+01 -0.60758E+01 + 1. 0.59621E+01 0.96394E+00 -0.60670E+01 + 1. -0.15014E+02 0.67030E+01 -0.60637E+01 + 1. -0.10257E+02 0.14062E+02 -0.60547E+01 + 1. 0.25565E+00 -0.93911E+01 -0.60512E+01 + 1. -0.10471E+02 -0.12725E+02 -0.60401E+01 + 1. -0.19283E+02 0.13246E+01 -0.60398E+01 + 1. -0.16124E+02 -0.40788E+01 -0.60322E+01 + 1. -0.69963E+01 -0.18063E+02 -0.60202E+01 + 1. 0.36744E+01 0.12687E+02 -0.60151E+01 + 1. -0.11562E+02 -0.14901E+02 -0.60120E+01 + 1. 0.22083E+00 -0.19060E+02 -0.60021E+01 + 1. -0.58167E+01 -0.14585E+02 -0.59942E+01 + 1. 0.56768E+00 0.10603E+02 -0.59919E+01 + 1. 0.13739E+02 -0.12326E+02 -0.59823E+01 + 1. -0.44784E+01 0.56451E+01 -0.59763E+01 + 1. -0.12483E+02 0.56827E+01 -0.59715E+01 + 1. -0.82096E+01 -0.11410E+01 -0.59651E+01 + 1. -0.13013E+02 -0.92352E+00 -0.59595E+01 + 1. 0.10437E+02 -0.11004E+02 -0.59492E+01 + 1. 0.16426E+02 -0.77490E+01 -0.59448E+01 + 1. 0.12622E+02 -0.59415E+01 -0.59364E+01 + 1. 0.10300E+02 0.12898E+02 -0.59269E+01 + 1. 0.11716E+01 0.16430E+01 -0.59229E+01 + 1. 0.36793E+01 0.97609E+01 -0.59169E+01 + 1. -0.40523E+00 -0.73008E+01 -0.59098E+01 + 1. 0.15105E+02 0.11898E+02 -0.59042E+01 + 1. 0.36338E+01 -0.18231E+02 -0.58949E+01 + 1. 0.78608E+01 -0.48704E+00 -0.58931E+01 + 1. -0.71894E+01 0.47856E+01 -0.58823E+01 + 1. -0.79412E+01 -0.10947E+02 -0.58755E+01 + 1. 0.21849E+01 0.19264E+02 -0.58673E+01 + 1. -0.61866E+01 -0.18526E+01 -0.58660E+01 + 1. 0.14265E+02 -0.70501E+00 -0.58561E+01 + 1. -0.11138E+02 -0.88799E+01 -0.58520E+01 + 1. 0.95298E+01 -0.65942E+01 -0.58442E+01 + 1. -0.29697E+01 0.22334E+01 -0.58380E+01 + 1. 0.82744E+01 0.10924E+02 -0.58327E+01 + 1. 0.17422E+02 0.92300E+01 -0.58203E+01 + 1. -0.90606E+01 0.11858E+02 -0.58198E+01 + 1. 0.68436E+01 -0.42837E+01 -0.58085E+01 + 1. -0.42639E+01 -0.54698E+01 -0.58036E+01 + 1. -0.47590E+01 -0.94370E+01 -0.57951E+01 + 1. -0.95918E+01 0.34564E+01 -0.57925E+01 + 1. 0.58487E+01 0.29882E+01 -0.57828E+01 + 1. 0.10643E+01 -0.13923E+02 -0.57749E+01 + 1. -0.16241E+01 -0.17070E+02 -0.57719E+01 + 1. 0.12131E+02 -0.15286E+02 -0.57646E+01 + 1. 0.28174E+01 0.15169E+02 -0.57585E+01 + 1. 0.41963E+01 -0.15344E+02 -0.57496E+01 + 1. 0.12979E+02 -0.95761E+01 -0.57410E+01 + 1. -0.86509E+01 -0.66022E+01 -0.57374E+01 + 1. 0.44929E+01 0.53488E+01 -0.57289E+01 + 1. -0.53671E+01 0.75920E+01 -0.57219E+01 + 1. -0.11209E+02 0.46631E+00 -0.57176E+01 + 1. -0.13547E+02 0.87958E+01 -0.57110E+01 + 1. 0.70392E+01 -0.84097E+01 -0.57048E+01 + 1. 0.18938E+02 -0.33802E+01 -0.56941E+01 + 1. 0.39737E+01 -0.34184E+01 -0.56890E+01 + 1. -0.73925E+01 0.18468E+02 -0.56852E+01 + 1. -0.97657E+00 -0.26064E+01 -0.56745E+01 + 1. 0.15832E+02 0.31904E+01 -0.56686E+01 + 1. -0.28821E+01 -0.12783E+02 -0.56624E+01 + 1. -0.83847E+01 -0.15827E+02 -0.56548E+01 + 1. 0.49759E+01 0.19156E+02 -0.56474E+01 + 1. -0.13331E+02 -0.58427E+01 -0.56450E+01 + 1. 0.13891E+02 0.60039E+01 -0.56378E+01 + 1. 0.18614E+01 0.35075E+01 -0.56321E+01 + 1. -0.17130E+02 -0.59926E+01 -0.56216E+01 + 1. 0.26111E+01 -0.12532E+02 -0.56191E+01 + 1. 0.19301E+01 0.17042E+02 -0.56133E+01 + 1. 0.12729E+02 0.11494E+02 -0.56039E+01 + 1. 0.22133E+01 -0.57505E+01 -0.55965E+01 + 1. 0.12803E+02 0.40393E+01 -0.55908E+01 + 1. -0.20939E+01 0.19434E+02 -0.55816E+01 + 1. 0.12133E+02 -0.16821E+01 -0.55739E+01 + 1. 0.16553E+02 -0.33754E+01 -0.55701E+01 + 1. 0.74079E+01 0.18016E+02 -0.55602E+01 + 1. -0.13082E+02 -0.97763E+01 -0.55600E+01 + 1. -0.28807E+01 0.12627E+02 -0.55525E+01 + 1. 0.18966E+02 -0.61007E+01 -0.55450E+01 + 1. -0.16573E+02 0.79650E+01 -0.55343E+01 + 1. -0.66423E+01 0.15105E+02 -0.55322E+01 + 1. -0.14652E+02 -0.12937E+02 -0.55232E+01 + 1. 0.22350E+01 -0.15968E+02 -0.55150E+01 + 1. 0.96245E+01 -0.28180E+01 -0.55120E+01 + 1. -0.44268E+01 0.36432E+01 -0.55054E+01 + 1. 0.11099E+02 0.15163E+02 -0.54935E+01 + 1. 0.45051E+00 0.74981E+01 -0.54925E+01 + 1. -0.49357E+01 -0.33721E+01 -0.54860E+01 + 1. -0.43874E+01 -0.16920E+02 -0.54766E+01 + 1. 0.76787E+01 0.53271E+01 -0.54723E+01 + 1. -0.11799E+02 0.10384E+02 -0.54645E+01 + 1. -0.17248E+02 0.11471E+00 -0.54559E+01 + 1. -0.98509E+01 -0.10385E+02 -0.54491E+01 + 1. 0.92675E+01 0.22207E+01 -0.54462E+01 + 1. 0.51253E+01 -0.90290E+01 -0.54355E+01 + 1. 0.88507E+01 0.14430E+02 -0.54269E+01 + 1. -0.14645E+02 -0.20426E+01 -0.54266E+01 + 1. -0.46030E+01 -0.30754E+00 -0.54151E+01 + 1. 0.31829E+01 0.17736E+00 -0.54069E+01 + 1. -0.17305E+02 -0.25475E+01 -0.54013E+01 + 1. -0.16384E+02 -0.78712E+01 -0.53992E+01 + 1. 0.55747E+01 -0.13803E+02 -0.53887E+01 + 1. 0.11081E+02 -0.86790E+01 -0.53826E+01 + 1. 0.12445E+02 0.94806E+01 -0.53789E+01 + 1. -0.16876E+02 0.10469E+02 -0.53689E+01 + 1. -0.46682E+01 0.11068E+02 -0.53662E+01 + 1. -0.14053E+02 0.12331E+02 -0.53568E+01 + 1. 0.19709E+02 0.20681E+01 -0.53493E+01 + 1. -0.19183E+01 0.98248E+01 -0.53440E+01 + 1. -0.99713E+01 -0.46270E+01 -0.53335E+01 + 1. 0.17022E+02 0.64437E+00 -0.53271E+01 + 1. 0.97779E+01 -0.78267E+00 -0.53217E+01 + 1. 0.22839E+01 -0.91238E+01 -0.53179E+01 + 1. 0.22237E+01 -0.19283E+01 -0.53085E+01 + 1. 0.13263E+02 0.20520E+01 -0.53059E+01 + 1. 0.11644E+02 0.71196E+01 -0.52940E+01 + 1. -0.13680E+01 0.15745E+02 -0.52905E+01 + 1. 0.19031E+01 0.90416E+01 -0.52849E+01 + 1. 0.85945E+01 -0.15564E+02 -0.52746E+01 + 1. -0.12426E+02 0.30698E+01 -0.52724E+01 + 1. -0.13038E+01 -0.10588E+02 -0.52626E+01 + 1. 0.59173E+01 0.10167E+02 -0.52564E+01 + 1. 0.56502E+01 -0.63349E+01 -0.52486E+01 + 1. 0.35968E+00 0.12953E+02 -0.52461E+01 + 1. -0.32575E+01 0.72957E+01 -0.52359E+01 + 1. 0.19862E+02 -0.71126E+00 -0.52328E+01 + 1. -0.18950E+02 0.56332E+01 -0.52258E+01 + 1. -0.66342E+01 -0.12707E+02 -0.52183E+01 + 1. -0.17836E+02 0.33705E+01 -0.52072E+01 + 1. -0.23619E+01 -0.57377E+01 -0.52035E+01 + 1. -0.90060E+01 0.88952E+01 -0.51970E+01 + 1. 0.73475E+01 0.13126E+02 -0.51899E+01 + 1. -0.46968E+01 -0.11970E+02 -0.51842E+01 + 1. -0.96728E+01 0.56553E+01 -0.51734E+01 + 1. 0.98129E+01 0.57489E+01 -0.51730E+01 + 1. -0.11405E+02 -0.62656E+01 -0.51611E+01 + 1. 0.13340E+02 0.14235E+02 -0.51578E+01 + 1. -0.74789E+01 0.66741E+01 -0.51521E+01 + 1. -0.45476E+01 0.17569E+02 -0.51464E+01 + 1. 0.69929E+01 -0.10781E+02 -0.51348E+01 + 1. 0.89730E+01 -0.13494E+02 -0.51296E+01 + 1. -0.52037E+00 -0.49601E+01 -0.51221E+01 + 1. 0.55862E+01 0.16123E+02 -0.51184E+01 + 1. -0.19617E+02 -0.17961E+01 -0.51112E+01 + 1. -0.25711E+01 -0.20476E-01 -0.51035E+01 + 1. 0.70237E+01 -0.18549E+02 -0.50957E+01 + 1. -0.11212E+02 -0.17326E+01 -0.50878E+01 + 1. -0.14378E+02 -0.79279E+01 -0.50866E+01 + 1. -0.12643E+01 -0.14085E+02 -0.50762E+01 + 1. 0.63266E+01 -0.22817E+01 -0.50715E+01 + 1. -0.24958E+01 -0.77871E+01 -0.50658E+01 + 1. -0.60178E+01 0.20140E+01 -0.50536E+01 + 1. -0.16582E+02 -0.11034E+02 -0.50496E+01 + 1. 0.13626E+02 -0.74356E+01 -0.50404E+01 + 1. -0.13036E+02 0.14104E+02 -0.50398E+01 + 1. -0.78905E+01 -0.40344E+01 -0.50314E+01 + 1. -0.85747E+01 -0.13534E+02 -0.50255E+01 + 1. -0.65552E+01 -0.71409E+01 -0.50172E+01 + 1. -0.63062E+01 -0.16361E+02 -0.50118E+01 + 1. 0.63594E-01 0.18761E+02 -0.50024E+01 + 1. 0.10709E+02 0.39684E+01 -0.49946E+01 + 1. -0.66056E+01 0.11563E+02 -0.49911E+01 + 1. -0.15410E+02 0.18246E+01 -0.49835E+01 + 1. 0.69017E+01 0.83338E+01 -0.49797E+01 + 1. 0.10921E+02 -0.52378E+01 -0.49693E+01 + 1. 0.19298E+02 0.42136E+01 -0.49628E+01 + 1. 0.98186E+01 0.87658E+01 -0.49564E+01 + 1. -0.11380E+02 0.15488E+02 -0.49490E+01 + 1. -0.75949E-02 0.37522E+01 -0.49429E+01 + 1. -0.91193E+01 0.17477E+02 -0.49348E+01 + 1. -0.10963E+02 0.12450E+02 -0.49311E+01 + 1. 0.16399E+00 -0.12050E+02 -0.49240E+01 + 1. -0.31333E+01 -0.18600E+02 -0.49168E+01 + 1. 0.13903E+02 -0.42715E+01 -0.49105E+01 + 1. -0.15189E+02 -0.56562E+01 -0.49028E+01 + 1. -0.14035E+02 0.49815E+01 -0.48984E+01 + 1. -0.12672E+02 -0.13647E+02 -0.48880E+01 + 1. 0.14429E+02 0.89155E+01 -0.48831E+01 + 1. 0.89330E+01 0.16575E+02 -0.48736E+01 + 1. -0.22612E+01 0.52070E+01 -0.48678E+01 + 1. 0.46794E+01 -0.11706E+02 -0.48623E+01 + 1. -0.27308E+01 -0.37865E+01 -0.48592E+01 + 1. -0.11037E+02 -0.16589E+02 -0.48472E+01 + 1. -0.39440E+01 -0.14508E+02 -0.48408E+01 + 1. -0.83491E+01 0.14278E+02 -0.48339E+01 + 1. 0.46086E+01 0.82600E+01 -0.48275E+01 + 1. 0.16463E+02 0.10696E+02 -0.48266E+01 + 1. 0.11314E+02 0.13284E+01 -0.48151E+01 + 1. 0.17249E+02 -0.51869E+01 -0.48099E+01 + 1. 0.17277E+02 0.69474E+01 -0.48057E+01 + 1. 0.13649E+02 -0.14139E+02 -0.47957E+01 + 1. 0.15241E+02 -0.91565E+01 -0.47902E+01 + 1. 0.21782E+01 0.11970E+02 -0.47848E+01 + 1. -0.86981E+01 -0.88637E+01 -0.47759E+01 + 1. -0.58277E+01 -0.19136E+02 -0.47718E+01 + 1. -0.11448E+02 -0.11528E+02 -0.47608E+01 + 1. 0.41424E+01 0.33168E+01 -0.47547E+01 + 1. -0.94341E+01 0.14404E+01 -0.47468E+01 + 1. -0.34380E+01 0.14632E+02 -0.47450E+01 + 1. -0.87340E+01 -0.17643E+02 -0.47349E+01 + 1. 0.66373E+01 -0.16068E+02 -0.47301E+01 + 1. 0.16031E+02 -0.14122E+01 -0.47245E+01 + 1. -0.17798E+02 -0.91162E+01 -0.47175E+01 + 1. 0.18213E+02 -0.78721E+01 -0.47113E+01 + 1. 0.10480E+02 -0.16172E+02 -0.47044E+01 + 1. -0.16028E+02 0.50782E+01 -0.46962E+01 + 1. 0.87943E+01 -0.47851E+01 -0.46883E+01 + 1. 0.68399E+00 0.15682E+02 -0.46841E+01 + 1. 0.20181E+01 -0.17929E+02 -0.46746E+01 + 1. 0.10013E+00 -0.57815E+00 -0.46668E+01 + 1. 0.12475E+02 -0.11207E+02 -0.46662E+01 + 1. 0.48117E+01 -0.17169E+02 -0.46562E+01 + 1. -0.18932E+02 -0.52410E+01 -0.46474E+01 + 1. -0.70604E+00 0.14558E+01 -0.46441E+01 + 1. 0.93320E+01 -0.93490E+01 -0.46338E+01 + 1. 0.15596E+02 -0.12206E+02 -0.46319E+01 + 1. -0.14294E+02 -0.38713E+01 -0.46245E+01 + 1. -0.12312E+02 -0.42534E+01 -0.46142E+01 + 1. -0.79700E-01 -0.17630E+02 -0.46069E+01 + 1. 0.77267E+01 -0.65005E+01 -0.46040E+01 + 1. 0.53713E+01 0.13139E+02 -0.45996E+01 + 1. -0.62159E+01 -0.10396E+02 -0.45933E+01 + 1. -0.40455E+01 0.19436E+02 -0.45809E+01 + 1. -0.15080E+02 0.94342E+01 -0.45736E+01 + 1. 0.17192E+02 0.44294E+01 -0.45671E+01 + 1. -0.22085E+00 0.58118E+01 -0.45611E+01 + 1. -0.76520E+01 0.50942E+00 -0.45580E+01 + 1. -0.14405E+01 0.78421E+01 -0.45501E+01 + 1. 0.11090E+02 -0.14055E+02 -0.45424E+01 + 1. 0.15141E+02 0.56478E+00 -0.45338E+01 + 1. -0.26092E+01 0.17374E+02 -0.45325E+01 + 1. 0.15478E+02 -0.65814E+01 -0.45234E+01 + 1. -0.11241E+02 0.45699E+01 -0.45187E+01 + 1. 0.74896E+01 0.21925E+01 -0.45120E+01 + 1. 0.31983E+01 -0.72983E+01 -0.45005E+01 + 1. 0.71024E+01 -0.12714E+02 -0.44962E+01 + 1. 0.10845E+01 -0.77069E+01 -0.44924E+01 + 1. -0.13568E+02 0.55452E+00 -0.44864E+01 + 1. -0.74554E+01 0.32801E+01 -0.44746E+01 + 1. -0.19593E+02 0.26354E+01 -0.44717E+01 + 1. 0.15190E+02 0.70968E+01 -0.44604E+01 + 1. -0.52990E+01 0.93030E+01 -0.44586E+01 + 1. 0.60864E+01 0.46542E+01 -0.44508E+01 + 1. -0.12343E+01 0.11845E+02 -0.44463E+01 + 1. 0.41515E+01 0.11347E+02 -0.44370E+01 + 1. 0.64474E+01 -0.14215E+00 -0.44269E+01 + 1. -0.14542E+02 -0.10567E+02 -0.44215E+01 + 1. -0.63226E+01 0.16940E+02 -0.44174E+01 + 1. 0.33976E+00 -0.15556E+02 -0.44077E+01 + 1. 0.96921E+01 0.11633E+02 -0.44044E+01 + 1. -0.36982E+01 -0.18672E+01 -0.43976E+01 + 1. 0.52368E+01 -0.19294E+02 -0.43877E+01 + 1. -0.30436E+01 -0.99989E+01 -0.43807E+01 + 1. -0.12169E+02 0.74054E+01 -0.43739E+01 + 1. 0.11763E+02 0.12819E+02 -0.43698E+01 + 1. 0.17069E+02 -0.10078E+02 -0.43654E+01 + 1. 0.13031E+02 0.26343E+00 -0.43557E+01 + 1. -0.12444E+02 -0.80920E+01 -0.43528E+01 + 1. 0.31692E+01 0.65014E+01 -0.43414E+01 + 1. 0.14561E+02 0.45955E+01 -0.43360E+01 + 1. 0.13614E+02 -0.22518E+01 -0.43275E+01 + 1. 0.17537E+01 -0.40252E+01 -0.43238E+01 + 1. -0.19096E+02 0.37266E-01 -0.43164E+01 + 1. 0.34590E+01 0.19334E+02 -0.43097E+01 + 1. -0.43255E+01 -0.70660E+01 -0.43030E+01 + 1. 0.87280E+01 -0.17782E+02 -0.42939E+01 + 1. 0.43238E+01 -0.12428E+01 -0.42900E+01 + 1. -0.18181E+02 0.77948E+01 -0.42840E+01 + 1. 0.29336E+01 -0.19682E+02 -0.42750E+01 + 1. -0.60866E+01 0.54833E+01 -0.42720E+01 + 1. 0.14992E+02 0.13099E+02 -0.42665E+01 + 1. -0.53993E+01 0.14132E+02 -0.42588E+01 + 1. -0.16055E+02 -0.11942E+01 -0.42506E+01 + 1. 0.11813E+02 -0.33790E+01 -0.42455E+01 + 1. -0.10663E+02 -0.14022E+02 -0.42382E+01 + 1. 0.71527E+01 0.11368E+02 -0.42293E+01 + 1. 0.49987E+01 -0.45388E+01 -0.42235E+01 + 1. -0.10906E+02 0.89954E+01 -0.42141E+01 + 1. -0.74830E+01 -0.20477E+01 -0.42114E+01 + 1. 0.83398E+01 -0.17965E+01 -0.42033E+01 + 1. 0.51798E+01 0.14290E+01 -0.41985E+01 + 1. -0.14172E+02 0.70150E+01 -0.41895E+01 + 1. 0.94701E+00 -0.10272E+02 -0.41844E+01 + 1. 0.14233E+02 0.10843E+02 -0.41791E+01 + 1. 0.11604E+02 -0.70132E+01 -0.41692E+01 + 1. 0.33059E+01 0.13654E+02 -0.41656E+01 + 1. -0.53013E+01 -0.49467E+01 -0.41544E+01 + 1. -0.95952E+01 -0.30384E+01 -0.41512E+01 + 1. 0.28982E+01 0.18329E+01 -0.41433E+01 + 1. -0.16760E+02 -0.42849E+01 -0.41393E+01 + 1. -0.22190E+01 -0.15850E+02 -0.41306E+01 + 1. 0.18867E+02 -0.21335E+01 -0.41246E+01 + 1. -0.75361E+01 0.99208E+01 -0.41153E+01 + 1. 0.74515E+01 0.15411E+02 -0.41070E+01 + 1. 0.34842E+01 0.16710E+02 -0.41053E+01 + 1. 0.18664E+02 0.57620E+00 -0.40964E+01 + 1. -0.15681E+02 0.11827E+02 -0.40889E+01 + 1. 0.12375E+02 0.55239E+01 -0.40847E+01 + 1. 0.16868E+02 0.22926E+01 -0.40781E+01 + 1. 0.84972E+01 0.39044E+01 -0.40726E+01 + 1. 0.24216E+01 -0.14558E+02 -0.40602E+01 + 1. 0.84209E+01 0.73713E+01 -0.40538E+01 + 1. -0.10399E+02 -0.77045E+01 -0.40495E+01 + 1. -0.99952E+01 -0.36575E+00 -0.40467E+01 + 1. -0.82207E+00 -0.86832E+01 -0.40356E+01 + 1. 0.48108E+00 0.98288E+01 -0.40314E+01 + 1. 0.94101E+01 0.74559E+00 -0.40249E+01 + 1. -0.17744E+02 -0.71446E+01 -0.40154E+01 + 1. 0.58890E+01 0.68495E+01 -0.40074E+01 + 1. -0.90150E+01 -0.11731E+02 -0.40013E+01 + 1. -0.13335E+02 0.10970E+02 -0.39977E+01 + 1. -0.65330E+00 0.14291E+02 -0.39885E+01 + 1. -0.17502E+02 0.14889E+01 -0.39813E+01 + 1. 0.99833E+01 -0.11141E+02 -0.39766E+01 + 1. 0.34290E+01 -0.10173E+02 -0.39681E+01 + 1. -0.39563E+01 0.21156E+01 -0.39633E+01 + 1. -0.32450E+01 0.92329E+01 -0.39583E+01 + 1. 0.57608E+00 -0.19415E+02 -0.39481E+01 + 1. -0.20412E+01 0.30476E+01 -0.39465E+01 + 1. -0.11421E+02 0.17911E+01 -0.39363E+01 + 1. -0.13126E+02 -0.21070E+01 -0.39290E+01 + 1. 0.23280E+01 0.45372E+01 -0.39258E+01 + 1. 0.11289E+02 0.10369E+02 -0.39162E+01 + 1. 0.57610E+01 0.17998E+02 -0.39109E+01 + 1. -0.98954E+01 0.11081E+02 -0.39052E+01 + 1. -0.16484E+01 -0.14443E+01 -0.38954E+01 + 1. 0.16499E+02 0.88526E+01 -0.38909E+01 + 1. -0.88559E+01 -0.56457E+01 -0.38837E+01 + 1. -0.67953E+01 -0.14538E+02 -0.38757E+01 + 1. 0.19096E+02 -0.46457E+01 -0.38693E+01 + 1. -0.92812E+01 -0.15715E+02 -0.38657E+01 + 1. 0.11043E+02 0.16651E+02 -0.38551E+01 + 1. 0.11142E+02 -0.59623E+00 -0.38474E+01 + 1. 0.44182E+01 -0.14625E+02 -0.38432E+01 + 1. -0.61856E+01 0.75666E+01 -0.38350E+01 + 1. -0.10242E+02 0.70635E+01 -0.38281E+01 + 1. -0.14615E+01 -0.19298E+02 -0.38208E+01 + 1. -0.15505E+01 -0.12552E+02 -0.38154E+01 + 1. 0.13468E+02 -0.93385E+01 -0.38078E+01 + 1. 0.84115E+01 0.97452E+01 -0.38038E+01 + 1. -0.52123E+00 0.17071E+02 -0.37984E+01 + 1. -0.59110E+01 -0.38195E+00 -0.37907E+01 + 1. -0.37433E+01 0.12194E+02 -0.37806E+01 + 1. -0.65603E+01 0.18847E+02 -0.37753E+01 + 1. 0.70663E+01 -0.36290E+01 -0.37713E+01 + 1. 0.95161E+01 -0.69187E+01 -0.37610E+01 + 1. 0.64689E+01 -0.85565E+01 -0.37576E+01 + 1. -0.94902E+01 0.37801E+01 -0.37524E+01 + 1. -0.42967E+01 0.63193E+01 -0.37422E+01 + 1. -0.11577E+01 -0.66819E+01 -0.37390E+01 + 1. 0.15766E+02 -0.42643E+01 -0.37277E+01 + 1. -0.15497E+02 -0.12516E+02 -0.37232E+01 + 1. 0.21511E+01 -0.55584E+00 -0.37154E+01 + 1. -0.80380E+01 0.15992E+02 -0.37085E+01 + 1. -0.80205E+01 0.12255E+02 -0.37058E+01 + 1. -0.10140E+02 0.14286E+02 -0.36955E+01 + 1. -0.14505E+02 0.34547E+01 -0.36890E+01 + 1. 0.64576E+00 -0.24856E+01 -0.36836E+01 + 1. 0.18968E+02 0.62621E+01 -0.36763E+01 + 1. 0.13074E+01 0.79303E+01 -0.36704E+01 + 1. 0.19758E+01 -0.12067E+02 -0.36617E+01 + 1. -0.13610E+02 -0.58874E+01 -0.36559E+01 + 1. -0.46671E+01 -0.89898E+01 -0.36506E+01 + 1. 0.13695E+02 -0.59621E+01 -0.36404E+01 + 1. -0.37552E+01 0.42223E+01 -0.36393E+01 + 1. 0.11525E+02 -0.97795E+01 -0.36283E+01 + 1. 0.12456E+02 0.33256E+01 -0.36242E+01 + 1. 0.88354E+01 0.13313E+02 -0.36188E+01 + 1. -0.68455E+01 -0.17773E+02 -0.36080E+01 + 1. -0.11182E+02 -0.97814E+01 -0.36041E+01 + 1. -0.15880E+02 -0.91244E+01 -0.35973E+01 + 1. -0.19660E+02 -0.35127E+01 -0.35870E+01 + 1. -0.46675E+01 -0.16318E+02 -0.35826E+01 + 1. -0.19960E+01 0.19402E+02 -0.35785E+01 + 1. 0.14697E+01 0.19546E+02 -0.35683E+01 + 1. -0.11983E+01 -0.34308E+01 -0.35635E+01 + 1. 0.13091E+02 0.82373E+01 -0.35599E+01 + 1. 0.36792E+01 -0.30823E+01 -0.35477E+01 + 1. -0.79454E+01 0.50552E+01 -0.35465E+01 + 1. 0.51410E+01 0.14877E+02 -0.35377E+01 + 1. 0.20160E+00 -0.13674E+02 -0.35306E+01 + 1. 0.10599E+02 0.14477E+02 -0.35265E+01 + 1. -0.43911E+01 0.16045E+02 -0.35179E+01 + 1. 0.10632E+02 0.76106E+01 -0.35100E+01 + 1. -0.17227E+02 0.94156E+01 -0.35029E+01 + 1. 0.99826E+01 -0.29572E+01 -0.34988E+01 + 1. -0.43220E+01 -0.19485E+02 -0.34906E+01 + 1. 0.29093E+01 -0.16536E+02 -0.34840E+01 + 1. -0.17284E+02 0.61054E+01 -0.34739E+01 + 1. -0.44296E+01 -0.12982E+02 -0.34687E+01 + 1. 0.79137E+01 -0.14486E+02 -0.34632E+01 + 1. -0.34050E+01 -0.50643E+01 -0.34580E+01 + 1. -0.14267E+02 0.13538E+02 -0.34467E+01 + 1. 0.59913E+01 -0.11178E+02 -0.34450E+01 + 1. 0.16667E+02 -0.79286E+01 -0.34387E+01 + 1. 0.79686E+01 -0.10288E+02 -0.34284E+01 + 1. -0.13299E+02 -0.11990E+02 -0.34253E+01 + 1. 0.17510E+01 -0.60728E+01 -0.34164E+01 + 1. -0.77993E+01 -0.74496E+01 -0.34100E+01 + 1. 0.31437E+01 0.98427E+01 -0.34024E+01 + 1. 0.18720E+02 0.26276E+01 -0.33947E+01 + 1. -0.18200E+02 -0.18696E+01 -0.33905E+01 + 1. -0.12050E+02 -0.15597E+02 -0.33840E+01 + 1. 0.12585E+02 0.15078E+02 -0.33741E+01 + 1. -0.51330E+01 -0.29210E+01 -0.33684E+01 + 1. 0.56940E+01 0.94583E+01 -0.33619E+01 + 1. -0.15679E+02 -0.68585E+01 -0.33566E+01 + 1. 0.12670E+02 -0.15390E+02 -0.33497E+01 + 1. -0.13949E+02 -0.14291E+02 -0.33422E+01 + 1. 0.12827E+02 -0.12876E+02 -0.33345E+01 + 1. -0.35110E+01 -0.13187E+00 -0.33321E+01 + 1. -0.19381E+02 0.49295E+01 -0.33247E+01 + 1. 0.78998E+00 0.89018E+00 -0.33140E+01 + 1. 0.13880E+01 0.13247E+02 -0.33074E+01 + 1. 0.15134E+02 -0.10646E+02 -0.33040E+01 + 1. 0.79390E+01 0.17675E+02 -0.32996E+01 + 1. -0.57989E+01 0.36343E+01 -0.32895E+01 + 1. -0.12809E+02 0.54764E+01 -0.32867E+01 + 1. 0.16105E+02 0.56154E+01 -0.32743E+01 + 1. -0.15316E+02 0.68704E+00 -0.32672E+01 + 1. -0.77401E+01 -0.97776E+01 -0.32620E+01 + 1. 0.14491E+02 0.24547E+01 -0.32568E+01 + 1. -0.10699E+02 -0.47546E+01 -0.32475E+01 + 1. 0.10216E+02 0.30081E+01 -0.32462E+01 + 1. -0.17266E+02 0.33716E+01 -0.32346E+01 + 1. -0.10464E+02 0.16629E+02 -0.32279E+01 + 1. -0.12446E+02 0.15246E+02 -0.32261E+01 + 1. -0.23357E+01 0.15471E+02 -0.32138E+01 + 1. 0.49710E+01 -0.70887E+01 -0.32096E+01 + 1. 0.78593E+01 0.55953E+01 -0.32050E+01 + 1. -0.72167E+01 -0.12441E+02 -0.31991E+01 + 1. -0.87439E+01 0.83880E+01 -0.31913E+01 + 1. 0.17270E+02 -0.96117E+00 -0.31833E+01 + 1. 0.21149E+01 -0.88238E+01 -0.31789E+01 + 1. 0.11809E+02 -0.51169E+01 -0.31671E+01 + 1. -0.69537E+00 -0.10795E+02 -0.31636E+01 + 1. 0.43054E+01 0.50272E+01 -0.31584E+01 + 1. -0.72963E+01 -0.43500E+01 -0.31472E+01 + 1. 0.65859E+01 -0.56826E+01 -0.31425E+01 + 1. 0.61905E+01 -0.17667E+02 -0.31355E+01 + 1. 0.18414E+02 -0.63875E+01 -0.31329E+01 + 1. -0.15278E+01 0.10093E+02 -0.31258E+01 + 1. -0.11735E+02 0.13089E+02 -0.31151E+01 + 1. 0.10139E+02 0.55961E+01 -0.31079E+01 + 1. 0.14632E+02 -0.78397E+01 -0.31016E+01 + 1. -0.84328E+01 0.21817E+01 -0.30952E+01 + 1. 0.15765E+02 0.11574E+02 -0.30914E+01 + 1. -0.21895E+01 0.63076E+01 -0.30802E+01 + 1. 0.49252E+01 -0.12846E+02 -0.30748E+01 + 1. 0.14599E+02 -0.70901E+00 -0.30687E+01 + 1. 0.67695E+01 0.13689E+02 -0.30630E+01 + 1. -0.39110E+01 0.18064E+02 -0.30580E+01 + 1. -0.30481E+01 -0.17457E+02 -0.30530E+01 + 1. 0.10063E+01 0.31022E+01 -0.30429E+01 + 1. -0.57368E+01 0.11842E+02 -0.30394E+01 + 1. 0.19214E+01 0.16002E+02 -0.30300E+01 + 1. -0.13624E+02 -0.90506E+01 -0.30212E+01 + 1. -0.74870E+00 0.46526E+01 -0.30151E+01 + 1. -0.15484E+02 0.82407E+01 -0.30076E+01 + 1. 0.56643E+01 0.31563E+01 -0.30064E+01 + 1. -0.87885E+01 -0.13704E+02 -0.29979E+01 + 1. -0.19411E+01 0.13108E+02 -0.29920E+01 + 1. 0.88106E+01 -0.12504E+02 -0.29812E+01 + 1. -0.11852E+02 -0.59169E+00 -0.29744E+01 + 1. -0.73640E+00 -0.16566E+02 -0.29676E+01 + 1. -0.15109E+02 -0.24086E+01 -0.29620E+01 + 1. 0.98771E+01 -0.14412E+02 -0.29594E+01 + 1. -0.16204E+01 0.55894E+00 -0.29498E+01 + 1. 0.63759E+01 -0.18000E+01 -0.29431E+01 + 1. -0.29435E+01 -0.81139E+01 -0.29347E+01 + 1. 0.92495E+01 -0.16375E+02 -0.29288E+01 + 1. -0.84459E+01 0.17832E+02 -0.29217E+01 + 1. -0.12667E+02 0.88319E+01 -0.29169E+01 + 1. 0.78334E+01 -0.16264E-01 -0.29104E+01 + 1. -0.15270E+02 -0.49101E+01 -0.29001E+01 + 1. -0.65993E+01 0.14075E+01 -0.28941E+01 + 1. 0.34794E+01 -0.51637E+01 -0.28892E+01 + 1. 0.13312E+02 0.12326E+02 -0.28827E+01 + 1. -0.15095E+02 0.57411E+01 -0.28747E+01 + 1. 0.90781E+01 0.15679E+02 -0.28671E+01 + 1. 0.17462E+02 -0.34217E+01 -0.28634E+01 + 1. -0.12685E+02 0.32992E+01 -0.28598E+01 + 1. -0.11932E+02 -0.67508E+01 -0.28467E+01 + 1. -0.70356E+01 0.13943E+02 -0.28454E+01 + 1. 0.19844E+02 -0.88318E+00 -0.28355E+01 + 1. -0.19508E+02 0.14317E+01 -0.28297E+01 + 1. 0.38494E+01 -0.18254E+02 -0.28219E+01 + 1. 0.11915E+02 0.10294E+01 -0.28168E+01 + 1. 0.30706E+01 0.12078E+02 -0.28088E+01 + 1. 0.17431E+02 0.72970E+01 -0.28001E+01 + 1. -0.11556E+02 -0.29976E+01 -0.27988E+01 + 1. 0.94681E+00 0.57447E+01 -0.27918E+01 + 1. 0.13307E-01 0.11405E+02 -0.27806E+01 + 1. -0.11056E+02 -0.12538E+02 -0.27738E+01 + 1. -0.30871E+01 -0.14472E+02 -0.27671E+01 + 1. 0.88855E+01 -0.85558E+01 -0.27644E+01 + 1. 0.52174E+01 0.11574E+02 -0.27596E+01 + 1. 0.96953E+01 -0.50361E+01 -0.27522E+01 + 1. -0.95256E+01 -0.17493E+02 -0.27403E+01 + 1. 0.45793E+01 0.10395E+00 -0.27338E+01 + 1. 0.16286E+02 -0.60551E+01 -0.27284E+01 + 1. 0.36478E+01 0.79969E+01 -0.27203E+01 + 1. -0.14754E+02 0.10171E+02 -0.27198E+01 + 1. 0.14986E+02 -0.26703E+01 -0.27078E+01 + 1. 0.16697E+01 -0.18183E+02 -0.27036E+01 + 1. -0.18138E+02 -0.45569E+01 -0.26936E+01 + 1. 0.13946E+02 0.63373E+01 -0.26893E+01 + 1. 0.14874E+02 -0.12794E+02 -0.26823E+01 + 1. -0.27518E+01 -0.11404E+02 -0.26770E+01 + 1. 0.55334E+01 -0.15829E+02 -0.26733E+01 + 1. -0.13420E+02 -0.37520E+01 -0.26617E+01 + 1. -0.30371E+01 -0.26905E+01 -0.26563E+01 + 1. -0.75369E+01 -0.77412E+00 -0.26503E+01 + 1. 0.49376E+01 0.19357E+02 -0.26455E+01 + 1. -0.52354E+01 -0.62482E+01 -0.26335E+01 + 1. 0.17738E+02 0.45518E+01 -0.26268E+01 + 1. 0.33634E+00 -0.49005E+01 -0.26247E+01 + 1. 0.71018E+01 0.80336E+01 -0.26195E+01 + 1. 0.27739E+01 0.17939E+02 -0.26070E+01 + 1. -0.49234E+01 0.10068E+02 -0.26022E+01 + 1. -0.58480E+01 -0.10978E+02 -0.25954E+01 + 1. 0.36792E+01 0.28555E+01 -0.25921E+01 + 1. -0.98656E+00 0.81160E+01 -0.25824E+01 + 1. 0.12789E+02 0.10211E+02 -0.25752E+01 + 1. -0.46411E+01 0.80537E+01 -0.25674E+01 + 1. 0.11006E+02 0.12235E+02 -0.25646E+01 + 1. -0.17716E+02 -0.87762E+01 -0.25539E+01 + 1. -0.16957E+02 -0.47682E+00 -0.25533E+01 + 1. -0.16700E+02 -0.10931E+02 -0.25448E+01 + 1. -0.37352E+01 0.14111E+02 -0.25353E+01 + 1. 0.14706E+02 0.91405E+01 -0.25281E+01 + 1. 0.76832E+01 0.25152E+01 -0.25234E+01 + 1. 0.12124E+02 -0.23723E+01 -0.25177E+01 + 1. 0.10140E+02 0.94523E+01 -0.25129E+01 + 1. 0.48272E+01 -0.94249E+01 -0.25051E+01 + 1. -0.10843E+02 0.49651E+01 -0.24968E+01 + 1. -0.13161E+02 0.10011E+01 -0.24882E+01 + 1. 0.11580E+02 -0.11502E+02 -0.24859E+01 + 1. -0.12797E-01 -0.77459E+00 -0.24746E+01 + 1. -0.30020E+00 0.19204E+02 -0.24691E+01 + 1. -0.96068E+01 -0.88590E+01 -0.24621E+01 + 1. 0.16130E+02 0.13294E+01 -0.24574E+01 + 1. -0.10231E+02 0.96620E+01 -0.24481E+01 + 1. 0.96559E+01 -0.12504E+01 -0.24455E+01 + 1. 0.60636E+00 -0.73980E+01 -0.24388E+01 + 1. 0.11687E+02 -0.81225E+01 -0.24304E+01 + 1. -0.99788E+01 0.96227E+00 -0.24229E+01 + 1. -0.97102E+01 0.12777E+02 -0.24165E+01 + 1. -0.19967E+02 -0.10744E+01 -0.24093E+01 + 1. 0.49092E+01 0.16533E+02 -0.24049E+01 + 1. -0.78179E+01 -0.15735E+02 -0.23950E+01 + 1. 0.80264E+01 0.11679E+02 -0.23928E+01 + 1. -0.78711E+01 0.67325E+01 -0.23848E+01 + 1. 0.31366E+01 -0.13720E+02 -0.23735E+01 + 1. 0.54792E+01 -0.38359E+01 -0.23714E+01 + 1. -0.59172E+01 0.61952E+01 -0.23660E+01 + 1. -0.57233E+01 0.17302E+02 -0.23563E+01 + 1. 0.14603E+00 0.15149E+02 -0.23497E+01 + 1. 0.25845E+01 0.88440E+00 -0.23405E+01 + 1. 0.17362E+02 -0.95715E+01 -0.23397E+01 + 1. 0.11534E+01 -0.16223E+02 -0.23296E+01 + 1. -0.84089E+01 -0.25905E+01 -0.23263E+01 + 1. 0.19541E+02 -0.32501E+01 -0.23188E+01 + 1. -0.11802E+02 0.11108E+02 -0.23116E+01 + 1. -0.27006E+01 -0.19745E+02 -0.23011E+01 + 1. -0.98518E+01 -0.64725E+01 -0.22952E+01 + 1. 0.81614E+01 -0.66429E+01 -0.22914E+01 + 1. -0.71254E+01 0.92173E+01 -0.22824E+01 + 1. 0.21287E+01 -0.34574E+01 -0.22792E+01 + 1. 0.11896E+02 0.63557E+01 -0.22681E+01 + 1. -0.97526E+01 -0.10871E+02 -0.22611E+01 + 1. -0.11700E+02 0.68331E+01 -0.22570E+01 + 1. 0.30662E+01 0.14458E+02 -0.22505E+01 + 1. 0.14171E+02 -0.45685E+01 -0.22430E+01 + 1. -0.18821E+02 0.66664E+01 -0.22398E+01 + 1. -0.57863E+01 -0.15355E+02 -0.22318E+01 + 1. 0.14780E+02 0.42095E+01 -0.22222E+01 + 1. 0.35268E+01 -0.11662E+02 -0.22156E+01 + 1. -0.90335E+01 0.15043E+02 -0.22118E+01 + 1. -0.10680E+02 0.29071E+01 -0.22026E+01 + 1. -0.16442E+01 0.17573E+02 -0.21949E+01 + 1. -0.12463E+02 -0.10635E+02 -0.21911E+01 + 1. 0.17123E+02 0.10066E+02 -0.21818E+01 + 1. -0.16514E+01 -0.54798E+01 -0.21796E+01 + 1. -0.30526E+01 0.11100E+02 -0.21728E+01 + 1. -0.18562E+02 -0.69968E+01 -0.21608E+01 + 1. -0.12060E+01 -0.14141E+02 -0.21562E+01 + 1. -0.29388E+01 0.29829E+01 -0.21524E+01 + 1. -0.84594E+01 0.11046E+02 -0.21410E+01 + 1. -0.89089E+00 0.23152E+01 -0.21379E+01 + 1. 0.31645E+00 -0.93736E+01 -0.21318E+01 + 1. 0.32641E+01 -0.73992E+01 -0.21265E+01 + 1. 0.11351E+02 0.42815E+01 -0.21142E+01 + 1. -0.44070E+01 0.12476E+01 -0.21077E+01 + 1. 0.68816E+01 0.15566E+02 -0.21014E+01 + 1. -0.13837E+02 -0.72561E+01 -0.20966E+01 + 1. 0.99827E+01 0.96543E+00 -0.20915E+01 + 1. 0.60253E+01 0.52506E+01 -0.20814E+01 + 1. -0.57319E+01 -0.18867E+02 -0.20744E+01 + 1. -0.13774E+02 0.11831E+02 -0.20712E+01 + 1. 0.19376E+02 0.10053E+01 -0.20656E+01 + 1. 0.64990E+01 -0.13958E+02 -0.20556E+01 + 1. 0.13347E+02 -0.10291E+02 -0.20493E+01 + 1. -0.53116E+01 -0.13152E+01 -0.20404E+01 + 1. -0.31852E+00 -0.18973E+02 -0.20338E+01 + 1. -0.63674E+01 -0.85854E+01 -0.20287E+01 + 1. -0.14709E+02 -0.11624E+02 -0.20212E+01 + 1. -0.15401E+02 0.26950E+01 -0.20181E+01 + 1. 0.13769E+02 0.79632E+00 -0.20089E+01 + 1. 0.12702E+01 0.94158E+01 -0.20035E+01 + 1. 0.88371E+01 0.69889E+01 -0.19978E+01 + 1. 0.96308E+01 -0.10546E+02 -0.19924E+01 + 1. 0.52091E+00 -0.12373E+02 -0.19863E+01 + 1. -0.10426E+02 -0.14339E+02 -0.19773E+01 + 1. -0.19600E+02 0.34461E+01 -0.19675E+01 + 1. -0.16625E+02 0.48110E+01 -0.19642E+01 + 1. 0.70920E+00 0.17273E+02 -0.19552E+01 + 1. 0.31287E+01 -0.11133E+01 -0.19494E+01 + 1. -0.16854E+02 0.10642E+02 -0.19452E+01 + 1. 0.64720E+01 0.18168E+02 -0.19400E+01 + 1. 0.11074E+02 0.15795E+02 -0.19318E+01 + 1. 0.11805E+02 0.84020E+01 -0.19210E+01 + 1. -0.17318E+02 0.17475E+01 -0.19174E+01 + 1. 0.11506E+02 -0.16261E+02 -0.19123E+01 + 1. -0.13567E+02 -0.16535E+01 -0.19030E+01 + 1. -0.85160E+01 0.40444E+01 -0.18943E+01 + 1. 0.12025E+02 -0.14096E+02 -0.18881E+01 + 1. -0.12829E+02 -0.13187E+02 -0.18866E+01 + 1. -0.17152E+02 -0.29506E+01 -0.18756E+01 + 1. -0.39411E+01 0.53099E+01 -0.18674E+01 + 1. 0.28579E+01 0.63375E+01 -0.18608E+01 + 1. 0.14865E+02 0.13204E+02 -0.18595E+01 + 1. 0.10136E+02 -0.70004E+01 -0.18494E+01 + 1. -0.11652E+02 -0.84992E+01 -0.18447E+01 + 1. 0.79544E+01 -0.45258E+01 -0.18334E+01 + 1. 0.95655E+01 0.13945E+02 -0.18315E+01 + 1. 0.84807E+01 -0.17910E+02 -0.18226E+01 + 1. -0.16833E+01 -0.91925E+01 -0.18167E+01 + 1. 0.70810E+01 -0.83661E+01 -0.18103E+01 + 1. -0.56690E+01 -0.13146E+02 -0.18048E+01 + 1. -0.51936E+01 -0.42906E+01 -0.17981E+01 + 1. 0.12810E+02 0.25966E+01 -0.17905E+01 + 1. 0.22759E+01 0.41709E+01 -0.17827E+01 + 1. 0.12371E+01 -0.14247E+02 -0.17777E+01 + 1. 0.68936E+01 0.99620E+01 -0.17729E+01 + 1. 0.96696E+01 0.17472E+02 -0.17666E+01 + 1. 0.68955E+01 -0.10598E+02 -0.17542E+01 + 1. 0.75292E+01 -0.16026E+02 -0.17500E+01 + 1. 0.19742E+02 0.31243E+01 -0.17461E+01 + 1. -0.26289E+01 0.90267E+01 -0.17382E+01 + 1. -0.64141E+01 0.15505E+02 -0.17327E+01 + 1. 0.11969E+02 0.13967E+02 -0.17264E+01 + 1. -0.37429E+01 -0.97176E+01 -0.17158E+01 + 1. -0.79247E+01 -0.61267E+01 -0.17067E+01 + 1. -0.10007E+02 -0.11162E+01 -0.17040E+01 + 1. 0.16569E+02 0.32101E+01 -0.16965E+01 + 1. 0.12967E+02 -0.66305E+01 -0.16922E+01 + 1. -0.25932E+01 0.19812E+02 -0.16806E+01 + 1. 0.79823E+01 -0.23769E+01 -0.16799E+01 + 1. 0.15105E+02 -0.92270E+01 -0.16733E+01 + 1. -0.45385E+00 -0.30404E+01 -0.16657E+01 + 1. -0.13870E+02 0.72486E+01 -0.16581E+01 + 1. -0.11114E+02 -0.16615E+02 -0.16532E+01 + 1. -0.13049E+02 0.13986E+02 -0.16432E+01 + 1. 0.16187E+02 -0.11059E+02 -0.16366E+01 + 1. 0.26743E+01 -0.19635E+02 -0.16290E+01 + 1. -0.17019E+02 0.73401E+01 -0.16261E+01 + 1. -0.38585E+01 0.16386E+02 -0.16142E+01 + 1. 0.87263E+01 0.40035E+01 -0.16081E+01 + 1. 0.53954E+01 0.13790E+02 -0.16013E+01 + 1. 0.18572E+02 0.61562E+01 -0.15971E+01 + 1. -0.16758E+02 -0.57908E+01 -0.15926E+01 + 1. -0.15663E+02 -0.93332E+01 -0.15833E+01 + 1. 0.43272E+01 0.95065E+01 -0.15773E+01 + 1. -0.97762E+01 -0.39957E+01 -0.15673E+01 + 1. -0.76198E+01 -0.17659E+02 -0.15647E+01 + 1. 0.33637E+01 -0.16214E+02 -0.15581E+01 + 1. -0.42316E+01 -0.16747E+02 -0.15497E+01 + 1. 0.15650E+02 0.76445E+01 -0.15423E+01 + 1. 0.15421E+01 0.19430E+02 -0.15366E+01 + 1. -0.79251E+01 -0.11348E+02 -0.15325E+01 + 1. 0.52464E+01 -0.18935E+02 -0.15252E+01 + 1. 0.23204E+01 -0.10140E+02 -0.15137E+01 + 1. 0.64660E+01 0.12889E+01 -0.15114E+01 + 1. 0.10288E+02 -0.33649E+01 -0.15050E+01 + 1. -0.19183E+02 -0.32493E+01 -0.14945E+01 + 1. -0.54347E+01 0.13626E+02 -0.14873E+01 + 1. 0.17892E+02 -0.49917E+01 -0.14846E+01 + 1. -0.97241E+01 0.63921E+01 -0.14742E+01 + 1. -0.13859E+02 0.42874E+01 -0.14674E+01 + 1. -0.11058E+02 0.14094E+02 -0.14640E+01 + 1. 0.16803E+02 -0.76363E+01 -0.14588E+01 + 1. 0.17630E+02 0.15080E+00 -0.14485E+01 + 1. 0.47746E+01 -0.59322E+01 -0.14430E+01 + 1. -0.56984E+01 0.26492E+01 -0.14335E+01 + 1. -0.21811E+01 -0.71414E+00 -0.14320E+01 + 1. -0.46269E+00 0.13394E+02 -0.14243E+01 + 1. -0.12745E+02 -0.15331E+02 -0.14149E+01 + 1. -0.12086E+02 -0.50587E+01 -0.14099E+01 + 1. 0.21218E+01 -0.56893E+01 -0.14039E+01 + 1. 0.18099E+02 -0.19202E+01 -0.13968E+01 + 1. -0.33627E+01 -0.64127E+01 -0.13889E+01 + 1. -0.11704E+02 0.16137E+02 -0.13833E+01 + 1. -0.14856E+02 0.14788E-01 -0.13774E+01 + 1. 0.11331E+02 -0.56047E+00 -0.13671E+01 + 1. 0.98624E+01 0.11103E+02 -0.13638E+01 + 1. 0.10843E+01 0.72153E+01 -0.13592E+01 + 1. -0.20093E+01 -0.17873E+02 -0.13500E+01 + 1. 0.16362E+01 0.12780E+02 -0.13461E+01 + 1. -0.15270E+02 -0.35704E+01 -0.13356E+01 + 1. -0.41672E+01 -0.11841E+02 -0.13269E+01 + 1. -0.21776E+01 -0.15755E+02 -0.13204E+01 + 1. -0.65615E+01 0.11084E+02 -0.13168E+01 + 1. -0.47169E+01 0.19264E+02 -0.13085E+01 + 1. 0.93956E+00 0.16197E+01 -0.13023E+01 + 1. 0.49735E+01 0.67723E+01 -0.12993E+01 + 1. -0.16535E+01 0.15715E+02 -0.12868E+01 + 1. 0.48559E+01 -0.22043E+01 -0.12816E+01 + 1. -0.11598E+01 0.62842E+01 -0.12761E+01 + 1. 0.14163E+02 -0.14086E+02 -0.12709E+01 + 1. 0.16153E+02 0.54784E+01 -0.12626E+01 + 1. -0.12049E+01 -0.11323E+02 -0.12562E+01 + 1. 0.16299E+02 -0.37665E+01 -0.12521E+01 + 1. 0.12168E+02 -0.41319E+01 -0.12439E+01 + 1. -0.11367E+01 0.10845E+02 -0.12395E+01 + 1. 0.13550E+02 -0.10425E+01 -0.12274E+01 + 1. -0.18566E+02 -0.13430E+00 -0.12240E+01 + 1. -0.81618E+01 0.10534E+01 -0.12147E+01 + 1. 0.84728E+01 -0.13960E+02 -0.12096E+01 + 1. -0.95176E+01 -0.12563E+02 -0.12061E+01 + 1. -0.11583E+01 -0.72036E+01 -0.11957E+01 + 1. 0.14923E+02 -0.62968E+01 -0.11876E+01 + 1. 0.15409E+02 -0.45714E-01 -0.11824E+01 + 1. -0.14339E+02 -0.54240E+01 -0.11754E+01 + 1. -0.66718E+01 -0.27065E+01 -0.11707E+01 + 1. -0.11711E+02 0.14926E+01 -0.11617E+01 + 1. -0.68879E+01 0.18768E+02 -0.11571E+01 + 1. -0.78874E+01 -0.13730E+02 -0.11481E+01 + 1. 0.28341E+00 0.42193E+01 -0.11426E+01 + 1. -0.13414E+02 0.96085E+01 -0.11345E+01 + 1. 0.10439E+02 -0.12679E+02 -0.11330E+01 + 1. 0.14323E+02 0.11290E+02 -0.11231E+01 + 1. -0.86610E+01 0.16950E+02 -0.11199E+01 + 1. -0.30408E+01 0.69641E+01 -0.11111E+01 + 1. -0.15611E+02 0.90018E+01 -0.11063E+01 + 1. 0.75562E+01 0.13896E+02 -0.10955E+01 + 1. 0.41446E+01 0.13378E+01 -0.10908E+01 + 1. -0.86038E+01 0.82292E+01 -0.10856E+01 + 1. 0.11375E+02 -0.10065E+02 -0.10787E+01 + 1. 0.13671E+02 0.77269E+01 -0.10726E+01 + 1. -0.62550E+01 0.16613E+00 -0.10643E+01 + 1. 0.29527E+01 0.16340E+02 -0.10551E+01 + 1. 0.13282E+02 -0.12038E+02 -0.10523E+01 + 1. -0.15634E+02 0.11963E+02 -0.10436E+01 + 1. 0.84268E+01 0.88612E+01 -0.10366E+01 + 1. 0.66697E+01 -0.76473E+00 -0.10313E+01 + 1. 0.13051E+02 -0.85369E+01 -0.10264E+01 + 1. -0.82151E+01 0.13222E+02 -0.10159E+01 + 1. -0.24579E+01 0.13478E+02 -0.10083E+01 + 1. 0.10139E+02 0.54854E+01 -0.10062E+01 + 1. -0.10820E+02 0.84131E+01 -0.99655E+00 + 1. 0.37696E+01 0.19595E+02 -0.98742E+00 + 1. 0.33643E+01 0.11176E+02 -0.98219E+00 + 1. 0.45778E+01 -0.14061E+02 -0.97710E+00 + 1. 0.42068E+01 0.41049E+01 -0.96992E+00 + 1. -0.24250E+01 -0.36394E+01 -0.96204E+00 + 1. -0.19189E+02 -0.53520E+01 -0.95752E+00 + 1. -0.41403E+01 -0.25622E+01 -0.95108E+00 + 1. -0.83570E+01 -0.80208E+01 -0.94279E+00 + 1. -0.13596E+02 0.22226E+01 -0.93392E+00 + 1. 0.55176E+01 -0.16975E+02 -0.93197E+00 + 1. -0.13737E+02 -0.94448E+01 -0.92252E+00 + 1. 0.98267E+01 -0.15623E+02 -0.91429E+00 + 1. 0.64507E+01 0.12067E+02 -0.91002E+00 + 1. 0.83904E+01 0.13274E+01 -0.90447E+00 + 1. -0.59027E+01 0.76663E+01 -0.89713E+00 + 1. 0.84773E+01 -0.11921E+02 -0.88689E+00 + 1. 0.14109E+02 -0.30673E+01 -0.88273E+00 + 1. 0.50128E+01 -0.81358E+01 -0.87672E+00 + 1. 0.13107E+02 0.51292E+01 -0.87199E+00 + 1. -0.40023E+01 -0.14374E+02 -0.86044E+00 + 1. 0.12632E+01 -0.11434E+01 -0.85353E+00 + 1. -0.15468E+02 0.63206E+01 -0.85088E+00 + 1. 0.60641E+01 -0.12368E+02 -0.84664E+00 + 1. 0.77003E+01 0.16939E+02 -0.83994E+00 + 1. 0.64362E+01 0.33544E+01 -0.83265E+00 + 1. -0.31456E+00 -0.16663E+02 -0.82594E+00 + 1. 0.11836E+02 0.11674E+02 -0.81415E+00 + 1. -0.27845E+01 0.10935E+01 -0.80757E+00 + 1. 0.34565E+01 -0.40830E+01 -0.80624E+00 + 1. -0.18711E+02 0.48534E+01 -0.79693E+00 + 1. -0.63282E+01 0.47967E+01 -0.78797E+00 + 1. -0.14546E+02 -0.13629E+02 -0.78543E+00 + 1. 0.26467E+01 0.84305E+01 -0.77744E+00 + 1. -0.10424E+02 -0.97034E+01 -0.77125E+00 + 1. -0.11819E+02 -0.22091E+01 -0.76263E+00 + 1. -0.93974E+01 -0.15552E+02 -0.75761E+00 + 1. 0.89241E+01 -0.81866E+01 -0.75318E+00 + 1. -0.11848E+02 0.53271E+01 -0.74388E+00 + 1. 0.17464E+02 0.84898E+01 -0.73690E+00 + 1. -0.56967E+01 -0.72015E+01 -0.72934E+00 + 1. -0.15869E+02 -0.16874E+01 -0.72483E+00 + 1. 0.41523E+01 -0.10263E+02 -0.71914E+00 + 1. 0.21018E+01 -0.12667E+02 -0.70693E+00 + 1. -0.99451E+01 0.11244E+02 -0.70197E+00 + 1. -0.11403E+02 -0.11469E+02 -0.69944E+00 + 1. -0.55147E+01 -0.10061E+02 -0.68674E+00 + 1. -0.49959E+00 0.87712E+01 -0.68084E+00 + 1. -0.17772E+02 0.89625E+01 -0.67793E+00 + 1. 0.14707E+02 0.21098E+01 -0.66825E+00 + 1. 0.96653E+01 -0.53916E+01 -0.66188E+00 + 1. 0.10934E+02 0.23993E+01 -0.65943E+00 + 1. 0.71875E+01 0.63998E+01 -0.65224E+00 + 1. -0.68596E+01 -0.47983E+01 -0.64465E+00 + 1. -0.40821E+00 -0.48718E+01 -0.63668E+00 + 1. 0.93179E+01 0.15728E+02 -0.62706E+00 + 1. -0.41618E+01 0.10437E+02 -0.62334E+00 + 1. -0.16884E+02 -0.77650E+01 -0.61493E+00 + 1. 0.13821E+01 0.14694E+02 -0.60875E+00 + 1. 0.22953E+01 -0.17769E+02 -0.60564E+00 + 1. 0.19924E+02 -0.68720E+00 -0.59637E+00 + 1. 0.54482E+01 0.15558E+02 -0.59106E+00 + 1. -0.38492E+01 -0.19055E+02 -0.58393E+00 + 1. 0.17236E+01 -0.80640E+01 -0.57762E+00 + 1. -0.18906E+02 0.19775E+01 -0.57165E+00 + 1. 0.91243E+01 -0.55956E+00 -0.56029E+00 + 1. 0.65017E+01 0.83231E+01 -0.55455E+00 + 1. 0.64712E+01 -0.51713E+01 -0.55116E+00 + 1. -0.69816E+01 -0.15772E+02 -0.54068E+00 + 1. -0.23406E+01 -0.13005E+02 -0.53902E+00 + 1. -0.10981E+02 -0.67026E+01 -0.52923E+00 + 1. -0.24876E+01 0.46774E+01 -0.52269E+00 + 1. -0.92122E+00 0.19541E+02 -0.51594E+00 + 1. 0.10172E+02 0.74345E+01 -0.51126E+00 + 1. 0.18636E+02 -0.70323E+01 -0.50284E+00 + 1. -0.30790E+01 0.18058E+02 -0.49919E+00 + 1. -0.15989E+02 -0.11512E+02 -0.48671E+00 + 1. 0.10549E+01 0.10875E+02 -0.48443E+00 + 1. -0.16188E+01 -0.19864E+02 -0.47625E+00 + 1. 0.11118E+02 0.98138E+01 -0.46843E+00 + 1. -0.12952E+02 -0.37376E+00 -0.46620E+00 + 1. 0.69531E+01 -0.18449E+02 -0.45521E+00 + 1. -0.17265E+02 -0.98187E+01 -0.44970E+00 + 1. -0.41877E+01 -0.46531E+00 -0.44117E+00 + 1. -0.12208E+02 0.12205E+02 -0.43914E+00 + 1. -0.95536E+01 -0.17536E+02 -0.42876E+00 + 1. -0.96184E+01 0.27661E+01 -0.42355E+00 + 1. -0.40804E+01 0.32477E+01 -0.41590E+00 + 1. 0.19123E+02 -0.38051E+01 -0.40843E+00 + 1. -0.82307E+01 -0.12733E+01 -0.40559E+00 + 1. -0.16944E+02 0.34875E+01 -0.39543E+00 + 1. -0.74559E+01 0.28851E+01 -0.39258E+00 + 1. -0.19947E+02 -0.13942E+01 -0.38307E+00 + 1. 0.15718E+02 0.96288E+01 -0.37679E+00 + 1. 0.18309E+02 0.27444E+01 -0.37078E+00 + 1. -0.14797E+02 -0.77365E+01 -0.36068E+00 + 1. 0.12426E+02 0.15459E+02 -0.35622E+00 + 1. -0.56955E+01 0.17340E+02 -0.35237E+00 + 1. 0.16237E+02 0.11567E+02 -0.34018E+00 + 1. 0.37607E+00 -0.19833E+02 -0.33349E+00 + 1. -0.77789E+01 0.63598E+01 -0.32705E+00 + 1. 0.14337E+01 -0.37201E+01 -0.32518E+00 + 1. 0.10217E+02 0.12781E+02 -0.31660E+00 + 1. -0.16956E+02 -0.41970E+01 -0.31187E+00 + 1. 0.18164E+01 0.54453E+01 -0.30476E+00 + 1. 0.19587E+01 -0.15552E+02 -0.29737E+00 + 1. 0.80261E+00 -0.10614E+02 -0.29068E+00 + 1. -0.16574E+02 0.81301E+00 -0.28259E+00 + 1. 0.35473E+01 0.14216E+02 -0.27542E+00 + 1. -0.41506E+00 -0.14667E+02 -0.27217E+00 + 1. -0.30350E+01 -0.84992E+01 -0.26332E+00 + 1. 0.65598E+01 -0.31484E+01 -0.25465E+00 + 1. -0.83455E+01 -0.34022E+01 -0.24824E+00 + 1. 0.81343E+01 0.10994E+02 -0.24433E+00 + 1. 0.14308E+02 -0.10496E+02 -0.23746E+00 + 1. -0.84384E+00 -0.17046E+01 -0.22911E+00 + 1. -0.11426E+02 -0.13918E+02 -0.22655E+00 + 1. 0.17229E+02 -0.99238E+01 -0.21648E+00 + 1. 0.48868E+01 0.17789E+02 -0.21168E+00 + 1. -0.99811E+01 0.41277E+00 -0.20349E+00 + 1. -0.83421E-01 0.16573E+02 -0.19493E+00 + 1. 0.19926E+02 0.15267E+01 -0.18691E+00 + 1. -0.14090E+02 0.13048E+02 -0.18632E+00 + 1. -0.82683E+01 0.10086E+02 -0.17994E+00 + 1. -0.13232E+02 -0.12089E+02 -0.17027E+00 + 1. 0.67067E+01 -0.14667E+02 -0.16349E+00 + 1. -0.56522E+01 -0.17465E+02 -0.15818E+00 + 1. -0.37376E+01 0.14767E+02 -0.14780E+00 + 1. -0.18404E+02 0.69140E+01 -0.14586E+00 + 1. 0.13808E+02 0.13032E+02 -0.13808E+00 + 1. 0.12920E+02 0.77095E+00 -0.13332E+00 + 1. 0.11166E+02 -0.79063E+01 -0.12188E+00 + 1. 0.11712E+02 -0.22519E+01 -0.11345E+00 + 1. -0.99683E+01 0.15389E+02 -0.11155E+00 + 1. 0.29411E+01 -0.31446E+00 -0.10330E+00 + 1. -0.17833E+02 -0.21032E+01 -0.96015E-01 + 1. -0.43016E+01 0.12636E+02 -0.92979E-01 + 1. -0.93134E+01 -0.54113E+01 -0.83324E-01 + 1. 0.16910E+01 0.32271E+01 -0.78401E-01 + 1. -0.68112E+00 0.12961E+01 -0.67867E-01 + 1. 0.12726E+02 -0.15139E+02 -0.64059E-01 + 1. -0.41427E+01 -0.48671E+01 -0.57850E-01 + 1. 0.75879E+01 -0.67789E+01 -0.51261E-01 + 1. 0.56460E+01 0.10182E+02 -0.43949E-01 + 1. 0.14026E+01 0.17923E+02 -0.39997E-01 + 1. 0.40139E+01 -0.19535E+02 -0.30328E-01 + 1. -0.12492E+02 0.74426E+01 -0.25239E-01 + 1. -0.99543E+01 0.48661E+01 -0.13476E-01 + 1. -0.78053E+00 -0.89605E+01 -0.10096E-01 + 1. 0.14702E+02 0.63516E+01 -0.53276E-02 + 1. 0.14684E+02 0.40336E+01 0.47004E-02 + 1. -0.64731E+01 0.14469E+02 0.95324E-02 + 1. -0.26692E+01 -0.10803E+02 0.14102E-01 + 1. 0.16602E+02 -0.60727E+01 0.26419E-01 + 1. 0.41675E+01 -0.12357E+02 0.28076E-01 + 1. 0.16387E+02 -0.16681E+01 0.36083E-01 + 1. 0.56278E+01 0.51874E+01 0.42367E-01 + 1. -0.66936E+01 -0.12553E+02 0.49625E-01 + 1. 0.18893E+02 0.49731E+01 0.56476E-01 + 1. 0.70405E+01 -0.96728E+01 0.62090E-01 + 1. -0.12676E+02 -0.76622E+01 0.73267E-01 + 1. 0.84926E+01 -0.17141E+02 0.77894E-01 + 1. -0.11639E+02 0.32626E+01 0.81661E-01 + 1. 0.17446E+02 0.63670E+01 0.87488E-01 + 1. 0.96043E+01 -0.10586E+02 0.98967E-01 + 1. 0.15326E+02 -0.12850E+02 0.10291E+00 + 1. 0.84668E+01 -0.38188E+01 0.10984E+00 + 1. -0.11203E+02 -0.39994E+01 0.11343E+00 + 1. 0.11963E+02 -0.13209E+02 0.12504E+00 + 1. -0.20386E+01 -0.57926E+01 0.13234E+00 + 1. 0.13374E+02 -0.56184E+01 0.13704E+00 + 1. -0.16889E+02 0.10610E+02 0.14223E+00 + 1. -0.13670E+02 0.56278E+01 0.14756E+00 + 1. 0.15705E+02 -0.86737E+01 0.15694E+00 + 1. -0.13724E+02 -0.39707E+01 0.16039E+00 + 1. 0.52382E+01 -0.39454E-01 0.17121E+00 + 1. 0.45448E+01 0.84802E+01 0.17757E+00 + 1. 0.16772E+02 0.10398E+01 0.18059E+00 + 1. 0.46765E+01 0.12161E+02 0.19258E+00 + 1. -0.12540E+02 0.14651E+02 0.19906E+00 + 1. -0.47360E+01 0.59210E+01 0.20148E+00 + 1. -0.11889E+01 0.12338E+02 0.20903E+00 + 1. -0.14397E+02 0.10859E+02 0.21533E+00 + 1. 0.11186E+02 0.41827E+01 0.22469E+00 + 1. 0.82061E+01 0.31823E+01 0.23281E+00 + 1. 0.13308E+02 0.10083E+02 0.23735E+00 + 1. -0.83480E+01 -0.97235E+01 0.24258E+00 + 1. -0.20571E+01 0.27983E+01 0.25096E+00 + 1. 0.11968E+02 0.79430E+01 0.25709E+00 + 1. -0.10474E+01 0.14338E+02 0.26271E+00 + 1. -0.23850E+01 0.90014E+01 0.27076E+00 + 1. -0.11748E+02 0.10275E+02 0.27330E+00 + 1. -0.53517E+01 0.13677E+01 0.28483E+00 + 1. 0.32592E+01 -0.69261E+01 0.28781E+00 + 1. -0.16411E+02 0.78020E+01 0.29849E+00 + 1. 0.11412E+01 -0.62580E+01 0.30330E+00 + 1. -0.15875E+02 -0.60014E+01 0.30698E+00 + 1. 0.10602E+02 0.58315E+00 0.31364E+00 + 1. -0.34922E+01 -0.16027E+02 0.32257E+00 + 1. -0.11390E+02 -0.16224E+02 0.33084E+00 + 1. 0.39195E+01 -0.16738E+02 0.33552E+00 + 1. -0.10326E+02 0.12999E+02 0.34264E+00 + 1. 0.73779E+01 0.15300E+02 0.35101E+00 + 1. -0.55932E+01 -0.14645E+02 0.35578E+00 + 1. -0.14737E+02 0.33560E+01 0.36240E+00 + 1. -0.60505E+01 -0.15094E+01 0.36755E+00 + 1. 0.36236E+01 0.66112E+01 0.37732E+00 + 1. 0.16798E+00 -0.12608E+02 0.38247E+00 + 1. 0.72871E+01 0.18490E+02 0.38790E+00 + 1. 0.16714E+02 0.43102E+01 0.39731E+00 + 1. 0.37126E+01 -0.23776E+01 0.40403E+00 + 1. -0.61330E+01 0.94868E+01 0.41019E+00 + 1. -0.76002E+01 -0.18203E+02 0.41765E+00 + 1. -0.63071E+01 0.12468E+02 0.42348E+00 + 1. -0.18381E+02 -0.68252E+01 0.43028E+00 + 1. 0.10681E+02 0.16787E+02 0.43453E+00 + 1. -0.19613E+02 -0.36885E+01 0.44030E+00 + 1. -0.32458E+00 0.55653E+01 0.44869E+00 + 1. 0.99011E+01 -0.13864E+02 0.45427E+00 + 1. 0.15091E+02 -0.44620E+01 0.46212E+00 + 1. -0.19899E+02 0.46211E+00 0.46907E+00 + 1. -0.10583E+01 -0.17987E+02 0.47645E+00 + 1. -0.99373E+01 -0.20810E+01 0.48502E+00 + 1. 0.42519E+01 0.26895E+01 0.49092E+00 + 1. -0.12426E+02 -0.56166E+01 0.49592E+00 + 1. 0.96419E+01 -0.22406E+01 0.50543E+00 + 1. 0.11276E+02 -0.49564E+01 0.51254E+00 + 1. -0.43035E+01 0.82712E+01 0.51951E+00 + 1. 0.87562E+01 0.57190E+01 0.52255E+00 + 1. -0.98103E+01 -0.80439E+01 0.52973E+00 + 1. 0.93003E+00 0.78673E+01 0.53374E+00 + 1. 0.17197E+02 -0.40408E+01 0.54489E+00 + 1. -0.76030E+01 -0.63109E+01 0.54785E+00 + 1. -0.19658E+01 0.16518E+02 0.55657E+00 + 1. -0.77571E+01 0.15939E+02 0.56500E+00 + 1. -0.47939E+01 -0.12097E+02 0.57170E+00 + 1. -0.96747E+01 0.69260E+01 0.57331E+00 + 1. 0.25352E+01 -0.99273E+01 0.58339E+00 + 1. -0.77733E+01 0.18056E+02 0.58819E+00 + 1. 0.10591E+02 -0.16850E+02 0.59576E+00 + 1. 0.69011E+01 0.13546E+01 0.60206E+00 + 1. -0.49182E+01 -0.85008E+01 0.61193E+00 + 1. 0.85278E+01 0.13440E+02 0.61435E+00 + 1. 0.18312E+02 -0.14200E+01 0.62641E+00 + 1. -0.14728E+02 0.64829E+00 0.63167E+00 + 1. 0.20568E+01 0.19765E+02 0.63357E+00 + 1. -0.14391E+02 -0.14058E+01 0.64521E+00 + 1. -0.93148E+01 -0.13763E+02 0.65280E+00 + 1. -0.57821E+01 0.19136E+02 0.65763E+00 + 1. 0.82697E+01 0.76702E+01 0.66629E+00 + 1. 0.10761E+01 0.39150E+00 0.67038E+00 + 1. 0.47870E+01 -0.47635E+01 0.67600E+00 + 1. 0.17081E+01 0.13021E+02 0.68262E+00 + 1. 0.12251E+02 -0.96847E+01 0.68914E+00 + 1. -0.19579E+02 0.34247E+01 0.69628E+00 + 1. -0.15279E+02 -0.96918E+01 0.70511E+00 + 1. -0.17988E+01 0.70343E+01 0.71293E+00 + 1. -0.76158E+01 0.90402E+00 0.71591E+00 + 1. -0.13343E+02 -0.14286E+02 0.72559E+00 + 1. -0.77009E+01 0.45528E+01 0.73123E+00 + 1. -0.11897E+02 -0.96075E+01 0.73896E+00 + 1. 0.13877E+02 -0.79018E+01 0.74452E+00 + 1. -0.17147E+02 0.51800E+01 0.74926E+00 + 1. 0.76375E+01 -0.92609E+00 0.75732E+00 + 1. 0.13576E+02 -0.13376E+01 0.76306E+00 + 1. -0.27824E+01 -0.23441E+01 0.76765E+00 + 1. 0.71138E+01 -0.11667E+02 0.77511E+00 + 1. 0.19086E+02 -0.54367E+01 0.78346E+00 + 1. -0.52939E+00 0.10322E+02 0.79140E+00 + 1. 0.21300E+01 -0.19440E+02 0.79403E+00 + 1. 0.30733E+01 0.10226E+02 0.80210E+00 + 1. -0.54885E+01 -0.35066E+01 0.81181E+00 + 1. 0.94158E+01 0.93509E+01 0.81756E+00 + 1. -0.39287E+01 0.16802E+02 0.82515E+00 + 1. -0.24279E+01 -0.11650E+00 0.82947E+00 + 1. -0.84699E+01 0.12344E+02 0.83856E+00 + 1. 0.36541E+01 0.15887E+02 0.84347E+00 + 1. -0.24727E+01 0.19486E+02 0.84804E+00 + 1. -0.99432E+01 -0.11857E+02 0.85713E+00 + 1. 0.29110E+01 -0.13692E+02 0.86305E+00 + 1. -0.85051E+01 -0.16421E+02 0.87231E+00 + 1. 0.12330E+02 0.24014E+01 0.87905E+00 + 1. -0.78797E+00 -0.34643E+01 0.88183E+00 + 1. -0.15572E+02 -0.31422E+01 0.89276E+00 + 1. -0.14138E+02 0.88907E+01 0.89556E+00 + 1. 0.12109E+02 0.59059E+01 0.90206E+00 + 1. 0.17329E+02 0.97619E+01 0.91131E+00 + 1. -0.23017E+01 -0.14390E+02 0.91385E+00 + 1. -0.98075E+01 0.93410E+01 0.92630E+00 + 1. 0.56942E+01 -0.70238E+01 0.93288E+00 + 1. 0.43256E+01 -0.86887E+01 0.93642E+00 + 1. -0.11443E+02 -0.64201E+00 0.94258E+00 + 1. -0.56014E+01 0.34083E+01 0.94874E+00 + 1. 0.15753E+02 0.78257E+01 0.95518E+00 + 1. -0.11281E+02 0.16499E+02 0.96655E+00 + 1. -0.54511E+01 -0.19167E+02 0.96988E+00 + 1. 0.14935E+02 0.58566E+00 0.97460E+00 + 1. 0.11784E+02 0.13020E+02 0.98134E+00 + 1. 0.65673E+01 0.13147E+02 0.98825E+00 + 1. 0.56804E+01 -0.17762E+02 0.99900E+00 + 1. -0.17999E+02 0.13659E+00 0.10065E+01 + 1. -0.78856E+01 0.81557E+01 0.10088E+01 + 1. 0.95583E+01 -0.65313E+01 0.10147E+01 + 1. -0.25175E+01 0.11051E+02 0.10211E+01 + 1. 0.15930E+02 -0.11032E+02 0.10324E+01 + 1. -0.17718E+02 0.22984E+01 0.10383E+01 + 1. 0.46983E+00 -0.16496E+02 0.10409E+01 + 1. 0.50458E+01 -0.14813E+02 0.10469E+01 + 1. -0.64371E+01 -0.10822E+02 0.10540E+01 + 1. -0.54238E+01 -0.63352E+01 0.10631E+01 + 1. 0.69438E+00 -0.15534E+01 0.10710E+01 + 1. -0.14929E+02 -0.12558E+02 0.10792E+01 + 1. -0.12029E+02 0.15196E+01 0.10853E+01 + 1. 0.34185E+01 0.47143E+01 0.10900E+01 + 1. 0.14771E+02 0.11376E+02 0.10988E+01 + 1. 0.62356E+01 0.16805E+02 0.11009E+01 + 1. -0.15569E+02 0.12364E+02 0.11113E+01 + 1. 0.87100E+01 0.17163E+02 0.11165E+01 + 1. 0.24450E+01 -0.46926E+01 0.11262E+01 + 1. -0.31581E+00 0.18132E+02 0.11310E+01 + 1. 0.88008E+01 -0.89787E+01 0.11397E+01 + 1. 0.79135E+01 -0.13611E+02 0.11428E+01 + 1. 0.60332E+01 0.33627E+01 0.11525E+01 + 1. -0.38089E+01 -0.17881E+02 0.11595E+01 + 1. 0.49042E+01 -0.10614E+02 0.11624E+01 + 1. 0.12918E+02 -0.36282E+01 0.11676E+01 + 1. 0.26228E+01 0.16562E+01 0.11736E+01 + 1. 0.37839E+01 0.18748E+02 0.11836E+01 + 1. -0.16309E+02 -0.11938E+01 0.11882E+01 + 1. -0.49425E+01 0.10941E+02 0.11960E+01 + 1. 0.19805E+02 -0.26366E+01 0.12049E+01 + 1. -0.34991E+01 -0.68905E+01 0.12090E+01 + 1. 0.16159E+01 0.15915E+02 0.12181E+01 + 1. 0.71639E+01 -0.16149E+02 0.12221E+01 + 1. 0.13461E+02 0.14559E+02 0.12326E+01 + 1. 0.49150E+01 0.14292E+02 0.12358E+01 + 1. 0.17331E+02 -0.77288E+01 0.12429E+01 + 1. -0.11464E+02 0.56796E+01 0.12525E+01 + 1. 0.72258E+01 0.96775E+01 0.12554E+01 + 1. -0.57305E+01 0.15956E+02 0.12654E+01 + 1. 0.13142E+02 -0.11891E+02 0.12732E+01 + 1. 0.19154E+02 0.36278E+00 0.12783E+01 + 1. 0.99251E+01 0.22224E+01 0.12850E+01 + 1. -0.73325E+01 -0.83213E+01 0.12920E+01 + 1. 0.10015E+02 0.14660E+02 0.12959E+01 + 1. 0.13947E+02 -0.14338E+02 0.13037E+01 + 1. -0.93093E+01 0.16981E+02 0.13082E+01 + 1. 0.18377E+02 0.76569E+01 0.13149E+01 + 1. -0.10035E+01 -0.11205E+02 0.13263E+01 + 1. -0.37092E+01 0.22726E+01 0.13315E+01 + 1. 0.27230E+01 0.82708E+01 0.13399E+01 + 1. 0.64214E+01 0.71747E+01 0.13445E+01 + 1. -0.99934E+01 0.17796E+01 0.13495E+01 + 1. -0.14186E+02 -0.62746E+01 0.13574E+01 + 1. 0.20980E+01 -0.11830E+02 0.13626E+01 + 1. 0.10811E+02 0.11201E+02 0.13695E+01 + 1. -0.30741E+01 0.56367E+01 0.13734E+01 + 1. -0.12159E+02 -0.27735E+01 0.13858E+01 + 1. -0.28163E+01 0.13779E+02 0.13903E+01 + 1. 0.12134E+02 -0.69284E+01 0.13964E+01 + 1. 0.14227E+01 -0.82672E+01 0.14002E+01 + 1. 0.43870E+00 0.25745E+01 0.14111E+01 + 1. -0.15291E+02 0.62942E+01 0.14175E+01 + 1. 0.15135E+02 -0.24375E+01 0.14210E+01 + 1. 0.55007E+01 -0.22459E+01 0.14268E+01 + 1. 0.68673E+01 -0.53113E+01 0.14375E+01 + 1. 0.19285E+02 0.30074E+01 0.14430E+01 + 1. -0.16757E+02 -0.83185E+01 0.14527E+01 + 1. 0.91503E+01 -0.15505E+02 0.14546E+01 + 1. 0.15815E+02 0.24880E+01 0.14623E+01 + 1. -0.19501E+01 -0.82840E+01 0.14682E+01 + 1. -0.19047E+02 -0.18416E+01 0.14775E+01 + 1. -0.12054E+02 -0.12059E+02 0.14848E+01 + 1. 0.57592E+01 -0.12983E+02 0.14907E+01 + 1. -0.12987E+02 0.37027E+01 0.14936E+01 + 1. -0.11983E+02 0.86789E+01 0.15031E+01 + 1. -0.17574E+02 -0.51030E+01 0.15132E+01 + 1. -0.12726E+02 0.11681E+02 0.15169E+01 + 1. -0.41805E+01 -0.13748E+02 0.15211E+01 + 1. -0.90869E+01 0.14625E+02 0.15267E+01 + 1. -0.16551E+02 -0.11091E+02 0.15350E+01 + 1. -0.88997E+01 -0.46846E+00 0.15461E+01 + 1. -0.14852E+01 -0.16223E+02 0.15490E+01 + 1. 0.13469E+02 0.76462E+01 0.15574E+01 + 1. -0.55261E+01 -0.16406E+02 0.15645E+01 + 1. 0.99083E+01 -0.12043E+02 0.15680E+01 + 1. -0.67586E+01 0.62549E+01 0.15752E+01 + 1. -0.91701E+01 -0.36830E+01 0.15860E+01 + 1. 0.11841E+02 -0.60123E+00 0.15932E+01 + 1. -0.37880E+01 -0.10046E+02 0.15939E+01 + 1. -0.45807E+01 -0.14216E+00 0.16047E+01 + 1. 0.81308E+00 -0.14388E+02 0.16110E+01 + 1. -0.73735E+01 0.10761E+02 0.16192E+01 + 1. -0.10763E+02 -0.65571E+01 0.16228E+01 + 1. -0.19102E+02 0.56933E+01 0.16281E+01 + 1. 0.23160E+01 -0.16003E+02 0.16351E+01 + 1. -0.29761E+01 -0.48063E+01 0.16414E+01 + 1. -0.17747E+02 0.84244E+01 0.16521E+01 + 1. 0.14044E+02 0.51623E+01 0.16543E+01 + 1. -0.67271E+00 -0.65840E+01 0.16619E+01 + 1. -0.27556E+01 -0.19720E+02 0.16690E+01 + 1. 0.35141E+00 -0.18987E+02 0.16755E+01 + 1. -0.71019E+01 -0.13749E+02 0.16811E+01 + 1. -0.15064E+01 0.43280E+01 0.16894E+01 + 1. 0.11589E+02 -0.15148E+02 0.16980E+01 + 1. -0.10419E+02 0.11366E+02 0.17046E+01 + 1. 0.20803E+01 0.60973E+01 0.17093E+01 + 1. 0.10244E+02 0.74750E+01 0.17177E+01 + 1. 0.16191E+02 0.58225E+01 0.17257E+01 + 1. 0.14648E+02 -0.60433E+01 0.17288E+01 + 1. 0.12063E+02 0.94930E+01 0.17335E+01 + 1. -0.28373E+01 -0.12206E+02 0.17427E+01 + 1. -0.13534E+02 -0.10731E+02 0.17483E+01 + 1. -0.13701E+02 0.13663E+02 0.17559E+01 + 1. -0.50876E-01 0.13354E+02 0.17606E+01 + 1. -0.11385E+02 0.13918E+02 0.17710E+01 + 1. 0.95938E+01 0.42007E+01 0.17792E+01 + 1. 0.95956E+01 -0.46837E+01 0.17847E+01 + 1. 0.96835E+01 -0.41425E+00 0.17924E+01 + 1. 0.10601E+01 0.11475E+02 0.17957E+01 + 1. 0.82088E+01 0.11641E+02 0.18014E+01 + 1. 0.38578E+01 -0.26728E+00 0.18131E+01 + 1. 0.39566E+01 -0.18422E+02 0.18182E+01 + 1. -0.15971E+02 0.99680E+01 0.18233E+01 + 1. 0.17262E+02 -0.38195E-01 0.18283E+01 + 1. 0.10516E+02 -0.81615E+01 0.18398E+01 + 1. -0.99651E+01 0.37746E+01 0.18419E+01 + 1. -0.76116E+01 -0.20816E+01 0.18474E+01 + 1. -0.68471E+00 0.24914E+00 0.18563E+01 + 1. 0.58651E+01 0.11111E+02 0.18630E+01 + 1. -0.70755E+01 -0.45879E+01 0.18726E+01 + 1. -0.78266E+01 0.26593E+01 0.18754E+01 + 1. -0.58486E+01 0.13975E+02 0.18841E+01 + 1. 0.14762E+02 -0.94847E+01 0.18887E+01 + 1. 0.14626E+02 0.93362E+01 0.18980E+01 + 1. -0.10240E+02 -0.96876E+01 0.19055E+01 + 1. 0.73287E+01 0.51589E+01 0.19082E+01 + 1. -0.81457E+01 -0.11662E+02 0.19134E+01 + 1. -0.10723E+02 -0.14903E+02 0.19228E+01 + 1. -0.13279E+02 -0.82716E+01 0.19286E+01 + 1. -0.15518E+02 0.20516E+01 0.19386E+01 + 1. 0.45182E+00 0.19877E+02 0.19447E+01 + 1. 0.18141E+02 0.49964E+01 0.19506E+01 + 1. 0.41057E+01 -0.61912E+01 0.19597E+01 + 1. -0.64284E+00 0.81459E+01 0.19604E+01 + 1. 0.74624E+01 -0.73081E+01 0.19713E+01 + 1. 0.36834E+01 0.12119E+02 0.19753E+01 + 1. 0.84213E+01 -0.17775E+02 0.19826E+01 + 1. -0.17303E+02 -0.31720E+01 0.19870E+01 + 1. 0.61340E+00 -0.44335E+01 0.19989E+01 + 1. -0.13379E+02 0.64149E+01 0.20002E+01 + 1. 0.21608E+01 -0.28130E+01 0.20091E+01 + 1. 0.16741E+01 0.40584E+01 0.20198E+01 + 1. 0.76130E+01 -0.30041E+01 0.20206E+01 + 1. 0.45363E+01 0.94099E+01 0.20279E+01 + 1. 0.79086E+01 0.23602E+01 0.20396E+01 + 1. -0.10022E+02 -0.17278E+02 0.20415E+01 + 1. -0.15615E+02 0.41148E+01 0.20477E+01 + 1. 0.62576E+01 0.74038E-01 0.20568E+01 + 1. 0.17768E+02 -0.28617E+01 0.20656E+01 + 1. -0.19792E+02 0.16767E+01 0.20699E+01 + 1. -0.40597E+01 0.18756E+02 0.20743E+01 + 1. 0.11713E+02 0.16013E+02 0.20841E+01 + 1. 0.62725E+01 -0.91195E+01 0.20898E+01 + 1. 0.13013E+02 0.11660E+02 0.20935E+01 + 1. -0.87368E+00 -0.13196E+02 0.21036E+01 + 1. 0.31165E+01 0.14186E+02 0.21126E+01 + 1. 0.16579E+02 -0.51297E+01 0.21141E+01 + 1. -0.64979E+01 0.17788E+02 0.21213E+01 + 1. -0.34746E+01 0.91649E+01 0.21315E+01 + 1. -0.13866E+02 -0.36620E+01 0.21335E+01 + 1. -0.40996E+00 0.15515E+02 0.21412E+01 + 1. 0.24411E+01 0.17578E+02 0.21515E+01 + 1. -0.61170E+01 0.80648E+01 0.21547E+01 + 1. 0.14862E+02 0.13281E+02 0.21621E+01 + 1. 0.11065E+02 -0.10428E+02 0.21696E+01 + 1. -0.43434E+01 -0.22662E+01 0.21748E+01 + 1. -0.10932E+01 -0.17424E+01 0.21839E+01 + 1. -0.15141E+01 0.22118E+01 0.21916E+01 + 1. 0.98961E-01 -0.95634E+01 0.21949E+01 + 1. 0.17051E+02 -0.94867E+01 0.22034E+01 + 1. 0.48711E+01 0.60535E+01 0.22128E+01 + 1. -0.89493E+01 0.59041E+01 0.22186E+01 + 1. 0.14896E+02 -0.12457E+02 0.22259E+01 + 1. 0.13426E+02 0.13655E+01 0.22310E+01 + 1. -0.11064E+02 -0.43774E+01 0.22391E+01 + 1. 0.12188E+02 0.40600E+01 0.22444E+01 + 1. 0.11533E+02 -0.25535E+01 0.22476E+01 + 1. -0.68599E+01 -0.14743E+00 0.22539E+01 + 1. 0.54741E+01 0.18747E+02 0.22623E+01 + 1. -0.19883E+01 0.17970E+02 0.22731E+01 + 1. -0.13040E+02 0.23678E+00 0.22758E+01 + 1. -0.40738E+01 0.15378E+02 0.22845E+01 + 1. -0.86138E+01 -0.60501E+01 0.22878E+01 + 1. 0.78804E+01 0.15689E+02 0.22977E+01 + 1. 0.14115E+00 0.61610E+01 0.23007E+01 + 1. 0.16260E+02 0.10739E+02 0.23092E+01 + 1. 0.48490E+01 0.18184E+01 0.23151E+01 + 1. -0.65921E+01 -0.18126E+02 0.23213E+01 + 1. -0.41149E+01 0.12483E+02 0.23288E+01 + 1. -0.16083E+02 -0.65537E+01 0.23397E+01 + 1. 0.77332E+01 -0.10577E+02 0.23431E+01 + 1. -0.44999E+01 0.45343E+01 0.23499E+01 + 1. 0.12844E+01 -0.64655E+01 0.23588E+01 + 1. -0.12675E+01 0.11873E+02 0.23655E+01 + 1. -0.18389E+01 -0.18041E+02 0.23714E+01 + 1. 0.10845E+01 0.92539E+01 0.23748E+01 + 1. 0.74691E+01 0.18367E+02 0.23857E+01 + 1. 0.39308E+01 -0.11917E+02 0.23913E+01 + 1. -0.15241E+02 0.80387E+01 0.23955E+01 + 1. 0.50544E+01 -0.16291E+02 0.24003E+01 + 1. -0.43407E+01 0.70176E+01 0.24107E+01 + 1. -0.10434E+02 -0.18153E+01 0.24145E+01 + 1. 0.11349E+02 0.12561E+01 0.24214E+01 + 1. -0.10064E+02 0.78412E+01 0.24296E+01 + 1. -0.18592E+02 -0.66910E+01 0.24375E+01 + 1. -0.55864E+01 -0.78730E+01 0.24416E+01 + 1. -0.57615E+01 0.20131E+01 0.24482E+01 + 1. -0.17875E+02 0.38405E+01 0.24580E+01 + 1. 0.84474E+01 0.86212E+01 0.24600E+01 + 1. 0.11186E+02 -0.13335E+02 0.24685E+01 + 1. -0.55701E+01 -0.12473E+02 0.24786E+01 + 1. 0.13016E+02 -0.86189E+01 0.24805E+01 + 1. 0.19542E+01 0.18663E+00 0.24903E+01 + 1. -0.48594E+01 -0.47839E+01 0.24950E+01 + 1. 0.31858E+01 -0.81132E+01 0.25048E+01 + 1. 0.14481E+02 -0.84746E+00 0.25132E+01 + 1. 0.65496E+01 -0.18776E+02 0.25169E+01 + 1. 0.18950E+02 -0.12457E+01 0.25218E+01 + 1. -0.13383E+02 0.10000E+02 0.25303E+01 + 1. 0.95009E+01 0.13040E+02 0.25362E+01 + 1. -0.37418E+01 -0.16274E+02 0.25429E+01 + 1. -0.72772E+01 0.15518E+02 0.25482E+01 + 1. 0.53940E+01 -0.41554E+01 0.25545E+01 + 1. 0.17853E+02 0.19790E+01 0.25620E+01 + 1. -0.12593E+02 0.15500E+02 0.25690E+01 + 1. 0.11761E+02 -0.52701E+01 0.25755E+01 + 1. -0.13327E+02 -0.13437E+02 0.25835E+01 + 1. -0.19452E+02 -0.43408E+01 0.25932E+01 + 1. -0.65222E+01 0.41486E+01 0.25954E+01 + 1. -0.12752E+02 -0.55963E+01 0.26010E+01 + 1. 0.48868E+01 0.16080E+02 0.26092E+01 + 1. 0.36768E+01 -0.14520E+02 0.26191E+01 + 1. 0.91161E+01 0.60675E+01 0.26247E+01 + 1. -0.94499E+01 -0.13474E+02 0.26279E+01 + 1. -0.11019E+02 0.43284E+00 0.26394E+01 + 1. -0.76934E+01 0.13078E+02 0.26423E+01 + 1. -0.14997E+02 -0.20535E+01 0.26506E+01 + 1. 0.19127E+02 -0.46016E+01 0.26534E+01 + 1. 0.48259E+01 0.39753E+01 0.26601E+01 + 1. -0.55020E+01 -0.99609E+01 0.26691E+01 + 1. -0.17068E+02 0.58466E+01 0.26753E+01 + 1. 0.15359E+02 0.40272E+01 0.26854E+01 + 1. 0.16768E+02 0.75197E+01 0.26925E+01 + 1. -0.15449E+02 -0.92488E+01 0.26976E+01 + 1. 0.12123E+02 0.14075E+02 0.27036E+01 + 1. -0.78629E+01 -0.15718E+02 0.27088E+01 + 1. -0.91617E+01 0.99868E+01 0.27164E+01 + 1. -0.22572E+01 0.69578E+01 0.27244E+01 + 1. -0.15600E+02 -0.11104E+00 0.27297E+01 + 1. 0.20344E+01 -0.10319E+02 0.27347E+01 + 1. 0.20796E+01 -0.18884E+02 0.27410E+01 + 1. -0.17455E+02 0.12836E+01 0.27478E+01 + 1. -0.21358E+01 -0.98918E+01 0.27536E+01 + 1. 0.77904E+01 -0.10075E+01 0.27642E+01 + 1. -0.12964E+01 -0.45846E+01 0.27708E+01 + 1. 0.42583E+00 0.17228E+02 0.27766E+01 + 1. 0.14968E+02 -0.39824E+01 0.27842E+01 + 1. 0.15987E+02 -0.74988E+01 0.27900E+01 + 1. 0.18544E+02 -0.70933E+01 0.27985E+01 + 1. -0.79387E+01 -0.97576E+01 0.28051E+01 + 1. -0.53591E+01 -0.14809E+02 0.28105E+01 + 1. 0.62050E+01 0.14081E+02 0.28188E+01 + 1. -0.46828E+01 -0.19225E+02 0.28258E+01 + 1. -0.28433E+01 0.57114E+00 0.28305E+01 + 1. -0.88330E+00 0.99367E+01 0.28342E+01 + 1. -0.10612E+02 0.15422E+02 0.28439E+01 + 1. 0.20058E+01 -0.13316E+02 0.28467E+01 + 1. 0.11445E+02 0.59065E+01 0.28546E+01 + 1. -0.10640E+02 -0.11592E+02 0.28608E+01 + 1. 0.71881E+01 -0.14586E+02 0.28694E+01 + 1. -0.18809E+02 -0.33211E+00 0.28767E+01 + 1. -0.15019E+02 0.11504E+02 0.28857E+01 + 1. 0.97087E+01 0.10453E+02 0.28926E+01 + 1. 0.82465E+01 -0.12651E+02 0.28951E+01 + 1. -0.15697E+02 -0.46430E+01 0.29006E+01 + 1. 0.99166E+01 -0.16735E+02 0.29094E+01 + 1. 0.14821E+02 0.70569E+01 0.29161E+01 + 1. -0.21396E+01 0.19875E+02 0.29260E+01 + 1. 0.62990E+01 0.90152E+01 0.29321E+01 + 1. 0.52390E+00 -0.17279E+02 0.29369E+01 + 1. 0.28061E+00 -0.11455E+02 0.29439E+01 + 1. 0.13198E+02 -0.10737E+02 0.29480E+01 + 1. -0.18494E+01 -0.14729E+02 0.29568E+01 + 1. -0.60073E+01 0.11908E+02 0.29665E+01 + 1. 0.15733E+02 0.97219E+00 0.29675E+01 + 1. -0.15228E+02 -0.11621E+02 0.29779E+01 + 1. -0.11354E+02 0.24404E+01 0.29850E+01 + 1. 0.81726E+01 -0.56397E+01 0.29873E+01 + 1. 0.95693E+01 -0.20185E+01 0.29938E+01 + 1. -0.19876E+01 0.14623E+02 0.30034E+01 + 1. 0.27537E+01 0.19773E+02 0.30078E+01 + 1. -0.11882E+02 0.45864E+01 0.30166E+01 + 1. 0.28131E+01 0.10155E+02 0.30265E+01 + 1. -0.12530E+02 -0.15239E+02 0.30332E+01 + 1. 0.10098E+02 -0.65581E+01 0.30386E+01 + 1. -0.90779E+01 0.11031E+01 0.30418E+01 + 1. -0.32689E+01 -0.79323E+01 0.30490E+01 + 1. 0.33186E+01 0.70269E+01 0.30573E+01 + 1. -0.11569E+02 -0.80732E+01 0.30621E+01 + 1. 0.60583E+01 -0.63004E+01 0.30710E+01 + 1. -0.62785E+01 -0.29723E+01 0.30755E+01 + 1. 0.21201E+01 0.23203E+01 0.30840E+01 + 1. 0.26479E+01 -0.50621E+01 0.30920E+01 + 1. 0.13124E+02 -0.13727E+02 0.30960E+01 + 1. -0.80884E+01 0.78197E+01 0.31011E+01 + 1. 0.13312E+01 0.14733E+02 0.31070E+01 + 1. -0.13106E+02 0.80749E+01 0.31149E+01 + 1. 0.43977E+01 -0.10069E+02 0.31219E+01 + 1. 0.13356E+02 -0.24245E+01 0.31330E+01 + 1. 0.19854E+02 0.11587E+01 0.31337E+01 + 1. 0.15841E+02 -0.10885E+02 0.31444E+01 + 1. -0.83532E+01 0.17922E+02 0.31475E+01 + 1. 0.13449E+02 -0.67740E+01 0.31564E+01 + 1. 0.10144E+02 0.16785E+02 0.31627E+01 + 1. 0.93468E+01 0.13062E+01 0.31723E+01 + 1. 0.86329E+01 -0.86652E+01 0.31765E+01 + 1. -0.85711E+01 -0.78868E+01 0.31820E+01 + 1. 0.50200E+00 -0.10723E+01 0.31893E+01 + 1. -0.13357E+02 0.25404E+01 0.31999E+01 + 1. -0.12382E+02 -0.14741E+01 0.32064E+01 + 1. -0.51129E+01 0.97384E+01 0.32096E+01 + 1. -0.96108E+01 0.12566E+02 0.32196E+01 + 1. 0.21073E+01 0.12568E+02 0.32235E+01 + 1. -0.26028E+01 -0.26405E+01 0.32274E+01 + 1. -0.22651E+00 0.43610E+01 0.32362E+01 + 1. 0.93359E+01 -0.14602E+02 0.32405E+01 + 1. 0.50355E+01 -0.12255E+01 0.32488E+01 + 1. -0.17168E+02 -0.10163E+02 0.32544E+01 + 1. 0.16435E+02 -0.12161E+01 0.32649E+01 + 1. 0.11286E+02 0.11891E+02 0.32689E+01 + 1. -0.86888E+00 -0.19865E+02 0.32787E+01 + 1. -0.11804E+02 0.12386E+02 0.32816E+01 + 1. -0.84513E+01 -0.18010E+02 0.32871E+01 + 1. 0.18722E+02 0.67674E+01 0.32952E+01 + 1. -0.66976E+01 -0.61500E+01 0.33031E+01 + 1. -0.44618E+01 0.17063E+02 0.33103E+01 + 1. -0.14171E+02 -0.68801E+01 0.33195E+01 + 1. 0.94226E+01 0.14919E+02 0.33221E+01 + 1. -0.11480E+02 0.99443E+01 0.33306E+01 + 1. -0.34928E+01 0.24126E+01 0.33398E+01 + 1. 0.19069E+00 -0.15341E+02 0.33433E+01 + 1. 0.11446E+02 0.84671E+01 0.33469E+01 + 1. 0.68542E+01 0.67636E+01 0.33572E+01 + 1. -0.71807E-01 -0.77101E+01 0.33610E+01 + 1. 0.10614E+02 0.30148E+01 0.33719E+01 + 1. -0.32618E+01 -0.58775E+01 0.33775E+01 + 1. -0.38065E+01 -0.10974E+02 0.33828E+01 + 1. -0.85089E+01 -0.30943E+01 0.33873E+01 + 1. 0.54609E+01 -0.13576E+02 0.33964E+01 + 1. -0.18621E+02 0.69901E+01 0.34041E+01 + 1. 0.35582E+01 -0.17216E+02 0.34110E+01 + 1. -0.12092E+02 -0.10155E+02 0.34137E+01 + 1. 0.79815E+01 0.39831E+01 0.34257E+01 + 1. 0.72104E+01 0.10749E+02 0.34307E+01 + 1. 0.64899E+01 -0.11772E+02 0.34354E+01 + 1. -0.16964E+02 -0.80348E+01 0.34422E+01 + 1. 0.35876E+01 -0.28444E+01 0.34523E+01 + 1. 0.49800E-01 0.13609E+01 0.34560E+01 + 1. -0.16802E+02 0.89484E+01 0.34616E+01 + 1. 0.14706E+02 0.11669E+02 0.34699E+01 + 1. 0.19592E+02 0.38912E+01 0.34780E+01 + 1. -0.19786E+02 -0.19731E+01 0.34826E+01 + 1. -0.14756E+02 0.55716E+01 0.34882E+01 + 1. -0.87913E+01 -0.90671E+00 0.34998E+01 + 1. -0.97784E+01 -0.15831E+02 0.35060E+01 + 1. -0.88465E+01 0.37619E+01 0.35103E+01 + 1. 0.46353E+01 0.11183E+02 0.35133E+01 + 1. 0.71258E+01 -0.16597E+02 0.35233E+01 + 1. -0.27136E+01 0.44191E+01 0.35292E+01 + 1. -0.17576E+02 -0.52954E+01 0.35363E+01 + 1. 0.15992E+02 0.91820E+01 0.35415E+01 + 1. -0.34370E+01 -0.12944E+02 0.35511E+01 + 1. 0.96474E+01 -0.10917E+02 0.35570E+01 + 1. 0.11201E+02 -0.97363E+00 0.35660E+01 + 1. 0.69128E+01 0.14835E+01 0.35693E+01 + 1. 0.13648E+02 0.85810E+01 0.35760E+01 + 1. -0.58314E+01 -0.16597E+02 0.35814E+01 + 1. -0.10112E+02 -0.64320E+01 0.35901E+01 + 1. -0.77932E+01 -0.12691E+02 0.35969E+01 + 1. -0.16346E+02 0.29773E+01 0.36009E+01 + 1. 0.90604E+01 -0.38896E+01 0.36118E+01 + 1. -0.66577E+01 0.62703E+01 0.36147E+01 + 1. -0.76907E+01 0.11004E+02 0.36226E+01 + 1. -0.17286E+02 -0.17338E+01 0.36286E+01 + 1. 0.39318E+00 -0.31110E+01 0.36366E+01 + 1. -0.10899E+02 0.64246E+01 0.36430E+01 + 1. 0.11207E+02 -0.88555E+01 0.36473E+01 + 1. -0.45085E+01 -0.72715E+00 0.36568E+01 + 1. -0.24816E+01 0.16574E+02 0.36655E+01 + 1. -0.19425E+02 0.43655E+01 0.36673E+01 + 1. 0.17137E+02 0.49085E+01 0.36794E+01 + 1. 0.51243E+01 -0.81151E+01 0.36838E+01 + 1. 0.35361E+01 0.99607E+00 0.36893E+01 + 1. -0.28429E+01 -0.19261E+02 0.36967E+01 + 1. 0.13311E+02 0.48852E+01 0.37004E+01 + 1. 0.28749E+01 0.16338E+02 0.37083E+01 + 1. 0.11289E+01 0.76456E+01 0.37133E+01 + 1. -0.14789E+02 0.13330E+02 0.37260E+01 + 1. -0.21336E+00 0.18968E+02 0.37332E+01 + 1. 0.21164E+01 -0.15845E+02 0.37391E+01 + 1. 0.77844E+01 0.12876E+02 0.37401E+01 + 1. 0.29854E+01 0.46678E+01 0.37475E+01 + 1. -0.42133E+01 0.13897E+02 0.37535E+01 + 1. -0.25057E+01 0.10963E+02 0.37640E+01 + 1. -0.11639E+02 -0.13550E+02 0.37716E+01 + 1. 0.11321E+02 -0.14896E+02 0.37758E+01 + 1. 0.43943E+01 -0.19064E+02 0.37844E+01 + 1. -0.18831E+02 0.23718E+01 0.37930E+01 + 1. 0.39867E+00 0.11520E+02 0.37984E+01 + 1. 0.17230E+02 -0.38277E+01 0.38012E+01 + 1. 0.13071E+02 0.26012E+01 0.38121E+01 + 1. -0.49318E+01 0.19286E+02 0.38165E+01 + 1. -0.12225E+02 -0.38140E+01 0.38202E+01 + 1. -0.74097E+01 0.20249E+01 0.38309E+01 + 1. 0.12945E+02 0.10559E+02 0.38360E+01 + 1. 0.57397E+01 0.17474E+02 0.38440E+01 + 1. 0.19439E+02 -0.29056E+01 0.38501E+01 + 1. 0.50140E+01 0.77706E+01 0.38569E+01 + 1. -0.53567E+00 0.13349E+02 0.38603E+01 + 1. -0.14884E+01 -0.51965E+00 0.38706E+01 + 1. -0.12122E+01 -0.16833E+02 0.38779E+01 + 1. -0.22901E+01 0.89006E+01 0.38850E+01 + 1. -0.15360E+01 -0.12153E+02 0.38901E+01 + 1. 0.64707E+01 -0.28752E+01 0.38953E+01 + 1. 0.17847E+02 0.44621E+00 0.39056E+01 + 1. 0.12970E+02 0.70104E-01 0.39107E+01 + 1. 0.39819E+01 0.14640E+02 0.39180E+01 + 1. 0.11434E+02 -0.11780E+02 0.39214E+01 + 1. 0.97207E+01 0.75886E+01 0.39272E+01 + 1. 0.38055E+01 0.18332E+02 0.39342E+01 + 1. 0.82844E+01 0.17022E+02 0.39402E+01 + 1. -0.90483E+01 0.14625E+02 0.39509E+01 + 1. 0.14306E+00 -0.53330E+01 0.39557E+01 + 1. 0.13892E+02 0.14149E+02 0.39629E+01 + 1. -0.13895E+02 -0.90039E+01 0.39714E+01 + 1. -0.68171E+01 -0.85069E+01 0.39746E+01 + 1. 0.17920E+02 0.86509E+01 0.39853E+01 + 1. -0.14798E+02 0.93057E+01 0.39876E+01 + 1. -0.14922E+02 0.14292E+01 0.39963E+01 + 1. 0.17451E+02 -0.85469E+01 0.40037E+01 + 1. 0.16124E+02 -0.56488E+01 0.40085E+01 + 1. 0.15449E+02 -0.90764E+01 0.40199E+01 + 1. 0.17509E+01 0.18151E+02 0.40225E+01 + 1. 0.65252E+01 -0.98550E+01 0.40295E+01 + 1. -0.12910E+02 -0.11987E+02 0.40389E+01 + 1. 0.13256E+02 -0.48521E+01 0.40430E+01 + 1. 0.10083E+02 0.49620E+01 0.40505E+01 + 1. -0.10077E+02 -0.95996E+01 0.40573E+01 + 1. -0.63243E+01 0.16847E+02 0.40620E+01 + 1. 0.27630E+01 -0.10674E+01 0.40700E+01 + 1. -0.10253E+02 -0.43920E+01 0.40768E+01 + 1. -0.64823E+01 0.85027E+01 0.40826E+01 + 1. 0.18891E+01 -0.87425E+01 0.40868E+01 + 1. 0.91982E-01 -0.13421E+02 0.40993E+01 + 1. 0.12141E+02 0.15643E+02 0.41014E+01 + 1. 0.35756E+01 -0.68182E+01 0.41077E+01 + 1. 0.14123E+02 -0.12321E+02 0.41136E+01 + 1. 0.30508E+01 -0.11417E+02 0.41216E+01 + 1. -0.68604E+01 -0.14532E+02 0.41317E+01 + 1. -0.66218E+00 0.65206E+01 0.41365E+01 + 1. 0.53397E+01 0.26881E+01 0.41455E+01 + 1. -0.37458E+01 -0.14993E+02 0.41527E+01 + 1. -0.35909E+01 0.63568E+01 0.41542E+01 + 1. -0.12421E+02 0.14238E+02 0.41621E+01 + 1. -0.39437E+01 -0.41340E+01 0.41676E+01 + 1. 0.16553E+02 0.25238E+01 0.41749E+01 + 1. 0.57465E+01 0.51689E+01 0.41831E+01 + 1. -0.64921E+01 0.13565E+02 0.41925E+01 + 1. -0.13438E+02 0.11619E+02 0.41970E+01 + 1. -0.16437E+02 0.10933E+02 0.42061E+01 + 1. 0.49349E+01 -0.15397E+02 0.42078E+01 + 1. 0.44649E+01 -0.49314E+01 0.42169E+01 + 1. 0.10827E+02 -0.31402E+01 0.42237E+01 + 1. -0.14712E+02 -0.13533E+02 0.42316E+01 + 1. -0.14639E+01 0.24646E+01 0.42375E+01 + 1. -0.14106E+02 -0.29044E+01 0.42406E+01 + 1. -0.65360E+01 -0.19806E+00 0.42530E+01 + 1. -0.13388E+02 0.15814E+00 0.42552E+01 + 1. -0.87562E+01 0.60112E+01 0.42649E+01 + 1. -0.18512E+00 0.15765E+02 0.42685E+01 + 1. -0.56736E+01 0.29157E+01 0.42751E+01 + 1. 0.74879E+01 -0.18476E+02 0.42820E+01 + 1. 0.15250E+02 0.52699E+01 0.42897E+01 + 1. -0.64193E+00 -0.97361E+01 0.42992E+01 + 1. 0.18199E+02 -0.56508E+01 0.43031E+01 + 1. 0.19905E+02 -0.48703E+00 0.43092E+01 + 1. -0.67716E+01 -0.10864E+02 0.43162E+01 + 1. -0.16308E+02 0.72106E+01 0.43214E+01 + 1. 0.69592E+01 0.15306E+02 0.43295E+01 + 1. -0.65060E+01 -0.18355E+02 0.43354E+01 + 1. -0.18351E+02 -0.34904E+01 0.43428E+01 + 1. -0.10078E+02 0.17219E+02 0.43469E+01 + 1. -0.12254E+02 -0.66496E+01 0.43548E+01 + 1. -0.49346E+01 -0.65079E+01 0.43636E+01 + 1. -0.39012E+01 -0.17601E+02 0.43679E+01 + 1. 0.10867E+02 0.13574E+02 0.43748E+01 + 1. -0.25167E+01 0.18501E+02 0.43810E+01 + 1. -0.96711E+01 0.80350E+01 0.43869E+01 + 1. -0.73540E+01 -0.44324E+01 0.43951E+01 + 1. -0.52522E+01 0.48770E+01 0.44020E+01 + 1. -0.89145E+01 -0.11231E+02 0.44082E+01 + 1. 0.91814E+01 -0.35350E+00 0.44190E+01 + 1. 0.13369E+02 -0.91272E+01 0.44251E+01 + 1. 0.75807E+01 -0.71277E+01 0.44283E+01 + 1. 0.40658E+00 -0.18733E+02 0.44380E+01 + 1. -0.42280E+01 -0.90147E+01 0.44430E+01 + 1. 0.14577E+01 0.58016E+01 0.44503E+01 + 1. 0.11900E+02 -0.63470E+01 0.44551E+01 + 1. -0.13422E+02 0.42842E+01 0.44636E+01 + 1. -0.17859E+01 -0.69751E+01 0.44682E+01 + 1. -0.10554E+02 -0.22500E+01 0.44746E+01 + 1. 0.31863E+01 0.85749E+01 0.44834E+01 + 1. 0.66583E+01 -0.50259E+01 0.44925E+01 + 1. 0.95818E+01 -0.12996E+02 0.44957E+01 + 1. -0.16562E+02 0.48676E+01 0.45052E+01 + 1. 0.76852E+01 0.88567E+01 0.45070E+01 + 1. -0.45574E+01 0.11863E+02 0.45134E+01 + 1. -0.14301E+02 -0.49983E+01 0.45225E+01 + 1. 0.31650E+01 -0.13543E+02 0.45318E+01 + 1. -0.18718E+02 -0.67564E+01 0.45344E+01 + 1. 0.68686E+01 -0.70480E+00 0.45447E+01 + 1. -0.98466E+01 0.10418E+02 0.45521E+01 + 1. 0.55583E+01 0.12957E+02 0.45557E+01 + 1. 0.14519E+02 -0.13550E+01 0.45602E+01 + 1. -0.12926E+02 0.66142E+01 0.45703E+01 + 1. 0.14571E+02 0.12812E+01 0.45750E+01 + 1. 0.21375E+01 -0.37426E+01 0.45820E+01 + 1. -0.11254E+02 -0.56813E-01 0.45894E+01 + 1. 0.12101E+02 0.69907E+01 0.45941E+01 + 1. -0.92368E+01 -0.14136E+02 0.46043E+01 + 1. 0.88470E+01 -0.16242E+02 0.46121E+01 + 1. -0.98487E+01 0.22918E+01 0.46173E+01 + 1. -0.15491E+02 -0.10458E+02 0.46208E+01 + 1. -0.68918E+01 0.18726E+02 0.46321E+01 + 1. -0.16194E+02 -0.66075E+01 0.46339E+01 + 1. -0.10508E+02 0.42645E+01 0.46437E+01 + 1. 0.16731E+02 0.71084E+01 0.46533E+01 + 1. -0.17902E+02 0.43332E+00 0.46584E+01 + 1. -0.15270E+02 -0.91046E+00 0.46629E+01 + 1. 0.90963E+01 0.27549E+01 0.46700E+01 + 1. 0.11216E+02 0.14641E+01 0.46751E+01 + 1. -0.52401E+01 -0.12732E+02 0.46864E+01 + 1. 0.14047E+01 0.95485E+01 0.46928E+01 + 1. 0.23446E+01 -0.18180E+02 0.46983E+01 + 1. 0.51573E+01 0.96497E+01 0.47058E+01 + 1. 0.18974E+02 0.24043E+01 0.47075E+01 + 1. 0.88290E+01 0.10655E+02 0.47166E+01 + 1. 0.10050E+02 -0.52644E+01 0.47226E+01 + 1. -0.19664E+01 -0.44296E+01 0.47291E+01 + 1. 0.72784E+01 -0.13275E+02 0.47336E+01 + 1. 0.80307E+01 0.56025E+01 0.47412E+01 + 1. 0.13358E+02 -0.14864E+02 0.47521E+01 + 1. 0.54604E+01 -0.17296E+02 0.47534E+01 + 1. -0.80569E+01 -0.16588E+02 0.47644E+01 + 1. -0.80696E+01 -0.64154E+01 0.47671E+01 + 1. -0.16028E+02 -0.30428E+01 0.47796E+01 + 1. -0.34767E+01 0.68691E+00 0.47819E+01 + 1. -0.75791E+01 -0.19847E+01 0.47901E+01 + 1. 0.18473E+01 0.82793E+00 0.47943E+01 + 1. 0.96860E+00 0.27866E+01 0.48024E+01 + 1. 0.30673E+01 0.11547E+02 0.48128E+01 + 1. -0.26630E+01 0.13105E+02 0.48181E+01 + 1. 0.13327E+02 0.12265E+02 0.48265E+01 + 1. 0.14971E+02 -0.34545E+01 0.48274E+01 + 1. 0.49546E+01 0.13882E+00 0.48390E+01 + 1. 0.10765E+02 0.10051E+02 0.48442E+01 + 1. -0.47496E+01 0.78372E+01 0.48468E+01 + 1. -0.10797E+02 0.13289E+02 0.48591E+01 + 1. 0.84003E+01 -0.98775E+01 0.48611E+01 + 1. 0.14329E+02 -0.74192E+01 0.48722E+01 + 1. 0.18741E+02 0.54297E+01 0.48789E+01 + 1. -0.54971E+01 -0.24861E+01 0.48808E+01 + 1. -0.11607E+02 0.84282E+01 0.48879E+01 + 1. 0.69249E+01 0.18751E+02 0.48980E+01 + 1. 0.11653E+01 0.13139E+02 0.49033E+01 + 1. -0.53689E+01 0.15161E+02 0.49111E+01 + 1. 0.13892E+01 -0.65668E+01 0.49185E+01 + 1. -0.86002E+00 0.10424E+02 0.49222E+01 + 1. -0.11816E+02 -0.16127E+02 0.49305E+01 + 1. -0.61556E+01 0.10640E+02 0.49334E+01 + 1. -0.11975E+02 0.26214E+01 0.49462E+01 + 1. 0.17033E+02 0.10378E+02 0.49522E+01 + 1. 0.10331E+02 0.15859E+02 0.49590E+01 + 1. -0.87979E+01 0.50541E+00 0.49662E+01 + 1. 0.16000E+02 -0.11724E+02 0.49696E+01 + 1. 0.14860E+02 0.33535E+01 0.49781E+01 + 1. -0.86587E+01 0.12919E+02 0.49816E+01 + 1. -0.10678E+02 0.15398E+02 0.49925E+01 + 1. 0.12040E+01 -0.11413E+02 0.49958E+01 + 1. 0.17532E+02 -0.14838E+01 0.50037E+01 + 1. -0.35752E+01 -0.18943E+01 0.50131E+01 + 1. -0.74140E+01 0.37066E+01 0.50136E+01 + 1. 0.12768E+02 -0.28607E+01 0.50233E+01 + 1. 0.11830E+02 0.46584E+01 0.50319E+01 + 1. -0.16495E+01 -0.14505E+02 0.50397E+01 + 1. 0.14553E+02 0.71379E+01 0.50425E+01 + 1. -0.14204E+01 0.45689E+01 0.50492E+01 + 1. 0.48907E+01 -0.11295E+02 0.50592E+01 + 1. -0.17917E+02 0.84880E+01 0.50648E+01 + 1. -0.25493E+01 -0.10470E+02 0.50699E+01 + 1. -0.39871E+01 0.98479E+01 0.50745E+01 + 1. -0.11258E+02 -0.82623E+01 0.50853E+01 + 1. -0.17050E+02 -0.92153E+01 0.50923E+01 + 1. -0.10877E+02 -0.11231E+02 0.50965E+01 + 1. -0.33734E+01 0.15289E+02 0.51018E+01 + 1. 0.37991E+01 -0.92525E+01 0.51071E+01 + 1. -0.18984E+02 0.60159E+01 0.51183E+01 + 1. 0.19252E+01 0.19869E+02 0.51245E+01 + 1. 0.71303E+01 0.28287E+01 0.51268E+01 + 1. 0.37260E+01 0.63706E+01 0.51356E+01 + 1. 0.44518E+01 -0.21820E+01 0.51420E+01 + 1. 0.68429E+01 -0.15282E+02 0.51533E+01 + 1. -0.89798E+00 -0.26070E+01 0.51598E+01 + 1. -0.74596E+01 0.15566E+02 0.51630E+01 + 1. 0.20005E+01 0.15211E+02 0.51711E+01 + 1. -0.16813E+01 -0.18442E+02 0.51784E+01 + 1. -0.61505E+00 0.17496E+02 0.51830E+01 + 1. 0.16297E+02 0.26930E+00 0.51922E+01 + 1. -0.49109E+01 0.17780E+02 0.51997E+01 + 1. 0.52761E+01 -0.65452E+01 0.52019E+01 + 1. 0.12435E+02 0.88986E+01 0.52079E+01 + 1. -0.43647E+01 -0.19379E+02 0.52197E+01 + 1. 0.29259E+00 -0.16582E+02 0.52244E+01 + 1. 0.90902E+00 -0.90663E+00 0.52324E+01 + 1. -0.82495E+01 -0.91099E+01 0.52355E+01 + 1. 0.94675E+01 -0.78973E+01 0.52454E+01 + 1. -0.19145E+02 -0.12594E+01 0.52493E+01 + 1. 0.42712E+01 0.41979E+01 0.52540E+01 + 1. 0.10942E+02 -0.10162E+02 0.52630E+01 + 1. -0.31606E+01 0.28700E+01 0.52727E+01 + 1. 0.11834E+02 -0.13534E+02 0.52735E+01 + 1. 0.11229E+02 -0.16320E+02 0.52847E+01 + 1. 0.89253E+01 0.13573E+02 0.52929E+01 + 1. -0.15269E+02 0.31127E+01 0.52950E+01 + 1. -0.13336E+02 -0.14521E+02 0.53038E+01 + 1. 0.15028E+02 0.10147E+02 0.53077E+01 + 1. 0.50252E+01 0.16319E+02 0.53180E+01 + 1. 0.80075E+01 -0.35334E+01 0.53223E+01 + 1. 0.63451E+01 0.74362E+01 0.53290E+01 + 1. 0.33442E+01 -0.16246E+02 0.53357E+01 + 1. -0.69828E+00 0.93557E+00 0.53435E+01 + 1. 0.16801E+02 -0.70368E+01 0.53487E+01 + 1. -0.11767E+02 0.11028E+02 0.53564E+01 + 1. -0.12502E+02 -0.21116E+01 0.53617E+01 + 1. -0.14203E+02 -0.75803E+01 0.53713E+01 + 1. -0.73656E+01 0.71645E+01 0.53785E+01 + 1. -0.18225E+02 0.39502E+01 0.53822E+01 + 1. 0.14529E+01 -0.14514E+02 0.53922E+01 + 1. -0.17822E+00 0.85486E+01 0.54000E+01 + 1. -0.23054E+01 0.73483E+01 0.54036E+01 + 1. -0.13088E+02 -0.10236E+02 0.54123E+01 + 1. 0.53070E+01 -0.13412E+02 0.54142E+01 + 1. -0.78381E+01 0.92708E+01 0.54239E+01 + 1. 0.13485E+02 -0.10851E+02 0.54324E+01 + 1. -0.13953E+02 0.81907E+01 0.54345E+01 + 1. 0.34828E+01 0.20872E+01 0.54445E+01 + 1. -0.19869E+02 0.93699E+00 0.54526E+01 + 1. -0.37943E+00 -0.81158E+01 0.54595E+01 + 1. 0.70156E+01 -0.11315E+02 0.54612E+01 + 1. 0.18554E+02 -0.38739E+01 0.54715E+01 + 1. 0.28557E+01 0.17294E+02 0.54766E+01 + 1. -0.14378E+02 -0.11926E+02 0.54827E+01 + 1. -0.54102E+01 -0.15537E+02 0.54882E+01 + 1. 0.65431E+01 0.10949E+02 0.54956E+01 + 1. 0.77465E+01 0.82053E+00 0.55030E+01 + 1. -0.10807E+02 -0.58672E+01 0.55075E+01 + 1. -0.15465E+02 0.12589E+02 0.55186E+01 + 1. -0.19215E+02 -0.50573E+01 0.55243E+01 + 1. -0.98988E+01 -0.17259E+02 0.55317E+01 + 1. 0.11910E+02 -0.81447E+01 0.55383E+01 + 1. 0.58105E+01 -0.85733E+01 0.55410E+01 + 1. -0.14537E+01 0.14699E+02 0.55494E+01 + 1. -0.50934E+01 -0.10785E+02 0.55534E+01 + 1. 0.10933E+02 -0.13541E+01 0.55625E+01 + 1. 0.17247E+02 -0.10080E+02 0.55703E+01 + 1. -0.14886E+02 0.58015E+01 0.55752E+01 + 1. 0.15608E+02 0.12062E+02 0.55845E+01 + 1. 0.17248E+02 0.38851E+01 0.55899E+01 + 1. -0.89985E+01 -0.40145E+01 0.55935E+01 + 1. -0.23464E+01 -0.16603E+02 0.56041E+01 + 1. -0.13709E+02 0.13657E+02 0.56106E+01 + 1. -0.75945E+01 -0.12197E+02 0.56161E+01 + 1. 0.10114E+02 0.11997E+02 0.56249E+01 + 1. 0.14770E+02 -0.53870E+01 0.56271E+01 + 1. -0.62799E+01 -0.74153E+01 0.56356E+01 + 1. 0.10346E+02 0.62643E+01 0.56416E+01 + 1. 0.10053E+02 -0.14651E+02 0.56491E+01 + 1. -0.72674E-01 0.19615E+02 0.56595E+01 + 1. 0.58054E+01 -0.19117E+02 0.56665E+01 + 1. -0.29872E+01 -0.12750E+02 0.56720E+01 + 1. -0.10652E+02 0.68428E+01 0.56768E+01 + 1. -0.34609E+01 -0.74682E+01 0.56833E+01 + 1. 0.13686E+02 0.54051E+01 0.56912E+01 + 1. 0.28874E+01 -0.53099E+01 0.56961E+01 + 1. -0.13722E+02 0.18418E+01 0.57020E+01 + 1. 0.20799E+01 0.74191E+01 0.57102E+01 + 1. -0.14140E+02 0.10263E+02 0.57170E+01 + 1. -0.16352E+02 -0.49332E+01 0.57239E+01 + 1. -0.67925E+00 0.12491E+02 0.57311E+01 + 1. 0.49922E+01 0.18400E+02 0.57366E+01 + 1. 0.41495E+01 0.13763E+02 0.57412E+01 + 1. -0.66399E+01 0.16505E+01 0.57494E+01 + 1. 0.95077E+00 0.11287E+02 0.57534E+01 + 1. 0.94892E+01 0.83576E+01 0.57605E+01 + 1. 0.35929E+00 -0.45137E+01 0.57698E+01 + 1. -0.51492E+00 -0.12140E+02 0.57769E+01 + 1. -0.10826E+02 -0.13210E+02 0.57834E+01 + 1. -0.36451E+01 0.19456E+02 0.57897E+01 + 1. 0.13021E+02 0.21941E+01 0.57978E+01 + 1. -0.16885E+02 0.20252E+01 0.58043E+01 + 1. 0.22176E+01 0.43149E+01 0.58085E+01 + 1. 0.73774E+01 0.16963E+02 0.58164E+01 + 1. -0.52985E+01 -0.50907E+01 0.58221E+01 + 1. 0.19708E+02 0.82542E+00 0.58291E+01 + 1. 0.80989E+01 -0.55110E+01 0.58375E+01 + 1. 0.11608E+02 -0.46412E+01 0.58441E+01 + 1. -0.11729E+02 -0.40399E+01 0.58486E+01 + 1. -0.34844E+01 0.52421E+01 0.58549E+01 + 1. -0.19387E+01 -0.91815E+00 0.58660E+01 + 1. -0.17082E+02 -0.12215E+01 0.58694E+01 + 1. 0.54765E+01 -0.39663E+01 0.58793E+01 + 1. -0.52316E+01 -0.61956E+00 0.58842E+01 + 1. 0.26718E+01 -0.19817E+02 0.58890E+01 + 1. 0.12427E+02 0.14007E+02 0.58938E+01 + 1. 0.98056E+00 -0.95433E+01 0.59015E+01 + 1. -0.45411E+01 0.13489E+02 0.59077E+01 + 1. -0.86104E+01 0.17911E+02 0.59154E+01 + 1. 0.19739E+02 -0.22903E+01 0.59232E+01 + 1. 0.70754E+01 0.13004E+02 0.59320E+01 + 1. 0.16647E+02 -0.30510E+01 0.59336E+01 + 1. -0.55670E+01 0.63560E+01 0.59444E+01 + 1. 0.12793E+02 -0.62270E+00 0.59472E+01 + 1. 0.80994E+01 -0.14094E+01 0.59574E+01 + 1. 0.26377E+01 -0.17491E+01 0.59644E+01 + 1. 0.75263E+01 -0.17294E+02 0.59713E+01 + 1. 0.10164E+02 0.39043E+01 0.59789E+01 + 1. 0.14740E+02 -0.13348E+02 0.59832E+01 + 1. 0.17553E+02 0.86217E+01 0.59900E+01 + 1. 0.14992E+02 -0.95256E+01 0.59985E+01 + 1. 0.33897E+01 0.98651E+01 0.60043E+01 + 1. -0.97236E+01 -0.93512E+00 0.60077E+01 + 1. -0.15937E+02 0.87263E+01 0.60158E+01 + 1. -0.31300E+01 -0.54562E+01 0.60257E+01 + 1. -0.73176E+01 -0.15108E+02 0.60280E+01 + 1. -0.17283E+02 0.65833E+01 0.60390E+01 + 1. -0.12281E+02 0.52046E+01 0.60432E+01 + 1. -0.68129E+01 0.12169E+02 0.60468E+01 + 1. 0.30643E+00 0.49330E+01 0.60560E+01 + 1. 0.12061E+02 0.11212E+02 0.60621E+01 + 1. 0.18658E+02 -0.64733E+01 0.60679E+01 + 1. 0.96805E+01 0.12204E+01 0.60751E+01 + 1. 0.27104E+01 -0.76285E+01 0.60816E+01 + 1. 0.44125E+01 0.81280E+01 0.60928E+01 + 1. -0.96010E+01 -0.74183E+01 0.60999E+01 + 1. -0.10176E+02 -0.15175E+02 0.61017E+01 + 1. -0.31831E+01 0.17265E+02 0.61099E+01 + 1. -0.15655E+02 0.41544E+00 0.61194E+01 + 1. -0.10846E+02 0.11911E+01 0.61250E+01 + 1. 0.89562E+01 -0.11885E+02 0.61313E+01 + 1. 0.95682E+01 0.17398E+02 0.61368E+01 + 1. 0.65529E+01 0.54176E+01 0.61452E+01 + 1. -0.90539E+01 0.44267E+01 0.61483E+01 + 1. -0.29879E+01 0.11210E+02 0.61551E+01 + 1. -0.50176E+01 0.36248E+01 0.61640E+01 + 1. -0.98132E+01 0.11606E+02 0.61669E+01 + 1. -0.99200E+01 0.89945E+01 0.61795E+01 + 1. -0.14608E+02 -0.27542E+01 0.61863E+01 + 1. 0.28338E+01 -0.11288E+02 0.61915E+01 + 1. -0.69468E+01 -0.33772E+01 0.61988E+01 + 1. -0.76308E+01 -0.17957E+02 0.62050E+01 + 1. -0.17288E+02 -0.75009E+01 0.62111E+01 + 1. 0.53419E+01 0.22028E+01 0.62179E+01 + 1. -0.54891E+01 -0.17570E+02 0.62234E+01 + 1. -0.59478E+01 0.90567E+01 0.62328E+01 + 1. 0.98855E+00 0.16657E+02 0.62373E+01 + 1. 0.13034E+02 -0.63975E+01 0.62452E+01 + 1. -0.41204E+01 -0.34640E+01 0.62487E+01 + 1. -0.86186E-01 -0.19787E+02 0.62547E+01 + 1. 0.16884E+02 0.57703E+01 0.62632E+01 + 1. 0.95768E+01 -0.17323E+02 0.62683E+01 + 1. 0.60696E+01 0.14756E+02 0.62742E+01 + 1. -0.13567E+02 -0.18238E+00 0.62860E+01 + 1. -0.12928E+02 -0.60536E+01 0.62928E+01 + 1. 0.60360E+01 -0.17241E+01 0.62936E+01 + 1. -0.97082E+00 -0.98923E+01 0.63036E+01 + 1. 0.18684E+02 0.69763E+01 0.63129E+01 + 1. 0.98192E+01 -0.35963E+01 0.63189E+01 + 1. -0.91287E+01 0.15709E+02 0.63257E+01 + 1. 0.14490E+02 0.13766E+02 0.63302E+01 + 1. -0.18870E+02 -0.32561E+01 0.63344E+01 + 1. -0.88930E+01 -0.10720E+02 0.63440E+01 + 1. 0.75502E+01 -0.78256E+01 0.63482E+01 + 1. 0.82264E+01 0.42991E+01 0.63561E+01 + 1. -0.16431E+02 -0.11120E+02 0.63654E+01 + 1. -0.16354E+02 0.10737E+02 0.63681E+01 + 1. -0.62453E+01 0.16714E+02 0.63771E+01 + 1. 0.39570E+01 -0.18361E+02 0.63812E+01 + 1. 0.11993E+02 0.15896E+02 0.63910E+01 + 1. -0.72940E+01 -0.13621E+00 0.63982E+01 + 1. -0.11087E+01 -0.61001E+01 0.64028E+01 + 1. 0.50592E+01 -0.15678E+02 0.64084E+01 + 1. 0.15210E+02 0.19635E+01 0.64177E+01 + 1. 0.18813E+01 -0.17181E+02 0.64217E+01 + 1. 0.17502E+02 0.20754E+01 0.64304E+01 + 1. 0.42949E+00 0.14381E+02 0.64397E+01 + 1. 0.78398E+01 0.97331E+01 0.64452E+01 + 1. 0.32212E+01 0.24793E+00 0.64475E+01 + 1. 0.15541E+02 0.84640E+01 0.64537E+01 + 1. -0.56291E+01 -0.13634E+02 0.64664E+01 + 1. -0.71802E+01 -0.54305E+01 0.64729E+01 + 1. 0.19266E+02 0.38814E+01 0.64772E+01 + 1. -0.85429E+01 0.19716E+01 0.64828E+01 + 1. -0.68898E+01 -0.10009E+02 0.64894E+01 + 1. 0.14749E+02 -0.20862E+01 0.64947E+01 + 1. -0.13285E+01 0.30371E+01 0.65017E+01 + 1. 0.12738E+02 0.70961E+01 0.65126E+01 + 1. -0.88189E+01 -0.13541E+02 0.65154E+01 + 1. -0.11470E+02 0.14207E+02 0.65204E+01 + 1. -0.49297E+01 -0.88500E+01 0.65330E+01 + 1. 0.32860E+01 -0.13420E+02 0.65354E+01 + 1. -0.32942E+01 -0.14579E+02 0.65422E+01 + 1. 0.16618E+02 -0.50928E+01 0.65474E+01 + 1. -0.12205E+02 -0.11726E+02 0.65551E+01 + 1. 0.33118E+00 0.69044E+01 0.65624E+01 + 1. 0.13975E+01 0.16948E+01 0.65727E+01 + 1. -0.19741E+02 0.31229E+01 0.65740E+01 + 1. 0.10713E+02 -0.63275E+01 0.65815E+01 + 1. 0.84060E+01 0.15339E+02 0.65874E+01 + 1. -0.27949E+01 -0.19377E+02 0.65996E+01 + 1. -0.13543E+02 0.37036E+01 0.66016E+01 + 1. 0.13563E+02 -0.39381E+01 0.66118E+01 + 1. 0.33081E+01 0.19461E+02 0.66178E+01 + 1. -0.55872E+01 0.19031E+02 0.66243E+01 + 1. -0.12900E+02 -0.84732E+01 0.66310E+01 + 1. -0.48478E+00 -0.14202E+02 0.66382E+01 + 1. -0.15485E+01 -0.38916E+01 0.66419E+01 + 1. -0.14568E+02 -0.48542E+01 0.66531E+01 + 1. -0.14639E+02 -0.98736E+01 0.66578E+01 + 1. 0.10989E+02 -0.11783E+02 0.66636E+01 + 1. -0.16874E+01 0.92729E+01 0.66669E+01 + 1. 0.18427E+02 -0.84109E+00 0.66747E+01 + 1. 0.70659E+01 -0.13697E+02 0.66825E+01 + 1. 0.26221E+01 0.12418E+02 0.66876E+01 + 1. -0.12856E+02 0.12065E+02 0.66985E+01 + 1. -0.39582E+01 0.76726E+01 0.67050E+01 + 1. -0.40202E+01 0.80039E+00 0.67077E+01 + 1. -0.66713E+01 0.14089E+02 0.67166E+01 + 1. 0.10233E+02 0.14509E+02 0.67237E+01 + 1. 0.12051E+02 -0.15203E+02 0.67283E+01 + 1. -0.18043E+02 0.35617E+00 0.67363E+01 + 1. 0.97553E+01 0.10267E+02 0.67425E+01 + 1. 0.11833E+01 0.92794E+01 0.67484E+01 + 1. -0.10718E+02 -0.99656E+01 0.67567E+01 + 1. -0.67088E+01 0.48222E+01 0.67639E+01 + 1. -0.12204E+02 0.90323E+01 0.67708E+01 + 1. 0.30695E+00 -0.22944E+01 0.67761E+01 + 1. 0.23547E+01 -0.37154E+01 0.67856E+01 + 1. -0.10548E+02 -0.26072E+01 0.67909E+01 + 1. -0.26611E+01 -0.89302E+01 0.67979E+01 + 1. -0.16683E+02 -0.30111E+01 0.68061E+01 + 1. -0.16712E+02 0.43761E+01 0.68087E+01 + 1. 0.79945E+01 0.66878E+01 0.68174E+01 + 1. -0.17133E+01 0.56240E+01 0.68205E+01 + 1. 0.62042E+01 0.43980E+00 0.68321E+01 + 1. 0.86951E+01 -0.95428E+01 0.68390E+01 + 1. -0.10981E+02 0.38704E+01 0.68434E+01 + 1. 0.11318E+02 0.86565E+01 0.68496E+01 + 1. 0.12757E+02 0.40062E+01 0.68571E+01 + 1. 0.45639E+01 -0.99242E+01 0.68657E+01 + 1. 0.13368E+02 -0.85871E+01 0.68709E+01 + 1. 0.45900E+01 0.11669E+02 0.68734E+01 + 1. -0.51052E+01 0.11325E+02 0.68801E+01 + 1. -0.16710E+01 0.18507E+02 0.68927E+01 + 1. -0.90358E+01 0.65495E+01 0.68951E+01 + 1. -0.14551E+02 -0.13673E+02 0.69025E+01 + 1. -0.83945E+00 -0.17045E+02 0.69118E+01 + 1. -0.92430E+01 0.13737E+02 0.69162E+01 + 1. 0.16895E+02 -0.84024E+01 0.69258E+01 + 1. -0.46274E+01 0.15323E+02 0.69295E+01 + 1. 0.57089E+01 0.97497E+01 0.69394E+01 + 1. -0.81475E+01 0.10711E+02 0.69460E+01 + 1. 0.84756E+01 -0.15294E+02 0.69512E+01 + 1. 0.31491E+01 0.15123E+02 0.69540E+01 + 1. 0.17001E+02 0.10374E+02 0.69641E+01 + 1. 0.11945E+02 -0.23592E+01 0.69713E+01 + 1. -0.12055E+02 -0.14351E+02 0.69738E+01 + 1. 0.13035E+02 0.96915E+01 0.69830E+01 + 1. -0.26370E+01 0.13939E+02 0.69910E+01 + 1. 0.16306E+02 -0.11321E+02 0.69974E+01 + 1. -0.13167E+02 0.71784E+01 0.70033E+01 + 1. -0.17932E+02 -0.57730E+01 0.70083E+01 + 1. 0.14363E+02 0.11429E+02 0.70179E+01 + 1. 0.41817E+01 0.55249E+01 0.70204E+01 + 1. 0.77441E+01 0.23850E+01 0.70333E+01 + 1. 0.47923E+01 -0.55932E+01 0.70374E+01 + 1. 0.55163E+01 -0.11802E+02 0.70414E+01 + 1. 0.76688E+00 -0.11186E+02 0.70492E+01 + 1. -0.11581E+02 0.16276E+02 0.70568E+01 + 1. 0.11159E+02 0.22868E+01 0.70619E+01 + 1. 0.15107E+02 0.63048E+01 0.70693E+01 + 1. 0.14887E+02 0.41725E+01 0.70737E+01 + 1. 0.89822E+00 -0.72387E+01 0.70812E+01 + 1. 0.10988E+02 0.86812E-01 0.70867E+01 + 1. 0.25365E+01 -0.15317E+02 0.70986E+01 + 1. -0.17690E+02 0.86544E+01 0.71001E+01 + 1. -0.15232E+02 -0.79207E+01 0.71079E+01 + 1. -0.17693E+02 -0.93090E+01 0.71175E+01 + 1. 0.38158E+01 0.32294E+01 0.71223E+01 + 1. -0.11534E+01 0.16433E+02 0.71313E+01 + 1. 0.12756E+02 -0.13140E+02 0.71371E+01 + 1. 0.87512E+01 0.12212E+02 0.71403E+01 + 1. 0.42040E+01 0.16874E+02 0.71485E+01 + 1. 0.95943E+00 0.18551E+02 0.71565E+01 + 1. -0.20309E+01 -0.11451E+02 0.71651E+01 + 1. 0.48739E+01 -0.78389E+01 0.71688E+01 + 1. 0.81245E+00 -0.35497E+00 0.71748E+01 + 1. 0.75238E+01 0.18445E+02 0.71802E+01 + 1. 0.15076E+02 -0.69331E+01 0.71918E+01 + 1. -0.38225E+01 -0.16874E+02 0.71970E+01 + 1. -0.46779E+01 -0.11912E+02 0.72066E+01 + 1. -0.11407E+02 -0.72490E+01 0.72133E+01 + 1. -0.18800E+02 0.55395E+01 0.72193E+01 + 1. 0.12594E+02 -0.10625E+02 0.72236E+01 + 1. -0.17055E+01 0.11583E+01 0.72315E+01 + 1. -0.15385E+02 0.23821E+01 0.72375E+01 + 1. -0.33479E+01 -0.17415E+01 0.72427E+01 + 1. -0.79805E+01 -0.80710E+01 0.72484E+01 + 1. 0.18813E+02 -0.47591E+01 0.72550E+01 + 1. 0.16180E+02 0.30569E+00 0.72646E+01 + 1. -0.81728E+01 -0.18574E+01 0.72715E+01 + 1. 0.70765E+01 -0.33099E+01 0.72740E+01 + 1. -0.12276E+02 0.22880E+01 0.72811E+01 + 1. -0.15823E+02 0.71531E+01 0.72882E+01 + 1. -0.14361E+02 0.88030E+01 0.72961E+01 + 1. -0.19510E+02 -0.10001E+01 0.73007E+01 + 1. -0.11960E+02 -0.79937E+00 0.73094E+01 + 1. 0.40469E+01 -0.23706E+01 0.73193E+01 + 1. 0.68709E+01 -0.18697E+02 0.73256E+01 + 1. -0.43816E+01 -0.67739E+01 0.73330E+01 + 1. -0.69516E+01 0.72598E+01 0.73378E+01 + 1. -0.90325E+01 -0.52342E+01 0.73459E+01 + 1. -0.86551E+01 -0.16459E+02 0.73492E+01 + 1. 0.21491E+01 0.61509E+01 0.73577E+01 + 1. 0.10693E+02 -0.95488E+01 0.73609E+01 + 1. 0.96162E+01 0.53497E+01 0.73688E+01 + 1. 0.11250E+02 0.12820E+02 0.73789E+01 + 1. -0.70063E+01 0.29311E+01 0.73855E+01 + 1. -0.35496E+01 0.28672E+01 0.73871E+01 + 1. -0.13067E+01 0.11119E+02 0.73944E+01 + 1. 0.64482E+01 -0.91572E+01 0.74042E+01 + 1. 0.14029E+02 -0.37702E-01 0.74109E+01 + 1. -0.57988E+01 -0.15949E+02 0.74165E+01 + 1. -0.15464E+02 -0.11044E+01 0.74226E+01 + 1. 0.56714E+01 0.72955E+01 0.74317E+01 + 1. 0.56699E+01 0.39247E+01 0.74386E+01 + 1. 0.12854E+01 -0.18837E+02 0.74404E+01 + 1. -0.15243E+02 0.12104E+02 0.74493E+01 + 1. 0.82874E+01 0.33892E-01 0.74598E+01 + 1. 0.99152E+01 -0.13407E+02 0.74628E+01 + 1. -0.12968E+02 -0.38780E+01 0.74704E+01 + 1. -0.61641E+01 -0.16383E+01 0.74793E+01 + 1. 0.67100E+01 -0.59931E+01 0.74805E+01 + 1. 0.17888E+02 -0.26294E+01 0.74915E+01 + 1. 0.94228E+01 -0.20019E+01 0.74990E+01 + 1. -0.17815E+02 0.28075E+01 0.75030E+01 + 1. 0.24544E+00 0.12650E+02 0.75090E+01 + 1. -0.39483E+01 0.96767E+01 0.75178E+01 + 1. -0.94372E+01 0.45710E+00 0.75239E+01 + 1. -0.47182E+01 0.51443E+01 0.75282E+01 + 1. -0.13960E+02 -0.11868E+02 0.75399E+01 + 1. 0.26155E+01 -0.90998E+01 0.75425E+01 + 1. -0.96969E+01 0.17460E+02 0.75498E+01 + 1. -0.11073E+02 0.10888E+02 0.75557E+01 + 1. -0.11115E+02 0.60850E+01 0.75618E+01 + 1. -0.47703E+01 -0.19390E+02 0.75687E+01 + 1. -0.74355E+01 -0.11726E+02 0.75791E+01 + 1. -0.13581E+02 0.14264E+02 0.75822E+01 + 1. 0.19700E+02 0.19639E+01 0.75887E+01 + 1. 0.28221E+01 -0.59546E+01 0.75943E+01 + 1. 0.99889E+00 0.34162E+01 0.76043E+01 + 1. -0.10893E+02 -0.45146E+01 0.76104E+01 + 1. 0.58236E+01 0.13120E+02 0.76150E+01 + 1. 0.63295E+01 0.16554E+02 0.76204E+01 + 1. -0.75066E+01 0.15714E+02 0.76310E+01 + 1. 0.69413E+01 0.11429E+02 0.76354E+01 + 1. 0.52941E+01 -0.17282E+02 0.76435E+01 + 1. 0.16667E+02 0.34571E+01 0.76487E+01 + 1. 0.90239E+01 -0.64450E+01 0.76555E+01 + 1. 0.30890E+01 0.85297E+01 0.76623E+01 + 1. -0.85577E+01 0.86930E+01 0.76690E+01 + 1. -0.14463E+02 0.54314E+01 0.76771E+01 + 1. -0.10261E+02 -0.11951E+02 0.76838E+01 + 1. 0.77422E+01 -0.11396E+02 0.76890E+01 + 1. -0.11111E+02 -0.16502E+02 0.76986E+01 + 1. 0.14637E+02 -0.12296E+02 0.77063E+01 + 1. -0.58127E+01 0.81714E+00 0.77086E+01 + 1. -0.89649E+00 -0.81883E+01 0.77197E+01 + 1. -0.72194E+01 0.18388E+02 0.77207E+01 + 1. -0.42137E+01 0.17932E+02 0.77326E+01 + 1. 0.16360E+01 -0.13036E+02 0.77389E+01 + 1. 0.13241E+02 0.13077E+02 0.77462E+01 + 1. 0.13646E+02 0.20778E+01 0.77482E+01 + 1. 0.10843E+02 -0.16640E+02 0.77549E+01 + 1. 0.50255E+01 0.19305E+02 0.77618E+01 + 1. 0.97016E+01 0.78647E+01 0.77668E+01 + 1. 0.16925E+02 0.77694E+01 0.77772E+01 + 1. 0.50181E+01 -0.14076E+02 0.77826E+01 + 1. -0.49430E+01 -0.46813E+01 0.77907E+01 + 1. -0.10013E+02 0.23716E+01 0.77947E+01 + 1. -0.19722E+02 0.94273E+00 0.78032E+01 + 1. 0.15549E+02 -0.34575E+01 0.78113E+01 + 1. -0.10919E+01 -0.18932E+02 0.78184E+01 + 1. -0.53313E+01 0.13092E+02 0.78219E+01 + 1. 0.12325E+02 -0.53408E+01 0.78276E+01 + 1. -0.19813E+01 -0.15391E+02 0.78386E+01 + 1. -0.72713E+01 -0.14200E+02 0.78466E+01 + 1. 0.27967E+00 -0.50122E+01 0.78472E+01 + 1. -0.16098E+02 -0.54483E+01 0.78579E+01 + 1. 0.65117E+01 -0.15425E+02 0.78629E+01 + 1. 0.31041E+01 0.10754E+02 0.78678E+01 + 1. -0.19712E+01 0.73681E+01 0.78782E+01 + 1. 0.14182E+02 0.79178E+01 0.78820E+01 + 1. 0.83854E+01 -0.17177E+02 0.78867E+01 + 1. 0.17824E+02 -0.66685E+01 0.78976E+01 + 1. 0.10477E+02 0.16507E+02 0.79010E+01 + 1. 0.44169E+01 0.12638E+01 0.79126E+01 + 1. 0.18395E+02 0.53923E+01 0.79135E+01 + 1. 0.74991E+01 0.83651E+01 0.79219E+01 + 1. 0.23484E+01 0.17101E+02 0.79313E+01 + 1. 0.11236E+02 0.64206E+01 0.79384E+01 + 1. -0.24053E+01 -0.64508E+01 0.79463E+01 + 1. -0.12358E+02 -0.10076E+02 0.79495E+01 + 1. -0.14995E+01 -0.71630E+00 0.79541E+01 + 1. -0.13596E+02 -0.70152E+01 0.79654E+01 + 1. -0.64606E+01 0.99676E+01 0.79693E+01 + 1. 0.14695E+02 -0.96965E+01 0.79779E+01 + 1. -0.16496E+02 0.75219E+00 0.79860E+01 + 1. -0.65284E+01 -0.68852E+01 0.79876E+01 + 1. 0.10410E+02 -0.46407E+01 0.79941E+01 + 1. -0.72814E+01 0.12512E+02 0.80054E+01 + 1. -0.17589E+02 -0.13138E+01 0.80086E+01 + 1. 0.12995E+02 0.15101E+02 0.80161E+01 + 1. -0.78250E+01 -0.37582E+01 0.80234E+01 + 1. 0.11609E+02 0.10654E+02 0.80281E+01 + 1. -0.14397E+02 0.52135E+00 0.80346E+01 + 1. 0.73495E+01 0.50017E+01 0.80450E+01 + 1. 0.11935E+02 -0.77315E+01 0.80476E+01 + 1. 0.64606E+00 0.15905E+02 0.80586E+01 + 1. 0.19972E+02 -0.98587E+00 0.80611E+01 + 1. 0.76810E+01 0.14145E+02 0.80725E+01 + 1. -0.61621E+01 -0.17992E+02 0.80751E+01 + 1. 0.53792E+01 -0.10381E+01 0.80842E+01 + 1. -0.10397E+02 0.80103E+01 0.80884E+01 + 1. -0.18499E+02 -0.74231E+01 0.80989E+01 + 1. 0.81529E+00 -0.16815E+02 0.81044E+01 + 1. -0.99988E+01 0.15227E+02 0.81126E+01 + 1. 0.32984E+01 -0.17368E+02 0.81166E+01 + 1. -0.84944E+00 -0.12854E+02 0.81261E+01 + 1. -0.39974E+01 -0.10092E+02 0.81323E+01 + 1. 0.19358E+01 0.13810E+02 0.81379E+01 + 1. -0.21086E+01 0.40758E+01 0.81443E+01 + 1. 0.13154E+02 0.58252E+01 0.81469E+01 + 1. -0.94102E+01 0.11887E+02 0.81570E+01 + 1. 0.96480E+01 0.33189E+01 0.81602E+01 + 1. -0.18275E+02 -0.41171E+01 0.81729E+01 + 1. -0.95474E+01 0.49442E+01 0.81780E+01 + 1. 0.61031E+00 -0.95210E+01 0.81815E+01 + 1. -0.34285E+01 0.11572E+02 0.81898E+01 + 1. -0.97191E+00 0.14546E+02 0.81997E+01 + 1. -0.37294E+00 0.19820E+02 0.82023E+01 + 1. 0.34833E+01 -0.11745E+02 0.82092E+01 + 1. -0.45290E+01 -0.14186E+02 0.82153E+01 + 1. 0.52975E+01 -0.38454E+01 0.82203E+01 + 1. -0.95534E+01 -0.14773E+02 0.82296E+01 + 1. 0.17899E+02 0.11525E+01 0.82346E+01 + 1. -0.26012E+01 0.19731E+02 0.82425E+01 + 1. 0.38728E+00 0.80855E+01 0.82494E+01 + 1. 0.17184E+02 -0.10014E+02 0.82546E+01 + 1. 0.82981E+01 -0.46079E+01 0.82604E+01 + 1. 0.23625E+01 0.11011E+01 0.82701E+01 + 1. -0.14604E+02 -0.29336E+01 0.82773E+01 + 1. -0.41030E+00 0.51258E+01 0.82848E+01 + 1. -0.14050E+02 0.10545E+02 0.82913E+01 + 1. 0.17086E+01 -0.22770E+01 0.82933E+01 + 1. -0.27342E+01 -0.43150E+01 0.83014E+01 + 1. -0.96932E+01 -0.71513E+01 0.83101E+01 + 1. -0.15703E+02 -0.94466E+01 0.83185E+01 + 1. -0.93572E+01 -0.97315E+01 0.83240E+01 + 1. -0.17724E+02 0.69333E+01 0.83293E+01 + 1. 0.13636E+02 -0.19408E+01 0.83352E+01 + 1. -0.16234E+02 -0.11445E+02 0.83451E+01 + 1. 0.15144E+02 0.96230E+01 0.83527E+01 + 1. 0.47106E+01 -0.19237E+02 0.83562E+01 + 1. 0.17267E+00 0.10123E+02 0.83659E+01 + 1. 0.84727E+01 0.10148E+02 0.83683E+01 + 1. -0.57877E+01 0.16701E+02 0.83775E+01 + 1. 0.80359E+01 -0.13249E+02 0.83841E+01 + 1. -0.19314E+02 0.38632E+01 0.83898E+01 + 1. 0.10003E+02 0.12584E+01 0.83966E+01 + 1. -0.23919E+01 0.17405E+02 0.84051E+01 + 1. -0.16141E+02 0.92843E+01 0.84133E+01 + 1. 0.84388E+01 0.16649E+02 0.84198E+01 + 1. -0.51868E+01 0.77779E+01 0.84231E+01 + 1. 0.47060E+01 0.14805E+02 0.84308E+01 + 1. 0.14665E+02 -0.52184E+01 0.84387E+01 + 1. -0.62448E+01 -0.10072E+02 0.84424E+01 + 1. 0.20743E+01 0.19872E+02 0.84526E+01 + 1. -0.82712E+01 -0.18114E+02 0.84590E+01 + 1. 0.13349E+02 -0.14555E+02 0.84626E+01 + 1. -0.10140E+02 -0.12598E+01 0.84668E+01 + 1. 0.62761E+01 0.21009E+01 0.84756E+01 + 1. 0.15760E+02 0.12146E+02 0.84854E+01 + 1. 0.11553E+02 0.41830E+01 0.84903E+01 + 1. -0.47538E+00 -0.31657E+01 0.84997E+01 + 1. -0.81935E+01 0.16816E+01 0.85046E+01 + 1. -0.33805E+01 0.15099E+02 0.85121E+01 + 1. 0.17354E+02 -0.75941E+00 0.85133E+01 + 1. -0.11381E+02 0.13511E+02 0.85266E+01 + 1. 0.10211E+02 -0.11225E+02 0.85311E+01 + 1. -0.73898E+01 -0.35999E+00 0.85349E+01 + 1. 0.75027E+01 -0.75789E+01 0.85418E+01 + 1. 0.16778E+00 0.98004E+00 0.85508E+01 + 1. 0.97667E+01 -0.15151E+02 0.85557E+01 + 1. -0.31224E+01 0.58692E+01 0.85628E+01 + 1. -0.21445E+01 0.96754E+01 0.85721E+01 + 1. -0.12330E+02 0.45739E+01 0.85786E+01 + 1. 0.19444E+02 0.36888E+01 0.85802E+01 + 1. 0.15830E+02 0.18503E+01 0.85877E+01 + 1. 0.16893E+02 -0.49179E+01 0.85950E+01 + 1. 0.19571E+02 -0.31481E+01 0.86030E+01 + 1. -0.15734E+02 0.39372E+01 0.86114E+01 + 1. 0.12401E+02 0.41399E+00 0.86138E+01 + 1. 0.30419E+01 0.44771E+01 0.86224E+01 + 1. 0.81062E+00 -0.14704E+02 0.86273E+01 + 1. -0.75435E+01 0.55941E+01 0.86344E+01 + 1. -0.19782E+02 -0.26265E+01 0.86426E+01 + 1. -0.13759E+02 0.29716E+01 0.86487E+01 + 1. -0.50252E+01 0.34303E+01 0.86582E+01 + 1. -0.35703E+01 0.11452E+01 0.86617E+01 + 1. 0.39464E+01 0.12849E+02 0.86673E+01 + 1. 0.31059E+01 -0.37371E+01 0.86778E+01 + 1. 0.99114E+01 -0.82490E+01 0.86816E+01 + 1. -0.13057E+02 -0.14977E+02 0.86928E+01 + 1. -0.25777E+01 -0.13684E+02 0.86993E+01 + 1. -0.13596E+02 0.12562E+02 0.87009E+01 + 1. 0.10184E+02 0.14296E+02 0.87131E+01 + 1. 0.12352E+02 0.89158E+01 0.87179E+01 + 1. 0.36173E+01 0.64589E+01 0.87260E+01 + 1. -0.11448E+01 -0.10313E+02 0.87280E+01 + 1. 0.16088E+02 -0.80428E+01 0.87385E+01 + 1. 0.24707E+01 -0.19838E+02 0.87461E+01 + 1. -0.12802E+02 0.84040E+01 0.87523E+01 + 1. -0.12162E+02 0.69224E+00 0.87589E+01 + 1. -0.11803E+02 -0.13289E+02 0.87665E+01 + 1. -0.21053E+01 -0.17359E+02 0.87674E+01 + 1. -0.45376E+01 -0.24767E+01 0.87775E+01 + 1. 0.47420E+01 0.90735E+01 0.87851E+01 + 1. -0.14037E+02 -0.51713E+01 0.87916E+01 + 1. -0.28598E+01 -0.19346E+02 0.87958E+01 + 1. 0.16654E+02 0.59181E+01 0.88051E+01 + 1. 0.30707E+01 -0.82041E+00 0.88119E+01 + 1. 0.72751E+01 -0.16224E+01 0.88193E+01 + 1. -0.16196E+02 -0.72166E+01 0.88206E+01 + 1. -0.28778E+01 -0.84625E+01 0.88309E+01 + 1. 0.11382E+02 -0.13329E+02 0.88357E+01 + 1. 0.49754E+01 -0.90011E+01 0.88413E+01 + 1. 0.11767E+02 -0.32951E+01 0.88503E+01 + 1. -0.10996E+02 -0.86311E+01 0.88588E+01 + 1. -0.14473E+02 0.72257E+01 0.88653E+01 + 1. -0.12323E+02 -0.22710E+01 0.88702E+01 + 1. -0.60282E+01 -0.12597E+02 0.88757E+01 + 1. -0.42699E+00 0.17886E+02 0.88800E+01 + 1. -0.85115E+01 0.14052E+02 0.88921E+01 + 1. 0.84072E+01 -0.98582E+01 0.88992E+01 + 1. 0.13651E+02 0.11438E+02 0.89042E+01 + 1. 0.61196E+01 -0.10724E+02 0.89109E+01 + 1. 0.43680E+01 -0.69144E+01 0.89154E+01 + 1. -0.11975E+02 -0.61034E+01 0.89216E+01 + 1. 0.10887E+02 -0.11614E+01 0.89305E+01 + 1. 0.29241E+01 -0.14326E+02 0.89376E+01 + 1. 0.98643E+01 0.11923E+02 0.89454E+01 + 1. -0.17467E+02 0.49272E+01 0.89494E+01 + 1. 0.39043E+01 0.18131E+02 0.89553E+01 + 1. 0.14010E+02 -0.72096E+01 0.89664E+01 + 1. 0.60271E+01 -0.12810E+02 0.89689E+01 + 1. 0.16875E+01 -0.11259E+02 0.89743E+01 + 1. -0.16450E+02 -0.37883E+01 0.89860E+01 + 1. 0.16118E+01 -0.70353E+01 0.89871E+01 + 1. 0.86836E+01 0.62250E+01 0.89971E+01 + 1. 0.56099E+01 0.60596E+01 0.90048E+01 + 1. -0.86625E+01 0.10197E+02 0.90120E+01 + 1. -0.14479E+02 -0.13319E+02 0.90152E+01 + 1. 0.10313E+02 0.94707E+01 0.90260E+01 + 1. -0.77003E+01 -0.56401E+01 0.90332E+01 + 1. -0.51788E+01 -0.82968E+01 0.90356E+01 + 1. -0.27837E+01 -0.11649E+02 0.90407E+01 + 1. -0.25380E+01 -0.24280E+01 0.90468E+01 + 1. 0.12476E+02 -0.97108E+01 0.90573E+01 + 1. 0.16096E+01 0.11760E+02 0.90617E+01 + 1. 0.12991E+02 -0.11880E+02 0.90703E+01 + 1. -0.61023E+01 0.14588E+02 0.90773E+01 + 1. -0.57913E+00 -0.67364E+01 0.90838E+01 + 1. 0.69533E+01 0.18205E+02 0.90890E+01 + 1. -0.12056E+02 0.15586E+02 0.90997E+01 + 1. 0.53428E+01 0.11300E+02 0.91001E+01 + 1. -0.42019E+01 -0.17671E+02 0.91101E+01 + 1. 0.14602E+02 0.47885E+01 0.91182E+01 + 1. -0.99896E+01 -0.33509E+01 0.91208E+01 + 1. 0.46596E+01 -0.15946E+02 0.91290E+01 + 1. -0.16801E+01 0.12338E+02 0.91370E+01 + 1. 0.15076E+02 -0.17921E+00 0.91460E+01 + 1. -0.18182E+01 0.20350E+01 0.91522E+01 + 1. 0.19178E+02 -0.56516E+01 0.91599E+01 + 1. -0.77034E+01 0.76088E+01 0.91664E+01 + 1. -0.11162E+02 0.95951E+01 0.91730E+01 + 1. -0.82598E+01 0.17206E+02 0.91786E+01 + 1. 0.65992E+01 -0.17164E+02 0.91824E+01 + 1. -0.54070E+01 -0.51633E+00 0.91920E+01 + 1. -0.97580E+01 -0.16997E+02 0.91979E+01 + 1. 0.16813E+01 0.67816E+01 0.92007E+01 + 1. -0.53158E+01 0.19251E+02 0.92072E+01 + 1. -0.14004E+02 -0.10448E+02 0.92175E+01 + 1. -0.17527E+02 -0.93361E+01 0.92257E+01 + 1. -0.11481E+02 0.26819E+01 0.92299E+01 + 1. 0.19026E+01 0.94157E+01 0.92371E+01 + 1. 0.27865E+01 0.15512E+02 0.92429E+01 + 1. 0.15872E+02 -0.11941E+02 0.92493E+01 + 1. 0.40484E+01 0.28446E+01 0.92572E+01 + 1. -0.18697E+02 0.18786E+01 0.92633E+01 + 1. -0.73498E+01 -0.16409E+02 0.92720E+01 + 1. 0.78136E+01 0.10291E+01 0.92758E+01 + 1. 0.12350E+02 0.24167E+01 0.92832E+01 + 1. 0.90779E+01 -0.29582E+01 0.92894E+01 + 1. 0.79133E+01 -0.15537E+02 0.92993E+01 + 1. 0.90078E+01 -0.58004E+00 0.93023E+01 + 1. -0.79884E+01 0.35124E+01 0.93116E+01 + 1. -0.80398E+01 -0.85047E+01 0.93163E+01 + 1. 0.18292E+02 0.76823E+01 0.93239E+01 + 1. -0.43707E+01 -0.63726E+01 0.93327E+01 + 1. 0.11872E+02 -0.15663E+02 0.93384E+01 + 1. -0.16323E+02 0.11107E+02 0.93407E+01 + 1. 0.11966E+02 0.12903E+02 0.93483E+01 + 1. 0.32996E+00 -0.10246E+01 0.93583E+01 + 1. -0.19681E+02 -0.44055E+00 0.93623E+01 + 1. -0.15362E+02 0.19477E+01 0.93680E+01 + 1. -0.15043E+02 -0.12882E+01 0.93763E+01 + 1. 0.16760E+02 -0.27779E+01 0.93860E+01 + 1. 0.44343E+01 -0.23746E+01 0.93920E+01 + 1. -0.38794E+01 0.13234E+02 0.93996E+01 + 1. 0.33120E+00 0.13320E+02 0.94060E+01 + 1. -0.89777E+01 -0.13086E+02 0.94102E+01 + 1. 0.17787E+02 0.28096E+01 0.94135E+01 + 1. -0.57988E+01 0.11397E+02 0.94229E+01 + 1. 0.75511E+01 0.12193E+02 0.94293E+01 + 1. -0.17963E+02 0.87564E+01 0.94367E+01 + 1. 0.71310E+00 -0.18415E+02 0.94400E+01 + 1. -0.37113E+01 0.86771E+01 0.94491E+01 + 1. 0.18127E+01 0.26752E+01 0.94596E+01 + 1. -0.18865E+02 -0.57931E+01 0.94653E+01 + 1. 0.63747E+01 0.15286E+02 0.94698E+01 + 1. 0.14183E+02 0.13942E+02 0.94775E+01 + 1. 0.10319E+02 -0.63735E+01 0.94848E+01 + 1. 0.17231E+02 0.95350E+01 0.94923E+01 + 1. -0.51427E+01 0.52625E+01 0.94981E+01 + 1. 0.14923E+02 0.68598E+01 0.95041E+01 + 1. 0.68297E+01 0.37414E+01 0.95105E+01 + 1. -0.10715E+02 -0.10785E+02 0.95188E+01 + 1. -0.10223E+02 0.16701E+02 0.95263E+01 + 1. 0.21583E+01 -0.92355E+01 0.95276E+01 + 1. -0.64442E+01 -0.36629E+01 0.95350E+01 + 1. -0.58087E+01 0.17985E+01 0.95426E+01 + 1. -0.34571E+01 -0.15754E+02 0.95519E+01 + 1. 0.65394E+01 -0.59382E+01 0.95545E+01 + 1. 0.23387E+01 -0.16322E+02 0.95642E+01 + 1. -0.99534E+01 0.65662E+01 0.95709E+01 + 1. 0.19757E+02 0.36934E+00 0.95735E+01 + 1. 0.94945E+01 -0.16938E+02 0.95816E+01 + 1. -0.77168E+01 -0.10824E+02 0.95904E+01 + 1. -0.10695E+01 0.65673E+01 0.95964E+01 + 1. 0.11601E+02 0.15641E+02 0.96009E+01 + 1. -0.94415E+00 -0.15089E+02 0.96095E+01 + 1. 0.15326E+01 -0.48095E+01 0.96140E+01 + 1. 0.98785E+01 0.17372E+02 0.96259E+01 + 1. -0.10054E+02 0.76689E+00 0.96315E+01 + 1. 0.68498E+01 -0.36130E+01 0.96375E+01 + 1. -0.11528E+02 0.11575E+02 0.96453E+01 + 1. 0.15972E+01 0.18040E+02 0.96511E+01 + 1. 0.10551E+02 0.73303E+01 0.96585E+01 + 1. 0.14278E+02 -0.33016E+01 0.96627E+01 + 1. -0.12282E+00 0.33089E+01 0.96702E+01 + 1. -0.96634E+01 -0.55717E+01 0.96750E+01 + 1. 0.70241E+01 0.95811E+01 0.96836E+01 + 1. 0.50711E+01 0.59407E+00 0.96930E+01 + 1. -0.58938E+01 -0.14641E+02 0.96963E+01 + 1. -0.13228E+02 -0.79932E+01 0.97007E+01 + 1. -0.16326E+02 0.64602E+01 0.97121E+01 + 1. -0.11326E+02 -0.15860E+02 0.97191E+01 + 1. -0.13775E+02 0.14410E+02 0.97248E+01 + 1. -0.12094E+02 -0.42679E+01 0.97269E+01 + 1. -0.23223E+01 0.84320E-02 0.97381E+01 + 1. 0.41375E+00 -0.12887E+02 0.97446E+01 + 1. -0.14077E+01 0.16111E+02 0.97513E+01 + 1. -0.41466E+01 0.16942E+02 0.97548E+01 + 1. 0.12822E+02 -0.50795E+01 0.97659E+01 + 1. -0.97512E+00 -0.19447E+02 0.97689E+01 + 1. -0.12576E+02 0.65046E+01 0.97788E+01 + 1. -0.14408E+02 0.90919E+01 0.97804E+01 + 1. -0.85749E+01 -0.19920E+01 0.97920E+01 + 1. -0.14501E+02 0.53353E+01 0.97952E+01 + 1. 0.10518E+02 0.52865E+01 0.98027E+01 + 1. 0.86208E+01 0.81712E+01 0.98129E+01 + 1. -0.34374E+01 0.40442E+01 0.98198E+01 + 1. 0.19050E+02 0.53330E+01 0.98242E+01 + 1. 0.46557E+01 -0.50319E+01 0.98298E+01 + 1. 0.18167E+02 -0.75301E+01 0.98390E+01 + 1. -0.15235E+01 -0.47868E+01 0.98443E+01 + 1. -0.83172E+01 0.12299E+02 0.98484E+01 + 1. 0.14366E+02 -0.10592E+02 0.98551E+01 + 1. 0.36922E+01 -0.18330E+02 0.98641E+01 + 1. -0.60953E+01 0.91315E+01 0.98733E+01 + 1. -0.17199E+02 -0.21445E+01 0.98795E+01 + 1. 0.84098E+01 -0.11618E+02 0.98826E+01 + 1. -0.57023E+01 -0.19010E+02 0.98888E+01 + 1. 0.85363E+01 0.15040E+02 0.98954E+01 + 1. -0.16991E+02 0.27072E+00 0.99043E+01 + 1. 0.14573E+02 -0.13492E+02 0.99107E+01 + 1. 0.13045E+02 0.74086E+01 0.99198E+01 + 1. 0.19066E+02 -0.15403E+01 0.99205E+01 + 1. 0.13229E+01 0.48428E+01 0.99269E+01 + 1. -0.28709E+00 -0.89428E+01 0.99370E+01 + 1. -0.18864E+02 0.65966E+01 0.99441E+01 + 1. -0.43471E+01 -0.13196E+02 0.99473E+01 + 1. -0.12647E+02 -0.11787E+02 0.99568E+01 + 1. -0.47721E+01 -0.10785E+02 0.99631E+01 + 1. 0.14267E+02 0.28735E+01 0.99670E+01 + 1. 0.40853E+01 -0.10600E+02 0.99797E+01 + 1. -0.71554E+00 0.86857E+01 0.99816E+01 + 1. 0.10411E+02 0.24616E+01 0.99929E+01 + 1. -0.10791E+02 0.44438E+01 0.99945E+01 diff --git a/cylslab3000.pos b/cylslab3000.pos new file mode 100644 index 0000000..b5c5b14 --- /dev/null +++ b/cylslab3000.pos @@ -0,0 +1,3000 @@ + 1. -0.12965E+02 -0.93624E+01 -0.99941E+01 + 1. 0.85070E+01 0.16922E+02 -0.99904E+01 + 1. 0.35559E+01 0.13697E+02 -0.99814E+01 + 1. -0.21028E+01 -0.40664E+01 -0.99752E+01 + 1. 0.16388E+02 0.24331E+01 -0.99732E+01 + 1. 0.12191E+02 -0.53233E+01 -0.99640E+01 + 1. -0.63155E+01 0.54762E+00 -0.99566E+01 + 1. -0.16808E+02 -0.66680E+01 -0.99510E+01 + 1. -0.38971E+01 0.16950E+02 -0.99405E+01 + 1. 0.14536E+02 -0.75087E+00 -0.99361E+01 + 1. 0.10011E+02 0.12734E+02 -0.99304E+01 + 1. 0.19577E+02 0.19602E+01 -0.99235E+01 + 1. -0.38874E+01 0.66963E+01 -0.99166E+01 + 1. -0.16619E+02 0.77769E+01 -0.99108E+01 + 1. -0.19262E+01 0.29369E+00 -0.99008E+01 + 1. -0.45367E+01 -0.14913E+02 -0.98994E+01 + 1. -0.76987E+01 -0.63255E+01 -0.98870E+01 + 1. -0.69447E+00 -0.74946E+01 -0.98822E+01 + 1. -0.19576E+02 0.63091E+00 -0.98789E+01 + 1. 0.12397E+02 0.15573E+02 -0.98702E+01 + 1. -0.15526E+02 0.44510E+01 -0.98611E+01 + 1. 0.43635E+01 0.11015E+02 -0.98534E+01 + 1. -0.88401E+01 0.44805E+01 -0.98514E+01 + 1. 0.11902E+02 -0.15124E+02 -0.98434E+01 + 1. 0.14525E+02 0.12588E+02 -0.98395E+01 + 1. -0.11177E+02 0.13433E+02 -0.98273E+01 + 1. -0.12716E+00 0.15386E+02 -0.98207E+01 + 1. 0.67438E+01 -0.67611E+01 -0.98138E+01 + 1. -0.96134E+01 0.15372E+02 -0.98114E+01 + 1. -0.12177E+02 -0.24229E+01 -0.98009E+01 + 1. -0.12666E+02 -0.48327E+01 -0.97974E+01 + 1. 0.58753E+01 -0.27347E+01 -0.97919E+01 + 1. -0.15659E+02 -0.21863E+01 -0.97862E+01 + 1. 0.71397E+01 -0.10003E+02 -0.97758E+01 + 1. -0.13601E+00 0.55659E+01 -0.97677E+01 + 1. -0.77498E+01 0.85131E+01 -0.97647E+01 + 1. -0.98243E+01 0.10896E+02 -0.97566E+01 + 1. 0.70499E+01 -0.15910E+02 -0.97477E+01 + 1. -0.15316E+01 -0.12234E+02 -0.97461E+01 + 1. 0.16559E+02 0.87679E+01 -0.97363E+01 + 1. 0.13209E+02 0.39911E+01 -0.97309E+01 + 1. 0.46898E+01 -0.15977E+02 -0.97266E+01 + 1. -0.11894E+02 0.63805E+00 -0.97197E+01 + 1. -0.10899E+02 -0.10216E+02 -0.97107E+01 + 1. 0.15537E+01 -0.12742E+02 -0.97040E+01 + 1. 0.95296E+01 -0.13359E+02 -0.96995E+01 + 1. 0.14894E+02 -0.46716E+01 -0.96904E+01 + 1. 0.41886E+01 -0.98142E+01 -0.96866E+01 + 1. 0.15893E+02 -0.93592E+01 -0.96734E+01 + 1. 0.13701E+02 -0.72705E+01 -0.96695E+01 + 1. -0.84370E+01 -0.16242E+02 -0.96618E+01 + 1. -0.57945E+01 0.16151E+02 -0.96545E+01 + 1. 0.53057E+01 -0.13966E+02 -0.96501E+01 + 1. 0.12104E+02 0.12289E+02 -0.96464E+01 + 1. 0.90752E+01 0.14213E+01 -0.96377E+01 + 1. 0.41127E+00 -0.18735E+02 -0.96332E+01 + 1. -0.62457E+01 0.58332E+01 -0.96266E+01 + 1. -0.78919E+01 0.24838E+01 -0.96148E+01 + 1. 0.53353E+01 0.19207E+02 -0.96111E+01 + 1. 0.26592E+00 -0.66718E+00 -0.96051E+01 + 1. -0.42934E+01 0.95216E+01 -0.95991E+01 + 1. -0.21728E+01 0.53178E+01 -0.95897E+01 + 1. -0.19033E+02 0.60782E+01 -0.95817E+01 + 1. -0.56455E+01 -0.60247E+01 -0.95739E+01 + 1. 0.37324E+01 0.72618E+00 -0.95696E+01 + 1. -0.70891E+01 -0.17799E+02 -0.95655E+01 + 1. 0.15303E+02 -0.12749E+02 -0.95552E+01 + 1. -0.68308E+01 0.14032E+02 -0.95518E+01 + 1. -0.17202E+01 0.84350E+01 -0.95446E+01 + 1. 0.23021E+01 -0.47083E+01 -0.95348E+01 + 1. -0.61204E+00 0.12671E+02 -0.95307E+01 + 1. 0.36889E+01 0.48344E+01 -0.95215E+01 + 1. 0.14339E+02 0.70811E+01 -0.95167E+01 + 1. -0.55337E+01 -0.21995E+01 -0.95100E+01 + 1. 0.16382E+02 -0.32772E+01 -0.95061E+01 + 1. -0.17172E+01 -0.17904E+02 -0.94970E+01 + 1. -0.17184E+02 -0.42935E+01 -0.94907E+01 + 1. 0.45522E+01 -0.45899E+01 -0.94828E+01 + 1. 0.12125E+02 -0.10435E+02 -0.94743E+01 + 1. 0.15970E+02 0.10790E+02 -0.94729E+01 + 1. 0.16473E+02 0.17185E+00 -0.94630E+01 + 1. 0.12650E+02 -0.18238E+01 -0.94545E+01 + 1. -0.15189E+02 -0.81921E+01 -0.94471E+01 + 1. -0.17909E+02 -0.85967E+01 -0.94443E+01 + 1. 0.94085E+01 -0.17749E+01 -0.94379E+01 + 1. 0.86253E+01 -0.61852E+01 -0.94295E+01 + 1. 0.18235E+02 0.75681E+01 -0.94237E+01 + 1. -0.12852E+02 -0.74127E+01 -0.94154E+01 + 1. -0.12068E+02 0.72710E+01 -0.94098E+01 + 1. -0.82542E+01 -0.10638E+02 -0.94066E+01 + 1. 0.10740E+02 0.25815E+01 -0.93953E+01 + 1. 0.58269E+01 -0.61338E-01 -0.93893E+01 + 1. -0.59887E+01 0.31064E+01 -0.93820E+01 + 1. -0.16136E+02 0.11566E+01 -0.93789E+01 + 1. 0.12673E+02 0.93274E+01 -0.93671E+01 + 1. -0.76655E+01 -0.23670E+01 -0.93602E+01 + 1. 0.17239E+02 0.43301E+01 -0.93536E+01 + 1. -0.14090E+02 0.86260E+00 -0.93523E+01 + 1. -0.36694E+01 -0.13088E+02 -0.93425E+01 + 1. -0.15033E+02 0.12883E+02 -0.93364E+01 + 1. 0.54747E+01 0.73678E+01 -0.93273E+01 + 1. 0.11184E+02 -0.70293E+01 -0.93225E+01 + 1. -0.62900E+01 0.10415E+02 -0.93190E+01 + 1. -0.61622E+00 -0.27437E+01 -0.93087E+01 + 1. 0.16535E+01 0.13153E+02 -0.93066E+01 + 1. 0.72539E+00 0.22450E+01 -0.92948E+01 + 1. 0.14297E+01 0.67372E+01 -0.92933E+01 + 1. 0.10418E+02 -0.11470E+02 -0.92841E+01 + 1. 0.28941E+01 -0.27008E+01 -0.92780E+01 + 1. -0.73668E+01 -0.87661E+01 -0.92721E+01 + 1. 0.13623E+02 0.12116E+01 -0.92655E+01 + 1. 0.66149E+01 0.12475E+02 -0.92598E+01 + 1. -0.12678E+02 0.15442E+02 -0.92524E+01 + 1. -0.28672E+01 0.33557E+01 -0.92443E+01 + 1. -0.12854E+02 -0.14593E+02 -0.92353E+01 + 1. -0.49908E+01 -0.17075E+02 -0.92329E+01 + 1. -0.14031E+02 -0.33746E+01 -0.92211E+01 + 1. 0.15814E+01 0.10803E+02 -0.92195E+01 + 1. 0.98881E+01 -0.44901E+01 -0.92113E+01 + 1. 0.86778E+01 0.10863E+02 -0.92020E+01 + 1. 0.58363E+01 0.40170E+01 -0.91975E+01 + 1. -0.41879E+01 -0.73750E+01 -0.91898E+01 + 1. 0.14852E+02 0.50703E+01 -0.91853E+01 + 1. -0.40961E+01 0.19042E+02 -0.91773E+01 + 1. -0.51800E+00 -0.96622E+01 -0.91686E+01 + 1. 0.14617E+02 -0.10887E+02 -0.91613E+01 + 1. 0.11199E+01 -0.63856E+01 -0.91547E+01 + 1. -0.98372E+01 0.21105E+01 -0.91522E+01 + 1. -0.10287E+02 -0.51245E+00 -0.91401E+01 + 1. 0.67853E+01 -0.45976E+01 -0.91395E+01 + 1. 0.37715E+01 0.15622E+02 -0.91325E+01 + 1. 0.76988E+01 0.88123E+01 -0.91226E+01 + 1. -0.41771E+01 0.14191E+02 -0.91157E+01 + 1. 0.98434E+01 -0.88095E+01 -0.91124E+01 + 1. -0.13552E+02 0.38767E+01 -0.91048E+01 + 1. -0.10001E+02 -0.15063E+02 -0.90977E+01 + 1. 0.24919E+01 -0.15923E+02 -0.90909E+01 + 1. -0.96944E+01 -0.77051E+01 -0.90826E+01 + 1. -0.75942E+01 0.17006E+02 -0.90744E+01 + 1. -0.86421E+01 -0.46246E+01 -0.90670E+01 + 1. -0.20268E+01 0.14451E+02 -0.90622E+01 + 1. 0.25649E+01 0.18175E+02 -0.90562E+01 + 1. -0.10462E+02 0.54579E+01 -0.90499E+01 + 1. -0.15684E+02 -0.11313E+02 -0.90453E+01 + 1. 0.13924E+02 -0.14125E+02 -0.90334E+01 + 1. 0.10806E+02 -0.25169E+00 -0.90293E+01 + 1. 0.86059E+01 -0.17910E+02 -0.90222E+01 + 1. 0.12093E+02 0.58994E+01 -0.90139E+01 + 1. -0.35407E+01 -0.58539E+00 -0.90115E+01 + 1. 0.60208E+01 0.99562E+01 -0.90001E+01 + 1. 0.30316E+01 0.88095E+01 -0.89944E+01 + 1. -0.17377E+02 0.47615E+01 -0.89920E+01 + 1. 0.43469E+01 -0.76060E+01 -0.89841E+01 + 1. -0.10709E+02 -0.52675E+01 -0.89795E+01 + 1. -0.11972E+02 0.11564E+02 -0.89686E+01 + 1. -0.81731E+00 -0.54869E+01 -0.89629E+01 + 1. -0.14050E+02 0.65784E+01 -0.89535E+01 + 1. 0.19905E+02 -0.96167E+00 -0.89508E+01 + 1. -0.12822E+02 -0.11130E+02 -0.89458E+01 + 1. 0.12430E+00 0.17839E+02 -0.89367E+01 + 1. 0.24154E+01 -0.10731E+02 -0.89331E+01 + 1. -0.44862E+01 -0.40489E+01 -0.89234E+01 + 1. -0.17380E+02 -0.16030E+01 -0.89143E+01 + 1. -0.15379E+02 -0.55455E+01 -0.89133E+01 + 1. -0.44002E+01 0.15541E+01 -0.89002E+01 + 1. -0.40603E+01 0.11832E+02 -0.88936E+01 + 1. -0.21719E+01 0.10892E+02 -0.88921E+01 + 1. 0.19628E+02 -0.33844E+01 -0.88821E+01 + 1. -0.19330E+02 -0.46178E+01 -0.88742E+01 + 1. 0.16926E+02 -0.54990E+01 -0.88728E+01 + 1. -0.10048E+01 -0.16082E+02 -0.88604E+01 + 1. 0.81468E+01 0.48332E+01 -0.88569E+01 + 1. -0.16978E+02 0.96853E+01 -0.88506E+01 + 1. -0.13778E+02 0.91493E+01 -0.88465E+01 + 1. 0.17832E+02 -0.88284E+01 -0.88388E+01 + 1. -0.24500E+01 -0.10694E+02 -0.88302E+01 + 1. 0.14492E+02 -0.27149E+01 -0.88246E+01 + 1. -0.75461E+01 0.12232E+02 -0.88145E+01 + 1. -0.71187E+01 -0.12235E+02 -0.88100E+01 + 1. 0.74122E+01 -0.14045E+02 -0.88035E+01 + 1. -0.63399E+01 -0.15118E+02 -0.87934E+01 + 1. 0.24190E+01 -0.18373E+02 -0.87884E+01 + 1. -0.11234E+02 0.35494E+01 -0.87845E+01 + 1. -0.81761E+01 0.67723E+01 -0.87750E+01 + 1. 0.91350E+01 0.74105E+01 -0.87696E+01 + 1. 0.38679E+01 0.28890E+01 -0.87607E+01 + 1. -0.94179E+01 0.92015E+01 -0.87588E+01 + 1. 0.68910E+01 0.17163E+02 -0.87521E+01 + 1. 0.32649E+01 -0.13943E+02 -0.87441E+01 + 1. 0.11483E+02 -0.13379E+02 -0.87378E+01 + 1. 0.20543E+01 -0.90770E+00 -0.87302E+01 + 1. 0.13476E+02 0.14071E+02 -0.87201E+01 + 1. -0.19466E+01 0.17580E+02 -0.87185E+01 + 1. 0.10189E+02 -0.15122E+02 -0.87080E+01 + 1. 0.87027E+01 0.14008E+02 -0.87056E+01 + 1. -0.17640E+02 0.26597E+01 -0.86973E+01 + 1. 0.11674E+02 -0.36610E+01 -0.86890E+01 + 1. 0.13900E+02 0.10811E+02 -0.86828E+01 + 1. 0.18278E+02 0.88575E+00 -0.86761E+01 + 1. -0.43653E+01 0.46751E+01 -0.86674E+01 + 1. 0.76140E+01 -0.25575E+01 -0.86665E+01 + 1. -0.14197E+02 0.11117E+02 -0.86585E+01 + 1. 0.34402E-01 0.89502E+01 -0.86482E+01 + 1. 0.11197E+02 0.14086E+02 -0.86412E+01 + 1. -0.21110E+01 -0.14193E+02 -0.86352E+01 + 1. 0.10357E+02 0.92557E+01 -0.86326E+01 + 1. 0.47724E+01 -0.17669E+02 -0.86237E+01 + 1. 0.13358E+01 0.47061E+01 -0.86172E+01 + 1. -0.50046E+01 -0.10772E+02 -0.86078E+01 + 1. -0.41061E+01 -0.19181E+02 -0.86046E+01 + 1. -0.89085E+01 -0.13224E+02 -0.85938E+01 + 1. 0.79173E+01 -0.11550E+02 -0.85898E+01 + 1. 0.18881E+02 -0.62745E+01 -0.85804E+01 + 1. 0.14976E+02 0.30291E+01 -0.85790E+01 + 1. 0.14031E+01 0.15042E+02 -0.85668E+01 + 1. -0.17295E+01 -0.19929E+02 -0.85630E+01 + 1. 0.18424E+02 0.28866E+01 -0.85596E+01 + 1. -0.10665E+02 -0.11917E+02 -0.85495E+01 + 1. 0.73102E+01 -0.83652E+01 -0.85461E+01 + 1. 0.99508E+01 0.17196E+02 -0.85381E+01 + 1. 0.60374E+01 0.15201E+02 -0.85326E+01 + 1. 0.72906E+01 0.10016E+01 -0.85266E+01 + 1. -0.10037E+02 -0.16977E+02 -0.85141E+01 + 1. -0.52988E+01 0.74435E+01 -0.85092E+01 + 1. -0.95700E+01 0.13332E+02 -0.85039E+01 + 1. 0.17484E+00 -0.11879E+02 -0.84936E+01 + 1. 0.71191E+00 -0.17101E+02 -0.84913E+01 + 1. -0.21364E+01 -0.75803E+01 -0.84818E+01 + 1. 0.12778E+02 -0.88022E+01 -0.84755E+01 + 1. 0.48148E+01 -0.11941E+02 -0.84729E+01 + 1. -0.67166E+01 -0.45744E+01 -0.84640E+01 + 1. -0.17708E+01 0.17423E+01 -0.84574E+01 + 1. -0.10138E+02 0.17147E+02 -0.84521E+01 + 1. -0.11992E+01 0.19598E+02 -0.84406E+01 + 1. -0.15498E+02 -0.50427E+00 -0.84336E+01 + 1. -0.19765E+02 0.21570E+01 -0.84317E+01 + 1. 0.32091E+00 -0.14286E+02 -0.84239E+01 + 1. 0.13132E+01 -0.91410E+01 -0.84167E+01 + 1. 0.18336E+02 0.57850E+01 -0.84122E+01 + 1. 0.17863E+02 -0.11144E+01 -0.84048E+01 + 1. -0.73414E+01 0.45137E+01 -0.83966E+01 + 1. -0.83738E+01 0.34437E+00 -0.83894E+01 + 1. -0.17991E+02 0.75537E+01 -0.83850E+01 + 1. -0.60142E+01 0.18592E+02 -0.83777E+01 + 1. -0.12787E+02 0.21140E+01 -0.83712E+01 + 1. 0.71931E+01 0.66350E+01 -0.83607E+01 + 1. -0.18038E+02 -0.63271E+01 -0.83600E+01 + 1. 0.47326E+01 -0.19394E+01 -0.83493E+01 + 1. -0.12906E+02 0.13541E+02 -0.83435E+01 + 1. -0.17975E+02 0.50683E+00 -0.83362E+01 + 1. -0.15205E+01 -0.95566E+00 -0.83282E+01 + 1. 0.47613E+01 0.13671E+02 -0.83211E+01 + 1. 0.10373E+01 -0.34373E+01 -0.83177E+01 + 1. -0.25973E+01 -0.26473E+01 -0.83108E+01 + 1. 0.15028E+02 -0.61197E+01 -0.83042E+01 + 1. -0.81094E+01 0.15021E+02 -0.82971E+01 + 1. -0.31900E+01 -0.55276E+01 -0.82917E+01 + 1. 0.15112E+02 0.89344E+01 -0.82820E+01 + 1. -0.12272E+01 0.41319E+01 -0.82782E+01 + 1. -0.54286E+01 -0.13304E+02 -0.82709E+01 + 1. -0.95435E+01 -0.95597E+01 -0.82656E+01 + 1. 0.10279E+02 0.42993E+01 -0.82551E+01 + 1. -0.27258E+00 0.11021E+02 -0.82481E+01 + 1. -0.19925E+01 0.69056E+01 -0.82402E+01 + 1. 0.16305E+02 0.62390E+01 -0.82390E+01 + 1. 0.57555E+01 -0.98817E+01 -0.82330E+01 + 1. -0.11748E+02 0.88725E+01 -0.82232E+01 + 1. 0.10715E+02 0.11590E+02 -0.82188E+01 + 1. -0.12884E+02 -0.68941E+00 -0.82093E+01 + 1. 0.16143E+02 -0.78386E+01 -0.82054E+01 + 1. 0.35767E+01 0.11985E+02 -0.81995E+01 + 1. 0.11890E+02 0.78088E+01 -0.81870E+01 + 1. -0.13700E+02 -0.87684E+01 -0.81834E+01 + 1. -0.15391E+02 0.33080E+01 -0.81776E+01 + 1. 0.15731E+01 0.19760E+02 -0.81675E+01 + 1. -0.56295E+01 0.13097E+02 -0.81641E+01 + 1. 0.11850E+02 0.12920E+01 -0.81592E+01 + 1. 0.45174E+01 0.18015E+02 -0.81477E+01 + 1. -0.16027E+02 0.67457E+01 -0.81435E+01 + 1. 0.15659E+02 0.12324E+02 -0.81395E+01 + 1. -0.65313E+01 0.15638E+01 -0.81316E+01 + 1. -0.10210E+02 -0.34459E+01 -0.81234E+01 + 1. -0.19825E+02 -0.45991E+00 -0.81136E+01 + 1. -0.44308E+01 0.16088E+02 -0.81129E+01 + 1. -0.32345E+01 -0.15956E+02 -0.81051E+01 + 1. -0.15917E+02 -0.35863E+01 -0.80970E+01 + 1. -0.65927E+01 -0.70832E+00 -0.80916E+01 + 1. -0.14298E+02 -0.12614E+02 -0.80852E+01 + 1. -0.12309E+02 -0.34906E+01 -0.80769E+01 + 1. -0.10082E+02 0.72194E+01 -0.80688E+01 + 1. 0.54895E+01 -0.60893E+01 -0.80613E+01 + 1. -0.11658E+02 -0.84580E+01 -0.80541E+01 + 1. 0.17670E+02 0.91994E+01 -0.80503E+01 + 1. 0.29389E+01 0.60787E+01 -0.80457E+01 + 1. 0.91241E+01 0.26722E+01 -0.80341E+01 + 1. -0.21673E+01 0.12741E+02 -0.80301E+01 + 1. 0.13740E+02 -0.45909E+01 -0.80218E+01 + 1. -0.12509E+02 0.52973E+01 -0.80165E+01 + 1. 0.30955E+01 -0.60832E+01 -0.80081E+01 + 1. 0.82690E+01 0.15886E+02 -0.80002E+01 + 1. 0.59213E+00 0.68252E+00 -0.80000E+01 + 1. -0.18988E+02 -0.27237E+01 -0.79930E+01 + 1. -0.75414E+01 0.94685E+01 -0.79849E+01 + 1. -0.75211E+01 -0.71355E+01 -0.79793E+01 + 1. 0.14225E+02 -0.48232E+00 -0.79673E+01 + 1. -0.28471E+01 0.90489E+01 -0.79664E+01 + 1. -0.54978E+01 -0.85248E+01 -0.79537E+01 + 1. -0.17188E+02 -0.10231E+02 -0.79495E+01 + 1. 0.16396E+02 -0.10243E+02 -0.79465E+01 + 1. -0.19758E+00 -0.78737E+01 -0.79378E+01 + 1. -0.11727E+02 -0.13503E+02 -0.79333E+01 + 1. 0.56761E+01 0.24035E+01 -0.79219E+01 + 1. 0.64636E+00 -0.19921E+02 -0.79179E+01 + 1. -0.10563E+02 0.15156E+02 -0.79072E+01 + 1. 0.51727E+01 -0.14981E+02 -0.79000E+01 + 1. -0.19160E+02 0.49698E+01 -0.78960E+01 + 1. 0.95624E+01 -0.71136E+01 -0.78885E+01 + 1. 0.11649E+02 -0.55853E+01 -0.78820E+01 + 1. -0.11812E+02 -0.16071E+02 -0.78740E+01 + 1. 0.85457E+01 -0.16173E+02 -0.78721E+01 + 1. 0.69381E+01 -0.17864E+02 -0.78628E+01 + 1. -0.89174E+01 -0.15112E+01 -0.78543E+01 + 1. 0.11940E+02 -0.15726E+02 -0.78531E+01 + 1. 0.12399E+02 0.40743E+01 -0.78420E+01 + 1. 0.30231E+00 0.13369E+02 -0.78344E+01 + 1. 0.35252E+01 -0.92540E+01 -0.78302E+01 + 1. -0.13121E+02 -0.58179E+01 -0.78235E+01 + 1. 0.12933E+02 -0.12024E+02 -0.78168E+01 + 1. 0.83967E+01 -0.50084E+01 -0.78080E+01 + 1. 0.51216E+01 0.56930E+01 -0.78004E+01 + 1. -0.32167E+00 0.16254E+02 -0.77956E+01 + 1. -0.57685E+01 -0.18292E+02 -0.77920E+01 + 1. -0.16066E+02 0.11440E+02 -0.77829E+01 + 1. 0.10109E+02 -0.26874E+01 -0.77743E+01 + 1. 0.86523E+01 -0.71006E+00 -0.77687E+01 + 1. -0.79867E+01 -0.17475E+02 -0.77603E+01 + 1. -0.16472E+02 -0.79900E+01 -0.77593E+01 + 1. 0.17435E+02 -0.30463E+01 -0.77484E+01 + 1. -0.11400E+02 0.68375E+00 -0.77414E+01 + 1. -0.26559E+01 -0.12377E+02 -0.77374E+01 + 1. -0.88018E+01 0.11060E+02 -0.77304E+01 + 1. 0.48016E+01 0.85515E+01 -0.77261E+01 + 1. 0.16781E+02 0.18208E+01 -0.77185E+01 + 1. 0.28977E+01 0.11469E+01 -0.77116E+01 + 1. 0.96957E+01 -0.12720E+02 -0.77030E+01 + 1. 0.30617E+01 -0.40592E+01 -0.76942E+01 + 1. 0.11438E+02 0.15844E+02 -0.76933E+01 + 1. -0.77825E+00 -0.18263E+02 -0.76842E+01 + 1. -0.87829E+01 0.31137E+01 -0.76796E+01 + 1. 0.96070E+01 -0.10399E+02 -0.76730E+01 + 1. -0.54990E+01 0.94154E+01 -0.76617E+01 + 1. 0.72023E+01 0.11203E+02 -0.76545E+01 + 1. 0.15662E+02 -0.40166E+01 -0.76507E+01 + 1. 0.39304E+01 -0.19317E+02 -0.76417E+01 + 1. 0.13908E+02 0.63981E+01 -0.76359E+01 + 1. -0.51401E+01 -0.60315E+01 -0.76310E+01 + 1. -0.35040E+01 -0.93864E+01 -0.76214E+01 + 1. 0.47579E+01 0.31293E+00 -0.76192E+01 + 1. -0.57072E+01 -0.29198E+01 -0.76095E+01 + 1. 0.77312E-01 0.67751E+01 -0.76038E+01 + 1. 0.56242E+01 -0.36166E+01 -0.75952E+01 + 1. 0.24741E+01 0.16734E+02 -0.75922E+01 + 1. 0.17754E+01 -0.12663E+02 -0.75861E+01 + 1. 0.12730E+02 0.12139E+02 -0.75765E+01 + 1. -0.70928E+01 -0.10197E+02 -0.75695E+01 + 1. -0.14810E+02 0.52121E+01 -0.75661E+01 + 1. -0.14854E+02 0.14601E+01 -0.75559E+01 + 1. -0.79079E+01 -0.15236E+02 -0.75476E+01 + 1. -0.90033E+01 -0.11345E+02 -0.75422E+01 + 1. 0.14494E+01 0.29337E+01 -0.75373E+01 + 1. -0.61453E+01 0.14932E+02 -0.75302E+01 + 1. -0.85088E+01 0.17947E+02 -0.75265E+01 + 1. -0.40522E+01 0.29621E+01 -0.75196E+01 + 1. -0.29905E+01 -0.17903E+02 -0.75073E+01 + 1. -0.59610E+01 0.57769E+01 -0.75033E+01 + 1. -0.10748E+02 -0.66328E+01 -0.74986E+01 + 1. -0.30780E+01 0.19424E+02 -0.74885E+01 + 1. -0.82561E+00 -0.37629E+01 -0.74842E+01 + 1. 0.15902E+02 -0.15405E+01 -0.74762E+01 + 1. 0.49219E+01 0.10662E+02 -0.74696E+01 + 1. 0.29467E+01 0.14108E+02 -0.74624E+01 + 1. 0.66231E+01 -0.12606E+01 -0.74562E+01 + 1. 0.34481E+01 0.19649E+02 -0.74529E+01 + 1. 0.13355E+02 -0.70547E+01 -0.74448E+01 + 1. 0.15291E+02 -0.12379E+02 -0.74369E+01 + 1. 0.11597E+02 -0.10140E+02 -0.74285E+01 + 1. 0.13855E+02 -0.10250E+02 -0.74207E+01 + 1. 0.19794E+02 0.16951E+01 -0.74196E+01 + 1. 0.11957E+02 0.98078E+01 -0.74084E+01 + 1. 0.16561E+02 0.39446E+01 -0.74042E+01 + 1. -0.17607E+02 -0.45296E+01 -0.73955E+01 + 1. -0.14083E+02 -0.21434E+01 -0.73874E+01 + 1. 0.13119E+02 -0.21317E+01 -0.73867E+01 + 1. 0.16622E+01 0.80371E+01 -0.73758E+01 + 1. 0.89610E+01 0.12270E+02 -0.73686E+01 + 1. -0.46671E+01 -0.10028E+01 -0.73636E+01 + 1. -0.28338E+01 0.52586E+01 -0.73576E+01 + 1. -0.10632E+02 0.11807E+02 -0.73527E+01 + 1. 0.36796E+01 -0.16442E+02 -0.73459E+01 + 1. 0.87508E+01 0.95956E+01 -0.73362E+01 + 1. -0.11241E+02 -0.17827E+01 -0.73272E+01 + 1. -0.23384E+01 0.15469E+02 -0.73253E+01 + 1. 0.10443E+01 -0.52727E+01 -0.73138E+01 + 1. 0.13876E+02 0.17674E+01 -0.73091E+01 + 1. 0.20744E+01 0.10405E+02 -0.73018E+01 + 1. 0.19372E+02 0.42051E+01 -0.72979E+01 + 1. 0.18991E+02 -0.47495E+01 -0.72893E+01 + 1. -0.11448E+01 -0.10682E+02 -0.72832E+01 + 1. 0.63650E+01 0.18639E+02 -0.72799E+01 + 1. -0.14079E+02 -0.10547E+02 -0.72718E+01 + 1. 0.59831E+01 -0.13149E+02 -0.72635E+01 + 1. 0.11475E+02 -0.78694E+01 -0.72589E+01 + 1. -0.12954E+02 0.74808E+01 -0.72526E+01 + 1. -0.55913E+01 -0.16337E+02 -0.72426E+01 + 1. -0.62964E+01 0.11365E+02 -0.72386E+01 + 1. 0.86038E+01 0.17923E+02 -0.72317E+01 + 1. 0.22462E+01 -0.14816E+02 -0.72205E+01 + 1. -0.15475E+02 0.84730E+01 -0.72183E+01 + 1. 0.73120E+01 0.13640E+02 -0.72105E+01 + 1. -0.36663E+01 0.72712E+01 -0.72015E+01 + 1. 0.94555E+01 0.60158E+01 -0.71978E+01 + 1. 0.32368E-01 -0.16011E+01 -0.71870E+01 + 1. -0.14881E+02 0.13005E+02 -0.71858E+01 + 1. 0.18271E+02 -0.75849E+01 -0.71761E+01 + 1. 0.98494E+01 0.14623E+02 -0.71733E+01 + 1. -0.12928E+02 0.10266E+02 -0.71607E+01 + 1. 0.35868E+01 0.41848E+01 -0.71539E+01 + 1. -0.69858E+01 0.77292E+01 -0.71512E+01 + 1. -0.17542E+02 0.39414E+01 -0.71460E+01 + 1. 0.67259E+01 0.43597E+01 -0.71349E+01 + 1. 0.16402E+02 0.10708E+02 -0.71331E+01 + 1. 0.31087E+01 -0.20278E+01 -0.71248E+01 + 1. -0.88037E+01 0.51148E+01 -0.71173E+01 + 1. -0.28238E+01 -0.18749E-01 -0.71106E+01 + 1. -0.85834E+01 -0.50941E+01 -0.71026E+01 + 1. 0.55200E+01 -0.78985E+01 -0.70967E+01 + 1. 0.77170E+01 -0.98178E+01 -0.70883E+01 + 1. 0.55726E+01 0.16679E+02 -0.70830E+01 + 1. -0.97784E+01 -0.14637E+02 -0.70747E+01 + 1. 0.10921E+02 -0.78991E+00 -0.70732E+01 + 1. 0.13023E+02 -0.13972E+02 -0.70646E+01 + 1. -0.37138E+01 0.14029E+02 -0.70564E+01 + 1. -0.14344E+02 -0.43347E+01 -0.70480E+01 + 1. -0.95568E+00 -0.14965E+02 -0.70413E+01 + 1. -0.32639E+01 0.11066E+02 -0.70375E+01 + 1. -0.11263E+02 -0.10662E+02 -0.70312E+01 + 1. 0.74363E+00 0.18045E+02 -0.70208E+01 + 1. 0.14505E+01 -0.10714E+02 -0.70171E+01 + 1. -0.11320E+02 0.26188E+01 -0.70124E+01 + 1. -0.13530E+02 0.34172E+01 -0.70052E+01 + 1. 0.14446E+02 0.13498E+02 -0.69943E+01 + 1. 0.19845E+02 -0.17525E+01 -0.69902E+01 + 1. -0.16042E+02 -0.18093E+01 -0.69850E+01 + 1. -0.48345E+01 0.10748E+01 -0.69784E+01 + 1. -0.15743E+02 -0.11670E+02 -0.69684E+01 + 1. -0.58789E+01 0.35805E+01 -0.69604E+01 + 1. -0.58919E+01 0.17041E+02 -0.69591E+01 + 1. -0.17467E+02 0.91785E+01 -0.69516E+01 + 1. 0.12392E+02 0.14234E+02 -0.69467E+01 + 1. -0.40167E+01 -0.14005E+02 -0.69367E+01 + 1. 0.67448E+01 0.91378E+01 -0.69321E+01 + 1. -0.80091E+01 0.13259E+02 -0.69243E+01 + 1. 0.14348E+02 0.39702E+01 -0.69158E+01 + 1. -0.33020E+01 -0.39947E+01 -0.69085E+01 + 1. 0.96580E+01 0.83376E+00 -0.69040E+01 + 1. 0.19121E+01 -0.17794E+02 -0.68944E+01 + 1. -0.77314E+01 -0.13342E+02 -0.68879E+01 + 1. -0.12359E+01 -0.56307E+01 -0.68859E+01 + 1. 0.35610E+01 -0.11122E+02 -0.68736E+01 + 1. -0.10838E+02 0.48866E+01 -0.68679E+01 + 1. -0.15426E+02 -0.65133E+01 -0.68661E+01 + 1. 0.17411E+02 0.73878E+01 -0.68575E+01 + 1. 0.40132E+01 -0.13629E+02 -0.68514E+01 + 1. -0.13715E+02 -0.14393E+02 -0.68458E+01 + 1. -0.17351E+01 -0.87784E+01 -0.68347E+01 + 1. -0.94285E+01 -0.81157E+01 -0.68275E+01 + 1. -0.12722E+02 0.15055E+02 -0.68217E+01 + 1. -0.76009E+01 -0.31767E+01 -0.68197E+01 + 1. -0.58066E+01 -0.11533E+02 -0.68092E+01 + 1. 0.17090E+01 -0.73952E+01 -0.68003E+01 + 1. 0.16852E+02 -0.53917E+01 -0.67974E+01 + 1. 0.10404E+02 0.80109E+01 -0.67878E+01 + 1. -0.32767E+01 0.17226E+02 -0.67826E+01 + 1. 0.75688E+01 -0.14707E+02 -0.67784E+01 + 1. -0.17374E+02 0.18735E+01 -0.67681E+01 + 1. 0.18144E+01 0.12471E+02 -0.67628E+01 + 1. -0.10178E+02 0.96669E+01 -0.67599E+01 + 1. -0.30469E+01 -0.68186E+01 -0.67479E+01 + 1. 0.15562E+02 0.55766E+00 -0.67413E+01 + 1. 0.96032E+01 -0.14521E+02 -0.67366E+01 + 1. 0.11403E+02 0.56438E+01 -0.67287E+01 + 1. -0.52090E+00 -0.12910E+02 -0.67201E+01 + 1. 0.10141E+02 -0.43883E+01 -0.67134E+01 + 1. 0.11503E+02 0.26692E+01 -0.67097E+01 + 1. -0.19161E+02 -0.57064E+01 -0.67032E+01 + 1. 0.18535E+02 0.98620E-01 -0.66987E+01 + 1. -0.11552E+02 -0.48205E+01 -0.66870E+01 + 1. 0.18965E-01 0.19936E+02 -0.66860E+01 + 1. -0.49916E+01 0.18955E+02 -0.66750E+01 + 1. -0.94228E+01 0.56521E+00 -0.66677E+01 + 1. 0.77771E+01 0.16205E+01 -0.66603E+01 + 1. -0.18521E+02 -0.92628E+00 -0.66568E+01 + 1. 0.60708E+00 0.49262E+01 -0.66483E+01 + 1. 0.14150E+02 0.10182E+02 -0.66461E+01 + 1. -0.12400E+02 0.12503E+02 -0.66393E+01 + 1. -0.69158E+00 0.88270E+01 -0.66314E+01 + 1. 0.13361E+02 0.80722E+01 -0.66223E+01 + 1. 0.10280E+02 -0.16804E+02 -0.66181E+01 + 1. 0.72809E+00 0.14976E+02 -0.66070E+01 + 1. -0.12576E+02 -0.12198E+02 -0.66010E+01 + 1. -0.78414E+00 0.20687E+01 -0.65953E+01 + 1. 0.71900E+01 -0.61352E+01 -0.65927E+01 + 1. 0.21949E+01 -0.19761E+02 -0.65851E+01 + 1. -0.19645E+02 0.32465E+01 -0.65767E+01 + 1. 0.56229E+01 -0.19085E+02 -0.65683E+01 + 1. 0.14542E+02 -0.85328E+01 -0.65640E+01 + 1. -0.17829E+01 -0.19898E+02 -0.65549E+01 + 1. 0.49514E+01 0.14677E+02 -0.65473E+01 + 1. 0.78970E+01 -0.26307E+01 -0.65465E+01 + 1. 0.92947E+01 -0.86602E+01 -0.65348E+01 + 1. -0.11449E+01 0.11854E+02 -0.65273E+01 + 1. 0.57248E+01 -0.16573E+02 -0.65250E+01 + 1. -0.15761E+02 -0.94820E+01 -0.65167E+01 + 1. -0.18111E+02 -0.79791E+01 -0.65108E+01 + 1. 0.55297E+01 -0.10891E+02 -0.65018E+01 + 1. -0.85134E+01 0.15880E+02 -0.64944E+01 + 1. -0.18612E+02 0.72510E+01 -0.64897E+01 + 1. 0.12594E+02 -0.39881E+01 -0.64832E+01 + 1. 0.90149E+01 0.40904E+01 -0.64745E+01 + 1. 0.34381E+01 0.77871E+01 -0.64712E+01 + 1. -0.99651E+01 -0.17135E+02 -0.64627E+01 + 1. -0.43907E+01 -0.18891E+02 -0.64541E+01 + 1. -0.10397E+02 0.16551E+02 -0.64530E+01 + 1. -0.13067E+02 0.15388E+01 -0.64436E+01 + 1. -0.12683E+02 -0.77203E+01 -0.64365E+01 + 1. 0.15234E+01 -0.35986E+00 -0.64307E+01 + 1. 0.15428E+02 0.79489E+01 -0.64261E+01 + 1. 0.32329E+00 -0.16587E+02 -0.64187E+01 + 1. -0.65478E+01 -0.51759E+01 -0.64107E+01 + 1. -0.89387E+01 0.72420E+01 -0.64006E+01 + 1. 0.36333E+01 -0.78128E+01 -0.63966E+01 + 1. 0.10259E+02 0.17126E+02 -0.63903E+01 + 1. -0.27884E+01 -0.19867E+01 -0.63835E+01 + 1. 0.57827E+01 0.12219E+02 -0.63774E+01 + 1. 0.17522E+02 -0.96229E+01 -0.63686E+01 + 1. 0.80804E+01 -0.11974E+02 -0.63640E+01 + 1. -0.30841E+01 -0.10887E+02 -0.63580E+01 + 1. -0.73949E+01 -0.86136E+01 -0.63496E+01 + 1. 0.60930E+01 0.67968E+01 -0.63407E+01 + 1. 0.42327E+01 -0.53033E+01 -0.63377E+01 + 1. -0.65649E+01 0.28585E+00 -0.63306E+01 + 1. -0.86865E+00 0.35375E-02 -0.63201E+01 + 1. -0.15063E+02 0.10500E+02 -0.63140E+01 + 1. -0.16898E+01 0.38852E+01 -0.63093E+01 + 1. 0.12520E+02 0.20843E+00 -0.63026E+01 + 1. 0.49111E+01 -0.12405E+01 -0.62970E+01 + 1. 0.16433E+02 0.56419E+01 -0.62877E+01 + 1. 0.12452E+01 -0.35625E+01 -0.62825E+01 + 1. -0.13422E+01 0.17638E+02 -0.62743E+01 + 1. 0.11419E+02 -0.12934E+02 -0.62732E+01 + 1. -0.97908E+01 -0.27088E+01 -0.62621E+01 + 1. 0.14894E+02 -0.55901E+01 -0.62586E+01 + 1. -0.13407E+01 0.13848E+02 -0.62486E+01 + 1. 0.82385E+01 -0.17424E+02 -0.62420E+01 + 1. -0.15377E+02 0.31793E-01 -0.62373E+01 + 1. -0.13795E+01 0.63954E+01 -0.62331E+01 + 1. -0.49546E+01 -0.74651E+01 -0.62201E+01 + 1. 0.41088E+01 0.19142E+01 -0.62176E+01 + 1. 0.10498E+02 0.10472E+02 -0.62116E+01 + 1. -0.39773E+01 0.93196E+01 -0.62019E+01 + 1. 0.85097E+01 0.75527E+01 -0.61986E+01 + 1. -0.15422E+02 0.35609E+01 -0.61912E+01 + 1. -0.11305E+02 0.79298E+01 -0.61828E+01 + 1. -0.27892E+01 -0.15487E+02 -0.61764E+01 + 1. -0.17172E+02 0.58495E+01 -0.61718E+01 + 1. 0.74049E+01 0.15762E+02 -0.61655E+01 + 1. -0.12735E+02 -0.30214E+01 -0.61583E+01 + 1. 0.14726E+02 -0.27534E+01 -0.61496E+01 + 1. 0.38786E+01 0.17460E+02 -0.61453E+01 + 1. -0.19155E+02 -0.37236E+01 -0.61397E+01 + 1. 0.15672E+02 -0.10812E+02 -0.61281E+01 + 1. -0.54454E+01 0.13006E+02 -0.61216E+01 + 1. 0.17946E+02 0.32140E+01 -0.61144E+01 + 1. -0.67632E+01 0.95791E+01 -0.61070E+01 + 1. -0.78040E+01 0.18937E+01 -0.61064E+01 + 1. 0.17643E+02 -0.17725E+01 -0.60941E+01 + 1. -0.46386E+01 0.15601E+02 -0.60889E+01 + 1. 0.20587E+01 0.63730E+01 -0.60806E+01 + 1. 0.19027E+02 0.61374E+01 -0.60758E+01 + 1. 0.59621E+01 0.96394E+00 -0.60670E+01 + 1. -0.15014E+02 0.67030E+01 -0.60637E+01 + 1. -0.10257E+02 0.14062E+02 -0.60547E+01 + 1. 0.25565E+00 -0.93911E+01 -0.60512E+01 + 1. -0.10471E+02 -0.12725E+02 -0.60401E+01 + 1. -0.19283E+02 0.13246E+01 -0.60398E+01 + 1. -0.16124E+02 -0.40788E+01 -0.60322E+01 + 1. -0.69963E+01 -0.18063E+02 -0.60202E+01 + 1. 0.36744E+01 0.12687E+02 -0.60151E+01 + 1. -0.11562E+02 -0.14901E+02 -0.60120E+01 + 1. 0.22083E+00 -0.19060E+02 -0.60021E+01 + 1. -0.58167E+01 -0.14585E+02 -0.59942E+01 + 1. 0.56768E+00 0.10603E+02 -0.59919E+01 + 1. 0.13739E+02 -0.12326E+02 -0.59823E+01 + 1. -0.44784E+01 0.56451E+01 -0.59763E+01 + 1. -0.12483E+02 0.56827E+01 -0.59715E+01 + 1. -0.82096E+01 -0.11410E+01 -0.59651E+01 + 1. -0.13013E+02 -0.92352E+00 -0.59595E+01 + 1. 0.10437E+02 -0.11004E+02 -0.59492E+01 + 1. 0.16426E+02 -0.77490E+01 -0.59448E+01 + 1. 0.12622E+02 -0.59415E+01 -0.59364E+01 + 1. 0.10300E+02 0.12898E+02 -0.59269E+01 + 1. 0.11716E+01 0.16430E+01 -0.59229E+01 + 1. 0.36793E+01 0.97609E+01 -0.59169E+01 + 1. -0.40523E+00 -0.73008E+01 -0.59098E+01 + 1. 0.15105E+02 0.11898E+02 -0.59042E+01 + 1. 0.36338E+01 -0.18231E+02 -0.58949E+01 + 1. 0.78608E+01 -0.48704E+00 -0.58931E+01 + 1. -0.71894E+01 0.47856E+01 -0.58823E+01 + 1. -0.79412E+01 -0.10947E+02 -0.58755E+01 + 1. 0.21849E+01 0.19264E+02 -0.58673E+01 + 1. -0.61866E+01 -0.18526E+01 -0.58660E+01 + 1. 0.14265E+02 -0.70501E+00 -0.58561E+01 + 1. -0.11138E+02 -0.88799E+01 -0.58520E+01 + 1. 0.95298E+01 -0.65942E+01 -0.58442E+01 + 1. -0.29697E+01 0.22334E+01 -0.58380E+01 + 1. 0.82744E+01 0.10924E+02 -0.58327E+01 + 1. 0.17422E+02 0.92300E+01 -0.58203E+01 + 1. -0.90606E+01 0.11858E+02 -0.58198E+01 + 1. 0.68436E+01 -0.42837E+01 -0.58085E+01 + 1. -0.42639E+01 -0.54698E+01 -0.58036E+01 + 1. -0.47590E+01 -0.94370E+01 -0.57951E+01 + 1. -0.95918E+01 0.34564E+01 -0.57925E+01 + 1. 0.58487E+01 0.29882E+01 -0.57828E+01 + 1. 0.10643E+01 -0.13923E+02 -0.57749E+01 + 1. -0.16241E+01 -0.17070E+02 -0.57719E+01 + 1. 0.12131E+02 -0.15286E+02 -0.57646E+01 + 1. 0.28174E+01 0.15169E+02 -0.57585E+01 + 1. 0.41963E+01 -0.15344E+02 -0.57496E+01 + 1. 0.12979E+02 -0.95761E+01 -0.57410E+01 + 1. -0.86509E+01 -0.66022E+01 -0.57374E+01 + 1. 0.44929E+01 0.53488E+01 -0.57289E+01 + 1. -0.53671E+01 0.75920E+01 -0.57219E+01 + 1. -0.11209E+02 0.46631E+00 -0.57176E+01 + 1. -0.13547E+02 0.87958E+01 -0.57110E+01 + 1. 0.70392E+01 -0.84097E+01 -0.57048E+01 + 1. 0.18938E+02 -0.33802E+01 -0.56941E+01 + 1. 0.39737E+01 -0.34184E+01 -0.56890E+01 + 1. -0.73925E+01 0.18468E+02 -0.56852E+01 + 1. -0.97657E+00 -0.26064E+01 -0.56745E+01 + 1. 0.15832E+02 0.31904E+01 -0.56686E+01 + 1. -0.28821E+01 -0.12783E+02 -0.56624E+01 + 1. -0.83847E+01 -0.15827E+02 -0.56548E+01 + 1. 0.49759E+01 0.19156E+02 -0.56474E+01 + 1. -0.13331E+02 -0.58427E+01 -0.56450E+01 + 1. 0.13891E+02 0.60039E+01 -0.56378E+01 + 1. 0.18614E+01 0.35075E+01 -0.56321E+01 + 1. -0.17130E+02 -0.59926E+01 -0.56216E+01 + 1. 0.26111E+01 -0.12532E+02 -0.56191E+01 + 1. 0.19301E+01 0.17042E+02 -0.56133E+01 + 1. 0.12729E+02 0.11494E+02 -0.56039E+01 + 1. 0.22133E+01 -0.57505E+01 -0.55965E+01 + 1. 0.12803E+02 0.40393E+01 -0.55908E+01 + 1. -0.20939E+01 0.19434E+02 -0.55816E+01 + 1. 0.12133E+02 -0.16821E+01 -0.55739E+01 + 1. 0.16553E+02 -0.33754E+01 -0.55701E+01 + 1. 0.74079E+01 0.18016E+02 -0.55602E+01 + 1. -0.13082E+02 -0.97763E+01 -0.55600E+01 + 1. -0.28807E+01 0.12627E+02 -0.55525E+01 + 1. 0.18966E+02 -0.61007E+01 -0.55450E+01 + 1. -0.16573E+02 0.79650E+01 -0.55343E+01 + 1. -0.66423E+01 0.15105E+02 -0.55322E+01 + 1. -0.14652E+02 -0.12937E+02 -0.55232E+01 + 1. 0.22350E+01 -0.15968E+02 -0.55150E+01 + 1. 0.96245E+01 -0.28180E+01 -0.55120E+01 + 1. -0.44268E+01 0.36432E+01 -0.55054E+01 + 1. 0.11099E+02 0.15163E+02 -0.54935E+01 + 1. 0.45051E+00 0.74981E+01 -0.54925E+01 + 1. -0.49357E+01 -0.33721E+01 -0.54860E+01 + 1. -0.43874E+01 -0.16920E+02 -0.54766E+01 + 1. 0.76787E+01 0.53271E+01 -0.54723E+01 + 1. -0.11799E+02 0.10384E+02 -0.54645E+01 + 1. -0.17248E+02 0.11471E+00 -0.54559E+01 + 1. -0.98509E+01 -0.10385E+02 -0.54491E+01 + 1. 0.92675E+01 0.22207E+01 -0.54462E+01 + 1. 0.51253E+01 -0.90290E+01 -0.54355E+01 + 1. 0.88507E+01 0.14430E+02 -0.54269E+01 + 1. -0.14645E+02 -0.20426E+01 -0.54266E+01 + 1. -0.46030E+01 -0.30754E+00 -0.54151E+01 + 1. 0.31829E+01 0.17736E+00 -0.54069E+01 + 1. -0.17305E+02 -0.25475E+01 -0.54013E+01 + 1. -0.16384E+02 -0.78712E+01 -0.53992E+01 + 1. 0.55747E+01 -0.13803E+02 -0.53887E+01 + 1. 0.11081E+02 -0.86790E+01 -0.53826E+01 + 1. 0.12445E+02 0.94806E+01 -0.53789E+01 + 1. -0.16876E+02 0.10469E+02 -0.53689E+01 + 1. -0.46682E+01 0.11068E+02 -0.53662E+01 + 1. -0.14053E+02 0.12331E+02 -0.53568E+01 + 1. 0.19709E+02 0.20681E+01 -0.53493E+01 + 1. -0.19183E+01 0.98248E+01 -0.53440E+01 + 1. -0.99713E+01 -0.46270E+01 -0.53335E+01 + 1. 0.17022E+02 0.64437E+00 -0.53271E+01 + 1. 0.97779E+01 -0.78267E+00 -0.53217E+01 + 1. 0.22839E+01 -0.91238E+01 -0.53179E+01 + 1. 0.22237E+01 -0.19283E+01 -0.53085E+01 + 1. 0.13263E+02 0.20520E+01 -0.53059E+01 + 1. 0.11644E+02 0.71196E+01 -0.52940E+01 + 1. -0.13680E+01 0.15745E+02 -0.52905E+01 + 1. 0.19031E+01 0.90416E+01 -0.52849E+01 + 1. 0.85945E+01 -0.15564E+02 -0.52746E+01 + 1. -0.12426E+02 0.30698E+01 -0.52724E+01 + 1. -0.13038E+01 -0.10588E+02 -0.52626E+01 + 1. 0.59173E+01 0.10167E+02 -0.52564E+01 + 1. 0.56502E+01 -0.63349E+01 -0.52486E+01 + 1. 0.35968E+00 0.12953E+02 -0.52461E+01 + 1. -0.32575E+01 0.72957E+01 -0.52359E+01 + 1. 0.19862E+02 -0.71126E+00 -0.52328E+01 + 1. -0.18950E+02 0.56332E+01 -0.52258E+01 + 1. -0.66342E+01 -0.12707E+02 -0.52183E+01 + 1. -0.17836E+02 0.33705E+01 -0.52072E+01 + 1. -0.23619E+01 -0.57377E+01 -0.52035E+01 + 1. -0.90060E+01 0.88952E+01 -0.51970E+01 + 1. 0.73475E+01 0.13126E+02 -0.51899E+01 + 1. -0.46968E+01 -0.11970E+02 -0.51842E+01 + 1. -0.96728E+01 0.56553E+01 -0.51734E+01 + 1. 0.98129E+01 0.57489E+01 -0.51730E+01 + 1. -0.11405E+02 -0.62656E+01 -0.51611E+01 + 1. 0.13340E+02 0.14235E+02 -0.51578E+01 + 1. -0.74789E+01 0.66741E+01 -0.51521E+01 + 1. -0.45476E+01 0.17569E+02 -0.51464E+01 + 1. 0.69929E+01 -0.10781E+02 -0.51348E+01 + 1. 0.89730E+01 -0.13494E+02 -0.51296E+01 + 1. -0.52037E+00 -0.49601E+01 -0.51221E+01 + 1. 0.55862E+01 0.16123E+02 -0.51184E+01 + 1. -0.19617E+02 -0.17961E+01 -0.51112E+01 + 1. -0.25711E+01 -0.20476E-01 -0.51035E+01 + 1. 0.70237E+01 -0.18549E+02 -0.50957E+01 + 1. -0.11212E+02 -0.17326E+01 -0.50878E+01 + 1. -0.14378E+02 -0.79279E+01 -0.50866E+01 + 1. -0.12643E+01 -0.14085E+02 -0.50762E+01 + 1. 0.63266E+01 -0.22817E+01 -0.50715E+01 + 1. -0.24958E+01 -0.77871E+01 -0.50658E+01 + 1. -0.60178E+01 0.20140E+01 -0.50536E+01 + 1. -0.16582E+02 -0.11034E+02 -0.50496E+01 + 1. 0.13626E+02 -0.74356E+01 -0.50404E+01 + 1. -0.13036E+02 0.14104E+02 -0.50398E+01 + 1. -0.78905E+01 -0.40344E+01 -0.50314E+01 + 1. -0.85747E+01 -0.13534E+02 -0.50255E+01 + 1. -0.65552E+01 -0.71409E+01 -0.50172E+01 + 1. -0.63062E+01 -0.16361E+02 -0.50118E+01 + 1. 0.63594E-01 0.18761E+02 -0.50024E+01 + 1. 0.10709E+02 0.39684E+01 -0.49946E+01 + 1. -0.66056E+01 0.11563E+02 -0.49911E+01 + 1. -0.15410E+02 0.18246E+01 -0.49835E+01 + 1. 0.69017E+01 0.83338E+01 -0.49797E+01 + 1. 0.10921E+02 -0.52378E+01 -0.49693E+01 + 1. 0.19298E+02 0.42136E+01 -0.49628E+01 + 1. 0.98186E+01 0.87658E+01 -0.49564E+01 + 1. -0.11380E+02 0.15488E+02 -0.49490E+01 + 1. -0.75949E-02 0.37522E+01 -0.49429E+01 + 1. -0.91193E+01 0.17477E+02 -0.49348E+01 + 1. -0.10963E+02 0.12450E+02 -0.49311E+01 + 1. 0.16399E+00 -0.12050E+02 -0.49240E+01 + 1. -0.31333E+01 -0.18600E+02 -0.49168E+01 + 1. 0.13903E+02 -0.42715E+01 -0.49105E+01 + 1. -0.15189E+02 -0.56562E+01 -0.49028E+01 + 1. -0.14035E+02 0.49815E+01 -0.48984E+01 + 1. -0.12672E+02 -0.13647E+02 -0.48880E+01 + 1. 0.14429E+02 0.89155E+01 -0.48831E+01 + 1. 0.89330E+01 0.16575E+02 -0.48736E+01 + 1. -0.22612E+01 0.52070E+01 -0.48678E+01 + 1. 0.46794E+01 -0.11706E+02 -0.48623E+01 + 1. -0.27308E+01 -0.37865E+01 -0.48592E+01 + 1. -0.11037E+02 -0.16589E+02 -0.48472E+01 + 1. -0.39440E+01 -0.14508E+02 -0.48408E+01 + 1. -0.83491E+01 0.14278E+02 -0.48339E+01 + 1. 0.46086E+01 0.82600E+01 -0.48275E+01 + 1. 0.16463E+02 0.10696E+02 -0.48266E+01 + 1. 0.11314E+02 0.13284E+01 -0.48151E+01 + 1. 0.17249E+02 -0.51869E+01 -0.48099E+01 + 1. 0.17277E+02 0.69474E+01 -0.48057E+01 + 1. 0.13649E+02 -0.14139E+02 -0.47957E+01 + 1. 0.15241E+02 -0.91565E+01 -0.47902E+01 + 1. 0.21782E+01 0.11970E+02 -0.47848E+01 + 1. -0.86981E+01 -0.88637E+01 -0.47759E+01 + 1. -0.58277E+01 -0.19136E+02 -0.47718E+01 + 1. -0.11448E+02 -0.11528E+02 -0.47608E+01 + 1. 0.41424E+01 0.33168E+01 -0.47547E+01 + 1. -0.94341E+01 0.14404E+01 -0.47468E+01 + 1. -0.34380E+01 0.14632E+02 -0.47450E+01 + 1. -0.87340E+01 -0.17643E+02 -0.47349E+01 + 1. 0.66373E+01 -0.16068E+02 -0.47301E+01 + 1. 0.16031E+02 -0.14122E+01 -0.47245E+01 + 1. -0.17798E+02 -0.91162E+01 -0.47175E+01 + 1. 0.18213E+02 -0.78721E+01 -0.47113E+01 + 1. 0.10480E+02 -0.16172E+02 -0.47044E+01 + 1. -0.16028E+02 0.50782E+01 -0.46962E+01 + 1. 0.87943E+01 -0.47851E+01 -0.46883E+01 + 1. 0.68399E+00 0.15682E+02 -0.46841E+01 + 1. 0.20181E+01 -0.17929E+02 -0.46746E+01 + 1. 0.10013E+00 -0.57815E+00 -0.46668E+01 + 1. 0.12475E+02 -0.11207E+02 -0.46662E+01 + 1. 0.48117E+01 -0.17169E+02 -0.46562E+01 + 1. -0.18932E+02 -0.52410E+01 -0.46474E+01 + 1. -0.70604E+00 0.14558E+01 -0.46441E+01 + 1. 0.93320E+01 -0.93490E+01 -0.46338E+01 + 1. 0.15596E+02 -0.12206E+02 -0.46319E+01 + 1. -0.14294E+02 -0.38713E+01 -0.46245E+01 + 1. -0.12312E+02 -0.42534E+01 -0.46142E+01 + 1. -0.79700E-01 -0.17630E+02 -0.46069E+01 + 1. 0.77267E+01 -0.65005E+01 -0.46040E+01 + 1. 0.53713E+01 0.13139E+02 -0.45996E+01 + 1. -0.62159E+01 -0.10396E+02 -0.45933E+01 + 1. -0.40455E+01 0.19436E+02 -0.45809E+01 + 1. -0.15080E+02 0.94342E+01 -0.45736E+01 + 1. 0.17192E+02 0.44294E+01 -0.45671E+01 + 1. -0.22085E+00 0.58118E+01 -0.45611E+01 + 1. -0.76520E+01 0.50942E+00 -0.45580E+01 + 1. -0.14405E+01 0.78421E+01 -0.45501E+01 + 1. 0.11090E+02 -0.14055E+02 -0.45424E+01 + 1. 0.15141E+02 0.56478E+00 -0.45338E+01 + 1. -0.26092E+01 0.17374E+02 -0.45325E+01 + 1. 0.15478E+02 -0.65814E+01 -0.45234E+01 + 1. -0.11241E+02 0.45699E+01 -0.45187E+01 + 1. 0.74896E+01 0.21925E+01 -0.45120E+01 + 1. 0.31983E+01 -0.72983E+01 -0.45005E+01 + 1. 0.71024E+01 -0.12714E+02 -0.44962E+01 + 1. 0.10845E+01 -0.77069E+01 -0.44924E+01 + 1. -0.13568E+02 0.55452E+00 -0.44864E+01 + 1. -0.74554E+01 0.32801E+01 -0.44746E+01 + 1. -0.19593E+02 0.26354E+01 -0.44717E+01 + 1. 0.15190E+02 0.70968E+01 -0.44604E+01 + 1. -0.52990E+01 0.93030E+01 -0.44586E+01 + 1. 0.60864E+01 0.46542E+01 -0.44508E+01 + 1. -0.12343E+01 0.11845E+02 -0.44463E+01 + 1. 0.41515E+01 0.11347E+02 -0.44370E+01 + 1. 0.64474E+01 -0.14215E+00 -0.44269E+01 + 1. -0.14542E+02 -0.10567E+02 -0.44215E+01 + 1. -0.63226E+01 0.16940E+02 -0.44174E+01 + 1. 0.33976E+00 -0.15556E+02 -0.44077E+01 + 1. 0.96921E+01 0.11633E+02 -0.44044E+01 + 1. -0.36982E+01 -0.18672E+01 -0.43976E+01 + 1. 0.52368E+01 -0.19294E+02 -0.43877E+01 + 1. -0.30436E+01 -0.99989E+01 -0.43807E+01 + 1. -0.12169E+02 0.74054E+01 -0.43739E+01 + 1. 0.11763E+02 0.12819E+02 -0.43698E+01 + 1. 0.17069E+02 -0.10078E+02 -0.43654E+01 + 1. 0.13031E+02 0.26343E+00 -0.43557E+01 + 1. -0.12444E+02 -0.80920E+01 -0.43528E+01 + 1. 0.31692E+01 0.65014E+01 -0.43414E+01 + 1. 0.14561E+02 0.45955E+01 -0.43360E+01 + 1. 0.13614E+02 -0.22518E+01 -0.43275E+01 + 1. 0.17537E+01 -0.40252E+01 -0.43238E+01 + 1. -0.19096E+02 0.37266E-01 -0.43164E+01 + 1. 0.34590E+01 0.19334E+02 -0.43097E+01 + 1. -0.43255E+01 -0.70660E+01 -0.43030E+01 + 1. 0.87280E+01 -0.17782E+02 -0.42939E+01 + 1. 0.43238E+01 -0.12428E+01 -0.42900E+01 + 1. -0.18181E+02 0.77948E+01 -0.42840E+01 + 1. 0.29336E+01 -0.19682E+02 -0.42750E+01 + 1. -0.60866E+01 0.54833E+01 -0.42720E+01 + 1. 0.14992E+02 0.13099E+02 -0.42665E+01 + 1. -0.53993E+01 0.14132E+02 -0.42588E+01 + 1. -0.16055E+02 -0.11942E+01 -0.42506E+01 + 1. 0.11813E+02 -0.33790E+01 -0.42455E+01 + 1. -0.10663E+02 -0.14022E+02 -0.42382E+01 + 1. 0.71527E+01 0.11368E+02 -0.42293E+01 + 1. 0.49987E+01 -0.45388E+01 -0.42235E+01 + 1. -0.10906E+02 0.89954E+01 -0.42141E+01 + 1. -0.74830E+01 -0.20477E+01 -0.42114E+01 + 1. 0.83398E+01 -0.17965E+01 -0.42033E+01 + 1. 0.51798E+01 0.14290E+01 -0.41985E+01 + 1. -0.14172E+02 0.70150E+01 -0.41895E+01 + 1. 0.94701E+00 -0.10272E+02 -0.41844E+01 + 1. 0.14233E+02 0.10843E+02 -0.41791E+01 + 1. 0.11604E+02 -0.70132E+01 -0.41692E+01 + 1. 0.33059E+01 0.13654E+02 -0.41656E+01 + 1. -0.53013E+01 -0.49467E+01 -0.41544E+01 + 1. -0.95952E+01 -0.30384E+01 -0.41512E+01 + 1. 0.28982E+01 0.18329E+01 -0.41433E+01 + 1. -0.16760E+02 -0.42849E+01 -0.41393E+01 + 1. -0.22190E+01 -0.15850E+02 -0.41306E+01 + 1. 0.18867E+02 -0.21335E+01 -0.41246E+01 + 1. -0.75361E+01 0.99208E+01 -0.41153E+01 + 1. 0.74515E+01 0.15411E+02 -0.41070E+01 + 1. 0.34842E+01 0.16710E+02 -0.41053E+01 + 1. 0.18664E+02 0.57620E+00 -0.40964E+01 + 1. -0.15681E+02 0.11827E+02 -0.40889E+01 + 1. 0.12375E+02 0.55239E+01 -0.40847E+01 + 1. 0.16868E+02 0.22926E+01 -0.40781E+01 + 1. 0.84972E+01 0.39044E+01 -0.40726E+01 + 1. 0.24216E+01 -0.14558E+02 -0.40602E+01 + 1. 0.84209E+01 0.73713E+01 -0.40538E+01 + 1. -0.10399E+02 -0.77045E+01 -0.40495E+01 + 1. -0.99952E+01 -0.36575E+00 -0.40467E+01 + 1. -0.82207E+00 -0.86832E+01 -0.40356E+01 + 1. 0.48108E+00 0.98288E+01 -0.40314E+01 + 1. 0.94101E+01 0.74559E+00 -0.40249E+01 + 1. -0.17744E+02 -0.71446E+01 -0.40154E+01 + 1. 0.58890E+01 0.68495E+01 -0.40074E+01 + 1. -0.90150E+01 -0.11731E+02 -0.40013E+01 + 1. -0.13335E+02 0.10970E+02 -0.39977E+01 + 1. -0.65330E+00 0.14291E+02 -0.39885E+01 + 1. -0.17502E+02 0.14889E+01 -0.39813E+01 + 1. 0.99833E+01 -0.11141E+02 -0.39766E+01 + 1. 0.34290E+01 -0.10173E+02 -0.39681E+01 + 1. -0.39563E+01 0.21156E+01 -0.39633E+01 + 1. -0.32450E+01 0.92329E+01 -0.39583E+01 + 1. 0.57608E+00 -0.19415E+02 -0.39481E+01 + 1. -0.20412E+01 0.30476E+01 -0.39465E+01 + 1. -0.11421E+02 0.17911E+01 -0.39363E+01 + 1. -0.13126E+02 -0.21070E+01 -0.39290E+01 + 1. 0.23280E+01 0.45372E+01 -0.39258E+01 + 1. 0.11289E+02 0.10369E+02 -0.39162E+01 + 1. 0.57610E+01 0.17998E+02 -0.39109E+01 + 1. -0.98954E+01 0.11081E+02 -0.39052E+01 + 1. -0.16484E+01 -0.14443E+01 -0.38954E+01 + 1. 0.16499E+02 0.88526E+01 -0.38909E+01 + 1. -0.88559E+01 -0.56457E+01 -0.38837E+01 + 1. -0.67953E+01 -0.14538E+02 -0.38757E+01 + 1. 0.19096E+02 -0.46457E+01 -0.38693E+01 + 1. -0.92812E+01 -0.15715E+02 -0.38657E+01 + 1. 0.11043E+02 0.16651E+02 -0.38551E+01 + 1. 0.11142E+02 -0.59623E+00 -0.38474E+01 + 1. 0.44182E+01 -0.14625E+02 -0.38432E+01 + 1. -0.61856E+01 0.75666E+01 -0.38350E+01 + 1. -0.10242E+02 0.70635E+01 -0.38281E+01 + 1. -0.14615E+01 -0.19298E+02 -0.38208E+01 + 1. -0.15505E+01 -0.12552E+02 -0.38154E+01 + 1. 0.13468E+02 -0.93385E+01 -0.38078E+01 + 1. 0.84115E+01 0.97452E+01 -0.38038E+01 + 1. -0.52123E+00 0.17071E+02 -0.37984E+01 + 1. -0.59110E+01 -0.38195E+00 -0.37907E+01 + 1. -0.37433E+01 0.12194E+02 -0.37806E+01 + 1. -0.65603E+01 0.18847E+02 -0.37753E+01 + 1. 0.70663E+01 -0.36290E+01 -0.37713E+01 + 1. 0.95161E+01 -0.69187E+01 -0.37610E+01 + 1. 0.64689E+01 -0.85565E+01 -0.37576E+01 + 1. -0.94902E+01 0.37801E+01 -0.37524E+01 + 1. -0.42967E+01 0.63193E+01 -0.37422E+01 + 1. -0.11577E+01 -0.66819E+01 -0.37390E+01 + 1. 0.15766E+02 -0.42643E+01 -0.37277E+01 + 1. -0.15497E+02 -0.12516E+02 -0.37232E+01 + 1. 0.21511E+01 -0.55584E+00 -0.37154E+01 + 1. -0.80380E+01 0.15992E+02 -0.37085E+01 + 1. -0.80205E+01 0.12255E+02 -0.37058E+01 + 1. -0.10140E+02 0.14286E+02 -0.36955E+01 + 1. -0.14505E+02 0.34547E+01 -0.36890E+01 + 1. 0.64576E+00 -0.24856E+01 -0.36836E+01 + 1. 0.18968E+02 0.62621E+01 -0.36763E+01 + 1. 0.13074E+01 0.79303E+01 -0.36704E+01 + 1. 0.19758E+01 -0.12067E+02 -0.36617E+01 + 1. -0.13610E+02 -0.58874E+01 -0.36559E+01 + 1. -0.46671E+01 -0.89898E+01 -0.36506E+01 + 1. 0.13695E+02 -0.59621E+01 -0.36404E+01 + 1. -0.37552E+01 0.42223E+01 -0.36393E+01 + 1. 0.11525E+02 -0.97795E+01 -0.36283E+01 + 1. 0.12456E+02 0.33256E+01 -0.36242E+01 + 1. 0.88354E+01 0.13313E+02 -0.36188E+01 + 1. -0.68455E+01 -0.17773E+02 -0.36080E+01 + 1. -0.11182E+02 -0.97814E+01 -0.36041E+01 + 1. -0.15880E+02 -0.91244E+01 -0.35973E+01 + 1. -0.19660E+02 -0.35127E+01 -0.35870E+01 + 1. -0.46675E+01 -0.16318E+02 -0.35826E+01 + 1. -0.19960E+01 0.19402E+02 -0.35785E+01 + 1. 0.14697E+01 0.19546E+02 -0.35683E+01 + 1. -0.11983E+01 -0.34308E+01 -0.35635E+01 + 1. 0.13091E+02 0.82373E+01 -0.35599E+01 + 1. 0.36792E+01 -0.30823E+01 -0.35477E+01 + 1. -0.79454E+01 0.50552E+01 -0.35465E+01 + 1. 0.51410E+01 0.14877E+02 -0.35377E+01 + 1. 0.20160E+00 -0.13674E+02 -0.35306E+01 + 1. 0.10599E+02 0.14477E+02 -0.35265E+01 + 1. -0.43911E+01 0.16045E+02 -0.35179E+01 + 1. 0.10632E+02 0.76106E+01 -0.35100E+01 + 1. -0.17227E+02 0.94156E+01 -0.35029E+01 + 1. 0.99826E+01 -0.29572E+01 -0.34988E+01 + 1. -0.43220E+01 -0.19485E+02 -0.34906E+01 + 1. 0.29093E+01 -0.16536E+02 -0.34840E+01 + 1. -0.17284E+02 0.61054E+01 -0.34739E+01 + 1. -0.44296E+01 -0.12982E+02 -0.34687E+01 + 1. 0.79137E+01 -0.14486E+02 -0.34632E+01 + 1. -0.34050E+01 -0.50643E+01 -0.34580E+01 + 1. -0.14267E+02 0.13538E+02 -0.34467E+01 + 1. 0.59913E+01 -0.11178E+02 -0.34450E+01 + 1. 0.16667E+02 -0.79286E+01 -0.34387E+01 + 1. 0.79686E+01 -0.10288E+02 -0.34284E+01 + 1. -0.13299E+02 -0.11990E+02 -0.34253E+01 + 1. 0.17510E+01 -0.60728E+01 -0.34164E+01 + 1. -0.77993E+01 -0.74496E+01 -0.34100E+01 + 1. 0.31437E+01 0.98427E+01 -0.34024E+01 + 1. 0.18720E+02 0.26276E+01 -0.33947E+01 + 1. -0.18200E+02 -0.18696E+01 -0.33905E+01 + 1. -0.12050E+02 -0.15597E+02 -0.33840E+01 + 1. 0.12585E+02 0.15078E+02 -0.33741E+01 + 1. -0.51330E+01 -0.29210E+01 -0.33684E+01 + 1. 0.56940E+01 0.94583E+01 -0.33619E+01 + 1. -0.15679E+02 -0.68585E+01 -0.33566E+01 + 1. 0.12670E+02 -0.15390E+02 -0.33497E+01 + 1. -0.13949E+02 -0.14291E+02 -0.33422E+01 + 1. 0.12827E+02 -0.12876E+02 -0.33345E+01 + 1. -0.35110E+01 -0.13187E+00 -0.33321E+01 + 1. -0.19381E+02 0.49295E+01 -0.33247E+01 + 1. 0.78998E+00 0.89018E+00 -0.33140E+01 + 1. 0.13880E+01 0.13247E+02 -0.33074E+01 + 1. 0.15134E+02 -0.10646E+02 -0.33040E+01 + 1. 0.79390E+01 0.17675E+02 -0.32996E+01 + 1. -0.57989E+01 0.36343E+01 -0.32895E+01 + 1. -0.12809E+02 0.54764E+01 -0.32867E+01 + 1. 0.16105E+02 0.56154E+01 -0.32743E+01 + 1. -0.15316E+02 0.68704E+00 -0.32672E+01 + 1. -0.77401E+01 -0.97776E+01 -0.32620E+01 + 1. 0.14491E+02 0.24547E+01 -0.32568E+01 + 1. -0.10699E+02 -0.47546E+01 -0.32475E+01 + 1. 0.10216E+02 0.30081E+01 -0.32462E+01 + 1. -0.17266E+02 0.33716E+01 -0.32346E+01 + 1. -0.10464E+02 0.16629E+02 -0.32279E+01 + 1. -0.12446E+02 0.15246E+02 -0.32261E+01 + 1. -0.23357E+01 0.15471E+02 -0.32138E+01 + 1. 0.49710E+01 -0.70887E+01 -0.32096E+01 + 1. 0.78593E+01 0.55953E+01 -0.32050E+01 + 1. -0.72167E+01 -0.12441E+02 -0.31991E+01 + 1. -0.87439E+01 0.83880E+01 -0.31913E+01 + 1. 0.17270E+02 -0.96117E+00 -0.31833E+01 + 1. 0.21149E+01 -0.88238E+01 -0.31789E+01 + 1. 0.11809E+02 -0.51169E+01 -0.31671E+01 + 1. -0.69537E+00 -0.10795E+02 -0.31636E+01 + 1. 0.43054E+01 0.50272E+01 -0.31584E+01 + 1. -0.72963E+01 -0.43500E+01 -0.31472E+01 + 1. 0.65859E+01 -0.56826E+01 -0.31425E+01 + 1. 0.61905E+01 -0.17667E+02 -0.31355E+01 + 1. 0.18414E+02 -0.63875E+01 -0.31329E+01 + 1. -0.15278E+01 0.10093E+02 -0.31258E+01 + 1. -0.11735E+02 0.13089E+02 -0.31151E+01 + 1. 0.10139E+02 0.55961E+01 -0.31079E+01 + 1. 0.14632E+02 -0.78397E+01 -0.31016E+01 + 1. -0.84328E+01 0.21817E+01 -0.30952E+01 + 1. 0.15765E+02 0.11574E+02 -0.30914E+01 + 1. -0.21895E+01 0.63076E+01 -0.30802E+01 + 1. 0.49252E+01 -0.12846E+02 -0.30748E+01 + 1. 0.14599E+02 -0.70901E+00 -0.30687E+01 + 1. 0.67695E+01 0.13689E+02 -0.30630E+01 + 1. -0.39110E+01 0.18064E+02 -0.30580E+01 + 1. -0.30481E+01 -0.17457E+02 -0.30530E+01 + 1. 0.10063E+01 0.31022E+01 -0.30429E+01 + 1. -0.57368E+01 0.11842E+02 -0.30394E+01 + 1. 0.19214E+01 0.16002E+02 -0.30300E+01 + 1. -0.13624E+02 -0.90506E+01 -0.30212E+01 + 1. -0.74870E+00 0.46526E+01 -0.30151E+01 + 1. -0.15484E+02 0.82407E+01 -0.30076E+01 + 1. 0.56643E+01 0.31563E+01 -0.30064E+01 + 1. -0.87885E+01 -0.13704E+02 -0.29979E+01 + 1. -0.19411E+01 0.13108E+02 -0.29920E+01 + 1. 0.88106E+01 -0.12504E+02 -0.29812E+01 + 1. -0.11852E+02 -0.59169E+00 -0.29744E+01 + 1. -0.73640E+00 -0.16566E+02 -0.29676E+01 + 1. -0.15109E+02 -0.24086E+01 -0.29620E+01 + 1. 0.98771E+01 -0.14412E+02 -0.29594E+01 + 1. -0.16204E+01 0.55894E+00 -0.29498E+01 + 1. 0.63759E+01 -0.18000E+01 -0.29431E+01 + 1. -0.29435E+01 -0.81139E+01 -0.29347E+01 + 1. 0.92495E+01 -0.16375E+02 -0.29288E+01 + 1. -0.84459E+01 0.17832E+02 -0.29217E+01 + 1. -0.12667E+02 0.88319E+01 -0.29169E+01 + 1. 0.78334E+01 -0.16264E-01 -0.29104E+01 + 1. -0.15270E+02 -0.49101E+01 -0.29001E+01 + 1. -0.65993E+01 0.14075E+01 -0.28941E+01 + 1. 0.34794E+01 -0.51637E+01 -0.28892E+01 + 1. 0.13312E+02 0.12326E+02 -0.28827E+01 + 1. -0.15095E+02 0.57411E+01 -0.28747E+01 + 1. 0.90781E+01 0.15679E+02 -0.28671E+01 + 1. 0.17462E+02 -0.34217E+01 -0.28634E+01 + 1. -0.12685E+02 0.32992E+01 -0.28598E+01 + 1. -0.11932E+02 -0.67508E+01 -0.28467E+01 + 1. -0.70356E+01 0.13943E+02 -0.28454E+01 + 1. 0.19844E+02 -0.88318E+00 -0.28355E+01 + 1. -0.19508E+02 0.14317E+01 -0.28297E+01 + 1. 0.38494E+01 -0.18254E+02 -0.28219E+01 + 1. 0.11915E+02 0.10294E+01 -0.28168E+01 + 1. 0.30706E+01 0.12078E+02 -0.28088E+01 + 1. 0.17431E+02 0.72970E+01 -0.28001E+01 + 1. -0.11556E+02 -0.29976E+01 -0.27988E+01 + 1. 0.94681E+00 0.57447E+01 -0.27918E+01 + 1. 0.13307E-01 0.11405E+02 -0.27806E+01 + 1. -0.11056E+02 -0.12538E+02 -0.27738E+01 + 1. -0.30871E+01 -0.14472E+02 -0.27671E+01 + 1. 0.88855E+01 -0.85558E+01 -0.27644E+01 + 1. 0.52174E+01 0.11574E+02 -0.27596E+01 + 1. 0.96953E+01 -0.50361E+01 -0.27522E+01 + 1. -0.95256E+01 -0.17493E+02 -0.27403E+01 + 1. 0.45793E+01 0.10395E+00 -0.27338E+01 + 1. 0.16286E+02 -0.60551E+01 -0.27284E+01 + 1. 0.36478E+01 0.79969E+01 -0.27203E+01 + 1. -0.14754E+02 0.10171E+02 -0.27198E+01 + 1. 0.14986E+02 -0.26703E+01 -0.27078E+01 + 1. 0.16697E+01 -0.18183E+02 -0.27036E+01 + 1. -0.18138E+02 -0.45569E+01 -0.26936E+01 + 1. 0.13946E+02 0.63373E+01 -0.26893E+01 + 1. 0.14874E+02 -0.12794E+02 -0.26823E+01 + 1. -0.27518E+01 -0.11404E+02 -0.26770E+01 + 1. 0.55334E+01 -0.15829E+02 -0.26733E+01 + 1. -0.13420E+02 -0.37520E+01 -0.26617E+01 + 1. -0.30371E+01 -0.26905E+01 -0.26563E+01 + 1. -0.75369E+01 -0.77412E+00 -0.26503E+01 + 1. 0.49376E+01 0.19357E+02 -0.26455E+01 + 1. -0.52354E+01 -0.62482E+01 -0.26335E+01 + 1. 0.17738E+02 0.45518E+01 -0.26268E+01 + 1. 0.33634E+00 -0.49005E+01 -0.26247E+01 + 1. 0.71018E+01 0.80336E+01 -0.26195E+01 + 1. 0.27739E+01 0.17939E+02 -0.26070E+01 + 1. -0.49234E+01 0.10068E+02 -0.26022E+01 + 1. -0.58480E+01 -0.10978E+02 -0.25954E+01 + 1. 0.36792E+01 0.28555E+01 -0.25921E+01 + 1. -0.98656E+00 0.81160E+01 -0.25824E+01 + 1. 0.12789E+02 0.10211E+02 -0.25752E+01 + 1. -0.46411E+01 0.80537E+01 -0.25674E+01 + 1. 0.11006E+02 0.12235E+02 -0.25646E+01 + 1. -0.17716E+02 -0.87762E+01 -0.25539E+01 + 1. -0.16957E+02 -0.47682E+00 -0.25533E+01 + 1. -0.16700E+02 -0.10931E+02 -0.25448E+01 + 1. -0.37352E+01 0.14111E+02 -0.25353E+01 + 1. 0.14706E+02 0.91405E+01 -0.25281E+01 + 1. 0.76832E+01 0.25152E+01 -0.25234E+01 + 1. 0.12124E+02 -0.23723E+01 -0.25177E+01 + 1. 0.10140E+02 0.94523E+01 -0.25129E+01 + 1. 0.48272E+01 -0.94249E+01 -0.25051E+01 + 1. -0.10843E+02 0.49651E+01 -0.24968E+01 + 1. -0.13161E+02 0.10011E+01 -0.24882E+01 + 1. 0.11580E+02 -0.11502E+02 -0.24859E+01 + 1. -0.12797E-01 -0.77459E+00 -0.24746E+01 + 1. -0.30020E+00 0.19204E+02 -0.24691E+01 + 1. -0.96068E+01 -0.88590E+01 -0.24621E+01 + 1. 0.16130E+02 0.13294E+01 -0.24574E+01 + 1. -0.10231E+02 0.96620E+01 -0.24481E+01 + 1. 0.96559E+01 -0.12504E+01 -0.24455E+01 + 1. 0.60636E+00 -0.73980E+01 -0.24388E+01 + 1. 0.11687E+02 -0.81225E+01 -0.24304E+01 + 1. -0.99788E+01 0.96227E+00 -0.24229E+01 + 1. -0.97102E+01 0.12777E+02 -0.24165E+01 + 1. -0.19967E+02 -0.10744E+01 -0.24093E+01 + 1. 0.49092E+01 0.16533E+02 -0.24049E+01 + 1. -0.78179E+01 -0.15735E+02 -0.23950E+01 + 1. 0.80264E+01 0.11679E+02 -0.23928E+01 + 1. -0.78711E+01 0.67325E+01 -0.23848E+01 + 1. 0.31366E+01 -0.13720E+02 -0.23735E+01 + 1. 0.54792E+01 -0.38359E+01 -0.23714E+01 + 1. -0.59172E+01 0.61952E+01 -0.23660E+01 + 1. -0.57233E+01 0.17302E+02 -0.23563E+01 + 1. 0.14603E+00 0.15149E+02 -0.23497E+01 + 1. 0.25845E+01 0.88440E+00 -0.23405E+01 + 1. 0.17362E+02 -0.95715E+01 -0.23397E+01 + 1. 0.11534E+01 -0.16223E+02 -0.23296E+01 + 1. -0.84089E+01 -0.25905E+01 -0.23263E+01 + 1. 0.19541E+02 -0.32501E+01 -0.23188E+01 + 1. -0.11802E+02 0.11108E+02 -0.23116E+01 + 1. -0.27006E+01 -0.19745E+02 -0.23011E+01 + 1. -0.98518E+01 -0.64725E+01 -0.22952E+01 + 1. 0.81614E+01 -0.66429E+01 -0.22914E+01 + 1. -0.71254E+01 0.92173E+01 -0.22824E+01 + 1. 0.21287E+01 -0.34574E+01 -0.22792E+01 + 1. 0.11896E+02 0.63557E+01 -0.22681E+01 + 1. -0.97526E+01 -0.10871E+02 -0.22611E+01 + 1. -0.11700E+02 0.68331E+01 -0.22570E+01 + 1. 0.30662E+01 0.14458E+02 -0.22505E+01 + 1. 0.14171E+02 -0.45685E+01 -0.22430E+01 + 1. -0.18821E+02 0.66664E+01 -0.22398E+01 + 1. -0.57863E+01 -0.15355E+02 -0.22318E+01 + 1. 0.14780E+02 0.42095E+01 -0.22222E+01 + 1. 0.35268E+01 -0.11662E+02 -0.22156E+01 + 1. -0.90335E+01 0.15043E+02 -0.22118E+01 + 1. -0.10680E+02 0.29071E+01 -0.22026E+01 + 1. -0.16442E+01 0.17573E+02 -0.21949E+01 + 1. -0.12463E+02 -0.10635E+02 -0.21911E+01 + 1. 0.17123E+02 0.10066E+02 -0.21818E+01 + 1. -0.16514E+01 -0.54798E+01 -0.21796E+01 + 1. -0.30526E+01 0.11100E+02 -0.21728E+01 + 1. -0.18562E+02 -0.69968E+01 -0.21608E+01 + 1. -0.12060E+01 -0.14141E+02 -0.21562E+01 + 1. -0.29388E+01 0.29829E+01 -0.21524E+01 + 1. -0.84594E+01 0.11046E+02 -0.21410E+01 + 1. -0.89089E+00 0.23152E+01 -0.21379E+01 + 1. 0.31645E+00 -0.93736E+01 -0.21318E+01 + 1. 0.32641E+01 -0.73992E+01 -0.21265E+01 + 1. 0.11351E+02 0.42815E+01 -0.21142E+01 + 1. -0.44070E+01 0.12476E+01 -0.21077E+01 + 1. 0.68816E+01 0.15566E+02 -0.21014E+01 + 1. -0.13837E+02 -0.72561E+01 -0.20966E+01 + 1. 0.99827E+01 0.96543E+00 -0.20915E+01 + 1. 0.60253E+01 0.52506E+01 -0.20814E+01 + 1. -0.57319E+01 -0.18867E+02 -0.20744E+01 + 1. -0.13774E+02 0.11831E+02 -0.20712E+01 + 1. 0.19376E+02 0.10053E+01 -0.20656E+01 + 1. 0.64990E+01 -0.13958E+02 -0.20556E+01 + 1. 0.13347E+02 -0.10291E+02 -0.20493E+01 + 1. -0.53116E+01 -0.13152E+01 -0.20404E+01 + 1. -0.31852E+00 -0.18973E+02 -0.20338E+01 + 1. -0.63674E+01 -0.85854E+01 -0.20287E+01 + 1. -0.14709E+02 -0.11624E+02 -0.20212E+01 + 1. -0.15401E+02 0.26950E+01 -0.20181E+01 + 1. 0.13769E+02 0.79632E+00 -0.20089E+01 + 1. 0.12702E+01 0.94158E+01 -0.20035E+01 + 1. 0.88371E+01 0.69889E+01 -0.19978E+01 + 1. 0.96308E+01 -0.10546E+02 -0.19924E+01 + 1. 0.52091E+00 -0.12373E+02 -0.19863E+01 + 1. -0.10426E+02 -0.14339E+02 -0.19773E+01 + 1. -0.19600E+02 0.34461E+01 -0.19675E+01 + 1. -0.16625E+02 0.48110E+01 -0.19642E+01 + 1. 0.70920E+00 0.17273E+02 -0.19552E+01 + 1. 0.31287E+01 -0.11133E+01 -0.19494E+01 + 1. -0.16854E+02 0.10642E+02 -0.19452E+01 + 1. 0.64720E+01 0.18168E+02 -0.19400E+01 + 1. 0.11074E+02 0.15795E+02 -0.19318E+01 + 1. 0.11805E+02 0.84020E+01 -0.19210E+01 + 1. -0.17318E+02 0.17475E+01 -0.19174E+01 + 1. 0.11506E+02 -0.16261E+02 -0.19123E+01 + 1. -0.13567E+02 -0.16535E+01 -0.19030E+01 + 1. -0.85160E+01 0.40444E+01 -0.18943E+01 + 1. 0.12025E+02 -0.14096E+02 -0.18881E+01 + 1. -0.12829E+02 -0.13187E+02 -0.18866E+01 + 1. -0.17152E+02 -0.29506E+01 -0.18756E+01 + 1. -0.39411E+01 0.53099E+01 -0.18674E+01 + 1. 0.28579E+01 0.63375E+01 -0.18608E+01 + 1. 0.14865E+02 0.13204E+02 -0.18595E+01 + 1. 0.10136E+02 -0.70004E+01 -0.18494E+01 + 1. -0.11652E+02 -0.84992E+01 -0.18447E+01 + 1. 0.79544E+01 -0.45258E+01 -0.18334E+01 + 1. 0.95655E+01 0.13945E+02 -0.18315E+01 + 1. 0.84807E+01 -0.17910E+02 -0.18226E+01 + 1. -0.16833E+01 -0.91925E+01 -0.18167E+01 + 1. 0.70810E+01 -0.83661E+01 -0.18103E+01 + 1. -0.56690E+01 -0.13146E+02 -0.18048E+01 + 1. -0.51936E+01 -0.42906E+01 -0.17981E+01 + 1. 0.12810E+02 0.25966E+01 -0.17905E+01 + 1. 0.22759E+01 0.41709E+01 -0.17827E+01 + 1. 0.12371E+01 -0.14247E+02 -0.17777E+01 + 1. 0.68936E+01 0.99620E+01 -0.17729E+01 + 1. 0.96696E+01 0.17472E+02 -0.17666E+01 + 1. 0.68955E+01 -0.10598E+02 -0.17542E+01 + 1. 0.75292E+01 -0.16026E+02 -0.17500E+01 + 1. 0.19742E+02 0.31243E+01 -0.17461E+01 + 1. -0.26289E+01 0.90267E+01 -0.17382E+01 + 1. -0.64141E+01 0.15505E+02 -0.17327E+01 + 1. 0.11969E+02 0.13967E+02 -0.17264E+01 + 1. -0.37429E+01 -0.97176E+01 -0.17158E+01 + 1. -0.79247E+01 -0.61267E+01 -0.17067E+01 + 1. -0.10007E+02 -0.11162E+01 -0.17040E+01 + 1. 0.16569E+02 0.32101E+01 -0.16965E+01 + 1. 0.12967E+02 -0.66305E+01 -0.16922E+01 + 1. -0.25932E+01 0.19812E+02 -0.16806E+01 + 1. 0.79823E+01 -0.23769E+01 -0.16799E+01 + 1. 0.15105E+02 -0.92270E+01 -0.16733E+01 + 1. -0.45385E+00 -0.30404E+01 -0.16657E+01 + 1. -0.13870E+02 0.72486E+01 -0.16581E+01 + 1. -0.11114E+02 -0.16615E+02 -0.16532E+01 + 1. -0.13049E+02 0.13986E+02 -0.16432E+01 + 1. 0.16187E+02 -0.11059E+02 -0.16366E+01 + 1. 0.26743E+01 -0.19635E+02 -0.16290E+01 + 1. -0.17019E+02 0.73401E+01 -0.16261E+01 + 1. -0.38585E+01 0.16386E+02 -0.16142E+01 + 1. 0.87263E+01 0.40035E+01 -0.16081E+01 + 1. 0.53954E+01 0.13790E+02 -0.16013E+01 + 1. 0.18572E+02 0.61562E+01 -0.15971E+01 + 1. -0.16758E+02 -0.57908E+01 -0.15926E+01 + 1. -0.15663E+02 -0.93332E+01 -0.15833E+01 + 1. 0.43272E+01 0.95065E+01 -0.15773E+01 + 1. -0.97762E+01 -0.39957E+01 -0.15673E+01 + 1. -0.76198E+01 -0.17659E+02 -0.15647E+01 + 1. 0.33637E+01 -0.16214E+02 -0.15581E+01 + 1. -0.42316E+01 -0.16747E+02 -0.15497E+01 + 1. 0.15650E+02 0.76445E+01 -0.15423E+01 + 1. 0.15421E+01 0.19430E+02 -0.15366E+01 + 1. -0.79251E+01 -0.11348E+02 -0.15325E+01 + 1. 0.52464E+01 -0.18935E+02 -0.15252E+01 + 1. 0.23204E+01 -0.10140E+02 -0.15137E+01 + 1. 0.64660E+01 0.12889E+01 -0.15114E+01 + 1. 0.10288E+02 -0.33649E+01 -0.15050E+01 + 1. -0.19183E+02 -0.32493E+01 -0.14945E+01 + 1. -0.54347E+01 0.13626E+02 -0.14873E+01 + 1. 0.17892E+02 -0.49917E+01 -0.14846E+01 + 1. -0.97241E+01 0.63921E+01 -0.14742E+01 + 1. -0.13859E+02 0.42874E+01 -0.14674E+01 + 1. -0.11058E+02 0.14094E+02 -0.14640E+01 + 1. 0.16803E+02 -0.76363E+01 -0.14588E+01 + 1. 0.17630E+02 0.15080E+00 -0.14485E+01 + 1. 0.47746E+01 -0.59322E+01 -0.14430E+01 + 1. -0.56984E+01 0.26492E+01 -0.14335E+01 + 1. -0.21811E+01 -0.71414E+00 -0.14320E+01 + 1. -0.46269E+00 0.13394E+02 -0.14243E+01 + 1. -0.12745E+02 -0.15331E+02 -0.14149E+01 + 1. -0.12086E+02 -0.50587E+01 -0.14099E+01 + 1. 0.21218E+01 -0.56893E+01 -0.14039E+01 + 1. 0.18099E+02 -0.19202E+01 -0.13968E+01 + 1. -0.33627E+01 -0.64127E+01 -0.13889E+01 + 1. -0.11704E+02 0.16137E+02 -0.13833E+01 + 1. -0.14856E+02 0.14788E-01 -0.13774E+01 + 1. 0.11331E+02 -0.56047E+00 -0.13671E+01 + 1. 0.98624E+01 0.11103E+02 -0.13638E+01 + 1. 0.10843E+01 0.72153E+01 -0.13592E+01 + 1. -0.20093E+01 -0.17873E+02 -0.13500E+01 + 1. 0.16362E+01 0.12780E+02 -0.13461E+01 + 1. -0.15270E+02 -0.35704E+01 -0.13356E+01 + 1. -0.41672E+01 -0.11841E+02 -0.13269E+01 + 1. -0.21776E+01 -0.15755E+02 -0.13204E+01 + 1. -0.65615E+01 0.11084E+02 -0.13168E+01 + 1. -0.47169E+01 0.19264E+02 -0.13085E+01 + 1. 0.93956E+00 0.16197E+01 -0.13023E+01 + 1. 0.49735E+01 0.67723E+01 -0.12993E+01 + 1. -0.16535E+01 0.15715E+02 -0.12868E+01 + 1. 0.48559E+01 -0.22043E+01 -0.12816E+01 + 1. -0.11598E+01 0.62842E+01 -0.12761E+01 + 1. 0.14163E+02 -0.14086E+02 -0.12709E+01 + 1. 0.16153E+02 0.54784E+01 -0.12626E+01 + 1. -0.12049E+01 -0.11323E+02 -0.12562E+01 + 1. 0.16299E+02 -0.37665E+01 -0.12521E+01 + 1. 0.12168E+02 -0.41319E+01 -0.12439E+01 + 1. -0.11367E+01 0.10845E+02 -0.12395E+01 + 1. 0.13550E+02 -0.10425E+01 -0.12274E+01 + 1. -0.18566E+02 -0.13430E+00 -0.12240E+01 + 1. -0.81618E+01 0.10534E+01 -0.12147E+01 + 1. 0.84728E+01 -0.13960E+02 -0.12096E+01 + 1. -0.95176E+01 -0.12563E+02 -0.12061E+01 + 1. -0.11583E+01 -0.72036E+01 -0.11957E+01 + 1. 0.14923E+02 -0.62968E+01 -0.11876E+01 + 1. 0.15409E+02 -0.45714E-01 -0.11824E+01 + 1. -0.14339E+02 -0.54240E+01 -0.11754E+01 + 1. -0.66718E+01 -0.27065E+01 -0.11707E+01 + 1. -0.11711E+02 0.14926E+01 -0.11617E+01 + 1. -0.68879E+01 0.18768E+02 -0.11571E+01 + 1. -0.78874E+01 -0.13730E+02 -0.11481E+01 + 1. 0.28341E+00 0.42193E+01 -0.11426E+01 + 1. -0.13414E+02 0.96085E+01 -0.11345E+01 + 1. 0.10439E+02 -0.12679E+02 -0.11330E+01 + 1. 0.14323E+02 0.11290E+02 -0.11231E+01 + 1. -0.86610E+01 0.16950E+02 -0.11199E+01 + 1. -0.30408E+01 0.69641E+01 -0.11111E+01 + 1. -0.15611E+02 0.90018E+01 -0.11063E+01 + 1. 0.75562E+01 0.13896E+02 -0.10955E+01 + 1. 0.41446E+01 0.13378E+01 -0.10908E+01 + 1. -0.86038E+01 0.82292E+01 -0.10856E+01 + 1. 0.11375E+02 -0.10065E+02 -0.10787E+01 + 1. 0.13671E+02 0.77269E+01 -0.10726E+01 + 1. -0.62550E+01 0.16613E+00 -0.10643E+01 + 1. 0.29527E+01 0.16340E+02 -0.10551E+01 + 1. 0.13282E+02 -0.12038E+02 -0.10523E+01 + 1. -0.15634E+02 0.11963E+02 -0.10436E+01 + 1. 0.84268E+01 0.88612E+01 -0.10366E+01 + 1. 0.66697E+01 -0.76473E+00 -0.10313E+01 + 1. 0.13051E+02 -0.85369E+01 -0.10264E+01 + 1. -0.82151E+01 0.13222E+02 -0.10159E+01 + 1. -0.24579E+01 0.13478E+02 -0.10083E+01 + 1. 0.10139E+02 0.54854E+01 -0.10062E+01 + 1. -0.10820E+02 0.84131E+01 -0.99655E+00 + 1. 0.37696E+01 0.19595E+02 -0.98742E+00 + 1. 0.33643E+01 0.11176E+02 -0.98219E+00 + 1. 0.45778E+01 -0.14061E+02 -0.97710E+00 + 1. 0.42068E+01 0.41049E+01 -0.96992E+00 + 1. -0.24250E+01 -0.36394E+01 -0.96204E+00 + 1. -0.19189E+02 -0.53520E+01 -0.95752E+00 + 1. -0.41403E+01 -0.25622E+01 -0.95108E+00 + 1. -0.83570E+01 -0.80208E+01 -0.94279E+00 + 1. -0.13596E+02 0.22226E+01 -0.93392E+00 + 1. 0.55176E+01 -0.16975E+02 -0.93197E+00 + 1. -0.13737E+02 -0.94448E+01 -0.92252E+00 + 1. 0.98267E+01 -0.15623E+02 -0.91429E+00 + 1. 0.64507E+01 0.12067E+02 -0.91002E+00 + 1. 0.83904E+01 0.13274E+01 -0.90447E+00 + 1. -0.59027E+01 0.76663E+01 -0.89713E+00 + 1. 0.84773E+01 -0.11921E+02 -0.88689E+00 + 1. 0.14109E+02 -0.30673E+01 -0.88273E+00 + 1. 0.50128E+01 -0.81358E+01 -0.87672E+00 + 1. 0.13107E+02 0.51292E+01 -0.87199E+00 + 1. -0.40023E+01 -0.14374E+02 -0.86044E+00 + 1. 0.12632E+01 -0.11434E+01 -0.85353E+00 + 1. -0.15468E+02 0.63206E+01 -0.85088E+00 + 1. 0.60641E+01 -0.12368E+02 -0.84664E+00 + 1. 0.77003E+01 0.16939E+02 -0.83994E+00 + 1. 0.64362E+01 0.33544E+01 -0.83265E+00 + 1. -0.31456E+00 -0.16663E+02 -0.82594E+00 + 1. 0.11836E+02 0.11674E+02 -0.81415E+00 + 1. -0.27845E+01 0.10935E+01 -0.80757E+00 + 1. 0.34565E+01 -0.40830E+01 -0.80624E+00 + 1. -0.18711E+02 0.48534E+01 -0.79693E+00 + 1. -0.63282E+01 0.47967E+01 -0.78797E+00 + 1. -0.14546E+02 -0.13629E+02 -0.78543E+00 + 1. 0.26467E+01 0.84305E+01 -0.77744E+00 + 1. -0.10424E+02 -0.97034E+01 -0.77125E+00 + 1. -0.11819E+02 -0.22091E+01 -0.76263E+00 + 1. -0.93974E+01 -0.15552E+02 -0.75761E+00 + 1. 0.89241E+01 -0.81866E+01 -0.75318E+00 + 1. -0.11848E+02 0.53271E+01 -0.74388E+00 + 1. 0.17464E+02 0.84898E+01 -0.73690E+00 + 1. -0.56967E+01 -0.72015E+01 -0.72934E+00 + 1. -0.15869E+02 -0.16874E+01 -0.72483E+00 + 1. 0.41523E+01 -0.10263E+02 -0.71914E+00 + 1. 0.21018E+01 -0.12667E+02 -0.70693E+00 + 1. -0.99451E+01 0.11244E+02 -0.70197E+00 + 1. -0.11403E+02 -0.11469E+02 -0.69944E+00 + 1. -0.55147E+01 -0.10061E+02 -0.68674E+00 + 1. -0.49959E+00 0.87712E+01 -0.68084E+00 + 1. -0.17772E+02 0.89625E+01 -0.67793E+00 + 1. 0.14707E+02 0.21098E+01 -0.66825E+00 + 1. 0.96653E+01 -0.53916E+01 -0.66188E+00 + 1. 0.10934E+02 0.23993E+01 -0.65943E+00 + 1. 0.71875E+01 0.63998E+01 -0.65224E+00 + 1. -0.68596E+01 -0.47983E+01 -0.64465E+00 + 1. -0.40821E+00 -0.48718E+01 -0.63668E+00 + 1. 0.93179E+01 0.15728E+02 -0.62706E+00 + 1. -0.41618E+01 0.10437E+02 -0.62334E+00 + 1. -0.16884E+02 -0.77650E+01 -0.61493E+00 + 1. 0.13821E+01 0.14694E+02 -0.60875E+00 + 1. 0.22953E+01 -0.17769E+02 -0.60564E+00 + 1. 0.19924E+02 -0.68720E+00 -0.59637E+00 + 1. 0.54482E+01 0.15558E+02 -0.59106E+00 + 1. -0.38492E+01 -0.19055E+02 -0.58393E+00 + 1. 0.17236E+01 -0.80640E+01 -0.57762E+00 + 1. -0.18906E+02 0.19775E+01 -0.57165E+00 + 1. 0.91243E+01 -0.55956E+00 -0.56029E+00 + 1. 0.65017E+01 0.83231E+01 -0.55455E+00 + 1. 0.64712E+01 -0.51713E+01 -0.55116E+00 + 1. -0.69816E+01 -0.15772E+02 -0.54068E+00 + 1. -0.23406E+01 -0.13005E+02 -0.53902E+00 + 1. -0.10981E+02 -0.67026E+01 -0.52923E+00 + 1. -0.24876E+01 0.46774E+01 -0.52269E+00 + 1. -0.92122E+00 0.19541E+02 -0.51594E+00 + 1. 0.10172E+02 0.74345E+01 -0.51126E+00 + 1. 0.18636E+02 -0.70323E+01 -0.50284E+00 + 1. -0.30790E+01 0.18058E+02 -0.49919E+00 + 1. -0.15989E+02 -0.11512E+02 -0.48671E+00 + 1. 0.10549E+01 0.10875E+02 -0.48443E+00 + 1. -0.16188E+01 -0.19864E+02 -0.47625E+00 + 1. 0.11118E+02 0.98138E+01 -0.46843E+00 + 1. -0.12952E+02 -0.37376E+00 -0.46620E+00 + 1. 0.69531E+01 -0.18449E+02 -0.45521E+00 + 1. -0.17265E+02 -0.98187E+01 -0.44970E+00 + 1. -0.41877E+01 -0.46531E+00 -0.44117E+00 + 1. -0.12208E+02 0.12205E+02 -0.43914E+00 + 1. -0.95536E+01 -0.17536E+02 -0.42876E+00 + 1. -0.96184E+01 0.27661E+01 -0.42355E+00 + 1. -0.40804E+01 0.32477E+01 -0.41590E+00 + 1. 0.19123E+02 -0.38051E+01 -0.40843E+00 + 1. -0.82307E+01 -0.12733E+01 -0.40559E+00 + 1. -0.16944E+02 0.34875E+01 -0.39543E+00 + 1. -0.74559E+01 0.28851E+01 -0.39258E+00 + 1. -0.19947E+02 -0.13942E+01 -0.38307E+00 + 1. 0.15718E+02 0.96288E+01 -0.37679E+00 + 1. 0.18309E+02 0.27444E+01 -0.37078E+00 + 1. -0.14797E+02 -0.77365E+01 -0.36068E+00 + 1. 0.12426E+02 0.15459E+02 -0.35622E+00 + 1. -0.56955E+01 0.17340E+02 -0.35237E+00 + 1. 0.16237E+02 0.11567E+02 -0.34018E+00 + 1. 0.37607E+00 -0.19833E+02 -0.33349E+00 + 1. -0.77789E+01 0.63598E+01 -0.32705E+00 + 1. 0.14337E+01 -0.37201E+01 -0.32518E+00 + 1. 0.10217E+02 0.12781E+02 -0.31660E+00 + 1. -0.16956E+02 -0.41970E+01 -0.31187E+00 + 1. 0.18164E+01 0.54453E+01 -0.30476E+00 + 1. 0.19587E+01 -0.15552E+02 -0.29737E+00 + 1. 0.80261E+00 -0.10614E+02 -0.29068E+00 + 1. -0.16574E+02 0.81301E+00 -0.28259E+00 + 1. 0.35473E+01 0.14216E+02 -0.27542E+00 + 1. -0.41506E+00 -0.14667E+02 -0.27217E+00 + 1. -0.30350E+01 -0.84992E+01 -0.26332E+00 + 1. 0.65598E+01 -0.31484E+01 -0.25465E+00 + 1. -0.83455E+01 -0.34022E+01 -0.24824E+00 + 1. 0.81343E+01 0.10994E+02 -0.24433E+00 + 1. 0.14308E+02 -0.10496E+02 -0.23746E+00 + 1. -0.84384E+00 -0.17046E+01 -0.22911E+00 + 1. -0.11426E+02 -0.13918E+02 -0.22655E+00 + 1. 0.17229E+02 -0.99238E+01 -0.21648E+00 + 1. 0.48868E+01 0.17789E+02 -0.21168E+00 + 1. -0.99811E+01 0.41277E+00 -0.20349E+00 + 1. -0.83421E-01 0.16573E+02 -0.19493E+00 + 1. 0.19926E+02 0.15267E+01 -0.18691E+00 + 1. -0.14090E+02 0.13048E+02 -0.18632E+00 + 1. -0.82683E+01 0.10086E+02 -0.17994E+00 + 1. -0.13232E+02 -0.12089E+02 -0.17027E+00 + 1. 0.67067E+01 -0.14667E+02 -0.16349E+00 + 1. -0.56522E+01 -0.17465E+02 -0.15818E+00 + 1. -0.37376E+01 0.14767E+02 -0.14780E+00 + 1. -0.18404E+02 0.69140E+01 -0.14586E+00 + 1. 0.13808E+02 0.13032E+02 -0.13808E+00 + 1. 0.12920E+02 0.77095E+00 -0.13332E+00 + 1. 0.11166E+02 -0.79063E+01 -0.12188E+00 + 1. 0.11712E+02 -0.22519E+01 -0.11345E+00 + 1. -0.99683E+01 0.15389E+02 -0.11155E+00 + 1. 0.29411E+01 -0.31446E+00 -0.10330E+00 + 1. -0.17833E+02 -0.21032E+01 -0.96015E-01 + 1. -0.43016E+01 0.12636E+02 -0.92979E-01 + 1. -0.93134E+01 -0.54113E+01 -0.83324E-01 + 1. 0.16910E+01 0.32271E+01 -0.78401E-01 + 1. -0.68112E+00 0.12961E+01 -0.67867E-01 + 1. 0.12726E+02 -0.15139E+02 -0.64059E-01 + 1. -0.41427E+01 -0.48671E+01 -0.57850E-01 + 1. 0.75879E+01 -0.67789E+01 -0.51261E-01 + 1. 0.56460E+01 0.10182E+02 -0.43949E-01 + 1. 0.14026E+01 0.17923E+02 -0.39997E-01 + 1. 0.40139E+01 -0.19535E+02 -0.30328E-01 + 1. -0.12492E+02 0.74426E+01 -0.25239E-01 + 1. -0.99543E+01 0.48661E+01 -0.13476E-01 + 1. -0.78053E+00 -0.89605E+01 -0.10096E-01 + 1. 0.14702E+02 0.63516E+01 -0.53276E-02 + 1. 0.14684E+02 0.40336E+01 0.47004E-02 + 1. -0.64731E+01 0.14469E+02 0.95324E-02 + 1. -0.26692E+01 -0.10803E+02 0.14102E-01 + 1. 0.16602E+02 -0.60727E+01 0.26419E-01 + 1. 0.41675E+01 -0.12357E+02 0.28076E-01 + 1. 0.16387E+02 -0.16681E+01 0.36083E-01 + 1. 0.56278E+01 0.51874E+01 0.42367E-01 + 1. -0.66936E+01 -0.12553E+02 0.49625E-01 + 1. 0.18893E+02 0.49731E+01 0.56476E-01 + 1. 0.70405E+01 -0.96728E+01 0.62090E-01 + 1. -0.12676E+02 -0.76622E+01 0.73267E-01 + 1. 0.84926E+01 -0.17141E+02 0.77894E-01 + 1. -0.11639E+02 0.32626E+01 0.81661E-01 + 1. 0.17446E+02 0.63670E+01 0.87488E-01 + 1. 0.96043E+01 -0.10586E+02 0.98967E-01 + 1. 0.15326E+02 -0.12850E+02 0.10291E+00 + 1. 0.84668E+01 -0.38188E+01 0.10984E+00 + 1. -0.11203E+02 -0.39994E+01 0.11343E+00 + 1. 0.11963E+02 -0.13209E+02 0.12504E+00 + 1. -0.20386E+01 -0.57926E+01 0.13234E+00 + 1. 0.13374E+02 -0.56184E+01 0.13704E+00 + 1. -0.16889E+02 0.10610E+02 0.14223E+00 + 1. -0.13670E+02 0.56278E+01 0.14756E+00 + 1. 0.15705E+02 -0.86737E+01 0.15694E+00 + 1. -0.13724E+02 -0.39707E+01 0.16039E+00 + 1. 0.52382E+01 -0.39454E-01 0.17121E+00 + 1. 0.45448E+01 0.84802E+01 0.17757E+00 + 1. 0.16772E+02 0.10398E+01 0.18059E+00 + 1. 0.46765E+01 0.12161E+02 0.19258E+00 + 1. -0.12540E+02 0.14651E+02 0.19906E+00 + 1. -0.47360E+01 0.59210E+01 0.20148E+00 + 1. -0.11889E+01 0.12338E+02 0.20903E+00 + 1. -0.14397E+02 0.10859E+02 0.21533E+00 + 1. 0.11186E+02 0.41827E+01 0.22469E+00 + 1. 0.82061E+01 0.31823E+01 0.23281E+00 + 1. 0.13308E+02 0.10083E+02 0.23735E+00 + 1. -0.83480E+01 -0.97235E+01 0.24258E+00 + 1. -0.20571E+01 0.27983E+01 0.25096E+00 + 1. 0.11968E+02 0.79430E+01 0.25709E+00 + 1. -0.10474E+01 0.14338E+02 0.26271E+00 + 1. -0.23850E+01 0.90014E+01 0.27076E+00 + 1. -0.11748E+02 0.10275E+02 0.27330E+00 + 1. -0.53517E+01 0.13677E+01 0.28483E+00 + 1. 0.32592E+01 -0.69261E+01 0.28781E+00 + 1. -0.16411E+02 0.78020E+01 0.29849E+00 + 1. 0.11412E+01 -0.62580E+01 0.30330E+00 + 1. -0.15875E+02 -0.60014E+01 0.30698E+00 + 1. 0.10602E+02 0.58315E+00 0.31364E+00 + 1. -0.34922E+01 -0.16027E+02 0.32257E+00 + 1. -0.11390E+02 -0.16224E+02 0.33084E+00 + 1. 0.39195E+01 -0.16738E+02 0.33552E+00 + 1. -0.10326E+02 0.12999E+02 0.34264E+00 + 1. 0.73779E+01 0.15300E+02 0.35101E+00 + 1. -0.55932E+01 -0.14645E+02 0.35578E+00 + 1. -0.14737E+02 0.33560E+01 0.36240E+00 + 1. -0.60505E+01 -0.15094E+01 0.36755E+00 + 1. 0.36236E+01 0.66112E+01 0.37732E+00 + 1. 0.16798E+00 -0.12608E+02 0.38247E+00 + 1. 0.72871E+01 0.18490E+02 0.38790E+00 + 1. 0.16714E+02 0.43102E+01 0.39731E+00 + 1. 0.37126E+01 -0.23776E+01 0.40403E+00 + 1. -0.61330E+01 0.94868E+01 0.41019E+00 + 1. -0.76002E+01 -0.18203E+02 0.41765E+00 + 1. -0.63071E+01 0.12468E+02 0.42348E+00 + 1. -0.18381E+02 -0.68252E+01 0.43028E+00 + 1. 0.10681E+02 0.16787E+02 0.43453E+00 + 1. -0.19613E+02 -0.36885E+01 0.44030E+00 + 1. -0.32458E+00 0.55653E+01 0.44869E+00 + 1. 0.99011E+01 -0.13864E+02 0.45427E+00 + 1. 0.15091E+02 -0.44620E+01 0.46212E+00 + 1. -0.19899E+02 0.46211E+00 0.46907E+00 + 1. -0.10583E+01 -0.17987E+02 0.47645E+00 + 1. -0.99373E+01 -0.20810E+01 0.48502E+00 + 1. 0.42519E+01 0.26895E+01 0.49092E+00 + 1. -0.12426E+02 -0.56166E+01 0.49592E+00 + 1. 0.96419E+01 -0.22406E+01 0.50543E+00 + 1. 0.11276E+02 -0.49564E+01 0.51254E+00 + 1. -0.43035E+01 0.82712E+01 0.51951E+00 + 1. 0.87562E+01 0.57190E+01 0.52255E+00 + 1. -0.98103E+01 -0.80439E+01 0.52973E+00 + 1. 0.93003E+00 0.78673E+01 0.53374E+00 + 1. 0.17197E+02 -0.40408E+01 0.54489E+00 + 1. -0.76030E+01 -0.63109E+01 0.54785E+00 + 1. -0.19658E+01 0.16518E+02 0.55657E+00 + 1. -0.77571E+01 0.15939E+02 0.56500E+00 + 1. -0.47939E+01 -0.12097E+02 0.57170E+00 + 1. -0.96747E+01 0.69260E+01 0.57331E+00 + 1. 0.25352E+01 -0.99273E+01 0.58339E+00 + 1. -0.77733E+01 0.18056E+02 0.58819E+00 + 1. 0.10591E+02 -0.16850E+02 0.59576E+00 + 1. 0.69011E+01 0.13546E+01 0.60206E+00 + 1. -0.49182E+01 -0.85008E+01 0.61193E+00 + 1. 0.85278E+01 0.13440E+02 0.61435E+00 + 1. 0.18312E+02 -0.14200E+01 0.62641E+00 + 1. -0.14728E+02 0.64829E+00 0.63167E+00 + 1. 0.20568E+01 0.19765E+02 0.63357E+00 + 1. -0.14391E+02 -0.14058E+01 0.64521E+00 + 1. -0.93148E+01 -0.13763E+02 0.65280E+00 + 1. -0.57821E+01 0.19136E+02 0.65763E+00 + 1. 0.82697E+01 0.76702E+01 0.66629E+00 + 1. 0.10761E+01 0.39150E+00 0.67038E+00 + 1. 0.47870E+01 -0.47635E+01 0.67600E+00 + 1. 0.17081E+01 0.13021E+02 0.68262E+00 + 1. 0.12251E+02 -0.96847E+01 0.68914E+00 + 1. -0.19579E+02 0.34247E+01 0.69628E+00 + 1. -0.15279E+02 -0.96918E+01 0.70511E+00 + 1. -0.17988E+01 0.70343E+01 0.71293E+00 + 1. -0.76158E+01 0.90402E+00 0.71591E+00 + 1. -0.13343E+02 -0.14286E+02 0.72559E+00 + 1. -0.77009E+01 0.45528E+01 0.73123E+00 + 1. -0.11897E+02 -0.96075E+01 0.73896E+00 + 1. 0.13877E+02 -0.79018E+01 0.74452E+00 + 1. -0.17147E+02 0.51800E+01 0.74926E+00 + 1. 0.76375E+01 -0.92609E+00 0.75732E+00 + 1. 0.13576E+02 -0.13376E+01 0.76306E+00 + 1. -0.27824E+01 -0.23441E+01 0.76765E+00 + 1. 0.71138E+01 -0.11667E+02 0.77511E+00 + 1. 0.19086E+02 -0.54367E+01 0.78346E+00 + 1. -0.52939E+00 0.10322E+02 0.79140E+00 + 1. 0.21300E+01 -0.19440E+02 0.79403E+00 + 1. 0.30733E+01 0.10226E+02 0.80210E+00 + 1. -0.54885E+01 -0.35066E+01 0.81181E+00 + 1. 0.94158E+01 0.93509E+01 0.81756E+00 + 1. -0.39287E+01 0.16802E+02 0.82515E+00 + 1. -0.24279E+01 -0.11650E+00 0.82947E+00 + 1. -0.84699E+01 0.12344E+02 0.83856E+00 + 1. 0.36541E+01 0.15887E+02 0.84347E+00 + 1. -0.24727E+01 0.19486E+02 0.84804E+00 + 1. -0.99432E+01 -0.11857E+02 0.85713E+00 + 1. 0.29110E+01 -0.13692E+02 0.86305E+00 + 1. -0.85051E+01 -0.16421E+02 0.87231E+00 + 1. 0.12330E+02 0.24014E+01 0.87905E+00 + 1. -0.78797E+00 -0.34643E+01 0.88183E+00 + 1. -0.15572E+02 -0.31422E+01 0.89276E+00 + 1. -0.14138E+02 0.88907E+01 0.89556E+00 + 1. 0.12109E+02 0.59059E+01 0.90206E+00 + 1. 0.17329E+02 0.97619E+01 0.91131E+00 + 1. -0.23017E+01 -0.14390E+02 0.91385E+00 + 1. -0.98075E+01 0.93410E+01 0.92630E+00 + 1. 0.56942E+01 -0.70238E+01 0.93288E+00 + 1. 0.43256E+01 -0.86887E+01 0.93642E+00 + 1. -0.11443E+02 -0.64201E+00 0.94258E+00 + 1. -0.56014E+01 0.34083E+01 0.94874E+00 + 1. 0.15753E+02 0.78257E+01 0.95518E+00 + 1. -0.11281E+02 0.16499E+02 0.96655E+00 + 1. -0.54511E+01 -0.19167E+02 0.96988E+00 + 1. 0.14935E+02 0.58566E+00 0.97460E+00 + 1. 0.11784E+02 0.13020E+02 0.98134E+00 + 1. 0.65673E+01 0.13147E+02 0.98825E+00 + 1. 0.56804E+01 -0.17762E+02 0.99900E+00 + 1. -0.17999E+02 0.13659E+00 0.10065E+01 + 1. -0.78856E+01 0.81557E+01 0.10088E+01 + 1. 0.95583E+01 -0.65313E+01 0.10147E+01 + 1. -0.25175E+01 0.11051E+02 0.10211E+01 + 1. 0.15930E+02 -0.11032E+02 0.10324E+01 + 1. -0.17718E+02 0.22984E+01 0.10383E+01 + 1. 0.46983E+00 -0.16496E+02 0.10409E+01 + 1. 0.50458E+01 -0.14813E+02 0.10469E+01 + 1. -0.64371E+01 -0.10822E+02 0.10540E+01 + 1. -0.54238E+01 -0.63352E+01 0.10631E+01 + 1. 0.69438E+00 -0.15534E+01 0.10710E+01 + 1. -0.14929E+02 -0.12558E+02 0.10792E+01 + 1. -0.12029E+02 0.15196E+01 0.10853E+01 + 1. 0.34185E+01 0.47143E+01 0.10900E+01 + 1. 0.14771E+02 0.11376E+02 0.10988E+01 + 1. 0.62356E+01 0.16805E+02 0.11009E+01 + 1. -0.15569E+02 0.12364E+02 0.11113E+01 + 1. 0.87100E+01 0.17163E+02 0.11165E+01 + 1. 0.24450E+01 -0.46926E+01 0.11262E+01 + 1. -0.31581E+00 0.18132E+02 0.11310E+01 + 1. 0.88008E+01 -0.89787E+01 0.11397E+01 + 1. 0.79135E+01 -0.13611E+02 0.11428E+01 + 1. 0.60332E+01 0.33627E+01 0.11525E+01 + 1. -0.38089E+01 -0.17881E+02 0.11595E+01 + 1. 0.49042E+01 -0.10614E+02 0.11624E+01 + 1. 0.12918E+02 -0.36282E+01 0.11676E+01 + 1. 0.26228E+01 0.16562E+01 0.11736E+01 + 1. 0.37839E+01 0.18748E+02 0.11836E+01 + 1. -0.16309E+02 -0.11938E+01 0.11882E+01 + 1. -0.49425E+01 0.10941E+02 0.11960E+01 + 1. 0.19805E+02 -0.26366E+01 0.12049E+01 + 1. -0.34991E+01 -0.68905E+01 0.12090E+01 + 1. 0.16159E+01 0.15915E+02 0.12181E+01 + 1. 0.71639E+01 -0.16149E+02 0.12221E+01 + 1. 0.13461E+02 0.14559E+02 0.12326E+01 + 1. 0.49150E+01 0.14292E+02 0.12358E+01 + 1. 0.17331E+02 -0.77288E+01 0.12429E+01 + 1. -0.11464E+02 0.56796E+01 0.12525E+01 + 1. 0.72258E+01 0.96775E+01 0.12554E+01 + 1. -0.57305E+01 0.15956E+02 0.12654E+01 + 1. 0.13142E+02 -0.11891E+02 0.12732E+01 + 1. 0.19154E+02 0.36278E+00 0.12783E+01 + 1. 0.99251E+01 0.22224E+01 0.12850E+01 + 1. -0.73325E+01 -0.83213E+01 0.12920E+01 + 1. 0.10015E+02 0.14660E+02 0.12959E+01 + 1. 0.13947E+02 -0.14338E+02 0.13037E+01 + 1. -0.93093E+01 0.16981E+02 0.13082E+01 + 1. 0.18377E+02 0.76569E+01 0.13149E+01 + 1. -0.10035E+01 -0.11205E+02 0.13263E+01 + 1. -0.37092E+01 0.22726E+01 0.13315E+01 + 1. 0.27230E+01 0.82708E+01 0.13399E+01 + 1. 0.64214E+01 0.71747E+01 0.13445E+01 + 1. -0.99934E+01 0.17796E+01 0.13495E+01 + 1. -0.14186E+02 -0.62746E+01 0.13574E+01 + 1. 0.20980E+01 -0.11830E+02 0.13626E+01 + 1. 0.10811E+02 0.11201E+02 0.13695E+01 + 1. -0.30741E+01 0.56367E+01 0.13734E+01 + 1. -0.12159E+02 -0.27735E+01 0.13858E+01 + 1. -0.28163E+01 0.13779E+02 0.13903E+01 + 1. 0.12134E+02 -0.69284E+01 0.13964E+01 + 1. 0.14227E+01 -0.82672E+01 0.14002E+01 + 1. 0.43870E+00 0.25745E+01 0.14111E+01 + 1. -0.15291E+02 0.62942E+01 0.14175E+01 + 1. 0.15135E+02 -0.24375E+01 0.14210E+01 + 1. 0.55007E+01 -0.22459E+01 0.14268E+01 + 1. 0.68673E+01 -0.53113E+01 0.14375E+01 + 1. 0.19285E+02 0.30074E+01 0.14430E+01 + 1. -0.16757E+02 -0.83185E+01 0.14527E+01 + 1. 0.91503E+01 -0.15505E+02 0.14546E+01 + 1. 0.15815E+02 0.24880E+01 0.14623E+01 + 1. -0.19501E+01 -0.82840E+01 0.14682E+01 + 1. -0.19047E+02 -0.18416E+01 0.14775E+01 + 1. -0.12054E+02 -0.12059E+02 0.14848E+01 + 1. 0.57592E+01 -0.12983E+02 0.14907E+01 + 1. -0.12987E+02 0.37027E+01 0.14936E+01 + 1. -0.11983E+02 0.86789E+01 0.15031E+01 + 1. -0.17574E+02 -0.51030E+01 0.15132E+01 + 1. -0.12726E+02 0.11681E+02 0.15169E+01 + 1. -0.41805E+01 -0.13748E+02 0.15211E+01 + 1. -0.90869E+01 0.14625E+02 0.15267E+01 + 1. -0.16551E+02 -0.11091E+02 0.15350E+01 + 1. -0.88997E+01 -0.46846E+00 0.15461E+01 + 1. -0.14852E+01 -0.16223E+02 0.15490E+01 + 1. 0.13469E+02 0.76462E+01 0.15574E+01 + 1. -0.55261E+01 -0.16406E+02 0.15645E+01 + 1. 0.99083E+01 -0.12043E+02 0.15680E+01 + 1. -0.67586E+01 0.62549E+01 0.15752E+01 + 1. -0.91701E+01 -0.36830E+01 0.15860E+01 + 1. 0.11841E+02 -0.60123E+00 0.15932E+01 + 1. -0.37880E+01 -0.10046E+02 0.15939E+01 + 1. -0.45807E+01 -0.14216E+00 0.16047E+01 + 1. 0.81308E+00 -0.14388E+02 0.16110E+01 + 1. -0.73735E+01 0.10761E+02 0.16192E+01 + 1. -0.10763E+02 -0.65571E+01 0.16228E+01 + 1. -0.19102E+02 0.56933E+01 0.16281E+01 + 1. 0.23160E+01 -0.16003E+02 0.16351E+01 + 1. -0.29761E+01 -0.48063E+01 0.16414E+01 + 1. -0.17747E+02 0.84244E+01 0.16521E+01 + 1. 0.14044E+02 0.51623E+01 0.16543E+01 + 1. -0.67271E+00 -0.65840E+01 0.16619E+01 + 1. -0.27556E+01 -0.19720E+02 0.16690E+01 + 1. 0.35141E+00 -0.18987E+02 0.16755E+01 + 1. -0.71019E+01 -0.13749E+02 0.16811E+01 + 1. -0.15064E+01 0.43280E+01 0.16894E+01 + 1. 0.11589E+02 -0.15148E+02 0.16980E+01 + 1. -0.10419E+02 0.11366E+02 0.17046E+01 + 1. 0.20803E+01 0.60973E+01 0.17093E+01 + 1. 0.10244E+02 0.74750E+01 0.17177E+01 + 1. 0.16191E+02 0.58225E+01 0.17257E+01 + 1. 0.14648E+02 -0.60433E+01 0.17288E+01 + 1. 0.12063E+02 0.94930E+01 0.17335E+01 + 1. -0.28373E+01 -0.12206E+02 0.17427E+01 + 1. -0.13534E+02 -0.10731E+02 0.17483E+01 + 1. -0.13701E+02 0.13663E+02 0.17559E+01 + 1. -0.50876E-01 0.13354E+02 0.17606E+01 + 1. -0.11385E+02 0.13918E+02 0.17710E+01 + 1. 0.95938E+01 0.42007E+01 0.17792E+01 + 1. 0.95956E+01 -0.46837E+01 0.17847E+01 + 1. 0.96835E+01 -0.41425E+00 0.17924E+01 + 1. 0.10601E+01 0.11475E+02 0.17957E+01 + 1. 0.82088E+01 0.11641E+02 0.18014E+01 + 1. 0.38578E+01 -0.26728E+00 0.18131E+01 + 1. 0.39566E+01 -0.18422E+02 0.18182E+01 + 1. -0.15971E+02 0.99680E+01 0.18233E+01 + 1. 0.17262E+02 -0.38195E-01 0.18283E+01 + 1. 0.10516E+02 -0.81615E+01 0.18398E+01 + 1. -0.99651E+01 0.37746E+01 0.18419E+01 + 1. -0.76116E+01 -0.20816E+01 0.18474E+01 + 1. -0.68471E+00 0.24914E+00 0.18563E+01 + 1. 0.58651E+01 0.11111E+02 0.18630E+01 + 1. -0.70755E+01 -0.45879E+01 0.18726E+01 + 1. -0.78266E+01 0.26593E+01 0.18754E+01 + 1. -0.58486E+01 0.13975E+02 0.18841E+01 + 1. 0.14762E+02 -0.94847E+01 0.18887E+01 + 1. 0.14626E+02 0.93362E+01 0.18980E+01 + 1. -0.10240E+02 -0.96876E+01 0.19055E+01 + 1. 0.73287E+01 0.51589E+01 0.19082E+01 + 1. -0.81457E+01 -0.11662E+02 0.19134E+01 + 1. -0.10723E+02 -0.14903E+02 0.19228E+01 + 1. -0.13279E+02 -0.82716E+01 0.19286E+01 + 1. -0.15518E+02 0.20516E+01 0.19386E+01 + 1. 0.45182E+00 0.19877E+02 0.19447E+01 + 1. 0.18141E+02 0.49964E+01 0.19506E+01 + 1. 0.41057E+01 -0.61912E+01 0.19597E+01 + 1. -0.64284E+00 0.81459E+01 0.19604E+01 + 1. 0.74624E+01 -0.73081E+01 0.19713E+01 + 1. 0.36834E+01 0.12119E+02 0.19753E+01 + 1. 0.84213E+01 -0.17775E+02 0.19826E+01 + 1. -0.17303E+02 -0.31720E+01 0.19870E+01 + 1. 0.61340E+00 -0.44335E+01 0.19989E+01 + 1. -0.13379E+02 0.64149E+01 0.20002E+01 + 1. 0.21608E+01 -0.28130E+01 0.20091E+01 + 1. 0.16741E+01 0.40584E+01 0.20198E+01 + 1. 0.76130E+01 -0.30041E+01 0.20206E+01 + 1. 0.45363E+01 0.94099E+01 0.20279E+01 + 1. 0.79086E+01 0.23602E+01 0.20396E+01 + 1. -0.10022E+02 -0.17278E+02 0.20415E+01 + 1. -0.15615E+02 0.41148E+01 0.20477E+01 + 1. 0.62576E+01 0.74038E-01 0.20568E+01 + 1. 0.17768E+02 -0.28617E+01 0.20656E+01 + 1. -0.19792E+02 0.16767E+01 0.20699E+01 + 1. -0.40597E+01 0.18756E+02 0.20743E+01 + 1. 0.11713E+02 0.16013E+02 0.20841E+01 + 1. 0.62725E+01 -0.91195E+01 0.20898E+01 + 1. 0.13013E+02 0.11660E+02 0.20935E+01 + 1. -0.87368E+00 -0.13196E+02 0.21036E+01 + 1. 0.31165E+01 0.14186E+02 0.21126E+01 + 1. 0.16579E+02 -0.51297E+01 0.21141E+01 + 1. -0.64979E+01 0.17788E+02 0.21213E+01 + 1. -0.34746E+01 0.91649E+01 0.21315E+01 + 1. -0.13866E+02 -0.36620E+01 0.21335E+01 + 1. -0.40996E+00 0.15515E+02 0.21412E+01 + 1. 0.24411E+01 0.17578E+02 0.21515E+01 + 1. -0.61170E+01 0.80648E+01 0.21547E+01 + 1. 0.14862E+02 0.13281E+02 0.21621E+01 + 1. 0.11065E+02 -0.10428E+02 0.21696E+01 + 1. -0.43434E+01 -0.22662E+01 0.21748E+01 + 1. -0.10932E+01 -0.17424E+01 0.21839E+01 + 1. -0.15141E+01 0.22118E+01 0.21916E+01 + 1. 0.98961E-01 -0.95634E+01 0.21949E+01 + 1. 0.17051E+02 -0.94867E+01 0.22034E+01 + 1. 0.48711E+01 0.60535E+01 0.22128E+01 + 1. -0.89493E+01 0.59041E+01 0.22186E+01 + 1. 0.14896E+02 -0.12457E+02 0.22259E+01 + 1. 0.13426E+02 0.13655E+01 0.22310E+01 + 1. -0.11064E+02 -0.43774E+01 0.22391E+01 + 1. 0.12188E+02 0.40600E+01 0.22444E+01 + 1. 0.11533E+02 -0.25535E+01 0.22476E+01 + 1. -0.68599E+01 -0.14743E+00 0.22539E+01 + 1. 0.54741E+01 0.18747E+02 0.22623E+01 + 1. -0.19883E+01 0.17970E+02 0.22731E+01 + 1. -0.13040E+02 0.23678E+00 0.22758E+01 + 1. -0.40738E+01 0.15378E+02 0.22845E+01 + 1. -0.86138E+01 -0.60501E+01 0.22878E+01 + 1. 0.78804E+01 0.15689E+02 0.22977E+01 + 1. 0.14115E+00 0.61610E+01 0.23007E+01 + 1. 0.16260E+02 0.10739E+02 0.23092E+01 + 1. 0.48490E+01 0.18184E+01 0.23151E+01 + 1. -0.65921E+01 -0.18126E+02 0.23213E+01 + 1. -0.41149E+01 0.12483E+02 0.23288E+01 + 1. -0.16083E+02 -0.65537E+01 0.23397E+01 + 1. 0.77332E+01 -0.10577E+02 0.23431E+01 + 1. -0.44999E+01 0.45343E+01 0.23499E+01 + 1. 0.12844E+01 -0.64655E+01 0.23588E+01 + 1. -0.12675E+01 0.11873E+02 0.23655E+01 + 1. -0.18389E+01 -0.18041E+02 0.23714E+01 + 1. 0.10845E+01 0.92539E+01 0.23748E+01 + 1. 0.74691E+01 0.18367E+02 0.23857E+01 + 1. 0.39308E+01 -0.11917E+02 0.23913E+01 + 1. -0.15241E+02 0.80387E+01 0.23955E+01 + 1. 0.50544E+01 -0.16291E+02 0.24003E+01 + 1. -0.43407E+01 0.70176E+01 0.24107E+01 + 1. -0.10434E+02 -0.18153E+01 0.24145E+01 + 1. 0.11349E+02 0.12561E+01 0.24214E+01 + 1. -0.10064E+02 0.78412E+01 0.24296E+01 + 1. -0.18592E+02 -0.66910E+01 0.24375E+01 + 1. -0.55864E+01 -0.78730E+01 0.24416E+01 + 1. -0.57615E+01 0.20131E+01 0.24482E+01 + 1. -0.17875E+02 0.38405E+01 0.24580E+01 + 1. 0.84474E+01 0.86212E+01 0.24600E+01 + 1. 0.11186E+02 -0.13335E+02 0.24685E+01 + 1. -0.55701E+01 -0.12473E+02 0.24786E+01 + 1. 0.13016E+02 -0.86189E+01 0.24805E+01 + 1. 0.19542E+01 0.18663E+00 0.24903E+01 + 1. -0.48594E+01 -0.47839E+01 0.24950E+01 + 1. 0.31858E+01 -0.81132E+01 0.25048E+01 + 1. 0.14481E+02 -0.84746E+00 0.25132E+01 + 1. 0.65496E+01 -0.18776E+02 0.25169E+01 + 1. 0.18950E+02 -0.12457E+01 0.25218E+01 + 1. -0.13383E+02 0.10000E+02 0.25303E+01 + 1. 0.95009E+01 0.13040E+02 0.25362E+01 + 1. -0.37418E+01 -0.16274E+02 0.25429E+01 + 1. -0.72772E+01 0.15518E+02 0.25482E+01 + 1. 0.53940E+01 -0.41554E+01 0.25545E+01 + 1. 0.17853E+02 0.19790E+01 0.25620E+01 + 1. -0.12593E+02 0.15500E+02 0.25690E+01 + 1. 0.11761E+02 -0.52701E+01 0.25755E+01 + 1. -0.13327E+02 -0.13437E+02 0.25835E+01 + 1. -0.19452E+02 -0.43408E+01 0.25932E+01 + 1. -0.65222E+01 0.41486E+01 0.25954E+01 + 1. -0.12752E+02 -0.55963E+01 0.26010E+01 + 1. 0.48868E+01 0.16080E+02 0.26092E+01 + 1. 0.36768E+01 -0.14520E+02 0.26191E+01 + 1. 0.91161E+01 0.60675E+01 0.26247E+01 + 1. -0.94499E+01 -0.13474E+02 0.26279E+01 + 1. -0.11019E+02 0.43284E+00 0.26394E+01 + 1. -0.76934E+01 0.13078E+02 0.26423E+01 + 1. -0.14997E+02 -0.20535E+01 0.26506E+01 + 1. 0.19127E+02 -0.46016E+01 0.26534E+01 + 1. 0.48259E+01 0.39753E+01 0.26601E+01 + 1. -0.55020E+01 -0.99609E+01 0.26691E+01 + 1. -0.17068E+02 0.58466E+01 0.26753E+01 + 1. 0.15359E+02 0.40272E+01 0.26854E+01 + 1. 0.16768E+02 0.75197E+01 0.26925E+01 + 1. -0.15449E+02 -0.92488E+01 0.26976E+01 + 1. 0.12123E+02 0.14075E+02 0.27036E+01 + 1. -0.78629E+01 -0.15718E+02 0.27088E+01 + 1. -0.91617E+01 0.99868E+01 0.27164E+01 + 1. -0.22572E+01 0.69578E+01 0.27244E+01 + 1. -0.15600E+02 -0.11104E+00 0.27297E+01 + 1. 0.20344E+01 -0.10319E+02 0.27347E+01 + 1. 0.20796E+01 -0.18884E+02 0.27410E+01 + 1. -0.17455E+02 0.12836E+01 0.27478E+01 + 1. -0.21358E+01 -0.98918E+01 0.27536E+01 + 1. 0.77904E+01 -0.10075E+01 0.27642E+01 + 1. -0.12964E+01 -0.45846E+01 0.27708E+01 + 1. 0.42583E+00 0.17228E+02 0.27766E+01 + 1. 0.14968E+02 -0.39824E+01 0.27842E+01 + 1. 0.15987E+02 -0.74988E+01 0.27900E+01 + 1. 0.18544E+02 -0.70933E+01 0.27985E+01 + 1. -0.79387E+01 -0.97576E+01 0.28051E+01 + 1. -0.53591E+01 -0.14809E+02 0.28105E+01 + 1. 0.62050E+01 0.14081E+02 0.28188E+01 + 1. -0.46828E+01 -0.19225E+02 0.28258E+01 + 1. -0.28433E+01 0.57114E+00 0.28305E+01 + 1. -0.88330E+00 0.99367E+01 0.28342E+01 + 1. -0.10612E+02 0.15422E+02 0.28439E+01 + 1. 0.20058E+01 -0.13316E+02 0.28467E+01 + 1. 0.11445E+02 0.59065E+01 0.28546E+01 + 1. -0.10640E+02 -0.11592E+02 0.28608E+01 + 1. 0.71881E+01 -0.14586E+02 0.28694E+01 + 1. -0.18809E+02 -0.33211E+00 0.28767E+01 + 1. -0.15019E+02 0.11504E+02 0.28857E+01 + 1. 0.97087E+01 0.10453E+02 0.28926E+01 + 1. 0.82465E+01 -0.12651E+02 0.28951E+01 + 1. -0.15697E+02 -0.46430E+01 0.29006E+01 + 1. 0.99166E+01 -0.16735E+02 0.29094E+01 + 1. 0.14821E+02 0.70569E+01 0.29161E+01 + 1. -0.21396E+01 0.19875E+02 0.29260E+01 + 1. 0.62990E+01 0.90152E+01 0.29321E+01 + 1. 0.52390E+00 -0.17279E+02 0.29369E+01 + 1. 0.28061E+00 -0.11455E+02 0.29439E+01 + 1. 0.13198E+02 -0.10737E+02 0.29480E+01 + 1. -0.18494E+01 -0.14729E+02 0.29568E+01 + 1. -0.60073E+01 0.11908E+02 0.29665E+01 + 1. 0.15733E+02 0.97219E+00 0.29675E+01 + 1. -0.15228E+02 -0.11621E+02 0.29779E+01 + 1. -0.11354E+02 0.24404E+01 0.29850E+01 + 1. 0.81726E+01 -0.56397E+01 0.29873E+01 + 1. 0.95693E+01 -0.20185E+01 0.29938E+01 + 1. -0.19876E+01 0.14623E+02 0.30034E+01 + 1. 0.27537E+01 0.19773E+02 0.30078E+01 + 1. -0.11882E+02 0.45864E+01 0.30166E+01 + 1. 0.28131E+01 0.10155E+02 0.30265E+01 + 1. -0.12530E+02 -0.15239E+02 0.30332E+01 + 1. 0.10098E+02 -0.65581E+01 0.30386E+01 + 1. -0.90779E+01 0.11031E+01 0.30418E+01 + 1. -0.32689E+01 -0.79323E+01 0.30490E+01 + 1. 0.33186E+01 0.70269E+01 0.30573E+01 + 1. -0.11569E+02 -0.80732E+01 0.30621E+01 + 1. 0.60583E+01 -0.63004E+01 0.30710E+01 + 1. -0.62785E+01 -0.29723E+01 0.30755E+01 + 1. 0.21201E+01 0.23203E+01 0.30840E+01 + 1. 0.26479E+01 -0.50621E+01 0.30920E+01 + 1. 0.13124E+02 -0.13727E+02 0.30960E+01 + 1. -0.80884E+01 0.78197E+01 0.31011E+01 + 1. 0.13312E+01 0.14733E+02 0.31070E+01 + 1. -0.13106E+02 0.80749E+01 0.31149E+01 + 1. 0.43977E+01 -0.10069E+02 0.31219E+01 + 1. 0.13356E+02 -0.24245E+01 0.31330E+01 + 1. 0.19854E+02 0.11587E+01 0.31337E+01 + 1. 0.15841E+02 -0.10885E+02 0.31444E+01 + 1. -0.83532E+01 0.17922E+02 0.31475E+01 + 1. 0.13449E+02 -0.67740E+01 0.31564E+01 + 1. 0.10144E+02 0.16785E+02 0.31627E+01 + 1. 0.93468E+01 0.13062E+01 0.31723E+01 + 1. 0.86329E+01 -0.86652E+01 0.31765E+01 + 1. -0.85711E+01 -0.78868E+01 0.31820E+01 + 1. 0.50200E+00 -0.10723E+01 0.31893E+01 + 1. -0.13357E+02 0.25404E+01 0.31999E+01 + 1. -0.12382E+02 -0.14741E+01 0.32064E+01 + 1. -0.51129E+01 0.97384E+01 0.32096E+01 + 1. -0.96108E+01 0.12566E+02 0.32196E+01 + 1. 0.21073E+01 0.12568E+02 0.32235E+01 + 1. -0.26028E+01 -0.26405E+01 0.32274E+01 + 1. -0.22651E+00 0.43610E+01 0.32362E+01 + 1. 0.93359E+01 -0.14602E+02 0.32405E+01 + 1. 0.50355E+01 -0.12255E+01 0.32488E+01 + 1. -0.17168E+02 -0.10163E+02 0.32544E+01 + 1. 0.16435E+02 -0.12161E+01 0.32649E+01 + 1. 0.11286E+02 0.11891E+02 0.32689E+01 + 1. -0.86888E+00 -0.19865E+02 0.32787E+01 + 1. -0.11804E+02 0.12386E+02 0.32816E+01 + 1. -0.84513E+01 -0.18010E+02 0.32871E+01 + 1. 0.18722E+02 0.67674E+01 0.32952E+01 + 1. -0.66976E+01 -0.61500E+01 0.33031E+01 + 1. -0.44618E+01 0.17063E+02 0.33103E+01 + 1. -0.14171E+02 -0.68801E+01 0.33195E+01 + 1. 0.94226E+01 0.14919E+02 0.33221E+01 + 1. -0.11480E+02 0.99443E+01 0.33306E+01 + 1. -0.34928E+01 0.24126E+01 0.33398E+01 + 1. 0.19069E+00 -0.15341E+02 0.33433E+01 + 1. 0.11446E+02 0.84671E+01 0.33469E+01 + 1. 0.68542E+01 0.67636E+01 0.33572E+01 + 1. -0.71807E-01 -0.77101E+01 0.33610E+01 + 1. 0.10614E+02 0.30148E+01 0.33719E+01 + 1. -0.32618E+01 -0.58775E+01 0.33775E+01 + 1. -0.38065E+01 -0.10974E+02 0.33828E+01 + 1. -0.85089E+01 -0.30943E+01 0.33873E+01 + 1. 0.54609E+01 -0.13576E+02 0.33964E+01 + 1. -0.18621E+02 0.69901E+01 0.34041E+01 + 1. 0.35582E+01 -0.17216E+02 0.34110E+01 + 1. -0.12092E+02 -0.10155E+02 0.34137E+01 + 1. 0.79815E+01 0.39831E+01 0.34257E+01 + 1. 0.72104E+01 0.10749E+02 0.34307E+01 + 1. 0.64899E+01 -0.11772E+02 0.34354E+01 + 1. -0.16964E+02 -0.80348E+01 0.34422E+01 + 1. 0.35876E+01 -0.28444E+01 0.34523E+01 + 1. 0.49800E-01 0.13609E+01 0.34560E+01 + 1. -0.16802E+02 0.89484E+01 0.34616E+01 + 1. 0.14706E+02 0.11669E+02 0.34699E+01 + 1. 0.19592E+02 0.38912E+01 0.34780E+01 + 1. -0.19786E+02 -0.19731E+01 0.34826E+01 + 1. -0.14756E+02 0.55716E+01 0.34882E+01 + 1. -0.87913E+01 -0.90671E+00 0.34998E+01 + 1. -0.97784E+01 -0.15831E+02 0.35060E+01 + 1. -0.88465E+01 0.37619E+01 0.35103E+01 + 1. 0.46353E+01 0.11183E+02 0.35133E+01 + 1. 0.71258E+01 -0.16597E+02 0.35233E+01 + 1. -0.27136E+01 0.44191E+01 0.35292E+01 + 1. -0.17576E+02 -0.52954E+01 0.35363E+01 + 1. 0.15992E+02 0.91820E+01 0.35415E+01 + 1. -0.34370E+01 -0.12944E+02 0.35511E+01 + 1. 0.96474E+01 -0.10917E+02 0.35570E+01 + 1. 0.11201E+02 -0.97363E+00 0.35660E+01 + 1. 0.69128E+01 0.14835E+01 0.35693E+01 + 1. 0.13648E+02 0.85810E+01 0.35760E+01 + 1. -0.58314E+01 -0.16597E+02 0.35814E+01 + 1. -0.10112E+02 -0.64320E+01 0.35901E+01 + 1. -0.77932E+01 -0.12691E+02 0.35969E+01 + 1. -0.16346E+02 0.29773E+01 0.36009E+01 + 1. 0.90604E+01 -0.38896E+01 0.36118E+01 + 1. -0.66577E+01 0.62703E+01 0.36147E+01 + 1. -0.76907E+01 0.11004E+02 0.36226E+01 + 1. -0.17286E+02 -0.17338E+01 0.36286E+01 + 1. 0.39318E+00 -0.31110E+01 0.36366E+01 + 1. -0.10899E+02 0.64246E+01 0.36430E+01 + 1. 0.11207E+02 -0.88555E+01 0.36473E+01 + 1. -0.45085E+01 -0.72715E+00 0.36568E+01 + 1. -0.24816E+01 0.16574E+02 0.36655E+01 + 1. -0.19425E+02 0.43655E+01 0.36673E+01 + 1. 0.17137E+02 0.49085E+01 0.36794E+01 + 1. 0.51243E+01 -0.81151E+01 0.36838E+01 + 1. 0.35361E+01 0.99607E+00 0.36893E+01 + 1. -0.28429E+01 -0.19261E+02 0.36967E+01 + 1. 0.13311E+02 0.48852E+01 0.37004E+01 + 1. 0.28749E+01 0.16338E+02 0.37083E+01 + 1. 0.11289E+01 0.76456E+01 0.37133E+01 + 1. -0.14789E+02 0.13330E+02 0.37260E+01 + 1. -0.21336E+00 0.18968E+02 0.37332E+01 + 1. 0.21164E+01 -0.15845E+02 0.37391E+01 + 1. 0.77844E+01 0.12876E+02 0.37401E+01 + 1. 0.29854E+01 0.46678E+01 0.37475E+01 + 1. -0.42133E+01 0.13897E+02 0.37535E+01 + 1. -0.25057E+01 0.10963E+02 0.37640E+01 + 1. -0.11639E+02 -0.13550E+02 0.37716E+01 + 1. 0.11321E+02 -0.14896E+02 0.37758E+01 + 1. 0.43943E+01 -0.19064E+02 0.37844E+01 + 1. -0.18831E+02 0.23718E+01 0.37930E+01 + 1. 0.39867E+00 0.11520E+02 0.37984E+01 + 1. 0.17230E+02 -0.38277E+01 0.38012E+01 + 1. 0.13071E+02 0.26012E+01 0.38121E+01 + 1. -0.49318E+01 0.19286E+02 0.38165E+01 + 1. -0.12225E+02 -0.38140E+01 0.38202E+01 + 1. -0.74097E+01 0.20249E+01 0.38309E+01 + 1. 0.12945E+02 0.10559E+02 0.38360E+01 + 1. 0.57397E+01 0.17474E+02 0.38440E+01 + 1. 0.19439E+02 -0.29056E+01 0.38501E+01 + 1. 0.50140E+01 0.77706E+01 0.38569E+01 + 1. -0.53567E+00 0.13349E+02 0.38603E+01 + 1. -0.14884E+01 -0.51965E+00 0.38706E+01 + 1. -0.12122E+01 -0.16833E+02 0.38779E+01 + 1. -0.22901E+01 0.89006E+01 0.38850E+01 + 1. -0.15360E+01 -0.12153E+02 0.38901E+01 + 1. 0.64707E+01 -0.28752E+01 0.38953E+01 + 1. 0.17847E+02 0.44621E+00 0.39056E+01 + 1. 0.12970E+02 0.70104E-01 0.39107E+01 + 1. 0.39819E+01 0.14640E+02 0.39180E+01 + 1. 0.11434E+02 -0.11780E+02 0.39214E+01 + 1. 0.97207E+01 0.75886E+01 0.39272E+01 + 1. 0.38055E+01 0.18332E+02 0.39342E+01 + 1. 0.82844E+01 0.17022E+02 0.39402E+01 + 1. -0.90483E+01 0.14625E+02 0.39509E+01 + 1. 0.14306E+00 -0.53330E+01 0.39557E+01 + 1. 0.13892E+02 0.14149E+02 0.39629E+01 + 1. -0.13895E+02 -0.90039E+01 0.39714E+01 + 1. -0.68171E+01 -0.85069E+01 0.39746E+01 + 1. 0.17920E+02 0.86509E+01 0.39853E+01 + 1. -0.14798E+02 0.93057E+01 0.39876E+01 + 1. -0.14922E+02 0.14292E+01 0.39963E+01 + 1. 0.17451E+02 -0.85469E+01 0.40037E+01 + 1. 0.16124E+02 -0.56488E+01 0.40085E+01 + 1. 0.15449E+02 -0.90764E+01 0.40199E+01 + 1. 0.17509E+01 0.18151E+02 0.40225E+01 + 1. 0.65252E+01 -0.98550E+01 0.40295E+01 + 1. -0.12910E+02 -0.11987E+02 0.40389E+01 + 1. 0.13256E+02 -0.48521E+01 0.40430E+01 + 1. 0.10083E+02 0.49620E+01 0.40505E+01 + 1. -0.10077E+02 -0.95996E+01 0.40573E+01 + 1. -0.63243E+01 0.16847E+02 0.40620E+01 + 1. 0.27630E+01 -0.10674E+01 0.40700E+01 + 1. -0.10253E+02 -0.43920E+01 0.40768E+01 + 1. -0.64823E+01 0.85027E+01 0.40826E+01 + 1. 0.18891E+01 -0.87425E+01 0.40868E+01 + 1. 0.91982E-01 -0.13421E+02 0.40993E+01 + 1. 0.12141E+02 0.15643E+02 0.41014E+01 + 1. 0.35756E+01 -0.68182E+01 0.41077E+01 + 1. 0.14123E+02 -0.12321E+02 0.41136E+01 + 1. 0.30508E+01 -0.11417E+02 0.41216E+01 + 1. -0.68604E+01 -0.14532E+02 0.41317E+01 + 1. -0.66218E+00 0.65206E+01 0.41365E+01 + 1. 0.53397E+01 0.26881E+01 0.41455E+01 + 1. -0.37458E+01 -0.14993E+02 0.41527E+01 + 1. -0.35909E+01 0.63568E+01 0.41542E+01 + 1. -0.12421E+02 0.14238E+02 0.41621E+01 + 1. -0.39437E+01 -0.41340E+01 0.41676E+01 + 1. 0.16553E+02 0.25238E+01 0.41749E+01 + 1. 0.57465E+01 0.51689E+01 0.41831E+01 + 1. -0.64921E+01 0.13565E+02 0.41925E+01 + 1. -0.13438E+02 0.11619E+02 0.41970E+01 + 1. -0.16437E+02 0.10933E+02 0.42061E+01 + 1. 0.49349E+01 -0.15397E+02 0.42078E+01 + 1. 0.44649E+01 -0.49314E+01 0.42169E+01 + 1. 0.10827E+02 -0.31402E+01 0.42237E+01 + 1. -0.14712E+02 -0.13533E+02 0.42316E+01 + 1. -0.14639E+01 0.24646E+01 0.42375E+01 + 1. -0.14106E+02 -0.29044E+01 0.42406E+01 + 1. -0.65360E+01 -0.19806E+00 0.42530E+01 + 1. -0.13388E+02 0.15814E+00 0.42552E+01 + 1. -0.87562E+01 0.60112E+01 0.42649E+01 + 1. -0.18512E+00 0.15765E+02 0.42685E+01 + 1. -0.56736E+01 0.29157E+01 0.42751E+01 + 1. 0.74879E+01 -0.18476E+02 0.42820E+01 + 1. 0.15250E+02 0.52699E+01 0.42897E+01 + 1. -0.64193E+00 -0.97361E+01 0.42992E+01 + 1. 0.18199E+02 -0.56508E+01 0.43031E+01 + 1. 0.19905E+02 -0.48703E+00 0.43092E+01 + 1. -0.67716E+01 -0.10864E+02 0.43162E+01 + 1. -0.16308E+02 0.72106E+01 0.43214E+01 + 1. 0.69592E+01 0.15306E+02 0.43295E+01 + 1. -0.65060E+01 -0.18355E+02 0.43354E+01 + 1. -0.18351E+02 -0.34904E+01 0.43428E+01 + 1. -0.10078E+02 0.17219E+02 0.43469E+01 + 1. -0.12254E+02 -0.66496E+01 0.43548E+01 + 1. -0.49346E+01 -0.65079E+01 0.43636E+01 + 1. -0.39012E+01 -0.17601E+02 0.43679E+01 + 1. 0.10867E+02 0.13574E+02 0.43748E+01 + 1. -0.25167E+01 0.18501E+02 0.43810E+01 + 1. -0.96711E+01 0.80350E+01 0.43869E+01 + 1. -0.73540E+01 -0.44324E+01 0.43951E+01 + 1. -0.52522E+01 0.48770E+01 0.44020E+01 + 1. -0.89145E+01 -0.11231E+02 0.44082E+01 + 1. 0.91814E+01 -0.35350E+00 0.44190E+01 + 1. 0.13369E+02 -0.91272E+01 0.44251E+01 + 1. 0.75807E+01 -0.71277E+01 0.44283E+01 + 1. 0.40658E+00 -0.18733E+02 0.44380E+01 + 1. -0.42280E+01 -0.90147E+01 0.44430E+01 + 1. 0.14577E+01 0.58016E+01 0.44503E+01 + 1. 0.11900E+02 -0.63470E+01 0.44551E+01 + 1. -0.13422E+02 0.42842E+01 0.44636E+01 + 1. -0.17859E+01 -0.69751E+01 0.44682E+01 + 1. -0.10554E+02 -0.22500E+01 0.44746E+01 + 1. 0.31863E+01 0.85749E+01 0.44834E+01 + 1. 0.66583E+01 -0.50259E+01 0.44925E+01 + 1. 0.95818E+01 -0.12996E+02 0.44957E+01 + 1. -0.16562E+02 0.48676E+01 0.45052E+01 + 1. 0.76852E+01 0.88567E+01 0.45070E+01 + 1. -0.45574E+01 0.11863E+02 0.45134E+01 + 1. -0.14301E+02 -0.49983E+01 0.45225E+01 + 1. 0.31650E+01 -0.13543E+02 0.45318E+01 + 1. -0.18718E+02 -0.67564E+01 0.45344E+01 + 1. 0.68686E+01 -0.70480E+00 0.45447E+01 + 1. -0.98466E+01 0.10418E+02 0.45521E+01 + 1. 0.55583E+01 0.12957E+02 0.45557E+01 + 1. 0.14519E+02 -0.13550E+01 0.45602E+01 + 1. -0.12926E+02 0.66142E+01 0.45703E+01 + 1. 0.14571E+02 0.12812E+01 0.45750E+01 + 1. 0.21375E+01 -0.37426E+01 0.45820E+01 + 1. -0.11254E+02 -0.56813E-01 0.45894E+01 + 1. 0.12101E+02 0.69907E+01 0.45941E+01 + 1. -0.92368E+01 -0.14136E+02 0.46043E+01 + 1. 0.88470E+01 -0.16242E+02 0.46121E+01 + 1. -0.98487E+01 0.22918E+01 0.46173E+01 + 1. -0.15491E+02 -0.10458E+02 0.46208E+01 + 1. -0.68918E+01 0.18726E+02 0.46321E+01 + 1. -0.16194E+02 -0.66075E+01 0.46339E+01 + 1. -0.10508E+02 0.42645E+01 0.46437E+01 + 1. 0.16731E+02 0.71084E+01 0.46533E+01 + 1. -0.17902E+02 0.43332E+00 0.46584E+01 + 1. -0.15270E+02 -0.91046E+00 0.46629E+01 + 1. 0.90963E+01 0.27549E+01 0.46700E+01 + 1. 0.11216E+02 0.14641E+01 0.46751E+01 + 1. -0.52401E+01 -0.12732E+02 0.46864E+01 + 1. 0.14047E+01 0.95485E+01 0.46928E+01 + 1. 0.23446E+01 -0.18180E+02 0.46983E+01 + 1. 0.51573E+01 0.96497E+01 0.47058E+01 + 1. 0.18974E+02 0.24043E+01 0.47075E+01 + 1. 0.88290E+01 0.10655E+02 0.47166E+01 + 1. 0.10050E+02 -0.52644E+01 0.47226E+01 + 1. -0.19664E+01 -0.44296E+01 0.47291E+01 + 1. 0.72784E+01 -0.13275E+02 0.47336E+01 + 1. 0.80307E+01 0.56025E+01 0.47412E+01 + 1. 0.13358E+02 -0.14864E+02 0.47521E+01 + 1. 0.54604E+01 -0.17296E+02 0.47534E+01 + 1. -0.80569E+01 -0.16588E+02 0.47644E+01 + 1. -0.80696E+01 -0.64154E+01 0.47671E+01 + 1. -0.16028E+02 -0.30428E+01 0.47796E+01 + 1. -0.34767E+01 0.68691E+00 0.47819E+01 + 1. -0.75791E+01 -0.19847E+01 0.47901E+01 + 1. 0.18473E+01 0.82793E+00 0.47943E+01 + 1. 0.96860E+00 0.27866E+01 0.48024E+01 + 1. 0.30673E+01 0.11547E+02 0.48128E+01 + 1. -0.26630E+01 0.13105E+02 0.48181E+01 + 1. 0.13327E+02 0.12265E+02 0.48265E+01 + 1. 0.14971E+02 -0.34545E+01 0.48274E+01 + 1. 0.49546E+01 0.13882E+00 0.48390E+01 + 1. 0.10765E+02 0.10051E+02 0.48442E+01 + 1. -0.47496E+01 0.78372E+01 0.48468E+01 + 1. -0.10797E+02 0.13289E+02 0.48591E+01 + 1. 0.84003E+01 -0.98775E+01 0.48611E+01 + 1. 0.14329E+02 -0.74192E+01 0.48722E+01 + 1. 0.18741E+02 0.54297E+01 0.48789E+01 + 1. -0.54971E+01 -0.24861E+01 0.48808E+01 + 1. -0.11607E+02 0.84282E+01 0.48879E+01 + 1. 0.69249E+01 0.18751E+02 0.48980E+01 + 1. 0.11653E+01 0.13139E+02 0.49033E+01 + 1. -0.53689E+01 0.15161E+02 0.49111E+01 + 1. 0.13892E+01 -0.65668E+01 0.49185E+01 + 1. -0.86002E+00 0.10424E+02 0.49222E+01 + 1. -0.11816E+02 -0.16127E+02 0.49305E+01 + 1. -0.61556E+01 0.10640E+02 0.49334E+01 + 1. -0.11975E+02 0.26214E+01 0.49462E+01 + 1. 0.17033E+02 0.10378E+02 0.49522E+01 + 1. 0.10331E+02 0.15859E+02 0.49590E+01 + 1. -0.87979E+01 0.50541E+00 0.49662E+01 + 1. 0.16000E+02 -0.11724E+02 0.49696E+01 + 1. 0.14860E+02 0.33535E+01 0.49781E+01 + 1. -0.86587E+01 0.12919E+02 0.49816E+01 + 1. -0.10678E+02 0.15398E+02 0.49925E+01 + 1. 0.12040E+01 -0.11413E+02 0.49958E+01 + 1. 0.17532E+02 -0.14838E+01 0.50037E+01 + 1. -0.35752E+01 -0.18943E+01 0.50131E+01 + 1. -0.74140E+01 0.37066E+01 0.50136E+01 + 1. 0.12768E+02 -0.28607E+01 0.50233E+01 + 1. 0.11830E+02 0.46584E+01 0.50319E+01 + 1. -0.16495E+01 -0.14505E+02 0.50397E+01 + 1. 0.14553E+02 0.71379E+01 0.50425E+01 + 1. -0.14204E+01 0.45689E+01 0.50492E+01 + 1. 0.48907E+01 -0.11295E+02 0.50592E+01 + 1. -0.17917E+02 0.84880E+01 0.50648E+01 + 1. -0.25493E+01 -0.10470E+02 0.50699E+01 + 1. -0.39871E+01 0.98479E+01 0.50745E+01 + 1. -0.11258E+02 -0.82623E+01 0.50853E+01 + 1. -0.17050E+02 -0.92153E+01 0.50923E+01 + 1. -0.10877E+02 -0.11231E+02 0.50965E+01 + 1. -0.33734E+01 0.15289E+02 0.51018E+01 + 1. 0.37991E+01 -0.92525E+01 0.51071E+01 + 1. -0.18984E+02 0.60159E+01 0.51183E+01 + 1. 0.19252E+01 0.19869E+02 0.51245E+01 + 1. 0.71303E+01 0.28287E+01 0.51268E+01 + 1. 0.37260E+01 0.63706E+01 0.51356E+01 + 1. 0.44518E+01 -0.21820E+01 0.51420E+01 + 1. 0.68429E+01 -0.15282E+02 0.51533E+01 + 1. -0.89798E+00 -0.26070E+01 0.51598E+01 + 1. -0.74596E+01 0.15566E+02 0.51630E+01 + 1. 0.20005E+01 0.15211E+02 0.51711E+01 + 1. -0.16813E+01 -0.18442E+02 0.51784E+01 + 1. -0.61505E+00 0.17496E+02 0.51830E+01 + 1. 0.16297E+02 0.26930E+00 0.51922E+01 + 1. -0.49109E+01 0.17780E+02 0.51997E+01 + 1. 0.52761E+01 -0.65452E+01 0.52019E+01 + 1. 0.12435E+02 0.88986E+01 0.52079E+01 + 1. -0.43647E+01 -0.19379E+02 0.52197E+01 + 1. 0.29259E+00 -0.16582E+02 0.52244E+01 + 1. 0.90902E+00 -0.90663E+00 0.52324E+01 + 1. -0.82495E+01 -0.91099E+01 0.52355E+01 + 1. 0.94675E+01 -0.78973E+01 0.52454E+01 + 1. -0.19145E+02 -0.12594E+01 0.52493E+01 + 1. 0.42712E+01 0.41979E+01 0.52540E+01 + 1. 0.10942E+02 -0.10162E+02 0.52630E+01 + 1. -0.31606E+01 0.28700E+01 0.52727E+01 + 1. 0.11834E+02 -0.13534E+02 0.52735E+01 + 1. 0.11229E+02 -0.16320E+02 0.52847E+01 + 1. 0.89253E+01 0.13573E+02 0.52929E+01 + 1. -0.15269E+02 0.31127E+01 0.52950E+01 + 1. -0.13336E+02 -0.14521E+02 0.53038E+01 + 1. 0.15028E+02 0.10147E+02 0.53077E+01 + 1. 0.50252E+01 0.16319E+02 0.53180E+01 + 1. 0.80075E+01 -0.35334E+01 0.53223E+01 + 1. 0.63451E+01 0.74362E+01 0.53290E+01 + 1. 0.33442E+01 -0.16246E+02 0.53357E+01 + 1. -0.69828E+00 0.93557E+00 0.53435E+01 + 1. 0.16801E+02 -0.70368E+01 0.53487E+01 + 1. -0.11767E+02 0.11028E+02 0.53564E+01 + 1. -0.12502E+02 -0.21116E+01 0.53617E+01 + 1. -0.14203E+02 -0.75803E+01 0.53713E+01 + 1. -0.73656E+01 0.71645E+01 0.53785E+01 + 1. -0.18225E+02 0.39502E+01 0.53822E+01 + 1. 0.14529E+01 -0.14514E+02 0.53922E+01 + 1. -0.17822E+00 0.85486E+01 0.54000E+01 + 1. -0.23054E+01 0.73483E+01 0.54036E+01 + 1. -0.13088E+02 -0.10236E+02 0.54123E+01 + 1. 0.53070E+01 -0.13412E+02 0.54142E+01 + 1. -0.78381E+01 0.92708E+01 0.54239E+01 + 1. 0.13485E+02 -0.10851E+02 0.54324E+01 + 1. -0.13953E+02 0.81907E+01 0.54345E+01 + 1. 0.34828E+01 0.20872E+01 0.54445E+01 + 1. -0.19869E+02 0.93699E+00 0.54526E+01 + 1. -0.37943E+00 -0.81158E+01 0.54595E+01 + 1. 0.70156E+01 -0.11315E+02 0.54612E+01 + 1. 0.18554E+02 -0.38739E+01 0.54715E+01 + 1. 0.28557E+01 0.17294E+02 0.54766E+01 + 1. -0.14378E+02 -0.11926E+02 0.54827E+01 + 1. -0.54102E+01 -0.15537E+02 0.54882E+01 + 1. 0.65431E+01 0.10949E+02 0.54956E+01 + 1. 0.77465E+01 0.82053E+00 0.55030E+01 + 1. -0.10807E+02 -0.58672E+01 0.55075E+01 + 1. -0.15465E+02 0.12589E+02 0.55186E+01 + 1. -0.19215E+02 -0.50573E+01 0.55243E+01 + 1. -0.98988E+01 -0.17259E+02 0.55317E+01 + 1. 0.11910E+02 -0.81447E+01 0.55383E+01 + 1. 0.58105E+01 -0.85733E+01 0.55410E+01 + 1. -0.14537E+01 0.14699E+02 0.55494E+01 + 1. -0.50934E+01 -0.10785E+02 0.55534E+01 + 1. 0.10933E+02 -0.13541E+01 0.55625E+01 + 1. 0.17247E+02 -0.10080E+02 0.55703E+01 + 1. -0.14886E+02 0.58015E+01 0.55752E+01 + 1. 0.15608E+02 0.12062E+02 0.55845E+01 + 1. 0.17248E+02 0.38851E+01 0.55899E+01 + 1. -0.89985E+01 -0.40145E+01 0.55935E+01 + 1. -0.23464E+01 -0.16603E+02 0.56041E+01 + 1. -0.13709E+02 0.13657E+02 0.56106E+01 + 1. -0.75945E+01 -0.12197E+02 0.56161E+01 + 1. 0.10114E+02 0.11997E+02 0.56249E+01 + 1. 0.14770E+02 -0.53870E+01 0.56271E+01 + 1. -0.62799E+01 -0.74153E+01 0.56356E+01 + 1. 0.10346E+02 0.62643E+01 0.56416E+01 + 1. 0.10053E+02 -0.14651E+02 0.56491E+01 + 1. -0.72674E-01 0.19615E+02 0.56595E+01 + 1. 0.58054E+01 -0.19117E+02 0.56665E+01 + 1. -0.29872E+01 -0.12750E+02 0.56720E+01 + 1. -0.10652E+02 0.68428E+01 0.56768E+01 + 1. -0.34609E+01 -0.74682E+01 0.56833E+01 + 1. 0.13686E+02 0.54051E+01 0.56912E+01 + 1. 0.28874E+01 -0.53099E+01 0.56961E+01 + 1. -0.13722E+02 0.18418E+01 0.57020E+01 + 1. 0.20799E+01 0.74191E+01 0.57102E+01 + 1. -0.14140E+02 0.10263E+02 0.57170E+01 + 1. -0.16352E+02 -0.49332E+01 0.57239E+01 + 1. -0.67925E+00 0.12491E+02 0.57311E+01 + 1. 0.49922E+01 0.18400E+02 0.57366E+01 + 1. 0.41495E+01 0.13763E+02 0.57412E+01 + 1. -0.66399E+01 0.16505E+01 0.57494E+01 + 1. 0.95077E+00 0.11287E+02 0.57534E+01 + 1. 0.94892E+01 0.83576E+01 0.57605E+01 + 1. 0.35929E+00 -0.45137E+01 0.57698E+01 + 1. -0.51492E+00 -0.12140E+02 0.57769E+01 + 1. -0.10826E+02 -0.13210E+02 0.57834E+01 + 1. -0.36451E+01 0.19456E+02 0.57897E+01 + 1. 0.13021E+02 0.21941E+01 0.57978E+01 + 1. -0.16885E+02 0.20252E+01 0.58043E+01 + 1. 0.22176E+01 0.43149E+01 0.58085E+01 + 1. 0.73774E+01 0.16963E+02 0.58164E+01 + 1. -0.52985E+01 -0.50907E+01 0.58221E+01 + 1. 0.19708E+02 0.82542E+00 0.58291E+01 + 1. 0.80989E+01 -0.55110E+01 0.58375E+01 + 1. 0.11608E+02 -0.46412E+01 0.58441E+01 + 1. -0.11729E+02 -0.40399E+01 0.58486E+01 + 1. -0.34844E+01 0.52421E+01 0.58549E+01 + 1. -0.19387E+01 -0.91815E+00 0.58660E+01 + 1. -0.17082E+02 -0.12215E+01 0.58694E+01 + 1. 0.54765E+01 -0.39663E+01 0.58793E+01 + 1. -0.52316E+01 -0.61956E+00 0.58842E+01 + 1. 0.26718E+01 -0.19817E+02 0.58890E+01 + 1. 0.12427E+02 0.14007E+02 0.58938E+01 + 1. 0.98056E+00 -0.95433E+01 0.59015E+01 + 1. -0.45411E+01 0.13489E+02 0.59077E+01 + 1. -0.86104E+01 0.17911E+02 0.59154E+01 + 1. 0.19739E+02 -0.22903E+01 0.59232E+01 + 1. 0.70754E+01 0.13004E+02 0.59320E+01 + 1. 0.16647E+02 -0.30510E+01 0.59336E+01 + 1. -0.55670E+01 0.63560E+01 0.59444E+01 + 1. 0.12793E+02 -0.62270E+00 0.59472E+01 + 1. 0.80994E+01 -0.14094E+01 0.59574E+01 + 1. 0.26377E+01 -0.17491E+01 0.59644E+01 + 1. 0.75263E+01 -0.17294E+02 0.59713E+01 + 1. 0.10164E+02 0.39043E+01 0.59789E+01 + 1. 0.14740E+02 -0.13348E+02 0.59832E+01 + 1. 0.17553E+02 0.86217E+01 0.59900E+01 + 1. 0.14992E+02 -0.95256E+01 0.59985E+01 + 1. 0.33897E+01 0.98651E+01 0.60043E+01 + 1. -0.97236E+01 -0.93512E+00 0.60077E+01 + 1. -0.15937E+02 0.87263E+01 0.60158E+01 + 1. -0.31300E+01 -0.54562E+01 0.60257E+01 + 1. -0.73176E+01 -0.15108E+02 0.60280E+01 + 1. -0.17283E+02 0.65833E+01 0.60390E+01 + 1. -0.12281E+02 0.52046E+01 0.60432E+01 + 1. -0.68129E+01 0.12169E+02 0.60468E+01 + 1. 0.30643E+00 0.49330E+01 0.60560E+01 + 1. 0.12061E+02 0.11212E+02 0.60621E+01 + 1. 0.18658E+02 -0.64733E+01 0.60679E+01 + 1. 0.96805E+01 0.12204E+01 0.60751E+01 + 1. 0.27104E+01 -0.76285E+01 0.60816E+01 + 1. 0.44125E+01 0.81280E+01 0.60928E+01 + 1. -0.96010E+01 -0.74183E+01 0.60999E+01 + 1. -0.10176E+02 -0.15175E+02 0.61017E+01 + 1. -0.31831E+01 0.17265E+02 0.61099E+01 + 1. -0.15655E+02 0.41544E+00 0.61194E+01 + 1. -0.10846E+02 0.11911E+01 0.61250E+01 + 1. 0.89562E+01 -0.11885E+02 0.61313E+01 + 1. 0.95682E+01 0.17398E+02 0.61368E+01 + 1. 0.65529E+01 0.54176E+01 0.61452E+01 + 1. -0.90539E+01 0.44267E+01 0.61483E+01 + 1. -0.29879E+01 0.11210E+02 0.61551E+01 + 1. -0.50176E+01 0.36248E+01 0.61640E+01 + 1. -0.98132E+01 0.11606E+02 0.61669E+01 + 1. -0.99200E+01 0.89945E+01 0.61795E+01 + 1. -0.14608E+02 -0.27542E+01 0.61863E+01 + 1. 0.28338E+01 -0.11288E+02 0.61915E+01 + 1. -0.69468E+01 -0.33772E+01 0.61988E+01 + 1. -0.76308E+01 -0.17957E+02 0.62050E+01 + 1. -0.17288E+02 -0.75009E+01 0.62111E+01 + 1. 0.53419E+01 0.22028E+01 0.62179E+01 + 1. -0.54891E+01 -0.17570E+02 0.62234E+01 + 1. -0.59478E+01 0.90567E+01 0.62328E+01 + 1. 0.98855E+00 0.16657E+02 0.62373E+01 + 1. 0.13034E+02 -0.63975E+01 0.62452E+01 + 1. -0.41204E+01 -0.34640E+01 0.62487E+01 + 1. -0.86186E-01 -0.19787E+02 0.62547E+01 + 1. 0.16884E+02 0.57703E+01 0.62632E+01 + 1. 0.95768E+01 -0.17323E+02 0.62683E+01 + 1. 0.60696E+01 0.14756E+02 0.62742E+01 + 1. -0.13567E+02 -0.18238E+00 0.62860E+01 + 1. -0.12928E+02 -0.60536E+01 0.62928E+01 + 1. 0.60360E+01 -0.17241E+01 0.62936E+01 + 1. -0.97082E+00 -0.98923E+01 0.63036E+01 + 1. 0.18684E+02 0.69763E+01 0.63129E+01 + 1. 0.98192E+01 -0.35963E+01 0.63189E+01 + 1. -0.91287E+01 0.15709E+02 0.63257E+01 + 1. 0.14490E+02 0.13766E+02 0.63302E+01 + 1. -0.18870E+02 -0.32561E+01 0.63344E+01 + 1. -0.88930E+01 -0.10720E+02 0.63440E+01 + 1. 0.75502E+01 -0.78256E+01 0.63482E+01 + 1. 0.82264E+01 0.42991E+01 0.63561E+01 + 1. -0.16431E+02 -0.11120E+02 0.63654E+01 + 1. -0.16354E+02 0.10737E+02 0.63681E+01 + 1. -0.62453E+01 0.16714E+02 0.63771E+01 + 1. 0.39570E+01 -0.18361E+02 0.63812E+01 + 1. 0.11993E+02 0.15896E+02 0.63910E+01 + 1. -0.72940E+01 -0.13621E+00 0.63982E+01 + 1. -0.11087E+01 -0.61001E+01 0.64028E+01 + 1. 0.50592E+01 -0.15678E+02 0.64084E+01 + 1. 0.15210E+02 0.19635E+01 0.64177E+01 + 1. 0.18813E+01 -0.17181E+02 0.64217E+01 + 1. 0.17502E+02 0.20754E+01 0.64304E+01 + 1. 0.42949E+00 0.14381E+02 0.64397E+01 + 1. 0.78398E+01 0.97331E+01 0.64452E+01 + 1. 0.32212E+01 0.24793E+00 0.64475E+01 + 1. 0.15541E+02 0.84640E+01 0.64537E+01 + 1. -0.56291E+01 -0.13634E+02 0.64664E+01 + 1. -0.71802E+01 -0.54305E+01 0.64729E+01 + 1. 0.19266E+02 0.38814E+01 0.64772E+01 + 1. -0.85429E+01 0.19716E+01 0.64828E+01 + 1. -0.68898E+01 -0.10009E+02 0.64894E+01 + 1. 0.14749E+02 -0.20862E+01 0.64947E+01 + 1. -0.13285E+01 0.30371E+01 0.65017E+01 + 1. 0.12738E+02 0.70961E+01 0.65126E+01 + 1. -0.88189E+01 -0.13541E+02 0.65154E+01 + 1. -0.11470E+02 0.14207E+02 0.65204E+01 + 1. -0.49297E+01 -0.88500E+01 0.65330E+01 + 1. 0.32860E+01 -0.13420E+02 0.65354E+01 + 1. -0.32942E+01 -0.14579E+02 0.65422E+01 + 1. 0.16618E+02 -0.50928E+01 0.65474E+01 + 1. -0.12205E+02 -0.11726E+02 0.65551E+01 + 1. 0.33118E+00 0.69044E+01 0.65624E+01 + 1. 0.13975E+01 0.16948E+01 0.65727E+01 + 1. -0.19741E+02 0.31229E+01 0.65740E+01 + 1. 0.10713E+02 -0.63275E+01 0.65815E+01 + 1. 0.84060E+01 0.15339E+02 0.65874E+01 + 1. -0.27949E+01 -0.19377E+02 0.65996E+01 + 1. -0.13543E+02 0.37036E+01 0.66016E+01 + 1. 0.13563E+02 -0.39381E+01 0.66118E+01 + 1. 0.33081E+01 0.19461E+02 0.66178E+01 + 1. -0.55872E+01 0.19031E+02 0.66243E+01 + 1. -0.12900E+02 -0.84732E+01 0.66310E+01 + 1. -0.48478E+00 -0.14202E+02 0.66382E+01 + 1. -0.15485E+01 -0.38916E+01 0.66419E+01 + 1. -0.14568E+02 -0.48542E+01 0.66531E+01 + 1. -0.14639E+02 -0.98736E+01 0.66578E+01 + 1. 0.10989E+02 -0.11783E+02 0.66636E+01 + 1. -0.16874E+01 0.92729E+01 0.66669E+01 + 1. 0.18427E+02 -0.84109E+00 0.66747E+01 + 1. 0.70659E+01 -0.13697E+02 0.66825E+01 + 1. 0.26221E+01 0.12418E+02 0.66876E+01 + 1. -0.12856E+02 0.12065E+02 0.66985E+01 + 1. -0.39582E+01 0.76726E+01 0.67050E+01 + 1. -0.40202E+01 0.80039E+00 0.67077E+01 + 1. -0.66713E+01 0.14089E+02 0.67166E+01 + 1. 0.10233E+02 0.14509E+02 0.67237E+01 + 1. 0.12051E+02 -0.15203E+02 0.67283E+01 + 1. -0.18043E+02 0.35617E+00 0.67363E+01 + 1. 0.97553E+01 0.10267E+02 0.67425E+01 + 1. 0.11833E+01 0.92794E+01 0.67484E+01 + 1. -0.10718E+02 -0.99656E+01 0.67567E+01 + 1. -0.67088E+01 0.48222E+01 0.67639E+01 + 1. -0.12204E+02 0.90323E+01 0.67708E+01 + 1. 0.30695E+00 -0.22944E+01 0.67761E+01 + 1. 0.23547E+01 -0.37154E+01 0.67856E+01 + 1. -0.10548E+02 -0.26072E+01 0.67909E+01 + 1. -0.26611E+01 -0.89302E+01 0.67979E+01 + 1. -0.16683E+02 -0.30111E+01 0.68061E+01 + 1. -0.16712E+02 0.43761E+01 0.68087E+01 + 1. 0.79945E+01 0.66878E+01 0.68174E+01 + 1. -0.17133E+01 0.56240E+01 0.68205E+01 + 1. 0.62042E+01 0.43980E+00 0.68321E+01 + 1. 0.86951E+01 -0.95428E+01 0.68390E+01 + 1. -0.10981E+02 0.38704E+01 0.68434E+01 + 1. 0.11318E+02 0.86565E+01 0.68496E+01 + 1. 0.12757E+02 0.40062E+01 0.68571E+01 + 1. 0.45639E+01 -0.99242E+01 0.68657E+01 + 1. 0.13368E+02 -0.85871E+01 0.68709E+01 + 1. 0.45900E+01 0.11669E+02 0.68734E+01 + 1. -0.51052E+01 0.11325E+02 0.68801E+01 + 1. -0.16710E+01 0.18507E+02 0.68927E+01 + 1. -0.90358E+01 0.65495E+01 0.68951E+01 + 1. -0.14551E+02 -0.13673E+02 0.69025E+01 + 1. -0.83945E+00 -0.17045E+02 0.69118E+01 + 1. -0.92430E+01 0.13737E+02 0.69162E+01 + 1. 0.16895E+02 -0.84024E+01 0.69258E+01 + 1. -0.46274E+01 0.15323E+02 0.69295E+01 + 1. 0.57089E+01 0.97497E+01 0.69394E+01 + 1. -0.81475E+01 0.10711E+02 0.69460E+01 + 1. 0.84756E+01 -0.15294E+02 0.69512E+01 + 1. 0.31491E+01 0.15123E+02 0.69540E+01 + 1. 0.17001E+02 0.10374E+02 0.69641E+01 + 1. 0.11945E+02 -0.23592E+01 0.69713E+01 + 1. -0.12055E+02 -0.14351E+02 0.69738E+01 + 1. 0.13035E+02 0.96915E+01 0.69830E+01 + 1. -0.26370E+01 0.13939E+02 0.69910E+01 + 1. 0.16306E+02 -0.11321E+02 0.69974E+01 + 1. -0.13167E+02 0.71784E+01 0.70033E+01 + 1. -0.17932E+02 -0.57730E+01 0.70083E+01 + 1. 0.14363E+02 0.11429E+02 0.70179E+01 + 1. 0.41817E+01 0.55249E+01 0.70204E+01 + 1. 0.77441E+01 0.23850E+01 0.70333E+01 + 1. 0.47923E+01 -0.55932E+01 0.70374E+01 + 1. 0.55163E+01 -0.11802E+02 0.70414E+01 + 1. 0.76688E+00 -0.11186E+02 0.70492E+01 + 1. -0.11581E+02 0.16276E+02 0.70568E+01 + 1. 0.11159E+02 0.22868E+01 0.70619E+01 + 1. 0.15107E+02 0.63048E+01 0.70693E+01 + 1. 0.14887E+02 0.41725E+01 0.70737E+01 + 1. 0.89822E+00 -0.72387E+01 0.70812E+01 + 1. 0.10988E+02 0.86812E-01 0.70867E+01 + 1. 0.25365E+01 -0.15317E+02 0.70986E+01 + 1. -0.17690E+02 0.86544E+01 0.71001E+01 + 1. -0.15232E+02 -0.79207E+01 0.71079E+01 + 1. -0.17693E+02 -0.93090E+01 0.71175E+01 + 1. 0.38158E+01 0.32294E+01 0.71223E+01 + 1. -0.11534E+01 0.16433E+02 0.71313E+01 + 1. 0.12756E+02 -0.13140E+02 0.71371E+01 + 1. 0.87512E+01 0.12212E+02 0.71403E+01 + 1. 0.42040E+01 0.16874E+02 0.71485E+01 + 1. 0.95943E+00 0.18551E+02 0.71565E+01 + 1. -0.20309E+01 -0.11451E+02 0.71651E+01 + 1. 0.48739E+01 -0.78389E+01 0.71688E+01 + 1. 0.81245E+00 -0.35497E+00 0.71748E+01 + 1. 0.75238E+01 0.18445E+02 0.71802E+01 + 1. 0.15076E+02 -0.69331E+01 0.71918E+01 + 1. -0.38225E+01 -0.16874E+02 0.71970E+01 + 1. -0.46779E+01 -0.11912E+02 0.72066E+01 + 1. -0.11407E+02 -0.72490E+01 0.72133E+01 + 1. -0.18800E+02 0.55395E+01 0.72193E+01 + 1. 0.12594E+02 -0.10625E+02 0.72236E+01 + 1. -0.17055E+01 0.11583E+01 0.72315E+01 + 1. -0.15385E+02 0.23821E+01 0.72375E+01 + 1. -0.33479E+01 -0.17415E+01 0.72427E+01 + 1. -0.79805E+01 -0.80710E+01 0.72484E+01 + 1. 0.18813E+02 -0.47591E+01 0.72550E+01 + 1. 0.16180E+02 0.30569E+00 0.72646E+01 + 1. -0.81728E+01 -0.18574E+01 0.72715E+01 + 1. 0.70765E+01 -0.33099E+01 0.72740E+01 + 1. -0.12276E+02 0.22880E+01 0.72811E+01 + 1. -0.15823E+02 0.71531E+01 0.72882E+01 + 1. -0.14361E+02 0.88030E+01 0.72961E+01 + 1. -0.19510E+02 -0.10001E+01 0.73007E+01 + 1. -0.11960E+02 -0.79937E+00 0.73094E+01 + 1. 0.40469E+01 -0.23706E+01 0.73193E+01 + 1. 0.68709E+01 -0.18697E+02 0.73256E+01 + 1. -0.43816E+01 -0.67739E+01 0.73330E+01 + 1. -0.69516E+01 0.72598E+01 0.73378E+01 + 1. -0.90325E+01 -0.52342E+01 0.73459E+01 + 1. -0.86551E+01 -0.16459E+02 0.73492E+01 + 1. 0.21491E+01 0.61509E+01 0.73577E+01 + 1. 0.10693E+02 -0.95488E+01 0.73609E+01 + 1. 0.96162E+01 0.53497E+01 0.73688E+01 + 1. 0.11250E+02 0.12820E+02 0.73789E+01 + 1. -0.70063E+01 0.29311E+01 0.73855E+01 + 1. -0.35496E+01 0.28672E+01 0.73871E+01 + 1. -0.13067E+01 0.11119E+02 0.73944E+01 + 1. 0.64482E+01 -0.91572E+01 0.74042E+01 + 1. 0.14029E+02 -0.37702E-01 0.74109E+01 + 1. -0.57988E+01 -0.15949E+02 0.74165E+01 + 1. -0.15464E+02 -0.11044E+01 0.74226E+01 + 1. 0.56714E+01 0.72955E+01 0.74317E+01 + 1. 0.56699E+01 0.39247E+01 0.74386E+01 + 1. 0.12854E+01 -0.18837E+02 0.74404E+01 + 1. -0.15243E+02 0.12104E+02 0.74493E+01 + 1. 0.82874E+01 0.33892E-01 0.74598E+01 + 1. 0.99152E+01 -0.13407E+02 0.74628E+01 + 1. -0.12968E+02 -0.38780E+01 0.74704E+01 + 1. -0.61641E+01 -0.16383E+01 0.74793E+01 + 1. 0.67100E+01 -0.59931E+01 0.74805E+01 + 1. 0.17888E+02 -0.26294E+01 0.74915E+01 + 1. 0.94228E+01 -0.20019E+01 0.74990E+01 + 1. -0.17815E+02 0.28075E+01 0.75030E+01 + 1. 0.24544E+00 0.12650E+02 0.75090E+01 + 1. -0.39483E+01 0.96767E+01 0.75178E+01 + 1. -0.94372E+01 0.45710E+00 0.75239E+01 + 1. -0.47182E+01 0.51443E+01 0.75282E+01 + 1. -0.13960E+02 -0.11868E+02 0.75399E+01 + 1. 0.26155E+01 -0.90998E+01 0.75425E+01 + 1. -0.96969E+01 0.17460E+02 0.75498E+01 + 1. -0.11073E+02 0.10888E+02 0.75557E+01 + 1. -0.11115E+02 0.60850E+01 0.75618E+01 + 1. -0.47703E+01 -0.19390E+02 0.75687E+01 + 1. -0.74355E+01 -0.11726E+02 0.75791E+01 + 1. -0.13581E+02 0.14264E+02 0.75822E+01 + 1. 0.19700E+02 0.19639E+01 0.75887E+01 + 1. 0.28221E+01 -0.59546E+01 0.75943E+01 + 1. 0.99889E+00 0.34162E+01 0.76043E+01 + 1. -0.10893E+02 -0.45146E+01 0.76104E+01 + 1. 0.58236E+01 0.13120E+02 0.76150E+01 + 1. 0.63295E+01 0.16554E+02 0.76204E+01 + 1. -0.75066E+01 0.15714E+02 0.76310E+01 + 1. 0.69413E+01 0.11429E+02 0.76354E+01 + 1. 0.52941E+01 -0.17282E+02 0.76435E+01 + 1. 0.16667E+02 0.34571E+01 0.76487E+01 + 1. 0.90239E+01 -0.64450E+01 0.76555E+01 + 1. 0.30890E+01 0.85297E+01 0.76623E+01 + 1. -0.85577E+01 0.86930E+01 0.76690E+01 + 1. -0.14463E+02 0.54314E+01 0.76771E+01 + 1. -0.10261E+02 -0.11951E+02 0.76838E+01 + 1. 0.77422E+01 -0.11396E+02 0.76890E+01 + 1. -0.11111E+02 -0.16502E+02 0.76986E+01 + 1. 0.14637E+02 -0.12296E+02 0.77063E+01 + 1. -0.58127E+01 0.81714E+00 0.77086E+01 + 1. -0.89649E+00 -0.81883E+01 0.77197E+01 + 1. -0.72194E+01 0.18388E+02 0.77207E+01 + 1. -0.42137E+01 0.17932E+02 0.77326E+01 + 1. 0.16360E+01 -0.13036E+02 0.77389E+01 + 1. 0.13241E+02 0.13077E+02 0.77462E+01 + 1. 0.13646E+02 0.20778E+01 0.77482E+01 + 1. 0.10843E+02 -0.16640E+02 0.77549E+01 + 1. 0.50255E+01 0.19305E+02 0.77618E+01 + 1. 0.97016E+01 0.78647E+01 0.77668E+01 + 1. 0.16925E+02 0.77694E+01 0.77772E+01 + 1. 0.50181E+01 -0.14076E+02 0.77826E+01 + 1. -0.49430E+01 -0.46813E+01 0.77907E+01 + 1. -0.10013E+02 0.23716E+01 0.77947E+01 + 1. -0.19722E+02 0.94273E+00 0.78032E+01 + 1. 0.15549E+02 -0.34575E+01 0.78113E+01 + 1. -0.10919E+01 -0.18932E+02 0.78184E+01 + 1. -0.53313E+01 0.13092E+02 0.78219E+01 + 1. 0.12325E+02 -0.53408E+01 0.78276E+01 + 1. -0.19813E+01 -0.15391E+02 0.78386E+01 + 1. -0.72713E+01 -0.14200E+02 0.78466E+01 + 1. 0.27967E+00 -0.50122E+01 0.78472E+01 + 1. -0.16098E+02 -0.54483E+01 0.78579E+01 + 1. 0.65117E+01 -0.15425E+02 0.78629E+01 + 1. 0.31041E+01 0.10754E+02 0.78678E+01 + 1. -0.19712E+01 0.73681E+01 0.78782E+01 + 1. 0.14182E+02 0.79178E+01 0.78820E+01 + 1. 0.83854E+01 -0.17177E+02 0.78867E+01 + 1. 0.17824E+02 -0.66685E+01 0.78976E+01 + 1. 0.10477E+02 0.16507E+02 0.79010E+01 + 1. 0.44169E+01 0.12638E+01 0.79126E+01 + 1. 0.18395E+02 0.53923E+01 0.79135E+01 + 1. 0.74991E+01 0.83651E+01 0.79219E+01 + 1. 0.23484E+01 0.17101E+02 0.79313E+01 + 1. 0.11236E+02 0.64206E+01 0.79384E+01 + 1. -0.24053E+01 -0.64508E+01 0.79463E+01 + 1. -0.12358E+02 -0.10076E+02 0.79495E+01 + 1. -0.14995E+01 -0.71630E+00 0.79541E+01 + 1. -0.13596E+02 -0.70152E+01 0.79654E+01 + 1. -0.64606E+01 0.99676E+01 0.79693E+01 + 1. 0.14695E+02 -0.96965E+01 0.79779E+01 + 1. -0.16496E+02 0.75219E+00 0.79860E+01 + 1. -0.65284E+01 -0.68852E+01 0.79876E+01 + 1. 0.10410E+02 -0.46407E+01 0.79941E+01 + 1. -0.72814E+01 0.12512E+02 0.80054E+01 + 1. -0.17589E+02 -0.13138E+01 0.80086E+01 + 1. 0.12995E+02 0.15101E+02 0.80161E+01 + 1. -0.78250E+01 -0.37582E+01 0.80234E+01 + 1. 0.11609E+02 0.10654E+02 0.80281E+01 + 1. -0.14397E+02 0.52135E+00 0.80346E+01 + 1. 0.73495E+01 0.50017E+01 0.80450E+01 + 1. 0.11935E+02 -0.77315E+01 0.80476E+01 + 1. 0.64606E+00 0.15905E+02 0.80586E+01 + 1. 0.19972E+02 -0.98587E+00 0.80611E+01 + 1. 0.76810E+01 0.14145E+02 0.80725E+01 + 1. -0.61621E+01 -0.17992E+02 0.80751E+01 + 1. 0.53792E+01 -0.10381E+01 0.80842E+01 + 1. -0.10397E+02 0.80103E+01 0.80884E+01 + 1. -0.18499E+02 -0.74231E+01 0.80989E+01 + 1. 0.81529E+00 -0.16815E+02 0.81044E+01 + 1. -0.99988E+01 0.15227E+02 0.81126E+01 + 1. 0.32984E+01 -0.17368E+02 0.81166E+01 + 1. -0.84944E+00 -0.12854E+02 0.81261E+01 + 1. -0.39974E+01 -0.10092E+02 0.81323E+01 + 1. 0.19358E+01 0.13810E+02 0.81379E+01 + 1. -0.21086E+01 0.40758E+01 0.81443E+01 + 1. 0.13154E+02 0.58252E+01 0.81469E+01 + 1. -0.94102E+01 0.11887E+02 0.81570E+01 + 1. 0.96480E+01 0.33189E+01 0.81602E+01 + 1. -0.18275E+02 -0.41171E+01 0.81729E+01 + 1. -0.95474E+01 0.49442E+01 0.81780E+01 + 1. 0.61031E+00 -0.95210E+01 0.81815E+01 + 1. -0.34285E+01 0.11572E+02 0.81898E+01 + 1. -0.97191E+00 0.14546E+02 0.81997E+01 + 1. -0.37294E+00 0.19820E+02 0.82023E+01 + 1. 0.34833E+01 -0.11745E+02 0.82092E+01 + 1. -0.45290E+01 -0.14186E+02 0.82153E+01 + 1. 0.52975E+01 -0.38454E+01 0.82203E+01 + 1. -0.95534E+01 -0.14773E+02 0.82296E+01 + 1. 0.17899E+02 0.11525E+01 0.82346E+01 + 1. -0.26012E+01 0.19731E+02 0.82425E+01 + 1. 0.38728E+00 0.80855E+01 0.82494E+01 + 1. 0.17184E+02 -0.10014E+02 0.82546E+01 + 1. 0.82981E+01 -0.46079E+01 0.82604E+01 + 1. 0.23625E+01 0.11011E+01 0.82701E+01 + 1. -0.14604E+02 -0.29336E+01 0.82773E+01 + 1. -0.41030E+00 0.51258E+01 0.82848E+01 + 1. -0.14050E+02 0.10545E+02 0.82913E+01 + 1. 0.17086E+01 -0.22770E+01 0.82933E+01 + 1. -0.27342E+01 -0.43150E+01 0.83014E+01 + 1. -0.96932E+01 -0.71513E+01 0.83101E+01 + 1. -0.15703E+02 -0.94466E+01 0.83185E+01 + 1. -0.93572E+01 -0.97315E+01 0.83240E+01 + 1. -0.17724E+02 0.69333E+01 0.83293E+01 + 1. 0.13636E+02 -0.19408E+01 0.83352E+01 + 1. -0.16234E+02 -0.11445E+02 0.83451E+01 + 1. 0.15144E+02 0.96230E+01 0.83527E+01 + 1. 0.47106E+01 -0.19237E+02 0.83562E+01 + 1. 0.17267E+00 0.10123E+02 0.83659E+01 + 1. 0.84727E+01 0.10148E+02 0.83683E+01 + 1. -0.57877E+01 0.16701E+02 0.83775E+01 + 1. 0.80359E+01 -0.13249E+02 0.83841E+01 + 1. -0.19314E+02 0.38632E+01 0.83898E+01 + 1. 0.10003E+02 0.12584E+01 0.83966E+01 + 1. -0.23919E+01 0.17405E+02 0.84051E+01 + 1. -0.16141E+02 0.92843E+01 0.84133E+01 + 1. 0.84388E+01 0.16649E+02 0.84198E+01 + 1. -0.51868E+01 0.77779E+01 0.84231E+01 + 1. 0.47060E+01 0.14805E+02 0.84308E+01 + 1. 0.14665E+02 -0.52184E+01 0.84387E+01 + 1. -0.62448E+01 -0.10072E+02 0.84424E+01 + 1. 0.20743E+01 0.19872E+02 0.84526E+01 + 1. -0.82712E+01 -0.18114E+02 0.84590E+01 + 1. 0.13349E+02 -0.14555E+02 0.84626E+01 + 1. -0.10140E+02 -0.12598E+01 0.84668E+01 + 1. 0.62761E+01 0.21009E+01 0.84756E+01 + 1. 0.15760E+02 0.12146E+02 0.84854E+01 + 1. 0.11553E+02 0.41830E+01 0.84903E+01 + 1. -0.47538E+00 -0.31657E+01 0.84997E+01 + 1. -0.81935E+01 0.16816E+01 0.85046E+01 + 1. -0.33805E+01 0.15099E+02 0.85121E+01 + 1. 0.17354E+02 -0.75941E+00 0.85133E+01 + 1. -0.11381E+02 0.13511E+02 0.85266E+01 + 1. 0.10211E+02 -0.11225E+02 0.85311E+01 + 1. -0.73898E+01 -0.35999E+00 0.85349E+01 + 1. 0.75027E+01 -0.75789E+01 0.85418E+01 + 1. 0.16778E+00 0.98004E+00 0.85508E+01 + 1. 0.97667E+01 -0.15151E+02 0.85557E+01 + 1. -0.31224E+01 0.58692E+01 0.85628E+01 + 1. -0.21445E+01 0.96754E+01 0.85721E+01 + 1. -0.12330E+02 0.45739E+01 0.85786E+01 + 1. 0.19444E+02 0.36888E+01 0.85802E+01 + 1. 0.15830E+02 0.18503E+01 0.85877E+01 + 1. 0.16893E+02 -0.49179E+01 0.85950E+01 + 1. 0.19571E+02 -0.31481E+01 0.86030E+01 + 1. -0.15734E+02 0.39372E+01 0.86114E+01 + 1. 0.12401E+02 0.41399E+00 0.86138E+01 + 1. 0.30419E+01 0.44771E+01 0.86224E+01 + 1. 0.81062E+00 -0.14704E+02 0.86273E+01 + 1. -0.75435E+01 0.55941E+01 0.86344E+01 + 1. -0.19782E+02 -0.26265E+01 0.86426E+01 + 1. -0.13759E+02 0.29716E+01 0.86487E+01 + 1. -0.50252E+01 0.34303E+01 0.86582E+01 + 1. -0.35703E+01 0.11452E+01 0.86617E+01 + 1. 0.39464E+01 0.12849E+02 0.86673E+01 + 1. 0.31059E+01 -0.37371E+01 0.86778E+01 + 1. 0.99114E+01 -0.82490E+01 0.86816E+01 + 1. -0.13057E+02 -0.14977E+02 0.86928E+01 + 1. -0.25777E+01 -0.13684E+02 0.86993E+01 + 1. -0.13596E+02 0.12562E+02 0.87009E+01 + 1. 0.10184E+02 0.14296E+02 0.87131E+01 + 1. 0.12352E+02 0.89158E+01 0.87179E+01 + 1. 0.36173E+01 0.64589E+01 0.87260E+01 + 1. -0.11448E+01 -0.10313E+02 0.87280E+01 + 1. 0.16088E+02 -0.80428E+01 0.87385E+01 + 1. 0.24707E+01 -0.19838E+02 0.87461E+01 + 1. -0.12802E+02 0.84040E+01 0.87523E+01 + 1. -0.12162E+02 0.69224E+00 0.87589E+01 + 1. -0.11803E+02 -0.13289E+02 0.87665E+01 + 1. -0.21053E+01 -0.17359E+02 0.87674E+01 + 1. -0.45376E+01 -0.24767E+01 0.87775E+01 + 1. 0.47420E+01 0.90735E+01 0.87851E+01 + 1. -0.14037E+02 -0.51713E+01 0.87916E+01 + 1. -0.28598E+01 -0.19346E+02 0.87958E+01 + 1. 0.16654E+02 0.59181E+01 0.88051E+01 + 1. 0.30707E+01 -0.82041E+00 0.88119E+01 + 1. 0.72751E+01 -0.16224E+01 0.88193E+01 + 1. -0.16196E+02 -0.72166E+01 0.88206E+01 + 1. -0.28778E+01 -0.84625E+01 0.88309E+01 + 1. 0.11382E+02 -0.13329E+02 0.88357E+01 + 1. 0.49754E+01 -0.90011E+01 0.88413E+01 + 1. 0.11767E+02 -0.32951E+01 0.88503E+01 + 1. -0.10996E+02 -0.86311E+01 0.88588E+01 + 1. -0.14473E+02 0.72257E+01 0.88653E+01 + 1. -0.12323E+02 -0.22710E+01 0.88702E+01 + 1. -0.60282E+01 -0.12597E+02 0.88757E+01 + 1. -0.42699E+00 0.17886E+02 0.88800E+01 + 1. -0.85115E+01 0.14052E+02 0.88921E+01 + 1. 0.84072E+01 -0.98582E+01 0.88992E+01 + 1. 0.13651E+02 0.11438E+02 0.89042E+01 + 1. 0.61196E+01 -0.10724E+02 0.89109E+01 + 1. 0.43680E+01 -0.69144E+01 0.89154E+01 + 1. -0.11975E+02 -0.61034E+01 0.89216E+01 + 1. 0.10887E+02 -0.11614E+01 0.89305E+01 + 1. 0.29241E+01 -0.14326E+02 0.89376E+01 + 1. 0.98643E+01 0.11923E+02 0.89454E+01 + 1. -0.17467E+02 0.49272E+01 0.89494E+01 + 1. 0.39043E+01 0.18131E+02 0.89553E+01 + 1. 0.14010E+02 -0.72096E+01 0.89664E+01 + 1. 0.60271E+01 -0.12810E+02 0.89689E+01 + 1. 0.16875E+01 -0.11259E+02 0.89743E+01 + 1. -0.16450E+02 -0.37883E+01 0.89860E+01 + 1. 0.16118E+01 -0.70353E+01 0.89871E+01 + 1. 0.86836E+01 0.62250E+01 0.89971E+01 + 1. 0.56099E+01 0.60596E+01 0.90048E+01 + 1. -0.86625E+01 0.10197E+02 0.90120E+01 + 1. -0.14479E+02 -0.13319E+02 0.90152E+01 + 1. 0.10313E+02 0.94707E+01 0.90260E+01 + 1. -0.77003E+01 -0.56401E+01 0.90332E+01 + 1. -0.51788E+01 -0.82968E+01 0.90356E+01 + 1. -0.27837E+01 -0.11649E+02 0.90407E+01 + 1. -0.25380E+01 -0.24280E+01 0.90468E+01 + 1. 0.12476E+02 -0.97108E+01 0.90573E+01 + 1. 0.16096E+01 0.11760E+02 0.90617E+01 + 1. 0.12991E+02 -0.11880E+02 0.90703E+01 + 1. -0.61023E+01 0.14588E+02 0.90773E+01 + 1. -0.57913E+00 -0.67364E+01 0.90838E+01 + 1. 0.69533E+01 0.18205E+02 0.90890E+01 + 1. -0.12056E+02 0.15586E+02 0.90997E+01 + 1. 0.53428E+01 0.11300E+02 0.91001E+01 + 1. -0.42019E+01 -0.17671E+02 0.91101E+01 + 1. 0.14602E+02 0.47885E+01 0.91182E+01 + 1. -0.99896E+01 -0.33509E+01 0.91208E+01 + 1. 0.46596E+01 -0.15946E+02 0.91290E+01 + 1. -0.16801E+01 0.12338E+02 0.91370E+01 + 1. 0.15076E+02 -0.17921E+00 0.91460E+01 + 1. -0.18182E+01 0.20350E+01 0.91522E+01 + 1. 0.19178E+02 -0.56516E+01 0.91599E+01 + 1. -0.77034E+01 0.76088E+01 0.91664E+01 + 1. -0.11162E+02 0.95951E+01 0.91730E+01 + 1. -0.82598E+01 0.17206E+02 0.91786E+01 + 1. 0.65992E+01 -0.17164E+02 0.91824E+01 + 1. -0.54070E+01 -0.51633E+00 0.91920E+01 + 1. -0.97580E+01 -0.16997E+02 0.91979E+01 + 1. 0.16813E+01 0.67816E+01 0.92007E+01 + 1. -0.53158E+01 0.19251E+02 0.92072E+01 + 1. -0.14004E+02 -0.10448E+02 0.92175E+01 + 1. -0.17527E+02 -0.93361E+01 0.92257E+01 + 1. -0.11481E+02 0.26819E+01 0.92299E+01 + 1. 0.19026E+01 0.94157E+01 0.92371E+01 + 1. 0.27865E+01 0.15512E+02 0.92429E+01 + 1. 0.15872E+02 -0.11941E+02 0.92493E+01 + 1. 0.40484E+01 0.28446E+01 0.92572E+01 + 1. -0.18697E+02 0.18786E+01 0.92633E+01 + 1. -0.73498E+01 -0.16409E+02 0.92720E+01 + 1. 0.78136E+01 0.10291E+01 0.92758E+01 + 1. 0.12350E+02 0.24167E+01 0.92832E+01 + 1. 0.90779E+01 -0.29582E+01 0.92894E+01 + 1. 0.79133E+01 -0.15537E+02 0.92993E+01 + 1. 0.90078E+01 -0.58004E+00 0.93023E+01 + 1. -0.79884E+01 0.35124E+01 0.93116E+01 + 1. -0.80398E+01 -0.85047E+01 0.93163E+01 + 1. 0.18292E+02 0.76823E+01 0.93239E+01 + 1. -0.43707E+01 -0.63726E+01 0.93327E+01 + 1. 0.11872E+02 -0.15663E+02 0.93384E+01 + 1. -0.16323E+02 0.11107E+02 0.93407E+01 + 1. 0.11966E+02 0.12903E+02 0.93483E+01 + 1. 0.32996E+00 -0.10246E+01 0.93583E+01 + 1. -0.19681E+02 -0.44055E+00 0.93623E+01 + 1. -0.15362E+02 0.19477E+01 0.93680E+01 + 1. -0.15043E+02 -0.12882E+01 0.93763E+01 + 1. 0.16760E+02 -0.27779E+01 0.93860E+01 + 1. 0.44343E+01 -0.23746E+01 0.93920E+01 + 1. -0.38794E+01 0.13234E+02 0.93996E+01 + 1. 0.33120E+00 0.13320E+02 0.94060E+01 + 1. -0.89777E+01 -0.13086E+02 0.94102E+01 + 1. 0.17787E+02 0.28096E+01 0.94135E+01 + 1. -0.57988E+01 0.11397E+02 0.94229E+01 + 1. 0.75511E+01 0.12193E+02 0.94293E+01 + 1. -0.17963E+02 0.87564E+01 0.94367E+01 + 1. 0.71310E+00 -0.18415E+02 0.94400E+01 + 1. -0.37113E+01 0.86771E+01 0.94491E+01 + 1. 0.18127E+01 0.26752E+01 0.94596E+01 + 1. -0.18865E+02 -0.57931E+01 0.94653E+01 + 1. 0.63747E+01 0.15286E+02 0.94698E+01 + 1. 0.14183E+02 0.13942E+02 0.94775E+01 + 1. 0.10319E+02 -0.63735E+01 0.94848E+01 + 1. 0.17231E+02 0.95350E+01 0.94923E+01 + 1. -0.51427E+01 0.52625E+01 0.94981E+01 + 1. 0.14923E+02 0.68598E+01 0.95041E+01 + 1. 0.68297E+01 0.37414E+01 0.95105E+01 + 1. -0.10715E+02 -0.10785E+02 0.95188E+01 + 1. -0.10223E+02 0.16701E+02 0.95263E+01 + 1. 0.21583E+01 -0.92355E+01 0.95276E+01 + 1. -0.64442E+01 -0.36629E+01 0.95350E+01 + 1. -0.58087E+01 0.17985E+01 0.95426E+01 + 1. -0.34571E+01 -0.15754E+02 0.95519E+01 + 1. 0.65394E+01 -0.59382E+01 0.95545E+01 + 1. 0.23387E+01 -0.16322E+02 0.95642E+01 + 1. -0.99534E+01 0.65662E+01 0.95709E+01 + 1. 0.19757E+02 0.36934E+00 0.95735E+01 + 1. 0.94945E+01 -0.16938E+02 0.95816E+01 + 1. -0.77168E+01 -0.10824E+02 0.95904E+01 + 1. -0.10695E+01 0.65673E+01 0.95964E+01 + 1. 0.11601E+02 0.15641E+02 0.96009E+01 + 1. -0.94415E+00 -0.15089E+02 0.96095E+01 + 1. 0.15326E+01 -0.48095E+01 0.96140E+01 + 1. 0.98785E+01 0.17372E+02 0.96259E+01 + 1. -0.10054E+02 0.76689E+00 0.96315E+01 + 1. 0.68498E+01 -0.36130E+01 0.96375E+01 + 1. -0.11528E+02 0.11575E+02 0.96453E+01 + 1. 0.15972E+01 0.18040E+02 0.96511E+01 + 1. 0.10551E+02 0.73303E+01 0.96585E+01 + 1. 0.14278E+02 -0.33016E+01 0.96627E+01 + 1. -0.12282E+00 0.33089E+01 0.96702E+01 + 1. -0.96634E+01 -0.55717E+01 0.96750E+01 + 1. 0.70241E+01 0.95811E+01 0.96836E+01 + 1. 0.50711E+01 0.59407E+00 0.96930E+01 + 1. -0.58938E+01 -0.14641E+02 0.96963E+01 + 1. -0.13228E+02 -0.79932E+01 0.97007E+01 + 1. -0.16326E+02 0.64602E+01 0.97121E+01 + 1. -0.11326E+02 -0.15860E+02 0.97191E+01 + 1. -0.13775E+02 0.14410E+02 0.97248E+01 + 1. -0.12094E+02 -0.42679E+01 0.97269E+01 + 1. -0.23223E+01 0.84320E-02 0.97381E+01 + 1. 0.41375E+00 -0.12887E+02 0.97446E+01 + 1. -0.14077E+01 0.16111E+02 0.97513E+01 + 1. -0.41466E+01 0.16942E+02 0.97548E+01 + 1. 0.12822E+02 -0.50795E+01 0.97659E+01 + 1. -0.97512E+00 -0.19447E+02 0.97689E+01 + 1. -0.12576E+02 0.65046E+01 0.97788E+01 + 1. -0.14408E+02 0.90919E+01 0.97804E+01 + 1. -0.85749E+01 -0.19920E+01 0.97920E+01 + 1. -0.14501E+02 0.53353E+01 0.97952E+01 + 1. 0.10518E+02 0.52865E+01 0.98027E+01 + 1. 0.86208E+01 0.81712E+01 0.98129E+01 + 1. -0.34374E+01 0.40442E+01 0.98198E+01 + 1. 0.19050E+02 0.53330E+01 0.98242E+01 + 1. 0.46557E+01 -0.50319E+01 0.98298E+01 + 1. 0.18167E+02 -0.75301E+01 0.98390E+01 + 1. -0.15235E+01 -0.47868E+01 0.98443E+01 + 1. -0.83172E+01 0.12299E+02 0.98484E+01 + 1. 0.14366E+02 -0.10592E+02 0.98551E+01 + 1. 0.36922E+01 -0.18330E+02 0.98641E+01 + 1. -0.60953E+01 0.91315E+01 0.98733E+01 + 1. -0.17199E+02 -0.21445E+01 0.98795E+01 + 1. 0.84098E+01 -0.11618E+02 0.98826E+01 + 1. -0.57023E+01 -0.19010E+02 0.98888E+01 + 1. 0.85363E+01 0.15040E+02 0.98954E+01 + 1. -0.16991E+02 0.27072E+00 0.99043E+01 + 1. 0.14573E+02 -0.13492E+02 0.99107E+01 + 1. 0.13045E+02 0.74086E+01 0.99198E+01 + 1. 0.19066E+02 -0.15403E+01 0.99205E+01 + 1. 0.13229E+01 0.48428E+01 0.99269E+01 + 1. -0.28709E+00 -0.89428E+01 0.99370E+01 + 1. -0.18864E+02 0.65966E+01 0.99441E+01 + 1. -0.43471E+01 -0.13196E+02 0.99473E+01 + 1. -0.12647E+02 -0.11787E+02 0.99568E+01 + 1. -0.47721E+01 -0.10785E+02 0.99631E+01 + 1. 0.14267E+02 0.28735E+01 0.99670E+01 + 1. 0.40853E+01 -0.10600E+02 0.99797E+01 + 1. -0.71554E+00 0.86857E+01 0.99816E+01 + 1. 0.10411E+02 0.24616E+01 0.99929E+01 + 1. -0.10791E+02 0.44438E+01 0.99945E+01 diff --git a/etaGold.txt b/etaGold.txt new file mode 100644 index 0000000..d657cc1 --- /dev/null +++ b/etaGold.txt @@ -0,0 +1,50 @@ +lambda n k +1.937 0.92 13.78 +1.610 0.56 11.21 +1.393 0.43 9.519 +1.216 0.35 8.145 +1.088 0.27 7.150 +0.9840 0.22 6.350 +0.8920 0.17 5.663 +0.8211 0.16 5.083 +0.7560 0.14 4.542 +0.7045 0.13 4.103 +0.6595 0.14 3.697 +0.6168 0.21 3.272 +0.5821 0.29 2.863 +0.5486 0.43 2.455 +0.5209 0.62 2.081 +0.4959 1.04 1.833 +0.4714 1.31 1.849 +0.4509 1.38 1.914 +0.4305 1.45 1.948 +0.4133 1.46 1.958 +0.3974 1.47 1.952 +0.3815 1.46 1.933 +0.3679 1.48 1.895 +0.3542 1.50 1.866 +0.3425 1.48 1.871 +0.3315 1.48 1.883 +0.3204 1.54 1.898 +0.3107 1.53 1.893 +0.3009 1.53 1.889 +0.2924 1.49 1.878 +0.2844 1.47 1.869 +0.2761 1.43 1.847 +0.2689 1.38 1.803 +0.2616 1.35 1.749 +0.2551 1.33 1.688 +0.2490 1.33 1.631 +0.2426 1.32 1.577 +0.2371 1.32 1.536 +0.2313 1.30 1.497 +0.2262 1.31 1.460 +0.2214 1.30 1.427 +0.2164 1.30 1.387 +0.2119 1.30 1.350 +0.2073 1.30 1.304 +0.2033 1.33 1.277 +0.1993 1.33 1.251 +0.1953 1.34 1.226 +0.1916 1.32 1.203 +0.1879 1.28 1.188 diff --git a/etaSilver.txt b/etaSilver.txt new file mode 100644 index 0000000..95894d0 --- /dev/null +++ b/etaSilver.txt @@ -0,0 +1,50 @@ +lambda n k +1.937 0.24 14.08 +1.610 0.15 11.85 +1.393 0.13 10.10 +1.216 0.09 8.828 +1.088 0.04 7.795 +0.9840 0.04 6.992 +0.8920 0.04 6.312 +0.8211 0.04 5.727 +0.7560 0.03 5.242 +0.7045 0.04 4.838 +0.6595 0.05 4.483 +0.6168 0.06 4.152 +0.5821 0.05 3.858 +0.5486 0.06 3.586 +0.5209 0.05 3.324 +0.4959 0.05 3.093 +0.4714 0.05 2.869 +0.4509 0.04 2.657 +0.4305 0.04 2.462 +0.4133 0.05 2.275 +0.3974 0.05 2.070 +0.3815 0.05 1.864 +0.3679 0.07 1.657 +0.3542 0.10 1.419 +0.3425 0.14 1.142 +0.3315 0.17 0.829 +0.3204 0.81 0.392 +0.3107 1.13 0.616 +0.3009 1.34 0.964 +0.2924 1.39 1.161 +0.2844 1.41 1.264 +0.2761 1.41 1.331 +0.2689 1.38 1.372 +0.2616 1.35 1.387 +0.2551 1.33 1.393 +0.2490 1.31 1.389 +0.2426 1.30 1.378 +0.2371 1.28 1.367 +0.2313 1.28 1.357 +0.2262 1.26 1.344 +0.2214 1.25 1.342 +0.2164 1.22 1.336 +0.2119 1.20 1.325 +0.2073 1.18 1.312 +0.2033 1.15 1.296 +0.1993 1.14 1.277 +0.1953 1.12 1.255 +0.1916 1.10 1.232 +0.1879 1.07 1.212 \ No newline at end of file diff --git a/mpidefs-parallel.f90 b/mpidefs-parallel.f90 new file mode 100644 index 0000000..6f3bf02 --- /dev/null +++ b/mpidefs-parallel.f90 @@ -0,0 +1,256 @@ +! +! MPI alias definitions for parallel machines. +! +! +! last revised: 15 January 2011 +! + module mpidefs + use mpi + implicit none + integer :: ms_mpi_comm_world,ms_mpi_sum,ms_mpi_max,ms_mpi_min + + contains + + subroutine ms_mpi(mpi_command,mpi_recv_buf_i,mpi_recv_buf_r,mpi_recv_buf_c,mpi_recv_buf_dp, & + mpi_recv_buf_dc,mpi_send_buf_i,mpi_send_buf_r,mpi_send_buf_c, & + mpi_send_buf_dp,mpi_send_buf_dc,mpi_number,mpi_comm,mpi_group,mpi_rank,mpi_size,& + mpi_new_comm,mpi_new_group,mpi_new_group_list,mpi_operation) + integer, optional :: mpi_number,mpi_recv_buf_i(*),mpi_send_buf_i(*),mpi_comm,mpi_group,mpi_rank, & + mpi_size,mpi_new_comm,mpi_new_group,mpi_new_group_list(*),mpi_operation + integer :: stat(MPI_STATUS_SIZE) + real(4), optional :: mpi_recv_buf_r(*),mpi_send_buf_r(*) + real(8), optional :: mpi_recv_buf_dp(*),mpi_send_buf_dp(*) + complex(4), optional :: mpi_recv_buf_c(*),mpi_send_buf_c(*) + complex(8), optional :: mpi_recv_buf_dc(*),mpi_send_buf_dc(*) + character(*) :: mpi_command + integer :: type,ierr,comm,size,rank,group,newcomm + + if(mpi_command.eq.'init') then + call mpi_init(ierr) + ms_mpi_comm_world=mpi_comm_world + ms_mpi_sum=mpi_sum + ms_mpi_max=mpi_max + ms_mpi_min=mpi_min + return + endif + if(mpi_command.eq.'finalize') then + call mpi_finalize(ierr) + return + endif + if(present(mpi_comm)) then + comm=mpi_comm + else + comm=mpi_comm_world + endif + if(mpi_command.eq.'size') then + call mpi_comm_size(comm,size,ierr) + mpi_size=size + return + endif + if(mpi_command.eq.'rank') then + call mpi_comm_rank(comm,rank,ierr) + mpi_rank=rank + return + endif + if(mpi_command.eq.'group') then + call mpi_comm_group(comm,group,ierr) + mpi_group=group + return + endif + if(mpi_command.eq.'incl') then + call mpi_group_incl(mpi_group,mpi_size,mpi_new_group_list,group,ierr) + mpi_new_group=group + return + endif + if(mpi_command.eq.'create') then + call mpi_comm_create(comm,mpi_group,newcomm,ierr) + mpi_new_comm=newcomm + return + endif + if(mpi_command.eq.'barrier') then + call mpi_barrier (comm,ierr) + return + endif + + if(present(mpi_recv_buf_i).or.present(mpi_send_buf_i)) then + type=mpi_integer + if(mpi_command.eq.'bcast') then + call MPI_BCAST (mpi_send_buf_i,mpi_number,type,mpi_rank,comm,ierr) + return + endif + if(mpi_command.eq.'send') then + call mpi_send(mpi_send_buf_i,mpi_number,type,mpi_rank,1,comm,ierr) + return + endif + if(mpi_command.eq.'recv') then + call mpi_recv(mpi_recv_buf_i,mpi_number,type,mpi_rank,1,comm,stat,ierr) + return + endif + if(mpi_command.eq.'reduce') then + if(present(mpi_send_buf_i)) then + call mpi_reduce(mpi_send_buf_i,mpi_recv_buf_i,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + else + call mpi_reduce(mpi_in_place,mpi_recv_buf_i,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + endif + return + endif + if(mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_i)) then + call mpi_allreduce(mpi_send_buf_i,mpi_recv_buf_i,mpi_number,type,mpi_operation, & + comm,ierr) + else + call mpi_allreduce(mpi_in_place,mpi_recv_buf_i,mpi_number,type,mpi_operation, & + comm,ierr) + endif + return + endif + endif + + if(present(mpi_recv_buf_r).or.present(mpi_send_buf_r)) then + type=mpi_real + if(mpi_command.eq.'bcast') then + call MPI_BCAST (mpi_send_buf_r,mpi_number,type,mpi_rank,comm,ierr) + return + endif + if(mpi_command.eq.'send') then + call mpi_send(mpi_send_buf_r,mpi_number,type,mpi_rank,1,comm,ierr) + return + endif + if(mpi_command.eq.'recv') then + call mpi_recv(mpi_recv_buf_r,mpi_number,type,mpi_rank,1,comm,stat,ierr) + return + endif + if(mpi_command.eq.'reduce') then + if(present(mpi_send_buf_r)) then + call mpi_reduce(mpi_send_buf_r,mpi_recv_buf_r,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + else + call mpi_reduce(mpi_in_place,mpi_recv_buf_r,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + endif + return + endif + if(mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_r)) then + call mpi_allreduce(mpi_send_buf_r,mpi_recv_buf_r,mpi_number,type,mpi_operation, & + comm,ierr) + else + call mpi_allreduce(mpi_in_place,mpi_recv_buf_r,mpi_number,type,mpi_operation, & + comm,ierr) + endif + return + endif + endif + + if(present(mpi_recv_buf_c).or.present(mpi_send_buf_c)) then + type=mpi_complex + if(mpi_command.eq.'bcast') then + call MPI_BCAST (mpi_send_buf_c,mpi_number,type,mpi_rank,comm,ierr) + return + endif + if(mpi_command.eq.'send') then + call mpi_send(mpi_send_buf_c,mpi_number,type,mpi_rank,1,comm,ierr) + return + endif + if(mpi_command.eq.'recv') then + call mpi_recv(mpi_recv_buf_c,mpi_number,type,mpi_rank,1,comm,stat,ierr) + return + endif + if(mpi_command.eq.'reduce') then + if(present(mpi_send_buf_c)) then + call mpi_reduce(mpi_send_buf_c,mpi_recv_buf_c,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + else + call mpi_reduce(mpi_in_place,mpi_recv_buf_c,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + endif + return + endif + if(mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_c)) then + call mpi_allreduce(mpi_send_buf_c,mpi_recv_buf_c,mpi_number,type,mpi_operation, & + comm,ierr) + else + call mpi_allreduce(mpi_in_place,mpi_recv_buf_c,mpi_number,type,mpi_operation, & + comm,ierr) + endif + return + endif + endif + + if(present(mpi_recv_buf_dp).or.present(mpi_send_buf_dp)) then + type=mpi_double_precision + if(mpi_command.eq.'bcast') then + call MPI_BCAST (mpi_send_buf_dp,mpi_number,type,mpi_rank,comm,ierr) + return + endif + if(mpi_command.eq.'send') then + call mpi_send(mpi_send_buf_dp,mpi_number,type,mpi_rank,1,comm,ierr) + return + endif + if(mpi_command.eq.'recv') then + call mpi_recv(mpi_recv_buf_dp,mpi_number,type,mpi_rank,1,comm,stat,ierr) + return + endif + if(mpi_command.eq.'reduce') then + if(present(mpi_send_buf_dp)) then + call mpi_reduce(mpi_send_buf_dp,mpi_recv_buf_dp,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + else + call mpi_reduce(mpi_in_place,mpi_recv_buf_dp,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + endif + return + endif + if(mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_dp)) then + call mpi_allreduce(mpi_send_buf_dp,mpi_recv_buf_dp,mpi_number,type,mpi_operation, & + comm,ierr) + else + call mpi_allreduce(mpi_in_place,mpi_recv_buf_dp,mpi_number,type,mpi_operation, & + comm,ierr) + endif + return + endif + endif + + if(present(mpi_recv_buf_dc).or.present(mpi_send_buf_dc)) then + type=mpi_double_complex + if(mpi_command.eq.'bcast') then + call MPI_BCAST (mpi_send_buf_dc,mpi_number,type,mpi_rank,comm,ierr) + return + endif + if(mpi_command.eq.'send') then + call mpi_send(mpi_send_buf_dc,mpi_number,type,mpi_rank,1,comm,ierr) + return + endif + if(mpi_command.eq.'recv') then + call mpi_recv(mpi_recv_buf_dc,mpi_number,type,mpi_rank,1,comm,stat,ierr) + return + endif + if(mpi_command.eq.'reduce') then + if(present(mpi_send_buf_dc)) then + call mpi_reduce(mpi_send_buf_dc,mpi_recv_buf_dc,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + else + call mpi_reduce(mpi_in_place,mpi_recv_buf_dc,mpi_number,type,mpi_operation, & + mpi_rank,comm,ierr) + endif + return + endif + if(mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_dc)) then + call mpi_allreduce(mpi_send_buf_dc,mpi_recv_buf_dc,mpi_number,type,mpi_operation, & + comm,ierr) + else + call mpi_allreduce(mpi_in_place,mpi_recv_buf_dc,mpi_number,type,mpi_operation, & + comm,ierr) + endif + return + endif + endif + + end subroutine ms_mpi + end module mpidefs diff --git a/mpidefs-serial.f90 b/mpidefs-serial.f90 new file mode 100644 index 0000000..454f11d --- /dev/null +++ b/mpidefs-serial.f90 @@ -0,0 +1,123 @@ +! +! MPI alias definitions for serial machines. +! +! +! last revised: 15 January 2011 +! + module mpidefs + implicit none + integer :: mpi_comm_world,ms_mpi_comm_world,ms_mpi_sum,ms_mpi_max,ms_mpi_min + + contains + + subroutine ms_mpi(mpi_command,mpi_recv_buf_i,mpi_recv_buf_r,mpi_recv_buf_c,mpi_recv_buf_dp, & + mpi_recv_buf_dc,mpi_send_buf_i,mpi_send_buf_r,mpi_send_buf_c, & + mpi_send_buf_dp,mpi_send_buf_dc,mpi_number,mpi_comm,mpi_group,mpi_rank,mpi_size, & + mpi_new_comm,mpi_new_group,mpi_new_group_list,mpi_operation) + integer, optional :: mpi_number,mpi_recv_buf_i(*),mpi_send_buf_i(*),mpi_comm,mpi_group,mpi_rank, & + mpi_size,mpi_new_comm,mpi_new_group,mpi_new_group_list(*),mpi_operation + integer :: stat(1) + real(4), optional :: mpi_recv_buf_r(*),mpi_send_buf_r(*) + real(8), optional :: mpi_recv_buf_dp(*),mpi_send_buf_dp(*) + complex(4), optional :: mpi_recv_buf_c(*),mpi_send_buf_c(*) + complex(8), optional :: mpi_recv_buf_dc(*),mpi_send_buf_dc(*) + character(*) :: mpi_command + integer :: type,ierr,comm,size,rank,group,newcomm + + if(mpi_command.eq.'init') then + mpi_comm_world=1 + return + endif + if(mpi_command.eq.'finalize') then + return + endif + if(present(mpi_comm)) then + comm=mpi_comm + else + comm=mpi_comm_world + endif + if(mpi_command.eq.'size') then + mpi_size=1 + return + endif + if(mpi_command.eq.'rank') then + mpi_rank=0 + return + endif + if(mpi_command.eq.'group') then + return + endif + if(mpi_command.eq.'incl') then + mpi_new_group=0 + return + endif + if(mpi_command.eq.'create') then + mpi_new_comm=1 + return + endif + if(mpi_command.eq.'barrier') then + return + endif + + if(present(mpi_recv_buf_i).or.present(mpi_send_buf_i)) then + if(mpi_command.eq.'bcast'.or.mpi_command.eq.'send'.or.mpi_command.eq.'recv') then + return + endif + if(mpi_command.eq.'reduce'.or.mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_i)) then + mpi_recv_buf_i(1:mpi_number)=mpi_send_buf_i(1:mpi_number) + endif + endif + return + endif + + if(present(mpi_recv_buf_r).or.present(mpi_send_buf_r)) then + if(mpi_command.eq.'bcast'.or.mpi_command.eq.'send'.or.mpi_command.eq.'recv') then + return + endif + if(mpi_command.eq.'reduce'.or.mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_r)) then + mpi_recv_buf_r(1:mpi_number)=mpi_send_buf_r(1:mpi_number) + endif + endif + return + endif + + if(present(mpi_recv_buf_c).or.present(mpi_send_buf_c)) then + if(mpi_command.eq.'bcast'.or.mpi_command.eq.'send'.or.mpi_command.eq.'recv') then + return + endif + if(mpi_command.eq.'reduce'.or.mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_c)) then + mpi_recv_buf_c(1:mpi_number)=mpi_send_buf_c(1:mpi_number) + endif + endif + return + endif + + if(present(mpi_recv_buf_dp).or.present(mpi_send_buf_dp)) then + if(mpi_command.eq.'bcast'.or.mpi_command.eq.'send'.or.mpi_command.eq.'recv') then + return + endif + if(mpi_command.eq.'reduce'.or.mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_dp)) then + mpi_recv_buf_dp(1:mpi_number)=mpi_send_buf_dp(1:mpi_number) + endif + endif + return + endif + + if(present(mpi_recv_buf_dc).or.present(mpi_send_buf_dc)) then + if(mpi_command.eq.'bcast'.or.mpi_command.eq.'send'.or.mpi_command.eq.'recv') then + return + endif + if(mpi_command.eq.'reduce'.or.mpi_command.eq.'allreduce') then + if(present(mpi_send_buf_dc)) then + mpi_recv_buf_dc(1:mpi_number)=mpi_send_buf_dc(1:mpi_number) + endif + endif + return + endif + + end subroutine ms_mpi + end module mpidefs diff --git a/msinput.inp b/msinput.inp new file mode 100644 index 0000000..0a9d4e5 --- /dev/null +++ b/msinput.inp @@ -0,0 +1,90 @@ +number_spheres +27 +sphere_position_file +cube27.pos +output_file +test.dat +run_print_file + +length_scale_factor +2 +real_ref_index_scale_factor +1.4 +imag_ref_index_scale_factor +.1 +real_chiral_factor +0.d0 +imag_chiral_factor +0.d0 +mie_epsilon +1.d-4 +translation_epsilon +1.d-6 +solution_epsilon +1.d-7 +max_number_iterations +5000 +max_memory_per_processor +1500 +store_translation_matrix +1 +near_field_distance +-1. +iterations_per_correction +20 +min_scattering_angle_deg +0.d0 +max_scattering_angle_deg +180.d0 +number_scattering_angles +181 +normalize_scattering_matrix +1 +gaussian_beam_constant +0.0d0 +gaussian_beam_focal_point +0.d0,0.d0,0.d0 +fixed_or_random_orientation +0 +incident_azimuth_angle_deg +0.d0 +incident_polar_angle_deg +0.d0 +scattering_plane_angle_deg +0.d0 +calculate_scattering_coefficients +1 +scattering_coefficient_file +amn_temp.dat +track_iterations +1 +calculate_near_field +1 +near_field_plane_coord +1 +near_field_plane_position +0.d0 +near_field_plane_vertices +-20.d0,-20.d0,20.d0,20.d0 +spacial_step_size +.2d0 +polarization_angle_deg +0.d0 +near_field_output_file +nf-temp.dat +near_field_output_data +2 +plane_wave_epsilon +0.01d0 +calculate_t_matrix +1 +t_matrix_file +tmatrix-temp.dat +t_matrix_convergence_epsilon +1.d-9 +sphere_sizes_and_positions +10. 0. 0. 0. +5. 0. 0. 15. +2. 0. 0. -12. +8. 18. 0. 0. +end_of_options diff --git a/mstm-generic-main-v2.2.f90 b/mstm-generic-main-v2.2.f90 new file mode 100644 index 0000000..6ead9a5 --- /dev/null +++ b/mstm-generic-main-v2.2.f90 @@ -0,0 +1,488 @@ +! +! generic mstm calling program. +! +! this code is intended for user modification. It does not employ input files, command line arguments, etc. +! +! all parameters must be hardwired. read the code for the basic ideas. +! + program main + use mpidefs + use mpidata + use intrinsics + use spheredata + use numconstants + use specialfuncs + use miecoefdata + use translation + use solver + use scatprops + use nearfield + implicit none + integer :: nsphere,neqns,nodrmax,nodrt,i,k,niter,istat,numtheta, & + nblkt,nodrg,m,n,p,l,q,mn,kl,m1,n1,l1,k1,q1,w,klm,mnm,ikm, & + fixedorrandom,numargs,calctmatrix,maxiter,nodrta(1),calcnf, & + calcamn,ip1,ip2,ma,na,nsend,nfplane,nfoutunit,nfoutdata, & + maxmbperproc,trackiterations,nonactive,normalizesm, & + storetranmat,calcsm,niterstep,fftranpresent + integer, allocatable :: nodr(:),ntran(:),sphereblk(:),sphereoff(:) + real (8) :: alphadeg,betadeg,alpha,beta,epsmie,epstran,epssoln, & + qexttot,qabstot,xv,scalefac,qscatot,asymparm, & + rireal,riimag,phideg,theta1d,theta2d,thetad,costheta,phi, & + sm(4,4),time1,time2,fc1,fc2,fc3,fc4,epstcon,qabslm,absrat, & + cbeam,gbfocus(3),maxerr,nfplanepos,nfplanevert(2,2), & + deltax,gammadeg,epspw,gamma,qexttotpar,qexttotper, & + qabstotpar,qabstotper,qscatotpar,qscatotper,cphi,sphi,s11, & + nfdistance + real(8), allocatable :: xsp(:), rpos(:,:),qext(:,:),qabs(:,:), & + qsca(:,:),smc(:,:,:),smt(:,:,:) + complex(8) :: sa(4),chiralfactor + complex(8), allocatable :: amnp(:,:),amnp0(:,:,:,:),ri(:,:), & + gmn(:),amnp1(:,:,:),amnp2(:,:,:) + character*30 :: inputfile,spherefile,parmfile,outfile,tmatrixfile,& + amnfile,nfoutfile,runfile + complex(8), allocatable :: pmnp0(:,:,:,:) + integer :: ierr,rank,printinputdata,runprintunit,numprocs +! +! this main program was set up to perform a loop of T matrix calculations, +! all involving scaled sphere positions from the file 'ran200fvp5.pos' +! +! +! extra variable declarations go here +! + integer :: case,numcases + real(8) :: xsp0,rpos0(3,200),rotang,volfrac,volfrac0,volfrac1,posscale + complex(8) :: ri0 +! +! define the sphere properties and run parameters +! + nsphere=200 + xsp0=3.d0 + ri0=(1.31d0,0.0d0) + chiralfactor=0.d0 + volfrac0=0.1d0 + volfrac1=0.5d0 + + allocate(xsp(nsphere),rpos(3,nsphere),nodr(nsphere),ntran(nsphere), & + ri(2,nsphere),sphereblk(nsphere),sphereoff(nsphere+1)) + spherefile='ran200fvp5.pos' + open(1,file=spherefile) + do i=1,nsphere + read(1,*) xsp(i),rpos0(:,i) + enddo + close(1) + + outfile='test.dat' + runfile=' ' + xsp=xsp0 + xv=xsp0*dble(nsphere)**.3333d0 + ri=ri0 + epsmie=1.d-4 + epstran=1.d-6 + epssoln=1.d-10 + niter=2000 + fixedorrandom=1 + theta1d=0. + theta2d=180. + numtheta=181 + maxmbperproc=1500. + storetranmat=1 + nfdistance=10000. + normalizesm=0 + calcamn=1 + amnfile='amn-temp.dat' + phideg=0.d0 + alphadeg=0.d0 + betadeg=0.d0 + trackiterations=0 + calcnf=0 + cbeam=0.d0 + nfplane=1 + nfplanepos=0.d0 + deltax=0.2d0 + nfplanevert=reshape((/-40.d0,-40.d0,40.d0,40.d0/),(/2,2/)) + gammadeg=0.d0 + nfoutfile='nftest2b.dat' + nfoutunit=2 + nfoutdata=1 + epspw=0.01d0 + calctmatrix=1 + tmatrixfile='tmatrix-temp.dat' + epstcon=1.d-6 +! +! this erases the output file: the code runs a loop where +! output values are appended to the file +! + open(1,file=outfile) + close(1,status='delete') + if(runfile.ne.' ') then + runprintunit=4 + open(runprintunit,file=runfile) + else + runprintunit=6 + endif + call setrunparameters(run_print_unit=runprintunit) +! +! initialize mpi +! + call ms_mpi(mpi_command='init') +! +! this is the main variable loop. In this example the volume fraction of the spheres +! is changed with each case. +! + numcases=20 + do case=1,numcases-1 + volfrac=volfrac0+(volfrac1-volfrac0)*dble(case-1)/dble(numcases-1) + posscale=(volfrac1/volfrac)**.33333d0 + rpos=rpos0*posscale*xsp0 + write(runprintunit,'('' case, fv:'',i5,f8.2)') case, volfrac +! +! the rest of the code is basically the same as the mstm +! main program, without the getrunparameter calls. +! + if(numtheta.gt.0) then + if(allocated(smt)) deallocate(smt) + allocate(smt(4,4,numtheta)) + endif +! +! determine if optical activity is present +! + nonactive=1 + do i=1,nsphere + if(cdabs(ri(1,i)-ri(2,i)).gt.1.d-10) then + nonactive=0 + exit + endif + enddo +! +! calculation of sphere mie coefficients, order limits +! + call miecoefcalc(nsphere,xsp,ri,epsmie) + call getmiedata(sphere_order=nodr,max_order=nodrmax,number_equations=neqns, & + sphere_block=sphereblk,sphere_block_offset=sphereoff) +! +! determine the size of the parallel run and set it up +! + call ms_mpi(mpi_command='size',mpi_size=numprocs) + call ms_mpi(mpi_command='rank',mpi_rank=rank) + call ms_mpi(mpi_command='barrier') + call mpisetup(nsphere,nodr,rpos,fixedorrandom,maxmbperproc,storetranmat, & + nfdistance,fftranpresent,runprintunit) + call ms_mpi(mpi_command='barrier') +! +! this was an option for moving the GB focal point +! + gbfocus=(/0.d0,dble(case-1),0.d0/)*.5d0 + gbfocus=0.d0 +! +! translation matrix calculation +! + call mpirottranmtrxsetup(nsphere,nodr,rpos,(1.d0,0.d0),storetranmat, & + nfdistance,runprintunit) + call ms_mpi(mpi_command='barrier') +! +! determine orders required to expand scattered fields about target origin +! + call tranorders(nsphere,nodr,rpos,epstran,ntran,nodrt) +! +! report the size of the run +! + if(rank.eq.0) then + write(runprintunit,'('' maximum sphere order:'',i5)') nodrmax + write(runprintunit,'('' estimated T matrix order:'',i5)') nodrt + write(runprintunit,'('' number of equations:'',i9)') neqns + call flush(runprintunit) + endif +! +! the main calculations +! + if(fixedorrandom.eq.1) then +! +! random orientation option +! + if(allocated(qext)) deallocate(qext,qabs,qsca) + allocate(qext(nsphere,1), qabs(nsphere,1), qsca(nsphere,1)) + if(calctmatrix.ge.1) then +! +! this option calculates the T matrix either from the beginning or where left off +! + if(rank.eq.0) time1=mytime() + call tmatrixsoln(neqns,nsphere,nodr,nodrt,xsp,rpos,epssoln,epstcon,niter,& + calctmatrix,tmatrixfile,fftranpresent,niterstep,qext,qabs,qsca,istat) + if(rank.eq.0) then + time2=mytime()-time1 + call timewrite(runprintunit,' execution time:',time2) + endif + call rottranmtrxclear() + else +! +! and this has the T matrix already calculated and stored in the file. +! +! read the order of the T matrix and broadcast to the processors. +! + if(rank.eq.0) then + open(3,file=tmatrixfile) + read(3,*) nodrt + close(3) + write(runprintunit,'('' t matrix order:'',i5)') nodrt + call flush(runprintunit) + endif + nodrta(1)=nodrt + call ms_mpi(mpi_command='bcast',mpi_send_buf_i=nodrta,mpi_number=1,mpi_rank=0) + nodrt=nodrta(1) + call ms_mpi(mpi_command='barrier') + endif +! +! the T matrix is available; calculate the random orientation scattering matrix +! + nblkt=nodrt*(nodrt+2) + nodrg=nodrt*2 + if(allocated(smc)) deallocate(smc) + allocate(smc(4,4,0:nodrg)) + call ranorientscatmatrix(xv,nsphere,nodrt,nodrg,cbeam,tmatrixfile,smc,qext, & + qabs,qsca) + if(rank.eq.0) then + qexttot=sum(qext(:,1)*xsp*xsp)/xv/xv + qabstot=sum(qabs(:,1)*xsp*xsp)/xv/xv + qscatot=qexttot-qabstot + asymparm=dble(smc(1,1,1)/smc(1,1,0))/3.d0 + call ranorienscatmatrixcalc(numtheta,theta1d,theta2d,1,smc,nodrg,smt) + endif + else +! +! fixed orientation option +! + alpha=alphadeg*pi/180.d0 + beta=betadeg*pi/180.d0 + phi=phideg*pi/180.d0 + if(allocated(amnp)) deallocate(amnp) + allocate(amnp(neqns,2)) + if(allocated(qext)) deallocate(qext,qabs,qsca) + allocate(qext(nsphere,3), qabs(nsphere,3), qsca(nsphere,3)) + if(calcamn.eq.1) then +! +! this option calculates the scattering coefficients +! + if(rank.eq.0) time1=mytime() + call fixedorsoln(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,epssoln,& + epstran,niter,amnp,qext,qabs,qsca,maxerr,maxiter,trackiterations, & + fftranpresent,niterstep,istat) +! +! write the scattering coefficients to the file +! + if(rank.eq.0) then + time2=mytime()-time1 + write(runprintunit,'('' max iterations, soln error:'',i6,e13.5)') & + maxiter,maxerr + call timewrite(runprintunit,' execution time:',time2) + open(3,file=amnfile) + do i=1,nsphere + write(3,'(6e13.5)') qext(i,:),qabs(i,:),qsca(i,:) + allocate(amnp1(0:nodr(i)+1,nodr(i),2),amnp2(0:nodr(i)+1,nodr(i),2)) + ip1=sphereoff(i)+1 + ip2=sphereoff(i)+sphereblk(i) + amnp1=reshape(amnp(ip1:ip2,1),(/nodr(i)+2,nodr(i),2/)) + amnp2=reshape(amnp(ip1:ip2,2),(/nodr(i)+2,nodr(i),2/)) + do n=1,nodr(i) + do m=-n,n + if(m.le.-1) then + ma=n+1 + na=-m + else + ma=m + na=n + endif + write(3,'(4e17.9)') amnp1(ma,na,1),amnp2(ma,na,1) + write(3,'(4e17.9)') amnp1(ma,na,2),amnp2(ma,na,2) + enddo + enddo + deallocate(amnp1,amnp2) + enddo + close(3) + endif + else +! +! this option reads the scattering coefficients from the file +! + if(rank.eq.0) then + open(3,file=amnfile) + do i=1,nsphere + read(3,'(6e13.5)') qext(i,:),qabs(i,:),qsca(i,:) + allocate(amnp1(0:nodr(i)+1,nodr(i),2),amnp2(0:nodr(i)+1,nodr(i),2)) + do n=1,nodr(i) + do m=-n,n + if(m.le.-1) then + ma=n+1 + na=-m + else + ma=m + na=n + endif + read(3,'(4e17.9)') amnp1(ma,na,1),amnp2(ma,na,1) + read(3,'(4e17.9)') amnp1(ma,na,2),amnp2(ma,na,2) + enddo + enddo + ip1=sphereoff(i)+1 + ip2=sphereoff(i)+sphereblk(i) + amnp(ip1:ip2,1)=reshape(amnp1(0:nodr(i)+1,1:nodr(i),1:2),(/sphereblk(i)/)) + amnp(ip1:ip2,2)=reshape(amnp2(0:nodr(i)+1,1:nodr(i),1:2),(/sphereblk(i)/)) + deallocate(amnp1,amnp2) + enddo + close(3) + endif +! +! broadcast the scattering coefficients to the other processors +! + nsend=neqns*2 + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=amnp,mpi_number=nsend,mpi_rank=0) + endif +! +! calculate the efficiency factors +! + cphi=cos(phi) + sphi=sin(phi) + qexttotpar=sum((qext(:,1)*cphi*cphi+2.d0*qext(:,3)*cphi*sphi+qext(:,2)*sphi*sphi) & + *xsp*xsp)/xv/xv + qexttotper=sum((qext(:,1)*sphi*sphi-2.d0*qext(:,3)*cphi*sphi+qext(:,2)*cphi*cphi) & + *xsp*xsp)/xv/xv + qabstotpar=sum((qabs(:,1)*cphi*cphi+2.d0*qabs(:,3)*cphi*sphi+qabs(:,2)*sphi*sphi) & + *xsp*xsp)/xv/xv + qabstotper=sum((qabs(:,1)*sphi*sphi-2.d0*qabs(:,3)*cphi*sphi+qabs(:,2)*cphi*cphi) & + *xsp*xsp)/xv/xv + qscatotpar=qexttotpar-qabstotpar + qscatotper=qexttotper-qabstotper + qexttot=(qexttotpar+qexttotper)*.5d0 + qabstot=(qabstotpar+qabstotper)*.5d0 + qscatot=(qscatotpar+qscatotper)*.5d0 + qext(:,1)=(qext(:,1)+qext(:,2))*.5d0 + qabs(:,1)=(qabs(:,1)+qabs(:,2))*.5d0 + qsca(:,1)=(qsca(:,1)+qsca(:,2))*.5d0 + call rottranmtrxclear() +! +! calculate the target-based expansion and rotate to the incident field frame +! + allocate(amnp0(0:nodrt+1,nodrt,2,2),pmnp0(0:nodrt+1,nodrt,2,2)) + do k=1,2 + call amncommonorigin(neqns,nsphere,nodr,ntran,nodrt,rpos, & + amnp(1:neqns,k),amnp0(0:,1:,1:,k)) + call rotvec(alpha,beta,0.d0,nodrt,nodrt,amnp0(0:,1:,1:,k),1) + enddo +! +! calculate the asymmetry parameter and the scattering matrix +! + allocate(gmn(0:2)) + call s11expansion(amnp0,nodrt,0,1,gmn) + asymparm=dble(gmn(1)/gmn(0))/3.d0 + do i=1,numtheta + thetad=theta1d+(theta2d-theta1d)*(i-1)/max(1.d0,dble(numtheta-1)) + costheta=cos(thetad*pi/180.d0) + call scatteringmatrix(amnp0,nodrt,xv,costheta,phi,sa,smt(:,:,i)) + enddo + deallocate(amnp0,pmnp0,gmn) + endif +! +! output file operations +! + if(rank.eq.0) then + open(1,file=outfile,position='append') + if(nonactive.eq.0) then + write(1,'('' sphere S.P., pos. (x,y,z), ref. index (L,R), Qext, Qsca, Qabs, Qabs/Qabs,LM'')') + else + write(1,'('' sphere S.P., pos. (x,y,z), ref. index, Qext, Qsca, Qabs, Qabs/Qabs,LM'')') + endif + do i=1,nsphere + call getmiedata(which_sphere=i,sphere_qabs=qabslm) + if(dimag(ri(1,i)).eq.0.d0.and.dimag(ri(2,i)).eq.0.d0) then + absrat=1.d0 + else + absrat=qabs(i,1)/qabslm + endif + if(nonactive.eq.0) then + write(1,'(i5,4f10.4,4f10.6,3e13.5,f8.4)') i, xsp(i),rpos(:,i)+gbfocus, ri(:,i), & + qext(i,1),qsca(i,1),qabs(i,1),absrat + else + write(1,'(i5,4f10.4,2f10.6,3e13.5,f8.4)') i, xsp(i),rpos(:,i)+gbfocus, ri(1,i), & + qext(i,1),qsca(i,1),qabs(i,1),absrat + endif + enddo + if(fixedorrandom.eq.1) then + write(1,'('' total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm'')') + write(1,'(6e13.5)') qexttot,qabstot,qscatot,asymparm + else + write(1,'('' unpolarized total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm'')') + write(1,'(6e13.5)') qexttot,qabstot,qscatot,asymparm + write(1,'('' parallel total ext, abs, scat efficiencies'')') + write(1,'(6e13.5)') qexttotpar,qabstotpar,qscatotpar + write(1,'('' perpendicular total ext, abs, scat efficiencies'')') + write(1,'(6e13.5)') qexttotper,qabstotper,qscatotper + endif + + write(1,'('' scattering matrix elements'')') + if(normalizesm.eq.0) then + write(1,'('' theta s11 s22 s33'',& + &'' s44'',& + &'' s21 s32 s43 s31'',& + &'' s42 s41'')') + do i=1,numtheta + thetad=theta1d+(theta2d-theta1d)*(i-1)/max(1.d0,dble(numtheta-1)) + write(1,'(f8.2,10e12.4)') thetad,smt(1,1,i),smt(2,2,i),smt(3,3,i), & + smt(4,4,i),smt(1,2,i),smt(2,3,i),smt(3,4,i),smt(1,3,i), & + smt(2,4,i),smt(1,4,i) + enddo + else + write(1,'('' theta s11 s22/s11 s33'',& + &''/s11 s44'',& + &''/s11 s21/s11 s32/s11 s43/s11 s31'',& + &''/s11 s42/s11 s41/s11'')') + do i=1,numtheta + thetad=theta1d+(theta2d-theta1d)*(i-1)/max(1.d0,dble(numtheta-1)) + s11=smt(1,1,i) + write(1,'(f8.2,10e12.4)') thetad,smt(1,1,i),smt(2,2,i)/s11,smt(3,3,i)/s11, & + smt(4,4,i)/s11,smt(1,2,i)/s11,smt(2,3,i)/s11,smt(3,4,i)/s11,smt(1,3,i)/s11, & + smt(2,4,i)/s11,smt(1,4,i)/s11 + enddo + endif + if(fixedorrandom.eq.1) then + write(1,'('' scattering matrix expansion coefficients'')') + write(1,'('' w a11 a22 a33 '',& + &''a23 a32 a44 a12 '',& + &''a34 a13 a24 a14'')') + do w=0,nodrg + write(1,'(i5,11e12.4)') w,smc(1,1,w),smc(2,2,w),& + smc(3,3,w),smc(2,3,w),smc(3,2,w),smc(4,4,w),& + smc(1,2,w),smc(3,4,w),smc(1,3,w),smc(2,4,w),& + smc(1,4,w) + enddo + endif + close(1) + endif +! +! near field calculation options +! + if(fixedorrandom.eq.0.and.calcnf.eq.1) then +! +! this was a modification to the main: the near field file +! is opened for appending +! + if(rank.eq.0) then + open(nfoutunit,file=nfoutfile,position='append') + endif + gamma=gammadeg*pi/180.d0 + call nearfieldgridcalc(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + nfplane,nfplanepos,nfplanevert,gbfocus,deltax,gamma,nfoutunit,epspw, & + nfoutdata,runprintunit) + if(rank.eq.0) then + close(nfoutunit) + endif + endif +! +! all done! +! +! +! and this ends the main variable loop. +! + enddo +! +! time to go home +! + call ms_mpi(mpi_command='finalize') + end diff --git a/mstm-gui.py b/mstm-gui.py new file mode 100644 index 0000000..eeace57 --- /dev/null +++ b/mstm-gui.py @@ -0,0 +1,215 @@ +#!/usr/bin/python + +from mstm_materials import * +from mstm_parameters import * +from mstm_simparser import * +import time +import sys + +#PyQt4 libraries +from PyQt4 import QtGui +from PyQt4 import QtCore +from PyQt4 import uic + +class GuiWindow(QtGui.QMainWindow): + + params = ParameterClass('msinput.inp') + + def setParams(self): + #update the Gui based on values in the parameters structure + self.ui.spinStartLambda.setValue(self.params.minLambda) + self.ui.spinEndLambda.setValue(self.params.maxLambda) + self.ui.spinNumSamples.setValue(self.params.nSamples) + self.ui.spinNumSpheres.setValue(int(self.params['number_spheres'])) + #self.ui.spinAlpha.setValue(float(self.params['incident_azimuth_angle_deg'])) + #self.ui.spinBeta.setValue(float(self.params['incident_polar_angle_deg'])) + + fi = QtCore.QFileInfo(self.params.matFilename) + self.ui.txtMaterial.setText(fi.baseName()) + + #update global parameters for the dimer simulation + self.ui.spinSpacing.setValue(d) + + def getParams(self): + self.params.minLambda = self.ui.spinStartLambda.value() + self.params.maxLambda = self.ui.spinEndLambda.value() + self.params.nSamples = self.ui.spinNumSamples.value() + self.params.nSpheres = self.ui.spinNumSpheres.value() + self.params['incident_azimuth_angle_deg'] = self.ui.spinAlpha.value() + self.params['incident_polar_angle_deg'] = self.ui.spinBeta.value() + + + #global parameters for dimers + d = self.ui.spinSpacing.value() + + return self.params + + def simulate(self): + self.results = RunSimulation(self.params) + + def saveresults(self): + fileName = QtGui.QFileDialog.getSaveFileName(w, 'Save Spectral Results', '', 'DAT data files (*.dat)') + if fileName: + self.results.saveFile(fileName) + + def loadmaterial(self): + fileName = QtGui.QFileDialog.getOpenFileName(w, 'Load Material Refractive Index', '', 'TXT data files (*.txt)') + if fileName: + self.params.matFilename = fileName + + fi = QtCore.QFileInfo(fileName) + self.ui.txtMaterial.setText(fi.baseName()) + + def __init__(self): + QtGui.QWidget.__init__(self) + + #dimer-specific settings + self.params['number_spheres'] = 2 + self.params['sphere_position_file'] = '' + + #load the UI window + self.ui = uic.loadUi('mstm_guiwindow.ui') + #update the displayed parameters + self.setParams() + #display the UI + self.ui.show() + + #simulation button + self.connect(self.ui.btnSimulate, QtCore.SIGNAL("clicked()"), self.simulate) + self.connect(self.ui.mnuSaveResults, QtCore.SIGNAL("triggered()"), self.saveresults) + self.connect(self.ui.mnuLoadMaterial, QtCore.SIGNAL("triggered()"), self.loadmaterial) + +class ProgressBar(QtGui.QWidget): + def __init__(self, parent=None, total=20): + super(ProgressBar, self).__init__(parent) + self.name_line = QtGui.QLineEdit() + + self.progressbar = QtGui.QProgressBar() + self.progressbar.setMinimum(1) + self.progressbar.setMaximum(total) + + main_layout = QtGui.QGridLayout() + main_layout.addWidget(self.progressbar, 0, 0) + + self.setLayout(main_layout) + self.setWindowTitle("Progress") + + def update_progressbar(self, val): + self.progressbar.setValue(val) + + +def RunSimulation(parameters): + + #load the material + material = MaterialClass(parameters.matFilename) + + #add water if necessary + if parameters.inWater: + material.addSolution(1.33) + + #set the parameters based on the UI + parameters = w.getParams() + + #range for simulation + minLambda = parameters.minLambda + maxLambda = parameters.maxLambda + nSamples = parameters.nSamples + + #store the simulation results + results = SimParserClass() + + #create a progress bar + pbar = ProgressBar(total=nSamples) + pbar.show() + + #for each wavelength in the material + for i in range(nSamples): + + l = minLambda + i*(maxLambda - minLambda)/(nSamples - 1) + + + + #set the computed parameters + m = material[l] + n = m.n + parameters['real_ref_index_scale_factor'] = n.real + parameters['imag_ref_index_scale_factor'] = n.imag + parameters['length_scale_factor'] = (2.0 * 3.14159)/l + parameters['scattering_plane_angle_deg'] = gamma; + + + parameters.clearSpheres() + parameters.addSphere(a, -(d + 2*a)/2, 0, 0) + parameters.addSphere(a, (d + 2*a)/2, 0, 0) + + #save the scripted input file + parameters.saveFile('scriptParams.inp') + + #run the binary + from subprocess import call + devnull = open('/dev/null', 'w') + call(["./ms-tmatrix", "scriptParams.inp"], stdout=devnull) + + results.parseSimFile(l, 'test.dat') + + #update the progress bar + pbar.update_progressbar(i+1) + + + #plot results of interest + import matplotlib.pyplot as plt + wl = results['lambda'] + unpol = results['extinction_unpolarized'] + para = results['extinction_parallel'] + perp = results['extinction_perpendicular'] + plt.plot(wl, unpol, 'r-', wl, para, 'g-', wl, perp, 'b-') + plt.ylabel('Extinction') + plt.xlabel('Wavelength (um)') + plt.show() + + #return the results + return results; + + + + + + +#input template file name +inpFilename = 'msinput.inp' + +#output spectral file name +outFilename = 'spectralOut.txt' + +#sphere radii +a = 0.025 +#distance between spheres +d = 0.002 +#incident light directions +alpha = 0 +beta = 0 +gamma = 0 + +#results stored for each spectral sample +resultLabels = {'lambda', 'extinction_unpolarized', 'extinction_parallel', 'extinction_perpendicular'} + + + + + +outFile = open(outFilename, 'w') + +#number of characters in the progress bar +pb_max = 50 + + + +#create a Qt window +app = QtGui.QApplication(sys.argv) +w = GuiWindow() +sys.exit(app.exec_()) + + + + + diff --git a/mstm-intrinsics.f90 b/mstm-intrinsics.f90 new file mode 100644 index 0000000..f63abab --- /dev/null +++ b/mstm-intrinsics.f90 @@ -0,0 +1,52 @@ + module intrinsics +! +! compiler-dependent intrinsic functions. +! +! +! last revised: 15 January 2011 +! + + implicit none + contains +! +! system clock +! + real function mytime() + implicit none + real :: etime + real(4), parameter :: x=0. + real :: t(2) +! mytime=secnds(x) + mytime=etime(t) + end function mytime + +! flush is one of the best named functions in fortran, although it does not do what I think it should. This function flushes +! the buffer to print unit i, so when the unit is flushed, all data written to the open file will appear in the file. +! Not all compilers have this function. + + subroutine flush(i) + implicit none + integer :: i + flush(i) + end subroutine flush +! +! number of command-line arguments. +! + integer function mstm_nargs() + implicit none + integer nargs +! mstm_nargs=nargs() + mstm_nargs=iargc() + end function mstm_nargs +! +! command line argument retrieval +! + subroutine mstm_getarg(char) + implicit none + integer :: istat + character(*) :: char +! call getarg(1,char,istat) + call getarg(1,char) + end subroutine mstm_getarg + + end module intrinsics diff --git a/mstm-main-v2.2.f90 b/mstm-main-v2.2.f90 new file mode 100644 index 0000000..3f82e92 --- /dev/null +++ b/mstm-main-v2.2.f90 @@ -0,0 +1,417 @@ +! +! mstm main program +! +! +! original release: 15 January 2011 +! 21 February 2011: modifications to fixed orientation efficiency factor +! + program main + use mpidefs + use mpidata + use intrinsics + use spheredata + use numconstants + use specialfuncs + use miecoefdata + use translation + use solver + use scatprops + use nearfield + implicit none + integer :: nsphere,neqns,nodrmax,nodrt,i,k,niter,istat,numtheta, & + nblkt,nodrg,m,n,p,l,q,mn,kl,m1,n1,l1,k1,q1,w,klm,mnm,ikm, & + fixedorrandom,numargs,calctmatrix,maxiter,nodrta(1),calcnf, & + calcamn,ip1,ip2,ma,na,nsend,nfplane,nfoutunit,nfoutdata, & + maxmbperproc,trackiterations,nonactive,normalizesm,storetranmat, & + fftranpresent,niterstep + integer, allocatable :: nodr(:),ntran(:),sphereblk(:),sphereoff(:) + real (8) :: alphadeg,betadeg,alpha,beta,epsmie,epstran,epssoln, & + qexttot,qabstot,xv,scalefac,qscatot,asymparm, & + rireal,riimag,phideg,theta1d,theta2d,thetad,costheta,phi, & + sm(4,4),time1,time2,fc1,fc2,fc3,fc4,epstcon,qabslm,absrat, & + cbeam,gbfocus(3),maxerr,nfplanepos,nfplanevert(2,2), & + deltax,gammadeg,epspw,gamma,qexttotpar,qexttotper, & + qabstotpar,qabstotper,qscatotpar,qscatotper,cphi,sphi,s11, & + nfdistance + real(8), allocatable :: xsp(:), rpos(:,:),qext(:,:),qabs(:,:), & + qsca(:,:),smc(:,:,:),smt(:,:,:) + complex(8) :: sa(4) + complex(8), allocatable :: amnp(:,:),amnp0(:,:,:,:),ri(:,:), & + gmn(:),amnp1(:,:,:),amnp2(:,:,:) + character*30 :: inputfile,spherefile,parmfile,outfile,tmatrixfile,& + amnfile,nfoutfile + complex(8), allocatable :: pmnp0(:,:,:,:) + integer :: ierr,rank,printinputdata,runprintunit,numprocs +! +! command line argument retrieval for input file +! + printinputdata=1 + numargs=mstm_nargs() + if(numargs.eq.0) then + inputfile='msinput.inp' + else + call mstm_getarg(inputfile) + endif + call inputdata(inputfile,printinputdata) +! +! reading of run and sphere data, setting up of arrays +! + call getspheredata(number_spheres=nsphere) + allocate(xsp(nsphere),rpos(3,nsphere),nodr(nsphere),ntran(nsphere), & + ri(2,nsphere),sphereblk(nsphere),sphereoff(nsphere+1)) + call getspheredata(sphere_size_parameters=xsp,sphere_positions=rpos, & + sphere_refractive_indices=ri,volume_size_parameter=xv) + call getrunparameters(mie_epsilon=epsmie,translation_epsilon=epstran, & + solution_epsilon=epssoln,max_number_iterations=niter, & + fixed_or_random_orientation=fixedorrandom,output_file=outfile, & + min_scattering_angle_deg=theta1d,max_scattering_angle_deg=theta2d, & + number_scattering_angles=numtheta,gaussian_beam_constant=cbeam, & + gaussian_beam_focal_point=gbfocus,run_print_unit=runprintunit, & + max_memory_per_processor=maxmbperproc, & + normalize_scattering_matrix=normalizesm, & + store_translation_matrix=storetranmat, & + near_field_distance=nfdistance, & + iterations_per_correction=niterstep) + if(numtheta.gt.0) then + allocate(smt(4,4,numtheta)) + endif +! +! determine if optical activity is present +! + nonactive=1 + do i=1,nsphere + if(cdabs(ri(1,i)-ri(2,i)).gt.1.d-10) then + nonactive=0 + exit + endif + enddo +! +! calculation of sphere mie coefficients, order limits +! + call miecoefcalc(nsphere,xsp,ri,epsmie) + call getmiedata(sphere_order=nodr,max_order=nodrmax,number_equations=neqns, & + sphere_block=sphereblk,sphere_block_offset=sphereoff) +! +! determine the size of the parallel run and set it up +! + call ms_mpi(mpi_command='init') + call ms_mpi(mpi_command='size',mpi_size=numprocs) + call ms_mpi(mpi_command='rank',mpi_rank=rank) + call ms_mpi(mpi_command='barrier') + call mpisetup(nsphere,nodr,rpos,fixedorrandom,maxmbperproc,storetranmat, & + nfdistance,fftranpresent,runprintunit) + call ms_mpi(mpi_command='barrier') + call mpirottranmtrxsetup(nsphere,nodr,rpos,(1.d0,0.d0),storetranmat,& + nfdistance,runprintunit) + call ms_mpi(mpi_command='barrier') +! +! determine orders required to expand scattered fields about target origin +! + call tranorders(nsphere,nodr,rpos,epstran,ntran,nodrt) +! +! report the size of the run +! + if(rank.eq.0) then + write(runprintunit,'('' maximum sphere order:'',i5)') nodrmax + write(runprintunit,'('' estimated T matrix order:'',i5)') nodrt + write(runprintunit,'('' number of equations:'',i9)') neqns + call flush(runprintunit) + endif +! + if(fixedorrandom.eq.1) then +! +! random orientation option +! + call getrunparameters(calculate_t_matrix=calctmatrix,t_matrix_file=tmatrixfile, & + t_matrix_convergence_epsilon=epstcon) + allocate(qext(nsphere,1), qabs(nsphere,1), qsca(nsphere,1)) + if(calctmatrix.ge.1) then +! +! this option calculates the T matrix either from the beginning or where left off +! + if(rank.eq.0) time1=mytime() + call tmatrixsoln(neqns,nsphere,nodr,nodrt,xsp,rpos,epssoln,epstcon,niter,& + calctmatrix,tmatrixfile,fftranpresent,niterstep,qext,qabs,qsca,istat) + if(rank.eq.0) then + time2=mytime()-time1 + call timewrite(runprintunit,' execution time:',time2) + endif + call rottranmtrxclear() + else +! +! and this has the T matrix already calculated and stored in the file. +! +! read the order of the T matrix and broadcast to the processors. +! + if(rank.eq.0) then + open(3,file=tmatrixfile) + read(3,*) nodrt + close(3) + write(runprintunit,'('' t matrix order:'',i5)') nodrt + call flush(runprintunit) + endif + nodrta(1)=nodrt + call ms_mpi(mpi_command='bcast',mpi_send_buf_i=nodrta,mpi_number=1,mpi_rank=0) + nodrt=nodrta(1) + call ms_mpi(mpi_command='barrier') + endif +! +! the T matrix is available; calculate the random orientation scattering matrix +! + nblkt=nodrt*(nodrt+2) + nodrg=nodrt*2 + allocate(smc(4,4,0:nodrg)) + call ranorientscatmatrix(xv,nsphere,nodrt,nodrg,cbeam,tmatrixfile,smc,qext, & + qabs,qsca) + if(rank.eq.0) then + qexttot=sum(qext(:,1)*xsp*xsp)/xv/xv + qabstot=sum(qabs(:,1)*xsp*xsp)/xv/xv + qscatot=qexttot-qabstot + asymparm=dble(smc(1,1,1)/smc(1,1,0))/3.d0 + call ranorienscatmatrixcalc(numtheta,theta1d,theta2d,1,smc,nodrg,smt) + endif + else +! +! fixed orientation option +! + call getrunparameters(calculate_scattering_coefficients=calcamn, & + scattering_coefficient_file=amnfile, & + scattering_plane_angle_deg=phideg, & + incident_azimuth_angle_deg=alphadeg, & + incident_polar_angle_deg=betadeg, & + track_iterations=trackiterations) + alpha=alphadeg*pi/180.d0 + beta=betadeg*pi/180.d0 + phi=phideg*pi/180.d0 + allocate(amnp(neqns,2)) + allocate(qext(nsphere,3), qabs(nsphere,3), qsca(nsphere,3)) + if(calcamn.eq.1) then +! +! this option calculates the scattering coefficients +! + if(rank.eq.0) time1=mytime() + call fixedorsoln(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,epssoln,& + epstran,niter,amnp,qext,qabs,qsca,maxerr,maxiter,trackiterations, & + fftranpresent,niterstep,istat) +! +! write the scattering coefficients to the file +! + if(rank.eq.0) then + time2=mytime()-time1 + write(runprintunit,'('' max iterations, soln error:'',i6,e13.5)') & + maxiter,maxerr + call timewrite(runprintunit,' execution time:',time2) + open(3,file=amnfile) + do i=1,nsphere + write(3,'(6e13.5)') qext(i,:),qabs(i,:),qsca(i,:) + allocate(amnp1(0:nodr(i)+1,nodr(i),2),amnp2(0:nodr(i)+1,nodr(i),2)) + ip1=sphereoff(i)+1 + ip2=sphereoff(i)+sphereblk(i) + amnp1=reshape(amnp(ip1:ip2,1),(/nodr(i)+2,nodr(i),2/)) + amnp2=reshape(amnp(ip1:ip2,2),(/nodr(i)+2,nodr(i),2/)) + do n=1,nodr(i) + do m=-n,n + if(m.le.-1) then + ma=n+1 + na=-m + else + ma=m + na=n + endif + write(3,'(4e17.9)') amnp1(ma,na,1),amnp2(ma,na,1) + write(3,'(4e17.9)') amnp1(ma,na,2),amnp2(ma,na,2) + enddo + enddo + deallocate(amnp1,amnp2) + enddo + close(3) + endif + else +! +! this option reads the scattering coefficients from the file +! + if(rank.eq.0) then + open(3,file=amnfile) + do i=1,nsphere + read(3,'(6e13.5)') qext(i,:),qabs(i,:),qsca(i,:) + allocate(amnp1(0:nodr(i)+1,nodr(i),2),amnp2(0:nodr(i)+1,nodr(i),2)) + do n=1,nodr(i) + do m=-n,n + if(m.le.-1) then + ma=n+1 + na=-m + else + ma=m + na=n + endif + read(3,'(4e17.9)') amnp1(ma,na,1),amnp2(ma,na,1) + read(3,'(4e17.9)') amnp1(ma,na,2),amnp2(ma,na,2) + enddo + enddo + ip1=sphereoff(i)+1 + ip2=sphereoff(i)+sphereblk(i) + amnp(ip1:ip2,1)=reshape(amnp1(0:nodr(i)+1,1:nodr(i),1:2),(/sphereblk(i)/)) + amnp(ip1:ip2,2)=reshape(amnp2(0:nodr(i)+1,1:nodr(i),1:2),(/sphereblk(i)/)) + deallocate(amnp1,amnp2) + enddo + close(3) + endif +! +! broadcast the scattering coefficients to the other processors +! + nsend=neqns*2 + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=amnp,mpi_number=nsend,mpi_rank=0) + endif +! +! calculate the efficiency factors +! + + cphi=cos(phi) + sphi=sin(phi) + qexttotpar=sum((qext(:,1)*cphi*cphi+2.d0*qext(:,3)*cphi*sphi+qext(:,2)*sphi*sphi) & + *xsp*xsp)/xv/xv + qexttotper=sum((qext(:,1)*sphi*sphi-2.d0*qext(:,3)*cphi*sphi+qext(:,2)*cphi*cphi) & + *xsp*xsp)/xv/xv + qabstotpar=sum((qabs(:,1)*cphi*cphi+2.d0*qabs(:,3)*cphi*sphi+qabs(:,2)*sphi*sphi) & + *xsp*xsp)/xv/xv + qabstotper=sum((qabs(:,1)*sphi*sphi-2.d0*qabs(:,3)*cphi*sphi+qabs(:,2)*cphi*cphi) & + *xsp*xsp)/xv/xv + qscatotpar=qexttotpar-qabstotpar + qscatotper=qexttotper-qabstotper + qexttot=(qexttotpar+qexttotper)*.5d0 + qabstot=(qabstotpar+qabstotper)*.5d0 + qscatot=(qscatotpar+qscatotper)*.5d0 + qext(:,1)=(qext(:,1)+qext(:,2))*.5d0 + qabs(:,1)=(qabs(:,1)+qabs(:,2))*.5d0 + qsca(:,1)=(qsca(:,1)+qsca(:,2))*.5d0 + call rottranmtrxclear() +! +! calculate the target-based expansion and rotate to the incident field frame +! + allocate(amnp0(0:nodrt+1,nodrt,2,2),pmnp0(0:nodrt+1,nodrt,2,2)) + if(rank.eq.0) then + do k=1,2 + call amncommonorigin(neqns,nsphere,nodr,ntran,nodrt,rpos, & + amnp(1:neqns,k),amnp0(0:,1:,1:,k)) + call rotvec(alpha,beta,0.d0,nodrt,nodrt,amnp0(0:,1:,1:,k),1) + enddo + endif + nsend=4*nodrt*(nodrt+2) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=amnp0,mpi_number=nsend,mpi_rank=0) + +! +! calculate the asymmetry parameter and the scattering matrix +! + allocate(gmn(0:2)) + call s11expansion(amnp0,nodrt,0,1,gmn) + asymparm=dble(gmn(1)/gmn(0))/3.d0 + do i=1,numtheta + thetad=theta1d+(theta2d-theta1d)*(i-1)/max(1.d0,dble(numtheta-1)) + costheta=cos(thetad*pi/180.d0) + call scatteringmatrix(amnp0,nodrt,xv,costheta,phi,sa,smt(:,:,i)) + enddo + deallocate(amnp0,pmnp0,gmn) + endif +! +! output file operations +! + if(rank.eq.0) then + open(1,file=outfile,position='append') + if(nonactive.eq.0) then + write(1,'('' sphere S.P., pos. (x,y,z), ref. index (L,R), Qext, Qsca, Qabs, Qabs/Qabs,LM'')') + else + write(1,'('' sphere S.P., pos. (x,y,z), ref. index, Qext, Qsca, Qabs, Qabs/Qabs,LM'')') + endif + do i=1,nsphere + call getmiedata(which_sphere=i,sphere_qabs=qabslm) + if(dimag(ri(1,i)).eq.0.d0.and.dimag(ri(2,i)).eq.0.d0) then + absrat=1.d0 + else + absrat=qabs(i,1)/qabslm + endif + if(nonactive.eq.0) then + write(1,'(i5,4f10.4,4f10.6,3e13.5,f8.4)') i, xsp(i),rpos(:,i)+gbfocus, ri(:,i), & + qext(i,1),qsca(i,1),qabs(i,1),absrat + else + write(1,'(i5,4f10.4,2f10.6,3e13.5,f8.4)') i, xsp(i),rpos(:,i)+gbfocus, ri(1,i), & + qext(i,1),qsca(i,1),qabs(i,1),absrat + endif + enddo + if(fixedorrandom.eq.1) then + write(1,'('' total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm'')') + write(1,'(6e13.5)') qexttot,qabstot,qscatot,asymparm + else + write(1,'('' unpolarized total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm'')') + write(1,'(6e13.5)') qexttot,qabstot,qscatot,asymparm + write(1,'('' parallel total ext, abs, scat efficiencies'')') + write(1,'(6e13.5)') qexttotpar,qabstotpar,qscatotpar + write(1,'('' perpendicular total ext, abs, scat efficiencies'')') + write(1,'(6e13.5)') qexttotper,qabstotper,qscatotper + endif + + write(1,'('' scattering matrix elements'')') + if(normalizesm.eq.0) then + write(1,'('' theta s11 s22 s33'',& + &'' s44'',& + &'' s21 s32 s43 s31'',& + &'' s42 s41'')') + do i=1,numtheta + thetad=theta1d+(theta2d-theta1d)*(i-1)/max(1.d0,dble(numtheta-1)) + write(1,'(f8.2,10e12.4)') thetad,smt(1,1,i),smt(2,2,i),smt(3,3,i), & + smt(4,4,i),smt(1,2,i),smt(2,3,i),smt(3,4,i),smt(1,3,i), & + smt(2,4,i),smt(1,4,i) + enddo + else + write(1,'('' theta s11 s22/s11 s33'',& + &''/s11 s44'',& + &''/s11 s21/s11 s32/s11 s43/s11 s31'',& + &''/s11 s42/s11 s41/s11'')') + do i=1,numtheta + thetad=theta1d+(theta2d-theta1d)*(i-1)/max(1.d0,dble(numtheta-1)) + s11=smt(1,1,i) + write(1,'(f8.2,10e12.4)') thetad,smt(1,1,i),smt(2,2,i)/s11,smt(3,3,i)/s11, & + smt(4,4,i)/s11,smt(1,2,i)/s11,smt(2,3,i)/s11,smt(3,4,i)/s11,smt(1,3,i)/s11, & + smt(2,4,i)/s11,smt(1,4,i)/s11 + enddo + endif + if(fixedorrandom.eq.1) then + write(1,'('' scattering matrix expansion coefficients'')') + write(1,'('' w a11 a22 a33 '',& + &''a23 a32 a44 a12 '',& + &''a34 a13 a24 a14'')') + do w=0,nodrg + write(1,'(i5,11e12.4)') w,smc(1,1,w),smc(2,2,w),& + smc(3,3,w),smc(2,3,w),smc(3,2,w),smc(4,4,w),& + smc(1,2,w),smc(3,4,w),smc(1,3,w),smc(2,4,w),& + smc(1,4,w) + enddo + endif + endif +! +! near field calculation options +! + if(fixedorrandom.eq.0) call getrunparameters(calculate_near_field=calcnf) + if(fixedorrandom.eq.0.and.calcnf.eq.1) then + call getrunparameters(near_field_plane_coord=nfplane, & + near_field_plane_position=nfplanepos,near_field_plane_vertices=nfplanevert, & + spacial_step_size=deltax,polarization_angle_deg=gammadeg, & + near_field_output_file=nfoutfile,near_field_output_data=nfoutdata, & + plane_wave_epsilon=epspw) + nfoutunit=2 + if(rank.eq.0) then + open(nfoutunit,file=nfoutfile) + endif + gamma=gammadeg*pi/180.d0 + call nearfieldgridcalc(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + nfplane,nfplanepos,nfplanevert,gbfocus,deltax,gamma,nfoutunit,epspw, & + nfoutdata,runprintunit) + if(rank.eq.0) then + close(nfoutunit) + endif + endif +! +! all done! +! + if(rank.eq.0) close(1) + call ms_mpi(mpi_command='finalize') + end diff --git a/mstm-manual-2011-v2.2.pdf b/mstm-manual-2011-v2.2.pdf new file mode 100644 index 0000000..f0456ae Binary files /dev/null and b/mstm-manual-2011-v2.2.pdf differ diff --git a/mstm-modules-v2.2.f90 b/mstm-modules-v2.2.f90 new file mode 100644 index 0000000..0c34d6b --- /dev/null +++ b/mstm-modules-v2.2.f90 @@ -0,0 +1,6041 @@ +! +! numerical constants +! +! +! last revised: 15 January 2011 +! + module numconstants + implicit none + integer :: print_intermediate_results + integer, allocatable :: monen(:) + integer, private :: nmax=0 + real(8) :: pi + real(8), allocatable :: bcof(:,:),fnr(:),vwh_coef(:,:,:,:) + real(8), allocatable :: vcc_const(:,:,:),fnm1_const(:,:),fn_const(:,:),fnp1_const(:,:) + data pi/3.141592653589793/ + + contains + + subroutine init(notd) + implicit none + integer :: notd,l,n,ierr,nbc,m,mm1,mp1,np1,nm1,nn1,mn + real(8) :: fnorm1,fnorm2 +! +! bcof(n,l)=((n+l)!/(n!l!))^(1/2) +! + if(notd.le.nmax) return + nmax=max(nmax,notd) + nbc=6*notd+6 + if(allocated(fnr)) deallocate(monen,fnr,bcof) + allocate (monen(0:2*notd),bcof(0:nbc,0:nbc),fnr(0:2*nbc),stat=ierr) +! write(*,'('' nmax, bcof status:'',2i5)') nmax,ierr + do n=0,2*notd + monen(n)=(-1)**n + enddo + fnr(0)=0.d0 + do n=1,2*nbc + fnr(n)=dsqrt(dble(n)) + enddo + bcof(0,0)=1.d0 + do n=0,nbc-1 + do l=n+1,nbc + bcof(n,l)=fnr(n+l)*bcof(n,l-1)/fnr(l) + bcof(l,n)=bcof(n,l) + enddo + bcof(n+1,n+1)=fnr(n+n+2)*fnr(n+n+1)*bcof(n,n)/fnr(n+1)/fnr(n+1) + enddo + if(allocated(vwh_coef)) deallocate(vwh_coef) + allocate(vwh_coef(-notd:notd,1:notd,-1:1,-1:1)) +! +! constants used for calculation of svwf functions. +! + do n=1,notd + nn1=n*(n+1) + np1=n+1 + nm1=n-1 + fnorm1=-.5d0/fnr(n+n+1)/fnr(n)/fnr(n+1) + fnorm2=-.5d0*fnr(n+n+1)/fnr(n)/fnr(n+1) + m=-n + mp1=m+1 + mm1=m-1 + vwh_coef(m,n, 1, 1)=-fnorm1*n*fnr(np1+m)*fnr(np1+mp1) + vwh_coef(m,n, 1,-1)=fnorm1*np1*fnr(n-m)*fnr(nm1-m) + vwh_coef(m,n,-1, 1)=fnorm1*n*fnr(np1-m)*fnr(np1-mm1) + vwh_coef(m,n,-1,-1)=0.d0 + vwh_coef(m,n, 0, 1)=fnorm1*n*fnr(np1+m)*fnr(np1-m) + vwh_coef(m,n, 0,-1)=0.d0 + vwh_coef(m,n, 1, 0)=-fnorm2*fnr(n-m)*fnr(np1+m) + vwh_coef(m,n,-1, 0)=-0.d0 + vwh_coef(m,n, 0, 0)=-fnorm2*m + do m=-n+1,-1 + mp1=m+1 + mm1=m-1 + vwh_coef(m,n, 1, 1)=-fnorm1*n*fnr(np1+m)*fnr(np1+mp1) + vwh_coef(m,n, 1,-1)=fnorm1*np1*fnr(n-m)*fnr(nm1-m) + vwh_coef(m,n,-1, 1)=fnorm1*n*fnr(np1-m)*fnr(np1-mm1) + vwh_coef(m,n,-1,-1)=-fnorm1*np1*fnr(n+m)*fnr(nm1+m) + vwh_coef(m,n, 0, 1)=fnorm1*n*fnr(np1+m)*fnr(np1-m) + vwh_coef(m,n, 0,-1)=fnorm1*np1*fnr(n+m)*fnr(n-m) + vwh_coef(m,n, 1, 0)=-fnorm2*fnr(n-m)*fnr(np1+m) + vwh_coef(m,n,-1, 0)=-fnorm2*fnr(n+m)*fnr(np1-m) + vwh_coef(m,n, 0, 0)=-fnorm2*m + enddo + do m=0,n-1 + mp1=m+1 + mm1=m-1 + vwh_coef(m,n, 1, 1)=-fnorm1*n*fnr(np1+m)*fnr(np1+mp1) + vwh_coef(m,n, 1,-1)=fnorm1*np1*fnr(n-m)*fnr(nm1-m) + vwh_coef(m,n,-1, 1)=fnorm1*n*fnr(np1-m)*fnr(np1-mm1) + vwh_coef(m,n,-1,-1)=-fnorm1*np1*fnr(n+m)*fnr(nm1+m) + vwh_coef(m,n, 0, 1)=fnorm1*n*fnr(np1+m)*fnr(np1-m) + vwh_coef(m,n, 0,-1)=fnorm1*np1*fnr(n+m)*fnr(n-m) + vwh_coef(m,n, 1, 0)=-fnorm2*fnr(n-m)*fnr(np1+m) + vwh_coef(m,n,-1, 0)=-fnorm2*fnr(n+m)*fnr(np1-m) + vwh_coef(m,n, 0, 0)=-fnorm2*m + enddo + m=n + mp1=m+1 + mm1=m-1 + vwh_coef(m,n, 1, 1)=-fnorm1*n*fnr(np1+m)*fnr(np1+mp1) + vwh_coef(m,n, 1,-1)=0.d0 + vwh_coef(m,n,-1, 1)=fnorm1*n*fnr(np1-m)*fnr(np1-mm1) + vwh_coef(m,n,-1,-1)=-fnorm1*np1*fnr(n+m)*fnr(nm1+m) + vwh_coef(m,n, 0, 1)=fnorm1*n*fnr(np1+m)*fnr(np1-m) + vwh_coef(m,n, 0,-1)=0.d0 + vwh_coef(m,n, 1, 0)=-0.d0 + vwh_coef(m,n,-1, 0)=-fnorm2*fnr(n+m)*fnr(np1-m) + vwh_coef(m,n, 0, 0)=-fnorm2*m + enddo + end subroutine init + + end module numconstants +! +! special function for the multiple sphere problem +! + module specialfuncs + implicit none + contains + + subroutine timewrite(iunit,char1,time) + use intrinsics + implicit none + integer :: iunit + real(8) :: time,time2 + character(*) :: char1 + if(time.gt.3600.d0) then + time2=time/3600.d0 + write(iunit,'(a,f9.3,'' hours'')') char1,time2 + elseif(time.gt.60.d0) then + time2=time/60.d0 + write(iunit,'(a,f9.2,'' min'')') char1,time2 + else + write(iunit,'(a,f9.2,'' sec'')') char1,time + endif + call flush(iunit) + end subroutine timewrite +! +! ricatti-bessel function psi(n), real argument +! + subroutine ricbessel(n,ds,eps,nmax,psi) + implicit none + integer :: n,nmax,ns,i + real(8) :: ds,dns,sn,psi(0:n),psit,ds2,sum,eps,err + if(int(ds).lt.n) then + ns=nint(ds+4.*(ds**.3333d0)+17) + ns=max(n+10,ns) + dns=0.d0 + do i=ns-1,n,-1 + sn=dble(i+1)/ds + dns=sn-1.d0/(dns+sn) + enddo + psi(n)=dns + psi(n-1)=dble(n)/ds-1.d0/(dns+dble(n)/ds) + do i=n-2,1,-1 + sn=dble(i+1)/ds + psi(i)=sn-1.d0/(psi(i+1)+sn) + enddo + psit=dsin(ds) + psi(0)=psit + ds2=ds*ds + sum=psit*psit/ds2 + do i=1,n + psit=psit/(dble(i)/ds+psi(i)) + sum=sum+dble(i+i+1)*psit*psit/ds2 + err=dabs(1.d0-sum) + psi(i)=psit + if(err.lt.eps) then + nmax=i + return + endif + enddo + nmax=n + else + psi(0)=dsin(ds) + psi(1)=psi(0)/ds-dcos(ds) + do i=1,n-1 + sn=dble(i+i+1)/ds + psi(i+1)=sn*psi(i)-psi(i-1) + enddo + nmax=n + endif + end subroutine ricbessel +! +! ricatti-hankel function xi(n), real argument +! +! +! last revised: 15 January 2011 +! + subroutine richankel(n,ds,xi) + implicit none + integer :: n,i,ns + real(8) :: ds,dns,sn,chi0,chi1,chi2,psi,psi0,psi1 + complex(8) :: xi(0:n) + if(int(ds).lt.n) then + ns=nint(ds+4.*(ds**.3333)+17) + ns=max(n+10,ns) + dns=0.d0 + do i=ns-1,n,-1 + sn=dble(i+1)/ds + dns=sn-1.d0/(dns+sn) + enddo + xi(n)=dns + xi(n-1)=dble(n)/ds-1.d0/(dns+dble(n)/ds) + do i=n-2,1,-1 + sn=dble(i+1)/ds + xi(i)=sn-1.d0/(xi(i+1)+sn) + enddo + chi0=-dcos(ds) + psi=dsin(ds) + chi1=chi0/ds-psi + xi(0)=dcmplx(psi,chi0) + do i=1,n + chi2=dble(i+i+1)/ds*chi1-chi0 + psi=psi/(dble(i)/ds+xi(i)) + xi(i)=dcmplx(psi,chi1) + chi0=chi1 + chi1=chi2 + enddo + return + else + chi0=-dcos(ds) + psi0=dsin(ds) + chi1=chi0/ds-psi0 + psi1=psi0/ds+chi0 + xi(0)=dcmplx(psi0,chi0) + xi(1)=dcmplx(psi1,chi1) + do i=1,n-1 + sn=dble(i+i+1)/ds + xi(i+1)=sn*xi(i)-xi(i-1) + enddo + return + endif + end subroutine richankel +! +! ricatti-bessel function psi(n), complex argument +! +! +! last revised: 15 January 2011 +! + subroutine cricbessel(n,ds,psi) + implicit none + integer :: n,i + complex(8) :: ds,psi(0:n),chi(0:n) + call cspherebessel(n,ds,psi,chi) + do i=0,n + psi(i)=psi(i)*ds + enddo + return + end subroutine cricbessel +! +! ricatti-hankel function psi(n), complex argument +! +! +! last revised: 15 January 2011 +! 7 october 2011: forces upwards recurrence for real argument ds +! + subroutine crichankel(n,ds,xi) + implicit none + integer :: n,i,i1 + complex(8) :: ds,psi(0:n),chi(0:n),xi(0:n),ci + data ci/(0.d0,1.d0)/ + xi(0)=-ci*cdexp(ci*ds) + xi(1)=-cdexp(ci*ds)*(ci+ds)/ds + if(dimag(ds).eq.0.d0) then + do i=1,n-1 + i1=i+1 + xi(i1)=dble(i+i1)/ds*xi(i)-xi(i-1) + enddo + return + endif + if(cdabs(xi(0)).lt.1.d-10) then + do i=1,n-1 + i1=i+1 + xi(i1)=dble(i+i1)/ds*xi(i)-xi(i-1) + enddo + return + else + call cspherebessel(n,ds,psi,chi) + do i=1,n-1 + i1=i+1 + xi(i1)=(psi(i1)+ci*chi(i1))*ds + enddo + return + endif + end subroutine crichankel +! +! ========================================================== +! Purpose: Compute spherical Bessel functions jn(z) & yn(z) +! for a complex argument +! Input : z --- Complex argument +! n --- Order of jn(z) & yn(z) ( n = 0,1,2,... ) +! Output: CSJ(n) --- jn(z) +! CSY(n) --- yn(z) +! NM --- Highest order computed +! Routines called: +! MSTA1 and MSTA2 for computing the starting +! point for backward recurrence +! ========================================================== +! +! obtained from, and copywrited by, Jian-Ming Jin +! http://jin.ece.uiuc.edu/ +! +! +! last revised: 15 January 2011 +! + subroutine cspherebessel(n,z,csj,csy) + implicit none + integer :: n,nm,k,m + real(8) :: a0 + complex(8) :: z,csj(0:n),csy(0:n),csa,csb,cs,cf0,cf1,cf + a0=cdabs(z) + nm=n + if (a0.lt.1.0d-60) then + csj=(0.d0,0.d0) + csy=(-1.d300,0.d0) + csy(0)=(1.d0,0.d0) + return + endif + csj=(0.d0,0.d0) + csj(0)=cdsin(z)/z + csj(1)=(csj(0)-cdcos(z))/z + if (n.ge.2) then + csa=csj(0) + csb=csj(1) + m=msta1(a0,200) + if (m.lt.n) then + nm=m + else + m=msta2(a0,n,15) + endif + cf0=0.0d0 + cf1=1.0d0-100 + do k=m,0,-1 + cf=(2.0d0*k+3.0d0)*cf1/z-cf0 + if (k.le.nm) csj(k)=cf + cf0=cf1 + cf1=cf + enddo + if (cdabs(csa).gt.cdabs(csb)) cs=csa/cf + if (cdabs(csa).le.cdabs(csb)) cs=csb/cf0 + do k=0,min(nm,n) + csj(k)=cs*csj(k) + enddo + endif + csy=(1.d200,0.d0) + csy(0)=-cdcos(z)/z + csy(1)=(csy(0)-cdsin(z))/z + do k=2,min(nm,n) + if (cdabs(csj(k-1)).gt.cdabs(csj(k-2))) then + csy(k)=(csj(k)*csy(k-1)-1.0d0/(z*z))/csj(k-1) + else + csy(k)=(csj(k)*csy(k-2)-(2.0d0*k-1.0d0)/z**3)/csj(k-2) + endif + enddo + end subroutine cspherebessel +! +! =================================================== +! Purpose: Determine the starting point for backward +! recurrence such that the magnitude of +! Jn(x) at that point is about 10^(-MP) +! Input : x --- Argument of Jn(x) +! MP --- Value of magnitude +! Output: MSTA1 --- Starting point +! =================================================== +! +! +! last revised: 15 January 2011 +! + integer function msta1(x,mp) + implicit none + integer :: mp,n0,n1,it,nn + real(8) :: x, a0,f1,f,f0 + a0=dabs(x) + n0=int(1.1*a0)+1 + f0=envj(n0,a0)-mp + n1=n0+5 + f1=envj(n1,a0)-mp + do it=1,20 + nn=n1-(n1-n0)/(1.0d0-f0/f1) + f=envj(nn,a0)-mp + if(abs(nn-n1).lt.1) exit + n0=n1 + f0=f1 + n1=nn + f1=f + enddo + msta1=nn + end function msta1 +! +! =================================================== +! Purpose: Determine the starting point for backward +! recurrence such that all Jn(x) has MP +! significant digits +! Input : x --- Argument of Jn(x) +! n --- Order of Jn(x) +! MP --- Significant digit +! Output: MSTA2 --- Starting point +! =================================================== +! +! +! last revised: 15 January 2011 +! + integer function msta2(x,n,mp) + implicit none + integer :: n,mp,n0,n1,it,nn + real(8) :: x,a0,hmp,ejn,obj,f0,f1,f + a0=dabs(x) + hmp=0.5d0*dble(mp) + ejn=envj(n,a0) + if (ejn.le.hmp) then + obj=mp + n0=int(1.1*a0) + else + obj=hmp+ejn + n0=n + endif + f0=envj(n0,a0)-obj + n1=n0+5 + f1=envj(n1,a0)-obj + do it=1,20 + nn=n1-(n1-n0)/(1.0d0-f0/f1) + f=envj(nn,a0)-obj + if (abs(nn-n1).lt.1) exit + n0=n1 + f0=f1 + n1=nn + f1=f + enddo + msta2=nn+10 + end function msta2 + + real(8) function envj(n,x) + implicit none + integer :: n + real(8) :: x + n=max(1,abs(n)) + envj=0.5d0*dlog10(6.28d0*n)-n*dlog10(1.36d0*x/n) + end function envj +! +! vector coupling coefficients vc(w) = C(m,n|k,l|m+k,w), w = |n-l|,... n+l +! uses downwards and upwards recurrence +! +! +! last revised: 15 January 2011 +! + subroutine vcfunc(m,n,k,l,vcn) + use numconstants + implicit none + integer :: m,n,k,l,wmax,wmin,w,mk + real(8) :: vcn(0:n+l),t1,t2,t3,vcmax,vctest,rat + vcn=0.d0 + wmax=n+l + wmin=max(abs(n-l),abs(m+k)) + vcn(wmax)=bcof(n+m,l+k)*bcof(n-m,l-k)/bcof(n+n,l+l) + if(wmin.eq.wmax) return + vcn(wmax-1)=vcn(wmax)*(l*m-k*n)*fnr(2*(l+n)-1)/fnr(l)/fnr(n)& + & /fnr(n+l+m+k)/fnr(n+l-m-k) + if(wmin.eq.wmax-1) return + mk=m+k + vcmax=abs(vcn(wmax))+abs(vcn(wmax-1)) +! +! a downwards recurrence is used initially +! + do w=wmax,wmin+2,-1 + t1=2*w*fnr(w+w+1)*fnr(w+w-1)/(fnr(w+mk)*fnr(w-mk)& + & *fnr(n-l+w)*fnr(l-n+w)*fnr(n+l-w+1)*fnr(n+l+w+1)) + t2=dble((m-k)*w*(w-1)-mk*n*(n+1)+mk*l*(l+1))& + & /dble(2*w*(w-1)) + t3=fnr(w-mk-1)*fnr(w+mk-1)*fnr(l-n+w-1)*fnr(n-l+w-1)& + & *fnr(n+l-w+2)*fnr(n+l+w)/(dble(2*(w-1))*fnr(2*w-3)& + & *fnr(2*w-1)) + vcn(w-2)=(t2*vcn(w-1)-vcn(w)/t1)/t3 + if(mod(wmax-w,2).eq.1) then + vctest=abs(vcn(w-2))+abs(vcn(w-1)) + vcmax=max(vcmax,vctest) + rat=vctest/vcmax +! +! if/when the coefficients start to decrease in magnitude, an upwards recurrence takes over +! + if(rat.lt.0.01d0) exit + endif + enddo + if(w-2.gt.wmin) then + wmax=w-3 + call vcfuncuprec(m,n,k,l,wmax,vcn) + endif + end subroutine vcfunc +! +! upwards VC coefficient recurrence +! +! +! last revised: 15 January 2011 +! + subroutine vcfuncuprec(m,n,k,l,wmax,vcn) + use numconstants + implicit none + integer :: m,n,k,l,wmax,wmin,w,mk,nl,m1,n1,l1,k1,w1,w2 + real(8) :: vcn(0:n+l),t1,t2,t3,vc1 + mk=abs(m+k) + nl=abs(n-l) + if(nl.ge.mk) then + w=nl + if(n.ge.l) then + m1=m + n1=n + l1=l + k1=k + else + m1=k + n1=l + k1=m + l1=n + endif + vc1=(-1)**(k1+l1)*bcof(l1+k1,w-m1-k1) & + *bcof(l1-k1,w+m1+k1)/bcof(l1+l1,w+w+1) + else + w=mk + if(m+k.ge.0) then + vc1=(-1)**(n+m)*bcof(n-l+w,l-k)*bcof(l-n+w,n-m) & + /bcof(w+w+1,n+l-w) + else + vc1=(-1)**(l+k)*bcof(n-l+w,l+k)*bcof(l-n+w,n+m) & + /bcof(w+w+1,n+l-w) + endif + endif + w1=w + vcn(w)=vc1 + w=w1+1 + mk=m+k + w2=min(wmax,n+l) + if(w2.gt.w1) then + t1=2*w*fnr(w+w+1)*fnr(w+w-1)/(fnr(w+mk)*fnr(w-mk) & + *fnr(n-l+w)*fnr(l-n+w)*fnr(n+l-w+1)*fnr(n+l+w+1)) + if(w1.eq.0) then + t2=.5*dble(m-k) + else + t2=dble((m-k)*w*(w-1)-mk*n*(n+1)+mk*l*(l+1)) & + /dble(2*w*(w-1)) + endif + vcn(w)=t1*t2*vcn(w1) + endif + do w=w1+2,w2 + t1=2*w*fnr(w+w+1)*fnr(w+w-1)/(fnr(w+mk)*fnr(w-mk) & + *fnr(n-l+w)*fnr(l-n+w)*fnr(n+l-w+1)*fnr(n+l+w+1)) + t2=dble((m-k)*w*(w-1)-mk*n*(n+1)+mk*l*(l+1)) & + /dble(2*w*(w-1)) + t3=fnr(w-mk-1)*fnr(w+mk-1)*fnr(l-n+w-1)*fnr(n-l+w-1) & + *fnr(n+l-w+2)*fnr(n+l+w)/(dble(2*(w-1))*fnr(2*w-3) & + *fnr(2*w-1)) + vcn(w)=t1*(t2*vcn(w-1)-t3*vcn(w-2)) + enddo + end subroutine vcfuncuprec +! +! Normalized associated legendre functions +! +! +! last revised: 15 January 2011 +! + subroutine normalizedlegendre(cbe,mmax,nmax,dc) + use numconstants + implicit none + integer :: nmax,mmax,m,n,np1,nm1,im + real(8) :: dc(-mmax:mmax,0:nmax),cbe,sbe + sbe=dsqrt((1.d0+cbe)*(1.d0-cbe)) + dc=0.d0 + do m=0,mmax + dc(m,m)=(-1)**m*(0.5d0*sbe)**m*bcof(m,m) + if(m.eq.nmax) exit + dc(m,m+1)=fnr(m+m+1)*cbe*dc(m,m) + do n=m+1,nmax-1 + dc(m,n+1)=(-fnr(n-m)*fnr(n+m)*dc(m,n-1)+dble(n+n+1)*cbe*dc(m,n)) & + /(fnr(n+1-m)*fnr(n+1+m)) + enddo + enddo + do m=1,mmax + im=(-1)**m + do n=m,nmax + dc(-m,n)=im*dc(m,n) + enddo + enddo + end subroutine normalizedlegendre +! +! Generalized spherical functions +! +! dc(m,n*(n+1)+k)=(-1)^(m + k)((n - k)!(n + k)!/(n - m)!/(n + m)!)^(1/2) +! ((1 + x)/2)^((m + k)/2)((1 - x)/2)^((k - m)/2)JacobiP[n - k, k - m, k + m, x] +! +! for |m| <= kmax, n=0,1,...nmax, |k| <= n +! +! +! last revised: 15 January 2011 +! + subroutine rotcoef(cbe,kmax,nmax,dc) + use numconstants + implicit none + integer :: kmax,nmax,k,m,in,n,knmax,nn1,kn,im,m1 + real(8) :: cbe,sbe,dc(-kmax:kmax,0:nmax*(nmax+2)),cbe2,sbe2,dk0(-nmax-1:nmax+1),& + dk01(-nmax-1:nmax+1),sben,dkt,fmn,dkm0,dkm1,dkn1 + sbe=dsqrt((1.d0+cbe)*(1.d0-cbe)) + cbe2=.5d0*(1.d0+cbe) + sbe2=.5d0*(1.d0-cbe) + in=1 + dk0(0)=1.d0 + sben=1.d0 + dc(0,0)=1.d0 + dk01(0)=0. + do n=1,nmax + knmax=min(n,kmax) + nn1=n*(n+1) + in=-in + sben=sben*sbe/2.d0 + dk0(n)=in*sben*bcof(n,n) + dk0(-n)=in*dk0(n) + dk01(n)=0. + dk01(-n)=0. + dc(0,nn1+n)=dk0(n) + dc(0,nn1-n)=dk0(-n) + do k=-n+1,n-1 + kn=nn1+k + dkt=dk01(k) + dk01(k)=dk0(k) + dk0(k)=(cbe*dble(n+n-1)*dk01(k)-fnr(n-k-1)*fnr(n+k-1)*dkt)& + /(fnr(n+k)*fnr(n-k)) + dc(0,kn)=dk0(k) + enddo + im=1 + do m=1,knmax + im=-im + fmn=1.d0/fnr(n-m+1)/fnr(n+m) + m1=m-1 + dkm0=0. + do k=-n,n + kn=nn1+k + dkm1=dkm0 + dkm0=dc(m1,kn) + if(k.eq.n) then + dkn1=0. + else + dkn1=dc(m1,kn+1) + endif + dc(m,kn)=(fnr(n+k)*fnr(n-k+1)*cbe2*dkm1 & + -fnr(n-k)*fnr(n+k+1)*sbe2*dkn1 & + -dble(k)*sbe*dc(m1,kn))*fmn + dc(-m,nn1-k)=dc(m,kn)*(-1)**(k)*im + enddo + enddo + enddo + end subroutine rotcoef + + subroutine rotcoefvecarg(narg,cbe,kmax,nmax,dc) + use numconstants + implicit none + integer :: kmax,nmax,k,m,in,n,knmax,nn1,kn,im,m1,narg + real(8) :: cbe(narg),sbe(narg),dc(-kmax:kmax,0:nmax*(nmax+2),narg), & + cbe2(narg),sbe2(narg),dk0(-nmax-1:nmax+1,narg),& + dk01(-nmax-1:nmax+1,narg),sben(narg),dkt(narg), & + fmn,dkm0(narg),dkm1(narg),dkn1(narg) + sbe=sqrt((1.d0+cbe)*(1.d0-cbe)) + cbe2=.5d0*(1.d0+cbe) + sbe2=.5d0*(1.d0-cbe) + in=1 + dk0(0,:)=1.d0 + sben=1.d0 + dc(0,0,:)=1.d0 + dk01(0,:)=0. + do n=1,nmax + knmax=min(n,kmax) + nn1=n*(n+1) + in=-in + sben=sben*sbe/2.d0 + dk0(n,:)=in*sben(:)*bcof(n,n) + dk0(-n,:)=in*dk0(n,:) + dk01(n,:)=0. + dk01(-n,:)=0. + dc(0,nn1+n,:)=dk0(n,:) + dc(0,nn1-n,:)=dk0(-n,:) + do k=-n+1,n-1 + kn=nn1+k + dkt(:)=dk01(k,:) + dk01(k,:)=dk0(k,:) + dk0(k,:)=(cbe(:)*dble(n+n-1)*dk01(k,:)-fnr(n-k-1)*fnr(n+k-1)*dkt(:)) & + /(fnr(n+k)*fnr(n-k)) + dc(0,kn,:)=dk0(k,:) + enddo + im=1 + do m=1,knmax + im=-im + fmn=1.d0/fnr(n-m+1)/fnr(n+m) + m1=m-1 + dkm0=0. + do k=-n,n + kn=nn1+k + dkm1=dkm0 + dkm0(:)=dc(m1,kn,:) + if(k.eq.n) then + dkn1=0. + else + dkn1(:)=dc(m1,kn+1,:) + endif + dc(m,kn,:)=(fnr(n+k)*fnr(n-k+1)*cbe2(:)*dkm1(:) & + -fnr(n-k)*fnr(n+k+1)*sbe2(:)*dkn1(:) & + -dble(k)*sbe(:)*dc(m1,kn,:))*fmn + dc(-m,nn1-k,:)=dc(m,kn,:)*(-1)**(k)*im + enddo + enddo + enddo + end subroutine rotcoefvecarg +! +! tau are the vector spherical harmonic functions, normalized +! +! +! last revised: 15 January 2011 +! + subroutine taufunc(cb,nmax,tau) + use numconstants + implicit none + integer :: nmax,n,m,p,nn1,mn + real(8) :: drot(-1:1,0:nmax*(nmax+2)),tau(0:nmax+1,nmax,2),cb,fnm + call rotcoef(cb,1,nmax,drot) + do n=1,nmax + nn1=n*(n+1) + fnm=sqrt(dble(n+n+1)/2.d0)/4.d0 + do m=-n,-1 + mn=nn1+m + tau(n+1,-m,1)=-fnm*(-drot(-1,mn)+drot(1,mn)) + tau(n+1,-m,2)=-fnm*(drot(-1,mn)+drot(1,mn)) + enddo + do m=0,n + mn=nn1+m + tau(m,n,1)=-fnm*(-drot(-1,mn)+drot(1,mn)) + tau(m,n,2)=-fnm*(drot(-1,mn)+drot(1,mn)) + enddo + enddo + end subroutine taufunc +! +! vector spherical harmonic function +! november 2011 +! + + subroutine pifunc(cb,ephi,nmax,ndim,pivec) + use numconstants + implicit none + integer :: nmax,n,m,p,nn1,mn,ndim + real(8) :: drot(-1:1,0:nmax*(nmax+2)),tau(2),cb,fnm + complex(8) :: pivec(0:ndim+1,ndim,2),ephi,ephim(-nmax:nmax),cin + call rotcoef(cb,1,nmax,drot) + ephim(0)=1.d0 + do m=1,nmax + ephim(m)=ephi*ephim(m-1) + ephim(-m)=dconjg(ephim(m)) + enddo + do n=1,nmax + cin=(0.d0,-1.d0)**(n+1) + nn1=n*(n+1) + fnm=sqrt(dble(n+n+1)/2.d0)/4.d0 + do m=-n,-1 + mn=nn1+m + tau(1)=-fnm*(-drot(-1,mn)+drot(1,mn)) + tau(2)=-fnm*(drot(-1,mn)+drot(1,mn)) + pivec(n+1,-m,1)=cin*tau(1)*ephim(m) + pivec(n+1,-m,2)=cin*tau(2)*ephim(m) + enddo + do m=0,n + mn=nn1+m + tau(1)=-fnm*(-drot(-1,mn)+drot(1,mn)) + tau(2)=-fnm*(drot(-1,mn)+drot(1,mn)) + pivec(m,n,1)=cin*tau(1)*ephim(m) + pivec(m,n,2)=cin*tau(2)*ephim(m) + enddo + enddo + end subroutine pifunc +! +! regular vswf expansion coefficients for a plane wave. +! alpha, beta: incident azimuth and polar angles. +! +! +! last revised: 15 January 2011 +! + subroutine planewavecoef(alpha,beta,nodr,pmnp0) + use numconstants + implicit none + integer :: nodr,m,n,p,k,ierr + real(8) :: alpha,beta,cb,sb,ca,sa + real(8), allocatable :: tau(:,:,:) + complex(8) :: ealpha,ci,cin + complex(8), allocatable :: ealpham(:) + complex(8) :: pmnp0(0:nodr+1,nodr,2,2) + data ci/(0.d0,1.d0)/ + call init(nodr) + allocate(ealpham(-nodr:nodr)) + allocate(tau(0:nodr+1,nodr,2)) + cb=cos(beta) + sb=sqrt((1.d0-cb)*(1.d0+cb)) + ca=cos(alpha) + sa=sin(alpha) + ealpha=dcmplx(ca,sa) + call taufunc(cb,nodr,tau) + call ephicoef(ealpha,nodr,ealpham) + do n=1,nodr + cin=4.d0*ci**(n+1) + do p=1,2 + do m=-n,-1 + pmnp0(n+1,-m,p,1)=-cin*tau(n+1,-m,p)*ealpham(-m) + pmnp0(n+1,-m,p,2)=ci*cin*tau(n+1,-m,3-p)*ealpham(-m) + enddo + do m=0,n + pmnp0(m,n,p,1)=-cin*tau(m,n,p)*ealpham(-m) + pmnp0(m,n,p,2)=ci*cin*tau(m,n,3-p)*ealpham(-m) + enddo + enddo + enddo + deallocate(ealpham,tau) + end subroutine planewavecoef +! +! regular vswf expansion coefficients for a gaussian beam, localized approximation. +! cbeam = 1/(k omega) +! +! +! last revised: 15 January 2011 +! + subroutine gaussianbeamcoef(alpha,beta,cbeam,nodr,pmnp0) + use numconstants + implicit none + integer :: nodr,m,n,p,k,ierr + real(8) :: alpha,beta,cbeam,gbn + complex(8) :: pmnp0(0:nodr+1,nodr,2,2) + call planewavecoef(alpha,beta,nodr,pmnp0) + do n=1,nodr + gbn=dexp(-((dble(n)+.5d0)*cbeam)**2.) + do p=1,2 + do k=1,2 + do m=-n,-1 + pmnp0(n+1,-m,p,k)=pmnp0(n+1,-m,p,k)*gbn + enddo + do m=0,n + pmnp0(m,n,p,k)=pmnp0(m,n,p,k)*gbn + enddo + enddo + enddo + enddo + end subroutine gaussianbeamcoef +! +! plane wave expansion coefficients at sphere origins. uses a phase shift. +! +! +! last revised: 15 January 2011 +! + subroutine sphereplanewavecoef(nsphere,neqns,nodr,nodrmax,alpha,beta,rpos,pmnp) + implicit none + integer :: m,n,p,nsphere,i,l,nodr(nsphere),nblk,nboff,nodrmax,neqns,k + real(8) :: alpha,beta,cb,sb,ca,sa,rpos(3,nsphere) + complex(8) :: ci,phasefac, pmnp(neqns,2) + complex(8) :: pmnp0(0:nodrmax+1,nodrmax,2,2) + data ci/(0.d0,1.d0)/ + call planewavecoef(alpha,beta,nodrmax,pmnp0) + cb=cos(beta) + sb=sqrt((1.d0-cb)*(1.d0+cb)) + ca=cos(alpha) + sa=sin(alpha) + l=0 + do i=1,nsphere + phasefac=cdexp(ci*((ca*rpos(1,i)+sa*rpos(2,i))*sb+rpos(3,i)*cb)) + do p=1,2 + do n=1,nodr(i) + do m=0,nodr(i)+1 + l=l+1 + do k=1,2 + pmnp(l,k)=phasefac*pmnp0(m,n,p,k) + enddo + enddo + enddo + enddo + enddo + end subroutine sphereplanewavecoef +! +! this computes the normalized translation coefficients for an +! axial translation of positive distance r. For itype=1 or 3, the translation +! uses the spherical Bessel or Hankel functions as a basis function, +! respectively. They are related to the coefficients appearing in +! M&M JOSA 96 by +! +! J^{ij}_{mnp mlq} = (E_{ml}/E_{mn})^(1/2) ac(s,n,l*(l+1)+m) +! +! where +! +! E_{mn} = n(n+1)(n+m)!/((2n+1)(n-m)!) +! s=mod(p+q,2)+1 (i.e., s=1 for the A coefficient, =2 for the B +! coefficient) +! +! The calculation procedure is based on the derivation +! of the addition theorem for vector harmonics, appearing in +! Fuller and Mackowski, proc. Light Scattering by Nonspherical +! Particles, NASA/GISS Sept. 1998. +! +! revised: 10 october 2011: used F90 vector arithmetic and precalculation +! of various constants. +! + subroutine axialtrancoef(itype,r,ri,nmax,lmax,ac) + use numconstants + implicit none + integer :: itype,nmax,lmax,n,l,m,p,w,n21,ll1,nlmin,lblk,wmin,wmax,ml + integer :: iadd,nlmax + integer, save :: nlmax0 + real(8) :: r + complex(8) :: ri,ci,z,xi(0:nmax+lmax) + complex(8) :: ac(nmax,lmax*(lmax+3)/2,2) + data ci,nlmax0/(0.d0,1.d0),0/ + nlmax=max(nmax,lmax) + if(nlmax.gt.nlmax0) then + nlmax0=nlmax + call axialtrancoefinit(nlmax) + endif + if(r.eq.0.d0) then + ac=(0.d0,0.d0) + if(itype.ne.1) return + do m=0,min(nmax,lmax) + do n=max(1,m),min(nmax,lmax) + iadd=atcadd(m,n,lmax) + ac(n,iadd,l)=1. + enddo + enddo + return + endif + z=r*ri + if(itype.eq.1) then + call cricbessel(nmax+lmax,z,xi) + else + call crichankel(nmax+lmax,z,xi) + endif + xi=xi/z + do n=1,nmax + do l=1,lmax + wmin=abs(n-l) + wmax=n+l + do m=0,min(n,l) + iadd=atcadd(m,l,lmax) + ml=l*(l+1)/2+m + ac(n,iadd,1)=sum(vcc_const(n,ml,wmin:wmax:2)*xi(wmin:wmax:2)) + ac(n,iadd,2)=ci*sum(vcc_const(n,ml,wmin+1:wmax-1:2)*xi(wmin+1:wmax-1:2)) + enddo + enddo + enddo + end subroutine axialtrancoef +! +! axial translation coefficients calculated by the diamond recurrence formula +! new: 10 october 2011 +! + subroutine axialtrancoefrecurrence(itype,r,ri,nmax,lmax,ac) + use numconstants + implicit none + integer :: itype,nmax,lmax,n,l,m,p,q,w,n21,ll1,nlmin,lblk, & + wmin,wmax,ml,m1,np1,nm1,iaddp1,iaddm1,lm1,lp1 + integer :: iadd,nlmax,iadd0,iadd1 + integer, save :: nlmax0 + real(8) :: r,fnp1,fn,fnm1,flp1,fl,flm1 + complex(8) :: ri,ci,z,xi(0:nmax+lmax) + complex(8) :: ac(nmax,lmax*(lmax+3)/2,2) + data ci,nlmax0/(0.d0,1.d0),0/ + nlmax=max(nmax,lmax) + nlmin=min(nmax,lmax) + if(nlmax.gt.nlmax0) then + nlmax0=nlmax + call axialtrancoefinit(nlmax) + endif + + if(r.eq.0.d0) then + ac=(0.d0,0.d0) + if(itype.ne.1) return + do m=0,nlmin + m1=max(1,m) + do n=m1,nlmin + iadd=atcadd(m,n,lmax) + ac(n,iadd,l)=1. + enddo + enddo + return + endif + z=r*ri + if(itype.eq.1) then + call cricbessel(nmax+lmax,z,xi) + else + call crichankel(nmax+lmax,z,xi) + endif + xi=xi/z + + lm1=lmax-1 + do m=0,nlmin + m1=max(1,abs(m)) + lp1=m1+1 + iadd0=atcadd(m,m1,lmax) + iadd1=atcadd(m,lmax,lmax) + iaddp1=iadd0+1 + iaddm1=iadd1-1 + + iadd=iadd0-1 + n=m1 + do l=m1,lmax + wmin=abs(n-l) + wmax=n+l + iadd=iadd+1 + ml=l*(l+1)/2+m + ac(n,iadd,1)=sum(vcc_const(n,ml,wmin:wmax:2)*xi(wmin:wmax:2)) + ac(n,iadd,2)=ci*sum(vcc_const(n,ml,wmin+1:wmax-1:2)*xi(wmin+1:wmax-1:2)) + enddo + l=lmax + iadd=iadd1 + ml=l*(l+1)/2+m + do n=m1+1,nmax + wmin=abs(n-l) + wmax=n+l + ac(n,iadd,1)=sum(vcc_const(n,ml,wmin:wmax:2)*xi(wmin:wmax:2)) + ac(n,iadd,2)=ci*sum(vcc_const(n,ml,wmin+1:wmax-1:2)*xi(wmin+1:wmax-1:2)) + enddo + if(m1.eq.nlmin) cycle + + do n=m1,nmax-1 + np1=n+1 + nm1=n-1 + do p=1,2 + q=3-p + ac(np1,iadd0:iaddm1,p)= & + - ac(n,iaddp1:iadd1,p)*fnp1_const(m,m1:lm1) & + + (fn_const(m,m1:lm1)-fn_const(m,n))*ci*ac(n,iadd0:iaddm1,q) + ac(np1,iaddp1:iaddm1,p)=ac(np1,iaddp1:iaddm1,p) & + + ac(n,iadd0:iadd1-2,p)*fnm1_const(m,lp1:lm1) + if(n.gt.m1) then + ac(np1,iadd0:iaddm1,p)=ac(np1,iadd0:iaddm1,p) & + + ac(nm1,iadd0:iaddm1,p)*fnm1_const(m,n) + endif + ac(np1,iadd0:iaddm1,p)=ac(np1,iadd0:iaddm1,p)/fnp1_const(m,n) + enddo + enddo + enddo + end subroutine axialtrancoefrecurrence +! +! constants for translation coefficient calculation +! + subroutine axialtrancoefinit(nmax) + use numconstants + implicit none + integer :: nmax,m,n,l,w,n21,ml,ll1,wmin,wmax,nlmin,lp1,lm1 + real(8) :: c1,c2,vc1(0:2*nmax),vc2(0:2*nmax),alnw + complex(8) :: ci,inlw + data ci/(0.d0,1.d0)/ + if(allocated(vcc_const)) deallocate(vcc_const,fnm1_const,fn_const,fnp1_const) + allocate(vcc_const(nmax,nmax*(nmax+1)/2+nmax,0:2*nmax),fnm1_const(0:nmax,nmax), & + fn_const(0:nmax,nmax),fnp1_const(0:nmax,nmax)) + do n=1,nmax + n21=n+n+1 + do l=1,nmax + c1=fnr(n21)*fnr(l+l+1) + ll1=l*(l+1)/2 + call vcfunc(-1,n,1,l,vc2) + wmin=abs(n-l) + wmax=n+l + nlmin=min(l,n) + do m=0,nlmin + ml=ll1+m + c2=-c1*(-1)**m + call vcfunc(-m,n,m,l,vc1) + do w=wmin,wmax + inlw=ci**(n-l+w) + vcc_const(n,ml,w)=c2*vc1(w)*vc2(w)*(dble(inlw)+dimag(inlw)) + enddo + enddo + enddo + enddo + fnm1_const=0. + fn_const=0. + fnp1_const=0. + do m=0,nmax + do l=max(1,m),nmax + lp1=l+1 + lm1=l-1 + fnm1_const(m,l)=fnr(lm1)*fnr(lp1)*fnr(l-m)*fnr(l+m)/fnr(lm1+l)/fnr(l+lp1)/dble(l) + fn_const(m,l)=dble(m)/dble(l)/dble(lp1) + fnp1_const(m,l)=fnr(l)*fnr(l+2)*fnr(lp1-m)*fnr(lp1+m)/fnr(l+lp1)/fnr(l+l+3)/dble(lp1) + enddo + enddo + end subroutine axialtrancoefinit +! +! test to determine convergence of regular vswf addition theorem for max. order lmax +! and translation distance r w/ refractive index ri. +! +! +! last revised: 15 January 2011 +! + subroutine tranordertest(r,ri,lmax,eps,nmax) + use numconstants + implicit none + integer :: itype,nmax,lmax,n,l,m,p,w,n21,ll1,nlmin,lblk,wmin,wmax + integer, parameter :: nlim=200 + integer :: iadd + real(8) :: r,alnw,sum,eps + real(8) :: vc1(0:nlim+lmax) + complex(8) :: ri,ci,z,a,b,c + complex(8) :: xi(0:nlim+lmax) + data ci/(0.d0,1.d0)/ + if(r.eq.0.d0) then + nmax=lmax + return + endif + z=r*ri + sum=0.d0 + do n=1,nlim + call init(n+lmax) + call cricbessel(n+lmax,z,xi) + do l=0,n+lmax + xi(l)=xi(l)/z*ci**l + enddo + n21=n+n+1 + l=lmax + c=fnr(n21)*fnr(l+l+1)*ci**(n-l) + call vcfunc(-1,n,1,l,vc1) + wmin=abs(n-l) + wmax=n+l + m=1 + a=0. + b=0. + do w=wmin,wmax + alnw=vc1(w)*vc1(w) + if(mod(n+l+w,2).eq.0) then + a=a+alnw*xi(w) + else + b=b+alnw*xi(w) + endif + enddo + a=c*a + b=c*b + sum=sum+a*conjg(a)+b*conjg(b) + if(abs(1.d0-sum).lt.eps) exit + enddo + nmax=min(n,nlim) + nmax=max(nmax,lmax) + end subroutine tranordertest +! +! address for axial translation coefficient +! +! +! last revised: 15 January 2011 +! + integer function atcadd(m,n,ntot) + implicit none + integer :: m,n,ntot + atcadd=n-ntot+(max(1,m)*(1+2*ntot-max(1,m)))/2+ntot*min(1,m) + end function atcadd +! +! gentrancoef: calculates the vwh translation coefficients for +! a general translation from one origin to another +! +! input: itype: integer, =1, regular, =3, outgoing type harmonics +! xptran: real, dim 3 vector: x,y,z components of translation, in units +! of 1/k +! ri: complex, refractive index of medium +! nrow0,nrow1,ncol0,ncol1: integer, starting and stopping row and column order +! iaddrow0,iaddcol0: address offset for row and column order (see below) +! output: ac(p,mn,kl): complex translation matrix. calculated for mode p=1,2 (A or B type), +! order n=nrow0,nrow1, degree m=-n,n +! order l=ncol0,ncol1, degree k=-n,n +! address is given by +! mn=m+n*(n+1)-(nrow0-1)*(nrow0+1)+iaddrow0 +! kl=k+l*(l+1)-(ncol0-1)*(ncol0+1)+iaddcol0 +! that is, if iaddrow0=0 the address is mn=1 for n=nrow0 and m=-n. +! +! +! last revised: 15 January 2011 +! + subroutine gentrancoef(itype,xptran,ri,nrow0,nrow1,ncol0,ncol1, & + iaddrow0,iaddcol0,ac) + use numconstants + implicit none + integer :: itype,nrow0,nrow1,ncol0,ncol1,iaddrow0,iaddcol0,kmax + integer :: ntot,nblkr0,nblkr1,nblkc0,nblkc1 + integer :: v,vw,w,wmax,wmin,n,l,m,k,p,nn1,ll1,mn,kl,m1m + real(8) :: vc1(0:nrow1+ncol1),vc2(0:nrow1+ncol1),& + xptran(3),r,ct,ct0 + real(8) :: drot(0:0,0:(nrow1+ncol1)*(nrow1+ncol1+2)) + complex(8) :: ri,ci,ephi,ac(2,nrow1*(nrow1+2)-(nrow0-1)*(nrow0+1)-iaddrow0,& + ncol1*(ncol1+2)-(ncol0-1)*(ncol0+1)-iaddcol0),& + z,c,a,b + complex(8) :: ephim(-(nrow1+ncol1):nrow1+ncol1),jnc(0:nrow1+ncol1) + data ci/(0.d0,1.d0)/ + call cartosphere(xptran,r,ct,ephi) + ntot=nrow1+ncol1 + nblkr0=(nrow0-1)*(nrow0+1) + nblkr1=nrow1*(nrow1+2) + nblkc0=(ncol0-1)*(ncol0+1) + nblkc1=ncol1*(ncol1+2) + if(r.eq.0.d0) then + do n=nblkr0+1,nblkr1 + mn=n-nblkr0+iaddrow0 + do l=nblkc0+1,nblkc1 + kl=l-nblkc0+iaddcol0 + do p=1,2 + ac(p,mn,kl)=0.d0 + enddo + enddo + if(n.gt.nblkc0.and.n.le.nblkc1.and.itype.eq.1) then + ac(1,mn,n-nblkc0+iaddcol0)=1.d0 + endif + enddo + return + endif + kmax=0 + ct0=ct + call rotcoef(ct0,kmax,ntot,drot) + call ephicoef(ephi,ntot,ephim) + z=ri*r + if(itype.eq.1) then + call cricbessel(ntot,z,jnc) + else + call crichankel(ntot,z,jnc) + endif + do n=0,ntot + c=ci**n + jnc(n)=c*jnc(n)/z + enddo + do l=ncol0,ncol1 + ll1=l*(l+1) + do n=nrow0,nrow1 + nn1=n*(n+1) + wmax=n+l + call vcfunc(-1,n,1,l,vc2) + c=-ci**(n-l)*fnr(n+n+1)*fnr(l+l+1) + do k=-l,l + kl=ll1+k-nblkc0+iaddcol0 + do m=-n,n + m1m=(-1)**m + mn=nn1+m-nblkr0+iaddrow0 + v=k-m + call vcfunc(-m,n,k,l,vc1) + a=0. + b=0. + wmin=max(abs(v),abs(n-l)) + do w=wmax,wmin,-1 + vw=w*(w+1)+v + if(mod(wmax-w,2).eq.0) then + a=a+vc1(w)*vc2(w)*jnc(w)*drot(0,vw) + else + b=b+vc1(w)*vc2(w)*jnc(w)*drot(0,vw) + endif + enddo + ac(1,mn,kl)=a*c*m1m*ephim(v) + ac(2,mn,kl)=b*c*m1m*ephim(v) + enddo + enddo + enddo + enddo + return + end subroutine gentrancoef +! +! cartosphere takes the cartesian point (x,y,z) = xp(1), xp(2), xp(3) +! and converts to polar form: r: radius, ct: cos(theta), ep = exp(i phi) +! +! +! last revised: 15 January 2011 +! + subroutine cartosphere(xp,r,ct,ep) + implicit none + real(8) :: xp(3),r,ct + complex(8) :: ep + r=xp(1)*xp(1)+xp(2)*xp(2)+xp(3)*xp(3) + if(r.eq.0.d0) then + ct=1.d0 + ep=(1.d0,0.d0) + return + endif + r=sqrt(r) + ct=xp(3)/r + if(xp(1).eq.0.d0.and.xp(2).eq.0.d0) then + ep=(1.d0,0.d0) + else + ep=dcmplx(xp(1),xp(2))/sqrt(xp(1)*xp(1)+xp(2)*xp(2)) + endif + return + end subroutine cartosphere +! +! ephicoef returns the complex array epm(m) = exp(i m phi) for +! m=-nodr,nodr. ep =exp(i phi), and epm is dimensioned epm(-nd:nd) +! +! +! last revised: 15 January 2011 +! + subroutine ephicoef(ep,nodr,epm) + implicit none + integer :: nodr,m + complex(8) :: ep,epm(-nodr:nodr) + epm(0)=(1.d0,0.d0) + do m=1,nodr + epm(m)=ep*epm(m-1) + epm(-m)=dconjg(epm(m)) + enddo + return + end subroutine ephicoef +! +! test to determine max order of vswf expansion of a plane wave at distance r +! +! +! last revised: 15 January 2011 +! + subroutine planewavetruncationorder(r,eps,nodr) + implicit none + integer :: nodr,n1,n + real(8) :: r,eps,err + real(8), allocatable :: jn(:) + complex(8) :: sum, ci,eir + data ci/(0.d0,1.d0)/ + n1=max(10,int(3.*r+1)) + allocate(jn(0:n1)) + call ricbessel(n1,r,-1.d0,n1,jn) + jn(0:n1)=jn(0:n1)/r + eir=cdexp(-ci*r) + sum=jn(0)*eir + do n=1,n1 + sum=sum+ci**n*dble(n+n+1)*jn(n)*eir + err=cdabs(1.d0-sum) + if(err.lt.eps) then + nodr=n + deallocate(jn) + return + endif + enddo + nodr=n1 + deallocate(jn) + end subroutine planewavetruncationorder +! +! calculates the cartesian components of the vswf at position rpos, in ref. index ri. +! +! +! original: 15 January 2011 +! revised: 23 February 2011: multiplied by root 2 +! + subroutine vwhcalc(rpos,ri,nodr,itype,vwh) + use numconstants + implicit none + integer :: nodr,itype,m,n,p,nodrp1,nodrm1,nn1,mn,np1,nm1,mp1,mm1,ndim, & + nblkp + integer, save :: nodrmax + real(8) :: rpos(3),r,ct,fnorm1,fnorm2 + real(8) pmn(0:0,0:(nodr+1)*(nodr+3)) + complex(8) :: ci,vwh(3,2,1:*),ri,ephi,a,b,a1,b1,z1,a2,b2,z2 + complex(8) :: a1vec(-nodr:nodr), & + b1vec(-nodr:nodr),z1vec(-nodr:nodr),a2vec(-nodr:nodr), & + b2vec(-nodr:nodr),z2vec(-nodr:nodr) + complex(8) :: umn(-nodr-2:nodr+2,0:nodr+1), hn(0:nodr+1), ephim(-nodr-1:nodr+1) + data ci,nodrmax/(0.d0,1.d0),0/ + if(nodr.gt.nodrmax) then + nodrmax=nodr + call init(nodr+2) + endif + call cartosphere(rpos,r,ct,ephi) + if(r.le.1.d-4) then + vwh(:,:,1:nodr*(nodr+1))=(0.d0,0.d0) + if(itype.eq.3) return + vwh(1,1,1)=.5d0*fnr(2)/fnr(3) + vwh(2,1,1)=-.5d0*ci*fnr(2)/fnr(3) + vwh(3,1,2)=1.d0*fnr(2)/fnr(6) + vwh(1,1,3)=-.5d0*fnr(2)/fnr(3) + vwh(2,1,3)=-.5d0*ci*fnr(2)/fnr(3) + return + endif + nodrp1=nodr+1 + nodrm1=nodr-1 + a=ri*r + if(itype.eq.1) then + call cricbessel(nodrp1,a,hn) + else + call crichankel(nodrp1,a,hn) + endif + hn(0:nodrp1)=hn(0:nodrp1)/a + call rotcoef(ct,0,nodrp1,pmn) + call ephicoef(ephi,nodrp1,ephim) + umn=0.d0 + umn(0,0)=hn(0)*fnr(2) + do n=1,nodrp1 + nn1=n*(n+1) + umn(-n:n,n)=fnr(2)*pmn(0,nn1-n:nn1+n)*ephim(-n:n)*hn(n) + umn(-n-1,n)=0.d0 + umn(n+1,n)=0.d0 + enddo + do n=1,nodr + nn1=n*(n+1) + np1=n+1 + nm1=n-1 + a1vec(-n:n)=vwh_coef(-n:n,n,1,1)*umn(-nm1:np1,np1) & + +vwh_coef(-n:n,n,1,-1)*umn(-nm1:np1,nm1) + b1vec(-n:n)=vwh_coef(-n:n,n,-1,1)*umn(-np1:nm1,np1) & + +vwh_coef(-n:n,n,-1,-1)*umn(-np1:nm1,nm1) + z1vec(-n:n)=vwh_coef(-n:n,n,0,1)*umn(-n:n,np1) & + +vwh_coef(-n:n,n,0,-1)*umn(-n:n,nm1) + a2vec(-n:n)=vwh_coef(-n:n,n,1,0)*umn(-nm1:np1,n) + b2vec(-n:n)=vwh_coef(-n:n,n,-1,0)*umn(-np1:nm1,n) + z2vec(-n:n)=vwh_coef(-n:n,n,0,0)*umn(-n:n,n) + vwh(1,1,nn1-n:nn1+n)=-0.5d0*(a1vec(-n:n)+b1vec(-n:n)) + vwh(2,1,nn1-n:nn1+n)=-0.5d0*ci*(-a1vec(-n:n)+b1vec(-n:n)) + vwh(3,1,nn1-n:nn1+n)=-z1vec(-n:n) + vwh(1,2,nn1-n:nn1+n)=-0.5d0*ci*(a2vec(-n:n)+b2vec(-n:n)) + vwh(2,2,nn1-n:nn1+n)=-0.5d0*(a2vec(-n:n)-b2vec(-n:n)) + vwh(3,2,nn1-n:nn1+n)=-ci*z2vec(-n:n) + enddo + end subroutine vwhcalc +! +! svwf calculation for an axial translation +! +! +! original: 15 January 2011 +! revised: 23 February 2011: multiplied by root 2 +! + subroutine vwhaxialcalc(rpos,ri,nodr,itype,vwh) + use numconstants + implicit none + integer :: nodr,itype,m,n,p,nodrp1,nodrm1,nn1,mn,np1,nm1,mp1,mm1,ndim, & + nblkp + integer, save :: nodrmax + real(8) :: rpos(3),r,ct + real(8) pmn(-2:2,0:nodr+1) + complex(8) :: ci,vwh(3,2,2,1:nodr),ri,ephi,a,b,a1,b1,z1,a2,b2,z2 + complex(8) :: umn(-2:2,0:nodr+1), hn(0:nodr+1), ephim(-2:2) + data ci,nodrmax/(0.d0,1.d0),0/ + if(nodr.gt.nodrmax) then + nodrmax=nodr + call init(nodr+2) + endif + call cartosphere(rpos,r,ct,ephi) + if(r.le.1.d-4) then + vwh(:,:,:,1:nodr)=(0.d0,0.d0) + if(itype.eq.3) return + vwh(1,1,1,1)=.5d0*fnr(2)/fnr(3) + vwh(2,1,1,1)=-.5d0*ci*fnr(2)/fnr(3) + vwh(1,1,2,1)=-.5d0*fnr(2)/fnr(3) + vwh(2,1,2,1)=-.5d0*ci*fnr(2)/fnr(3) + return + endif + nodrp1=nodr+1 + nodrm1=nodr-1 + a=ri*r + if(itype.eq.1) then + call cricbessel(nodrp1,a,hn) + else + call crichankel(nodrp1,a,hn) + endif + hn(0:nodrp1)=hn(0:nodrp1)/a + call normalizedlegendre(ct,2,nodrp1,pmn) + call ephicoef(ephi,2,ephim) + umn(-2:2,0:nodrp1)=0.d0 + umn(0,0)=hn(0)*fnr(2) + do n=1,nodrp1 + p=min(n,2) + do m=-p,p + umn(m,n)=fnr(2)*pmn(m,n)*ephim(m)*hn(n) + enddo + enddo + vwh(:,:,:,1:nodr)=0.d0 + do n=1,nodr + np1=n+1 + nm1=n-1 + m=-1 + mp1=m+1 + mm1=m-1 + a1=vwh_coef(m,n,1,1)*umn(mp1,np1) & + +vwh_coef(m,n,1,-1)*umn(mp1,nm1) + b1=vwh_coef(m,n,-1,1)*umn(mm1,np1) & + +vwh_coef(m,n,-1,-1)*umn(mm1,nm1) + z1=vwh_coef(m,n,0,1)*umn(m,np1) & + +vwh_coef(m,n,0,-1)*umn(m,nm1) + a2=vwh_coef(m,n,1,0)*umn(mp1,n) + b2=vwh_coef(m,n,-1,0)*umn(mm1,n) + z2=vwh_coef(m,n,0,0)*umn(m,n) + vwh(1,1,1,n)=-0.5d0*(a1+b1) + vwh(2,1,1,n)=-0.5d0*ci*(-a1+b1) + vwh(3,1,1,n)=-z1 + vwh(1,2,1,n)=-0.5d0*ci*(a2+b2) + vwh(2,2,1,n)=-0.5d0*(a2-b2) + vwh(3,2,1,n)=-ci*z2 + m=1 + mp1=m+1 + mm1=m-1 + a1=vwh_coef(m,n,1,1)*umn(mp1,np1) & + +vwh_coef(m,n,1,-1)*umn(mp1,nm1) + b1=vwh_coef(m,n,-1,1)*umn(mm1,np1) & + +vwh_coef(m,n,-1,-1)*umn(mm1,nm1) + z1=vwh_coef(m,n,0,1)*umn(m,np1) & + +vwh_coef(m,n,0,-1)*umn(m,nm1) + a2=vwh_coef(m,n,1,0)*umn(mp1,n) + b2=vwh_coef(m,n,-1,0)*umn(mm1,n) + z2=vwh_coef(m,n,0,0)*umn(m,n) + vwh(1,1,2,n)=-0.5d0*(a1+b1) + vwh(2,1,2,n)=-0.5d0*ci*(-a1+b1) + vwh(3,1,2,n)=-z1 + vwh(1,2,2,n)=-0.5d0*ci*(a2+b2) + vwh(2,2,2,n)=-0.5d0*(a2-b2) + vwh(3,2,2,n)=-ci*z2 + enddo + return + end subroutine vwhaxialcalc + + end module specialfuncs +! +! module mpidata +! +! +! last revised: 15 January 2011 +! + module mpidata + implicit none + integer :: group_comm,root_group_comm,base_rank,group_rank,root_group_rank, & + base_group,number_groups,proc_per_group,number_proc + integer, allocatable :: mpi_sphere_index(:), mpi_sphere_number(:) + + contains +! +! allocates the processors into groups +! +! last revised: 15 January 2011: original +! 20 April 2011: fixedorran=0 now looks for 2 groups. +! 10 october 2011: option for not storing matrices. If fixorran=0, 2 groups, else +! nproc groups +! november 2011: near and far field translation differentiation +! + subroutine mpisetup(nsphere,nodr,rpos,fixorran,maxmbperproc,istore, & + nfdistance,fftranpresent,iunit) + use mpidefs + use intrinsics + use specialfuncs + implicit none + integer :: nsphere,numprocs,ierr,i,iunit,nodr(nsphere),fixorran, & + nodrmax,nodrmin,temp_comm,newgroup,j,rank,maxmbperproc, & + istore,nfspheres,fftranpresent,ffspheres + integer, allocatable :: grouplist1(:),grouplist2(:) + real(8) :: memrow(nsphere),memtot,maxmemproc,memperproc + real(8) :: fp,sum,rpos(3,*),nfdistance,rij(3),r,avenfspheres,rmax, & + nfdistancei,aveffspheres + maxmemproc=maxmbperproc*1.d6 + call ms_mpi(mpi_command='size',mpi_size=numprocs) + call ms_mpi(mpi_command='rank',mpi_rank=rank) + call ms_mpi(mpi_command='group',mpi_group=base_group) + base_rank=rank + number_proc=numprocs + memrow=0.d0 + memtot=0.d0 +! +! compute the memory storage requirements +! + avenfspheres=0. + aveffspheres=0. + rmax=0. + if(1.eq.1) then + do i=1,nsphere + nfspheres=0 + do j=1,nsphere + rij(:)=rpos(:,i)-rpos(:,j) + if(j.ne.i) then + if(nfdistance.lt.0.) then + nfdistancei=(.5*dble(nodr(i)+nodr(j)))**2. + else + nfdistancei=nfdistance + endif + r=sqrt(dot_product(rij,rij)) + rmax=max(rmax,r) + if(r.le.nfdistancei) then + nfspheres=nfspheres+1 + nodrmax=max(nodr(j),nodr(i)) + nodrmin=min(nodr(j),nodr(i)) + memrow(i)=memrow(i)+(2*nodrmin+1)*(1+nodrmax*(nodrmax+2))*8.d0 + memrow(i)=memrow(i)+nodr(i)*nodr(j)*(nodr(j)+3)*16.d0 + memrow(i)=memrow(i)+(2*nodrmax+1)*16.d0 + endif + if(r.gt.nfdistancei.and.istore.eq.2) then + memrow(i)=memrow(i)+2*nodrmax*(nodrmax+2)*16.d0 + endif + endif + enddo + ffspheres=nsphere-1-nfspheres + avenfspheres=avenfspheres+nfspheres + aveffspheres=aveffspheres+ffspheres + memtot=memtot+memrow(i) + enddo + if(aveffspheres.eq.0) then + fftranpresent=0 + else + fftranpresent=1 + endif + proc_per_group=ceiling(memtot/maxmemproc) + proc_per_group=min(proc_per_group,numprocs) + proc_per_group=max(proc_per_group,1) + do + if(mod(numprocs,proc_per_group).eq.0) exit + if(proc_per_group.eq.numprocs) exit + proc_per_group=proc_per_group+1 + enddo + endif + avenfspheres=avenfspheres/dble(nsphere) + if(rank.eq.0) then + write(iunit,'('' average near field translations per sphere:'', f10.1)') avenfspheres + call flush(iunit) + endif +! +! no-store option +! + if(istore.eq.0) then + if(fixorran.eq.0) then + proc_per_group=max(floor(dble(numprocs)/2.),1) + else + proc_per_group=1 + endif + memrow=1.d0 + memtot=dble(nsphere) + else +! +! only one or two groups for fixed orientation +! + if(fixorran.eq.0) proc_per_group=max(floor(dble(numprocs)/2.),proc_per_group) + endif + number_groups=numprocs/proc_per_group + if(allocated(mpi_sphere_index)) deallocate(mpi_sphere_index) + if(allocated(mpi_sphere_number)) deallocate(mpi_sphere_number) + allocate(mpi_sphere_index(0:proc_per_group-1),mpi_sphere_number(0:proc_per_group-1), & + grouplist1(proc_per_group),grouplist2(number_groups)) + memperproc=memtot/dble(proc_per_group) +! +! associate the spheres with the processors in a group +! + mpi_sphere_index(0)=0 + do j=1,proc_per_group-1 + memtot=0.d0 + do i=1,nsphere + memtot=memtot+memrow(i) + if(memtot.gt.dble(j)*memperproc) then + mpi_sphere_index(j)=i-1 + exit + endif + enddo + enddo + do i=0,proc_per_group-2 + mpi_sphere_number(i)=mpi_sphere_index(i+1)-mpi_sphere_index(i) + enddo + mpi_sphere_number(proc_per_group-1)=nsphere-mpi_sphere_index(proc_per_group-1) +! +! assign the sphere-based groups +! + do i=0,number_groups-1 + do j=0,proc_per_group-1 + grouplist1(j+1)=i*proc_per_group+j + enddo + call ms_mpi(mpi_command='incl',mpi_group=base_group,mpi_size=proc_per_group, & + mpi_new_group_list=grouplist1,mpi_new_group=newgroup) + call ms_mpi(mpi_command='create',mpi_group=newgroup,mpi_new_comm=temp_comm) + if(rank.ge.grouplist1(1).and.rank.le.grouplist1(proc_per_group)) then + group_comm=temp_comm + endif + grouplist2(i+1)=i*proc_per_group + enddo +! +! make a group associated with the rank 0 members of the sphere groups +! + call ms_mpi(mpi_command='incl',mpi_group=base_group,mpi_size=number_groups, & + mpi_new_group_list=grouplist2,mpi_new_group=newgroup) + call ms_mpi(mpi_command='create',mpi_group=newgroup,mpi_new_comm=temp_comm) + group_rank=mod(rank,proc_per_group) + root_group_rank=floor(dble(rank)/dble(proc_per_group)) + if(group_rank.eq.0) root_group_comm=temp_comm + if(rank.eq.0) then + if(istore.ge.1) then + write(iunit,'('' number of processors, number groups, mb mem/processor:'',2i5,f9.3)') & + numprocs,number_groups,memperproc*1.d-6 + if(memperproc.gt.maxmemproc) then + write(iunit,'('' warning: set maximum memory/processor is exceeded!!'')') + endif + else + write(iunit,'('' number of processors, number groups:'',2i5)') & + numprocs,number_groups + endif + call flush(iunit) + endif + deallocate(grouplist1,grouplist2) + end subroutine mpisetup + + end module mpidata + +! +! module spheredata: used to 1) input sphere data, 2) dimension sphere data +! arrays, and 3) provide common access to the data in other subroutines. +! +! +! last revised: 15 January 2011 +! +! 30 March 2011: added optical activity +! + module spheredata + use specialfuncs + use mpidata + implicit none + integer, private :: numberspheres,numberiterations,fixedorrandom,numbertheta, & + calcnf,nfplane,calctmatrix,runprintunit,calcamn,maxmemperproc, & + trackiterations,nfoutdata,normalizesm,storetranmat,niterstep, & + fftranpresent + real(8), private :: lengthscalefactor,realriscalefactor,imriscalefactor,epsmie, & + epstran,epssoln,phideg,thetamindeg,thetamaxdeg,alphadeg, & + betadeg,epstcon,nfplanepos,nfplanevert(2,2),deltax,gammadeg,epspw, & + cgaussbeam,gaussbeamfocus(3),realchiralfactor,imchiralfactor,nfdistance + character(30), private :: positionfile,outputfile,nfoutputfile,tmatrixfile,printfile, & + amnfile + real(8), private :: xspmax,xvsp + real(8), private, allocatable :: rpos(:,:),xsp(:) + complex(8), private, allocatable :: ri(:,:) + data numberiterations,fixedorrandom,numbertheta/2000,0,181/ + data calcamn,trackiterations,niterstep/1,1,20/ + data lengthscalefactor,realriscalefactor,imriscalefactor,epsmie, & + epstran,epssoln,phideg,thetamindeg,thetamaxdeg,alphadeg, & + betadeg,epstcon/1.d0,1.d0,1.d0,1.d-4,1.d-6,1.d-10,0.d0,0.d0, & + 180.d0,0.d0,0.d0,1.d-6/ + data realchiralfactor,imchiralfactor/0.d0,0.d0/ + data normalizesm,storetranmat,nfdistance/0,1,-1.d0/ + data maxmemperproc/1500/ + data cgaussbeam/0.d0/ + data gaussbeamfocus/0.d0,0.d0,0.d0/ + data calcnf,calctmatrix,nfoutdata/0,1,1/ + data runprintunit/6/ + data positionfile,outputfile,tmatrixfile,printfile/'at_bottom','test.dat','tmatrix-temp.dat',' '/ + data nfoutputfile/'nf-temp.dat'/ + data amnfile/'amn-temp.dat'/ + + contains +! +! Find the number of data points in input unit iunit, and reposition the unit to the +! point after record containing parmid +! +! +! last revised: 15 January 2011 +! + subroutine numberinrecord(iunit,parmid,numrec) + implicit none + integer :: numrec,iunit + character*1 :: a + character*35 :: parmid + character*10 :: rec + numrec=0 + do + read(iunit,"(a)",advance="no",err=100,eor=100) a + if(a.ne.' '.and.a.ne.',') then +! +! start of a number +! + numrec=numrec+1 +! +! look for the delimeter +! + do + read(iunit,"(a)",advance="no",err=100,eor=100) a + if(a.eq.' '.or.a.eq.',') exit + enddo + endif + enddo +100 if(parmid.eq.'rewind') then + rewind(iunit) + else + backspace(iunit) + backspace(iunit) + backspace(iunit) + do + read(iunit,'(a10)') rec + if(rec.eq.parmid(1:10)) exit + enddo + endif + end subroutine numberinrecord +! +! inputdata: reads parameters from inputfile +! reads sphere data from position file +! +! +! original: 15 January 2011 +! revised: 21 February 2011: fix output file initialization. +! 30 March 2011: added optical activity +! +! + subroutine inputdata(inputfile,printdata) + integer :: imax,i,j,ierr,iunit,numrec,nsphere,printdata + real(8) :: rmax,rtoi,rposmean(3),rireal,riimag,dtemp,betareal,betaimag, & + rij,xij(3),rijmax + real(8), allocatable :: sdat(:) + complex(8) :: ribulk,beta + character*35 :: parmid + character*30 :: inputfile +! +! cycle through parameter input operations +! + open(1,file=inputfile) + do + read(1,'(a)',end=10) parmid + parmid=parmid(:index(parmid,' ')) + if(parmid.eq.'number_spheres') then + read(1,*) numberspheres + cycle + endif + if(parmid.eq.'sphere_position_file') then + read(1,'(a)') positionfile + positionfile=positionfile(:index(positionfile,' ')) + cycle + endif + if(parmid.eq.'output_file') then + read(1,'(a)') outputfile + outputfile=outputfile(:index(outputfile,' ')) + cycle + endif + if(parmid.eq.'run_print_file') then + read(1,'(a)') printfile + printfile=printfile(:index(printfile,' ')) + if(printdata.eq.1) then + if((printfile.eq.' '.or.printfile.eq.'console')) then + printfile=' ' + runprintunit=6 + else + runprintunit=4 + open(runprintunit,file=printfile) + endif + else + runprintunit=6 + endif + cycle + endif + if(parmid.eq.'length_scale_factor') then + read(1,*) lengthscalefactor + cycle + endif + if(parmid.eq.'real_ref_index_scale_factor') then + read(1,*) realriscalefactor + cycle + endif + if(parmid.eq.'imag_ref_index_scale_factor') then + read(1,*) imriscalefactor + cycle + endif + if(parmid.eq.'real_chiral_factor') then + read(1,*) realchiralfactor + cycle + endif + if(parmid.eq.'imag_chiral_factor') then + read(1,*) imchiralfactor + cycle + endif + if(parmid.eq.'mie_epsilon') then + read(1,*) epsmie + cycle + endif + if(parmid.eq.'translation_epsilon') then + read(1,*) epstran + cycle + endif + if(parmid.eq.'solution_epsilon') then + read(1,*) epssoln + cycle + endif + if(parmid.eq.'max_number_iterations') then + read(1,*) numberiterations + cycle + endif + if(parmid.eq.'max_memory_per_processor') then + read(1,*) maxmemperproc + cycle + endif + if(parmid.eq.'store_translation_matrix') then + read(1,*) storetranmat + cycle + endif + if(parmid.eq.'near_field_distance') then + read(1,*) nfdistance + cycle + endif + if(parmid.eq.'iterations_per_correction') then + read(1,*) niterstep + cycle + endif + if(parmid.eq.'fixed_or_random_orientation') then + read(1,*) fixedorrandom + cycle + endif + if(parmid.eq.'scattering_plane_angle_deg') then + read(1,*) phideg + cycle + endif + if(parmid.eq.'min_scattering_angle_deg') then + read(1,*) thetamindeg + cycle + endif + if(parmid.eq.'max_scattering_angle_deg') then + read(1,*) thetamaxdeg + cycle + endif + if(parmid.eq.'number_scattering_angles') then + read(1,*) numbertheta + cycle + endif + if(parmid.eq.'normalize_scattering_matrix') then + read(1,*) normalizesm + cycle + endif + if(parmid.eq.'incident_azimuth_angle_deg') then + read(1,*) alphadeg + cycle + endif + if(parmid.eq.'incident_polar_angle_deg') then + read(1,*) betadeg + cycle + endif + if(parmid.eq.'calculate_scattering_coefficients') then + read(1,*) calcamn + cycle + endif + if(parmid.eq.'scattering_coefficient_file') then + read(1,'(a)') amnfile + if(amnfile.eq.' ') then + amnfile='amn-temp.dat' + else + amnfile=amnfile(:index(amnfile,' ')) + endif + cycle + endif + if(parmid.eq.'track_iterations') then + read(1,*) trackiterations + cycle + endif + if(parmid.eq.'calculate_near_field') then + read(1,*) calcnf + cycle + endif + if(parmid.eq.'near_field_plane_coord') then + read(1,*) nfplane + cycle + endif + if(parmid.eq.'near_field_plane_position') then + read(1,*) nfplanepos + cycle + endif + if(parmid.eq.'near_field_plane_vertices') then + read(1,*) nfplanevert + cycle + endif + if(parmid.eq.'spacial_step_size') then + read(1,*) deltax + cycle + endif + if(parmid.eq.'polarization_angle_deg') then + read(1,*) gammadeg + cycle + endif + if(parmid.eq.'near_field_output_file') then + read(1,'(a)') nfoutputfile + if(nfoutputfile.eq.' ') then + nfoutputfile='nf-temp.dat' + else + nfoutputfile=nfoutputfile(:index(nfoutputfile,' ')) + endif + cycle + endif + if(parmid.eq.'near_field_output_data') then + read(1,*) nfoutdata + cycle + endif + if(parmid.eq.'plane_wave_epsilon') then + read(1,*) epspw + cycle + endif + if(parmid.eq.'gaussian_beam_constant') then + read(1,*) cgaussbeam + cycle + endif + if(parmid.eq.'gaussian_beam_focal_point') then + read(1,*) gaussbeamfocus + cycle + endif + if(parmid.eq.'t_matrix_convergence_epsilon') then + read(1,*) epstcon + cycle + endif + if(parmid.eq.'calculate_t_matrix') then + read(1,*) calctmatrix + cycle + endif + if(parmid.eq.'t_matrix_file') then + read(1,'(a)') tmatrixfile + if(tmatrixfile.eq.' ') then + tmatrixfile='tmatrix-temp.dat' + else + tmatrixfile=tmatrixfile(:index(tmatrixfile,' ')) + endif + cycle + endif + if(parmid.eq.'sphere_sizes_and_positions') exit + if(parmid.eq.'end_of_options') exit + write(*,'('' warning: unknown parameter ID:'',a35)') parmid + enddo +! +! end of parameter input options. Input of sphere data follows +! +10 write(runprintunit,'('' input file is '',a30)') inputfile + if(positionfile.ne.'at_bottom'.and.positionfile.ne.' ') then + close(1) + open(1,file=positionfile) + parmid='rewind' + endif +! +! find number of records in position file +! + call numberinrecord(1,parmid,numrec) + if(printdata.eq.1) write(runprintunit,'('' position data has '',i3,'' records'')') numrec + nsphere=numberspheres + iunit=1 + allocate(sdat(numrec)) + allocate(xsp(0:nsphere),rpos(3,0:nsphere),ri(2,0:nsphere),stat=ierr) + xvsp=0.d0 + do i=1,nsphere + read(iunit,*,end=20) sdat + xsp(i)=sdat(1)*lengthscalefactor + rpos(1:3,i)=sdat(2:4)*lengthscalefactor + if(numrec.gt.4) then + rireal=sdat(5)*realriscalefactor + riimag=sdat(6)*imriscalefactor + else + rireal=realriscalefactor + riimag=imriscalefactor + endif + if(numrec.gt.6) then + betareal=sdat(7)*realchiralfactor + betaimag=sdat(8)*imchiralfactor + else + betareal=realchiralfactor + betaimag=imchiralfactor + endif + ribulk=dcmplx(rireal,riimag) + beta=dcmplx(betareal,betaimag) + if(beta.eq.(0.d0,0.d0)) then + ri(1,i)=ribulk + ri(2,i)=ribulk + else + ri(1,i)=ribulk/(1.d0-beta*ribulk) + ri(2,i)=ribulk/(1.d0+beta*ribulk) + endif + xvsp=xvsp+xsp(i)**3.d0 + enddo +20 nsphere=min(nsphere,i-1) + close(iunit) + deallocate(sdat) + if(nsphere.ne.numberspheres.and.printdata.eq.1) then + write(runprintunit,'('' warning: insufficient position points in file.'')') + write(runprintunit,'('' number of spheres truncated to:'',i5)') nsphere + endif +! +! check for overlapping spheres, and find maximum translation +! + rijmax=0. + do i=1,nsphere + do j=i+1,nsphere + xij=rpos(:,i)-rpos(:,j) + rij=sqrt(dot_product(xij,xij)) + rijmax=max(rijmax,rij) + if(rij/(xsp(i)+xsp(j)).lt..999d0) then + write(runprintunit,'('' warning: spheres '',i4,'' and '',i4 '' overlap. '',& + & '' scaled distance:'' f8.4)') i,j,rij/(xsp(i)+xsp(j)) + endif + enddo + enddo + if(rijmax.gt.nfdistance) then + fftranpresent=1 + else + fftranpresent=0 + endif + numberspheres=nsphere + xvsp=xvsp**(1.d0/3.d0) + gaussbeamfocus=gaussbeamfocus*lengthscalefactor + if(nsphere.eq.1) then + rposmean=rpos(:,1) + rpos(:,1)=0.d0 + xspmax=xsp(1) + else + rposmean=0.d0 + do i=1,nsphere + rposmean=rposmean+rpos(:,i) + enddo + rposmean=rposmean/dble(nsphere) + rmax=0.d0 +! +! the target origin is defined as the GB focal point. +! + do i=1,nsphere +! rpos(1:3,i)=rpos(1:3,i)-rposmean(1:3) + rpos(1:3,i)=rpos(1:3,i)-gaussbeamfocus(1:3) + rtoi=dot_product(rpos(:,i),rpos(:,i)) + if(rtoi.gt.rmax) then + rmax=rtoi + imax=i + endif + enddo + xspmax=sqrt(rmax)+xsp(imax) + endif +! +! xsp(0) is the circumscribing sphere size parameter +! + xsp(0)=xspmax + ri(1,0)=(1.d0,0.d0) + ri(2,0)=(1.d0,0.d0) + rpos(:,0)=0.d0 +! +! write run data to run file and output file +! + if(printdata.eq.1) then + call writerundata(runprintunit) + call flush(runprintunit) + open(1,file=outputfile,status='replace',action='write') + call writerundata(1) + close(1) + endif + end subroutine inputdata +! +! writes run data to output unit iunit +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine writerundata(iunit) + implicit none + integer :: iunit,i + character*1 :: lf + if(iunit.ne.1) then + lf = ' ' + else + lf = '/' + endif + write(iunit,'('' number of spheres, volume size parameter:'' '//lf//',i5,e13.5)') & + numberspheres,xvsp + write(iunit,'('' position file:'' '//lf//',a)') positionfile + write(iunit,'('' output file:'' '//lf//',a)') outputfile + write(iunit,'('' length, ref. indx. scale factors:'' '//lf//',3f8.3)') lengthscalefactor, & + realriscalefactor,imriscalefactor + write(iunit,'('' chiral factors:'' '//lf//',2e13.5)') & + realchiralfactor,imchiralfactor + write(iunit,'('' thetamin, thetamax, num. theta:'' '//lf//',2f9.1,i5)') & + thetamindeg,thetamaxdeg,numbertheta + write(iunit,'('' epsmie, epssoln, max number iterations:'' '//lf//',2e12.4,i5)') epsmie, & + epssoln, numberiterations + if(fftranpresent.eq.1) then + write(iunit,'('' far field kr, iterations/correction:'' '//lf//',e12.4,i5)') & + nfdistance,niterstep + else + write(iunit,'('' all translations computed exactly'' '//lf//')') + endif + if(cgaussbeam.ne.0.d0) then + write(iunit,'('' gaussian incident beam: 1/width:'' '//lf//',f9.4,)') cgaussbeam + write(iunit,'('' beam focal point:'' '//lf//',3f9.3,)') gaussbeamfocus + else + write(iunit,'('' plane wave incidence'')') + endif + if(fixedorrandom.eq.0) then + write(iunit,'('' fixed orientation calculations'')') + write(iunit,'('' scattering plane, incident alpha, beta:'' '//lf//',3f9.2)') & + phideg,alphadeg,betadeg + write(iunit,'('' common expansion epsilon:'' '//lf//',e12.4)') epstran + if(calcamn.eq.0) then + write(iunit,'('' scattering coefficients read from file '' '//lf//',a)') amnfile + else + write(iunit,'('' scattering coefficients calculated, stored in file '' '//lf//',a)') amnfile + endif + if(calcnf.eq.1) then + write(iunit,'('' near field calculated, stored in file '' '//lf//',a)') nfoutputfile + write(iunit,'('' near field data output option: '' '//lf//',i4)') nfoutdata + write(iunit,'('' near field plane, position: '' '//lf//', i4,f9.3)') nfplane, nfplanepos + write(iunit,'('' near field plane vertices: '' '//lf//',4f9.3)') nfplanevert + write(iunit,'('' spacial step size:'' '//lf//',f9.4)') deltax + write(iunit,'('' polarization angle, deg.:'' '//lf//',f9.2)') gammadeg + write(iunit,'('' plane wave epsilon:'' '//lf//',e13.5)') epspw + endif + else + write(iunit,'('' random orientation calculations'')') + if(calctmatrix.eq.0) then + write(iunit,'('' t matrix read from file '' '//lf//',a)') tmatrixfile + elseif(calctmatrix.eq.1) then + write(iunit,'('' t matrix calculated, stored in file '' '//lf//',a)') tmatrixfile + write(iunit,'('' t matrix convergence epsilon:'' '//lf//',e12.4)') epstcon + else + write(iunit,'('' t matrix calculated from end of file '' '//lf//',a)') tmatrixfile + write(iunit,'('' t matrix convergence epsilon:'' '//lf//',e12.4)') epstcon + endif + endif + end subroutine writerundata +! +! getspheredata: retrieves sphere data +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine getspheredata(number_spheres, sphere_size_parameters, sphere_positions, & + sphere_refractive_indices, volume_size_parameter) + implicit none + integer, optional :: number_spheres + real(8), optional :: sphere_size_parameters(numberspheres), & + sphere_positions(3,numberspheres), volume_size_parameter + complex(8), optional :: sphere_refractive_indices(2,numberspheres) + if (present(number_spheres)) number_spheres=numberspheres + if (present(sphere_size_parameters)) sphere_size_parameters(1:numberspheres)=xsp(1:numberspheres) + if (present(sphere_positions)) sphere_positions(:,1:numberspheres)=rpos(:,1:numberspheres) + if (present(sphere_refractive_indices)) & + sphere_refractive_indices(:,1:numberspheres)=ri(:,1:numberspheres) + if (present(volume_size_parameter)) volume_size_parameter=xvsp + end subroutine getspheredata + + subroutine getspheredataone(sphere,sphere_size_parameter, sphere_position, & + sphere_refractive_index) + implicit none + integer :: sphere + real(8), optional :: sphere_size_parameter,sphere_position(3) + complex(8), optional :: sphere_refractive_index(2) + if (present(sphere_size_parameter)) sphere_size_parameter=xsp(sphere) + if (present(sphere_position)) sphere_position(:)=rpos(:,sphere) + if (present(sphere_refractive_index)) & + sphere_refractive_index(:)=ri(:,sphere) + end subroutine getspheredataone +! +! setspheredata: sets sphere data +! + subroutine setspheredata(number_spheres, sphere_size_parameters, sphere_positions, & + sphere_refractive_indices, volume_size_parameter) + implicit none + integer :: i + integer, optional :: number_spheres + real(8), optional :: sphere_size_parameters(*), & + sphere_positions(3,*), volume_size_parameter + complex(8), optional :: sphere_refractive_indices(2,*) + if (present(number_spheres)) then + numberspheres=number_spheres + if(allocated(xsp)) deallocate(xsp,rpos,ri) + allocate(xsp(0:numberspheres),rpos(3,0:numberspheres),ri(2,0:numberspheres)) + endif + if (present(sphere_size_parameters)) xsp(1:numberspheres) =sphere_size_parameters(1:numberspheres) + if (present(sphere_positions)) rpos(:,1:numberspheres) =sphere_positions(:,1:numberspheres) + if (present(sphere_refractive_indices)) ri(:,1:numberspheres) =sphere_refractive_indices(:,1:numberspheres) + if (present(volume_size_parameter)) xvsp =volume_size_parameter + end subroutine setspheredata +! +! getrunparameters: retrieves run parameters read from input file +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine getrunparameters(number_spheres,sphere_position_file,output_file, & + length_scale_factor,real_ref_index_scale_factor, & + imag_ref_index_scale_factor,mie_epsilon,translation_epsilon,solution_epsilon, & + max_number_iterations,fixed_or_random_orientation,scattering_plane_angle_deg, & + min_scattering_angle_deg,max_scattering_angle_deg,number_scattering_angles, & + incident_azimuth_angle_deg,incident_polar_angle_deg,calculate_near_field, & + near_field_plane_coord,near_field_plane_position,near_field_plane_vertices, & + spacial_step_size,polarization_angle_deg,near_field_output_file, & + plane_wave_epsilon,t_matrix_convergence_epsilon,gaussian_beam_constant, & + gaussian_beam_focal_point,calculate_t_matrix,t_matrix_file,run_print_file, & + run_print_unit,calculate_scattering_coefficients,scattering_coefficient_file, & + max_memory_per_processor,track_iterations,near_field_output_data, & + real_chiral_factor,imag_chiral_factor,normalize_scattering_matrix, & + store_translation_matrix,near_field_distance, & + iterations_per_correction) + implicit none + integer, optional :: number_spheres,max_number_iterations,fixed_or_random_orientation, & + number_scattering_angles,calculate_near_field,near_field_plane_coord, & + calculate_t_matrix,run_print_unit,calculate_scattering_coefficients, & + max_memory_per_processor,track_iterations,near_field_output_data, & + normalize_scattering_matrix,store_translation_matrix, & + iterations_per_correction + real(8), optional :: length_scale_factor,real_ref_index_scale_factor, & + imag_ref_index_scale_factor,mie_epsilon,translation_epsilon,solution_epsilon, & + scattering_plane_angle_deg, & + min_scattering_angle_deg,max_scattering_angle_deg, & + incident_azimuth_angle_deg,incident_polar_angle_deg,t_matrix_convergence_epsilon, & + near_field_plane_position,near_field_plane_vertices(2,2),spacial_step_size, & + polarization_angle_deg,plane_wave_epsilon,gaussian_beam_constant, & + gaussian_beam_focal_point(3),real_chiral_factor,imag_chiral_factor, & + near_field_distance + character*30, optional :: sphere_position_file,output_file,near_field_output_file, & + t_matrix_file,run_print_file,scattering_coefficient_file + if(present(number_spheres)) number_spheres =numberspheres + if(present(sphere_position_file)) sphere_position_file =positionfile + if(present(output_file)) output_file =outputfile + if(present(length_scale_factor)) length_scale_factor =lengthscalefactor + if(present(real_ref_index_scale_factor)) real_ref_index_scale_factor =realriscalefactor + if(present(imag_ref_index_scale_factor)) imag_ref_index_scale_factor =imriscalefactor + if(present(mie_epsilon)) mie_epsilon =epsmie + if(present(translation_epsilon)) translation_epsilon =epstran + if(present(solution_epsilon)) solution_epsilon =epssoln + if(present(max_number_iterations)) max_number_iterations =numberiterations + if(present(track_iterations)) track_iterations =trackiterations + if(present(max_memory_per_processor)) max_memory_per_processor =maxmemperproc + if(present(fixed_or_random_orientation)) fixed_or_random_orientation =fixedorrandom + if(present(scattering_plane_angle_deg)) scattering_plane_angle_deg =phideg + if(present(min_scattering_angle_deg)) min_scattering_angle_deg =thetamindeg + if(present(max_scattering_angle_deg)) max_scattering_angle_deg =thetamaxdeg + if(present(number_scattering_angles)) number_scattering_angles =numbertheta + if(present(normalize_scattering_matrix)) normalize_scattering_matrix =normalizesm + if(present(incident_azimuth_angle_deg)) incident_azimuth_angle_deg =alphadeg + if(present(incident_polar_angle_deg)) incident_polar_angle_deg =betadeg + if(present(t_matrix_convergence_epsilon)) t_matrix_convergence_epsilon =epstcon + if(present(calculate_near_field)) calculate_near_field =calcnf + if(present(near_field_plane_coord)) near_field_plane_coord =nfplane + if(present(near_field_plane_position)) near_field_plane_position =nfplanepos + if(present(near_field_plane_vertices)) near_field_plane_vertices =nfplanevert + if(present(spacial_step_size)) spacial_step_size =deltax + if(present(polarization_angle_deg)) polarization_angle_deg =gammadeg + if(present(near_field_output_file)) near_field_output_file =nfoutputfile + if(present(near_field_output_data)) near_field_output_data =nfoutdata + if(present(plane_wave_epsilon)) plane_wave_epsilon =epspw + if(present(gaussian_beam_constant)) gaussian_beam_constant =cgaussbeam + if(present(gaussian_beam_focal_point)) gaussian_beam_focal_point =gaussbeamfocus + if(present(t_matrix_file)) t_matrix_file =tmatrixfile + if(present(calculate_t_matrix)) calculate_t_matrix =calctmatrix + if(present(run_print_file)) run_print_file =printfile + if(present(run_print_unit)) run_print_unit =runprintunit + if(present(calculate_scattering_coefficients)) calculate_scattering_coefficients =calcamn + if(present(scattering_coefficient_file)) scattering_coefficient_file =amnfile + if(present(real_chiral_factor)) real_chiral_factor =realchiralfactor + if(present(imag_chiral_factor)) imag_chiral_factor =imchiralfactor + if(present(store_translation_matrix)) store_translation_matrix =storetranmat + if(present(near_field_distance)) near_field_distance =nfdistance + if(present(iterations_per_correction)) iterations_per_correction =niterstep + end subroutine getrunparameters +! +! set run parameters: set run parameters +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine setrunparameters(number_spheres,sphere_position_file,output_file, & + length_scale_factor,real_ref_index_scale_factor, & + imag_ref_index_scale_factor,mie_epsilon,translation_epsilon,solution_epsilon, & + max_number_iterations,fixed_or_random_orientation,scattering_plane_angle_deg, & + min_scattering_angle_deg,max_scattering_angle_deg,number_scattering_angles, & + incident_azimuth_angle_deg,incident_polar_angle_deg,calculate_near_field, & + near_field_plane_coord,near_field_plane_position,near_field_plane_vertices, & + spacial_step_size,polarization_angle_deg,near_field_output_file, & + plane_wave_epsilon,t_matrix_convergence_epsilon,gaussian_beam_constant, & + gaussian_beam_focal_point,calculate_t_matrix,t_matrix_file,run_print_file, & + run_print_unit,calculate_scattering_coefficients,scattering_coefficient_file, & + max_memory_per_processor,track_iterations,near_field_output_data, & + real_chiral_factor,imag_chiral_factor,store_translation_matrix, & + near_field_distance,iterations_per_correction) + implicit none + integer, optional :: number_spheres,max_number_iterations,fixed_or_random_orientation, & + number_scattering_angles,calculate_near_field,near_field_plane_coord, & + calculate_t_matrix,run_print_unit,calculate_scattering_coefficients, & + max_memory_per_processor,track_iterations,near_field_output_data, & + store_translation_matrix,iterations_per_correction + real(8), optional :: length_scale_factor,real_ref_index_scale_factor, & + imag_ref_index_scale_factor,mie_epsilon,translation_epsilon,solution_epsilon, & + scattering_plane_angle_deg,near_field_distance,& + min_scattering_angle_deg,max_scattering_angle_deg, & + incident_azimuth_angle_deg,incident_polar_angle_deg,t_matrix_convergence_epsilon, & + near_field_plane_position,near_field_plane_vertices(2,2),spacial_step_size, & + polarization_angle_deg,plane_wave_epsilon,gaussian_beam_constant, & + gaussian_beam_focal_point(3),real_chiral_factor,imag_chiral_factor + character*30, optional :: sphere_position_file,output_file,near_field_output_file, & + t_matrix_file,run_print_file,scattering_coefficient_file + + if(present(number_spheres)) numberspheres =number_spheres + if(present(sphere_position_file)) positionfile =sphere_position_file + if(present(output_file)) outputfile =output_file + if(present(length_scale_factor)) lengthscalefactor =length_scale_factor + if(present(real_ref_index_scale_factor)) realriscalefactor =real_ref_index_scale_factor + if(present(imag_ref_index_scale_factor)) imriscalefactor =imag_ref_index_scale_factor + if(present(mie_epsilon)) epsmie =mie_epsilon + if(present(translation_epsilon)) epstran =translation_epsilon + if(present(solution_epsilon)) epssoln =solution_epsilon + if(present(max_number_iterations)) numberiterations =max_number_iterations + if(present(track_iterations)) trackiterations =track_iterations + if(present(max_memory_per_processor)) maxmemperproc =max_memory_per_processor + if(present(fixed_or_random_orientation)) fixedorrandom =fixed_or_random_orientation + if(present(scattering_plane_angle_deg)) phideg =scattering_plane_angle_deg + if(present(min_scattering_angle_deg)) thetamindeg =min_scattering_angle_deg + if(present(max_scattering_angle_deg)) thetamaxdeg =max_scattering_angle_deg + if(present(number_scattering_angles)) numbertheta =number_scattering_angles + if(present(incident_azimuth_angle_deg)) alphadeg =incident_azimuth_angle_deg + if(present(incident_polar_angle_deg)) betadeg =incident_polar_angle_deg + if(present(t_matrix_convergence_epsilon)) epstcon =t_matrix_convergence_epsilon + if(present(calculate_near_field)) calcnf =calculate_near_field + if(present(near_field_plane_coord)) nfplane =near_field_plane_coord + if(present(near_field_plane_position)) nfplanepos =near_field_plane_position + if(present(near_field_plane_vertices)) nfplanevert =near_field_plane_vertices + if(present(spacial_step_size)) deltax =spacial_step_size + if(present(polarization_angle_deg)) gammadeg =polarization_angle_deg + if(present(near_field_output_file)) nfoutputfile =near_field_output_file + if(present(near_field_output_data)) nfoutdata =near_field_output_data + if(present(plane_wave_epsilon)) epspw =plane_wave_epsilon + if(present(gaussian_beam_constant)) cgaussbeam =gaussian_beam_constant + if(present(gaussian_beam_focal_point)) gaussbeamfocus =gaussian_beam_focal_point + if(present(t_matrix_file)) tmatrixfile =t_matrix_file + if(present(calculate_t_matrix)) calctmatrix =calculate_t_matrix + if(present(run_print_file)) printfile =run_print_file + if(present(run_print_unit)) runprintunit =run_print_unit + if(present(calculate_scattering_coefficients)) calcamn =calculate_scattering_coefficients + if(present(scattering_coefficient_file)) amnfile =scattering_coefficient_file + if(present(real_chiral_factor)) realchiralfactor =real_chiral_factor + if(present(imag_chiral_factor)) imchiralfactor =imag_chiral_factor + if(present(store_translation_matrix)) storetranmat =store_translation_matrix + if(present(near_field_distance)) nfdistance =near_field_distance + if(present(iterations_per_correction)) niterstep =iterations_per_correction + end subroutine setrunparameters + + end module spheredata +! +! module miecoefdata: used to 1) calculate single sphere mie coefficient values, +! 2) store values in an allocated array, 3) provide common access to values, and +! 4) perform multiplication of coefficient values with vectors containing VWH scattering +! coefficients. +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + module miecoefdata + implicit none + integer, private :: numeqns,maxorder + integer, allocatable, private :: nodr(:),nodroffset(:),nblk(:),nblkoffset(:) + real(8), allocatable, private :: qextmie(:),qabsmie(:) + complex(8), allocatable, private :: anmie(:,:,:),cnmie(:,:,:) + interface getmiedata + module procedure getmiedataall, getmiedataone + end interface getmiedata + + contains +! +! calculation of the max order of sphere expansions and storage of mie coefficients +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine miecoefcalc(nsphere,xsp,ri,qeps) + implicit none + integer :: n,nodrn,nsphere,nodrtot,ierr,nblktot + real(8) :: qext,qabs,qsca,qeps,xsp(nsphere) + complex(8) :: ri(2,nsphere) + complex(8), allocatable :: anp(:,:,:),cnp(:,:,:) + if(allocated(nodr)) deallocate(nodr,nodroffset,nblk, & + nblkoffset,qextmie,qabsmie) + allocate(nodr(nsphere),nodroffset(nsphere+1), & + nblk(nsphere),nblkoffset(nsphere+1), & + qextmie(nsphere),qabsmie(nsphere),stat=ierr) + if(ierr.ne.0) then + write(*,'('' bad allocation in nodr: stat:'',i4)') ierr + endif + nodrtot=0 + nblktot=0 + maxorder=0 +! +! calculate the order limits and efficiencies +! + do n=1,nsphere + call mieoa(xsp(n),ri(1,n),nodrn,qeps,qext,qsca) + nodroffset(n)=nodrtot + nblkoffset(n)=nblktot + nodr(n)=nodrn + maxorder=max(maxorder,nodrn) + nblk(n)=nodrn*(nodrn+2)*2 + nodrtot=nodrtot+nodrn + nblktot=nblktot+nblk(n) + qextmie(n)=qext + qabsmie(n)=qext-qsca + enddo + nodroffset(nsphere+1)=nodrtot + nblkoffset(nsphere+1)=nblktot + numeqns=nblktot +! +! calculate the mie coefficients, and store in memory +! + if(allocated(anmie)) deallocate(anmie,cnmie) + allocate(anmie(2,2,nodrtot),cnmie(2,2,nodrtot),stat=ierr) + if(ierr.ne.0) then + write(*,'('' bad allocation in anmie: stat:'',i4)') ierr + endif + do n=1,nsphere + if(abs(ri(1,n)-ri(2,n)).eq.0) then + allocate(anp(2,1,nodr(n)),cnp(2,1,nodr(n))) + call mieregular(xsp(n),ri(1,n),nodrn,qeps,qext,qsca,anp_mie=anp,cnp_mie=cnp) + anmie(1,1,nodroffset(n)+1:nodroffset(n+1))=anp(1,1,1:nodr(n)) + anmie(2,2,nodroffset(n)+1:nodroffset(n+1))=anp(2,1,1:nodr(n)) + anmie(1,2,nodroffset(n)+1:nodroffset(n+1))=0.d0 + anmie(2,1,nodroffset(n)+1:nodroffset(n+1))=0.d0 + cnmie(1,1,nodroffset(n)+1:nodroffset(n+1))=cnp(1,1,1:nodr(n)) + cnmie(2,2,nodroffset(n)+1:nodroffset(n+1))=cnp(2,1,1:nodr(n)) + cnmie(1,2,nodroffset(n)+1:nodroffset(n+1))=0.d0 + cnmie(2,1,nodroffset(n)+1:nodroffset(n+1))=0.d0 + deallocate(anp,cnp) + else + allocate(anp(2,2,nodr(n)),cnp(2,2,nodr(n))) + call mieoa(xsp(n),ri(1,n),nodrn,qeps,qext,qsca,anp_mie=anp,cnp_mie=cnp) + anmie(1:2,1:2,nodroffset(n)+1:nodroffset(n+1))=anp(1:2,1:2,1:nodr(n)) + cnmie(1:2,1:2,nodroffset(n)+1:nodroffset(n+1))=cnp(1:2,1:2,1:nodr(n)) + deallocate(anp,cnp) + endif + enddo + end subroutine miecoefcalc +! +! retrieve the array of mie data +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine getmiedataall(sphere_order, sphere_block, & + sphere_order_offset, sphere_block_offset, sphere_qext, & + sphere_qabs, sphere_mie_coefficients, sphere_int_mie_coefficients, & + number_equations, max_order) + use spheredata + implicit none + integer, optional :: sphere_order(:), sphere_block(:), sphere_order_offset(:), & + sphere_block_offset(:),number_equations, max_order + integer :: i,nsphere + real(8), optional :: sphere_qext(:), sphere_qabs(:) + complex(8), optional :: sphere_mie_coefficients(:,:,:,:), & + sphere_int_mie_coefficients(:,:,:,:) + call getspheredata(number_spheres=nsphere) + if(present(sphere_order)) sphere_order=nodr + if(present(sphere_block)) sphere_block=nblk + if(present(sphere_order_offset)) sphere_order_offset=nodroffset + if(present(sphere_block_offset)) sphere_block_offset=nblkoffset + if(present(sphere_qext)) sphere_qext=qextmie + if(present(sphere_qabs)) sphere_qabs=qabsmie + if(present(number_equations)) number_equations=numeqns + if(present(max_order)) max_order=maxorder + if(present(sphere_mie_coefficients)) then + do i=1,nsphere + sphere_mie_coefficients(1:2,1:2,1:nodr(i),i) & + =anmie(1:2,1:2,nodroffset(i)+1:nodroffset(i+1)) + enddo + endif + if(present(sphere_int_mie_coefficients)) then + do i=1,nsphere + sphere_int_mie_coefficients(1:2,1:2,1:nodr(i),i) & + =cnmie(1:2,1:2,nodroffset(i)+1:nodroffset(i+1)) + enddo + endif + end subroutine getmiedataall +! +! retrieve mie data for a single sphere +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine getmiedataone(which_sphere, sphere_order, sphere_block, & + sphere_order_offset, sphere_block_offset, sphere_qext, & + sphere_qabs, sphere_mie_coefficients, sphere_int_mie_coefficients, & + number_equations, max_order) + use spheredata + implicit none + integer, optional :: sphere_order, sphere_block, sphere_order_offset, & + sphere_block_offset, number_equations, max_order + integer :: which_sphere + integer :: i,nsphere + real(8), optional :: sphere_qext, sphere_qabs + complex(8), optional :: sphere_mie_coefficients(:,:,:), sphere_int_mie_coefficients(:,:,:) + i=which_sphere + if(present(sphere_order)) sphere_order=nodr(i) + if(present(sphere_block)) sphere_block=nblk(i) + if(present(sphere_order_offset)) sphere_order_offset=nodroffset(i) + if(present(sphere_block_offset)) sphere_block_offset=nblkoffset(i) + if(present(sphere_qext)) sphere_qext=qextmie(i) + if(present(sphere_qabs)) sphere_qabs=qabsmie(i) + if(present(number_equations)) number_equations=numeqns + if(present(max_order)) max_order=maxorder + if(present(sphere_mie_coefficients)) & + sphere_mie_coefficients(1:2,1:2,1:nodr(i)) & + =anmie(1:2,1:2,nodroffset(i)+1:nodroffset(i+1)) + if(present(sphere_int_mie_coefficients)) & + sphere_int_mie_coefficients(1:2,1:2,1:nodr(i)) & + =cnmie(1:2,1:2,nodroffset(i)+1:nodroffset(i+1)) + end subroutine getmiedataone +! +! retrieve mie coefficients for sphere n +! 30 March 2011: added optical activity +! + function miecoef(n) + implicit none + integer :: n + complex(8), dimension(2,2,nodr(n)) :: miecoef + miecoef=anmie(1:2,1:2,nodroffset(n)+1:nodroffset(n+1)) + end function miecoef + + function internalmiecoef(n) + implicit none + integer :: n + complex(8), dimension(2,2,nodr(n)) :: internalmiecoef + internalmiecoef=cnmie(1:2,1:2,nodroffset(n)+1:nodroffset(n+1)) + end function internalmiecoef +! +! multiples the solution vector cx by mie coefficients and returns in y +! i1: starting sphere, i2: ending sphere +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine miecoeffmult(i1,i2,neqns,cx,cy) + implicit none + integer :: i1,i2,neqns,i,n,p,nodrvec(3),nodri,nblki,noffi,icon,q + complex(8) :: cx(neqns),cy(neqns) + complex(8), allocatable :: cxt(:,:,:),an1(:,:,:),cxtt(:,:,:) + + do i=i1,i2 + nodri=nodr(i) + nblki=nblk(i) + noffi=nblkoffset(i) + allocate(cxt(0:nodri+1,nodri,2),cxtt(0:nodri+1,nodri,2),an1(2,2,nodri)) + cxt=reshape(cx(noffi+1:noffi+nblki),(/nodri+2,nodri,2/)) + cxtt=0.d0 + an1=miecoef(i) + do n=1,nodri + do p=1,2 + cxtt(n+1,n:1:-1,p)=an1(p,1,n)*cxt(n+1,n:1:-1,1)+an1(p,2,n)*cxt(n+1,n:1:-1,2) + cxtt(0:n,n,p)=an1(p,1,n)*cxt(0:n,n,1)+an1(p,2,n)*cxt(0:n,n,2) + enddo + enddo + cy(noffi+1:noffi+nblki)=reshape(cxtt(0:nodri+1,1:nodri,1:2),(/nblki/)) + deallocate(cxt,cxtt,an1) + enddo + end subroutine miecoeffmult + + subroutine internalmiecoeffmult(i1,i2,neqns,cx,cy) + implicit none + integer :: i1,i2,neqns,i,n,p,nodrvec(3),nodri,nblki,noffi,icon,q + complex(8) :: cx(neqns),cy(neqns) + complex(8), allocatable :: cxt(:,:,:),an1(:,:,:),cxtt(:,:,:) + + do i=i1,i2 + nodri=nodr(i) + nblki=nblk(i) + noffi=nblkoffset(i) + allocate(cxt(0:nodri+1,nodri,2),cxtt(0:nodri+1,nodri,2),an1(2,2,nodri)) + cxt=reshape(cx(noffi+1:noffi+nblki),(/nodri+2,nodri,2/)) + cxtt=0.d0 + an1=internalmiecoef(n) + do n=1,nodri + do p=1,2 + cxtt(n+1,n:1:-1,p)=an1(p,1,n)*cxt(n+1,n:1:-1,1)+an1(p,2,n)*cxt(n+1,n:1:-1,2) + cxtt(0:n,n,p)=an1(p,1,n)*cxt(0:n,n,1)+an1(p,2,n)*cxt(0:n,n,2) + enddo + enddo + cy(noffi+1:noffi+nblki)=reshape(cxtt(0:nodri+1,1:nodri,1:2),(/nblki/)) + deallocate(cxt,cxtt,an1) + enddo + end subroutine internalmiecoeffmult +! +! single-sphere lorenz/mie coefficients +! +! +! last revised: 15 January 2011 +! + subroutine mieregular(x,ri,nstop,qeps,qext,qsca,anp_mie,cnp_mie) + use specialfuncs + implicit none + integer :: nstop,n,iancalc + real(8) :: x,qeps,qext,qsca,prn,prp,qext1,err + complex(8), optional :: anp_mie(2,*), cnp_mie(2,*) + complex(8) :: ri,y,pcp,xip,da,db,na,nb,an1,an2,cn1,cn2 + complex(8), allocatable :: pc(:),xi(:) +! +! modified LM criterion +! + if(qeps.gt.0.) nstop=nint(x+4.*x**(1./3.))+15 +! +! user-set order limit +! + if(qeps.lt.0) nstop=-qeps +! +! basic calculations follow +! + allocate(pc(0:nstop),xi(0:nstop)) + y=x*ri + call cricbessel(nstop,y,pc) + call richankel(nstop,x,xi) + qsca=0.0 + qext=0.0 + do n=1,nstop + prn=dble(xi(n)) + pcp=pc(n-1)-n*pc(n)/y + xip=xi(n-1)-n*xi(n)/x + prp=dble(xip) + da=ri*xip*pc(n)-xi(n)*pcp + db=ri*xi(n)*pcp-xip*pc(n) + na=ri*prp*pc(n)-prn*pcp + nb=ri*prn*pcp-prp*pc(n) + an1=-na/da + an2=-nb/db + cn1=-dcmplx(0.d0,1.d0)*ri/na + cn2=dcmplx(0.d0,1.d0)*ri/nb + if(present(anp_mie)) then + anp_mie(1,n)=an1 + anp_mie(2,n)=an2 + endif + if(present(cnp_mie)) then + cnp_mie(1,n)=cn1 + cnp_mie(2,n)=cn2 + endif + qsca=qsca+(n+n+1)*(cdabs(an1)*cdabs(an1) & + +cdabs(an2)*cdabs(an2)) + qext1=-(n+n+1)*dble(an1+an2) + qext=qext+qext1 + err=abs(qext1)/abs(qext) + if(err.lt.qeps.or.n.eq.nstop) exit + enddo + nstop=n + qsca=2./x/x*qsca + qext=2./x/x*qext + deallocate(pc,xi) + end subroutine mieregular +! +! optically active lorenz/mie coefficients +! 30 March 2011 +! + subroutine mieoa(x,ri,nstop,qeps,qext,qsca,anp_mie,cnp_mie) + use specialfuncs + implicit none + integer :: nstop + real(8) :: x,qeps,qext,qsca,fn1,err + complex(8) :: ri(2) + complex(8), optional :: anp_mie(2,2,*),cnp_mie(2,2,*) + integer :: n,i,p,q + real(8) :: psi,psip,qext1 + complex (8) :: xri(2),xip,psicp,psic,wn(2),vn(2),an(2),bn(2), & + den,xi,anct(2,2),cnct(2,2),ri0,ci + complex(8), allocatable :: psicn(:,:),xin(:) + data ci/(0.d0,1.d0)/ + + ri0=2.d0/(1.d0/ri(1)+1.d0/ri(2)) + if(qeps.ge.0.) then + nstop=nint(x+4.*x**(1./3.))+5. + else + nstop=-qeps + endif + allocate(psicn(0:nstop+1,2),xin(0:nstop+1)) + do i=1,2 + xri(i)=x*ri(i) + call cricbessel(nstop+1,xri(i),psicn(0,i)) + enddo + call richankel(nstop+1,x,xin) + qsca=0.0 + qext=0.0 + do n=1,nstop + do i=1,2 + psic=psicn(n,i) + psicp=psicn(n-1,i)-dble(n)*psic/xri(i) + xi=xin(n) + xip=xin(n-1)-dble(n)*xi/x + psi=dble(xi) + psip=dble(xip) + wn(i)=ri0*psic*xip-xi*psicp + vn(i)=psic*xip-ri0*xi*psicp + an(i)=ri0*psic*psip-psi*psicp + bn(i)=psic*psip-ri0*psi*psicp + enddo + den=wn(1)*vn(2)+wn(2)*vn(1) + anct(1,1)=-(vn(1)*an(2)+vn(2)*an(1))/den + anct(2,2)=-(wn(1)*bn(2)+wn(2)*bn(1))/den + anct(1,2)=(wn(1)*an(2)-wn(2)*an(1))/den + anct(2,1)=anct(1,2) + den=an(1)*bn(2)+an(2)*bn(1) + cnct(1,1)=-ci*ri(1)*bn(2)/den + cnct(1,2)=-ci*ri(1)*an(2)/den + cnct(2,1)=ri(2)*ri0*bn(1)/den + cnct(2,2)=-ri(2)*ri0*an(1)/den + if(present(anp_mie)) then + do p=1,2 + do q=1,2 + anp_mie(p,q,n)=anct(p,q) + cnp_mie(p,q,n)=cnct(p,q) + enddo + enddo + endif + qext1=0.d0 + fn1=n+n+1 + do p=1,2 + do q=1,2 + qsca=qsca+fn1*cdabs(anct(p,q))*cdabs(anct(p,q)) + enddo + qext1=qext1-fn1*dble(anct(p,p)) + enddo + qext=qext+qext1 + err=abs(qext1)/abs(qext) + if(err.lt.qeps.or.n.eq.nstop) exit + enddo + nstop=min(n,nstop) + qsca=2./x/x*qsca + qext=2./x/x*qext + return + end subroutine mieoa + + end module miecoefdata +! +! module translation contains subroutines for VSWF translation and rotation +! +! +! last revised: 15 January 2011 +! + module translation + implicit none + integer, private :: stored_max_order,store_tran_mat + integer, allocatable, private :: nsizerot(:,:),nsizetran(:,:),nsizeephi(:,:), & + noffrot(:,:),nofftran(:,:),noffephi(:,:) + real(8), private :: near_field_distance + real(8), allocatable, private :: sphere_position(:,:) + real(8), target, allocatable, private :: rotmatstore(:) + complex(8), target, allocatable, private :: tranmatstore(:), ephimatstore(:) + complex(8), allocatable, private :: rvec_temp(:,:),tvec_temp(:,:),c_temp(:,:,:), & + ct_temp(:,:,:),rvec2_temp(:,:),tvec2_temp(:,:),c2_temp(:,:,:), & + ct2_temp(:,:,:) + + contains +! +! rotation of expansion coefficients amn by euler angles alpha,beta,gamma +! idir=1: forward rotation, idir=-1, reverse rotation. +! +! +! last revised: 15 January 2011 +! + subroutine rotvec(alpha,beta,gamma,nmax,mmax,amn,idir) + use numconstants + use specialfuncs + implicit none + integer :: nmax,mmax,idir,k,n,m,in,kmax,kn,ka,na,p,im,m1 + real(8) :: dc(-nmax-1:nmax+1,-nmax-1:nmax+1),dk0(-nmax-1:nmax+1), & + dk01(-nmax-1:nmax+1),sbe,cbe,sbe2,cbe2,sben,dkt, & + fmn,dkm0,dkm1,alpha,beta,gamma + complex(8) :: ealpha,amn(0:nmax+1,nmax,2),ealpham(-nmax:nmax), & + amnt(2,-nmax:nmax),a,b,ci,egamma,egammam(-nmax:nmax) + data ci/(0.d0,1.d0)/ + call init(nmax) + dc=0.d0 + dk01=0.d0 + dk0=0.d0 + ealpha=cdexp(ci*alpha) + egamma=cdexp(ci*gamma) + cbe=cos(beta) + sbe=sqrt((1.d0+cbe)*(1.d0-cbe)) + cbe2=.5d0*(1.d0+cbe) + sbe2=.5d0*(1.d0-cbe) + call ephicoef(ealpha,nmax,ealpham) + call ephicoef(egamma,nmax,egammam) + in=1 + dk0(0)=1.d0 + sben=1.d0 + dk01(0)=0.d0 + do n=1,nmax + kmax=min(n,mmax) + do k=-kmax,kmax + if(k.le.-1) then + ka=n+1 + na=-k + else + ka=k + na=n + endif + if(idir.eq.1) then + amnt(1,k)=amn(ka,na,1)*ealpham(k) + amnt(2,k)=amn(ka,na,2)*ealpham(k) + else + amnt(1,-k)=amn(ka,na,1)*egammam(k) + amnt(2,-k)=amn(ka,na,2)*egammam(k) + endif + enddo + in=-in + sben=sben*sbe/2.d0 + dk0(n)=in*sben*bcof(n,n) + dk0(-n)=in*dk0(n) + dk01(n)=0.d0 + dk01(-n)=0.d0 + dc(0,n)=dk0(n) + dc(0,-n)=dk0(-n) + do k=-n+1,n-1 + dkt=dk01(k) + dk01(k)=dk0(k) + dk0(k)=(cbe*(n+n-1)*dk01(k)-fnr(n-k-1)*fnr(n+k-1)*dkt) & + /(fnr(n+k)*fnr(n-k)) + dc(0,k)=dk0(k) + enddo + im=1 + do m=1,kmax + im=-im + fmn=1./fnr(n-m+1)/fnr(n+m) + m1=m-1 + dkm0=0. + do k=-n,n + dkm1=dkm0 + dkm0=dc(m1,k) + dc(m,k)=(fnr(n+k)*fnr(n-k+1)*cbe2*dkm1 & + -fnr(n-k)*fnr(n+k+1)*sbe2*dc(m1,k+1) & + -k*sbe*dc(m1,k))*fmn + dc(-m,-k)=dc(m,k)*(-1)**(k)*im + enddo + enddo + do m=-n,n + if(m.le.-1) then + ka=n+1 + na=-m + else + ka=m + na=n + endif + a=0. + b=0. + do k=-kmax,kmax + a=a+dc(-k,-m)*amnt(1,k) + b=b+dc(-k,-m)*amnt(2,k) + enddo + if(idir.eq.1) then + amn(ka,na,1)=a*egammam(m) + amn(ka,na,2)=b*egammam(m) + else + amn(ka,na,1)=a*ealpham(m) + amn(ka,na,2)=b*ealpham(m) + endif + enddo + enddo + end subroutine rotvec +! +! sets up the stored translation matrices for mpi +! +! +! last revised: 15 January 2011 +! november 2011: added near and far field translation +! + subroutine mpirottranmtrxsetup(nsphere,nodr,rpos,ri,istore,nfdistance,& + runprintunit) + use mpidefs + use mpidata + use intrinsics + use numconstants + use specialfuncs + implicit none + integer :: nsphere,nodr(nsphere),i,j,nodrmax,nodrmin,n,ntotrot,ntottran,ntotephi, & + ierr,n1,n2,nt,rank,nsrank,runprintunit,isendok,tag,sendrank,numprocs,brank, & + nsend,istore + real(8) :: rpos(3,nsphere),xij(3),r,ct,memused(1),memusedmax(1),memusedmin(1), & + nfdistance,nfdistancei + real(8), allocatable :: rotmat(:,:) + complex(8) :: ri,ephi + complex(8), allocatable :: tranmat(:,:,:),ephimat(:),pivec(:,:,:) + data isendok,tag/0,1/ + numprocs=proc_per_group + rank=group_rank + brank=base_rank + nsrank=mpi_sphere_number(rank) + nodrmax=maxval(nodr) + call init(nodrmax) + store_tran_mat=istore + near_field_distance=nfdistance + if(allocated(sphere_position)) deallocate(sphere_position) + allocate(sphere_position(3,nsphere)) + sphere_position=rpos + if(istore.eq.0) then + return + endif + if(allocated(nsizerot)) deallocate(nsizerot,nsizetran,nsizeephi,noffrot,nofftran,noffephi) + allocate(nsizerot(nsphere,nsphere),nsizetran(nsphere,nsphere),nsizeephi(nsphere,nsphere), & + noffrot(nsphere,nsphere),nofftran(nsphere,nsphere),noffephi(nsphere,nsphere)) + if(allocated(rvec_temp)) deallocate(rvec_temp,tvec_temp,c_temp,ct_temp, & + rvec2_temp,tvec2_temp,c2_temp,ct2_temp) + allocate(rvec_temp(-nodrmax:nodrmax,2),tvec_temp(nodrmax,2), & + c_temp(-nodrmax:nodrmax,nodrmax,2),ct_temp(nodrmax,2,2), & + rvec2_temp(-nodrmax:nodrmax,2),tvec2_temp(nodrmax,2), & + c2_temp(-nodrmax:nodrmax,nodrmax,2),ct2_temp(nodrmax,2,2)) + stored_max_order=nodrmax +! +! determine the memory requirements +! + ntotrot=0 + ntottran=0 + ntotephi=0 + do i=mpi_sphere_index(rank)+1,mpi_sphere_index(rank)+nsrank + do j=1,nsphere + xij(:)=rpos(:,i)-rpos(:,j) + if(j.ne.i) then + if(nfdistance.lt.0.) then + nfdistancei=(.5*dble(nodr(i)+nodr(j)))**2. + else + nfdistancei=nfdistance + endif + r=sqrt(dot_product(xij,xij)) + if(r.le.nfdistancei) then + nodrmax=max(nodr(j),nodr(i)) + nodrmin=min(nodr(j),nodr(i)) + noffrot(i,j)=ntotrot + nofftran(i,j)=ntottran + noffephi(i,j)=ntotephi + nsizerot(i,j)=(2*nodrmin+1)*(1+nodrmax*(nodrmax+2)) + nsizetran(i,j)=nodr(i)*nodr(j)*(nodr(j)+3) + nsizeephi(i,j)=2*nodrmax+1 + ntotrot=ntotrot+nsizerot(i,j) + ntottran=ntottran+nsizetran(i,j) + ntotephi=ntotephi+nsizeephi(i,j) + endif + if(r.gt.nfdistancei.and.istore.eq.2) then + nodrmax=max(nodr(j),nodr(i)) + nofftran(i,j)=ntottran + nsizetran(i,j)=2*nodrmax*(nodrmax+2) + ntottran=ntottran+nsizetran(i,j) + endif + endif + enddo + enddo + memused(1)=dble(8*ntotrot+16*(ntottran+ntotephi))*1.d-6 + nsend=1 + call ms_mpi(mpi_command='reduce',mpi_send_buf_dp=memused,mpi_recv_buf_dp=memusedmax,& + mpi_number=1,mpi_rank=0,mpi_operation=ms_mpi_max) + call ms_mpi(mpi_command='reduce',mpi_send_buf_dp=memused,mpi_recv_buf_dp=memusedmin,& + mpi_number=1,mpi_rank=0,mpi_operation=ms_mpi_min) + call ms_mpi(mpi_command='barrier') + if(brank.eq.0) then + write(runprintunit,'('' maximum translation matrix storage:'',f9.4,'' MB'')') memusedmax + write(runprintunit,'('' minimum translation matrix storage:'',f9.4,'' MB'')') memusedmin + call flush(runprintunit) + endif +! +! calculate the matrices and store in memory +! + if(allocated(rotmatstore)) deallocate(rotmatstore,tranmatstore,ephimatstore) + allocate(rotmatstore(ntotrot),stat=ierr) + allocate(tranmatstore(ntottran),stat=ierr) + allocate(ephimatstore(ntotephi),stat=ierr) + do i=mpi_sphere_index(rank)+1,mpi_sphere_index(rank)+nsrank + do j=1,nsphere + if(j.ne.i) then + nodrmax=max(nodr(j),nodr(i)) + nodrmin=min(nodr(j),nodr(i)) + xij=rpos(:,i)-rpos(:,j) + call cartosphere(xij,r,ct,ephi) + if(nfdistance.lt.0.) then + nfdistancei=(.5*dble(nodr(i)+nodr(j)))**2. + else + nfdistancei=nfdistance + endif + if(r.le.nfdistancei) then +! +! rotation matrix +! + n1=noffrot(i,j)+1 + nt=nsizerot(i,j) + n2=n1+nt-1 + allocate(rotmat(-nodrmin:nodrmin,0:nodrmax*(nodrmax+2))) + call rotcoef(ct,nodrmin,nodrmax,rotmat) + rotmatstore(n1:n2)=reshape(rotmat,(/nt/)) + deallocate(rotmat) +! +! axial translation matrix +! + n1=nofftran(i,j)+1 + nt=nsizetran(i,j) + n2=n1+nt-1 + allocate(tranmat(nodr(i),nodr(j)*(nodr(j)+3)/2,2)) + call axialtrancoef(3,r,ri,nodr(i),nodr(j),tranmat) + tranmatstore(n1:n2)=reshape(tranmat,(/nt/)) + deallocate(tranmat) +! +! ephi matrix +! + n1=noffephi(i,j)+1 + nt=nsizeephi(i,j) + n2=n1+nt-1 + allocate(ephimat(-nodrmax:nodrmax)) + call ephicoef(ephi,nodrmax,ephimat) + ephimatstore(n1:n2)=ephimat(-nodrmax:nodrmax) + deallocate(ephimat) +! +! ff translation matrix storage +! + elseif(istore.eq.2) then + n1=nofftran(i,j)+1 + nt=nsizetran(i,j) + n2=n1+nt-1 + nodrmax=max(nodr(j),nodr(i)) + allocate(pivec(0:nodrmax+1,nodrmax,2)) + call pifunc(ct,ephi,nodrmax,nodrmax,pivec) + tranmatstore(n1:n2)=reshape(pivec,(/nt/)) + deallocate(pivec) + endif + endif + enddo + enddo + end subroutine mpirottranmtrxsetup +! +! clear the stored translation matrices +! +! +! last revised: 15 January 2011 +! + subroutine rottranmtrxclear() + implicit none + if(allocated(rotmatstore)) deallocate(rotmatstore,tranmatstore,ephimatstore) + if(allocated(sphere_position)) deallocate(sphere_position) + end subroutine rottranmtrxclear +! +! translation coefficient vector cx by xij in medium with ri by rotation-translation +! itype: 1 or 3 +! icalc: =1, calculate matrices; = 0, use stored matrix +! idir: =1, translation of xij, =-1, -xij (reverse) +! itran=1, A(i-j) a(j), = -1, a(j) A(i-j) +! +! +! last revised: 15 January 2011 +! + subroutine rottran(cx,cy,xij,ri,nodrx,nodry,itype,icalc,idir,itran) + use numconstants + use specialfuncs + implicit none + integer :: nodrx,nodry,itype,icalc,idir,itran,nmax,nmin,n,m,p,nblk + real(8) :: xij(3),r,ct + complex(8) :: ri,ephi,cx(0:nodrx+1,nodrx,2),cy(0:nodry+1,nodry,2) + real(8), allocatable, save :: rotmat(:,:) + complex(8), allocatable, save :: ephimat(:), tranmat(:,:,:) + if(icalc.eq.1) then + nmax=max(nodrx,nodry) + nmin=min(nodrx,nodry) + call cartosphere(xij,r,ct,ephi) + if(r.lt.1.d-4) then + do p=1,2 + do n=1,nmin + do m=0,nmin+1 + cy(m,n,p)=cy(m,n,p)+cx(m,n,p) + enddo + enddo + enddo + return + endif + if(allocated(ephimat)) deallocate(rotmat,ephimat,tranmat) + if(nmax.gt.stored_max_order) then + if(allocated(rvec_temp)) deallocate(rvec_temp,tvec_temp, & + c_temp,ct_temp,rvec2_temp,tvec2_temp, & + c2_temp,ct2_temp) + allocate(rvec_temp(-nmax:nmax,2),tvec_temp(nmax,2), & + c_temp(-nmax:nmax,nmax,2),ct_temp(nmax,2,2), & + rvec2_temp(-nmax:nmax,2),tvec2_temp(nmax,2), & + c2_temp(-nmax:nmax,nmax,2),ct2_temp(nmax,2,2)) + stored_max_order=nmax + endif + nblk=(nodrx*(nodrx+3))/2 + allocate(rotmat(-nmin:nmin,0:nmax*(nmax+2))) + allocate(ephimat(-nmax:nmax)) + allocate(tranmat(1:nodry,1:nblk,1:2)) + call rotcoef(ct,nmin,nmax,rotmat) +! call axialtrancoef(itype,r,ri,nodry,nodrx,tranmat) + call axialtrancoefrecurrence(itype,r,ri,nodry,nodrx,tranmat) + call ephicoef(ephi,nmax,ephimat) + endif + call rottranmtrx(cx,cy,idir,itran,nodrx,nodry,ephimat,rotmat,tranmat) + return + end subroutine rottran +! +! far field formula for outgoing SVWF translation +! October 2011 +! + subroutine farfieldtranslation(cx,cy,xij,ri,nodrx,nodry,icase, & + stored_pivec_matrix) + use numconstants + use specialfuncs + implicit none + integer :: nodrx,nodry,itype,icalc,icase,nmax,nmin,n,m,p,nblk,im + real(8) :: xij(3),r,ct,xijt(3) + complex(8) :: ri,ephi,cx(0:nodrx+1,nodrx,2),cy(0:nodry+1,nodry,2), & + cxt(0:nodrx+1,nodrx,2),cyt(0:nodry+1,nodry,2), & + sumx(2),c1,pivec(0:max(nodrx,nodry)+1,max(nodrx,nodry),2) + complex(8), optional :: stored_pivec_matrix(0:max(nodrx,nodry)+1,max(nodrx,nodry),2) + + call cartosphere(xij,r,ct,ephi) + nmax=max(nodrx,nodry) + if(present(stored_pivec_matrix)) then + pivec=stored_pivec_matrix + else + call pifunc(ct,ephi,nmax,nmax,pivec) + endif + if(icase.eq.1) then + sumx(1)=sum(pivec(0:nodrx+1,1:nodrx,1:2)*cx(0:nodrx+1,1:nodrx,1:2)) + sumx(2)=sum(pivec(0:nodrx+1,1:nodrx,2:1:-1)*cx(0:nodrx+1,1:nodrx,1:2)) + sumx=sumx*cdexp((0.d0,1.d0)*ri*r)/((0.d0,1.d0)*ri*r)*8.d0 + cyt(0:nodry+1,1:nodry,1) = conjg(pivec(0:nodry+1,1:nodry,1))*sumx(1) & + +conjg(pivec(0:nodry+1,1:nodry,2))*sumx(2) + cyt(0:nodry+1,1:nodry,2) = conjg(pivec(0:nodry+1,1:nodry,2))*sumx(1) & + +conjg(pivec(0:nodry+1,1:nodry,1))*sumx(2) + else + do n=1,nodrx + do p=1,2 + im=(-1)**(n+p) + cxt(n+1,1:n,p)=im*cx(n+1,1:n,p) + cxt(0:n,n,p)=im*cx(0:n,n,p) + enddo + enddo + sumx(1)=sum(conjg(pivec(0:nodrx+1,1:nodrx,1:2))*cxt(0:nodrx+1,1:nodrx,1:2)) + sumx(2)=sum(conjg(pivec(0:nodrx+1,1:nodrx,2:1:-1))*cxt(0:nodrx+1,1:nodrx,1:2)) + sumx=sumx*cdexp((0.d0,1.d0)*ri*r)/((0.d0,1.d0)*ri*r)*8.d0 + cyt(0:nodry+1,1:nodry,1) = pivec(0:nodry+1,1:nodry,1)*sumx(1) & + +pivec(0:nodry+1,1:nodry,2)*sumx(2) + cyt(0:nodry+1,1:nodry,2) = pivec(0:nodry+1,1:nodry,2)*sumx(1) & + +pivec(0:nodry+1,1:nodry,1)*sumx(2) + do n=1,nodry + do p=1,2 + im=(-1)**(n+p) + cyt(n+1,1:n,p)=im*cyt(n+1,1:n,p) + cyt(0:n,n,p)=im*cyt(0:n,n,p) + enddo + enddo + endif + cy=cy+cyt + end subroutine farfieldtranslation +! +! far field translation: normal and transpose, for bcgm solution +! october 2011 +! + subroutine farfieldtranslationtwovec(cx1,cx2,cy1,cy2,xij,ri,nodrx,nodry, & + stored_pivec_matrix) + use numconstants + use specialfuncs + implicit none + integer :: nodrx,nodry,itype,icalc,icase,nmax,nmin,n,m,p,nblk,im + real(8) :: xij(3),r,ct,xijt(3) + complex(8) :: ri,ephi,cx1(0:nodrx+1,nodrx,2),cy1(0:nodry+1,nodry,2), & + cx2(0:nodrx+1,nodrx,2),cy2(0:nodry+1,nodry,2), & + cxt(0:nodrx+1,nodrx,2),cyt1(0:nodry+1,nodry,2), & + cyt2(0:nodry+1,nodry,2), & + sumx(2),c1,phasefunc, & + pivec(0:max(nodrx,nodry)+1,max(nodrx,nodry),2) + complex(8), optional :: stored_pivec_matrix(0:max(nodrx,nodry)+1,max(nodrx,nodry),2) + + call cartosphere(xij,r,ct,ephi) + nmax=max(nodrx,nodry) + if(present(stored_pivec_matrix)) then + pivec=stored_pivec_matrix + else + call pifunc(ct,ephi,nmax,nmax,pivec) + endif + phasefunc=cdexp((0.d0,1.d0)*ri*r)/((0.d0,1.d0)*ri*r)*8.d0 + sumx(1)=sum(pivec(0:nodrx+1,1:nodrx,1:2)*cx1(0:nodrx+1,1:nodrx,1:2)) + sumx(2)=sum(pivec(0:nodrx+1,1:nodrx,2:1:-1)*cx1(0:nodrx+1,1:nodrx,1:2)) + sumx=sumx*phasefunc + cyt1(0:nodry+1,1:nodry,1) = conjg(pivec(0:nodry+1,1:nodry,1))*sumx(1) & + +conjg(pivec(0:nodry+1,1:nodry,2))*sumx(2) + cyt1(0:nodry+1,1:nodry,2) = conjg(pivec(0:nodry+1,1:nodry,2))*sumx(1) & + +conjg(pivec(0:nodry+1,1:nodry,1))*sumx(2) + do n=1,nodrx + do p=1,2 + im=(-1)**(n+p) + cxt(n+1,1:n,p)=im*cx2(n+1,1:n,p) + cxt(0:n,n,p)=im*cx2(0:n,n,p) + enddo + enddo + sumx(1)=sum(conjg(pivec(0:nodrx+1,1:nodrx,1:2))*cxt(0:nodrx+1,1:nodrx,1:2)) + sumx(2)=sum(conjg(pivec(0:nodrx+1,1:nodrx,2:1:-1))*cxt(0:nodrx+1,1:nodrx,1:2)) + sumx=sumx*phasefunc + cyt2(0:nodry+1,1:nodry,1) = pivec(0:nodry+1,1:nodry,1)*sumx(1) & + +pivec(0:nodry+1,1:nodry,2)*sumx(2) + cyt2(0:nodry+1,1:nodry,2) = pivec(0:nodry+1,1:nodry,2)*sumx(1) & + +pivec(0:nodry+1,1:nodry,1)*sumx(2) + do n=1,nodry + do p=1,2 + im=(-1)**(n+p) + cyt2(n+1,1:n,p)=im*cyt2(n+1,1:n,p) + cyt2(0:n,n,p)=im*cyt2(0:n,n,p) + enddo + enddo + cy1=cy1+cyt1 + cy2=cy2+cyt2 + end subroutine farfieldtranslationtwovec +! +! correction term for hybrid bcgm solution: difference between exact and +! ff translation field +! november 2011 +! + subroutine fftranslationerror(cx,cy,jx,iy,nodrx,nodry) + use numconstants + use specialfuncs + implicit none + integer :: nodrx,nodry,idir,itran,iy,jx,istore + integer :: nr1,nr2,nt1,nt2,ne1,ne2 + real(8) :: xj(3),xi(3),xij(3),rij,nfdist + complex(8) :: cx(0:nodrx+1,nodrx,2),cy(0:nodry+1,nodry,2), & + cyt(0:nodry+1,nodry,2) + xj(:)=sphere_position(:,jx) + xi(:)=sphere_position(:,iy) + xij=xi-xj + rij=sqrt(dot_product(xij,xij)) + if(near_field_distance.lt.0.) then + nfdist=(.5*(nodrx+nodry))**2. + else + nfdist=near_field_distance + endif + if(rij.gt.nfdist) then + cyt=0.d0 + call farfieldtranslation(cx,cyt,xij,(1.d0,0.d0),nodrx,nodry,1) + cyt=-cyt + call rottran(cx,cyt,xij,(1.d0,0.d0),nodrx,nodry,3,1,1,1) + cy=cy+cyt + endif + end subroutine fftranslationerror +! +! translation via stored or calculated matrices (replaces rottranstoredmatrix) +! +! 12 October 2011. +! if rij> near_field_distance, the far field formula is +! applied. +! + subroutine rottranjtoi(cx,cy,jx,iy,nodrx,nodry,idir,itran) + use numconstants + use specialfuncs + implicit none + integer :: nodrx,nodry,idir,itran,iy,jx,istore + integer :: nr1,nr2,nt1,nt2,ne1,ne2 + real(8) :: xj(3),xi(3),xij(3),rij,nfdist + complex(8) :: cx(0:nodrx+1,nodrx,2),cy(0:nodry+1,nodry,2) + xj(:)=sphere_position(:,jx) + xi(:)=sphere_position(:,iy) + xij=xi-xj + rij=sqrt(dot_product(xij,xij)) + if(near_field_distance.lt.0.) then + nfdist=(.5*(nodrx+nodry))**2. + else + nfdist=near_field_distance + endif + if(rij.gt.nfdist) then + if(store_tran_mat.eq.2) then + nt1=nofftran(iy,jx)+1 + nt2=nt1+nsizetran(iy,jx)-1 + call farfieldtranslation(cx,cy,xij,(1.d0,0.d0),nodrx,nodry,itran, & + stored_pivec_matrix=tranmatstore(nt1:nt2)) + else + call farfieldtranslation(cx,cy,xij,(1.d0,0.d0),nodrx,nodry,itran) + endif + else + if(store_tran_mat.eq.0) then + call rottran(cx,cy,xij,(1.d0,0.d0),nodrx,nodry,3,1,idir,itran) + else + nr1=noffrot(iy,jx)+1 + nr2=nr1+nsizerot(iy,jx)-1 + nt1=nofftran(iy,jx)+1 + nt2=nt1+nsizetran(iy,jx)-1 + ne1=noffephi(iy,jx)+1 + ne2=ne1+nsizeephi(iy,jx)-1 + call rottranmtrx(cx,cy,idir,itran,nodrx,nodry,ephimatstore(ne1:ne2), & + rotmatstore(nr1:nr2),tranmatstore(nt1:nt2)) + endif + endif + end subroutine rottranjtoi +! +! normal and transpose translation, for bcgm +! november 2011 +! + subroutine rottrantwojtoi(cx1,cx2,cy1,cy2,jx,iy,nodrx,nodry) + use numconstants + use specialfuncs + implicit none + integer :: nodrx,nodry,idir,itran,iy,jx,istore + integer :: nr1,nr2,nt1,nt2,ne1,ne2 + real(8) :: xj(3),xi(3),xij(3),rij,nfdist + complex(8) :: cx1(0:nodrx+1,nodrx,2),cy1(0:nodry+1,nodry,2), & + cx2(0:nodrx+1,nodrx,2),cy2(0:nodry+1,nodry,2) + xj(:)=sphere_position(:,jx) + xi(:)=sphere_position(:,iy) + xij=xi-xj + rij=sqrt(dot_product(xij,xij)) + if(near_field_distance.lt.0.) then + nfdist=(.5*(nodrx+nodry))**2. + else + nfdist=near_field_distance + endif + if(rij.gt.nfdist) then + if(store_tran_mat.eq.2) then + nt1=nofftran(iy,jx)+1 + nt2=nt1+nsizetran(iy,jx)-1 + call farfieldtranslationtwovec(cx1,cx2,cy1,cy2,xij,(1.d0,0.d0),nodrx,nodry, & + stored_pivec_matrix=tranmatstore(nt1:nt2)) + else + call farfieldtranslationtwovec(cx1,cx2,cy1,cy2,xij,(1.d0,0.d0),nodrx,nodry) + endif + else + if(store_tran_mat.eq.0) then + call rottran(cx1,cy1,xij,(1.d0,0.d0),nodrx,nodry,3,1,1,1) + call rottran(cx2,cy2,xij,(1.d0,0.d0),nodrx,nodry,3,0,-1,-1) + else + nr1=noffrot(iy,jx)+1 + nr2=nr1+nsizerot(iy,jx)-1 + nt1=nofftran(iy,jx)+1 + nt2=nt1+nsizetran(iy,jx)-1 + ne1=noffephi(iy,jx)+1 + ne2=ne1+nsizeephi(iy,jx)-1 + call rottranmtrxtwovec(cx1,cx2,cy1,cy2,nodrx,nodry,ephimatstore(ne1:ne2), & + rotmatstore(nr1:nr2),tranmatstore(nt1:nt2)) + endif + endif + end subroutine rottrantwojtoi +! +! the vectorized rotation-translation-rotation operation +! +! +! last revised: 15 January 2011 +! + subroutine rottranmtrx(cx,cy,idir,itran,nodrx,nodry,ephimat,rotmat,tranmat) + use numconstants + use specialfuncs + implicit none + integer :: nodrx,nodry,itype,icalc,idir,itran,nmax,nmin + integer :: m,n,k,l,nn1,nn2,ll1,mn,kl,m1,p,n1,addr(2) + real(8), target :: rotmat(-min(nodrx,nodry):min(nodrx,nodry), & + 0:max(nodrx,nodry)*(max(nodrx,nodry)+2)) + real(8), pointer :: rmat(:,:) + complex(8) :: cx(0:nodrx+1,nodrx,2),cy(0:nodry+1,nodry,2), & + ephimat(-max(nodrx,nodry):max(nodrx,nodry)) + complex(8), target :: tranmat(nodry,nodrx*(nodrx+3)/2,2) + complex(8), pointer :: tmat1(:,:),tmat2(:,:) + c_temp=(0.d0,0.d0) + nmin=min(nodrx,nodry) +! +! rotation to origin of target +! + do n=1,nodrx + nn1=n*(n+1)-n + nn2=nn1+(2*n+1)-1 + n1=min(n,nodry) + rmat=>rotmat(-n1:n1,nn1:nn2) + do p=1,2 + rvec_temp(-n:-1,p)=cx(n+1,n:1:-1,p) + rvec_temp(0:n,p)=cx(0:n,n,p) + if(itran.eq.1) then + rvec_temp(-n:n,p)=rvec_temp(-n:n,p)*ephimat(-n:n) + else + rvec_temp(-n:n,p)=rvec_temp(-n:n,p)*conjg(ephimat(-n:n)) + endif + enddo + c_temp(-n1:n1,n,1:2)=matmul(rmat,rvec_temp(-n:n,1:2)) + enddo +! +! axial translation to target +! + do m=0,nmin + m1=max(1,m) + nn1=atcadd(m,m1,nodrx) + nn2=atcadd(m,nodrx,nodrx) + tmat1=>tranmat(m1:nodry,nn1:nn2,1) + tmat2=>tranmat(m1:nodry,nn1:nn2,2) + tvec_temp(m1:nodrx,1)=idir*c_temp(m,m1:nodrx,1) + tvec_temp(m1:nodrx,2)=c_temp(m,m1:nodrx,2) + if(itran*idir.eq.-1) then + tvec_temp(m1:nodrx,1)=tvec_temp(m1:nodrx,1)*monen(m1:nodrx) + tvec_temp(m1:nodrx,2)=tvec_temp(m1:nodrx,2)*monen(m1:nodrx) + endif + ct_temp=(0.d0,0.d0) + ct_temp(m1:nodry,1,1:2)=matmul(tmat1,tvec_temp(m1:nodrx,1:2)) + ct_temp(m1:nodry,2,1:2)=matmul(tmat2,tvec_temp(m1:nodrx,1:2)) + c_temp(m,m1:nodry,1)=idir*(ct_temp(m1:nodry,1,1)+ct_temp(m1:nodry,2,2)) + c_temp(m,m1:nodry,2)=ct_temp(m1:nodry,2,1)+ct_temp(m1:nodry,1,2) + if(itran*idir.eq.-1) then + c_temp(m,m1:nodry,1)=c_temp(m,m1:nodry,1)*monen(m1:nodry) + c_temp(m,m1:nodry,2)=c_temp(m,m1:nodry,2)*monen(m1:nodry) + endif + if(m.gt.0) then + tvec_temp(m1:nodrx,1)=idir*c_temp(-m,m1:nodrx,1) + tvec_temp(m1:nodrx,2)=c_temp(-m,m1:nodrx,2) + if(itran*idir.eq.-1) then + tvec_temp(m1:nodrx,1)=tvec_temp(m1:nodrx,1)*monen(m1:nodrx) + tvec_temp(m1:nodrx,2)=tvec_temp(m1:nodrx,2)*monen(m1:nodrx) + endif + ct_temp=(0.d0,0.d0) + ct_temp(m1:nodry,1,1:2)=matmul(tmat1,tvec_temp(m1:nodrx,1:2)) + ct_temp(m1:nodry,2,1:2)=matmul(tmat2,tvec_temp(m1:nodrx,1:2)) + c_temp(-m,m1:nodry,1)=idir*(ct_temp(m1:nodry,1,1)-ct_temp(m1:nodry,2,2)) + c_temp(-m,m1:nodry,2)=-ct_temp(m1:nodry,2,1)+ct_temp(m1:nodry,1,2) + if(itran*idir.eq.-1) then + c_temp(-m,m1:nodry,1)=c_temp(-m,m1:nodry,1)*monen(m1:nodry) + c_temp(-m,m1:nodry,2)=c_temp(-m,m1:nodry,2)*monen(m1:nodry) + endif + endif + enddo +! +! rotation back to original frame +! + do n=1,nodry + rvec_temp=(0.d0,0.d0) + m1=min(n,nmin) + nn1=n*(n+1)-n + nn2=n*(n+1)+n + rmat=>rotmat(-m1:m1,nn1:nn2) + do p=1,2 + if(itran.eq.1) then + rvec_temp(-n:n,p)=matmul(c_temp(-m1:m1,n,p),rmat)*conjg(ephimat(-n:n)) + else + rvec_temp(-n:n,p)=matmul(c_temp(-m1:m1,n,p),rmat)*ephimat(-n:n) + endif + cy(n+1,n:1:-1,p)=cy(n+1,n:1:-1,p)+rvec_temp(-n:-1,p) + cy(0:n,n,p)=cy(0:n,n,p)+rvec_temp(0:n,p) + enddo + enddo + end subroutine rottranmtrx +! +! two vector rotation: normal and transpose +! november 2011 +! + subroutine rottranmtrxtwovec(cx1,cx2,cy1,cy2,nodrx,nodry, & + ephimat,rotmat,tranmat) + use numconstants + use specialfuncs + implicit none + integer :: nodrx,nodry,itype,icalc,idir,itran,nmax,nmin + integer :: m,n,k,l,nn1,nn2,ll1,mn,kl,m1,p,n1,addr(2) + real(8), target :: rotmat(-min(nodrx,nodry):min(nodrx,nodry), & + 0:max(nodrx,nodry)*(max(nodrx,nodry)+2)) + real(8), pointer :: rmat(:,:) + complex(8) :: cx1(0:nodrx+1,nodrx,2),cy1(0:nodry+1,nodry,2), & + cx2(0:nodrx+1,nodrx,2),cy2(0:nodry+1,nodry,2), & + ephimat(-max(nodrx,nodry):max(nodrx,nodry)) + complex(8), target :: tranmat(nodry,nodrx*(nodrx+3)/2,2) + complex(8), pointer :: tmat1(:,:),tmat2(:,:) + c_temp=(0.d0,0.d0) + nmin=min(nodrx,nodry) +! +! rotation to origin of target +! + do n=1,nodrx + nn1=n*(n+1)-n + nn2=nn1+(2*n+1)-1 + n1=min(n,nodry) + rmat=>rotmat(-n1:n1,nn1:nn2) + do p=1,2 + rvec_temp(-n:-1,p)=cx1(n+1,n:1:-1,p) + rvec_temp(0:n,p)=cx1(0:n,n,p) + rvec2_temp(-n:-1,p)=cx2(n+1,n:1:-1,p) + rvec2_temp(0:n,p)=cx2(0:n,n,p) + rvec_temp(-n:n,p)=rvec_temp(-n:n,p)*ephimat(-n:n) + rvec2_temp(-n:n,p)=rvec2_temp(-n:n,p)*conjg(ephimat(-n:n)) + enddo + c_temp(-n1:n1,n,1:2)=matmul(rmat,rvec_temp(-n:n,1:2)) + c2_temp(-n1:n1,n,1:2)=matmul(rmat,rvec2_temp(-n:n,1:2)) + enddo +! +! axial translation to target +! + do m=0,nmin + m1=max(1,m) + nn1=atcadd(m,m1,nodrx) + nn2=atcadd(m,nodrx,nodrx) + tmat1=>tranmat(m1:nodry,nn1:nn2,1) + tmat2=>tranmat(m1:nodry,nn1:nn2,2) + tvec_temp(m1:nodrx,1)=c_temp(m,m1:nodrx,1) + tvec_temp(m1:nodrx,2)=c_temp(m,m1:nodrx,2) + tvec2_temp(m1:nodrx,1)=-c2_temp(m,m1:nodrx,1) + tvec2_temp(m1:nodrx,2)=c2_temp(m,m1:nodrx,2) + ct_temp=(0.d0,0.d0) + ct2_temp=(0.d0,0.d0) + ct_temp(m1:nodry,1,1:2)=matmul(tmat1,tvec_temp(m1:nodrx,1:2)) + ct_temp(m1:nodry,2,1:2)=matmul(tmat2,tvec_temp(m1:nodrx,1:2)) + ct2_temp(m1:nodry,1,1:2)=matmul(tmat1,tvec2_temp(m1:nodrx,1:2)) + ct2_temp(m1:nodry,2,1:2)=matmul(tmat2,tvec2_temp(m1:nodrx,1:2)) + c_temp(m,m1:nodry,1)=(ct_temp(m1:nodry,1,1)+ct_temp(m1:nodry,2,2)) + c_temp(m,m1:nodry,2)=ct_temp(m1:nodry,2,1)+ct_temp(m1:nodry,1,2) + c2_temp(m,m1:nodry,1)=-(ct2_temp(m1:nodry,1,1)+ct2_temp(m1:nodry,2,2)) + c2_temp(m,m1:nodry,2)=ct2_temp(m1:nodry,2,1)+ct2_temp(m1:nodry,1,2) + if(m.gt.0) then + tvec_temp(m1:nodrx,1)=c_temp(-m,m1:nodrx,1) + tvec_temp(m1:nodrx,2)=c_temp(-m,m1:nodrx,2) + tvec2_temp(m1:nodrx,1)=-c2_temp(-m,m1:nodrx,1) + tvec2_temp(m1:nodrx,2)=c2_temp(-m,m1:nodrx,2) + ct_temp=(0.d0,0.d0) + ct2_temp=(0.d0,0.d0) + ct_temp(m1:nodry,1,1:2)=matmul(tmat1,tvec_temp(m1:nodrx,1:2)) + ct_temp(m1:nodry,2,1:2)=matmul(tmat2,tvec_temp(m1:nodrx,1:2)) + ct2_temp(m1:nodry,1,1:2)=matmul(tmat1,tvec2_temp(m1:nodrx,1:2)) + ct2_temp(m1:nodry,2,1:2)=matmul(tmat2,tvec2_temp(m1:nodrx,1:2)) + c_temp(-m,m1:nodry,1)=(ct_temp(m1:nodry,1,1)-ct_temp(m1:nodry,2,2)) + c_temp(-m,m1:nodry,2)=-ct_temp(m1:nodry,2,1)+ct_temp(m1:nodry,1,2) + c2_temp(-m,m1:nodry,1)=-(ct2_temp(m1:nodry,1,1)-ct2_temp(m1:nodry,2,2)) + c2_temp(-m,m1:nodry,2)=-ct2_temp(m1:nodry,2,1)+ct2_temp(m1:nodry,1,2) + endif + enddo +! +! rotation back to original frame +! + do n=1,nodry + rvec_temp=(0.d0,0.d0) + rvec2_temp=(0.d0,0.d0) + m1=min(n,nmin) + nn1=n*(n+1)-n + nn2=n*(n+1)+n + rmat=>rotmat(-m1:m1,nn1:nn2) + do p=1,2 + rvec_temp(-n:n,p)=matmul(c_temp(-m1:m1,n,p),rmat)*conjg(ephimat(-n:n)) + rvec2_temp(-n:n,p)=matmul(c2_temp(-m1:m1,n,p),rmat)*ephimat(-n:n) + cy1(n+1,n:1:-1,p)=cy1(n+1,n:1:-1,p)+rvec_temp(-n:-1,p) + cy1(0:n,n,p)=cy1(0:n,n,p)+rvec_temp(0:n,p) + cy2(n+1,n:1:-1,p)=cy2(n+1,n:1:-1,p)+rvec2_temp(-n:-1,p) + cy2(0:n,n,p)=cy2(0:n,n,p)+rvec2_temp(0:n,p) + enddo + enddo + end subroutine rottranmtrxtwovec +! +! GB coefficients for sphere-centered expansions, obtained via translation +! +! last revised: 15 January 2011 +! + subroutine spheregaussianbeamcoef(nsphere,neqns,nodr,alpha,beta,cbeam, & + rpos,rbeam,epstran,pmnp) + use specialfuncs + implicit none + integer :: m,n,p,nsphere,i,l,nodr(nsphere),nblk,noff,nodrgb,neqns,k + real(8) :: alpha,beta,cb,sb,ca,sa,rpos(3,nsphere),rmax,rbeam(3),xib(3),rib, & + cbeam,epstran + complex(8) :: pmnp(neqns,2) + complex(8), allocatable :: pmnp0(:,:,:,:) + nodrgb=0 + rmax=0.d0 + do i=1,nsphere + xib(:)=rpos(:,i)-rbeam(:) + rib=sqrt(dot_product(xib,xib)) + rmax=max(rmax,rib) + call tranordertest(rib,(1.d0,0.d0),nodr(i),epstran,n) + nodrgb=max(n,nodrgb) + enddo + allocate(pmnp0(0:nodrgb+1,nodrgb,2,2)) + call gaussianbeamcoef(alpha,beta,cbeam,nodrgb,pmnp0) + pmnp=0.d0 + noff=0 + do i=1,nsphere + nblk=2*nodr(i)*(nodr(i)+2) + xib(:)=rpos(:,i)-rbeam(:) + do k=1,2 + call rottran(pmnp0(0:nodrgb+1,1:nodrgb,1:2,k),pmnp(noff+1:noff+nblk,k),xib, & + (1.d0,0.d0),nodrgb,nodr(i),1,1,1,1) + enddo + noff=noff+nblk + enddo + deallocate(pmnp0) + end subroutine spheregaussianbeamcoef + + end module translation +! +! scatprops module: various subroutines for calculation of observables from the solution +! +! +! last revised: 15 January 2011 +! + module scatprops + implicit none + contains +! +! determination of maximum orders for target--based expansions +! +! +! last revised: 15 January 2011 +! + subroutine tranorders(nsphere,nodr,rpos,eps,ntran,nodrt) + use numconstants + use specialfuncs + use translation + implicit none + integer :: nsphere,nodr(nsphere),nodrt,ntran(nsphere),i + real(8) :: rpos(3,nsphere),r,eps + nodrt=0 + do i=1,nsphere + r=sqrt(dot_product(rpos(:,i),rpos(:,i))) + call tranordertest(r,(1.d0,0.d0),nodr(i),eps,ntran(i)) + if(print_intermediate_results.eq.1) & + write(*,'('' i, nodr, ntran:'',3i7)') i,nodr(i),ntran(i) + nodrt=max(nodrt,ntran(i)) + enddo + end subroutine tranorders +! +! translation of sphere-based expansions to common target origin +! +! +! last revised: 15 January 2011 +! + subroutine amncommonorigin(neqns,nsphere,nodr,ntran,nodrt,rpos,amnp,amnp0) + use specialfuncs + use translation + implicit none + integer :: neqns,nsphere,nodr(nsphere),nodrt,i,m,n,p,nblk,ntran(nsphere),noff + real(8) :: rpos(3,nsphere),r,eps,xij(3) + complex(8) :: amnp(neqns),amnp0(0:nodrt+1,nodrt,2) + complex(8), allocatable :: amnpt(:,:,:) + amnp0=(0.d0,0.d0) + noff=0 + do i=1,nsphere + allocate(amnpt(0:ntran(i)+1,ntran(i),2)) + amnpt=(0.d0,0.d0) + nblk=nodr(i)*(nodr(i)+2)*2 + xij=-rpos(:,i) + call rottran(amnp(noff+1:noff+nblk),amnpt,xij,(1.d0,0.d0), & + nodr(i),ntran(i),1,1,1,1) + do p=1,2 + do n=1,ntran(i) + do m=0,ntran(i)+1 + amnp0(m,n,p)=amnp0(m,n,p)+amnpt(m,n,p) + enddo + enddo + enddo + deallocate(amnpt) + noff=noff+nblk + enddo + end subroutine amncommonorigin +! +! sphereqeff computes the efficiency factors for the sphere, given an1: mie coefficients, +! anp: scattering coefficients, pnp: incident field coefficients. +! +! This subroutine is specific to the OA model for the sphere. +! +! +! original: 15 January 2011 +! revised: 21 February 2011: polarized and cross-polarized efficiency calculation +! 30 March 2011: added optical activity +! + subroutine sphereqeff(nsphere,neqns,nodr,nodrmax,xsp,anp1,anp2,& + pnp1,pnp2,qext,qabs,qsca) + use miecoefdata + use spheredata + implicit none + integer :: nsphere,m,n,p,i,nodr(nsphere),nblk,noff,neqns,nodrmax + real(8) :: xsp(nsphere),qext(nsphere),qabs(nsphere),qsca(nsphere), & + qe,qa,qs + complex(8) :: anp1(neqns),pnp1(neqns),anp2(neqns),pnp2(neqns) + complex(8) :: anmie(2,2,nodrmax) + qext=0.d0 + qabs=0.d0 + qsca=0.d0 + noff=0 + do i=1,nsphere + nblk=nodr(i)*(nodr(i)+2)*2 + call getmiedata(which_sphere=i,sphere_mie_coefficients=anmie) + call qeffcalc(nodr(i),anp1(noff+1:noff+nblk),anp2(noff+1:noff+nblk), & + pnp1(noff+1:noff+nblk),pnp2(noff+1:noff+nblk),anmie,qe,qa,qs) + noff=noff+nblk + qext(i)=2.d0*qe/xsp(i)/xsp(i) + qabs(i)=2.d0*qa/xsp(i)/xsp(i) + qsca(i)=2.d0*qs/xsp(i)/xsp(i) + enddo + end subroutine sphereqeff +! +! calculation of sphere efficiency factors for scattered and incident field +! coefficient anp1, pnp1, anp2, pnp2 and mie coefficients anmie +! +! original: 15 January 2011 +! revised: 21 February 2011: polarized and cross-polarized efficiency calculation +! 30 March 2011: added optical activity +! + subroutine qeffcalc(nodr,anp1,anp2,pnp1,pnp2,anmie,qe,qa,qs) + implicit none + integer :: nodr,m,n,p,q + real(8) :: qe,qa,qs,babs,aninv(2,2) + complex(8) :: anp1(0:nodr+1,nodr,2),pnp1(0:nodr+1,nodr,2), & + anp2(0:nodr+1,nodr,2),pnp2(0:nodr+1,nodr,2),anmie(2,2,nodr), & + a + qe=0.d0 + qa=0.d0 + qs=0.d0 + do n=1,nodr + a=anmie(1,1,n)*anmie(2,2,n)-anmie(1,2,n)*anmie(1,2,n) + do p=1,2 + do q=1,2 + aninv(p,q)=(-1)**(p+q)*anmie(3-p,3-q,n)/a + enddo + aninv(p,p)=aninv(p,p)+1.d0 + enddo + do p=1,2 +! babs=-(1.d0/anmie(p,n)+1.d0) + do m=-n,-1 + qe=qe-(anp1(n+1,-m,p)*conjg(pnp2(n+1,-m,p)) & + + anp2(n+1,-m,p)*conjg(pnp1(n+1,-m,p)))*.5d0 + qs=qs+anp1(n+1,-m,p)*conjg(anp2(n+1,-m,p)) + do q=1,2 + qa=qa-conjg(anp1(n+1,-m,p))*aninv(p,q)*anp2(n+1,-m,q) + enddo + enddo + do m=0,n + qe=qe-(anp1(m,n,p)*conjg(pnp2(m,n,p)) & + +anp2(m,n,p)*conjg(pnp1(m,n,p)))*.5d0 + qs=qs+anp1(m,n,p)*conjg(anp2(m,n,p)) + do q=1,2 + qa=qa-conjg(anp1(m,n,p))*aninv(p,q)*anp2(m,n,q) + enddo + enddo + enddo + enddo + end subroutine qeffcalc +! +! scattering amplitude sa and matrix sm calculation +! +! original: 15 January 2011 +! revised: 21 February 2011: S11 normalization changed +! + subroutine scatteringmatrix(amn0,nodrt,xv,ct,phi,sa,sm) + use specialfuncs + use numconstants + implicit none + integer :: nodrt,m,n,p,m1,n1,i,j + real(8) :: xv,ct,phi,sm(4,4),tau(0:nodrt+1,nodrt,2),cphi,sphi,qsca + complex(8) :: amn0(0:nodrt+1,nodrt,2,2),sa(4),ephi,ephim(-nodrt:nodrt), & + ci,cin,a,b,sp(4,4) + data ci/(0.d0,1.d0)/ + + + call taufunc(ct,nodrt,tau) + cphi=cos(phi) + sphi=sin(phi) + ephi=dcmplx(cphi,sphi) + call ephicoef(ephi,nodrt,ephim) + sa=(0.d0,0.d0) + qsca=0.d0 + do n=1,nodrt + cin=(-ci)**n + do m=-n,n + if(m.le.-1) then + m1=n+1 + n1=-m + else + m1=m + n1=n + endif + do p=1,2 + qsca=qsca+amn0(m1,n1,p,1)*dconjg(amn0(m1,n1,p,1)) & + + amn0(m1,n1,p,2)*dconjg(amn0(m1,n1,p,2)) + a=amn0(m1,n1,p,1)*cphi+amn0(m1,n1,p,2)*sphi + b=amn0(m1,n1,p,1)*sphi-amn0(m1,n1,p,2)*cphi + sa(1)=sa(1)+cin*tau(m1,n1,3-p)*b*ephim(m) + sa(2)=sa(2)+ci*cin*tau(m1,n1,p)*a*ephim(m) + sa(3)=sa(3)+ci*cin*tau(m1,n1,p)*b*ephim(m) + sa(4)=sa(4)+cin*tau(m1,n1,3-p)*a*ephim(m) + enddo + enddo + enddo + qsca=qsca*2.d0 + do i=1,4 + do j=1,4 + sp(i,j)=sa(i)*dconjg(sa(j))*16.d0/qsca + enddo + enddo + sm(1,1)=sp(1,1)+sp(2,2)+sp(3,3)+sp(4,4) + sm(1,2)=-sp(1,1)+sp(2,2)-sp(3,3)+sp(4,4) + sm(2,1)=-sp(1,1)+sp(2,2)+sp(3,3)-sp(4,4) + sm(2,2)=sp(1,1)+sp(2,2)-sp(3,3)-sp(4,4) + sm(3,3)=2.*(sp(1,2)+sp(3,4)) + sm(3,4)=-2.*dimag(sp(1,2)+sp(3,4)) + sm(4,3)=2.*dimag(sp(1,2)-sp(3,4)) + sm(4,4)=2.*(sp(1,2)-sp(3,4)) + sm(1,3)=2.*(sp(2,3)+sp(1,4)) + sm(3,1)=2.*(sp(2,4)+sp(1,3)) + sm(1,4)=2.*dimag(sp(2,3)-sp(1,4)) + sm(4,1)=-2.*dimag(sp(2,4)+sp(1,3)) + sm(2,3)=2.*(sp(2,3)-sp(1,4)) + sm(3,2)=2.*(sp(2,4)-sp(1,3)) + sm(2,4)=2.*dimag(sp(2,3)+sp(1,4)) + sm(4,2)=-2.*dimag(sp(2,4)-sp(1,3)) +! do i=1,4 +! do j=1,4 +! if(i.ne.1.or.j.ne.1) then +! sm(i,j)=sm(i,j)/sm(1,1) +! endif +! enddo +! enddo + end subroutine scatteringmatrix +! c c +! c subroutine scatexp(amn0,nodrt,nodrg,gmn) computes the expansion coefficients c +! c for the spherical harmonic expansion of the scattering phase function from c +! c the scattering coefficients amn0. For a complete expansion, the max. order c +! c of the phase function expansion (nodrg) will be 2*nodrt, where nodrt is c +! c the max. order of the scattered field expansion. In this code nodrg is c +! c typically set to 1, so that the subroutine returns the first moments c +! c of the phase function; gmn(1) and gmn(2). c +! c c +! c The expansion coefficients are normalized so that gmn(0)=1 c +! c c +! c gmn(1)/3 is the asymmetry parameter. c +! c c + subroutine s11expansion(amn0,nodrt,mmax,nodrg,gmn) + use specialfuncs + use numconstants + implicit none + integer :: nodrt,m,n,p,ma,na,mmax,nodrg,w,w1,w2,u,uw,ww1, & + l1,l2,ka,la,k,l,q,ik + real(8) :: vc1(0:nodrt*2+1),vc2(0:nodrt*2+1),g0 + complex(8) :: amn0(0:nodrt+1,nodrt,2,2),gmn(0:nodrg*(nodrg+3)/2), & + a(2,2),c,c2 + gmn=(0.d0,0.d0) + do n=1,nodrt + l1=max(1,n-nodrg) + l2=min(nodrt,n+nodrg) + do l=l1,l2 + c=sqrt(dble((n+n+1)*(l+l+1)))*dcmplx(0.d0,1.d0)**(l-n) + w2=min(n+l,nodrg) + call vcfunc(-1,l,1,n,vc2) + do m=-n,n + if(m.le.-1) then + ma=n+1 + na=-m + else + ma=m + na=n + endif + do k=-l,min(l,m) + if(k.le.-1) then + ka=l+1 + la=-k + else + ka=k + la=l + endif + u=m-k + if(u.le.mmax) then + ik=(-1)**k + c2=ik*c + do p=1,2 + do q=1,2 + a(p,q)=c2*(amn0(ma,na,p,1)*conjg(amn0(ka,la,q,1)) & + +amn0(ma,na,p,2)*conjg(amn0(ka,la,q,2))) + enddo + enddo + w1=max(abs(n-l),abs(u)) + w2=min(n+l,nodrg) + call vcfunc(-k,l,m,n,vc1) + do w=w1,w2 + uw=(w*(w+1))/2+u + do p=1,2 + if(mod(n+l+w,2).eq.0) then + q=p + else + q=3-p + endif + gmn(uw)=gmn(uw)-vc1(w)*vc2(w)*a(p,q) + enddo + enddo + endif + enddo + enddo + enddo + enddo + g0=dble(gmn(0)) + gmn(0)=1.d0 + do w=1,nodrg + ww1=(w*(w+1))/2 + gmn(ww1)=dcmplx(dble(gmn(ww1)),0.d0)/g0 + do u=1,min(mmax,w) + uw=ww1+u + gmn(uw)=(-1)**u*2.d0*gmn(uw)/g0 + enddo + enddo + end subroutine s11expansion +! +! calculate azimuth--averaged scattering matrix from expansion, for cos(theta) = ct +! +! +! original: 15 January 2011 +! revised: 21 February 2011: changed normalization on S11 +! + subroutine fosmcalc(ntot,s00,s02,sp22,sm22,ct,sm) + use numconstants + use specialfuncs + integer :: ntot,w,i,j,ww1 + real(8) :: s00(4,4,0:ntot*2),s02(4,4,0:ntot*2),sp22(4,4,0:ntot*2),sm22(4,4,0:ntot*2), & + sm(4,4),dc(-2:2,0:2*ntot*(2*ntot+2)),ct + call rotcoef(ct,2,2*ntot,dc) + sm=0.d0 + do w=0,2*ntot + ww1=w*(w+1) + sm(:,:)=sm(:,:)+s00(:,:,w)*dc(0,ww1)+s02(:,:,w)*dc(0,ww1+2) & + +sp22(:,:,w)*dc(2,ww1+2)+sm22(:,:,w)*dc(-2,ww1+2) + enddo + sm=sm/s00(1,1,0) +! do i=1,4 +! do j=1,4 +! if(i.ne.1.or.j.ne.1) then +! sm(i,j)=sm(i,j)/sm(1,1) +! endif +! enddo +! enddo + end subroutine fosmcalc +! +! determine the generalized spherical function expansion for the azimuth-averaged scattering matrix +! corresponding to the target-based scattering field expansion of amnp. +! +! +! original: 15 January 2011 +! revised: 21 February 2011: fixed flush call. +! + subroutine fosmexpansion(ntot,amnp,s00,s02,sp22,sm22) + use mpidefs + use mpidata + use specialfuncs + use numconstants + use spheredata + integer :: ntot,n,p,m,l,wmin,wmax,m1m,q,m1mq,m1mnpl,w,m1w,fe,fo,i,j,wtot + integer :: rank,numprocs,nl,nsend,runprintunit + integer, allocatable :: nlindex(:),nlnum(:) + real(8) :: s00(4,4,0:ntot*2),s02(4,4,0:ntot*2),sp22(4,4,0:ntot*2),sm22(4,4,0:ntot*2), & + cm1p1(0:ntot*2),cm1m1(0:ntot*2),cmmpm(0:ntot*2),cmmm2pm(0:ntot*2), & + cmmp2pm(0:ntot*2),sum,nlperproc + complex(8) :: amnp(0:ntot+1,ntot,2,2),a1(-ntot-2:ntot+2,ntot,2),a2(-ntot-2:ntot+2,ntot,2), & + ci,fnl,a1122,a2112,a1p2,a1m2 + data ci/(0.d0,1.d0)/ + call init(2*ntot) + call getrunparameters(run_print_unit=runprintunit) + call ms_mpi(mpi_command='rank',mpi_rank=rank) + call ms_mpi(mpi_command='size',mpi_size=numprocs) + allocate(nlindex(0:numprocs-1),nlnum(0:numprocs-1)) + nlperproc=dble(ntot*ntot)/dble(numprocs) + sum=0. + do i=0,numprocs-1 + nlindex(i)=floor(sum) + sum=sum+nlperproc + enddo + do i=0,numprocs-2 + nlnum(i)=nlindex(i+1)-nlindex(i) + enddo + nlnum(numprocs-1)=ntot*ntot-nlindex(numprocs-1) + if(rank.eq.0) then + write(runprintunit,'('' SM calc, orders per processor:'',f10.4)') nlperproc + call flush(runprintunit) + endif + a1=(0.d0,0.d0) + a2=(0.d0,0.d0) + s00=0.d0 + s02=0.d0 + sp22=0.d0 + sm22=0.d0 + wtot=ntot+ntot + do n=1,ntot + do p=1,2 + do m=-n,-1 + a1(m,n,p)=amnp(n+1,-m,p,1) + a2(m,n,p)=amnp(n+1,-m,p,2) + enddo + do m=0,n + a1(m,n,p)=amnp(m,n,p,1) + a2(m,n,p)=amnp(m,n,p,2) + enddo + enddo + enddo + do nl=nlindex(rank)+1,nlindex(rank)+nlnum(rank) + n=floor((nl-1)/dble(ntot))+1 + l=mod(nl-1,ntot)+1 + wmin=abs(n-l) + wmax=n+l + fnl=sqrt(dble((n+n+1)*(l+l+1)))*ci**(l-n) + call vcfunc(-1,n,1,l,cm1p1) + call vcfunc(-1,n,-1,l,cm1m1) + do m=-min(n,l+2),min(n,l+2) + m1m=(-1)**m + if(abs(m).le.l) then + call vcfunc(-m,n,m,l,cmmpm) + else + cmmpm=0.d0 + endif + if(abs(-2+m).le.l) then + call vcfunc(-m,n,-2+m,l,cmmm2pm) + else + cmmm2pm=0.d0 + endif + if(abs(2+m).le.l) then + call vcfunc(-m,n,2+m,l,cmmp2pm) + else + cmmp2pm=0.d0 + endif + do p=1,2 + do q=1,2 + m1mq=(-1)**(m+q) + m1mnpl=(-1)**(m+n+p+l) + a1122=(a1(m,n,p)*conjg(a1(m,l,q)) + a2(m,n,p)*conjg(a2(m,l,q))) + a2112=(a2(m,n,p)*conjg(a1(m,l,q)) - a1(m,n,p)*conjg(a2(m,l,q))) + a1p2=(a1(m,n,p)+ci*a2(m,n,p))*conjg(a1(m-2,l,q)-ci*a2(m-2,l,q)) + a1m2=(a1(m,n,p)-ci*a2(m,n,p))*conjg(a1(m+2,l,q)+ci*a2(m+2,l,q)) + do w=wmin,wmax + m1w=(-1)**w + if(mod(n+l+w+p+q,2).eq.0) then + fe=1 + fo=0 + else + fe=0 + fo=1 + endif + s00(1,1,w) = s00(1,1,w)-(m1m*fe*fnl*a1122*cm1p1(w)*cmmpm(w))/2. + s00(3,2,w) = s00(3,2,w)+ (ci/2.*m1m*fnl*fo*a1122*cm1p1(w)*cmmpm(w)) + s00(4,2,w) = s00(4,2,w)+ dimag(-ci/2.*m1m*fnl*fo*a1122*cm1p1(w)*cmmpm(w)) + s00(1,4,w) = s00(1,4,w)+ dimag(m1m*fe*fnl*(-a2112)*cm1p1(w)*cmmpm(w))/2. + s00(2,3,w) = s00(2,3,w)+ (m1m*fe*fnl*(-a2112)*cm1p1(w)*cmmpm(w))/2. + s00(4,3,w) = s00(4,3,w)+ dimag(ci/2.*m1m*fnl*fo*a2112*cm1p1(w)*cmmpm(w)) + s00(4,4,w) = s00(4,4,w)+ (ci/2.*m1m*fnl*fo*a2112*cm1p1(w)*cmmpm(w)) + + if(w.lt.2) cycle + + s02(2,1,w) = s02(2,1,w)-(m1mq*a1122*fe*fnl*cm1m1(w)*cmmpm(w))/2. + s02(3,1,w) = s02(3,1,w)+ (-ci/2.*m1mq*a1122*fnl*fo*cm1m1(w)*cmmpm(w)) + s02(4,1,w) = s02(4,1,w)+ dimag(ci/2.*m1mq*a1122*fnl*fo*cm1m1(w)*cmmpm(w)) + s02(1,3,w) = s02(1,3,w)-(m1mq*a2112*fe*fnl*cm1m1(w)*cmmpm(w))/2. + s02(2,4,w) = s02(2,4,w)-dimag(m1mq*a2112*fe*fnl*cm1m1(w)*cmmpm(w))/2. + s02(3,3,w) = s02(3,3,w)+ (ci/2.*m1mq*a2112*fnl*fo*cm1m1(w)*cmmpm(w)) + s02(3,4,w) = s02(3,4,w)+ dimag(-ci/2.*m1mq*a2112*fnl*fo*cm1m1(w)*cmmpm(w)) + + s02(1,2,w) = s02(1,2,w)-(m1m*a1p2*fe*fnl*cm1p1(w)*cmmm2pm(w))/4. + s02(1,3,w) = s02(1,3,w)+ (-ci/4.*m1m*a1p2*fe*fnl*cm1p1(w)*cmmm2pm(w)) + s02(2,4,w) = s02(2,4,w)+ dimag(-ci/4.*m1m*a1p2*fe*fnl*cm1p1(w)*cmmm2pm(w)) + s02(3,1,w) = s02(3,1,w)+ (ci/4.*m1m*a1p2*fnl*fo*cm1p1(w)*cmmm2pm(w)) + s02(4,1,w) = s02(4,1,w)+ dimag(-ci/4.*m1m*a1p2*fnl*fo*cm1p1(w)*cmmm2pm(w)) + s02(4,3,w) = s02(4,3,w)+ dimag(m1m*a1p2*fnl*fo*cm1p1(w)*cmmm2pm(w))/4. + s02(4,4,w) = s02(4,4,w)+ (m1m*a1p2*fnl*fo*cm1p1(w)*cmmm2pm(w))/4. + + sm22(1,4,w) = sm22(1,4,w)+ dimag(-ci/8.*m1mnpl*m1w*a1p2*fnl*cm1m1(w)*cmmm2pm(w)) + sm22(2,2,w) = sm22(2,2,w)-(m1mnpl*m1w*a1p2*fnl*cm1m1(w)*cmmm2pm(w))/8. + sm22(2,3,w) = sm22(2,3,w)+ (-ci/8.*m1mnpl*m1w*a1p2*fnl*cm1m1(w)*cmmm2pm(w)) + sm22(3,2,w) = sm22(3,2,w)+ (ci/8.*m1mnpl*m1w*a1p2*fnl*cm1m1(w)*cmmm2pm(w)) + sm22(3,3,w) = sm22(3,3,w)-(m1mnpl*m1w*a1p2*fnl*cm1m1(w)*cmmm2pm(w))/8. + sm22(3,4,w) = sm22(3,4,w)+ dimag(m1mnpl*m1w*a1p2*fnl*cm1m1(w)*cmmm2pm(w))/8. + sm22(4,2,w) = sm22(4,2,w)+ dimag(-ci/8.*m1mnpl*m1w*a1p2*fnl*cm1m1(w)*cmmm2pm(w)) + + sp22(1,4,w) = sp22(1,4,w)+ dimag(-ci/8.*m1mq*a1p2*fnl*cm1m1(w)*cmmm2pm(w)) + sp22(2,2,w) = sp22(2,2,w)-(m1mq*a1p2*fnl*cm1m1(w)*cmmm2pm(w))/8. + sp22(2,3,w) = sp22(2,3,w)+ (-ci/8.*m1mq*a1p2*fnl*cm1m1(w)*cmmm2pm(w)) + sp22(3,2,w) = sp22(3,2,w)+ (-ci/8.*m1mq*a1p2*fnl*cm1m1(w)*cmmm2pm(w)) + sp22(3,3,w) = sp22(3,3,w)+ (m1mq*a1p2*fnl*cm1m1(w)*cmmm2pm(w))/8. + sp22(3,4,w) = sp22(3,4,w)-dimag(m1mq*a1p2*fnl*cm1m1(w)*cmmm2pm(w))/8. + sp22(4,2,w) = sp22(4,2,w)+ dimag(ci/8.*m1mq*a1p2*fnl*cm1m1(w)*cmmm2pm(w)) + + s02(1,2,w) = s02(1,2,w)-(m1m*a1m2*fe*fnl*cm1p1(w)*cmmp2pm(w))/4. + s02(1,3,w) = s02(1,3,w)+ (ci/4.*m1m*a1m2*fe*fnl*cm1p1(w)*cmmp2pm(w)) + s02(2,4,w) = s02(2,4,w)+ dimag(ci/4.*m1m*a1m2*fe*fnl*cm1p1(w)*cmmp2pm(w)) + s02(3,1,w) = s02(3,1,w)+ (ci/4.*m1m*a1m2*fnl*fo*cm1p1(w)*cmmp2pm(w)) + s02(4,1,w) = s02(4,1,w)+ dimag(-ci/4.*m1m*a1m2*fnl*fo*cm1p1(w)*cmmp2pm(w)) + s02(4,3,w) = s02(4,3,w)-dimag(m1m*a1m2*fnl*fo*cm1p1(w)*cmmp2pm(w))/4. + s02(4,4,w) = s02(4,4,w)-(m1m*a1m2*fnl*fo*cm1p1(w)*cmmp2pm(w))/4. + + sm22(1,4,w) = sm22(1,4,w)+ dimag(ci/8.*m1mq*a1m2*fnl*cm1m1(w)*cmmp2pm(w)) + sm22(2,2,w) = sm22(2,2,w)-(m1mq*a1m2*fnl*cm1m1(w)*cmmp2pm(w))/8. + sm22(2,3,w) = sm22(2,3,w)+ (ci/8.*m1mq*a1m2*fnl*cm1m1(w)*cmmp2pm(w)) + sm22(3,2,w) = sm22(3,2,w)+ (-ci/8.*m1mq*a1m2*fnl*cm1m1(w)*cmmp2pm(w)) + sm22(3,3,w) = sm22(3,3,w)-(m1mq*a1m2*fnl*cm1m1(w)*cmmp2pm(w))/8. + sm22(3,4,w) = sm22(3,4,w)+ dimag(m1mq*a1m2*fnl*cm1m1(w)*cmmp2pm(w))/8. + sm22(4,2,w) = sm22(4,2,w)+ dimag(ci/8.*m1mq*a1m2*fnl*cm1m1(w)*cmmp2pm(w)) + + sp22(1,4,w) = sp22(1,4,w)+ dimag(ci/8.*m1mnpl*m1w*a1m2*fnl*cm1m1(w)*cmmp2pm(w)) + sp22(2,2,w) = sp22(2,2,w)-(m1mnpl*m1w*a1m2*fnl*cm1m1(w)*cmmp2pm(w))/8. + sp22(2,3,w) = sp22(2,3,w)+ (ci/8.*m1mnpl*m1w*a1m2*fnl*cm1m1(w)*cmmp2pm(w)) + sp22(3,2,w) = sp22(3,2,w)+ (ci/8.*m1mnpl*m1w*a1m2*fnl*cm1m1(w)*cmmp2pm(w)) + sp22(3,3,w) = sp22(3,3,w)+ (m1mnpl*m1w*a1m2*fnl*cm1m1(w)*cmmp2pm(w))/8. + sp22(3,4,w) = sp22(3,4,w)-dimag(m1mnpl*m1w*a1m2*fnl*cm1m1(w)*cmmp2pm(w))/8. + sp22(4,2,w) = sp22(4,2,w)+ dimag(-ci/8.*m1mnpl*m1w*a1m2*fnl*cm1m1(w)*cmmp2pm(w)) + enddo + enddo + enddo + enddo + enddo + call ms_mpi(mpi_command='barrier') + nsend=4*4*(2*ntot+1) + call ms_mpi(mpi_command='allreduce',mpi_recv_buf_dp=s00,& + mpi_number=nsend,mpi_operation=ms_mpi_sum) + call ms_mpi(mpi_command='allreduce',mpi_recv_buf_dp=s02,& + mpi_number=nsend,mpi_operation=ms_mpi_sum) + call ms_mpi(mpi_command='allreduce',mpi_recv_buf_dp=sp22,& + mpi_number=nsend,mpi_operation=ms_mpi_sum) + call ms_mpi(mpi_command='allreduce',mpi_recv_buf_dp=sm22,& + mpi_number=nsend,mpi_operation=ms_mpi_sum) +! +! a patch +! + do i=3,4 + do j=1,i + s00(j,i,0:wtot)=-s00(j,i,0:wtot) + s02(j,i,0:wtot)=-s02(j,i,0:wtot) + sm22(j,i,0:wtot)=-sm22(j,i,0:wtot) + sp22(j,i,0:wtot)=-sp22(j,i,0:wtot) + enddo + enddo + deallocate(nlindex,nlnum) + end subroutine fosmexpansion +! +! compute the coefficients for the GSF expansion of the random orientation +! scattering matrix. +! +! +! original: 15 January 2011 +! revised: 21 February 2011: changed normalization on S11 +! + subroutine ranorientscatmatrix(xv,nsphere,nodr,nodrw,cbeam,tmatrixfile,& + sm,qext,qabs,qsca) + use mpidefs + use mpidata + use intrinsics + use specialfuncs + use spheredata + use numconstants + implicit none + integer :: nodr,nodrw,nodr2,m,n,p,k,l,q,s,t,v,u,w,nblk,kl,mn,nn1,tn, & + lmax,ll1,tvl,ku,k1,ns,ik,ik1,m1,nu,n1s,n1e,nu1,p1,n1max, & + in,n1,i,lt,kt,qt,nt,mt,ikm,klm,mnm,nodrt,nsphere, & + rank,iunit,numprocs + real(8) :: sm(4,4,0:nodrw),fl,vc(0:4*nodr+2),xv,fl2,fc1,fc2,fc3,fc4, & + cbeam,gbn,qext(nsphere),qabs(nsphere),qsca(nsphere),qel, & + qal,qsl,fc(4),time1,time2,qsca0 + complex(8) :: ci,cin,a + complex(8) :: aw(0:2,-1:1,0:nodrw),bw(0:2,-1:1,0:nodrw),cw(0:nodrw), & + dw(0:nodrw),pp(nodr,2,2), & + bm(2,nodr*(nodr+2),2),am(2,nodr+1,2),fm(3,nodr,2,nodr,2) + complex(8), allocatable :: dm(:,:,:,:,:,:) + complex(4), allocatable :: tc(:,:,:,:) + integer :: nblkw,wv,sizedm,ierr,sizetm,nsend + integer, allocatable :: windex(:),vindex(:),wvindex(:),wvnum(:) + real(8) :: wvperproc,sum + character*30 :: tmatrixfile + data ci/(0.d0,1.d0)/ + call ms_mpi(mpi_command='rank',mpi_rank=rank) + call ms_mpi(mpi_command='size',mpi_size=numprocs) + call getrunparameters(run_print_unit=iunit) + if(rank.eq.0) time1=mytime() +! +! read the T matrix from the file +! + if(rank.eq.0) then + open(3,file=tmatrixfile) + read(3,*) nodrt + endif + nodrt=nodr + nblk=nodr*(nodr+2) + sizetm=4*nblk*nblk + allocate(tc(2,nblk,2,nblk)) + tc=(0.,0.) + if(rank.eq.0) then + qext=0.d0 + qabs=0.d0 + qsca=0.d0 + do l=1,nodr + gbn=dexp(-((dble(l)+.5d0)*cbeam)**2.) + do k=-l,l + kl=l*(l+1)+k + klm=l*(l+1)-k + do q=1,2 + read(3,*) lt,kt,qt + do n=1,l + do m=-n,n + mn=n*(n+1)+m + mnm=n*(n+1)-m + read(3,*) nt,mt,fc + tc(1,mn,q,kl)=cmplx(fc(1),fc(2)) + tc(2,mn,q,kl)=cmplx(fc(3),fc(4)) + if(n.lt.l) then + ikm=(-1)**(m+k) + do p=1,2 + tc(q,klm,p,mnm)=tc(p,mn,q,kl)*ikm + enddo + endif + enddo + enddo + enddo + enddo + do i=1,nsphere + read(3,*) n,qel,qal,qsl + qext(i)=qext(i)+qel*gbn*gbn + qabs(i)=qabs(i)+qal*gbn*gbn + qsca(i)=qsca(i)+qsl*gbn*gbn + enddo + enddo + close(3) + endif +! +! send to the other processors +! + if(numprocs.gt.1) then + call ms_mpi(mpi_command='barrier') + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=qext,mpi_number=nsphere,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=qabs,mpi_number=nsphere,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=qsca,mpi_number=nsphere,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_c=tc,mpi_number=sizetm,mpi_rank=0) + endif + allocate(dm(-nodr-1:nodr+1,3,nodr,2,nodr,2)) + if(rank.eq.0) then + time2=mytime()-time1 + call timewrite(iunit,' t matrix read time:',time2) + time1=mytime() + endif + nodr2=nodr+nodr + nblk=nodr*(nodr+2) + dm=(0.d0,0.d0) + sizedm=size(dm) + call init(nodr2) +! +! compute the GB modified T matrix +! + do n=1,nodr + gbn=dexp(-((dble(n)+.5d0)*cbeam)**2.) + cin=ci**(n+1) + pp(n,1,1) =-.5d0*cin*fnr(n+n+1)*gbn + pp(n,2,1) =-pp(n,1,1) + pp(n,1,2)=-pp(n,1,1) + pp(n,2,2)=pp(n,2,1) + enddo + do n=1,nodr + nn1=n*(n+1) + do m=-n,n + mn=nn1+m + do p=1,2 + do l=1,nodr + do k=-l,l + kl=l*(l+1)+k + a=tc(p,mn,1,kl) + tc(p,mn,1,kl)=tc(p,mn,1,kl)*pp(l,1,1)& + +tc(p,mn,2,kl)*pp(l,1,2) + tc(p,mn,2,kl)=a*pp(l,2,1)+tc(p,mn,2,kl)*pp(l,2,2) + enddo + enddo + enddo + enddo + enddo +! +! determine the distribution of work load among the processors +! + nblkw=nodr2*(nodr2+2)+1 + allocate(windex(nblkw),vindex(nblkw),wvindex(0:numprocs-1),wvnum(0:numprocs-1)) + w=0 + do n=0,nodr2 + do m=-n,n + w=w+1 + windex(w)=n + vindex(w)=m + enddo + enddo + wvperproc=dble(nblkw)/dble(numprocs) + sum=0. + do i=0,numprocs-1 + wvindex(i)=floor(sum) + sum=sum+wvperproc + enddo + do i=0,numprocs-2 + wvnum(i)=wvindex(i+1)-wvindex(i) + enddo + wvnum(numprocs-1)=nblkw-wvindex(numprocs-1) + if(rank.eq.0) then + write(iunit,'('' d matrix calculation, order+degree per proc.:'',f9.2)') & + wvperproc + call flush(iunit) + endif +! +! the big loop +! + do wv=wvindex(rank)+1,wvindex(rank)+wvnum(rank) + w=windex(wv) + v=vindex(wv) + bm=(0.d0,0.d0) + do n=1,nodr + nn1=n*(n+1) + do l=max(1,abs(w-n)),min(nodr,w+n) + am(1,l,1)=0.d0 + am(1,l,2)=0.d0 + am(2,l,1)=0.d0 + am(2,l,2)=0.d0 + enddo + do t=-n,n + tn=nn1+t + lmax=min(nodr,w+n) + call vcfunc(v,w,-t,n,vc) + do l=max(1,abs(v-t),abs(n-w)),lmax + ll1=l*(l+1) + tvl=ll1+t-v + do k=1,2 + do p=1,2 + am(k,l,p)=am(k,l,p)+vc(l)*tc(p,tn,k,tvl) + enddo + enddo + enddo + enddo + do m=-n,n + mn=nn1+m + do k=1,2 + u=m-(-3+2*k) + if(abs(u).le.w) then + lmax=min(nodr,w+n) + call vcfunc(-u,w,m,n,vc) + do l=max(1,abs(w-n)),lmax + fl=-(-1)**l*vc(l)/dble(l+l+1) + do p=1,2 + bm(k,mn,p)=bm(k,mn,p)+am(k,l,p)*fl + enddo + enddo + endif + enddo + enddo + enddo + do u=-min(w,nodr+1),min(w,nodr+1) + do ku=1,3 + if(ku.eq.1) then + k=-1 + k1=-1 + elseif(ku.eq.2) then + k=1 + k1=1 + else + k=1 + k1=-1 + endif + m=u+k + ns=max(1,abs(m)) + ik=(k+1)/2+1 + ik1=(k1+1)/2+1 + m1=u+k1 + do n=ns,nodr + nu=n*(n+1)+m + n1s=max(1,abs(m1),n-nodrw) + n1e=min(nodr,n+nodrw) + do n1=n1s,n1e + cin=ci**(n-n1) + nu1=n1*(n1+1)+m1 + fl=-fnr(n+n+1)*fnr(n1+n1+1)*dble(w+w+1) + do p=1,2 + do p1=1,2 + a=bm(ik,nu,p)*cin*fl*conjg(bm(ik1,nu1,p1)) + dm(u,ku,n,p,n1,p1)=dm(u,ku,n,p,n1,p1)+a + enddo + enddo + enddo + enddo + enddo + enddo + enddo + deallocate(tc) + call ms_mpi(mpi_command='barrier') + call ms_mpi(mpi_command='allreduce',mpi_recv_buf_dc=dm,& + mpi_number=sizedm,mpi_operation=ms_mpi_sum) + if(rank.eq.0) then + time2=mytime()-time1 + call timewrite(iunit,' d matrix time:',time2) + time1=mytime() + endif +! +! compute the expansion coefficients +! + aw=0.d0 + bw=0.d0 + cw=0.d0 + dw=0.d0 + do w=0,nodrw + do n=1,nodr + n1s=max(1,abs(n-w)) + n1e=min(nodr,n+w) + do n1=n1s,n1e + do k=1,3 + do p=1,2 + do p1=1,2 + fm(k,n,p,n1,p1)=0. + enddo + enddo + enddo + enddo + enddo + do u=-nodr-1,nodr+1 + do k=-1,1,2 + m=u+k + ik=(k+1)/2+1 + ns=max(1,abs(m)) + do n=ns,nodr + n1max=min(w+n,nodr) + call vcfunc(m,n,0,w,vc) + do n1=ns,nodr + if((n+n1.lt.w).or.(abs(n-n1).gt.w)) cycle + fl=-(-1)**n*vc(n1)*fnr(w+w+1)/fnr(n1+n1+1) + do p=1,2 + do p1=1,2 + fm(ik,n,p,n1,p1)=fm(ik,n,p,n1,p1)+dm(u,ik,n,p,n1,p1)*fl + enddo + enddo + enddo + enddo + enddo + if(w.lt.2) cycle + m=u+1 + m1=u-1 + ns=max(1,abs(m)) + n1s=max(1,abs(m1)) + do n=ns,nodr + n1max=min(w+n,nodr) + call vcfunc(m,n,-2,w,vc) + do n1=n1s,nodr + if((n+n1.lt.w).or.(abs(n-n1).gt.w)) cycle + fl=-(-1)**n*vc(n1)*fnr(w+w+1)/fnr(n1+n1+1) + do p=1,2 + do p1=1,2 + fm(3,n,p,n1,p1)=fm(3,n,p,n1,p1)+dm(u,3,n,p,n1,p1)*fl + enddo + enddo + enddo + enddo + enddo + do n=1,nodr + n1s=max(1,abs(n-w)) + n1e=min(nodr,n+w) + in=(-1)**n + n1max=min(w+n,nodr) + call vcfunc(1,n,0,w,vc) + do n1=n1s,n1e + fl=2.d0*in*vc(n1)*fnr(w+w+1)/fnr(n1+n1+1) + i=mod(n+n1-w,2)+1 + do p=1,2 + p1=(2-i)*p+(i-1)*(3-p) + do k=-1,1,2 + ik=(k+1)/2+1 + aw(0,k,w)=aw(0,k,w)+fm(ik,n,p,n1,p1)*fl + bw(0,k,w)=bw(0,k,w)+fm(ik,n,p,n1,3-p1)*fl + enddo + bw(2,0,w)=bw(2,0,w)+fm(3,n,p,n1,3-p1)*fl + aw(2,0,w)=aw(2,0,w)+fm(3,n,p,n1,p1)*fl + enddo + enddo + if(w.lt.2) cycle + call vcfunc(1,n,-2,w,vc) + do n1=n1s,n1e + fl=2.d0*in*vc(n1)*fnr(w+w+1)/fnr(n1+n1+1) + i=mod(n+n1-w,2)+1 + do p=1,2 + p1=(2-i)*p+(i-1)*(3-p) + do k=-1,1,2 + ik=(k+1)/2+1 + aw(2,k,w)=aw(2,k,w)+fm(ik,n,p,n1,p1)*fl*(-1)**p1 + bw(2,k,w)=bw(2,k,w)+fm(ik,n,p,n1,3-p1)*fl*(-1)**(3-p1) + enddo + enddo + fl2=2.*(-1)**(n1+w)*vc(n1)*fnr(w+w+1)/fnr(n1+n1+1) + do p=1,2 + do p1=1,2 + cw(w)=cw(w)+fm(3,n,p,n1,p1)*fl*(-1)**p1 + dw(w)=dw(w)+fm(3,n,p,n1,p1)*fl2*(-1)**p + enddo + enddo + enddo + enddo + enddo + do w=0,nodrw + do k=-1,1 + do i=0,2 + aw(i,k,w)=aw(i,k,w)*2./xv/xv + bw(i,k,w)=bw(i,k,w)*2./xv/xv + enddo + enddo + cw(w)=cw(w)*2./xv/xv + dw(w)=dw(w)*2./xv/xv + enddo + do n=0,nodrw + sm(1,1,n)=aw(0,-1,n)+aw(0,1,n) + sm(1,2,n)=aw(2,-1,n)+aw(2,1,n) + sm(1,3,n)=2.d0*dimag(aw(2,0,n)) + sm(1,4,n)=aw(0,1,n)-aw(0,-1,n) + sm(2,2,n)=dw(n) + sm(2,3,n)=dimag(dw(n)) + sm(2,4,n)=aw(2,1,n)-aw(2,-1,n) + sm(3,2,n)=dimag(cw(n)) + sm(3,3,n)=cw(n) + sm(3,4,n)=dimag(bw(2,-1,n)-bw(2,1,n)) + sm(4,4,n)=bw(0,1,n)-bw(0,-1,n) + enddo +! +! normalization +! + qsca0=sm(1,1,0) + do n=0,nodrw + sm(1,1,n)=sm(1,1,n)/qsca0 + sm(1,2,n)=sm(1,2,n)/qsca0 + sm(1,3,n)=sm(1,3,n)/qsca0 + sm(1,4,n)=sm(1,4,n)/qsca0 + sm(2,2,n)=sm(2,2,n)/qsca0 + sm(2,3,n)=sm(2,3,n)/qsca0 + sm(2,4,n)=sm(2,4,n)/qsca0 + sm(3,2,n)=sm(3,2,n)/qsca0 + sm(3,3,n)=sm(3,3,n)/qsca0 + sm(3,4,n)=sm(3,4,n)/qsca0 + sm(4,4,n)=sm(4,4,n)/qsca0 + enddo + call ms_mpi(mpi_command='barrier') + if(rank.eq.0) then + time2=mytime()-time1 + call timewrite(iunit,' scat matrix coef time:',time2) + endif + deallocate(windex,vindex,wvindex,wvnum,dm) + end subroutine ranorientscatmatrix +! +! calculation of the RO scattering matrix from the GSF expansion +! +! +! original: 15 January 2011 +! revised: 21 February 2011: changed normalization on S11 +! + subroutine ranorienscatmatrixcalc(nt,tmin,tmax,iscale,smc,nodrexp,sm) + use specialfuncs + use numconstants + implicit none + integer :: nt,iscale,nodrexp,i,j,k,n,nn0,nnp2,nnm2 + real(8) :: tmin,tmax,smc(4,4,0:nodrexp),sm(4,4,nt),dc(-2:2,0:nodrexp*(nodrexp+2)), & + ct,th,qsca + do i=1,nt + if(nt.eq.1) then + th=tmin + else + th=tmin+(tmax-tmin)*dble(i-1)/dble(nt-1) + endif + ct=cos(th*pi/180.d0) +! +! dc is the normalized generalized spherical function +! dc(k,n*(n+1)+m) = ((n-k)!(n+m)!/(n+k)!/(n-m)!)^(1/2) D^k_{mn}, +! where D^k_{mn} is defined in M&M JOSA 96 +! + call rotcoef(ct,2,nodrexp,dc) + do j=1,4 + do k=j,4 + sm(j,k,i)=0.d0 + enddo + enddo + do n=0,nodrexp + nn0=n*(n+1) + nnp2=nn0+2 + nnm2=nn0-2 + sm(1,1,i)=sm(1,1,i)+dc(0,nn0)*smc(1,1,n) + sm(1,4,i)=sm(1,4,i)+dc(0,nn0)*smc(1,4,n) + sm(4,4,i)=sm(4,4,i)+dc(0,nn0)*smc(4,4,n) + if(n.ge.2) then + sm(1,2,i)=sm(1,2,i)+dc(2,nn0)*smc(1,2,n) + sm(2,4,i)=sm(2,4,i)+dc(2,nn0)*smc(2,4,n) + sm(3,4,i)=sm(3,4,i)+dc(2,nn0)*smc(3,4,n) + sm(1,3,i)=sm(1,3,i)+dc(2,nn0)*smc(1,3,n) + sm(2,2,i)=sm(2,2,i)+dc(2,nnm2)*smc(2,2,n)+dc(2,nnp2)*smc(3,3,n) + sm(2,3,i)=sm(2,3,i)+dc(2,nnp2)*smc(2,3,n)+dc(2,nnp2)*smc(3,2,n) + sm(3,3,i)=sm(3,3,i)-dc(2,nnm2)*smc(2,2,n)+dc(2,nnp2)*smc(3,3,n) + endif + enddo +! +! discontiued scaling option: now done in main program +! +! if(iscale.eq.1) then +! do j=1,4 +! do k=j,4 +! if(j.ne.1.or.k.ne.1) then +! sm(j,k,i)=sm(j,k,i)/sm(1,1,i) +! endif +! enddo +! enddo +! endif +! +! here are the VV and HH differential cross sections +! +! gvv=.25*(sm(1,1)+sm(2,2)-2.*sm(1,2)) +! ghh=.25*(sm(1,1)+sm(2,2)+2.*sm(1,2)) +! + enddo + return + end subroutine ranorienscatmatrixcalc + end module scatprops +! +! module nearfield contains local data and subroutines for near field calculation +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + module nearfield + implicit none + integer, private :: axialinc,ndimpw,nodrpwmax + integer, private, allocatable :: nblk_nf(:),noff_nf(:) + real(8), private :: rplotmax + complex(8), allocatable, private :: amnp_nf(:),cmnp_nf(:),pmnp_nf(:), & + amn3mp_nf(:),cmn3mp_nf(:),pmn3mp_nf(:) + contains +! +! nearfieldspherepart calculates the field at point xg generated by the spheres +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine nearfieldspherepart(xg,nsphere,xsp,rpos,ri,& + nodr,neqns,insphere,efield,hfield) + use specialfuncs + use numconstants + implicit none + integer :: nsphere,nodr(nsphere),neqns,i,insphere,nblki,n + real(8) :: xg(3),xsp(nsphere),rpos(3,nsphere),x(3),r + complex(8) :: ri(2,nsphere),vwh(3,neqns),efield(3),hfield(3),ri0,cn1,cn2 + complex(8), allocatable :: vwhleft(:,:,:),vwhright(:,:,:) + +! +! find if the point is inside a sphere +! + insphere=0 + do i=1,nsphere + x=xg(:)-rpos(:,i) + r=sqrt(dot_product(x,x)) + if(r.le.xsp(i)) then + insphere=i + exit + endif + enddo +! +! do the calculations +! + if(insphere.eq.0) then +! +! outside a sphere: field = scattered +! + do i=1,nsphere + x=xg(:)-rpos(:,i) + ri0=(1.d0,0.d0) + call vwhcalc(x,ri0,nodr(i),3,vwh(1:3,noff_nf(i)+1:noff_nf(i)+nblk_nf(i))) + enddo + efield(:)=matmul(vwh(:,1:neqns),amnp_nf(1:neqns)) + hfield(:)=matmul(vwh(:,1:neqns),amn3mp_nf(1:neqns))/dcmplx(0.d0,1.d0) + else +! +! inside a sphere: field = internal +! + i=insphere + if(abs(ri(1,i)-ri(2,i)).eq.0) then + x=xg(:)-rpos(:,i) + call vwhcalc(x,ri(1,i),nodr(i),1,vwh) + efield(:)=matmul(vwh(:,1:nblk_nf(i)), & + cmnp_nf(noff_nf(i)+1:noff_nf(i)+nblk_nf(i))) + hfield(:)=matmul(vwh(:,1:nblk_nf(i)), & + cmn3mp_nf(noff_nf(i)+1:noff_nf(i)+nblk_nf(i)))*ri(1,i)/dcmplx(0.d0,1.d0) + else + nblki=nodr(i)*(nodr(i)+2) + allocate(vwhleft(3,2,nblki),vwhright(3,2,nblki)) + x=xg(:)-rpos(:,i) + call vwhcalc(x,ri(1,i),nodr(i),1,vwhleft) + call vwhcalc(x,ri(2,i),nodr(i),1,vwhright) + efield=0.d0 + hfield=0.d0 + do n=1,nblki + cn1=cmnp_nf(noff_nf(i)+2*n-1) + cn2=cmnp_nf(noff_nf(i)+2*n) + efield(:)=efield(:)+(vwhleft(:,1,n)+vwhleft(:,2,n))*cn1 & + +(vwhright(:,1,n)-vwhright(:,2,n))*cn2 + hfield(:)=hfield(:)+((vwhleft(:,2,n)+vwhleft(:,1,n))*cn1*ri(1,i) & + +(vwhright(:,2,n)-vwhright(:,1,n))*cn2*ri(2,i))/dcmplx(0.d0,1.d0) + enddo + deallocate(vwhleft,vwhright) + endif + endif + end subroutine nearfieldspherepart +! +! nearfieldincidentpart calculates the incident field at point xg using a regular +! vswh expansion +! +! +! last revised: 15 January 2011 +! + subroutine nearfieldincidentpart(xg,nodrpw,efield,hfield) + use specialfuncs + use numconstants + implicit none + integer :: nblkpw,nodrpw + real(8) :: xg(3),r,epspw + complex(8) :: vwhpw(3,nodrpw*(nodrpw+2)*2),vwhpwaxial(3,4*nodrpw), & + efield(3),hfield(3) +! +! oblique incidence: use the full expansion +! + if(axialinc.eq.0) then + call vwhcalc(xg,(1.d0,0.d0),nodrpw,1,vwhpw) + nblkpw=nodrpw*(nodrpw+2)*2 + efield(:)=matmul(vwhpw(:,1:nblkpw),pmnp_nf(1:nblkpw)) + hfield(:)=matmul(vwhpw(:,1:nblkpw),pmn3mp_nf(1:nblkpw))/dcmplx(0.d0,1.d0) + else +! +! axial incidence: use the shortcut +! + call vwhaxialcalc(xg,(1.d0,0.d0),nodrpw,1,vwhpwaxial) + nblkpw=4*nodrpw + efield(:)=matmul(vwhpwaxial(:,1:nblkpw),pmnp_nf(1:nblkpw)) + hfield(:)=matmul(vwhpwaxial(:,1:nblkpw),pmn3mp_nf(1:nblkpw))/dcmplx(0.d0,1.d0) + endif + end subroutine nearfieldincidentpart +! +! nearfieldincidentcoef generates the reshaped array of incident field coefficients +! +! +! last revised: 15 January 2011 +! + subroutine nearfieldincidentcoef(nodrpw,alpha,beta,gamma,cbeam,epspw) + use specialfuncs + use spheredata + use miecoefdata + use numconstants + implicit none + integer :: m,n,p,nn1,mn,mnp,nodrpw + real (8) :: alpha,beta,cbeam,gamma,epspw,cgamma,sgamma + complex(8), allocatable :: pmnp0(:,:,:,:) + allocate(pmnp0(0:nodrpw+1,nodrpw,2,2)) + if(allocated(pmnp_nf)) deallocate(pmnp_nf,pmn3mp_nf) + if(beta.ne.0.d0) then + axialinc=0 + ndimpw=2*nodrpw*(nodrpw+2) + else + axialinc=1 + ndimpw=4*nodrpw + endif + allocate(pmnp_nf(ndimpw),pmn3mp_nf(ndimpw)) + if(cbeam.eq.0.d0) then + call planewavecoef(alpha,beta,nodrpw,pmnp0) + else + call gaussianbeamcoef(alpha,beta,cbeam,nodrpw,pmnp0) + endif + cgamma=cos(gamma) + sgamma=sin(gamma) + if(axialinc.eq.0) then + do n=1,nodrpw + nn1=n*(n+1) + do p=1,2 + do m=-n,-1 + mn=nn1+m + mnp=2*(mn-1)+p + pmnp_nf(mnp)=pmnp0(n+1,-m,p,1)*cgamma+pmnp0(n+1,-m,p,2)*sgamma + pmn3mp_nf(mnp)=pmnp0(n+1,-m,3-p,1)*cgamma+pmnp0(n+1,-m,3-p,2)*sgamma + enddo + do m=0,n + mn=nn1+m + mnp=2*(mn-1)+p + pmnp_nf(mnp)=pmnp0(m,n,p,1)*cgamma+pmnp0(m,n,p,2)*sgamma + pmn3mp_nf(mnp)=pmnp0(m,n,3-p,1)*cgamma+pmnp0(m,n,3-p,2)*sgamma + enddo + enddo + enddo + else + do n=1,nodrpw + do p=1,2 + mnp=4*(n-1)+p + pmnp_nf(mnp)=pmnp0(n+1,1,p,1)*cgamma+pmnp0(n+1,1,p,2)*sgamma + pmn3mp_nf(mnp)=pmnp0(n+1,1,3-p,1)*cgamma+pmnp0(n+1,1,3-p,2)*sgamma + pmnp_nf(mnp+2)=pmnp0(1,n,p,1)*cgamma+pmnp0(1,n,p,2)*sgamma + pmn3mp_nf(mnp+2)=pmnp0(1,n,3-p,1)*cgamma+pmnp0(1,n,3-p,2)*sgamma + enddo + enddo + endif + deallocate(pmnp0) + end subroutine nearfieldincidentcoef +! +! nearfieldpointcalc: if newcalc = 1, generates the reshaped incident, scattered, and +! internal field coefficients, and returns with newcalc=0 +! if newcalc = 0, generates the field at point xg +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! + subroutine nearfieldpointcalc(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + gamma,epspw,xg,newcalc,efield,hfield) + use specialfuncs + use spheredata + use miecoefdata + use numconstants + implicit none + integer :: nsphere,neqns,nodr(nsphere),i,j,k,m,n,p,nn1,mn,nodrpw,newcalc, & + insphere + real (8) :: alpha,beta,cbeam,xsp(nsphere),rpos(3,nsphere),xg(3),xgp(3), & + gamma,epspw,rplot,cgamma,sgamma + complex(8) :: amnp(neqns,2),ri(2,nsphere),efield(3),hfield(3),einc(3),hinc(3),ri0, & + ct1,ct2 + complex(8), allocatable :: pmnp0(:,:,:,:),cnmie(:,:,:),amnpt(:,:),cmnpt(:,:) +! +! initialization operations: newcalc=1 +! + if(newcalc.eq.1) then + if(allocated(amnp_nf)) deallocate(amnp_nf,cmnp_nf,amn3mp_nf,cmn3mp_nf, & + noff_nf,nblk_nf) + allocate(amnp_nf(neqns),cmnp_nf(neqns),amn3mp_nf(neqns),cmn3mp_nf(neqns), & + noff_nf(nsphere),nblk_nf(nsphere)) + noff_nf(1)=0 + do i=1,nsphere + nblk_nf(i)=2*nodr(i)*(nodr(i)+2) + if(i.lt.nsphere) noff_nf(i+1)=noff_nf(i)+nblk_nf(i) + enddo + cgamma=cos(gamma) + sgamma=sin(gamma) + do i=1,nsphere + ri0=2.d0/(1.d0/ri(1,i)+1.d0/ri(2,i)) + allocate(pmnp0(0:nodr(i)+1,nodr(i),2,2),cnmie(2,2,nodr(i)),& + amnpt(2,nodr(i)*(nodr(i)+2)),cmnpt(2,nodr(i)*(nodr(i)+2))) + call getmiedata(which_sphere=i,sphere_int_mie_coefficients=cnmie) + do p=1,2 + pmnp0(0:nodr(i)+1,1:nodr(i),1:2,p) & + =reshape(amnp(noff_nf(i)+1:noff_nf(i)+nblk_nf(i),p),(/nodr(i)+2,nodr(i),2/)) + enddo + if(abs(ri(1,i)-ri(2,i)).gt.1.d-10) then + do n=1,nodr(i) + nn1=n*(n+1) + do p=1,2 + do m=-n,-1 + mn=nn1+m + amnpt(p,mn)=pmnp0(n+1,-m,p,1)*cgamma+pmnp0(n+1,-m,p,2)*sgamma + enddo + do m=0,n + mn=nn1+m + amnpt(p,mn)=pmnp0(m,n,p,1)*cgamma+pmnp0(m,n,p,2)*sgamma + enddo + enddo + do m=-n,n + mn=nn1+m + ct1=amnpt(1,mn)*cnmie(1,1,n)+amnpt(2,mn)*cnmie(1,2,n) + ct2=amnpt(1,mn)*cnmie(2,1,n)+amnpt(2,mn)*cnmie(2,2,n) + cmnpt(1,mn)=ct1 + cmnpt(2,mn)=-(0.d0,1.d0)/ri0*ct2 + enddo + enddo + else + do n=1,nodr(i) + nn1=n*(n+1) + do p=1,2 + do m=-n,-1 + mn=nn1+m + amnpt(p,mn)=pmnp0(n+1,-m,p,1)*cgamma+pmnp0(n+1,-m,p,2)*sgamma + cmnpt(p,mn)=amnpt(p,mn)*cnmie(p,p,n) + enddo + do m=0,n + mn=nn1+m + amnpt(p,mn)=pmnp0(m,n,p,1)*cgamma+pmnp0(m,n,p,2)*sgamma + cmnpt(p,mn)=amnpt(p,mn)*cnmie(p,p,n) + enddo + enddo + enddo + endif + amnp_nf(noff_nf(i)+1:noff_nf(i)+nblk_nf(i))= & + reshape(amnpt(1:2,1:nodr(i)*(nodr(i)+2)),(/nblk_nf(i)/)) + cmnp_nf(noff_nf(i)+1:noff_nf(i)+nblk_nf(i))= & + reshape(cmnpt(1:2,1:nodr(i)*(nodr(i)+2)),(/nblk_nf(i)/)) + amn3mp_nf(noff_nf(i)+1:noff_nf(i)+nblk_nf(i))= & + reshape(amnpt(2:1:-1,1:nodr(i)*(nodr(i)+2)),(/nblk_nf(i)/)) + cmn3mp_nf(noff_nf(i)+1:noff_nf(i)+nblk_nf(i))= & + reshape(cmnpt(2:1:-1,1:nodr(i)*(nodr(i)+2)),(/nblk_nf(i)/)) + deallocate(pmnp0,cnmie,amnpt,cmnpt) + enddo + rplot=sqrt(dot_product(xg,xg)) + rplotmax=rplot + call planewavetruncationorder(rplot,epspw,nodrpw) + nodrpwmax=nodrpw + call nearfieldincidentcoef(nodrpw,alpha,beta,gamma,cbeam,epspw) + newcalc=0 + return + endif +! +! point calculation operations: newcalc=0 +! first determine the required order of the incident field expansion, and recalculate +! field coefficients, if necessary +! + rplot=sqrt(dot_product(xg,xg)) + rplotmax=max(rplot,rplotmax) + call planewavetruncationorder(rplot,epspw,nodrpw) + if(nodrpw.gt.nodrpwmax) then + nodrpwmax=nodrpw + call nearfieldincidentcoef(nodrpw,alpha,beta,gamma,cbeam,epspw) + endif + efield=0.d0 + hfield=0.d0 +! +! calculate the sphere contribution to the field +! + call nearfieldspherepart(xg,nsphere,xsp,rpos,ri,& + nodr,neqns,insphere,efield,hfield) +! +! if the point is external to the spheres, calculate the incident field +! + if(insphere.eq.0) then + call nearfieldincidentpart(xg,nodrpw,einc,hinc) + efield=efield+einc + hfield=hfield+hinc + endif + end subroutine nearfieldpointcalc +! +! nearfieldgridcalc is an MPI--enabled subroutine for calculating field points on a +! rectangular grid. Writes the data to nfoutunit. +! +! +! last revised: 15 January 2011 +! 30 March 2011: added optical activity +! changed so that input positions are defined relative to sphere position file origin, and +! not the gb focal point. +! + subroutine nearfieldgridcalc(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + nfplane,nfplanepos0,nfplanevert0,gbfocus,deltax,gamma,nfoutunit,epspw, & + nfoutdata,runprintunit) + use mpidefs + use mpidata + use intrinsics + use specialfuncs + use spheredata + use miecoefdata + use numconstants + implicit none + integer :: nsphere,neqns,nodr(nsphere),nfplane,runprintunit,npoints1,npoints2, & + npoints,i,j,k,np23,gcoord(3),rank,numprocs,nrowperproc,nrowrem, & + npoints1by5,plotincfield,nsp,nfoutunit,nfoutdata,newcalc + real (8) :: alpha,beta,cbeam,xsp(nsphere),rpos(3,nsphere),nfplanepos,& + nfplanevert(2,2),frowperproc,rowsum,xg(3),xgp(3),deltax,gamma,epspw, & + time1,time2,xplot(3,nsphere),xi0,ri0,esquare,xgpmax(3),rplot, & + gbfocus(3),nfplanepos0,nfplanevert0(2,2) + complex(8) :: amnp(neqns,2),ri(2,nsphere),efield(3),hfield(3) + integer, allocatable :: efindex(:),efnum(:) + complex(8), allocatable :: efieldrow(:,:),efieldrowt(:,:),hfieldrow(:,:),hfieldrowt(:,:) + call ms_mpi(mpi_command='size',mpi_size=numprocs) + call ms_mpi(mpi_command='rank',mpi_rank=rank) +! +! determine the plane +! + if(nfplane.eq.1) then + gcoord=(/2,3,1/) + elseif(nfplane.eq.2) then + gcoord=(/3,1,2/) + else + gcoord=(/1,2,3/) + endif +! +! shift the coordinates to gb focal origin +! + nfplanevert(1,1)=nfplanevert0(1,1)-gbfocus(gcoord(1)) + nfplanevert(1,2)=nfplanevert0(1,2)-gbfocus(gcoord(1)) + nfplanevert(2,1)=nfplanevert0(2,1)-gbfocus(gcoord(2)) + nfplanevert(2,2)=nfplanevert0(2,2)-gbfocus(gcoord(2)) + nfplanepos=nfplanepos0-gbfocus(gcoord(3)) + xg(gcoord(3))=nfplanepos +! +! determine the number of points +! + npoints1=nint((nfplanevert(1,2)-nfplanevert(1,1))/deltax)+1 + npoints2=nint((nfplanevert(2,2)-nfplanevert(2,1))/deltax)+1 + npoints=npoints1*npoints2 +! +! find the maximum point-to-target origin distance and initialize the field calculation +! + xgp(3)=nfplanepos + rplotmax=0.d0 + xgpmax=0.d0 + do i=1,npoints1 + xgp(1)=nfplanevert(1,1)+deltax*dble(i-1) + do j=1,npoints2 + xgp(2)=nfplanevert(2,1)+deltax*dble(j-1) + rplot=sqrt(dot_product(xgp,xgp)) + if(rplot.gt.rplotmax) then + rplotmax=rplot + xgpmax=xgp + endif + enddo + enddo + newcalc=1 + call nearfieldpointcalc(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + gamma,epspw,xgpmax,newcalc,efield,hfield) +! +! determine the intersecting spheres +! + nsp=0 + do i=1,nsphere + xi0=abs(rpos(gcoord(3),i)-xg(gcoord(3))) + if(xi0.le.xsp(i)) then + nsp=nsp+1 + xplot(1,nsp)=rpos(gcoord(1),i)+gbfocus(gcoord(1)) + xplot(2,nsp)=rpos(gcoord(2),i)+gbfocus(gcoord(2)) + ri0=xsp(i)*xsp(i)-xi0*xi0 + if(ri0.ne.0.) ri0=sqrt(ri0) + xplot(3,nsp)=ri0 + endif + enddo +! +! report to runprintunit +! + if(rank.eq.0) then + write(runprintunit,'('' near field calculations'')') + write(runprintunit,'('' plane, position:'',i5,f9.3)') nfplane,nfplanepos0 + write(runprintunit,'('' rectangular plot vertices:'')') + write(runprintunit,'('' min:'',3f9.3)') nfplanevert0(1:2,1) + write(runprintunit,'('' max:'',3f9.3)') nfplanevert0(1:2,2) + write(runprintunit,'('' number of plotting points, step size:'',i8,f8.3)') npoints, deltax + write(runprintunit,'('' max plane wave order:'',i5)') nodrpwmax + endif +! +! determine the distribution of work among the processors +! + allocate(efindex(0:numprocs-1),efnum(0:numprocs-1), & + efieldrow(3,npoints2),efieldrowt(3,npoints2), & + hfieldrow(3,npoints2),hfieldrowt(3,npoints2)) + np23=3*npoints2 + frowperproc=dble(npoints2)/dble(numprocs) + rowsum=0. + do i=0,numprocs-1 + efindex(i)=floor(rowsum) + rowsum=rowsum+frowperproc + enddo + do i=0,numprocs-2 + efnum(i)=efindex(i+1)-efindex(i) + enddo + efnum(numprocs-1)=npoints2-efindex(numprocs-1) + npoints1by5=int(npoints1/5.+.5) +! +! do the calculations and write the results to the file +! + if(rank.eq.0) then + write(nfoutunit,*) npoints1,npoints2 + write(nfoutunit,*) nsp + do i=1,nsp + write(nfoutunit,'(3e13.5)') xplot(1,i),xplot(2,i),xplot(3,i) + enddo + time1=mytime() + endif + xg(gcoord(3))=nfplanepos + newcalc=0 + do i=1,npoints1 + xg(gcoord(1))=nfplanevert(1,1)+deltax*dble(i-1) + xgp(gcoord(1))=nfplanevert0(1,1)+deltax*dble(i-1) + efieldrowt=0.d0 + efieldrow=0.d0 + hfieldrowt=0.d0 + hfieldrow=0.d0 + do j=efindex(rank)+1,efindex(rank)+efnum(rank) + xg(gcoord(2))=nfplanevert(2,1)+deltax*dble(j-1) + call nearfieldpointcalc(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + gamma,epspw,xg,newcalc,efieldrowt(:,j),hfieldrowt(:,j)) + enddo + call ms_mpi(mpi_command='barrier') + call ms_mpi(mpi_command='reduce',mpi_send_buf_dc=efieldrowt,mpi_recv_buf_dc=efieldrow,& + mpi_number=np23,mpi_rank=0,mpi_operation=ms_mpi_sum) + if(nfoutdata.ge.2) then + call ms_mpi(mpi_command='reduce',mpi_send_buf_dc=hfieldrowt,mpi_recv_buf_dc=hfieldrow,& + mpi_number=np23,mpi_rank=0,mpi_operation=ms_mpi_sum) + endif + if(rank.eq.0) then + do j=1,npoints2 + xgp(gcoord(2))=nfplanevert0(2,1)+deltax*dble(j-1) + if(nfoutdata.eq.0) then + esquare=dot_product(efieldrow(:,j),efieldrow(:,j)) + write(nfoutunit,'(2f9.4,e13.5)') xgp(gcoord(1)),xgp(gcoord(2)),esquare + elseif(nfoutdata.eq.1) then + write(nfoutunit,'(2f9.4,6e13.5)') xgp(gcoord(1)),xgp(gcoord(2)),efieldrow(:,j) + else + write(nfoutunit,'(2f9.4,12e13.5)') xgp(gcoord(1)),xgp(gcoord(2)),efieldrow(:,j), & + hfieldrow(:,j) + endif + enddo + if(mod(i,npoints1by5).eq.0) then + k=i/npoints1by5 + time2=(mytime()-time1)*dble(5-k)/dble(k) + call timewrite(runprintunit,' estimated time remaining:',time2) + endif + endif + enddo + deallocate(efindex,efnum,efieldrow,efieldrowt,hfieldrow,hfieldrowt) + end subroutine nearfieldgridcalc +! +! nearfieldaverage is an MPI--enabled subroutine for calculating average field +! values along a line. +! + subroutine nearfieldaverage(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + nfplane,nfplaneposstart0,nfplaneposend0,numberplanes,nfplanevert0,gbfocus, & + deltax,gamma,epspw,runprintunit,efieldavez,hfieldavez,svecavez) + use mpidefs + use mpidata + use intrinsics + use specialfuncs + use spheredata + use miecoefdata + use numconstants + implicit none + integer :: nsphere,neqns,nodr(nsphere),nfplane,runprintunit,npoints1,npoints2, & + npoints,i,j,k,np23,gcoord(3),rank,numprocs,nrowperproc,nrowrem, & + npoints1by5,plotincfield,nsp,nfoutunit,nfoutdata,newcalc,nsend + integer :: numberplanes + real (8) :: alpha,beta,cbeam,xsp(nsphere),rpos(3,nsphere),nfplanepos,& + nfplanevert(2,2),frowperproc,rowsum,xg(3),xgp(3),deltax,gamma,epspw, & + time1,time2,xplot(3,nsphere),xi0,ri0,esquare,xgpmax(3),rplot, & + gbfocus(3),nfplanepos0,nfplanevert0(2,2),nfplaneposstart,nfplaneposend, & + deltanfplane,nfplaneposstart0,nfplaneposend0,svec(3),svecave(3) + real (8) :: svecavez(3,numberplanes) + real(8), allocatable :: xypoint(:,:) + complex(8) :: amnp(neqns,2),ri(2,nsphere),efield(3),hfield(3),hfieldave(3),efieldave(3) + complex(8) :: efieldavez(3,numberplanes),hfieldavez(3,numberplanes) + integer, allocatable :: efindex(:),efnum(:) + call ms_mpi(mpi_command='size',mpi_size=numprocs) + call ms_mpi(mpi_command='rank',mpi_rank=rank) +! +! determine the plane +! + if(nfplane.eq.1) then + gcoord=(/2,3,1/) + elseif(nfplane.eq.2) then + gcoord=(/3,1,2/) + else + gcoord=(/1,2,3/) + endif +! +! shift the coordinates to gb focal origin +! + nfplanevert(1,1)=nfplanevert0(1,1)-gbfocus(gcoord(1)) + nfplanevert(1,2)=nfplanevert0(1,2)-gbfocus(gcoord(1)) + nfplanevert(2,1)=nfplanevert0(2,1)-gbfocus(gcoord(2)) + nfplanevert(2,2)=nfplanevert0(2,2)-gbfocus(gcoord(2)) + nfplaneposstart=nfplaneposstart0-gbfocus(gcoord(3)) + nfplaneposend=nfplaneposend0-gbfocus(gcoord(3)) + xg(gcoord(3))=nfplanepos +! +! determine the number of points +! + npoints1=nint((nfplanevert(1,2)-nfplanevert(1,1))/deltax)+1 + npoints2=nint((nfplanevert(2,2)-nfplanevert(2,1))/deltax)+1 + npoints=npoints1*npoints2 + allocate(efindex(0:numprocs-1),efnum(0:numprocs-1),xypoint(2,npoints)) + frowperproc=dble(npoints)/dble(numprocs) + rowsum=0. + do i=0,numprocs-1 + efindex(i)=floor(rowsum) + rowsum=rowsum+frowperproc + enddo + do i=0,numprocs-2 + efnum(i)=efindex(i+1)-efindex(i) + enddo + efnum(numprocs-1)=npoints-efindex(numprocs-1) + + xgp(gcoord(3))=max(abs(nfplaneposstart),abs(nfplaneposend)) + rplotmax=0.d0 + xgpmax=0.d0 + k=0 + do i=1,npoints1 + xgp(gcoord(1))=nfplanevert(1,1)+deltax*dble(i-1) + do j=1,npoints2 + xgp(gcoord(2))=nfplanevert(2,1)+deltax*dble(j-1) + k=k+1 + xypoint(1,k)=xgp(gcoord(1)) + xypoint(2,k)=xgp(gcoord(2)) + rplot=sqrt(dot_product(xgp,xgp)) + if(rplot.gt.rplotmax) then + rplotmax=rplot + xgpmax=xgp + endif + enddo + enddo + newcalc=1 + call nearfieldpointcalc(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + gamma,epspw,xgpmax,newcalc,efield,hfield) + newcalc=0 + + do k=1,numberplanes + if(numberplanes.eq.1) then + nfplanepos=nfplaneposstart + else + nfplanepos=nfplaneposstart+(nfplaneposend-nfplaneposstart)*(k-1)/dble(numberplanes-1) + endif +! +! find the maximum point-to-target origin distance and initialize the field calculation +! + xg(3)=nfplanepos + efieldave=0. + hfieldave=0. + svecave=0. + do i=efindex(rank)+1,efindex(rank)+efnum(rank) + xg(gcoord(1))=xypoint(1,i) + xg(gcoord(2))=xypoint(2,i) + efield=0.d0 + hfield=0.d0 + call nearfieldpointcalc(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,ri,amnp, & + gamma,epspw,xg,newcalc,efield,hfield) + efieldave=efieldave+efield + hfieldave=hfieldave+hfield + hfield=conjg(hfield)/2.d0 + svec(1)=-efield(3)*hfield(2)+efield(2)*hfield(3) + svec(2)=efield(3)*hfield(1)-efield(1)*hfield(3) + svec(3)=-efield(2)*hfield(1)+efield(1)*hfield(2) + svecave=svecave+svec + enddo + call ms_mpi(mpi_command='barrier') + efield=0.d0 + hfield=0.d0 + svec=0.d0 + call ms_mpi(mpi_command='reduce',mpi_send_buf_dc=efieldave,mpi_recv_buf_dc=efield,& + mpi_number=3,mpi_rank=0,mpi_operation=ms_mpi_sum) + call ms_mpi(mpi_command='reduce',mpi_send_buf_dc=hfieldave,mpi_recv_buf_dc=hfield,& + mpi_number=3,mpi_rank=0,mpi_operation=ms_mpi_sum) + call ms_mpi(mpi_command='reduce',mpi_send_buf_dp=svecave,mpi_recv_buf_dp=svec,& + mpi_number=3,mpi_rank=0,mpi_operation=ms_mpi_sum) + call ms_mpi(mpi_command='barrier') + if(rank.eq.0) then + efield=efield/dble(npoints) + hfield=hfield/dble(npoints) + svec=svec/dble(npoints) + efieldavez(:,k)=efield + hfieldavez(:,k)=hfield + svecavez(:,k)=svec + i=gcoord(3) + write(runprintunit,'('' plane:'',i5,f9.3,2e12.4)') k,nfplanepos, & + svec(i) + call flush(runprintunit) + endif + enddo + nsend=3*numberplanes + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=efieldavez, & + mpi_number=nsend,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=hfieldavez, & + mpi_number=nsend,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=svecavez, & + mpi_number=nsend,mpi_rank=0) + call ms_mpi(mpi_command='barrier') + + deallocate(efindex,efnum,xypoint) + end subroutine nearfieldaverage + + + end module nearfield +! +! module solver: subroutines for solving interaction equations for fixed orientation +! and T matrix problems +! +! +! last revised: 15 January 2011 +! + module solver + implicit none + + contains +! +! tmatrixsoln: calculation of T matrix via solution of interaction equations for +! a generalized plane wave expansion +! +! +! original: 15 January 2011 +! revised: 21 February 2011: call for sphereqeff changed +! + subroutine tmatrixsoln(neqns,nsphere,nodr,nodrt,xsp,rpos,epssoln,epscon,niter,& + calctmatrix,tmatrixfile,fftranpresent,niterstep,qext,qabs,qsca,istat) + use mpidefs + use mpidata + use intrinsics + use numconstants + use specialfuncs + use miecoefdata + use spheredata + use translation + use scatprops + implicit none + integer :: iter,niter,neqns,nsphere,nodr(nsphere),ntran(nsphere),nodrt, & + nodrmax,i,ierr,istat,m,n,p,k,l,q,noff,nblk,ma,na,ka,la,mn,istart,iunit, & + rank,iexit(1),calctmatrix,lt,kt,qt,nt,mt,it,nodrtt,lstart(1),numsolns,isoln, & + isolnstart,igroup,ngroup,rgrank,lold,grank,nsend,nodrta(1), & + fftranpresent,niterstep + integer, allocatable :: lindex(:),kindex(:) + real(8) :: eps,err,qext(nsphere),qabs(nsphere),qsca(nsphere),xsp(nsphere),xv, & + rpos(3,nsphere),xij(3),qabsklq(nsphere),qscaklq(nsphere),qextklq(nsphere), & + f2,qexttot,qabstot,qscatot,qextold(1),qscaold(1),errqe,errqs, & + timetran,timesolve,time1,time2,epssoln,epscon,dtemp(4),timeorder,& + at1,at2,at3,at4 + real(8) :: qextl(nsphere),qabsl(nsphere),qscal(nsphere) + real(8), allocatable :: qextgroup(:,:),qabsgroup(:,:),qscagroup(:,:) + complex(8) :: amnp(neqns),pmnp(neqns),pmnpan(neqns) + complex(8), allocatable :: pmnp0(:,:,:),ac(:,:,:,:),pmnpt(:,:,:),amnp0(:,:,:), & + amnp0group(:,:,:) + character*30 :: tmatrixfile + character*4 :: timeunit + data istart,iexit/1,0/ + rank=base_rank + rgrank=root_group_rank + grank=group_rank + ngroup=number_groups + call getrunparameters(run_print_unit=iunit) + xv=(sum(xsp**3.d0))**(1.d0/3.d0) + nodrmax=maxval(nodr) + qext=0.d0 + qabs=0.d0 + qsca=0.d0 + qextold=0.d0 + qscaold=0.d0 +! +! perform T matrix file operations as needed +! + if(rank.eq.0) then + if(calctmatrix.eq.1) then + open(3,file=tmatrixfile) + write(3,'(i4)') nodrt + lstart(1)=1 + else + open(3,file=tmatrixfile) + write(iunit,'('' finding end of record to file '',a)') tmatrixfile + read(3,*) nodrtt + do l=1,nodrt + do k=-l,l + do q=1,2 + read(3,'(3i5)',end=20,err=20) lt,kt,qt + do n=1,l + do m=-n,n + read(3,'(2i5,4e17.9)',end=20,err=20) nt,mt,at1,at2,at3,at4 + enddo + enddo + enddo + enddo + do i=1,nsphere + read(3,'(i5,3e17.9)',end=20,err=20) it,qextl(i),qabsl(i),qscal(i) + enddo + qext=qext+qextl + qabs=qabs+qabsl + qsca=qsca+qscal + enddo +20 close(3) + open(3,file=tmatrixfile) + qextold(1)=0.d0 + qabstot=0.d0 + do i=1,nsphere + qextold=qextold+qext(i)*xsp(i)*xsp(i)/xv/xv + qabstot=qabstot+qabs(i)*xsp(i)*xsp(i)/xv/xv + enddo + qscaold(1)=qextold(1)-qabstot + lstart(1)=lt + read(3,*) nodrtt + write(iunit,'('' calculations begin with order '',i5)') lstart(1) + do l=1,lstart(1)-1 + do k=-l,l + do q=1,2 + read(3,'(3i5)') lt,kt,qt + do n=1,l + do m=-n,n + read(3,'(2i5,4e17.9)') nt,mt,at1,at2,at3,at4 + enddo + enddo + enddo + enddo + do i=1,nsphere + read(3,'(i5,3e17.9)') it,at1,at2,at3 + enddo + enddo + endif + endif + call ms_mpi(mpi_command='bcast',mpi_send_buf_i=lstart,mpi_number=1,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=qextold,mpi_number=1,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=qscaold,mpi_number=1,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=qext,mpi_number=nsphere,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=qabs,mpi_number=nsphere,mpi_rank=0) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dp=qsca,mpi_number=nsphere,mpi_rank=0) + call ms_mpi(mpi_command='barrier') + allocate(amnp0group(2,nodrt*(nodrt+2),0:ngroup-1),qextgroup(nsphere,0:ngroup-1), & + qabsgroup(nsphere,0:ngroup-1),qscagroup(nsphere,0:ngroup-1)) + numsolns=2*nodrt*(nodrt+2) + allocate(lindex(numsolns),kindex(numsolns)) +! +! find the starting point +! + i=0 + do l=1,nodrt + do k=-l,l + do q=1,2 + i=i+1 + lindex(i)=l + kindex(i)=k + enddo + enddo + enddo + do i=1,numsolns + if(lindex(i).eq.lstart(1).and.kindex(i).eq.-lstart(1)) exit + enddo + isolnstart=i + qextl=0.d0 + qabsl=0.d0 + qscal=0.d0 + lold=0 +! +! begin the loop over RHS of the interaction equations. The solutions are distributed +! among ngroup groups of processors +! + do isoln=isolnstart,numsolns,ngroup + if(rank.eq.0) timeorder=mytime() + do igroup=0,ngroup-1 + l=lindex(isoln+igroup) + k=kindex(isoln+igroup) + q=mod(isoln+igroup-1,2)+1 +! +! calculate the RHS +! + if(l.eq.-k.and.q.eq.1) then + if(allocated(ac)) deallocate(ac,amnp0) + allocate(ac(2,nodrmax*(nodrmax+2),-l:l,nsphere),amnp0(0:l+1,l,2)) + do i=1,nsphere + xij=rpos(:,i) + call gentrancoef(1,xij,(1.d0,0.d0),1,nodrmax,l,l,0,0,ac(1,1,-l,i)) + enddo + endif + if(igroup.eq.rgrank) then + if(k.le.-1) then + ka=l+1 + la=-k + else + ka=k + la=l + endif + noff=0 + do i=1,nsphere + nblk=nodr(i)*(nodr(i)+2)*2 + allocate(pmnp0(0:nodr(i)+1,nodr(i),2)) + do p=1,2 + do n=1,nodr(i) + do m=-n,n + mn=n*(n+1)+m + if(m.le.-1) then + ma=n+1 + na=-m + else + ma=m + na=n + endif + pmnp0(ma,na,p)=ac(abs(p-q)+1,mn,k,i) + enddo + enddo + enddo + pmnp(noff+1:noff+nblk)=reshape(pmnp0,(/nblk/)) + deallocate(pmnp0) + noff=noff+nblk + enddo +! +! multiply RHS by mie coefficients +! + call miecoeffmult(1,nsphere,neqns,pmnp,pmnpan) + amnp=pmnpan +! +! call the solver +! + if(fftranpresent.eq.1) then + call cbicgff(neqns,nsphere,niter,epssoln,pmnpan,amnp,0, & + niterstep,iter,err) + else + call cbicg(neqns,nsphere,niter,epssoln,pmnpan,amnp,0,iter,err) + endif + if(iter.gt.niter.or.err.gt.epssoln) istat=1 + call sphereqeff(nsphere,neqns,nodr,nodrmax,xsp,amnp,amnp, & + pmnp,pmnp,qextklq,qabsklq,qscaklq) + qextgroup(1:nsphere,igroup)=qextklq(1:nsphere) + qabsgroup(1:nsphere,igroup)=qabsklq(1:nsphere) + qscagroup(1:nsphere,igroup)=qscaklq(1:nsphere) +! +! compute the target-based expansion +! + ntran=l + amnp0=0.d0 + call amncommonorigin(neqns,nsphere,nodr,ntran,l,rpos, & + amnp,amnp0) + do n=1,l + do m=-n,n + if(m.le.-1) then + ma=n+1 + na=-m + else + ma=m + na=n + endif + mn=n*(n+1)+m + do p=1,2 + amnp0group(p,mn,igroup)=amnp0(ma,na,p) + enddo + enddo + enddo + endif + enddo +! +! send the solutions to the rank 0 processor +! + call ms_mpi(mpi_command='barrier') + if(grank.eq.0) then + if(rank.ne.0) then + l=lindex(isoln+rgrank) + nblk=l*(l+2) + nsend=2*nblk + call ms_mpi(mpi_command='send',mpi_send_buf_dc=amnp0group(1,1,rgrank),& + mpi_number=nsend,mpi_rank=0,mpi_comm=root_group_comm) + call ms_mpi(mpi_command='send',mpi_send_buf_dp=qextgroup(1,rgrank),& + mpi_number=nsphere,mpi_rank=0,mpi_comm=root_group_comm) + call ms_mpi(mpi_command='send',mpi_send_buf_dp=qabsgroup(1,rgrank),& + mpi_number=nsphere,mpi_rank=0,mpi_comm=root_group_comm) + call ms_mpi(mpi_command='send',mpi_send_buf_dp=qscagroup(1,rgrank),& + mpi_number=nsphere,mpi_rank=0,mpi_comm=root_group_comm) + else + do igroup=1,ngroup-1 + l=lindex(isoln+igroup) + nblk=l*(l+2) + nsend=2*nblk + call ms_mpi(mpi_command='recv',mpi_recv_buf_dc=amnp0group(1,1,igroup),& + mpi_number=nsend,mpi_rank=igroup,mpi_comm=root_group_comm) + call ms_mpi(mpi_command='recv',mpi_recv_buf_dp=qextgroup(1,igroup),& + mpi_number=nsphere,mpi_rank=igroup,mpi_comm=root_group_comm) + call ms_mpi(mpi_command='recv',mpi_recv_buf_dp=qabsgroup(1,igroup),& + mpi_number=nsphere,mpi_rank=igroup,mpi_comm=root_group_comm) + call ms_mpi(mpi_command='recv',mpi_recv_buf_dp=qscagroup(1,igroup),& + mpi_number=nsphere,mpi_rank=igroup,mpi_comm=root_group_comm) + enddo + endif + endif + call ms_mpi(mpi_command='barrier') +! +! write results, check for convergence +! + if(rank.eq.0) then + do igroup=0,ngroup-1 + l=lindex(isoln+igroup) + k=kindex(isoln+igroup) + q=mod(isoln+igroup-1,2)+1 + qextl=qextl+qextgroup(1:nsphere,igroup) + qabsl=qabsl+qabsgroup(1:nsphere,igroup) + qscal=qscal+qscagroup(1:nsphere,igroup) + qext=qext+qextgroup(1:nsphere,igroup) + qabs=qabs+qabsgroup(1:nsphere,igroup) + qsca=qsca+qscagroup(1:nsphere,igroup) + write(3,'(3i5)') l,k,q + do n=1,l + do m=-n,n + mn=n*(n+1)+m + write(3,'(2i5,4e17.9)') n,m,amnp0group(1,mn,igroup), & + amnp0group(2,mn,igroup) + enddo + enddo + if(istart.eq.1.and.igroup.eq.0) then + time1=mytime()-timeorder + call timewrite(iunit,' time per group solution:',time1) + time2=time1*dble(numsolns-isolnstart)/dble(ngroup) + call timewrite(iunit,' estimated t matrix calcuation time:',time2) + write(iunit,'('' n # its qext qabs'',& + &'' qsca error est. time rem.'')') + call flush(iunit) + istart=0 + endif + if(igroup.eq.0) then + timeorder=mytime()-timeorder + time2=timeorder*dble(numsolns-isoln)/dble(ngroup) + if(time2.gt.3600.d0) then + time2=time2/3600.d0 + timeunit=' hrs' + elseif(time2.gt.60.d0) then + time2=time2/60.d0 + timeunit=' min' + else + timeunit=' sec' + endif + endif + iexit(1)=0 + if(k.eq.l.and.q.eq.2) then + qexttot=0.d0 + qabstot=0.d0 + do i=1,nsphere + qexttot=qexttot+qext(i)*xsp(i)*xsp(i)/xv/xv + qabstot=qabstot+qabs(i)*xsp(i)*xsp(i)/xv/xv + write(3,'(i5,3e17.9)') i,qextl(i),qabsl(i),qscal(i) + enddo + qextl=0.d0 + qabsl=0.d0 + qscal=0.d0 + qscatot=qexttot-qabstot + errqe=qexttot-qextold(1) + errqs=qscatot-qscaold(1) + err=max(errqe,errqs) + write(iunit,'(i4,i5,4e13.5,f8.2,a4)') l,iter,qexttot,qabstot, & + qscatot,err,time2,timeunit + call flush(iunit) + qextold(1)=qexttot + qscaold(1)=qscatot + if(err.le.epscon) iexit(1)=1 + endif + if(iexit(1).eq.1) then + nodrt=l + exit + endif + enddo + endif + call ms_mpi(mpi_command='bcast',mpi_send_buf_i=iexit,mpi_number=1,mpi_rank=0) + call ms_mpi(mpi_command='barrier') + if(iexit(1).eq.1) then +! +! solution has converged +! + deallocate(amnp0group,qextgroup,qabsgroup,qscagroup,lindex,kindex,ac,amnp0) + nodrta(1)=nodrt + call ms_mpi(mpi_command='bcast',mpi_send_buf_i=nodrta,mpi_number=1,mpi_rank=0) + nodrt=nodrta(1) + if(rank.eq.0) then + write(iunit,'('' T matrix converged, order:'',i5)') nodrt + close(3) + open(3,file=tmatrixfile,form='formatted',access='direct',recl=4) + write(3,'(i4)',rec=1) nodrt + close(3) + endif + return + endif + enddo + deallocate(amnp0group,qextgroup,qabsgroup,qscagroup,lindex,kindex,ac,amnp0) + if(rank.eq.0) then + write(*,'('' T matrix did not converge to set epsilon'')') + close(3) + endif + end subroutine tmatrixsoln +! +! solution of interaction equations for a fixed orientation +! +! +! original: 15 January 2011 +! revised: 21 February 2011: modification of efficiency calculation, to calculate +! polarized components +! 30 March 2011: took out gbfocus argument: this is not needed since positions are defined +! relative to the gb focus. +! 20 April 2011: used 2-group MPI formulation +! + subroutine fixedorsoln(neqns,nsphere,nodr,alpha,beta,cbeam,xsp,rpos,& + eps,epstran,niter,amnp,qext,qabs,qsca,maxerr,maxiter,iterwrite, & + fftranpresent,niterstep,istat) + use mpidefs + use mpidata + use intrinsics + use numconstants + use specialfuncs + use miecoefdata + use translation + use scatprops + implicit none + integer :: iter,niter,neqns,nodrmax,k,nsphere,i,ierr,istat,rank,maxiter,iterwrite + integer :: nodr(nsphere),m1,n1,p,rgrank,grank,ngroup,sendrank,numprocs, & + fftranpresent,niterstep + real(8) :: alpha,beta,eps,err,qext(nsphere,3),maxerr,& + qabs(nsphere,3),qsca(nsphere,3),cbeam,gbfocus(3),epstran + real(8) :: xsp(nsphere), rpos(3,nsphere),maxerra(1) + complex(8) :: amnp(neqns,2) + complex(8), allocatable :: pmnp(:,:),pmnpan(:) + rank=base_rank + rgrank=root_group_rank + grank=group_rank + ngroup=number_groups + numprocs=number_proc + sendrank=numprocs/2 + nodrmax=maxval(nodr) + allocate(pmnp(neqns,2)) + gbfocus=0.d0 + if(cbeam.eq.0.d0) then + call sphereplanewavecoef(nsphere,neqns,nodr,nodrmax,alpha,beta,rpos,pmnp) + else + call spheregaussianbeamcoef(nsphere,neqns,nodr,alpha,beta,cbeam, & + rpos,gbfocus,epstran,pmnp) + endif + istat=0 + maxiter=0 + maxerr=0. +! +! calculate the two solutions +! + allocate(pmnpan(neqns)) + if(ngroup.eq.1) then + do k=1,2 + call miecoeffmult(1,nsphere,neqns,pmnp(1,k),pmnpan) + amnp(1:neqns,k)=pmnpan(1:neqns) + if(fftranpresent.eq.1) then + call cbicgff(neqns,nsphere,niter,eps,pmnpan,amnp(1,k),iterwrite, & + niterstep,iter,err) + else + call cbicg(neqns,nsphere,niter,eps,pmnpan,amnp(1,k),iterwrite, & + iter,err) + endif + maxiter=max(iter,maxiter) + maxerr=max(err,maxerr) + if(iter.gt.niter.or.err.gt.eps) istat=1 + call ms_mpi(mpi_command='barrier') + enddo + else + k=rgrank+1 + call miecoeffmult(1,nsphere,neqns,pmnp(1,k),pmnpan) + amnp(1:neqns,k)=pmnpan(1:neqns) + if(fftranpresent.eq.1) then + call cbicgff(neqns,nsphere,niter,eps,pmnpan,amnp(1,k),iterwrite, & + niterstep,iter,err) + else + call cbicg(neqns,nsphere,niter,eps,pmnpan,amnp(1,k),iterwrite, & + iter,err) + endif + maxiter=max(iter,maxiter) + maxerr=max(err,maxerr) + call ms_mpi(mpi_command='barrier') + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=amnp(1,2),& + mpi_number=neqns,mpi_rank=sendrank) + endif + deallocate(pmnpan) +! +! efficiency factor calculations +! + call sphereqeff(nsphere,neqns,nodr,nodrmax,xsp,amnp(1,1),amnp(1,1), & + pmnp(1,1),pmnp(1,1),qext(1,1),qabs(1,1),qsca(1,1)) + call sphereqeff(nsphere,neqns,nodr,nodrmax,xsp,amnp(1,2),amnp(1,2), & + pmnp(1,2),pmnp(1,2),qext(1,2),qabs(1,2),qsca(1,2)) + call sphereqeff(nsphere,neqns,nodr,nodrmax,xsp,amnp(1,1),amnp(1,2), & + pmnp(1,1),pmnp(1,2),qext(1,3),qabs(1,3),qsca(1,3)) + call ms_mpi(mpi_command='barrier') + deallocate(pmnp) + end subroutine fixedorsoln +! +! hybrid bcgm, using far field translation +! november 2011 +! + subroutine cbicgff(neqns,nsphere,niter,eps,pnp,anp,iterwrite,niterstep,iter,err) + use mpidefs + use mpidata + use intrinsics + use spheredata + use miecoefdata + use numconstants + use specialfuncs + use translation + implicit none + integer :: neqns,niter,iter,nsphere,writetime,nodr(nsphere),noff(nsphere+1),& + nblk(nsphere),rank,ierr,iexit,i,j,m,n,p,iunit,iterwrite,ip1,ip2, & + np1,np2,nsend,numprocs,grank,istore,itermax,istep,niterstep + real(8) :: eps,err,erra(1),enorm,time1,time2,epsstep,errstep + complex(8) :: pnp(neqns),anp(neqns),gnp(neqns),gnpold(neqns),pgnp(neqns), & + cr(neqns) + data writetime/0/ + rank=base_rank + grank=group_rank + numprocs=proc_per_group + call getmiedata(sphere_order=nodr,sphere_block=nblk,sphere_block_offset=noff) + if(rank.eq.0) then + call getrunparameters(run_print_unit=iunit) + endif + err=0.d0 + iter=0 + enorm=dot_product(pnp,pnp) + gnpold=0.d0 + if(enorm.eq.0.d0) return + gnp=0.d0 + ip1=mpi_sphere_index(grank)+1 + ip2=mpi_sphere_index(grank)+mpi_sphere_number(grank) + do i=ip1,ip2 + do j=1,nsphere + if(i.ne.j) then + call fftranslationerror(anp(noff(j)+1:noff(j)+nblk(j)), & + gnp(noff(i)+1:noff(i)+nblk(i)),j,i,nodr(j),nodr(i)) + endif + enddo + enddo + do i=0,numprocs-1 + ip1=mpi_sphere_index(i)+1 + ip2=mpi_sphere_index(i)+mpi_sphere_number(i) + np1=noff(ip1)+1 + np2=noff(ip2)+nblk(ip2) + nsend=np2-np1+1 + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=gnp(np1:np2),mpi_number=nsend, & + mpi_rank=i,mpi_comm=group_comm) + enddo + call miecoeffmult(1,nsphere,neqns,gnp,gnp) + + iter=0 + epsstep=eps + istep=0 + do + istep=istep+1 + gnpold=gnp + pgnp=pnp+gnp + call cbicg(neqns,nsphere,niterstep,epsstep,pgnp,anp,0,itermax,errstep) + iter=iter+min(itermax,niterstep) + gnp=0.d0 + ip1=mpi_sphere_index(grank)+1 + ip2=mpi_sphere_index(grank)+mpi_sphere_number(grank) + do i=ip1,ip2 + do j=1,nsphere + if(i.ne.j) then + call fftranslationerror(anp(noff(j)+1:noff(j)+nblk(j)), & + gnp(noff(i)+1:noff(i)+nblk(i)),j,i,nodr(j),nodr(i)) + endif + enddo + enddo + do i=0,numprocs-1 + ip1=mpi_sphere_index(i)+1 + ip2=mpi_sphere_index(i)+mpi_sphere_number(i) + np1=noff(ip1)+1 + np2=noff(ip2)+nblk(ip2) + nsend=np2-np1+1 + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=gnp(np1:np2),mpi_number=nsend, & + mpi_rank=i,mpi_comm=group_comm) + enddo + call miecoeffmult(1,nsphere,neqns,gnp,gnp) + err=dot_product(gnp-gnpold,gnp-gnpold)/enorm + if(rank.eq.0.and.iterwrite.eq.1) then + write(iunit,'('' step,iteration,bcgm err,correc err:'',2i5,2e13.5)') & + istep,iter,errstep,err + call flush(iunit) + endif + epsstep=eps + err=max(err,errstep) + if((err.lt.eps).or.iter.gt.niter) exit + enddo + end subroutine cbicgff + +! +! iteration solver +! generalized complex biconjugate gradient method +! original code: Piotr Flatau, although not much remains. +! specialized to the multiple sphere problem +! +! +! last revised: 15 January 2011 +! october 2011: translation calls modified +! + subroutine cbicg(neqns,nsphere,niter,eps,pnp,anp,iterwrite,iter,err) + use mpidefs + use mpidata + use intrinsics + use spheredata + use miecoefdata + use numconstants + use specialfuncs + use translation + implicit none + integer :: neqns,niter,iter,nsphere,writetime,nodr(nsphere),noff(nsphere+1),& + nblk(nsphere),rank,ierr,iexit,i,j,m,n,p,iunit,iterwrite,ip1,ip2, & + np1,np2,nsend,numprocs,grank,istore + real(8) :: eps,err,erra(1),enorm,time1,time2 + complex(8) :: pnp(neqns),anp(neqns) + complex(8) :: cak(1),csk,cbk,csk2(1) + complex(8) :: cr(neqns),cp(neqns),cw(neqns),cq(neqns),cap(neqns),caw(neqns), & + crt(neqns),capt(neqns),cawt(neqns),ccw(neqns) + data writetime/0/ + rank=base_rank + grank=group_rank + numprocs=proc_per_group + call getmiedata(sphere_order=nodr,sphere_block=nblk,sphere_block_offset=noff) + ip1=mpi_sphere_index(grank)+1 + ip2=mpi_sphere_index(grank)+mpi_sphere_number(grank) + np1=noff(ip1)+1 + np2=noff(ip2)+nblk(ip2) + nsend=np2-np1+1 + crt=0.d0 + iexit=0 + if(rank.eq.0) then + call getrunparameters(run_print_unit=iunit) + endif + err=0.d0 + iter=0 + enorm=dot_product(pnp,pnp) + cr=0.d0 + if(enorm.eq.0.d0) return + do i=ip1,ip2 + do j=1,nsphere + if(i.ne.j) then + call rottranjtoi(anp(noff(j)+1:noff(j)+nblk(j)), & + cr(noff(i)+1:noff(i)+nblk(i)),j,i,nodr(j),nodr(i),1,1) + endif + enddo + enddo + do i=0,numprocs-1 + ip1=mpi_sphere_index(i)+1 + ip2=mpi_sphere_index(i)+mpi_sphere_number(i) + np1=noff(ip1)+1 + np2=noff(ip2)+nblk(ip2) + nsend=np2-np1+1 + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=cr(np1:np2),mpi_number=nsend, & + mpi_rank=i,mpi_comm=group_comm) + enddo + call miecoeffmult(1,nsphere,neqns,cr,cr) + cr=pnp-anp+cr + cq=conjg(cr) + cw=cq + cp=cr + csk=dot_product(conjg(cr),cr) + if(cdabs(csk).eq.0.d0) return +! +! here starts the main iteration loop +! + do iter=1,niter + ip1=mpi_sphere_index(grank)+1 + ip2=mpi_sphere_index(grank)+mpi_sphere_number(grank) + np1=noff(ip1)+1 + np2=noff(ip2)+nblk(ip2) + nsend=np2-np1+1 + cak(1)=(0.d0,0.d0) + cawt=(0.d0,0.d0) + capt=(0.d0,0.d0) + if(rank.eq.0) then + if(writetime.eq.0) time1=mytime() + endif + ccw=conjg(cw) + cap=0.d0 + caw=0.d0 + call miecoeffmult(1,nsphere,neqns,ccw,ccw) + do i=ip1,ip2 + do j=1,nsphere + if(i.ne.j) then + call rottrantwojtoi(cp(noff(j)+1:noff(j)+nblk(j)), & + ccw(noff(j)+1:noff(j)+nblk(j)), & + cap(noff(i)+1:noff(i)+nblk(i)), & + caw(noff(i)+1:noff(i)+nblk(i)), & + j,i,nodr(j),nodr(i)) +! call rottranjtoi(cp(noff(j)+1:noff(j)+nblk(j)), & +! cap(noff(i)+1:noff(i)+nblk(i)),j,i,nodr(j),nodr(i),1,1) +! call rottranjtoi(ccw(noff(j)+1:noff(j)+nblk(j)), & +! caw(noff(i)+1:noff(i)+nblk(i)),j,i,nodr(j),nodr(i),-1,-1) + endif + enddo + enddo + call miecoeffmult(ip1,ip2,neqns,cap,cap) + cap(np1:np2)=cp(np1:np2)-cap(np1:np2) + caw(np1:np2)=cw(np1:np2)-conjg(caw(np1:np2)) + cak(1)=dot_product(cw(np1:np2),cap(np1:np2)) + call ms_mpi(mpi_command='allreduce',mpi_recv_buf_dc=cak,mpi_number=1, & + mpi_operation=ms_mpi_sum,mpi_comm=group_comm) + cak(1)=csk/cak(1) + anp(np1:np2)=anp(np1:np2)+cak(1)*cp(np1:np2) + cr(np1:np2)=cr(np1:np2)-cak(1)*cap(np1:np2) + cq(np1:np2)=cq(np1:np2)-conjg(cak(1))*caw(np1:np2) + csk2(1)=dot_product(cq(np1:np2),cr(np1:np2)) + err=dot_product(cr(np1:np2),cr(np1:np2)) + erra(1)=err + call ms_mpi(mpi_command='allreduce',mpi_recv_buf_dc=csk2,mpi_number=1, & + mpi_operation=ms_mpi_sum,mpi_comm=group_comm) + call ms_mpi(mpi_command='allreduce',mpi_recv_buf_dp=erra,mpi_number=1, & + mpi_operation=ms_mpi_sum,mpi_comm=group_comm) + err=erra(1) + err=err/enorm + if(err.lt. eps) exit + cbk=csk2(1)/csk + cp(np1:np2)=cr(np1:np2)+cbk*cp(np1:np2) + cw(np1:np2)=cq(np1:np2)+conjg(cbk)*cw(np1:np2) + csk=csk2(1) + do i=0,numprocs-1 + ip1=mpi_sphere_index(i)+1 + ip2=mpi_sphere_index(i)+mpi_sphere_number(i) + np1=noff(ip1)+1 + np2=noff(ip2)+nblk(ip2) + nsend=np2-np1+1 + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=cp(np1:np2),mpi_number=nsend, & + mpi_rank=i,mpi_comm=group_comm) + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=cw(np1:np2),mpi_number=nsend, & + mpi_rank=i,mpi_comm=group_comm) + enddo + if(rank.eq.0.and.iter.eq.1.and.writetime.eq.0) then + time2=mytime()-time1 + call timewrite(iunit,' time per iteration:',time2) + writetime=1 + endif + if(rank.eq.0.and.iterwrite.eq.1) then + write(iunit,'('' iter, err:'',i5,e13.5)') iter,err + call flush(iunit) + endif + enddo +! +! arrive here with a converged solution +! + do i=0,numprocs-1 + ip1=mpi_sphere_index(i)+1 + ip2=mpi_sphere_index(i)+mpi_sphere_number(i) + np1=noff(ip1)+1 + np2=noff(ip2)+nblk(ip2) + nsend=np2-np1+1 + call ms_mpi(mpi_command='bcast',mpi_send_buf_dc=anp(np1:np2),mpi_number=nsend, & + mpi_rank=i,mpi_comm=group_comm) + enddo + end subroutine cbicg + + end module solver diff --git a/mstm_gallery.pdf b/mstm_gallery.pdf new file mode 100644 index 0000000..ab6b60e Binary files /dev/null and b/mstm_gallery.pdf differ diff --git a/mstm_guiwindow.ui b/mstm_guiwindow.ui new file mode 100644 index 0000000..f48a559 --- /dev/null +++ b/mstm_guiwindow.ui @@ -0,0 +1,359 @@ + + + mstmGui + + + + 0 + 0 + 599 + 418 + + + + Spectral Multi-Sphere T-Matrix Simulation + + + + + + 400 + 70 + 89 + 23 + + + + Simulate + + + + + + 0 + 20 + 111 + 21 + + + + Material + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 120 + 20 + 211 + 21 + + + + true + + + + + + 10 + 50 + 361 + 91 + + + + Spectral Parameters + + + + + 130 + 30 + 91 + 22 + + + + 3 + + + 0.100000000000000 + + + + + + 130 + 60 + 55 + 22 + + + + + + + 10 + 60 + 111 + 21 + + + + # Samples + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 10 + 30 + 111 + 21 + + + + Wavelengths(um) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 230 + 30 + 21 + 21 + + + + to + + + + + + 250 + 30 + 91 + 22 + + + + 3 + + + 0.100000000000000 + + + + + + + 10 + 150 + 361 + 91 + + + + Spheres (currently only dimers) + + + + + 220 + 60 + 31 + 21 + + + + um + + + + + + 0 + 60 + 111 + 21 + + + + Sphere Spacing + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 0 + 30 + 111 + 21 + + + + # Spheres + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 120 + 60 + 91 + 22 + + + + 4 + + + 0.001000000000000 + + + + + false + + + + 120 + 30 + 55 + 22 + + + + + + + + 10 + 250 + 361 + 111 + + + + Incident Light Parameters + + + + + 20 + 20 + 91 + 21 + + + + alpha (deg.) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 120 + 20 + 91 + 22 + + + + 3 + + + 0.100000000000000 + + + + + + 20 + 50 + 91 + 21 + + + + beta (deg.) + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 120 + 50 + 91 + 22 + + + + 3 + + + 0.100000000000000 + + + + + + + + 0 + 0 + 599 + 22 + + + + + File + + + + + + + + + + true + + + Save Results + + + + + Load Material + + + + + + diff --git a/mstm_materials.py b/mstm_materials.py new file mode 100644 index 0000000..7ce31ed --- /dev/null +++ b/mstm_materials.py @@ -0,0 +1,95 @@ +class MaterialSampleClass: + + #constructor + def __init__(self, l, n): + self.l = l + self.n = n + + #string conversion + def __str__(self): + result = "" + result += str(self.l) + 'um: ' + str(self.n) + return result + +class MaterialClass: + materialList = [] + + def __init__(self, fileName=""): + if fileName == "": + materialList = [] + else: + self.loadFile(fileName) + + #when the material is cast to a string, create the list of refractive indices + def __str__(self): + nSamples = len(self.materialList) + result = "" + for i in range(nSamples): + result += str(self.materialList[i]) + '\n' + return result + + def __len__(self): + return len(self.materialList) + + def __getitem__(self, l): + bigI = smallI = 0; + bigV = 999; + smallV = 0; + #find the smallest sample larger than l + for i in range(len(self.materialList)): + if self.materialList[i].l > l and self.materialList[i].l < bigV: + bigI = i + bigV = self.materialList[i].l + if self.materialList[i].l < l and self.materialList[i].l > smallV: + smallI = i + smallV = self.materialList[i].l + + a = (l - smallV)/(bigV - smallV) + + bigN = self.materialList[bigI].n + smallN = self.materialList[smallI].n + + n = a * bigN + (1 - a) * smallN + + return MaterialSampleClass(l, n) + + + #print(str(self.materialList[smallI].l) + "---" + str(self.materialList[bigI].l)) + + return self.materialList[smallI] + + def add(self, l, n): + m = MaterialSampleClass(l, n) + self.materialList.append(m) + + def clip(self, minLambda, maxLambda): + #this function clips all material samples to the range [minLambda, maxLambda] + self.materialList = list(filter(lambda m: m.l > minLambda, self.materialList)) + self.materialList = list(filter(lambda m: m.l < maxLambda, self.materialList)) + + + def addSolution(self, n): + #places the material in a solution (divide by the solution's n) + for i in range(len(self.materialList)): + self.materialList[i].n = self.materialList[i].n / n + + + + def loadFile(self, fileName): + #open the real refractive index file + irFID = open(fileName, 'r') + #read the first line to get the units (wavelength (um) or wavenumber (cm^2)) + lightUnits = irFID.readline().split('\t', 1)[0] + + #load the material + for line in irFID: + l, n, k = map(float, line.split("\t")) + + #if units are in wavenumber, convert to wavelength + if lightUnits == "nu": + l = l/10000 + + self.add(l, complex(n, k)) + + #close the file + irFID.close() diff --git a/mstm_parameters.py b/mstm_parameters.py new file mode 100644 index 0000000..2e86656 --- /dev/null +++ b/mstm_parameters.py @@ -0,0 +1,96 @@ +class ParameterClass: + #minimum and maximum wavelengths for the simulation + minLambda = 0.300 + maxLambda = 0.700 + #number of spectral samples + nSamples = 40 + + #material file name + matFilename = 'etaSilver.txt' + #are the sphere's in water? + inWater = False + + paramDict = {} + sphereList = [] + + sphereParamNames = ['radius', 'X', 'Y', 'Z', 'n', 'k', 'Xr', 'Xi'] + + def __init__(self, fileName): + self.loadFile(fileName) + + def __getitem__(self, key): + return self.paramDict[key]; + + def __setitem__(self, key, value): + self.paramDict[key] = str(value); + + def clearSpheres(self): + self.sphereList = [] + + def addSphere(self, a, x, y, z, n = 1.0, k=1.0): + s = [a, x, y, z, n, k] + self.sphereList.append(s) + + def loadFile(self, fileName): + inpFID = open(fileName, 'r') + selfparamDict = {} + + while 1: + key = inpFID.readline().strip() + + #deal with sphere sizes and positions + if key == 'sphere_sizes_and_positions': + + while True: + #load the parameters for a sphere + value = inpFID.readline().strip() + if value == 'end_of_options': + break + + self.sphereList.append(value.split(' ')) + + + elif not key: + break + elif key == 'end_of_options': + break + else: + value = inpFID.readline().strip() + self.paramDict[key] = value + + inpFID.close() + + def saveFile(self, fileName): + + #open the output file + outFID = open(fileName, 'w') + + #write the parameters + for key in self.paramDict.keys(): + outFID.write(key + '\n') + outFID.write(self.paramDict[key] + '\n') + + #write the spheres + outFID.write("sphere_sizes_and_positions\n") + for s in self.sphereList: + for p in s: + outFID.write(str(p) + ' ') + outFID.write('\n') + outFID.write("end_of_options") + + + def __str__(self): + #print(self.paramDict) + result = "" + for key in self.paramDict.keys(): + result += key + ": " + self.paramDict[key] + '\n' + + result += "\n" + result += "Spheres:\n" + #iterate through each sphere + for s in self.sphereList: + result += "------------------\n" + for i in range(len(s)): + result += self.sphereParamNames[i] + ": " + str(s[i]) + '\n' + + return result diff --git a/mstm_simparser.py b/mstm_simparser.py new file mode 100644 index 0000000..06a36ea --- /dev/null +++ b/mstm_simparser.py @@ -0,0 +1,46 @@ +class SimParserClass: + + simResults = dict() + + def __init__(self): + self.simResults['lambda'] = list() + self.simResults['extinction_unpolarized'] = list() + self.simResults['extinction_parallel'] = list() + self.simResults['extinction_perpendicular'] = list() + + def parseSimFile(self, l, fileName): + self.simResults['lambda'].append(l) + inFile = open(fileName, 'r') + + while True: + line = inFile.readline().strip() + + if line == 'scattering matrix elements': + break + elif line == 'unpolarized total ext, abs, scat efficiencies, w.r.t. xv, and asym. parm': + values = inFile.readline().strip().split(' ') + self.simResults['extinction_unpolarized'].append(values[0]) + elif line == 'parallel total ext, abs, scat efficiencies': + values = inFile.readline().strip().split(' ') + self.simResults['extinction_parallel'].append(values[0]) + elif line == 'perpendicular total ext, abs, scat efficiencies': + values = inFile.readline().strip().split(' ') + self.simResults['extinction_perpendicular'].append(values[0]) + + def saveFile(self, fileName): + outFile = open(fileName, 'w') + outFile.write(str(self)) + + def __getitem__(self, key): + return self.simResults[key]; + + def __str__(self): + result = ''; + + for i in range(len(self.simResults['lambda'])): + result += str(self.simResults['lambda'][i]) + '\t' + result += str(self.simResults['extinction_unpolarized'][i]) + '\t' + result += str(self.simResults['extinction_parallel'][i]) + '\t' + result += str(self.simResults['extinction_perpendicular'][i]) + '\n' + + return result diff --git a/spectralOut.txt b/spectralOut.txt new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/spectralOut.txt -- libgit2 0.21.4