Commit 13a93f43 authored by steffen.schotthoefer's avatar steffen.schotthoefer
Browse files

Merge branch 'sprint1' into 'develop'

Sprint1 afterparty

See merge request !21
parents 67679152 7452bd51
Pipeline #120269 passed with stage
in 17 minutes
...@@ -321,7 +321,7 @@ TSWLatexianTemp* ...@@ -321,7 +321,7 @@ TSWLatexianTemp*
### Python ### ### Python ###
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/*
*.py[cod] *.py[cod]
*$py.class *$py.class
...@@ -387,6 +387,9 @@ target/ ...@@ -387,6 +387,9 @@ target/
# pyenv # pyenv
.python-version .python-version
# pycharm
.idea/
# pipenv # pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies # However, in case of collaboration, if having platform-specific dependencies or dependencies
...@@ -432,6 +435,9 @@ dmypy.json ...@@ -432,6 +435,9 @@ dmypy.json
# Qt Creator autogenerated files # Qt Creator autogenerated files
# other
*.cflags
*.cxxflags
# A listing of all the files included in the project # A listing of all the files included in the project
*.files *.files
......
image: rtsn/test:latest image: rtsn/test:latest
stages: stages:
- build
- unit_tests - unit_tests
build:
stage: build
script:
- git submodule update --init --recursive
- cd code/build/debug
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=True ../../
- ninja
timeout: 2h
only:
refs:
- master
- merge_requests
changes:
- "code/include/**/*"
- "code/tests/**/*"
- "code/src/**/*"
- "code/CMakeLists.txt"
- "scripts/Dockerfile"
- ".gitmodules"
unit_tests: unit_tests:
stage: unit_tests stage: unit_tests
script: script:
- git submodule update --init --recursive - git submodule update --init --recursive
- cd code/build/release - cd code/build/release
- cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=True ../../ - cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug ../../
- ninja - ninja
- cd ../../bin - OMP_NUM_THREADS=1 ./unit_tests -r junit > unit_tests_report.xml
- ./unit_tests - gcovr -e ../../ext/ -e ../../tests/ -r ../../
timeout: 2h artifacts:
only: when: always
refs: paths:
- master - code/build/release/unit_tests_report.xml
- merge_requests reports:
changes: junit: code/build/release/unit_tests_report.xml
- "code/include/**/*" timeout: 4h
- "code/tests/**/*" rules:
- "code/src/**/*" - if: $CI_PIPELINE_SOURCE == "merge_request_event" || $CI_COMMIT_BRANCH == "master" || $CI_COMMIT_BRANCH == "develop"
- "code/CMakeLists.txt" changes:
- "scripts/Dockerfile" - "code/include/**/*"
- ".gitmodules" - "code/tests/**/*"
- "code/src/**/*"
- "code/CMakeLists.txt"
- "scripts/Dockerfile"
- ".gitmodules"
- if: $CI_PIPELINE_SOURCE == "web"
# RTSN - an HPC Radio Therapy $`S_n`$ framework [![pipeline status](https://git.scc.kit.edu/rtsn/rtsn/badges/master/pipeline.svg)](https://git.scc.kit.edu/rtsn/rtsn/-/commits/master) [![coverage report](https://git.scc.kit.edu/rtsn/rtsn/badges/master/coverage.svg)](https://git.scc.kit.edu/rtsn/rtsn/-/commits/master)
# KiT-RT - an HPC Radio Therapy $`S_n`$ framework
TBD TBD
## What RTSN is capable of ## What KiT-RT is capable of
### Theory ### Theory
TBD TBD
### Examples ### Examples
...@@ -52,17 +54,17 @@ The resulting executable will automatically be placed in the `code/bin` folder. ...@@ -52,17 +54,17 @@ The resulting executable will automatically be placed in the `code/bin` folder.
## Run ## Run
### Local ### Local
Execute the compiled binary and hand over a valid *TOML*-styled config file. Execute the compiled binary from the `bin` folder and hand over a valid *TOML*-styled config file.
Example from inside the `code` directory: Example from inside the `code` directory:
```bash ```bash
./bin/RTSN input/example.cfg ./KiT-RT ../input/example.cfg
``` ```
In order to run the code in parallel execute: In order to run the code in parallel execute:
```bash ```bash
OMP_NUM_THREADS=N mpirun -np J ./bin/RTSN input/example.cfg OMP_NUM_THREADS=N mpirun -np J ./KiT-RT ../input/example.cfg
``` ```
with `N` equal to the number of shared memory threads and `J` equal to the number of distrubuted memory threads. with `N` equal to the number of shared memory threads and `J` equal to the number of distrubuted memory threads.
...@@ -86,8 +88,8 @@ rm -r VTK-8.2.0 VTK-build ...@@ -86,8 +88,8 @@ rm -r VTK-8.2.0 VTK-build
Example for build and run on bwUniCluster: Example for build and run on bwUniCluster:
Get the code Get the code
```bash ```bash
git clone https://git.scc.kit.edu/rtsn/rtsn.git git clone https://git.scc.kit.edu/rtsn/rtsn.git KiT-RT
cd rtsn/ cd KiT-RT/
git submodule init git submodule init
git submodule update git submodule update
``` ```
...@@ -109,13 +111,13 @@ make -j ...@@ -109,13 +111,13 @@ make -j
--- ---
## Tests ## Tests
In order to also compile the unit tests, add `-DBUILD_TESTING=True` to the cmake command, e.g.: After compiling the framework as described above just run:
```bash ```bash
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=True ../../ make test
``` ```
The resulting `unit_tests` executable will also be placed in `/bin`. The `unit_tests` executable will also be placed in in the build folder.
## Continuous Integration (CI) ## Continuous Integration (CI)
Every commit on the master branch will trigger a build test and unit tests. Every commit on the master branch will trigger a build test and unit tests.
...@@ -145,13 +147,13 @@ This last step requires a preceeding `docker login`. Ask Jannick for login crede ...@@ -145,13 +147,13 @@ This last step requires a preceeding `docker login`. Ask Jannick for login crede
## Code structure ## Code structure
**WARNING: is not created automatically - might be out of date!** **WARNING: is not created automatically - might be out of date!**
Reverse engineered plantuml diagram of the current code structure: Reverse engineered plantuml diagram of the current code structure:
![Can't load image](doc/rtsn.svg "UML diagram") ![Can't load image](doc/KiT-RT.svg "UML diagram")
<br/><br/> <br/><br/>
Was created using [hpp2plantuml](https://github.com/thibaultmarin/hpp2plantuml) and [plantuml](https://plantuml.com/), e.g.: Was created using [hpp2plantuml](https://github.com/thibaultmarin/hpp2plantuml) and [plantuml](https://plantuml.com/), e.g.:
```bash ```bash
cd doc cd doc
hpp2plantuml -i "../code/include/*.h" -i "../code/include/*/*.h" -o rtsn.puml hpp2plantuml -i "../code/include/*.h" -i "../code/include/*/*.h" -o KiT-RT.puml
plantuml rtsn.puml -tsvg plantuml KiT-RT.puml -tsvg
``` ```
--- ---
......
cmake_minimum_required( VERSION 3.12.4 ) cmake_minimum_required( VERSION 3.12.4 )
project( RTSN VERSION 0.1.0 LANGUAGES CXX ) project( KiT-RT VERSION 0.1.0 LANGUAGES CXX )
### COMPILER ####################################
set( CMAKE_CXX_STANDARD 17 ) set( CMAKE_CXX_STANDARD 17 )
set( CMAKE_CXX_STANDARD_REQUIRED ON ) set( CMAKE_CXX_STANDARD_REQUIRED ON )
set( KITRT_RELEASE_OPTIONS -march=native -w )
set( KITRT_RELWITHDEBINFO_OPTIONS -march=native -pg -no-pie )
set( KITRT_DEBUG_OPTIONS -Wall -Wextra -Wpedantic )
#################################################
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native -Wno-dev" )
set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -march=native -pg -no-pie" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -Wall" )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin" ) ### LIBRARIES ###################################
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
file( GLOB_RECURSE SRCS RELATIVE ${CMAKE_SOURCE_DIR} "src/*.cpp" "include/*.h" )
include_directories( ${CMAKE_SOURCE_DIR}/include )
add_executable( ${CMAKE_PROJECT_NAME} ${SRCS} )
find_package( Python3 COMPONENTS Interpreter Development NumPy REQUIRED )
include_directories( ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS} )
add_compile_definitions( RTSN_PYTHON_PATH="${CMAKE_SOURCE_DIR}/python" )
find_package( OpenMP REQUIRED ) find_package( OpenMP REQUIRED )
if( OPENMP_FOUND )
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
endif()
find_package( MPI REQUIRED ) find_package( MPI REQUIRED )
include_directories( ${MPI_INCLUDE_PATH} ) include_directories( ${MPI_INCLUDE_PATH} )
...@@ -30,6 +23,15 @@ find_package( LAPACK REQUIRED ) ...@@ -30,6 +23,15 @@ find_package( LAPACK REQUIRED )
include_directories( ${LAPACK_INCLUDE_DIR} ) include_directories( ${LAPACK_INCLUDE_DIR} )
find_package( BLAS ) find_package( BLAS )
find_package( VTK REQUIRED COMPONENTS vtkIOGeometry vtkFiltersCore )
find_package( Python3 COMPONENTS Interpreter Development NumPy REQUIRED )
include_directories( ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS} )
add_compile_definitions( KITRT_PYTHON_PATH="${CMAKE_SOURCE_DIR}/python" )
add_compile_definitions( BLAZE_USE_SHARED_MEMORY_PARALLELIZATION=0 )
message( STATUS "Blaze: Shared memory parallelization disabled" )
if( BLAS_FOUND ) if( BLAS_FOUND )
message( STATUS "Blaze: BLAS mode enabled" ) message( STATUS "Blaze: BLAS mode enabled" )
add_compile_definitions( BLAZE_BLAS_MODE=1 ) add_compile_definitions( BLAZE_BLAS_MODE=1 )
...@@ -38,80 +40,7 @@ else() ...@@ -38,80 +40,7 @@ else()
message( STATUS "Blaze: BLAS mode disabled" ) message( STATUS "Blaze: BLAS mode disabled" )
add_compile_definitions( BLAZE_BLAS_MODE=0 ) add_compile_definitions( BLAZE_BLAS_MODE=0 )
endif() endif()
include( blaze-cache-config )
add_compile_definitions( BLAZE_USE_SHARED_MEMORY_PARALLELIZATION=0 )
set(flag 1)
if (WIN32)
execute_process(COMMAND wmic cpu get L3CacheSize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
if (flag)
execute_process(COMMAND wmic cpu get L2CacheSize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
if (flag)
execute_process(COMMAND wmic cpu get L1CacheSize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
endif (WIN32)
if (UNIX)
execute_process(COMMAND cat /sys/devices/system/cpu/cpu0/cache/index3/size
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
if (flag)
execute_process(COMMAND cat /sys/devices/system/cpu/cpu0/cache/index2/size
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
if (flag)
execute_process(COMMAND cat /sys/devices/system/cpu/cpu0/cache/index1/size
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
endif (UNIX)
if (APPLE)
execute_process(COMMAND sysctl -n hw.l3cachesize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
if (flag)
execute_process(COMMAND sysctl -n hw.l2cachesize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
if (flag)
execute_process(COMMAND sysctl -n hw.l1icachesize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
if (flag EQUAL 0)
math(EXPR tmp ${tmp}/1024) # If successful convert to kibibytes to comply with rest
endif (flag EQUAL 0)
endif (APPLE)
if (flag)
message(WARNING "Cache size not found automatically. Using default value as cache size.")
set(tmp "3072")
endif (flag)
string( REGEX MATCH "([0-9][0-9]+)" tmp ${tmp} )
math( EXPR BLAZE_CACHE_SIZE ${tmp}*1024 )
add_compile_definitions( BLAZE_CACHE_SIZE=${BLAZE_CACHE_SIZE}UL )
message( STATUS "Blaze: Automatic Cache Size Configuration = ${BLAZE_CACHE_SIZE} KiB" )
include_directories( ${CMAKE_SOURCE_DIR}/ext/blaze ) include_directories( ${CMAKE_SOURCE_DIR}/ext/blaze )
add_compile_definitions( METIS_EXPORT= ) add_compile_definitions( METIS_EXPORT= )
...@@ -121,12 +50,14 @@ include_directories( ${ParMETIS_PATH}/include ) ...@@ -121,12 +50,14 @@ include_directories( ${ParMETIS_PATH}/include )
include_directories( ${ParMETIS_PATH}/metis/include ) include_directories( ${ParMETIS_PATH}/metis/include )
add_subdirectory( ${ParMETIS_PATH} ) add_subdirectory( ${ParMETIS_PATH} )
find_package( VTK REQUIRED COMPONENTS vtkIOGeometry vtkFiltersCore HINTS /home/pia/vtk-inst/include/vtk-8.2)
include(${VTK_USE_FILE})
include_directories( ${CMAKE_SOURCE_DIR}/ext/cpptoml/include ) include_directories( ${CMAKE_SOURCE_DIR}/ext/cpptoml/include )
include_directories( ${CMAKE_SOURCE_DIR}/ext/spdlog/include ) include_directories( ${CMAKE_SOURCE_DIR}/ext/spdlog/include )
set( CORE_LIBRARIES ${Python3_LIBRARIES} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${MPI_LIBRARIES} ${VTK_LIBRARIES} OpenMP::OpenMP_CXX parmetis -lstdc++fs )
#################################################
### MISC ########################################
execute_process( execute_process(
COMMAND git rev-parse HEAD COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
...@@ -134,17 +65,42 @@ execute_process( ...@@ -134,17 +65,42 @@ execute_process(
OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_STRIP_TRAILING_WHITESPACE
) )
add_compile_definitions( GIT_HASH="${GIT_HASH}" ) add_compile_definitions( GIT_HASH="${GIT_HASH}" )
#################################################
set( CORE_LIBRARIES ${Python3_LIBRARIES} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${MPI_LIBRARIES} ${VTK_LIBRARIES} OpenMP::OpenMP_CXX parmetis -lstdc++fs )
### BUILD KIT-RT ################################
file( GLOB_RECURSE SRCS RELATIVE ${CMAKE_SOURCE_DIR} "src/*.cpp" "include/*.h" )
include_directories( ${CMAKE_SOURCE_DIR}/include )
add_executable( ${CMAKE_PROJECT_NAME} ${SRCS} ${EXT_SRCS} )
target_link_libraries( ${CMAKE_PROJECT_NAME} ${CORE_LIBRARIES} ) target_link_libraries( ${CMAKE_PROJECT_NAME} ${CORE_LIBRARIES} )
set_target_properties( ${CMAKE_PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin" )
if( BUILD_TESTING ) target_compile_options( ${CMAKE_PROJECT_NAME} PUBLIC "$<$<CONFIG:DEBUG>:${KITRT_DEBUG_OPTIONS}>" )
add_compile_definitions( BUILD_TESTING=1 ) target_compile_options( ${CMAKE_PROJECT_NAME} PUBLIC "$<$<CONFIG:RELWITHDEBINFO>:${KITRT_RELWITHDEBINFO_OPTIONS}>" )
add_subdirectory( ${CMAKE_SOURCE_DIR}/ext/Catch2 ) target_compile_options( ${CMAKE_PROJECT_NAME} PUBLIC "$<$<CONFIG:RELEASE>:${KITRT_RELEASE_OPTIONS}>" )
include_directories( ${CMAKE_SOURCE_DIR}/ext/Catch2/single_include/catch2 ) #################################################
file( GLOB_RECURSE TEST_SRCS RELATIVE ${CMAKE_SOURCE_DIR} "tests/*.cpp" )
list( REMOVE_ITEM SRCS "src/main.cpp" )
add_executable( unit_tests ${SRCS} ${TEST_SRCS} ) ### BUILD UNIT TESTS ############################
target_link_libraries( unit_tests ${CORE_LIBRARIES} ) include( CTest )
set( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/ext/Catch2/contrib ${CMAKE_MODULE_PATH} )
include( Catch )
set( CATCH_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/ext/Catch2/single_include/catch2 )
add_compile_definitions( BUILD_TESTING )
add_compile_definitions( TESTS_PATH="${CMAKE_SOURCE_DIR}/tests/" )
add_library( Catch INTERFACE )
target_include_directories( Catch INTERFACE ${CATCH_INCLUDE_DIR} )
file( GLOB_RECURSE TEST_SRCS RELATIVE ${CMAKE_SOURCE_DIR} "tests/*.cpp" )
list( REMOVE_ITEM SRCS "src/main.cpp" )
add_executable( unit_tests ${TEST_SRCS} ${SRCS} ${EXT_SRCS} )
target_link_libraries( unit_tests Catch ${CORE_LIBRARIES} )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:DEBUG>:${KITRT_DEBUG_OPTIONS}>" )
if( CMAKE_COMPILER_IS_GNUCXX )
set( CODE_COVERAGE_OPTIONS --coverage -g -O0 -w )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:DEBUG>:${CODE_COVERAGE_OPTIONS}>" )
target_link_libraries( unit_tests Catch gcov )
endif() endif()
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:RELWITHDEBINFO>:${KITRT_RELWITHDEBINFO_OPTIONS}>" )
target_compile_options( unit_tests PUBLIC "$<$<CONFIG:RELEASE>:${KITRT_RELEASE_OPTIONS}>" )
catch_discover_tests( unit_tests )
enable_testing()
#################################################
set(flag 1)
if (WIN32)
execute_process(COMMAND wmic cpu get L3CacheSize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
if (flag)
execute_process(COMMAND wmic cpu get L2CacheSize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
if (flag)
execute_process(COMMAND wmic cpu get L1CacheSize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
endif (WIN32)
if (UNIX)
execute_process(COMMAND cat /sys/devices/system/cpu/cpu0/cache/index3/size
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
if (flag)
execute_process(COMMAND cat /sys/devices/system/cpu/cpu0/cache/index2/size
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
if (flag)
execute_process(COMMAND cat /sys/devices/system/cpu/cpu0/cache/index1/size
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
endif (UNIX)
if (APPLE)
execute_process(COMMAND sysctl -n hw.l3cachesize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
if (flag)
execute_process(COMMAND sysctl -n hw.l2cachesize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
if (flag)
execute_process(COMMAND sysctl -n hw.l1icachesize
OUTPUT_VARIABLE tmp
RESULT_VARIABLE flag
ERROR_QUIET)
endif (flag)
if (flag EQUAL 0)
math(EXPR tmp ${tmp}/1024) # If successful convert to kibibytes to comply with rest
endif (flag EQUAL 0)
endif (APPLE)
if (flag)
message(WARNING "Cache size not found automatically. Using default value as cache size.")
set(tmp "3072")
endif (flag)
string( REGEX MATCH "([0-9][0-9]+)" tmp ${tmp} )
math( EXPR BLAZE_CACHE_SIZE ${tmp}*1024 )
add_compile_definitions( BLAZE_CACHE_SIZE=${BLAZE_CACHE_SIZE}UL )
message( STATUS "Blaze: Automatic Cache Size Configuration = ${BLAZE_CACHE_SIZE} KiB" )
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
**** Material composition, oscillator data and
stopping powers for electrons and positrons.
Material # 278, WATER, LIQUID
Mass density = 1.00000000E+00 g/cm**3
Number of elements in the molecule = 2
atomic number = 1, atoms/molecule = 2.00000000E+00
atomic number = 8, atoms/molecule = 1.00000000E+00
Mean excitation energy = 7.50000000E+01 eV
Number of oscillators = 3
Fi Ui (eV) Wi (eV)
---------------------------------------------------
1 6.00000000E+00 1.36133333E+01 3.13708109E+01
2 2.00000000E+00 2.84800000E+01 6.40292871E+01
3 2.00000000E+00 5.38000000E+02 1.20046753E+03
Stopping powers. mtu=g/cm**2
Energy Scol,e- Srad,e- Scol,e+ Srad,e+
(eV) (MeV/mtu) (MeV/mtu) (MeV/mtu) (MeV/mtu)
------------------------------------------------------------
5.00E+01 3.70852E+02 1.36585E-03 4.92645E+02 1.73951E-04
6.00E+01 3.69967E+02 1.42600E-03 5.11158E+02 1.95865E-04
7.00E+01 4.13339E+02 1.47902E-03 5.49996E+02 2.16318E-04
8.00E+01 4.27409E+02 1.52679E-03 5.58552E+02 2.35605E-04
9.00E+01 4.26017E+02 1.57017E-03 5.52407E+02 2.53874E-04
1.00E+02 4.18657E+02 1.61021E-03 5.40424E+02 2.71305E-04
1.25E+02 3.92215E+02 1.69862E-03 5.02921E+02 3.11773E-04
1.50E+02 3.68877E+02 1.77471E-03 4.65656E+02 3.48695E-04
1.75E+02 3.46353E+02 1.84203E-03 4.32255E+02 3.82856E-04
2.00E+02 3.25742E+02 1.90258E-03 4.03025E+02 4.14753E-04
2.50E+02 2.90852E+02 2.00847E-03 3.55191E+02 4.73136E-04
3.00E+02 2.63017E+02 2.09988E-03 3.18078E+02 5.25980E-04
3.50E+02 2.40447E+02 2.18058E-03 2.88540E+02 5.74506E-04
4.00E+02 2.21797E+02 2.25339E-03 2.64472E+02 6.19653E-04
4.50E+02 2.06121E+02 2.31960E-03 2.44465E+02 6.61928E-04
5.00E+02 1.92746E+02 2.38084E-03 2.27551E+02 7.01905E-04
6.00E+02 1.71091E+02 2.49090E-03 2.00463E+02 7.76038E-04
7.00E+02 1.54264E+02 2.58825E-03 1.79664E+02 8.43986E-04
8.00E+02 1.40771E+02 2.67599E-03 1.63141E+02 9.07065E-04
9.00E+02 1.29681E+02 2.75615E-03 1.49665E+02 9.66183E-04
1.00E+03 1.20387E+02 2.83015E-03 1.38442E+02 1.02199E-03
1.25E+03 1.03967E+02 2.99172E-03 1.18648E+02 1.14897E-03
1.50E+03 9.25403E+01 3.12146E-03 1.05352E+02 1.25919E-03
1.75E+03 8.31983E+01 3.22408E-03 9.45899E+01 1.35470E-03
2.00E+03 7.56610E+01 3.30698E-03 8.59347E+01 1.43866E-03
2.50E+03 6.43691E+01 3.43525E-03 7.29213E+01 1.58193E-03
3.00E+03 5.64172E+01 3.52937E-03 6.35888E+01 1.70068E-03
3.50E+03 5.03563E+01 3.60082E-03 5.65473E+01 1.80148E-03
4.00E+03 4.55809E+01 3.65660E-03 5.10302E+01 1.88866E-03
4.50E+03 4.17146E+01 3.70083E-03 4.65809E+01 1.96505E-03
5.00E+03 3.85149E+01 3.73660E-03 4.29102E+01 2.03283E-03
6.00E+03 3.35140E+01 3.79027E-03 3.71941E+01 2.14847E-03
7.00E+03 2.97717E+01 3.82778E-03 3.29339E+01 2.24410E-03
8.00E+03 2.68565E+01 3.85514E-03 2.96262E+01 2.32525E-03
9.00E+03 2.45157E+01 3.87499E-03 2.69777E+01 2.39498E-03
1.00E+04 2.25910E+01 3.89031E-03 2.48054E+01 2.45624E-03
1.25E+04 1.89924E+01 3.91535E-03 2.07574E+01 2.58175E-03
1.50E+04 1.64805E+01 3.92847E-03 1.79434E+01 2.67913E-03
1.75E+04 1.46201E+01 3.93520E-03 1.58660E+01 2.75763E-03
2.00E+04 1.31828E+01 3.94039E-03 1.42652E+01 2.82421E-03
2.50E+04 1.10997E+01 3.95251E-03 1.19524E+01 2.93548E-03
3.00E+04 9.65695E+00 3.96525E-03 1.03559E+01 3.02585E-03
3.50E+04 8.59518E+00 3.97694E-03 9.18408E+00 3.10082E-03
4.00E+04 7.77929E+00 3.98823E-03 8.28550E+00 3.16496E-03
4.50E+04 7.13175E+00 3.99954E-03 7.57359E+00 3.22120E-03
5.00E+04 6.60477E+00 4.01265E-03 6.99509E+00 3.27279E-03
6.00E+04 5.79786E+00 4.04514E-03 6.11088E+00 3.36762E-03
7.00E+04 5.20822E+00 4.08256E-03 5.46605E+00 3.45378E-03
8.00E+04 4.75809E+00 4.12356E-03 4.97457E+00 3.53407E-03
9.00E+04 4.40304E+00 4.16748E-03 4.58741E+00 3.61040E-03
1.00E+05 4.11580E+00 4.21392E-03 4.27453E+00 3.68405E-03
1.25E+05 3.59175E+00 4.33880E-03 3.70450E+00 3.86111E-03
1.50E+05 3.23794E+00 4.47486E-03 3.32024E+00 4.03432E-03
1.75E+05 2.98383E+00 4.62060E-03 3.04455E+00 4.20769E-03
2.00E+05 2.79321E+00 4.77605E-03 2.83788E+00 4.38423E-03
2.50E+05 2.52822E+00 5.11547E-03 2.55070E+00 4.75293E-03
3.00E+05 2.35500E+00 5.48815E-03 2.36296E+00 5.14416E-03
3.50E+05 2.23483E+00 5.89073E-03 2.23263E+00 5.55872E-03
4.00E+05 2.14799E+00 6.31882E-03 2.13830E+00 5.99460E-03
4.50E+05 2.08317E+00 6.76912E-03 2.06777E+00 6.44990E-03
5.00E+05 2.03313E+00 7.23911E-03 2.01324E+00 6.92297E-03
6.00E+05 1.96227E+00 8.23473E-03 1.93581E+00 7.92086E-03
7.00E+05 1.91608E+00 9.29369E-03 1.88507E+00 8.97908E-03
8.00E+05 1.88491E+00 1.04109E-02 1.85058E+00 1.00938E-02
9.00E+05 1.86341E+00 1.15735E-02 1.82656E+00 1.12532E-02
1.00E+06 1.84842E+00 1.27827E-02 1.80960E+00 1.24587E-02
1.25E+06 1.82807E+00 1.59725E-02 1.78578E+00 1.56392E-02
1.50E+06 1.82099E+00 1.93754E-02 1.77646E+00 1.90338E-02
1.75E+06 1.82040E+00 2.29647E-02 1.77430E+00 2.26164E-02
2.00E+06 1.82318E+00 2.67121E-02 1.77591E+00 2.63589E-02
2.50E+06 1.83327E+00 3.45981E-02 1.78439E+00 3.42405E-02