From 6b4f1c3e23173eff1ca9d2567a7aa288ac5505e9 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 12 Jul 2024 11:15:49 -0400 Subject: [PATCH 01/16] add wdmerger scaling numbers on frontier (#2914) --- .../wdmerger/scaling/frontier/README.md | 48 ++ .../scaling/frontier/frontier-128nodes.slurm | 72 +++ .../scaling/frontier/frontier-16nodes.slurm | 72 +++ .../scaling/frontier/frontier-256nodes.slurm | 72 +++ .../scaling/frontier/frontier-32nodes.slurm | 72 +++ .../scaling/frontier/frontier-512nodes.slurm | 72 +++ .../scaling/frontier/frontier-64nodes.slurm | 72 +++ .../frontier/frontier_1024base_20240709.txt | 22 + .../frontier/frontier_256base_20240709.txt | 22 + .../frontier/frontier_512base_20240709.txt | 22 + .../scaling/frontier/frontier_scaling.py | 54 ++ .../scaling/frontier/frontier_wdmerger.png | Bin 0 -> 35864 bytes .../wdmerger/scaling/frontier/inputs_scaling | 462 ++++++++++++++++++ 13 files changed, 1062 insertions(+) create mode 100644 Exec/science/wdmerger/scaling/frontier/README.md create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-128nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-16nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-256nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-32nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-512nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier-64nodes.slurm create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_1024base_20240709.txt create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_256base_20240709.txt create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_512base_20240709.txt create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_scaling.py create mode 100644 Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png create mode 100644 Exec/science/wdmerger/scaling/frontier/inputs_scaling diff --git a/Exec/science/wdmerger/scaling/frontier/README.md b/Exec/science/wdmerger/scaling/frontier/README.md new file mode 100644 index 0000000000..9a87deebb0 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/README.md @@ -0,0 +1,48 @@ +# wdmerger scaling on Frontier + +This explores a 12.5 km resolution wdmerger simulation using the +Pakmor initial conditions. + +We consider 3 different gridding strategies: + +* 256^3 base + 3 AMR levels, each a jump of 4 + +* 512^3 base + 3 AMR levels with jumps of 4, 4, 2 + +* 1024^3 base + 2 AMR levels with jumps of 4, 4 + +The inputs file here is setup for the 256^3 base. + +We report the total evolution time excluding initialization that is +output by Castro at the end of the run. + +Some general observations: + +* We seem to do well with `max_grid_size` set to 64 or 128, but not 96 + +* At large node counts, it really doesn't matter which of the gridding + strategies we use, since there is plenty of work to go around. The + main consideration would be that the larger coarse grid would make + the plotfiles bigger. + +* We seem to benefit from using `castro.hydro_memory_footprint_ratio=3` + +* There really is no burning yet, since this is early in the + evolution, so we would expect scaling to improve as the stars + interact (more grids) and burning begins (more local work). + +Note that for the 256^3 base grid, on 64 nodes, the grid structure is: + +``` +INITIAL GRIDS + Level 0 512 grids 16777216 cells 100 % of domain + smallest grid: 32 x 32 x 32 biggest grid: 32 x 32 x 32 + Level 1 96 grids 3145728 cells 0.29296875 % of domain + smallest grid: 32 x 32 x 32 biggest grid: 32 x 32 x 32 + Level 2 674 grids 38797312 cells 0.05645751953 % of domain + smallest grid: 32 x 32 x 32 biggest grid: 64 x 32 x 32 + Level 3 7247 grids 1428029440 cells 0.03246963024 % of domain + smallest grid: 32 x 32 x 32 biggest grid: 64 x 64 x 64 +``` + +So only a small amount of the finest grid is refined in this problem. diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-128nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-128nodes.slurm new file mode 100644 index 0000000000..41130fcf01 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-128nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_128nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 128 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-16nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-16nodes.slurm new file mode 100644 index 0000000000..09a4e247af --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-16nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_16nodes +#SBATCH -o %x-%j.out +#SBATCH -t 01:20:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 16 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-256nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-256nodes.slurm new file mode 100644 index 0000000000..1a56884a71 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-256nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_256nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 256 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-32nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-32nodes.slurm new file mode 100644 index 0000000000..82488ef037 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-32nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_32nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 32 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-512nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-512nodes.slurm new file mode 100644 index 0000000000..025d60b7b5 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-512nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_512nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 512 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier-64nodes.slurm b/Exec/science/wdmerger/scaling/frontier/frontier-64nodes.slurm new file mode 100644 index 0000000000..85d9ce705b --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier-64nodes.slurm @@ -0,0 +1,72 @@ +#!/bin/bash +#SBATCH -A AST106 +#SBATCH -J wdmerger_64nodes +#SBATCH -o %x-%j.out +#SBATCH -t 00:30:00 +#SBATCH -p batch +# here N is the number of compute nodes +#SBATCH -N 64 +#SBATCH --ntasks-per-node=8 +#SBATCH --cpus-per-task=7 +#SBATCH --gpus-per-task=1 +#SBATCH --gpu-bind=closest + +EXEC=./Castro3d.hip.x86-trento.MPI.HIP.ex +INPUTS=inputs_scaling + +module load PrgEnv-gnu +module load cray-mpich/8.1.27 +module load craype-accel-amd-gfx90a +module load amd-mixed/6.0.0 +module unload darshan-runtime + +function find_chk_file { + # find_chk_file takes a single argument -- the wildcard pattern + # for checkpoint files to look through + chk=$1 + + # find the latest 2 restart files. This way if the latest didn't + # complete we fall back to the previous one. + temp_files=$(find . -maxdepth 1 -name "${chk}" -print | sort | tail -2) + restartFile="" + for f in ${temp_files} + do + # the Header is the last thing written -- check if it's there, otherwise, + # fall back to the second-to-last check file written + if [ ! -f ${f}/Header ]; then + restartFile="" + else + restartFile="${f}" + fi + done + +} + +# look for 7-digit chk files +find_chk_file "*chk???????" + +if [ "${restartFile}" = "" ]; then + # look for 6-digit chk files + find_chk_file "*chk??????" +fi + +if [ "${restartFile}" = "" ]; then + # look for 5-digit chk files + find_chk_file "*chk?????" +fi + +# restartString will be empty if no chk files are found -- i.e. new run +if [ "${restartFile}" = "" ]; then + restartString="" +else + restartString="amr.restart=${restartFile}" +fi + +export OMP_NUM_THREADS=1 +export NMPI_PER_NODE=8 +export TOTAL_NMPI=$(( ${SLURM_JOB_NUM_NODES} * ${NMPI_PER_NODE} )) + +srun -n${TOTAL_NMPI} -N${SLURM_JOB_NUM_NODES} --ntasks-per-node=8 --gpus-per-task=1 ./$EXEC $INPUTS ${restartString} + + + diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_1024base_20240709.txt b/Exec/science/wdmerger/scaling/frontier/frontier_1024base_20240709.txt new file mode 100644 index 0000000000..7ef90464e6 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_1024base_20240709.txt @@ -0,0 +1,22 @@ +# Run with ROCm 6.0 and: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/subch_simple +# INTEGRATOR: VODE +# SCREENING: screen5 +# +# Castro git describe: 24.06-16-g830d937a6 +# AMReX git describe: 24.06-21-g259db7cfb +# Microphysics git describe: 24.06-30-g134200e7 +# +# this uses a coarse grid of 1024^3 and: +# amr.max_level = 2 +# amr.ref_ratio = 4 4 +# +# nodes mgs=64 mgs=96 mgs=128 mgs=64/footprint=3 + 16 2147.053162 1675.331765 1740.636312 1778.574737 + 32 956.1554475 984.2968504 931.3916399 919.122039 + 64 564.2893014 645.3803626 570.8522676 512.6902792 + 128 371.3067169 491.739618 407.0323314 317.8378405 + 256 283.3819859 381.9738402 374.5512442 216.87873 + 512 240.9534923 376.2960866 205.5138579 174.7229814 diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_256base_20240709.txt b/Exec/science/wdmerger/scaling/frontier/frontier_256base_20240709.txt new file mode 100644 index 0000000000..89210e7539 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_256base_20240709.txt @@ -0,0 +1,22 @@ +# Run with ROCm 6.0 and: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/subch_simple +# INTEGRATOR: VODE +# SCREENING: screen5 +# +# Castro git describe: 24.06-16-g830d937a6 +# AMReX git describe: 24.06-21-g259db7cfb +# Microphysics git describe: 24.06-30-g134200e7 +# +# this uses a coarse grid of 256^3 and: +# amr.max_level = 3 +# amr.ref_ratio = 4 4 4 +# +# nodes mgs=64 mgs=96 mgs=128 mgs=64/footprint=3 + 16 3113.728109 1427.961211 1172.233403 1587.513124 + 32 669.0471158 848.7207989 698.5210431 626.5812503 + 64 404.6151035 583.2284754 433.2107803 377.6227032 + 128 272.9040553 491.2785887 338.5415379 246.6334284 + 256 210.2009386 442.7161572 327.9919688 182.2869616 + 512 198.9984347 442.3824775 190.1068867 152.5701047 diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_512base_20240709.txt b/Exec/science/wdmerger/scaling/frontier/frontier_512base_20240709.txt new file mode 100644 index 0000000000..86c0e30d58 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_512base_20240709.txt @@ -0,0 +1,22 @@ +# Run with ROCm 6.0 and: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/subch_simple +# INTEGRATOR: VODE +# SCREENING: screen5 +# +# Castro git describe: 24.06-16-g830d937a6 +# AMReX git describe: 24.06-21-g259db7cfb +# Microphysics git describe: 24.06-30-g134200e7 +# +# this uses a coarse grid of 512^3 and: +# amr.max_level = 3 +# amr.ref_ratio = 4 4 2 +# +# nodes mgs=64 mgs=96 mgs=128 mgs=64/footprint=3 + 16 1765.994371 1691.704469 1452.086917 1487.079767 + 32 1201.902236 1005.081075 964.1964439 855.2325778 + 64 842.8128873 696.4877074 568.8999156 520.618414 + 128 466.4414552 593.5218413 387.8753919 312.2481499 + 256 235.6338158 523.2295471 395.6226178 200.3649345 + 512 211.1232539 491.9730412 224.1238711 160.1880035 diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py new file mode 100644 index 0000000000..a1329635e0 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py @@ -0,0 +1,54 @@ +import matplotlib.pyplot as plt +import matplotlib.ticker as mticker +import numpy as np + +plt.rcParams.update({'xtick.labelsize': 10, + 'ytick.labelsize': 10, + 'font.size': 12}) + +plt.rc("axes", linewidth=1.5) +plt.rc("lines", markeredgewidth=1.5) + +frontier_256base_data = np.loadtxt("frontier_256base_20240709.txt") +frontier_256base_nodes = frontier_256base_data[:, 0] +frontier_256base_times = frontier_256base_data[:, 4] + +frontier_512base_data = np.loadtxt("frontier_512base_20240709.txt") +frontier_512base_nodes = frontier_512base_data[:, 0] +frontier_512base_times = frontier_512base_data[:, 4] + +frontier_1024base_data = np.loadtxt("frontier_1024base_20240709.txt") +frontier_1024base_nodes = frontier_1024base_data[:, 0] +frontier_1024base_times = frontier_1024base_data[:, 4] + + +def trend_line(c, t): + cnew = np.array(sorted(list(set(c)))) + cnew = np.linspace(cnew.min(), cnew.max(), 256, endpoint=True) + trend = t[0]*c[0]/cnew[:] + return cnew, trend + + +# first by nodes + +fig, ax = plt.subplots(1) + +ax.plot(frontier_256base_nodes, frontier_256base_times, ls="None", marker="x", label="$256^3$ coarse grid") +ax.plot(frontier_512base_nodes, frontier_512base_times, ls="None", marker="x", label="$512^3$ coarse grid") +ax.plot(frontier_1024base_nodes, frontier_1024base_times, ls="None", marker="x", label="$1024^3$ coarse grid") + +c, t = trend_line(frontier_256base_nodes, frontier_256base_times) +ax.plot(c, t, alpha=0.5, linestyle=":", color="k") + +ax.set_ylabel("wallclock time / step") +ax.set_xlabel("number of nodes") + +ax.set_xscale("log") +ax.set_yscale("log") + +ax.set_title("3D wedmerger scaling (Frontier)") + +ax.legend() + +fig.tight_layout() +fig.savefig("frontier_wdmerger.png") diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png b/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png new file mode 100644 index 0000000000000000000000000000000000000000..b00c2a434baf51d78b03710b8afa57f1d10eb2f9 GIT binary patch literal 35864 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 literal 0 HcmV?d00001 diff --git a/Exec/science/wdmerger/scaling/frontier/inputs_scaling b/Exec/science/wdmerger/scaling/frontier/inputs_scaling new file mode 100644 index 0000000000..90efeaaf07 --- /dev/null +++ b/Exec/science/wdmerger/scaling/frontier/inputs_scaling @@ -0,0 +1,462 @@ +## Latest inputs file being used to reproduce initial conditions from Pakmor et al. 2022 +## with 100 km resolution using for scaling + +############################## CASTRO INPUTS ############################################### + +############################################################################################ +# Geometry +############################################################################################ + +# Non-periodic boundary conditions +geometry.is_periodic = 0 0 0 + +#if AMREX_SPACEDIM == 3 + + # Cartesian coordinate system + geometry.coord_sys = 0 + + # Lower boundary limits in physical space + geometry.prob_lo = -1.024e10 -1.024e10 -1.024e10 + +#elif AMREX_SPACEDIM == 2 + + # Cartesian coordinate system + geometry.coord_sys = 1 + + # Lower boundary limits in physical space + geometry.prob_lo = 0.0e0 -5.12e9 + +#endif + +# Upper boundary limits in physical space +geometry.prob_hi = 1.024e10 1.024e10 1.024e10 + +############################################################################################ +# Boundary conditions +# 0 = Interior 3 = Symmetry +# 1 = Inflow 4 = SlipWall +# 2 = Outflow 5 = NoSlipWall +############################################################################################ + +#if AMREX_SPACEDIM == 3 + + # Boundary conditions on lo x, y, and z edges + castro.lo_bc = 2 2 2 + +#elif AMREX_SPACEDIM == 2 + + # Boundary conditions on lo x, y, and z edges + castro.lo_bc = 3 2 + +#endif + +# Boundary conditions on hi x, y, and z edges +castro.hi_bc = 2 2 2 + +############################################################################################ +# Timestepping +############################################################################################ + +# Maximum number of level 0 steps +max_step = 10000000 + +# Simulation end time +stop_time = 0.2 + +# CFL number for hyperbolic system +castro.cfl = 0.5 + +# Fixed level 0 timestep; unused if < 0 +castro.fixed_dt = -1.0 + +# Scale back initial timestep by this factor +castro.init_shrink = 1.0 + +# Factor by which dt is allowed to change each timestep +castro.change_max = 1.3 + +# If we regrid on Level 0, compute a new timestep afterward +amr.compute_new_dt_on_regrid = 1 + +# Use a retry if an advance violated our stability criteria +castro.use_retry = 1 + +# Skip retries for small density if the starting density was less than this threshold +castro.retry_small_density_cutoff = 1.0e0 + +# Don't abort for invalid X if the zone density is less than this threshold +castro.abundance_failure_rho_cutoff = 1.0e0 + +# Maximum number of subcycles +# Default is 10, 16 is recommended value +castro.max_subcycles = 16 + + +############################################################################################ +# Resolution, gridding and AMR +############################################################################################ + +#if AMREX_SPACEDIM == 3 + + # Number of cells on the coarse grid + amr.n_cell = 256 256 256 + +#elif AMREX_SPACEDIM == 2 + + # Number of cells on the coarse grid + amr.n_cell = 128 256 + +#endif + +# Maximum level number allowed +amr.max_level = 3 + +# Refinement ratio +amr.ref_ratio = 4 4 4 4 + +# How many coarse timesteps between regridding +amr.regrid_int = 2 + +# Allow special regrids based on stability criteria +castro.use_post_step_regrid = 0 + +# Number of buffer cells in error estimation +amr.n_error_buf = 2 2 2 2 2 2 2 2 2 2 + +# Maximum grid size at each level +amr.max_grid_size = 64 + +# Grid sizes must be a multiple of blocking factor +amr.blocking_factor = 32 + +# What constitutes an efficient grid +amr.grid_eff = 0.9 + +# Order of reconstruction for interpolation +castro.state_interp_order = 0 + +# Limiting on state data interpolation (preserve linear combinations) +castro.lin_limit_state_interp = 1 + +# Add refinement indicators +amr.refinement_indicators = density density2 temperature + +# Density refinement criterion +amr.refine.density.value_greater = 1.0e0 +amr.refine.density.field_name = density +amr.refine.density.max_level = 1 + +# Density2 refinement criterion +amr.refine.density2.value_greater = 1.0e4 +amr.refine.density2.field_name = density +amr.refine.density2.max_level = 20 + +# Temperature refinement criterion +amr.refine.temperature.value_greater = 3.0e8 +amr.refine.temperature.field_name = Temp +amr.refine.temperature.max_level = 3 + +# Avoid tagging near the domain boundary +castro.max_tagging_radius = 0.75e0 + +# Whether or not to use AMR subcycling +amr.subcycling_mode = None + +# GPU option +castro.hydro_memory_footprint_ratio = 3 + +############################################################################################ +# Physics to include +############################################################################################ + +# Whether or not to do hydrodynamics +castro.do_hydro = 1 + +# Whether or not to do gravity +castro.do_grav = 1 + +# Whether or not to do reactions +castro.do_react = 1 + +# Whether or not to apply the sponge +castro.do_sponge = 1 + +# Whether or not to apply external source terms +castro.add_ext_src = 1 +castro.ext_src_implicit = 1 + +# Whether or not to include the rotation source term +castro.do_rotation = 1 + +############################################################################################ +# PPM/Hydro options +############################################################################################ + +# Piecewise parabolic with the original limiters (0 is piecewise linear; 2 is new limiters) +castro.ppm_type = 1 + +# Use the EOS in calculation of the edge states going into the Riemann solver +castro.ppm_temp_fix = 0 + +# Which Riemann solver to use. +# 0 = Colella, Glaz, and Ferguson (cheaper, less accurate) +# 1 = Colella and Glaz 1985 (more expensive, more accurate) +# 2 = HLL +castro.riemann_solver = 0 + +# For the CG Riemann solver, we need to tell the solver not to quit when +# the iterations don't converge, but instead to do additional bisection iteration. +castro.riemann_cg_blend = 2 + +# Use a lagged predictor estimate of the source terms in the hydro +castro.source_term_predictor = 1 + +# Whether to use the hybrid advection technique that conserves angular momentum +castro.hybrid_hydro = 0 + +# Reset (rho*e) if it goes negative in the transverse terms +castro.transverse_reset_rhoe = 1 + +# Reset rho if it goes negative in the transverse terms +castro.transverse_reset_density = 1 + +# Explicitly limit fluxes to avoid hitting a negative density +castro.limit_fluxes_on_small_dens = 1 + +# Set global simulation speed limit +castro.speed_limit = 1.498962290e9 # 0.05c + +############################################################################################ +# Thermodynamics +############################################################################################ + +# Minimum allowable temperature (K) +castro.small_temp = 1.e5 + +# Minimum allowable density (g / cm**3) +castro.small_dens = 1.e-5 + +# Threshold for when to use the internal energy in calculating pressure +castro.dual_energy_eta1 = 1.0e-3 + +# Threshold for when to use (E - K) in updating internal energy +castro.dual_energy_eta2 = 1.0e-4 + +# Use Coulomb corrections in Helmholtz EOS +eos.use_eos_coulomb = 1 + +# Keep EOS inputs constant after EOS evaluation +eos.eos_input_is_constant = 1 + +# Ambient temperature (K) +castro.ambient_temp = 1.0e7 + +# Ambient density (g / cm**3) +castro.ambient_density = 1.0e-4 + +# Clamp temperature in ambient zones to its initial value +castro.clamp_ambient_temp = 1 + +############################################################################################ +# Reactions/Network +############################################################################################ + +# Limit timestep based on nuclear burning considerations (changes in internal energy) +castro.dtnuc_e = 1.e200 + +#Limit timestep based on nuclear burning considerations (changes in species) +castro.dtnuc_X = 1.e200 + +# Minimum temperature for allowing nuclear burning +castro.react_T_min = 1.0e8 + +# Maximum temperature for allowing nuclear burning +castro.react_T_max = 1.0e12 + +# Minimum density for allowing nuclear burning +castro.react_rho_min = 1.0e6 + +# Maximum density for allowing nuclear burning +castro.react_rho_max = 1.0e12 + +# Smallest allowable mass fraction +network.small_x = 1.0e-12 + +# Evaluate the RHS during the burn +integrator.call_eos_in_rhs = 1 + +# Integration tolerances +integrator.rtol_spec = 1.0e-6 +integrator.atol_spec = 1.0e-6 + +integrator.rtol_enuc = 1.0e-6 +integrator.atol_enuc = 1.0e-6 + +# Do not abort or retry on a failed burn (Castro will handle this) +integrator.abort_on_failure = 0 + +# Renormalize abundances during the burn +integrator.renormalize_abundances = 1 + +# Maximum temperature allowed in the burn +integrator.MAX_TEMP = 1.0e10 + +# Use tabular rate evaluation when available +network.use_tables = 1 + +############################################################################################ +# Gravity +############################################################################################ + +# Full self-gravity with the Poisson equation +gravity.gravity_type = PoissonGrav + +# Multipole expansion includes terms up to r**(-max_multipole_order) +gravity.max_multipole_order = 6 + +# Tolerance for multigrid solver for phi solves +gravity.abs_tol = 1.e-10 + +# Use sync solve for gravity after refluxing +gravity.no_sync = 0 + +# Disable the use of the lagged composite correction for the potential +gravity.do_composite_phi_correction = 0 + +############################################################################################ +# Rotation +############################################################################################ + +# Rotational period of the rotating reference frame +castro.rotational_period = 100.0 + +############################################################################################ +# Sponge +############################################################################################ + +castro.sponge_lower_density = 1.0e0 +castro.sponge_upper_density = 1.0e0 +castro.sponge_timescale = 0.01e0 + +############################################################################################ +# Load balancing +############################################################################################ + +# Choice of load balancing strategy to use +DistributionMapping.strategy = KNAPSACK + +# Efficiency demanded from the knapsack algorithm +DistributionMapping.efficiency = 0.9 + +############################################################################################ +# Diagnostics and I/O +############################################################################################ + +# Timesteps between computing and printing volume averaged diagnostic quantities +castro.sum_interval = 0 + +# Simulation time between computing and printing volume averaged diagnostic quantities +castro.sum_per = -1.0 + +# Gravitational wave strain observation distance +castro.gw_dist = 10.0 + +# Name the job +castro.job_name = wdmerger + +# Whether or not to output plotfiles +amr.plot_files_output = 0 + +# Whether or not to output checkpoints +amr.checkpoint_files_output = 0 + +# Root name of checkpoint files +amr.check_file = chk + +# We want to store the 'old' state data in checkpoints +castro.dump_old = 1 + +# Simulation time between checkpoints +amr.check_per = 0.1 + +# Number of timesteps between checkpoints +amr.check_int = 20 + +# Root name of plot files +amr.plot_file = plt + +# Simulation time between plotfiles +amr.plot_per = -1 + +# Number of timesteps between plotfiles +#amr.plot_int = -1 + +# Root name of small plot files +amr.small_plot_file = smallplt + +# Simulation time between small plotfiles +amr.small_plot_per = -1 + +# Number of timesteps between small plotfiles +amr.small_plot_int = -1 + +# Do not write plotfiles when we dump checkpoints +amr.write_plotfile_with_checkpoint = 0 + +# Write final checkpoint/plotfile +castro.output_at_completion = 1 + +# Do not write a plotfile or checkpoint on restart +amr.plotfile_on_restart = 1 +amr.checkpoint_on_restart = 1 + +# Control verbosity in Amr.cpp +amr.v = 1 + +# Control verbosity in Castro.cpp +castro.v = 1 + +# Control verbosity in Gravity.cpp +gravity.v = 1 + +# State variables to add to plot files +amr.plot_vars = NONE + +# Derived variables to add to plot files +amr.derive_plot_vars = NONE + +# State variables to add to small plot files +amr.small_plot_vars = NONE + +# Derived variables to add to small plot files +amr.derive_small_plot_vars = NONE + +# Name of the diagnostic sum output files +#amr.data_log = NONE + +############################################################################################ +# Problem parameters +############################################################################################ + +problem.mass_P = 1.05 +problem.mass_S = 0.70 + +problem.co_wd_c_frac = 0.5 +problem.co_wd_o_frac = 0.5 +problem.co_wd_he_shell_mass = 0.03 + +problem.max_co_wd_mass = 1.50 + +problem.nsub = 4 + +problem.problem = 1 + +problem.roche_radius_factor = 1.0e0 + +problem.interp_temp = 1 + +problem.relaxation_damping_factor = -1.0e-1 +problem.relaxation_density_cutoff = 1.0e3 +problem.relaxation_cutoff_time = -1.0e0 + +problem.stellar_temp = 5.0e5 From 2fe8c1f250a35aa58b24da8cec14bc3452c2a3ba Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 12 Jul 2024 12:55:19 -0400 Subject: [PATCH 02/16] some new scaling numbers on Frontier (#2904) --- ...ontier-scaling-2024-07-04-subch_simple.txt | 33 +++++++++++ .../frontier/frontier-scaling-2024-07-04.txt | 38 ++++++++++++ .../frontier-scaling-rkc-2024-07-04.txt | 39 +++++++++++++ .../frontier/frontier_flame_wave_scaling.png | Bin 31442 -> 47725 bytes .../frontier_flame_wave_scaling_by_gpus.png | Bin 26378 -> 0 bytes .../scaling/frontier/frontier_scaling.py | 54 ++++++++---------- 6 files changed, 134 insertions(+), 30 deletions(-) create mode 100644 Exec/science/flame_wave/scaling/frontier/frontier-scaling-2024-07-04-subch_simple.txt create mode 100644 Exec/science/flame_wave/scaling/frontier/frontier-scaling-2024-07-04.txt create mode 100644 Exec/science/flame_wave/scaling/frontier/frontier-scaling-rkc-2024-07-04.txt delete mode 100644 Exec/science/flame_wave/scaling/frontier/frontier_flame_wave_scaling_by_gpus.png diff --git a/Exec/science/flame_wave/scaling/frontier/frontier-scaling-2024-07-04-subch_simple.txt b/Exec/science/flame_wave/scaling/frontier/frontier-scaling-2024-07-04-subch_simple.txt new file mode 100644 index 0000000000..4ec22a5c01 --- /dev/null +++ b/Exec/science/flame_wave/scaling/frontier/frontier-scaling-2024-07-04-subch_simple.txt @@ -0,0 +1,33 @@ +# scaling numbers for the 3D XRB -- using subch_simple +# using the same inputs.He.25cm.static.1000Hz as previously +# modules: +# +# module load PrgEnv-gnu +# module load cray-mpich/8.1.27 +# module load craype-accel-amd-gfx90a +# module load amd-mixed/6.0.0 +# module unload darshan-runtime +# +# build info: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/subch_simple +# CONDUCTIVITY: /ccs/home/zingale/Microphysics/conductivity/stellar +# INTEGRATOR: VODE +# SCREENING: screen5 +# +# Castro git describe: 24.07 +# AMReX git describe: 24.07-3-g7dc2081a9 +# Microphysics git describe: 24.07-1-g0a96241b + + +# nodes rocm mag_grid_size avg time / std dev +# step +# 48 6.0 128 --- crashes due to not enough GPU memory --- + 64 6.0 128 167.502 0.419448 + 128 6.0 128 85.4082 0.29416 + 256 6.0 128 46.4092 0.876868 + 512 6.0 128 25.5446 0.123848 +1024 6.0 128 17.3517 0.0857189 +2048 6.0 128 13.564 0.0498023 + diff --git a/Exec/science/flame_wave/scaling/frontier/frontier-scaling-2024-07-04.txt b/Exec/science/flame_wave/scaling/frontier/frontier-scaling-2024-07-04.txt new file mode 100644 index 0000000000..9d99d87a71 --- /dev/null +++ b/Exec/science/flame_wave/scaling/frontier/frontier-scaling-2024-07-04.txt @@ -0,0 +1,38 @@ +# new scaling numbers for the 3D XRB +# using the same inputs.He.25cm.static.1000Hz as previously +# modules: +# +# module load PrgEnv-gnu +# module load cray-mpich/8.1.27 +# module load craype-accel-amd-gfx90a +# module load amd-mixed/6.0.0 +# module unload darshan-runtime +# +# build info: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/iso7 +# CONDUCTIVITY: /ccs/home/zingale/Microphysics/conductivity/stellar +# INTEGRATOR: VODE +# SCREENING: screen5 +# +# Castro git describe: 24.07 +# AMReX git describe: 24.07-3-g7dc2081a9 +# Microphysics git describe: 24.07-1-g0a96241b + +# nodes rocm mag_grid_size avg time / std dev +# step + 48 6.0 128 69.3646 0.286297 + 64 6.0 128 50.2029 0.681104 + 128 6.0 128 28.4001 0.221368 + 256 6.0 128 15.7771 0.133056 + 512 6.0 128 9.6077 0.331669 +1024 6.0 128 6.66329 0.103599 +2048 6.0 128 5.15287 0.0542774 + +# note that the 2048 run uses a blocking factor of 16) + +# in contrast to the previous run, we've disabled all inlining with +# ROCm to get around some compiler bugs, so that might explain some +# slight slowdown here. + diff --git a/Exec/science/flame_wave/scaling/frontier/frontier-scaling-rkc-2024-07-04.txt b/Exec/science/flame_wave/scaling/frontier/frontier-scaling-rkc-2024-07-04.txt new file mode 100644 index 0000000000..ea6da1f3ff --- /dev/null +++ b/Exec/science/flame_wave/scaling/frontier/frontier-scaling-rkc-2024-07-04.txt @@ -0,0 +1,39 @@ +# new scaling numbers for the 3D XRB +# using the same inputs.He.25cm.static.1000Hz as previously +# modules: +# +# module load PrgEnv-gnu +# module load cray-mpich/8.1.27 +# module load craype-accel-amd-gfx90a +# module load amd-mixed/6.0.0 +# module unload darshan-runtime +# +# build info: +# +# EOS: /ccs/home/zingale/Microphysics/EOS/helmholtz +# NETWORK: /ccs/home/zingale/Microphysics/networks/iso7 +# CONDUCTIVITY: /ccs/home/zingale/Microphysics/conductivity/stellar +# INTEGRATOR: RKC +# SCREENING: screen5 +# +# Castro git describe: 24.07 +# AMReX git describe: 24.07-3-g7dc2081a9 +# Microphysics git describe: 24.07-1-g0a96241b + +# nodes rocm mag_grid_size avg time / std dev +# step + 48 6.0 128 54.7583 0.287289 + 64 6.0 128 39.4336 0.32115 + 128 6.0 128 22.8627 0.22725 + 256 6.0 128 12.9558 0.12379 + 512 6.0 128 7.9563 0.104311 +1024 6.0 128 5.65801 0.109306 +2048 6.0 128 4.33241 0.0577508 + +# note the 2048 node run using blocking_factor = 16 + + +# in contrast to the previous run, we've disabled all inlining with +# ROCm to get around some compiler bugs, so that might explain some +# slight slowdown here. + diff --git a/Exec/science/flame_wave/scaling/frontier/frontier_flame_wave_scaling.png b/Exec/science/flame_wave/scaling/frontier/frontier_flame_wave_scaling.png index 17d1a8bca0a696536ff000fbad96a30b7ae91153..c9e6ac439d7f5db3d101e8883158bcd934e19eee 100644 GIT binary patch literal 47725 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%0Aux5}m` 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%0DEfRdMf#i<7i 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 G@&5&P_{dBE literal 35864 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 From ab2b6d81e7904e7f05d6fd11c9fa0e69443d9035 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 19 Jul 2024 12:35:22 -0400 Subject: [PATCH 05/16] update CI after Microphysics changes (#2919) --- .../sdc_det_plt00040_extrema.out | 132 +++++++++--------- .../ci-benchmarks/job_info_params.txt | 1 - .../ci-benchmarks/wdmerger_collision_2D.out | 12 +- 3 files changed, 72 insertions(+), 73 deletions(-) diff --git a/Exec/science/Detonation/ci-benchmarks/sdc_det_plt00040_extrema.out b/Exec/science/Detonation/ci-benchmarks/sdc_det_plt00040_extrema.out index 193b2fe183..51ab093e30 100644 --- a/Exec/science/Detonation/ci-benchmarks/sdc_det_plt00040_extrema.out +++ b/Exec/science/Detonation/ci-benchmarks/sdc_det_plt00040_extrema.out @@ -1,79 +1,79 @@ plotfile = det_x_plt00040 time = 5.1558159140336702e-06 variables minimum value maximum value - density 185260165.55 216617920.63 - xmom -63255523503 2.9519346608e+16 + density 185259874.21 216582994.41 + xmom -87234240329 2.9512596512e+16 ymom 0 0 zmom 0 0 - rho_E 1.3062473821e+26 2.7891343298e+26 - rho_e 1.3062473821e+26 2.7748842906e+26 - Temp 50000000.026 7845854931.5 - rho_H1 2.1204369735e-22 0.020000115169 - rho_He3 0.0017224919811 0.02102205401 - rho_He4 94366339.651 200001593.93 - rho_C12 0.020000000216 21203829.102 - rho_N14 1.999999523e-22 9.5660401467 - rho_O16 0.02 19209.488217 - rho_Ne20 0.02 3464.1596069 - rho_Mg24 0.02 23322.458406 - rho_Si28 0.02 2015700.9685 - rho_S32 0.02 1656602.4644 - rho_Ar36 0.02 822007.67426 - rho_Ca40 0.02 724910.24417 - rho_Ti44 0.02 34179.295535 - rho_Cr48 0.02 78164.189237 - rho_Fe52 0.02 278034.23746 - rho_Fe54 0.02 95026946.079 - rho_Ni56 0.02 2239485.5719 - rho_n 2.1204369735e-22 234580.3659 - rho_p 0.019999995438 3610755.3081 - rho_enuc -4.6808330292e+29 3.576498348e+32 - pressure 5.5236728651e+25 1.1610548795e+26 - kineng 0 2.0467474279e+24 - soundspeed 612864631.21 895226097.3 - Gamma_1 1.3599756287 1.3819899024 - MachNumber 0 0.16110770916 - uplusc 612864631.21 999815567.76 - uminusc -895226406.71 -612860598.79 - entropy 98214767.758 336273469.46 + rho_E 1.3062473821e+26 2.7893784326e+26 + rho_e 1.3062473821e+26 2.7751188263e+26 + Temp 50000000.026 7845854662.6 + rho_H1 2.1207307865e-22 0.020000135717 + rho_He3 0.0017225013714 0.02102428438 + rho_He4 94358881.486 200001799.59 + rho_C12 0.020000000216 21276964.112 + rho_N14 1.9999983474e-22 197.76685905 + rho_O16 0.02 19209.489937 + rho_Ne20 0.02 4937.0489429 + rho_Mg24 0.02 23322.104606 + rho_Si28 0.02 2015343.4134 + rho_S32 0.02 1656264.8265 + rho_Ar36 0.02 821829.69632 + rho_Ca40 0.02 725030.13946 + rho_Ti44 0.02 34172.699418 + rho_Cr48 0.02 78131.560865 + rho_Fe52 0.02 277298.50875 + rho_Fe54 0.02 94994585.838 + rho_Ni56 0.02 2238978.4894 + rho_n 2.1207307865e-22 234580.14761 + rho_p 0.019999995438 3609721.5282 + rho_enuc -4.6900452682e+29 3.5791669148e+32 + pressure 5.5236728651e+25 1.1610544319e+26 + kineng 0 2.0455630311e+24 + soundspeed 612864631.21 895226067.36 + Gamma_1 1.3599756137 1.3820271358 + MachNumber 0 0.16114390973 + uplusc 612864631.21 999569362.18 + uminusc -895226468.14 -612860078.6 + entropy 98214767.758 336273451.62 magvort 0 0 - divu -97879.470548 34017.033805 - eint_E 6.5312369103e+17 1.380434464e+18 - eint_e 6.5312369103e+17 1.380434464e+18 - logden 8.2677820478 8.3356943826 - StateErr_0 185260165.55 216617920.63 - StateErr_1 50000000.026 7845854931.5 + divu -97746.019905 33801.828895 + eint_E 6.5312369103e+17 1.3804343879e+18 + eint_e 6.5312369103e+17 1.3804343879e+18 + logden 8.2677813648 8.3356243538 + StateErr_0 185259874.21 216582994.41 + StateErr_1 50000000.026 7845854662.6 StateErr_2 1e-30 9.9999779324e-11 X(H1) 1e-30 9.9999779324e-11 - X(He3) 8.9861142144e-12 9.9999601254e-11 - X(He4) 0.48402941802 0.9999999982 - X(C12) 1.0000000108e-10 0.09999745037 - X(N14) 1e-30 4.5113532098e-08 - X(O16) 1e-10 9.6047388579e-05 - X(Ne20) 1e-10 1.6337008127e-05 - X(Mg24) 1e-10 0.00011119757992 - X(Si28) 1e-10 0.010055548658 - X(S32) 1e-10 0.0083462743796 - X(Ar36) 1e-10 0.0041650262219 - X(Ca40) 1e-10 0.0037107481152 - X(Ti44) 1e-10 0.00017303069502 - X(Cr48) 1e-10 0.00040092438857 - X(Fe52) 1e-10 0.0013387480381 - X(Fe54) 1e-10 0.46489869655 - X(Ni56) 1e-10 0.010338413209 - X(n) 1e-30 0.0011729011118 - X(p) 9.999997703e-11 0.017599035758 - abar 4.000000001 6.7313315116 - Ye 0.49998670822 0.50001557428 - x_velocity -316.27744461 138671594.27 + X(He3) 8.9857380636e-12 9.9999601254e-11 + X(He4) 0.48403393423 0.9999999982 + X(C12) 1.0000000108e-10 0.10032845398 + X(N14) 1e-30 9.3254108586e-07 + X(O16) 1e-10 9.604742181e-05 + X(Ne20) 1e-10 2.3279941869e-05 + X(Mg24) 1e-10 0.00011116921103 + X(Si28) 1e-10 0.01005607083 + X(S32) 1e-10 0.0083471961707 + X(Ar36) 1e-10 0.0041657025725 + X(Ca40) 1e-10 0.0037098568497 + X(Ti44) 1e-10 0.00017298041086 + X(Cr48) 1e-10 0.00040079244474 + X(Fe52) 1e-10 0.0013382570124 + X(Fe54) 1e-10 0.46490351089 + X(Ni56) 1e-10 0.010337739099 + X(n) 1e-30 0.0011729003976 + X(p) 9.9999977071e-11 0.017596365447 + abar 4.000000001 6.7314014168 + Ye 0.49998670317 0.50001557187 + x_velocity -436.17123215 138623047.3 y_velocity 0 0 z_velocity 0 0 - t_sound_t_enuc 3.4411968038e-13 0.97442435993 - enuc -2.4887686639e+21 1.6510630042e+24 - magvel 0 138671594.27 - radvel -316.27744461 138671594.27 - circvel 0 2.4494897428 - magmom 0 2.9519346608e+16 + t_sound_t_enuc 3.4412406685e-13 0.97531384976 + enuc -2.4936491578e+21 1.6525613771e+24 + magvel 0 138623047.3 + radvel -436.17123215 138623047.3 + circvel 0 2 + magmom 0 2.9512596512e+16 angular_momentum_x 0 0 angular_momentum_y 0 0 angular_momentum_z 0 0 diff --git a/Exec/science/flame_wave/ci-benchmarks/job_info_params.txt b/Exec/science/flame_wave/ci-benchmarks/job_info_params.txt index 252b98a482..7d3acf86ec 100644 --- a/Exec/science/flame_wave/ci-benchmarks/job_info_params.txt +++ b/Exec/science/flame_wave/ci-benchmarks/job_info_params.txt @@ -240,7 +240,6 @@ integrator.do_species_clip = 1 integrator.use_number_densities = 0 integrator.scale_system = 0 - integrator.nse_iters = 3 integrator.nse_deriv_dt_factor = 0.05 integrator.nse_include_enu_weak = 1 integrator.linalg_do_pivoting = 1 diff --git a/Exec/science/wdmerger/ci-benchmarks/wdmerger_collision_2D.out b/Exec/science/wdmerger/ci-benchmarks/wdmerger_collision_2D.out index e1b92e55b7..6d11ada2e9 100644 --- a/Exec/science/wdmerger/ci-benchmarks/wdmerger_collision_2D.out +++ b/Exec/science/wdmerger/ci-benchmarks/wdmerger_collision_2D.out @@ -8,13 +8,13 @@ rho_E 7.4982062146e+11 5.0669247218e+24 rho_e 7.1077581849e+11 5.0640768325e+24 Temp 242288.68588 1409652233.5 - rho_He4 8.693611703e-17 3.5999032997 + rho_He4 8.693611703e-17 3.5999032981 rho_C12 3.4774446812e-05 7825956.6934 rho_O16 5.2161670217e-05 11739149.75 - rho_Ne20 8.693611703e-17 181951.05685 - rho_Mg24 8.693611703e-17 1192.796965 - rho_Si28 8.693611703e-17 6.691370255 - rho_S32 8.693611703e-17 0.00019493291439 + rho_Ne20 8.693611703e-17 181951.05664 + rho_Mg24 8.693611703e-17 1192.7969626 + rho_Si28 8.693611703e-17 6.6913702458 + rho_S32 8.693611703e-17 0.00019493291444 rho_Ar36 8.693611703e-17 1.9565534609e-05 rho_Ca40 8.693611703e-17 1.9565534331e-05 rho_Ti44 8.693611703e-17 1.9565534308e-05 @@ -25,5 +25,5 @@ grav_x -684991644 -51428.243166 grav_y -739606241.84 739606820.44 grav_z 0 0 - rho_enuc -6.4788917128e+12 7.6429034813e+23 + rho_enuc -1.9506340641e+12 7.6429034765e+23 From 56f51f6c1e6e4405efac23a9964af5de3b0a6da1 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Mon, 22 Jul 2024 11:08:01 -0400 Subject: [PATCH 06/16] fix linpack pivot templating for true SDC (#2912) --- Source/sdc/sdc_newton_solve.H | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/sdc/sdc_newton_solve.H b/Source/sdc/sdc_newton_solve.H index 7a796e270c..da0c6feaad 100644 --- a/Source/sdc/sdc_newton_solve.H +++ b/Source/sdc/sdc_newton_solve.H @@ -162,7 +162,8 @@ sdc_newton_solve(const Real dt_m, info = RHS::dgefa(Jac); #else IArray1D ipvt; - dgefa(Jac, ipvt, info); + constexpr bool allow_pivot{true}; + dgefa(Jac, ipvt, info); #endif if (info != 0) { ierr = newton::SINGULAR_MATRIX; @@ -172,7 +173,7 @@ sdc_newton_solve(const Real dt_m, #ifdef NEW_NETWORK_IMPLEMENTATION RHS::dgesl(Jac, f); #else - dgesl(Jac, ipvt, f); + dgesl(Jac, ipvt, f); #endif // on output, f is the solution (dU) From 1eb6df94fc34c743d030009940ec12a8260910cc Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 25 Jul 2024 11:47:22 -0400 Subject: [PATCH 07/16] fix small_x namespace in nova problem (#2913) this was an issue with SDC --- Exec/science/nova/problem_initialize_state_data.H | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Exec/science/nova/problem_initialize_state_data.H b/Exec/science/nova/problem_initialize_state_data.H index 4dea3d43eb..0509d94ad1 100644 --- a/Exec/science/nova/problem_initialize_state_data.H +++ b/Exec/science/nova/problem_initialize_state_data.H @@ -35,7 +35,7 @@ void problem_initialize_state_data (int i, int j, int k, state(i,j,k,URHO) = interpolate(height, model::idens); state(i,j,k,UTEMP) = interpolate(height, model::itemp); for (int n = 0; n < NumSpec; n++) { - state(i,j,k,UFS+n) = amrex::max(interpolate(height, model::ispec+n), small_x); + state(i,j,k,UFS+n) = amrex::max(interpolate(height, model::ispec+n), network_rp::small_x); } // normalize From 6aa81764243a616fc932d96d428f898cbacd50d9 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 25 Jul 2024 11:47:42 -0400 Subject: [PATCH 08/16] add a simple slice plot for wdmerger (#2921) --- Exec/science/wdmerger/analysis/slice_grid.py | 47 +++++++++++ .../wdmerger/analysis/wdmerger_slice.py | 80 +++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 Exec/science/wdmerger/analysis/slice_grid.py create mode 100644 Exec/science/wdmerger/analysis/wdmerger_slice.py diff --git a/Exec/science/wdmerger/analysis/slice_grid.py b/Exec/science/wdmerger/analysis/slice_grid.py new file mode 100644 index 0000000000..46aa0c467f --- /dev/null +++ b/Exec/science/wdmerger/analysis/slice_grid.py @@ -0,0 +1,47 @@ +import sys + +import yt +from yt.units import cm + + +def doit(plotfile): + + ds = yt.load(plotfile) + + xmin = ds.domain_left_edge[0] + xmax = ds.domain_right_edge[0] + + ymin = ds.domain_left_edge[1] + ymax = ds.domain_right_edge[1] + + xctr = 0.0 * xmin + L_x = xmax - xmin + + yctr = 0.5 * (ymin + ymax) + L_y = ymax - ymin + + width_frac = 1./3. + + field = "density" + + slc = yt.SlicePlot(ds, "z", field, + center=[xctr, yctr, 0.0*cm], + width=[width_frac*L_x, width_frac*L_y, 0.0*cm], + fontsize=14) + + slc.set_zlim(field, 1.e-4, 5.e7) + + slc.annotate_text((0.05, 0.05), f"time = {float(ds.current_time):8.3f} s", + coord_system="axis", text_args={"color": "white"}) + + slc.set_buff_size((3072, 3072)) + slc.set_axes_unit("cm") + + slc.annotate_grids() + slc.save(f"wdmerger_slice_grid_{plotfile}.png") + + +if __name__ == "__main__": + + pf = sys.argv[-1] + doit(pf) diff --git a/Exec/science/wdmerger/analysis/wdmerger_slice.py b/Exec/science/wdmerger/analysis/wdmerger_slice.py new file mode 100644 index 0000000000..c3635f2252 --- /dev/null +++ b/Exec/science/wdmerger/analysis/wdmerger_slice.py @@ -0,0 +1,80 @@ +import os +import sys +from functools import reduce + +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +from mpl_toolkits.axes_grid1 import ImageGrid + +import yt +from yt.units import cm + +matplotlib.use('agg') + + +def doit(plotfile): + + ds = yt.load(plotfile) + + xmin = ds.domain_left_edge[0] + xmax = ds.domain_right_edge[0] + + ymin = ds.domain_left_edge[1] + ymax = ds.domain_right_edge[1] + + xctr = 0.0 * xmin + L_x = xmax - xmin + + yctr = 0.5 * (ymin + ymax) + L_y = ymax - ymin + + width_frac = 1./3. + + fig = plt.figure() + + fields = ["density", "Temp"] + + grid = ImageGrid(fig, 111, nrows_ncols=(1, len(fields)), + axes_pad=0.75, cbar_pad=0.05, + label_mode="L", cbar_mode="each") + + for i, field in enumerate(fields): + + slc = yt.SlicePlot(ds, "z", field, + center=[xctr, yctr, 0.0*cm], + width=[width_frac*L_x, width_frac*L_y, 0.0*cm], + fontsize=14) + + if field == "Temp": + slc.set_zlim(field, 1.e7, 4e9) + slc.set_cmap(field, "magma") + elif field == "density": + slc.set_zlim(field, 1.e-4, 5.e7) + + slc.set_buff_size((3072, 3072)) + slc.set_axes_unit("cm") + + plot = slc.plots[field] + plot.figure = fig + plot.axes = grid[i].axes + plot.cax = grid.cbar_axes[i] + if i < len(fields)-1: + grid[i].axes.xaxis.offsetText.set_visible(False) + + slc._setup_plots() + + fig.text(0.02, 0.02, "time = {:8.5f} s".format(float(ds.current_time)), transform=fig.transFigure) + + fig.set_size_inches(19.2, 10.8) + plt.tight_layout() + plt.savefig("{}_slice.png".format(os.path.basename(plotfile))) + + + slc.save(f"wdmerger_slice_grid_{plotfile}.png") + + +if __name__ == "__main__": + + pf = sys.argv[-1] + doit(pf) From 29fed05f4045d9d8ac707d0b1bb45b5ede14b206 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 25 Jul 2024 11:48:04 -0400 Subject: [PATCH 09/16] add the xrb_layered model with carbon (#2917) --- .../xrb_layered/toy_atm_hot_carbon_3cm.hse | 1050 +++++++++++++++++ 1 file changed, 1050 insertions(+) create mode 100644 Exec/science/xrb_layered/toy_atm_hot_carbon_3cm.hse diff --git a/Exec/science/xrb_layered/toy_atm_hot_carbon_3cm.hse b/Exec/science/xrb_layered/toy_atm_hot_carbon_3cm.hse new file mode 100644 index 0000000000..a9abdfc545 --- /dev/null +++ b/Exec/science/xrb_layered/toy_atm_hot_carbon_3cm.hse @@ -0,0 +1,1050 @@ +# npts = 1024 +# num of variables = 24 +# density +# temperature +# pressure +# hydrogen-1 +# helium-4 +# carbon-12 +# carbon-13 +# nitrogen-13 +# nitrogen-14 +# nitrogen-15 +# oxygen-14 +# oxygen-15 +# oxygen-16 +# oxygen-17 +# oxygen-18 +# fluorine-17 +# fluorine-18 +# fluorine-19 +# neon-18 +# neon-19 +# neon-20 +# magnesium-22 +# magnesium-24 +# iron-56 + 1.5 12023043.0457 100000000 9.47083557764e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 4.5 11982290.0518 100000000 9.42438525809e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 7.5 11941617.9174 100000000 9.37809249617e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 10.5 11901026.5836 100000000 9.33195697907e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 13.5 11860515.99 100000000 9.28597839419e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 16.5 11820086.0744 100000000 9.24015642919e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 19.5 11779736.7731 100000000 9.19449077198e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 22.5 11739468.0211 100000000 9.1489811107e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 25.5 11699279.7525 100000000 9.10362713376e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 28.5 11659171.9002 100000000 9.05842852981e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 31.5 11619144.3964 100000000 9.01338498778e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 34.5 11579197.1728 100000000 8.96849619684e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 37.5 11539330.1605 100000000 8.92376184645e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 40.5 11499543.2903 100000000 8.87918162633e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 43.5 11459836.4929 100000000 8.83475522645e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 46.5 11420209.6989 100000000 8.79048233707e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 49.5 11380662.8389 100000000 8.7463626487e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 52.5 11341195.8439 100000000 8.70239585215e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 55.5 11301808.6449 100000000 8.65858163847e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 58.5 11262501.1735 100000000 8.61491969897e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 61.5 11223273.3619 100000000 8.57140972524e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 64.5 11184125.1427 100000000 8.52805140914e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 67.5 11145056.4494 100000000 8.48484444276e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 70.5 11106067.2161 100000000 8.44178851846e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 73.5 11067157.3779 100000000 8.39888332887e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 76.5 11028326.8708 100000000 8.35612856685e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 79.5 10989575.632 100000000 8.31352392551e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 82.5 10950903.5995 100000000 8.2710690982e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 85.5 10912310.7127 100000000 8.2287637785e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 88.5 10873796.912 100000000 8.18660766025e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 91.5 10835362.1392 100000000 8.14460043749e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 94.5 10797006.3375 100000000 8.10274180448e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 97.5 10758729.4194 100000000 8.06103145579e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 100.5 10720531.2924 100000000 8.01946908632e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 103.5 10682411.9029 100000000 7.97805439123e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 106.5 10644371.1949 100000000 7.93678706594e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 109.5 10606409.1103 100000000 7.89566680605e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 112.5 10568525.589 100000000 7.85469330741e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 115.5 10530720.5692 100000000 7.81386626609e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 118.5 10492993.9875 100000000 7.77318537842e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 121.5 10455345.7792 100000000 7.73265034097e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 124.5 10417775.8785 100000000 7.69226085057e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 127.5 10380284.2186 100000000 7.65201660428e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 130.5 10342870.7318 100000000 7.61191729945e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 133.5 10305535.3502 100000000 7.57196263368e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 136.5 10268278.005 100000000 7.53215230484e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 139.5 10231098.6274 100000000 7.49248601106e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 142.5 10193997.1484 100000000 7.45296345073e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 145.5 10156973.499 100000000 7.41358432253e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 148.5 10120027.6104 100000000 7.37434832538e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 151.5 10083159.4139 100000000 7.33525515849e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 154.5 10046368.8416 100000000 7.29630452131e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 157.5 10009655.8256 100000000 7.25749611358e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 160.5 9973020.29897 100000000 7.21882963528e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 163.5 9936462.19542 100000000 7.18030478665e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 166.5 9899981.44946 100000000 7.1419212682e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 169.5 9863577.99653 100000000 7.10367878067e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 172.5 9827251.77308 100000000 7.06557702507e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 175.5 9791002.71664 100000000 7.02761570263e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 178.5 9754830.76589 100000000 6.98979451484e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 181.5 9718735.86075 100000000 6.95211316342e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 184.5 9682717.94243 100000000 6.91457135031e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 187.5 9646776.95349 100000000 6.87716877769e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 190.5 9610912.83524 100000000 6.83990514795e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 193.5 9575125.48528 100000000 6.8027801638e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 196.5 9539414.83366 100000000 6.76579352828e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 199.5 9503780.82635 100000000 6.72894494468e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 202.5 9468223.40686 100000000 6.69223411649e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 205.5 9432742.51651 100000000 6.65566074743e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 208.5 9397338.09465 100000000 6.61922454144e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 211.5 9362010.07896 100000000 6.58292520273e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 214.5 9326758.40561 100000000 6.54676243571e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 217.5 9291583.00952 100000000 6.51073594507e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 220.5 9256483.82457 100000000 6.47484543575e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 223.5 9221460.78377 100000000 6.43909061293e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 226.5 9186513.8195 100000000 6.40347118207e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 229.5 9151642.86364 100000000 6.36798684889e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 232.5 9116847.84777 100000000 6.33263731936e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 235.5 9082128.70336 100000000 6.29742229974e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 238.5 9047485.36187 100000000 6.26234149652e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 241.5 9012917.75494 100000000 6.22739461649e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 244.5 8978425.81455 100000000 6.19258136668e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 247.5 8944009.47309 100000000 6.1579014544e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 250.5 8909668.66354 100000000 6.12335458721e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 253.5 8875403.3196 100000000 6.08894047292e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 256.5 8841213.37574 100000000 6.05465881961e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 259.5 8807098.76736 100000000 6.02050933562e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 262.5 8773059.43088 100000000 5.9864917295e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 265.5 8739095.30382 100000000 5.95260571009e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 268.5 8705206.3249 100000000 5.91885098644e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 271.5 8671392.43411 100000000 5.88522726784e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 274.5 8637653.57279 100000000 5.85173426382e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 277.5 8603989.68371 100000000 5.81837168412e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 280.5 8570400.71058 100000000 5.7851392387e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 283.5 8536886.55914 100000000 5.75203663784e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 286.5 8503447.15264 100000000 5.7190635921e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 289.5 8470082.43784 100000000 5.68621981235e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 292.5 8436792.35889 100000000 5.65350500962e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 295.5 8403576.85762 100000000 5.62091889518e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 298.5 8370435.87383 100000000 5.58846118055e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 301.5 8337369.34553 100000000 5.55613157745e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 304.5 8304377.20919 100000000 5.52392979786e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 307.5 8271459.40001 100000000 5.49185555402e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 310.5 8238615.85213 100000000 5.45990855841e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 313.5 8205846.49887 100000000 5.42808852376e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 316.5 8173151.27289 100000000 5.39639516307e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 319.5 8140530.10647 100000000 5.3648281896e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 322.5 8107982.93161 100000000 5.33338731688e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 325.5 8075509.68029 100000000 5.30207225867e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 328.5 8043110.28458 100000000 5.27088272904e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 331.5 8010784.67685 100000000 5.23981844229e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 334.5 7978532.78989 100000000 5.20887911299e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 337.5 7946354.55705 100000000 5.17806445598e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 340.5 7914249.91241 100000000 5.14737418633e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 343.5 7882218.79089 100000000 5.11680801939e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 346.5 7850261.12835 100000000 5.08636567074e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 349.5 7818376.86174 100000000 5.05604685623e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 352.5 7786565.92918 100000000 5.02585129193e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 355.5 7754828.27004 100000000 4.99577869416e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 358.5 7723163.82509 100000000 4.96582877945e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 361.5 7691572.53653 100000000 4.93600126459e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 364.5 7660054.34809 100000000 4.90629586657e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 367.5 7628609.19915 100000000 4.87671230261e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 370.5 7597236.99008 100000000 4.84725029023e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 373.5 7565937.65953 100000000 4.81790954728e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 376.5 7534711.15388 100000000 4.78868979183e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 379.5 7503557.41691 100000000 4.75959074214e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 382.5 7472476.39003 100000000 4.73061211673e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 385.5 7441468.01266 100000000 4.70175363431e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 388.5 7410532.2225 100000000 4.67301501385e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 391.5 7379668.95577 100000000 4.64439597457e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 394.5 7348878.14752 100000000 4.61589623593e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 397.5 7318159.73183 100000000 4.58751551763e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 400.5 7287513.64209 100000000 4.55925353965e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 403.5 7256939.8112 100000000 4.53111002222e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 406.5 7226438.1718 100000000 4.50308468582e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 409.5 7196008.65644 100000000 4.47517725121e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 412.5 7165651.19781 100000000 4.44738743939e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 415.5 7135365.72891 100000000 4.41971497164e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 418.5 7105152.1832 100000000 4.39215956948e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 421.5 7075010.49479 100000000 4.3647209547e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 424.5 7044940.59856 100000000 4.33739884933e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 427.5 7014942.43034 100000000 4.31019297567e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 430.5 6985015.927 100000000 4.28310305625e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 433.5 6955161.0266 100000000 4.25612881385e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 436.5 6925377.6685 100000000 4.22926997147e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 439.5 6895665.79347 100000000 4.20252625237e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 442.5 6866025.34377 100000000 4.17589738002e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 445.5 6836456.26326 100000000 4.14938307811e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 448.5 6806958.49686 100000000 4.12298307055e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 451.5 6777531.95427 100000000 4.09669708153e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 454.5 6748176.56274 100000000 4.07052483555e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 457.5 6718892.27009 100000000 4.04446605736e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 460.5 6689679.02126 100000000 4.01852047191e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 463.5 6660536.7587 100000000 3.99268780437e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 466.5 6631465.42268 100000000 3.96696778015e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 469.5 6602464.95162 100000000 3.94136012488e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 472.5 6573535.28241 100000000 3.91586456442e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 475.5 6544676.35067 100000000 3.89048082491e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 478.5 6515888.09108 100000000 3.86520863272e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 481.5 6487170.43759 100000000 3.84004771447e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 484.5 6458523.32369 100000000 3.81499779704e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 487.5 6429946.68266 100000000 3.79005860758e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 490.5 6401440.44779 100000000 3.76522987348e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 493.5 6373004.55256 100000000 3.7405113224e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 496.5 6344638.93086 100000000 3.71590268226e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 499.5 6316343.5172 100000000 3.69140368123e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 502.5 6288118.24683 100000000 3.66701404771e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 505.5 6259963.05597 100000000 3.64273351039e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 508.5 6231877.8819 100000000 3.61856179818e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 511.5 6203862.66313 100000000 3.59449864022e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 514.5 6175917.33955 100000000 3.57054376592e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 517.5 6148041.85251 100000000 3.54669690488e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 520.5 6120236.14499 100000000 3.52295778696e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 523.5 6092500.16163 100000000 3.4993261422e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 526.5 6064833.84769 100000000 3.47580170089e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 529.5 6037237.11295 100000000 3.45238419358e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 532.5 6009709.88934 100000000 3.42907335114e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 535.5 5982252.12519 100000000 3.40586890464e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 538.5 5954863.76585 100000000 3.38277058539e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 541.5 5927544.75408 100000000 3.3597781249e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 544.5 5900295.03042 100000000 3.33689125492e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 547.5 5873114.53354 100000000 3.31410970741e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 550.5 5846003.2006 100000000 3.2914332146e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 553.5 5818960.96757 100000000 3.26886150893e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 556.5 5791987.76951 100000000 3.24639432313e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 559.5 5765083.54087 100000000 3.22403139014e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 562.5 5738248.21578 100000000 3.20177244319e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 565.5 5711481.72828 100000000 3.17961721575e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 568.5 5684784.01259 100000000 3.15756544154e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 571.5 5658155.00331 100000000 3.13561685454e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 574.5 5631594.63564 100000000 3.11377118899e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 577.5 5605102.84559 100000000 3.09202817937e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 580.5 5578679.57017 100000000 3.07038756039e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 583.5 5552324.74753 100000000 3.04884906704e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 586.5 5526038.31718 100000000 3.02741243451e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 589.5 5499820.22008 100000000 3.00607739824e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 592.5 5473670.3988 100000000 2.98484369389e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 595.5 5447588.79766 100000000 2.96371105735e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 598.5 5421575.36282 100000000 2.94267922469e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 601.5 5395630.03337 100000000 2.92174793225e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 604.5 5369752.71775 100000000 2.90091691663e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 607.5 5343943.36171 100000000 2.88018591472e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 610.5 5318201.91324 100000000 2.85955466361e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 613.5 5292528.31735 100000000 2.83902290061e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 616.5 5266922.51648 100000000 2.81859036325e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 619.5 5241384.45095 100000000 2.79825678927e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 622.5 5215914.05931 100000000 2.77802191665e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 625.5 5190511.27876 100000000 2.75788548362e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 628.5 5165176.04544 100000000 2.73784722865e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 631.5 5139908.29479 100000000 2.71790689045e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 634.5 5114707.96187 100000000 2.69806420799e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 637.5 5089574.98164 100000000 2.6783189205e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 640.5 5064509.28924 100000000 2.65867076743e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 643.5 5039510.82021 100000000 2.63911948852e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 646.5 5014579.5108 100000000 2.61966482373e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 649.5 4989715.29816 100000000 2.60030651328e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 652.5 4964918.12051 100000000 2.58104429761e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 655.5 4940187.9174 100000000 2.56187791743e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 658.5 4915524.62986 100000000 2.54280711365e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 661.5 4890928.20056 100000000 2.52383162742e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 664.5 4866398.57397 100000000 2.50495120011e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 667.5 4841935.69648 100000000 2.4861655733e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 670.5 4817539.5157 100000000 2.46747448876e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 673.5 4793209.9469 100000000 2.44887768855e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 676.5 4768946.92451 100000000 2.43037491501e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 679.5 4744750.39876 100000000 2.41196591069e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 682.5 4720620.3166 100000000 2.39365041835e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 685.5 4696556.62211 100000000 2.37542818098e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 688.5 4672559.25701 100000000 2.35729894175e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 691.5 4648628.1611 100000000 2.3392624441e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 694.5 4624763.27267 100000000 2.32131843167e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 697.5 4600964.5289 100000000 2.30346664838e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 700.5 4577231.86626 100000000 2.28570683835e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 703.5 4553565.22082 100000000 2.26803874599e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 706.5 4529964.5286 100000000 2.25046211592e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 709.5 4506429.72587 100000000 2.23297669304e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 712.5 4482960.74946 100000000 2.21558222247e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 715.5 4459557.53701 100000000 2.19827844959e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 718.5 4436220.0272 100000000 2.18106512e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 721.5 4412948.16004 100000000 2.16394197956e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 724.5 4389741.87703 100000000 2.14690877434e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 727.5 4366601.12137 100000000 2.12996525063e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 730.5 4343525.83815 100000000 2.11311115497e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 733.5 4320515.97452 100000000 2.09634623406e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 736.5 4297571.47982 100000000 2.07967023484e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 739.5 4274692.27924 100000000 2.06308290446e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 742.5 4251878.30032 100000000 2.04658399039e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 745.5 4229129.49521 100000000 2.03017324031e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 748.5 4206445.81242 100000000 2.01385040209e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 751.5 4183827.19739 100000000 1.99761522381e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 754.5 4161273.59301 100000000 1.98146745378e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 757.5 4138784.94018 100000000 1.96540684052e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 760.5 4116361.1782 100000000 1.94943313278e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 763.5 4094002.24528 100000000 1.93354607956e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 766.5 4071708.07896 100000000 1.91774543008e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 769.5 4049478.61644 100000000 1.90203093382e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 772.5 4027313.79505 100000000 1.88640234051e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 775.5 4005213.55249 100000000 1.87085940009e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 778.5 3983177.82723 100000000 1.85540186277e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 781.5 3961206.55876 100000000 1.84002947898e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 784.5 3939299.68788 100000000 1.8247419994e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 787.5 3917457.15696 100000000 1.8095391749e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 790.5 3895678.91014 100000000 1.79442075661e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 793.5 3873964.89361 100000000 1.77938649585e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 796.5 3852315.05572 100000000 1.76443614415e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 799.5 3830729.34722 100000000 1.74956945323e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 802.5 3809207.69679 100000000 1.73478617505e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 805.5 3787750.03317 100000000 1.72008606184e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 808.5 3766356.31 100000000 1.70546886607e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 811.5 3745026.47709 100000000 1.69093434037e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 814.5 3723760.48101 100000000 1.67648223761e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 817.5 3702558.26566 100000000 1.66211231084e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 820.5 3681419.77291 100000000 1.64782431333e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 823.5 3660344.94308 100000000 1.63361799861e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 826.5 3639333.71547 100000000 1.6194931204e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 829.5 3618386.0288 100000000 1.6054494327e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 832.5 3597501.82171 100000000 1.59148668971e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 835.5 3576681.03308 100000000 1.57760464588e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 838.5 3555923.60251 100000000 1.56380305591e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 841.5 3535229.47059 100000000 1.55008167472e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 844.5 3514598.57925 100000000 1.53644025744e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 847.5 3494030.87209 100000000 1.52287855945e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 850.5 3473526.29461 100000000 1.50939633633e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 853.5 3453084.79448 100000000 1.49599334388e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 856.5 3432706.32176 100000000 1.48266933807e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 859.5 3412390.82903 100000000 1.46942407508e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 862.5 3392138.24349 100000000 1.45625731132e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 865.5 3371948.50081 100000000 1.44316880347e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 868.5 3351821.55597 100000000 1.43015830841e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 871.5 3331757.35987 100000000 1.41722558321e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 874.5 3311755.86005 100000000 1.40437038513e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 877.5 3291817.00139 100000000 1.39159247164e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 880.5 3271940.72673 100000000 1.37889160044e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 883.5 3252126.9775 100000000 1.36626752943e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 886.5 3232375.69425 100000000 1.35372001676e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 889.5 3212686.81722 100000000 1.3412488208e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 892.5 3193060.28676 100000000 1.32885370016e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 895.5 3173496.04386 100000000 1.31653441366e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 898.5 3153994.0305 100000000 1.30429072036e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 901.5 3134554.19007 100000000 1.29212237956e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 904.5 3115176.46771 100000000 1.28002915073e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 907.5 3095860.81065 100000000 1.2680107936e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 910.5 3076607.16848 100000000 1.25606706806e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 913.5 3057415.49341 100000000 1.24419773421e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 916.5 3038285.73938 100000000 1.23240255232e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 919.5 3019217.83138 100000000 1.22068128291e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 922.5 3000211.71428 100000000 1.20903368674e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 925.5 2981267.34424 100000000 1.19745952477e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 928.5 2962384.67323 100000000 1.18595855811e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 931.5 2943563.64976 100000000 1.17453054811e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 934.5 2924804.21975 100000000 1.16317525628e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 937.5 2906106.32718 100000000 1.15189244437e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 940.5 2887469.91482 100000000 1.14068187434e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 943.5 2868894.92481 100000000 1.12954330838e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 946.5 2850381.29928 100000000 1.11847650888e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 949.5 2831928.98086 100000000 1.10748123849e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 952.5 2813537.91322 100000000 1.09655726005e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 955.5 2795208.04147 100000000 1.08570433663e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 958.5 2776939.31262 100000000 1.0749222315e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 961.5 2758731.67595 100000000 1.06421070814e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 964.5 2740585.08332 100000000 1.05356953021e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 967.5 2722499.48956 100000000 1.04299846156e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 970.5 2704474.84886 100000000 1.03249726621e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 973.5 2686511.08667 100000000 1.02206570843e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 976.5 2668608.15623 100000000 1.01170355269e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 979.5 2650766.01503 100000000 1.00141056367e+23 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 982.5 2632984.6162 100000000 9.91186506201e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 985.5 2615263.90944 100000000 9.81031145304e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 988.5 2597603.84193 100000000 9.70944246205e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 991.5 2580004.35909 100000000 9.60925574336e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 994.5 2562465.40541 100000000 9.50974895342e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 997.5 2544986.92507 100000000 9.41091975082e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 1000.5 2527568.86269 100000000 9.31276579633e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 1003.5 2510211.16383 100000000 9.21528475282e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 1006.5 2492913.77559 100000000 9.11847428524e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 1009.5 2475676.64711 100000000 9.02233206056e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 1012.5 2458499.72999 100000000 8.92685574766e+22 1e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 + 1015.5 2441382.97871 100000000 8.83204301725e+22 1e-10 3.08157359444e-17 2.35851922622e-17 0 0 0 0 4.06481827298e-19 7.03741197327e-19 0 0 0 0 0 0 0 0 0 0 0 1 + 1018.5 2424326.35105 100000000 8.73789154172e+22 1e-10 6.16314718889e-17 4.71703845244e-17 0 0 0 0 8.12963654596e-19 1.40748239465e-18 0 0 0 0 0 0 0 0 0 0 0 1 + 1021.5 2407329.80096 100000000 8.64439899518e+22 1e-10 2.46525887555e-16 1.88681538098e-16 0 0 0 0 3.25185461838e-18 5.62992957862e-18 0 0 0 0 0 0 0 0 0 0 0 1 + 1024.5 2390393.25755 100000000 8.551563054e+22 1e-10 7.70393398611e-16 5.89629806555e-16 0 0 0 0 1.01620456825e-17 1.75935299332e-17 0 0 0 0 0 0 0 0 0 0 0 1 + 1027.5 2373516.68042 100000000 8.4593813967e+22 1e-10 2.58852181933e-15 1.98115615003e-15 0 0 0 0 3.4144473493e-17 5.91142605755e-17 0 0 0 0 0 0 0 0 0 0 0 1 + 1030.5 2356700.02873 100000000 8.36785170338e+22 1e-10 8.5975903285e-15 6.58026864116e-15 0 0 0 0 1.13408429816e-16 1.96343794054e-16 0 0 0 0 0 0 0 0 0 0 0 1 + 1033.5 2339943.25712 100000000 8.27697165579e+22 1e-10 2.85045557486e-14 2.18163028425e-14 0 0 0 0 3.75995690251e-16 6.50960607528e-16 0 0 0 0 0 0 0 0 0 0 0 1 + 1036.5 2323246.31683 100000000 8.18673893754e+22 1e-10 9.46659408213e-14 7.24537106295e-14 0 0 0 0 1.24871217346e-15 2.16189295819e-15 0 0 0 0 0 0 0 0 0 0 0 1 + 1039.5 2306609.15667 100000000 8.09715123413e+22 1e-10 3.14258875161e-13 2.4052179069e-13 0 0 0 0 4.14530167479e-15 7.17675273034e-15 0 0 0 0 0 0 0 0 0 0 0 0.999999999999 + 1042.5 2290031.72398 100000000 8.00820623309e+22 1e-10 1.04339000334e-12 7.98571024806e-13 0 0 0 0 1.37630681905e-14 2.38279732003e-14 0 0 0 0 0 0 0 0 0 0 0 0.999999999998 + 1045.5 2273513.96545 100000000.002 7.91990162399e+22 1e-10 3.46412014046e-12 2.65130580296e-12 0 0 0 0 4.56942481339e-14 7.91103629563e-14 0 0 0 0 0 0 0 0 0 0 0 0.999999999994 + 1048.5 2257055.82793 100000000.005 7.83223509849e+22 1e-10 1.15013263108e-11 8.80267772283e-12 0 0 0 0 1.51710805921e-13 2.62656623337e-13 0 0 0 0 0 0 0 0 0 0 0 0.999999999979 + 1051.5 2240657.25915 100000000.017 7.74520435026e+22 1e-10 3.81857506158e-11 2.92259211844e-11 0 0 0 0 5.03697647042e-13 8.72050757045e-13 0 0 0 0 0 0 0 0 0 0 0 0.999999999931 + 1054.5 2224318.20833 100000000.057 7.65880707496e+22 1e-10 1.2678117635e-10 9.70334904494e-11 0 0 0 0 1.67233533942e-12 2.89531092181e-12 0 0 0 0 0 0 0 0 0 0 0 0.999999999772 + 1057.5 2208038.62668 100000000.19 7.5730409702e+22 1e-10 4.20928377158e-10 3.22162570506e-10 0 0 0 0 5.55234949499e-12 9.6127718859e-12 0 0 0 0 0 0 0 0 0 0 0 0.999999999242 + 1060.5 2191818.4676 100000000.629 7.48790373543e+22 1e-10 1.39753137436e-09 1.06961736095e-09 0 0 0 0 1.84344488082e-11 3.19155253817e-11 0 0 0 0 0 0 0 0 0 0 0 0.999999997483 + 1063.5 2175657.68596 100000002.09 7.40339307186e+22 1e-10 4.63996754789e-09 3.55125468705e-09 0 0 0 0 6.12045252099e-11 1.05963275503e-10 0 0 0 0 0 0 0 0 0 0 0 0.999999991642 + 1066.5 2159556.23463 100000006.938 7.31950668249e+22 1e-10 1.54052344594e-08 1.17905805406e-08 0 0 0 0 2.03206175712e-10 3.51810456941e-10 0 0 0 0 0 0 0 0 0 0 0 0.999999972249 + 1069.5 2143514.04188 100000023.034 7.23624227264e+22 1e-10 5.11471763556e-08 3.91461034775e-08 0 0 0 0 6.74668219628e-10 1.16805177696e-09 0 0 0 0 0 0 0 0 0 0 0 0.999999907864 + 1072.5 2127530.95382 100000076.476 7.15359755198e+22 1e-10 1.69814569524e-07 1.29969612875e-07 0 0 0 0 2.23997689513e-09 3.87806764363e-09 0 0 0 0 0 0 0 0 0 0 0 0.999999694098 + 1075.5 2111606.64425 100000253.908 7.07157023945e+22 1e-10 5.6380382582e-07 4.31514004862e-07 0 0 0 0 7.43697991735e-09 1.28756288721e-08 0 0 0 0 0 0 0 0 0 0 0 0.99999898437 + 1078.5 2095740.11589 100000843.001 6.99015807965e+22 1e-10 1.87189021237e-06 1.43267357405e-06 0 0 0 0 2.46915846954e-08 4.27484925783e-08 0 0 0 0 0 0 0 0 0 0 0 0.999996627996 + 1081.5 2079928.1617 100002798.84 6.90935889847e+22 1e-10 6.21484575009e-06 4.75660656491e-06 0 0 0 0 8.1978306844e-08 1.41928883258e-07 0 0 0 0 0 0 0 0 0 0 0 0.99998880464 + 1084.5 2064160.29678 100009292.234 6.8291707868e+22 1e-10 2.06334786019e-05 1.57920797589e-05 0 0 0 0 2.72170494346e-07 4.71208247712e-07 0 0 0 0 0 0 0 0 0 0 0 0.999962831063 + 1087.5 2048402.06127 100030848.644 6.74959270517e+22 1e-10 6.84996543258e-05 5.24270301408e-05 0 0 0 0 9.03559944499e-07 1.56433157523e-06 0 0 0 0 0 0 0 0 0 0 0 0.999876605424 + 1090.5 2032540.26318 100102391.791 6.6706264712e+22 1e-10 0.000227361770163 0.000174014051523 0 0 0 0 2.99906606028e-06 5.19227723944e-06 0 0 0 0 0 0 0 0 0 0 0 0.999590432835 + 1093.5 2016206.04296 100339629.988 6.59228323017e+22 1e-10 0.000754151033425 0.000577198517996 0 0 0 0 9.94779714747e-06 1.72226018611e-05 0 0 0 0 0 0 0 0 0 0 0 0.99864148005 + 1096.5 1998230.31405 101124068.29 6.51460388666e+22 1e-10 0.00249600239571 0.00191034530202 0 0 0 0 3.29240754326e-05 5.70013877862e-05 0 0 0 0 0 0 0 0 0 0 0 0.995503726839 + 1099.5 1975214.16965 103693507.923 6.43771773591e+22 1e-10 0.00820146311861 0.0062770879408 0 0 0 0 0.000108183225641 0.000187297408224 0 0 0 0 0 0 0 0 0 0 0 0.985225968307 + 1102.5 1939304.46705 111856468.294 6.36197180029e+22 1e-10 0.0263273802175 0.0201499754966 0 0 0 0 0.000347277171574 0.000601240291977 0 0 0 0 0 0 0 0 0 0 0 0.952574126822 + 1105.5 1878320.66071 135462766.225 6.28810075406e+22 1e-10 0.0787453486814 0.0602686949211 0 0 0 0 0.0010387080575 0.00179831324051 0 0 0 0 0 0 0 0 0 0 0 0.8581489351 + 1108.5 1777911.84146 188585923.444 6.21735265515e+22 1e-10 0.19670573315 0.150551086749 0 0 0 0 0.0025946907773 0.00449218309819 0 0 0 0 0 0 0 0 0 0 0 0.645656306226 + 1111.5 1646596.27013 261414076.556 6.15108842319e+22 1e-10 0.358421214516 0.274321965585 0 0 0 0 0.00472783484651 0.008185291278 0 0 0 0 0 0 0 0 0 0 0 0.354343693774 + 1114.5 1544362.4397 314537233.775 6.08934337215e+22 1e-10 0.476381598985 0.364604357413 0 0 0 0 0.00628381756631 0.0108791611357 0 0 0 0 0 0 0 0 0 0 0 0.1418510649 + 1117.5 1492608.13664 338143531.706 6.0305779915e+22 1e-10 0.528799567448 0.404723076838 0 0 0 0 0.00697524845224 0.0120762340842 0 0 0 0 0 0 0 0 0 0 0 0.0474258731776 + 1120.5 1468135.43758 346306492.077 5.97328760334e+22 1e-10 0.546925484547 0.418595964393 0 0 0 0 0.00721434239817 0.012490176968 0 0 0 0 0 0 0 0 0 0 0 0.0147740316933 + 1123.5 1453621.85944 348875931.71 5.91675159964e+22 1e-10 0.55263094527 0.422962707032 0 0 0 0 0.00728960154838 0.0126204729884 0 0 0 0 0 0 0 0 0 0 0 0.00449627316094 + 1126.5 1442308.57052 349660370.012 5.86071534582e+22 1e-10 0.554372796632 0.424295853816 0 0 0 0 0.00731257782666 0.0126602517743 0 0 0 0 0 0 0 0 0 0 0 0.00135851995043 + 1129.5 1432000 349897608.209 5.80509747498e+22 1e-10 0.554899585896 0.424699038283 0 0 0 0 0.00731952655775 0.0126722820989 0 0 0 0 0 0 0 0 0 0 0 0.000409567164986 + 1132.5 1421338.76834 348662589.844 5.74988536982e+22 0 0.567743806966 0.412256193034 0 0 0 0 0.00732162206387 0.0126759100446 0 0 0 0 0 0 0 0 0 0 0 0.000123394575986 + 1135.5 1411117.4083 347429198.528 5.6950773428e+22 0 0.580034088848 0.399965911152 0 0 0 0 0.00732225345332 0.0126770031679 0 0 0 0 0 0 0 0 0 0 0 3.71689371028e-05 + 1138.5 1400927.51154 346197275.57 5.6406642736e+22 0 0.591985679752 0.388014320248 0 0 0 0 0.0073224436455 0.0126773324473 0 0 0 0 0 0 0 0 0 0 0 1.11953595051e-05 + 1141.5 1390816.34873 344966817.907 5.5866440299e+22 0 0.603607190529 0.376392809471 0 0 0 0 0.00732250093223 0.0126774316277 0 0 0 0 0 0 0 0 0 0 0 3.37200386369e-06 + 1144.5 1380796.06608 343737795.827 5.53301332968e+22 0 0.614907271927 0.365092728073 0 0 0 0 0.00732251818683 0.0126774615006 0 0 0 0 0 0 0 0 0 0 0 1.01563043953e-06 + 1147.5 1370868.38998 342510172.536 5.47976862245e+22 0 0.625894414011 0.354105585989 0 0 0 0 0.00732252338383 0.0126774704981 0 0 0 0 0 0 0 0 0 0 0 3.05902226883e-07 + 1150.5 1361032.01205 341283910.007 5.42690634967e+22 0 0.636576893406 0.343423106594 0 0 0 0 0.00732252494914 0.0126774732081 0 0 0 0 0 0 0 0 0 0 0 9.21359998296e-08 + 1153.5 1351284.79182 340058970.7 5.37442301952e+22 0 0.646962763562 0.333037236438 0 0 0 0 0.0073225254206 0.0126774740244 0 0 0 0 0 0 0 0 0 0 0 2.77508316326e-08 + 1156.5 1341624.41133 338835318.048 5.32231522644e+22 0 0.657059857352 0.322940142648 0 0 0 0 0.00732252556261 0.0126774742702 0 0 0 0 0 0 0 0 0 0 0 8.35838998015e-09 + 1159.5 1332048.56756 337612916.572 5.27057965429e+22 0 0.666875793035 0.313124206965 0 0 0 0 0.00732252560538 0.0126774743443 0 0 0 0 0 0 0 0 0 0 0 2.51749865399e-09 + 1162.5 1322555.02693 336391731.877 5.21921307474e+22 0 0.676417980972 0.303582019028 0 0 0 0 0.00732252561826 0.0126774743666 0 0 0 0 0 0 0 0 0 0 0 7.58256124556e-10 + 1165.5 1313141.63872 335171730.633 5.16821234426e+22 0 0.685693630339 0.294306369661 0 0 0 0 0.00732252562214 0.0126774743733 0 0 0 0 0 0 0 0 0 0 0 2.28382313061e-10 + 1168.5 1303806.33649 333952880.528 5.11757440094e+22 0 0.694709755644 0.285290244356 0 0 0 0 0.00732252562331 0.0126774743753 0 0 0 0 0 0 0 0 0 0 0 6.87874202043e-11 + 1171.5 1294547.13584 332735150.237 5.06729626125e+22 0 0.703473182981 0.276526817019 0 0 0 0 0.00732252562366 0.0126774743759 0 0 0 0 0 0 0 0 0 0 0 2.07183159517e-11 + 1174.5 1285362.13147 331518509.379 5.01737501693e+22 0 0.711990556028 0.268009443972 0 0 0 0 0.00732252562377 0.0126774743761 0 0 0 0 0 0 0 0 0 0 0 6.24023055451e-12 + 1177.5 1276249.49385 330302928.482 4.96780783198e+22 0 0.720268341792 0.259731658208 0 0 0 0 0.0073225256238 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 1.87960758069e-12 + 1180.5 1267207.46615 329088378.945 4.9185919398e+22 0 0.728312836123 0.251687163877 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 5.66102720256e-13 + 1183.5 1258234.36068 327874833.008 4.86972464045e+22 0 0.736130168988 0.243869831012 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 1.70530256582e-13 + 1186.5 1249328.5269 326662263.73 4.82120329858e+22 0 0.74372630945 0.23627369055 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 5.12923037377e-14 + 1189.5 1240488.39044 325450644.965 4.77302534123e+22 0 0.751107070488 0.228892929512 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 1.55431223448e-14 + 1192.5 1231712.44759 324239951.324 4.72518825501e+22 0 0.758278113746 0.221721886254 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 4.66293670343e-15 + 1195.5 1222999.24463 323030158.146 4.67768958377e+22 0 0.765244954021 0.214755045979 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 1.33226762955e-15 + 1198.5 1214347.37679 321821241.474 4.63052692664e+22 0 0.77201296354 0.20798703646 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 4.4408920985e-16 + 1201.5 1205755.48725 320613178.035 4.58369793622e+22 0 0.778587376077 0.201412623923 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 1.11022302463e-16 + 1204.5 1197222.26604 319405945.225 4.5372003167e+22 0 0.784973290927 0.195026709073 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1207.5 1188746.44894 318199521.08 4.49103182206e+22 0 0.791175676733 0.188824323267 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1210.5 1180326.81638 316993884.266 4.44519025438e+22 0 0.797199375186 0.182800624814 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1213.5 1171962.19227 315789014.049 4.39967346206e+22 0 0.803049104585 0.176950895415 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1216.5 1163651.44293 314584890.28 4.35447933822e+22 0 0.808729463282 0.171270536718 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1219.5 1155393.4759 313381493.377 4.30960581904e+22 0 0.814244932995 0.165755067005 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1222.5 1147187.23883 312178804.302 4.26505088221e+22 0 0.819599882021 0.160400117979 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1225.5 1139031.71833 310976804.542 4.22081254539e+22 0 0.824798568326 0.155201431674 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1228.5 1130925.93889 309775476.09 4.17688886472e+22 0 0.829845142534 0.150154857466 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1231.5 1122868.96172 308574801.428 4.1332779334e+22 0 0.834743650818 0.145256349182 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1234.5 1114859.86361 307374763.518 4.08997788063e+22 0 0.83949803765 0.14050196235 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1237.5 1106897.75287 306175345.794 4.04698687075e+22 0 0.84411214845 0.13588785155 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1240.5 1098981.78782 304976532.142 4.00430310163e+22 0 0.848589732238 0.131410267762 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1243.5 1091111.15079 303778306.873 3.96192480327e+22 0 0.852934444179 0.127065555821 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1246.5 1083285.04827 302580654.72 3.91985023682e+22 0 0.857149847995 0.122850152005 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1249.5 1075502.71093 301383560.824 3.87807769368e+22 0 0.861239418313 0.118760581687 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1252.5 1067763.39372 300187010.726 3.83660549455e+22 0 0.865206542941 0.114793457059 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1255.5 1060066.37573 298990990.357 3.79543198852e+22 0 0.869054525079 0.110945474921 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1258.5 1052410.96008 297795486.03 3.75455555207e+22 0 0.872786585462 0.107213414538 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1261.5 1044796.47374 296600484.423 3.71397458822e+22 0 0.876405864446 0.103594135554 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1264.5 1037222.26729 295405972.571 3.67368752558e+22 0 0.879915424027 0.100084575973 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1267.5 1029687.71462 294211937.856 3.63369281743e+22 0 0.88331824981 0.0966817501905 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1270.5 1022192.21264 293018367.99 3.59398894084e+22 0 0.886617252905 0.0933827470947 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1273.5 1014735.18091 291825251.008 3.55457439578e+22 0 0.889815271791 0.0901847282091 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1276.5 1007316.06123 290632575.253 3.51544770424e+22 0 0.892915074102 0.0870849258976 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1279.5 999934.317166 289440329.361 3.47660740942e+22 0 0.895919358383 0.0840806416175 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1282.5 992589.410709 288248502.269 3.43805207528e+22 0 0.898830755744 0.0811692442562 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1285.5 985280.83007 287057083.205 3.39978028613e+22 0 0.901651831496 0.0783481685045 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1288.5 978008.093879 285866061.673 3.36179064545e+22 0 0.904385086774 0.0756149132261 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1291.5 970770.732431 284675427.436 3.32408177516e+22 0 0.907032960105 0.0729670398954 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1294.5 963568.288333 283485170.516 3.28665231511e+22 0 0.9095978289 0.0704021711005 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1297.5 956400.317055 282295281.186 3.24950092259e+22 0 0.912082010918 0.0679179890824 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1300.5 949266.387377 281105749.97 3.21262627186e+22 0 0.914487765689 0.065512234311 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1303.5 942166.081764 279916567.633 3.17602705358e+22 0 0.916817295905 0.063182704095 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1306.5 935098.996652 278727725.178 3.13970197432e+22 0 0.919072748773 0.0609272512268 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1309.5 928064.742669 277539213.838 3.10364975596e+22 0 0.921256217339 0.0587437826612 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1312.5 921062.944783 276351025.067 3.06786913521e+22 0 0.923369741773 0.056630258227 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1315.5 914093.242399 275163150.533 3.03235886299e+22 0 0.925415310629 0.0545846893705 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1318.5 907155.289393 273975582.108 2.9971177039e+22 0 0.927394862068 0.0526051379317 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1321.5 900248.754103 272788311.861 2.96214443565e+22 0 0.929310285051 0.0506897149495 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1324.5 893373.319265 271601332.047 2.92743784853e+22 0 0.931163420502 0.0488365794982 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1327.5 886528.670739 270414635.102 2.89299674503e+22 0 0.932956062436 0.0470439375638 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1330.5 879714.492968 269228213.655 2.85881993981e+22 0 0.934689959038 0.0453100409621 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1333.5 872930.504243 268042060.513 2.82490625911e+22 0 0.936366813749 0.043633186251 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1336.5 866176.428739 266856168.642 2.79125453996e+22 0 0.937988286336 0.0420117136637 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1339.5 859451.99625 265670531.167 2.75786362994e+22 0 0.939555993905 0.0404440060949 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1342.5 852756.94306 264485141.376 2.72473238696e+22 0 0.941071511891 0.038928488109 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1345.5 846091.012724 263299992.711 2.69185967902e+22 0 0.94253637503 0.0374636249697 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1348.5 839453.956734 262115078.772 2.65924438386e+22 0 0.94395207831 0.0360479216897 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1351.5 832845.535096 260930393.308 2.62688538869e+22 0 0.945320077898 0.0346799221018 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1354.5 826265.516819 259745930.218 2.59478158984e+22 0 0.946641792049 0.0333582079505 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1357.5 819713.680325 258561683.538 2.56293189237e+22 0 0.947918601997 0.0320813980032 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1360.5 813189.813776 257377647.442 2.53133520976e+22 0 0.949151852818 0.0308481471819 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1363.5 806693.715343 256193816.227 2.49999046347e+22 0 0.950342854286 0.0296571457141 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1366.5 800225.193399 255010184.311 2.46889658259e+22 0 0.951492881696 0.0285071183038 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1369.5 793784.066243 253826746.224 2.43805250341e+22 0 0.95260317668 0.0273968233204 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1372.5 787370.139047 252643496.61 2.40745716954e+22 0 0.953674947977 0.0263250520231 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1375.5 780983.235766 251460430.237 2.37710953174e+22 0 0.954709372205 0.0252906277946 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1378.5 774623.195809 250277541.975 2.34700854729e+22 0 0.955707594627 0.0242924053727 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1381.5 768289.85958 249094826.786 2.31715317967e+22 0 0.956670729888 0.0233292701123 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1384.5 761983.0697 247912279.731 2.28754239849e+22 0 0.957599862728 0.022400137272 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1387.5 755702.672102 246729895.971 2.25817517938e+22 0 0.958496048687 0.0215039513134 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1390.5 749448.517 245547670.761 2.22905050387e+22 0 0.959360314785 0.0206396852148 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1393.5 743220.459744 244365599.459 2.20016735917e+22 0 0.960193660202 0.0198063397982 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1396.5 737018.361558 243183677.512 2.17152473798e+22 0 0.96099705693 0.0190029430698 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1399.5 730842.090185 242001900.457 2.14312163824e+22 0 0.961771450426 0.0182285495745 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1402.5 724691.520429 240820263.916 2.11495706287e+22 0 0.962517760236 0.0174822397638 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1405.5 718566.534614 239638763.585 2.08703001951e+22 0 0.963236880623 0.0167631193771 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1408.5 712467.022956 238457395.231 2.05933952017e+22 0 0.963929681164 0.016070318836 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1411.5 706392.881948 237276154.68 2.03188458101e+22 0 0.964597007347 0.0154029926534 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1414.5 700343.991137 236095037.833 2.00466422252e+22 0 0.965239681134 0.0147603188657 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1417.5 694320.253452 234914040.666 1.97767746938e+22 0 0.965858501531 0.0141414984693 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1420.5 688321.578832 233733159.206 1.95092334993e+22 0 0.966454245142 0.013545754858 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1423.5 682347.875843 232552389.531 1.92440089598e+22 0 0.967027666715 0.0129723332851 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1426.5 676399.053167 231371727.775 1.8981091429e+22 0 0.967579499662 0.0124205003381 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1429.5 670475.02094 230191170.133 1.87204712957e+22 0 0.968110456575 0.0118895434246 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1432.5 664575.691932 229010712.858 1.84621389828e+22 0 0.968621229734 0.0113787702663 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1435.5 658700.982589 227830352.259 1.82060849462e+22 0 0.969112491596 0.0108875084038 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1438.5 652850.813945 226650084.703 1.79522996736e+22 0 0.969584895289 0.0104151047106 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1441.5 647025.112403 225469906.605 1.77007736819e+22 0 0.970039075083 0.00996092491748 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1444.5 641223.810411 224289814.422 1.74514975153e+22 0 0.970475646854 0.00952435314631 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1447.5 635446.847018 223109804.648 1.72044617431e+22 0 0.970895208546 0.0091047914538 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1450.5 629694.16688 221929873.8 1.69596569569e+22 0 0.971298340615 0.00870165938544 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1453.5 623965.696795 220750018.44 1.67170737733e+22 0 0.971685606453 0.00831439354662 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1456.5 618261.383981 219570235.169 1.64767028331e+22 0 0.972057552822 0.00794244717765 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1459.5 612581.181726 218390520.608 1.62385347967e+22 0 0.972414710269 0.00758528973081 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1462.5 606925.040077 217210871.399 1.60025603428e+22 0 0.972757593536 0.00724240646398 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1465.5 601292.907671 216031284.209 1.57687701699e+22 0 0.973086701955 0.00691329804485 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1468.5 595684.733364 214851755.739 1.55371549963e+22 0 0.973402519838 0.00659748016223 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1471.5 590100.467685 213672282.717 1.53077055599e+22 0 0.973705516855 0.00629448314456 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1474.5 584540.064097 212492861.908 1.5080412617e+22 0 0.973996148414 0.00600385158591 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1477.5 579003.480108 211313490.099 1.48552669412e+22 0 0.974274856021 0.00572514397945 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1480.5 573490.678218 210134164.1 1.46322593216e+22 0 0.974542067642 0.00545793235847 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1483.5 568001.626726 208954880.733 1.44113805606e+22 0 0.974798198055 0.00520180194488 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1486.5 562536.300397 207775636.819 1.41926214717e+22 0 0.975043649195 0.00495635080536 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1489.5 557094.66114 206596429.193 1.39759728806e+22 0 0.975278810481 0.00472118951898 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1492.5 551676.676948 205417254.706 1.37614256267e+22 0 0.975504059148 0.0044959408518 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1495.5 546282.329918 204238110.213 1.35489705589e+22 0 0.975719760567 0.00428023943293 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1498.5 540911.596947 203058992.559 1.3338598534e+22 0 0.97592626856 0.0040737314403 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1501.5 535564.452019 201879898.595 1.31303004186e+22 0 0.976123925703 0.00387607429664 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1504.5 530240.868251 200700825.179 1.29240670891e+22 0 0.976313063629 0.00368693637086 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1507.5 524940.819684 199521769.183 1.27198894325e+22 0 0.976494003315 0.00350599668517 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1510.5 519664.282858 198342727.49 1.25177583451e+22 0 0.976667055372 0.00333294462807 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1513.5 514411.238174 197163696.986 1.23176647318e+22 0 0.976832520327 0.00316747967319 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1516.5 509181.671054 195984674.557 1.21195995039e+22 0 0.976990688896 0.0030093111041 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1519.5 503975.572921 194805657.078 1.19235535772e+22 0 0.977141842255 0.0028581577452 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1522.5 498792.936896 193626641.399 1.17295178705e+22 0 0.977286252301 0.00271374769924 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1525.5 493633.739002 192447624.373 1.15374833087e+22 0 0.977424181906 0.00257581809401 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1528.5 488497.978681 191268602.844 1.13474408213e+22 0 0.977555885169 0.00244411483142 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1531.5 483385.652629 190089573.626 1.11593813387e+22 0 0.977681607659 0.00231839234051 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1534.5 478296.75257 188910533.513 1.09732957933e+22 0 0.97780158666 0.00219841334002 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1537.5 473231.267879 187731479.292 1.07891751213e+22 0 0.977916051394 0.00208394860602 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1540.5 468189.187888 186552407.742 1.06070102631e+22 0 0.978025223256 0.00197477674408 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1543.5 463170.503888 185373315.64 1.04267921628e+22 0 0.978129316034 0.00187068396614 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1546.5 458175.210865 184194199.75 1.0248511767e+22 0 0.978228536128 0.00177146387211 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1549.5 453203.308965 183015056.819 1.00721600234e+22 0 0.978323082764 0.00167691723631 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1552.5 448254.804725 181835883.561 9.89772787839e+21 0 0.978413148201 0.00158685179874 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1555.5 443329.701648 180656676.651 9.7252062764e+21 0 0.978498917938 0.00150108206225 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1558.5 438427.992536 179477432.747 9.55458616258e+21 0 0.978580570904 0.00141942909599 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1561.5 433549.691416 178298148.478 9.38585848073e+21 0 0.978658279659 0.0013417203411 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1564.5 428694.805441 177118820.422 9.21901417059e+21 0 0.978732210579 0.0012677894209 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1567.5 423863.33679 175939445.126 9.05404417007e+21 0 0.978802524042 0.00119747595783 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1570.5 419055.285745 174760019.115 8.89093941661e+21 0 0.978869374606 0.00113062539429 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1573.5 414270.653369 173580538.894 8.72969084739e+21 0 0.978932911183 0.00106708881712 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1576.5 409509.44381 172401000.949 8.57028939859e+21 0 0.978993277214 0.00100672278597 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1579.5 404771.666248 171221401.732 8.41272600379e+21 0 0.979050610834 0.000949389165656 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1582.5 400057.336532 170041737.65 8.25699159175e+21 0 0.979105045038 0.000894954962385 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1585.5 395366.470608 168862005.05 8.10307708507e+21 0 0.979156707835 0.000843292164591 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1588.5 390699.070333 167682200.244 7.9509734029e+21 0 0.979205722411 0.000794277588959 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1591.5 386055.1593 166502319.499 7.80067145947e+21 0 0.979252207271 0.000747792728844 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1594.5 381434.754066 165322359.013 7.65216216123e+21 0 0.979296276394 0.000703723606156 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1597.5 376837.865406 164142314.934 7.50543640936e+21 0 0.979338039371 0.000661960628629 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1600.5 372264.502085 162962183.377 7.36048510125e+21 0 0.97937760155 0.000622398450264 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1603.5 367696.468293 161781989.641 7.21730265348e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1606.5 362737.041808 161398485.125 7.07596376928e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1609.5 357812.001652 161013507.57 6.93653752937e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1612.5 352921.363771 160627044.476 6.79901062316e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1615.5 348065.123828 160239083.214 6.66336973781e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1618.5 343243.300471 159849611.025 6.52960155771e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1621.5 338455.90404 159458615.012 6.39769276164e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1624.5 333702.935396 159066082.145 6.2676300262e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1627.5 328984.392941 158671999.275 6.13940002817e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1630.5 324300.278534 158276353.127 6.01298944424e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1633.5 319650.6024 157879130.299 5.88838494878e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1636.5 315035.384897 157480317.247 5.76557321024e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1639.5 310454.626622 157079900.293 5.64454089301e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1642.5 305908.348248 156677865.621 5.52527465737e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1645.5 301396.564352 156274199.274 5.40776115678e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1648.5 296919.27845 155868887.158 5.2919870412e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1651.5 292476.491549 155461915.056 5.17793895971e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1654.5 288068.209283 155053268.627 5.0656035601e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1657.5 283694.447747 154642933.398 4.95496748596e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1660.5 279355.228445 154230894.751 4.84601737362e+21 0 0.98 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1663.5 273321.804231 153818440.867 4.73907436779e+21 0.00497547507793 0.975024524922 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1666.5 264013.095336 153409507.538 4.63510006473e+21 0.0202241681733 0.959775831827 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1669.5 255308.94573 153006538.251 4.53461124978e+21 0.0349616855548 0.945038314445 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1672.5 247146.097555 152609106.443 4.43738619891e+21 0.0492205448913 0.930779455109 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1675.5 239470.267827 152216829.793 4.3432259322e+21 0.0630299282332 0.916970071767 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1678.5 232234.573344 151829363.983 4.25195104544e+21 0.0764161466988 0.903583853301 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1681.5 225398.242794 151446397.571 4.16339909552e+21 0.0894030239136 0.890596976086 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1684.5 218925.654571 151067647.735 4.07742242137e+21 0.102012215596 0.877987784404 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1687.5 212785.498832 150692856.69 3.99388631319e+21 0.114263478057 0.865736521943 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1690.5 206950.127111 150321788.692 3.91266746957e+21 0.126174894469 0.853825105531 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1693.5 201395.02851 149954227.482 3.83365268196e+21 0.137763067804 0.842236932196 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1696.5 196098.392768 149589974.081 3.75673770494e+21 0.149043286516 0.830956713484 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1699.5 191040.734665 149228844.89 3.68182628378e+21 0.160029667159 0.819970332841 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1702.5 186204.568313 148870670.073 3.60882931766e+21 0.170735277109 0.809264722891 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1705.5 181574.17374 148515292.145 3.53766413107e+21 0.18117224141 0.79882775859 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1708.5 177135.349398 148162564.732 3.46825383834e+21 0.191351835986 0.788648164014 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1711.5 172875.234291 147812351.521 3.4005267904e+21 0.201284568766 0.778715431234 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1714.5 168782.155663 147464525.311 3.33441608544e+21 0.210980251454 0.769019748546 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1717.5 164845.496172 147118967.168 3.26985913481e+21 0.220448063195 0.759551936805 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1720.5 161055.573204 146775565.676 3.20679727789e+21 0.229696607056 0.750303392944 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1723.5 157403.519759 146434216.288 3.1451754434e+21 0.238733959694 0.741266040306 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1726.5 153881.220938 146094820.739 3.08494184607e+21 0.247567715849 0.732432284151 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1729.5 150481.214137 145757286.518 3.02604771489e+21 0.256205028196 0.723794971804 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1732.5 147196.625478 145421526.422 2.96844705292e+21 0.264652642563 0.715347357437 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1735.5 144021.1161 145087458.135 2.91209641993e+21 0.272916929824 0.707083070176 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1738.5 140948.833513 144755003.849 2.85695473468e+21 0.281003914881 0.698996085119 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1741.5 137974.367533 144424089.909 2.80298309527e+21 0.288919303019 0.691080696981 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1744.5 135092.695547 144094646.508 2.75014461857e+21 0.296668503457 0.683331496543 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1747.5 132299.15773 143766607.407 2.69840429496e+21 0.304256650645 0.675743349355 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1750.5 129589.421973 143439909.678 2.64772885479e+21 0.311688623853 0.668311376147 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1753.5 126959.446783 143114493.477 2.59808664868e+21 0.318969064723 0.661030935277 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1756.5 124405.460741 142790301.844 2.54944753908e+21 0.32610239318 0.65389760682 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1759.5 122018.46819 142198425.632 2.50176450883e+21 0.333095504676 0.646904495324 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1762.5 119696.379547 141609248.701 2.45499268579e+21 0.339954980085 0.640045019915 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1765.5 117436.318607 141022670.327 2.4091075087e+21 0.346684421519 0.633315578481 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1768.5 115235.579647 140438594.169 2.36408549639e+21 0.353287272686 0.626712727314 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1771.5 113091.628615 139856928.001 2.31990418159e+21 0.359766828596 0.620233171404 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1774.5 111002.082277 139277583.445 2.27654204853e+21 0.366126244716 0.613873755284 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1777.5 108964.69347 138700475.755 2.23397847742e+21 0.372368545109 0.607631454891 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1780.5 106977.343817 138125523.614 2.19219369321e+21 0.378496629951 0.601503370049 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1783.5 105038.036482 137552648.943 2.15116871712e+21 0.384513282635 0.595486717365 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1786.5 103144.889093 136981776.705 2.11088532102e+21 0.390421176469 0.589578823531 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1789.5 101296.126853 136412834.717 2.07132598444e+21 0.396222880975 0.583777119025 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1792.5 99490.0675097 135845753.498 2.03247385583e+21 0.401920867572 0.578079132428 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1795.5 97725.119815 135280466.124 1.99431271708e+21 0.40751751478 0.57248248522 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1798.5 95999.7797212 134716908.079 1.95682694902e+21 0.41301511328 0.56698488672 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1801.5 94312.6169762 134155017.136 1.92000150026e+21 0.418415870484 0.561584129516 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1804.5 92662.2728147 133594733.249 1.88382185908e+21 0.423721914654 0.556278085346 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1807.5 91047.4573402 133035998.452 1.8482740263e+21 0.428935298888 0.551064701112 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1810.5 89466.9466939 132478756.746 1.81334448912e+21 0.434058004948 0.545941995052 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1813.5 87919.5800902 131922953.985 1.77902019619e+21 0.439091946925 0.540908053075 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1816.5 86404.2528311 131368537.779 1.74528853452e+21 0.444038974616 0.535961025384 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1819.5 84919.9090504 130815457.422 1.71213730919e+21 0.448900876507 0.531099123493 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1822.5 83465.5488604 130263663.799 1.67955472309e+21 0.453679382745 0.526320617255 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1825.5 82040.2149652 129713109.307 1.64752935778e+21 0.458376167934 0.521623832066 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1828.5 80642.9919232 129163747.806 1.61605015725e+21 0.462992853535 0.517007146465 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1831.5 79273.005649 128615534.555 1.58510641172e+21 0.467531010223 0.512468989777 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1834.5 77929.4225715 128068426.151 1.55468774186e+21 0.471992160213 0.508007839787 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1837.5 76611.4485247 127522380.453 1.5247840833e+21 0.476377779528 0.503622220472 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1840.5 75318.3256427 126977356.512 1.495385672e+21 0.480689300146 0.499310699854 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1843.5 74049.3235098 126433314.535 1.46648303189e+21 0.484928111811 0.495071888189 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1846.5 72803.7491683 125890215.826 1.43806696233e+21 0.489095563874 0.490904436126 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1849.5 71580.935982 125348022.732 1.41012852575e+21 0.493192967101 0.486807032899 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1852.5 70380.2427578 124806698.614 1.38265903767e+21 0.497221595146 0.482778404854 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1855.5 69201.0543058 124266207.818 1.35565005668e+21 0.501182686009 0.478817313991 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1858.5 68042.781603 123726515.636 1.32909337444e+21 0.505077443515 0.474922556485 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1861.5 66904.8616352 123187588.249 1.30298100547e+21 0.508907038796 0.471092961204 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1864.5 65786.75586 122649392.682 1.27730517748e+21 0.512672611725 0.467327388275 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1867.5 64687.9419366 122111896.777 1.25205832346e+21 0.516375272067 0.463624727933 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1870.5 63607.9234875 121575069.159 1.2272330735e+21 0.520016100681 0.459983899319 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1873.5 62546.221018 121038879.196 1.20282224654e+21 0.523596150728 0.456403849272 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1876.5 61502.3710037 120503296.986 1.17881884398e+21 0.527116448609 0.452883551391 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1879.5 60475.926999 119968293.342 1.15521604332e+21 0.530577994904 0.449422005096 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1882.5 59466.4603273 119433839.768 1.13200719137e+21 0.533981765355 0.446018234645 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1885.5 58473.5604257 118899908.417 1.10918579736e+21 0.53732871189 0.44267128811 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1888.5 57496.8334414 118366472.05 1.08674552614e+21 0.540619763608 0.439380236392 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1891.5 56535.8954443 117833504.029 1.0646801931e+21 0.543855827536 0.436144172464 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1894.5 55590.381538 117300978.287 1.04298375851e+21 0.54703778945 0.43296221055 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1897.5 54659.937183 116768869.301 1.02165032183e+21 0.550166514711 0.429833485289 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1900.5 53744.2183217 116237152.092 1.00067411774e+21 0.553242848854 0.426757151146 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1903.5 52842.8927522 115705802.22 9.80049511751e+20 0.556267618222 0.423732381778 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1906.5 51955.6410759 115174795.76 9.59770995456e+20 0.559241630669 0.420758369331 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1909.5 51082.1572888 114644109.27 9.39833181472e+20 0.562165676298 0.417834323702 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1912.5 50222.1457086 114113719.759 9.20230798842e+20 0.56504052814 0.41495947186 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1915.5 49375.3185188 113583604.688 9.00958689514e+20 0.567866942665 0.412133057335 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1918.5 48541.4012547 113053741.944 8.82011804238e+20 0.570645660388 0.409354339612 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1921.5 47720.1253139 112524109.824 8.63385198847e+20 0.573377406413 0.406622593587 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1924.5 46911.2295849 111994687.048 8.45074031674e+20 0.576062890808 0.403937109192 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1927.5 46114.4618955 111465452.752 8.27073560373e+20 0.57870280908 0.40129719092 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1930.5 45329.580038 110936386.465 8.09379138258e+20 0.581297842703 0.398702157297 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1933.5 44556.3520146 110407468.072 7.91986210406e+20 0.583848659693 0.396151340307 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1936.5 43794.5494509 109878677.812 7.74890310973e+20 0.586355915005 0.393644084995 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1939.5 43043.955003 109349996.266 7.58087060361e+20 0.588820250942 0.391179749058 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1942.5 42304.3565923 108821404.336 7.41572162067e+20 0.591242297623 0.388757702377 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1945.5 41575.5464549 108292883.254 7.25341400827e+20 0.59362267325 0.38637732675 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1948.5 40857.3229986 107764414.592 7.09390640588e+20 0.59596198441 0.38403801559 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1951.5 40149.4921754 107235980.25 6.93715821852e+20 0.598260826462 0.381739173538 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1954.5 39451.8684357 106707562.417 6.78312958574e+20 0.600519783993 0.379480216007 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1957.5 38764.269839 106179143.564 6.63178135818e+20 0.60273943116 0.37726056884 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1960.5 38086.5211146 105650706.438 6.48307507768e+20 0.604920331985 0.375079668015 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1963.5 37418.4527296 105122234.043 6.33697295329e+20 0.607063040702 0.372936959298 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1966.5 36759.8973481 104593709.65 6.19343784589e+20 0.609168101988 0.370831898012 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1969.5 36110.691995 104065116.813 6.05243325551e+20 0.611236051145 0.368763948855 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1972.5 35470.6796775 103536439.359 5.91392330133e+20 0.613267414395 0.366732585605 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1975.5 34839.710539 103007661.357 5.77787269626e+20 0.615262709252 0.364737290748 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1978.5 34217.637282 102478767.105 5.64424672822e+20 0.617222444799 0.362777555201 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1981.5 33604.3179652 101949741.124 5.51301124482e+20 0.619147121907 0.360852878093 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1984.5 32999.614907 101420568.147 5.38413263471e+20 0.621037233516 0.358962766484 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1987.5 32403.3915487 100891233.129 5.25757781722e+20 0.62289326478 0.35710673522 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1990.5 31815.5147945 100361721.272 5.13331423345e+20 0.624715693203 0.355284306797 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1993.5 31235.8567619 99832018.0085 5.01130982949e+20 0.626504988883 0.353495011117 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1996.5 30664.2956245 99302108.9674 4.89153303462e+20 0.628261614829 0.351738385171 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 1999.5 30100.7100042 98771979.9692 4.77395274873e+20 0.629986027151 0.350013972849 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2002.5 29544.9848959 98241617.0212 4.65853832909e+20 0.631678675249 0.348321324751 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2005.5 28997.0063265 97711006.3038 4.54525957608e+20 0.633340002027 0.346659997973 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2008.5 28456.6614143 97180134.2025 4.434086729e+20 0.634970443949 0.345029556051 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2011.5 27923.8407226 96648987.3212 4.32499045737e+20 0.636570431172 0.343429568828 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2014.5 27398.4399859 96117552.4539 4.2179418442e+20 0.638140387787 0.341859612213 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2017.5 26880.3582406 95585816.5551 4.11291236963e+20 0.639680732061 0.340319267939 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2020.5 26369.4959115 95053766.7417 4.00987390184e+20 0.641191876571 0.338808123429 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2023.5 25865.7577197 94521390.2851 3.90879868607e+20 0.642674228363 0.337325771637 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2026.5 25369.0476987 93988674.6216 3.80965933758e+20 0.644128189057 0.335871810943 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2029.5 24879.2719134 93455607.3881 3.71242883913e+20 0.645554154884 0.334445845116 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2032.5 24396.3406259 92922176.4073 3.61708052887e+20 0.646952516861 0.333047483139 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2035.5 23920.1682936 92388369.6447 3.52358808411e+20 0.648323661033 0.331676338967 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2038.5 23450.6692366 91854175.2097 3.43192551349e+20 0.649667968585 0.330332031415 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2041.5 22987.7624294 91319581.3489 3.34206714821e+20 0.65098581597 0.32901418403 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2044.5 22531.3656349 90784576.4508 3.25398763541e+20 0.65227757501 0.32772242499 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2047.5 22081.3978274 90249149.0919 3.16766193811e+20 0.653543612892 0.326456387108 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2050.5 21637.7816947 89713288.0258 3.08306532574e+20 0.654784292311 0.325215707689 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2053.5 21200.4437737 89176982.1369 3.00017335945e+20 0.655999971682 0.324000028318 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2056.5 20769.3103467 88640220.437 2.91896188523e+20 0.657191005245 0.322808994755 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2059.5 20344.31155 88102992.0614 2.83940702686e+20 0.658357743164 0.321642256836 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2062.5 19925.3759003 87565286.2808 2.76148518164e+20 0.659500531591 0.320499468409 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2065.5 19512.4331157 87027092.5506 2.6851730212e+20 0.660619712658 0.319380287342 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2068.5 19105.4167812 86488400.4885 2.61044748165e+20 0.661715624614 0.318284375386 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2071.5 18704.2627744 85949199.831 2.53728575171e+20 0.662788602007 0.317211397993 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2074.5 18308.9078523 85409480.4277 2.46566526654e+20 0.663838975768 0.316161024232 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2077.5 17919.2904283 84869232.2425 2.39556370287e+20 0.664867073287 0.315132926713 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2080.5 17535.347452 84328445.3904 2.32695897857e+20 0.665873218416 0.314126781584 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2083.5 17157.0179853 83787110.171 2.25982925145e+20 0.666857731489 0.313142268511 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2086.5 16784.2451783 83245217.0152 2.19415290723e+20 0.667820929498 0.312179070502 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2089.5 16416.9717365 82702756.466 2.1299085525e+20 0.668763126194 0.311236873806 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2092.5 16055.1434912 82159719.1705 2.06707500953e+20 0.669684632167 0.310315367833 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2095.5 15698.7042745 81616095.8975 2.00563131411e+20 0.670585754874 0.309414245126 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2098.5 15347.5984539 81071877.6016 1.94555671833e+20 0.6714667986 0.3085332014 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2101.5 15001.7741992 80527055.3906 1.88683068225e+20 0.672328064581 0.307671935419 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2104.5 14661.1802882 79981620.485 1.82943286531e+20 0.673169851127 0.306830148873 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2107.5 14325.7676449 79435564.201 1.77334312106e+20 0.673992453703 0.306007546297 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2110.5 13995.4859119 78888877.9674 1.71854149543e+20 0.674796164953 0.305203835047 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2113.5 13670.2842614 78341553.3964 1.66500823014e+20 0.675581274647 0.304418725353 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2116.5 13350.1153093 77793582.2657 1.61272375697e+20 0.67634806977 0.30365193023 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2119.5 13034.9326606 77244956.4667 1.56166868915e+20 0.677096834645 0.302903165355 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2122.5 12724.6915528 76695667.9815 1.5118238163e+20 0.677827851008 0.302172148992 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2125.5 12419.3458362 76145708.9076 1.46317010395e+20 0.678541398015 0.301458601985 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2128.5 12118.8488407 75595071.5349 1.41568869725e+20 0.679237752188 0.300762247812 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2131.5 11823.1574392 75043748.3174 1.3693609151e+20 0.679917187501 0.300082812499 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2134.5 11532.2287972 74491731.82 1.32416824273e+20 0.680579975489 0.299420024511 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2137.5 11246.021885 73939014.6975 1.28009232766e+20 0.681226385306 0.298773614694 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2140.5 10964.4932299 73385589.7373 1.23711498091e+20 0.681856683708 0.298143316292 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2143.5 10687.5999921 72831449.939 1.19521818053e+20 0.682471135002 0.297528864998 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2146.5 10415.3027255 72276588.4499 1.15438406377e+20 0.68307000116 0.29692999884 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2149.5 10147.5617753 71720998.51 1.11459492096e+20 0.683653541909 0.296346458091 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2152.5 9884.33805168 71164673.4666 1.0758331948e+20 0.684222014742 0.295777985258 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2155.5 9625.59018142 70607606.8492 1.03808148367e+20 0.684775674868 0.295224325132 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2158.5 9371.27963406 70049792.3887 1.00132254057e+20 0.685314775227 0.294685224773 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2161.5 9121.36878223 69491223.94 9.65539265888e+19 0.685839566601 0.294160433399 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2164.5 8875.82111074 68931895.443 9.30714703445e+19 0.686350297666 0.293649702334 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2167.5 8634.59743375 68371800.9915 8.96832043561e+19 0.686847214949 0.293152785051 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2170.5 8397.65969342 67810934.9128 8.6387462602e+19 0.687330562786 0.292669437214 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2173.5 8164.97224176 67249291.6838 8.31825933226e+19 0.687800583422 0.292199416578 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2176.5 7936.49967613 66686865.8617 8.00669585065e+19 0.688257517085 0.291742482915 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2179.5 7712.20479261 66123652.153 7.70389341918e+19 0.688701601941 0.291298398059 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2182.5 7492.05032166 65559645.506 7.40969108272e+19 0.689133074046 0.290866925954 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2185.5 7276.00178342 64994841.0406 7.12392927448e+19 0.689552167416 0.290447832584 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2188.5 7064.02474224 64429233.9571 6.84644976121e+19 0.689959114115 0.290040885885 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2191.5 6856.08301717 63862819.613 6.57709567607e+19 0.6903541442 0.2896458558 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2194.5 6652.1403474 63295593.6184 6.31571155396e+19 0.690737485674 0.289262514326 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2197.5 6452.16293592 62727551.7626 6.06214328543e+19 0.691109364551 0.288890635449 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2200.5 6256.11710933 62158689.9137 5.81623806655e+19 0.691470004931 0.288529995069 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2203.5 6063.96679592 61589004.1247 5.57784444299e+19 0.691819628933 0.288180371067 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2206.5 5875.6769881 61018490.713 5.34681233577e+19 0.692158456662 0.287841543338 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2209.5 5691.21418835 60447146.1581 5.1229929915e+19 0.692486706277 0.287513293723 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2212.5 5510.54485489 59874967.0321 4.90623895402e+19 0.692804594034 0.287195405966 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2215.5 5333.63268327 59301950.1428 4.69640411865e+19 0.693112334207 0.286887665793 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2218.5 5160.44396758 58728092.559 4.49334373546e+19 0.693410139085 0.286589860915 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2221.5 4990.94545348 58153391.4517 4.29691435016e+19 0.693698219055 0.286301780945 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2224.5 4825.10214156 57577844.1577 4.1069738292e+19 0.693976782568 0.286023217432 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2227.5 4662.87873785 57001448.3013 3.92338139918e+19 0.694246036079 0.285753963921 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2230.5 4504.24185335 56424201.7061 3.74599761574e+19 0.694506184096 0.285493815904 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2233.5 4349.15765485 55846102.2933 3.57468433526e+19 0.694757429217 0.285242570783 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2236.5 4197.58983965 55267148.2558 3.40930477124e+19 0.694999972051 0.285000027949 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2239.5 4049.50464979 54687338.0565 3.24972349287e+19 0.695234011219 0.284765988781 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2242.5 3904.86824094 54106670.2452 3.09580637743e+19 0.695459743423 0.284540256577 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2245.5 3763.64418259 53525143.6249 2.94742066204e+19 0.69567736337 0.28432263663 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2248.5 3625.79787875 52942757.302 2.80443495815e+19 0.695887063753 0.284112936247 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2251.5 3491.29519497 52359510.4906 2.66671920717e+19 0.696089035313 0.283910964687 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2254.5 3360.09950716 51775402.6403 2.53414471969e+19 0.696283466784 0.283716533216 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2257.5 3232.17544408 51190433.5218 2.40658419938e+19 0.696470544857 0.283529455143 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2260.5 3107.48835013 50604603.0297 2.28391170496e+19 0.696650454235 0.283349545765 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2263.5 2986.00105795 50017911.299 2.16600268492e+19 0.696823377583 0.283176622417 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2266.5 2867.67767135 49430358.7941 2.0527340015e+19 0.696989495493 0.283010504507 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2269.5 2752.48274576 48841946.0998 1.94398389743e+19 0.697148986532 0.282851013468 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2272.5 2640.37832866 48252674.0747 1.83963203564e+19 0.697302027184 0.282697972816 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2275.5 2531.32814357 47662543.9014 1.7395595154e+19 0.697448791827 0.282551208173 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2278.5 2425.29560202 47071556.8789 1.64364884593e+19 0.697589452772 0.282410547228 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2281.5 2322.24207943 46479714.6258 1.55178399179e+19 0.697724180192 0.282275819808 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2284.5 2222.1308619 45887019.0437 1.46385037538e+19 0.697853142127 0.282146857873 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2287.5 2124.92368098 45293472.1981 1.37973486997e+19 0.697976504486 0.282023495514 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2290.5 2030.58183671 44699076.5039 1.29932583821e+19 0.698094430994 0.281905569006 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2293.5 1939.06770569 44103834.5606 1.22251311956e+19 0.69820708321 0.28179291679 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2296.5 1850.34129624 43507749.245 1.14918805537e+19 0.698314620493 0.281685379507 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2299.5 1764.36411709 42910823.7603 1.07924350562e+19 0.698417199971 0.281582800029 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2302.5 1681.09647842 42313061.4877 1.0125738431e+19 0.698514976555 0.281485023445 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2305.5 1600.49825805 41714466.1507 9.49074984951e+18 0.698608102892 0.281391897108 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2308.5 1522.52994631 41115041.6743 8.88644389197e+18 0.698696729368 0.281303270632 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2311.5 1447.15013202 40514792.3 8.31181079681e+18 0.698781004073 0.281218995927 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2314.5 1374.31892342 39913722.5403 7.76585653458e+18 0.69886107279 0.28113892721 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2317.5 1303.99434579 39311837.1576 7.24760291699e+18 0.698937078977 0.281062921023 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2320.5 1236.13553161 38709141.2356 6.75608778572e+18 0.699009163744 0.280990836256 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2323.5 1170.70025374 38105640.09 6.29036506125e+18 0.699077465841 0.280922534159 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2326.5 1107.64662561 37501339.3545 5.8495049401e+18 0.69914212163 0.28085787837 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2329.5 1046.93204974 36896244.9143 5.43259396642e+18 0.699203265079 0.280796734921 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2332.5 988.513822976 36290362.951 5.03873519005e+18 0.699261027732 0.280738972268 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2335.5 932.34880136 35683699.9205 4.66704827224e+18 0.699315538699 0.280684461301 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2338.5 878.39363934 35076262.5583 4.31666960997e+18 0.699366924633 0.280633075367 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2341.5 826.604545757 34468057.8934 3.98675246115e+18 0.699415309717 0.280584690283 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2344.5 776.937677886 33859093.215 3.67646704087e+18 0.699460815645 0.280539184355 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2347.5 729.348520887 33249376.126 3.38500066141e+18 0.699503561604 0.280496438396 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2350.5 683.792864696 32638914.4701 3.1115578033e+18 0.699543664265 0.280456335735 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2353.5 640.22548851 32027716.3982 2.85536025196e+18 0.699581237759 0.280418762241 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2356.5 598.601758746 31415790.333 2.61564717961e+18 0.699616393667 0.280383606333 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2359.5 558.876047476 30803144.9221 2.39167522411e+18 0.699649241011 0.280350758989 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2362.5 521.003010547 30189789.1673 2.18271862638e+18 0.699679886227 0.280320113773 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2365.5 484.936933765 29575732.2384 1.98806924716e+18 0.699708433171 0.280291566829 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2368.5 450.631729311 28960983.6692 1.80703671085e+18 0.699734983093 0.280265016907 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2371.5 418.041569941 28345553.2142 1.63894842745e+18 0.699759634632 0.280240365368 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2374.5 387.120096047 27729450.7877 1.48314964508e+18 0.699782483815 0.280217516185 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2377.5 357.820870739 27112686.7017 1.339003568e+18 0.699803624032 0.280196375968 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2380.5 330.097606477 26495271.4372 1.20589134266e+18 0.699823146042 0.280176853958 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2383.5 303.903658062 25877215.6166 1.08321209797e+18 0.69984113797 0.28015886203 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2386.5 279.192359011 25258530.2116 9.7038301867e+17 0.69985768529 0.28014231471 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2389.5 255.917121794 24639226.4085 8.66839334135e+17 0.699872870829 0.280127129171 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2392.5 234.031325734 24019315.4758 7.72034309538e+17 0.699886774771 0.280113225229 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2395.5 213.488274518 23398808.8601 6.85439266889e+17 0.699899474652 0.280100525348 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2398.5 194.241368165 22777718.245 6.0654358103e+17 0.699911045358 0.280088954642 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2401.5 176.244089923 22156055.4757 5.3485464489e+17 0.699921559134 0.280078440866 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2404.5 159.450053254 21533832.4913 4.69897828186e+17 0.69993108559 0.28006891441 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2407.5 143.812995774 20911061.2708 4.11216428199e+17 0.699939691703 0.280060308297 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2410.5 129.286818825 20287753.8377 3.58371614074e+17 0.699947441833 0.280052558167 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2413.5 115.825633882 19663922.2472 3.10942354475e+17 0.699954397727 0.280045602273 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2416.5 103.383802233 19039578.5384 2.68525328587e+17 0.699960618536 0.280039381464 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2419.5 91.9159702004 18414734.6693 2.30734822621e+17 0.699966160826 0.280033839174 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2422.5 81.3771060938 17789402.4441 1.97202612358e+17 0.699971078603 0.280028921397 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2425.5 71.722540565 17163593.4218 1.67577830729e+17 0.699975423323 0.280024576677 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2428.5 62.9080063446 16537318.8027 1.41526819902e+17 0.699979243919 0.280020756081 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2431.5 54.8896748477 15910589.3163 1.18732968592e+17 0.699982586826 0.280017413174 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2434.5 47.6241983015 15283415.14 9.88965341373e+16 0.699985496004 0.280014503996 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2437.5 41.0687741701 14655805.7057 8.1734443964e+16 0.699988012967 0.280011987033 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2440.5 35.1811837651 14027769.323 6.69800771035e+16 0.699990176817 0.280009823183 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2443.5 29.9198147813 13399312.9093 5.43830338848e+16 0.699992024277 0.280007975723 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2446.5 25.2437323244 12770441.7292 4.37088875199e+16 0.699993589729 0.280006410271 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2449.5 21.1127387804 12141158.7121 3.47389103611e+16 0.699994905251 0.280005094749 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2452.5 17.487393294 11511463.7567 2.72697848047e+16 0.69999600066 0.28000399934 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2455.5 14.3290922879 10881352.9369 2.11132948446e+16 0.69999690356 0.28000309644 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2458.5 11.6001200722 10250816.9906 1.60959922529e+16 0.699997639389 0.280002360611 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2461.5 9.26369334996 9619839.49189 1.20588443557e+16 0.699998231471 0.280001768529 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2464.5 7.2840331319 8988394.34691 8.85685928148e+15 0.699998701068 0.280001298932 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2467.5 5.62642459316 8356441.80888 6.35868571168e+15 0.699999067446 0.280000932554 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2470.5 4.25728023833 7723922.59311 4.44618882679e+15 0.69999934793 0.28000065207 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2473.5 3.14420917814 7090748.93592 3.0140006247e+15 0.699999557972 0.280000442028 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2476.5 2.25609488434 6456789.96611 1.96904178861e+15 0.699999711224 0.280000288776 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2479.5 1.5631702689 5821846.9574 1.23001398146e+15 0.699999819608 0.280000180392 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2482.5 1.03710450313 5185609.98972 7.2686081307e+14 0.6999998934 0.2800001066 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2485.5 0.651099376025 4547575.81319 4.00193362453e+14 0.699999941308 0.280000058692 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2488.5 0.379993846302 3906879.01238 2.00676823933e+14 0.699999970569 0.280000029431 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2491.5 0.200385430585 3261905.34791 8.83734338549e+13 0.699999987039 0.280000012961 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2494.5 0.0907727236635 2609251.964 3.20343310078e+13 0.699999995302 0.280000004698 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2497.5 0.0317269710689 1940125.46401 8.33064007708e+12 0.699999998778 0.280000001222 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2500.5 0.00610847602649 1219501.03434 1.00948106412e+12 0.699999999852 0.280000000148 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2503.5 0.0001 1000000 16008393268.3 0.700000000028 0.279999999972 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2506.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2509.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2512.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2515.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2518.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2521.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2524.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2527.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2530.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2533.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2536.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2539.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2542.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2545.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2548.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2551.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2554.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2557.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2560.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2563.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2566.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2569.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2572.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2575.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2578.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2581.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2584.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2587.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2590.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2593.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2596.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2599.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2602.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2605.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2608.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2611.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2614.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2617.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2620.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2623.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2626.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2629.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2632.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2635.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2638.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2641.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2644.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2647.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2650.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2653.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2656.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2659.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2662.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2665.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2668.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2671.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2674.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2677.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2680.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2683.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2686.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2689.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2692.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2695.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2698.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2701.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2704.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2707.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2710.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2713.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2716.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2719.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2722.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2725.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2728.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2731.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2734.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2737.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2740.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2743.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2746.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2749.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2752.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2755.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2758.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2761.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2764.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2767.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2770.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2773.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2776.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2779.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2782.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2785.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2788.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2791.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2794.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2797.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2800.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2803.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2806.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2809.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2812.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2815.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2818.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2821.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2824.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2827.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2830.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2833.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2836.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2839.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2842.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2845.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2848.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2851.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2854.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2857.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2860.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2863.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2866.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2869.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2872.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2875.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2878.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2881.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2884.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2887.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2890.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2893.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2896.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2899.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2902.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2905.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2908.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2911.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2914.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2917.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2920.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2923.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2926.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2929.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2932.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2935.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2938.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2941.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2944.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2947.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2950.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2953.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2956.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2959.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2962.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2965.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2968.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2971.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2974.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2977.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2980.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2983.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2986.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2989.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2992.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2995.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 2998.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3001.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3004.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3007.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3010.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3013.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3016.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3019.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3022.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3025.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3028.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3031.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3034.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3037.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3040.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3043.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3046.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3049.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3052.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3055.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3058.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3061.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3064.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3067.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 + 3070.5 0.0001 1000000 16008393268 0.7 0.28 0 0 0 0 0 0.00732252562381 0.0126774743762 0 0 0 0 0 0 0 0 0 0 0 0 From b21830418b6d785771fc3a112df167631a97c98f Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 25 Jul 2024 11:48:23 -0400 Subject: [PATCH 10/16] explicitly add integrator_rp namespace (#2922) this prepares for Microphysics PR 1625 --- Source/reactions/Castro_react.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/reactions/Castro_react.cpp b/Source/reactions/Castro_react.cpp index f226cd62e5..7fc8e069b9 100644 --- a/Source/reactions/Castro_react.cpp +++ b/Source/reactions/Castro_react.cpp @@ -361,7 +361,7 @@ Castro::react_state(MultiFab& s, MultiFab& r, Real time, Real dt, const int stra if (store_burn_weights) { - if (jacobian == 1) { + if (integrator_rp::jacobian == 1) { weights(i,j,k,strang_half) = amrex::max(1.0_rt, static_cast(burn_state.n_rhs + 2 * burn_state.n_jac)); } else { // the RHS evals for the numerical differencing in the Jacobian are already accounted for in n_rhs @@ -752,7 +752,7 @@ Castro::react_state(Real time, Real dt) if (store_burn_weights) { - if (jacobian == 1) { + if (integrator_rp::jacobian == 1) { weights(i,j,k,lsdc_iteration) = amrex::max(1.0_rt, static_cast(burn_state.n_rhs + 2 * burn_state.n_jac)); } else { // the RHS evals for the numerical differencing in the Jacobian are already accounted for in n_rhs From 8ffd8d7638ca1086f6be0101087fe4824d816498 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 25 Jul 2024 12:14:49 -0400 Subject: [PATCH 11/16] allow for optional printing of errors from GPUs (#2923) Right now we if-def out a lot of error messages when on GPUs because of register pressure with printf. This adds a compilation flag, USE_GPU_PRINTF=TRUE, that will enable prints from GPUs using AMREX_DEVICE_PRINTF() --- .github/workflows/good_defines.txt | 1 + Docs/source/mpi_plus_x.rst | 31 ++++++++++++++++++++++++++++++ Exec/Make.Castro | 4 ++++ Source/driver/Castro.cpp | 7 +++++++ 4 files changed, 43 insertions(+) diff --git a/.github/workflows/good_defines.txt b/.github/workflows/good_defines.txt index c0f6c73287..cdfaba0e22 100644 --- a/.github/workflows/good_defines.txt +++ b/.github/workflows/good_defines.txt @@ -1,3 +1,4 @@ +ALLOW_GPU_PRINTF AMREX_DEBUG AMREX_PARTICLES AMREX_SPACEDIM diff --git a/Docs/source/mpi_plus_x.rst b/Docs/source/mpi_plus_x.rst index 7d88e7be77..33df1d1224 100644 --- a/Docs/source/mpi_plus_x.rst +++ b/Docs/source/mpi_plus_x.rst @@ -130,6 +130,37 @@ To enable this, compile with:: USE_HIP = TRUE +Printing Warnings from GPU Kernels +================================== + +.. index:: USE_GPU_PRINTF + +Castro will output warnings if several assumptions are violated (often +triggering a retry in the process). On GPUs, printing from a kernel +(using ``printf()``) can increase the number of registers a kernel needs, +causing performance problems. As a result, warnings are disabled by +wrapping them in ``#ifndef AMREX_USE_GPU``. + +However, for debugging GPU runs, sometimes we want to see these +warnings. The build option ``USE_GPU_PRINTF=TRUE`` will enable these +(by setting the preprocessor flag ``ALLOW_GPU_PRINTF``). + +.. note:: + + Not every warning has been enabled for GPUs. + +.. tip:: + + On AMD architectures, it seems necessary to use unbuffered I/O. This + can be accomplished in the job submission script (for SLURM) by doing + + :: + + srun -u ./Castro... + + + + Working at Supercomputing Centers ================================= diff --git a/Exec/Make.Castro b/Exec/Make.Castro index 910a577563..5b1575820b 100644 --- a/Exec/Make.Castro +++ b/Exec/Make.Castro @@ -136,6 +136,10 @@ ifeq ($(USE_GPU),TRUE) endif endif +ifeq ($(USE_GPU_PRINTF),TRUE) + DEFINES += -DALLOW_GPU_PRINTF +endif + CASTRO_AUTO_SOURCE_DIR := $(TmpBuildDir)/castro_sources/$(optionsSuffix).EXE diff --git a/Source/driver/Castro.cpp b/Source/driver/Castro.cpp index e79cf0574e..3108b7794f 100644 --- a/Source/driver/Castro.cpp +++ b/Source/driver/Castro.cpp @@ -3300,6 +3300,9 @@ Castro::check_for_negative_density () std::cout << "Invalid X[" << n << "] = " << X << " in zone " << i << ", " << j << ", " << k << " with density = " << rho << "\n"; +#elif defined(ALLOW_GPU_PRINTF) + AMREX_DEVICE_PRINTF("Invalid X[%d] = %g in zone (%d,%d,%d) with density = %g\n", + n, X, i, j, k, rho); #endif X_check_failed = 1; } @@ -3310,6 +3313,10 @@ Castro::check_for_negative_density () return {rho_check_failed, X_check_failed}; }); +#ifdef ALLOW_GPU_PRINTF + std::fflush(nullptr); +#endif + } ReduceTuple hv = reduce_data.value(); From 25afc9bfe07cfce29e383fcc6a16730e1e8460f3 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 26 Jul 2024 11:38:54 -0400 Subject: [PATCH 12/16] a setup for exploring shock burning (#2857) --- Exec/science/Detonation/shock_paper/README.md | 47 ++++ .../Detonation/shock_paper/det_speed_comp.py | 74 ++++++ .../Detonation/shock_paper/detonation.py | 105 ++++++++ .../shock_paper/inputs-shock-burn.template | 115 +++++++++ .../Detonation/shock_paper/profile_compare.py | 60 +++++ .../Detonation/shock_paper/profiles.py | 244 ++++++++++++++++++ .../Detonation/shock_paper/setup_runs.py | 50 ++++ .../Detonation/shock_paper/show_shock_flag.py | 58 +++++ .../Detonation/shock_paper/zoom_summary.py | 74 ++++++ 9 files changed, 827 insertions(+) create mode 100644 Exec/science/Detonation/shock_paper/README.md create mode 100755 Exec/science/Detonation/shock_paper/det_speed_comp.py create mode 100644 Exec/science/Detonation/shock_paper/detonation.py create mode 100644 Exec/science/Detonation/shock_paper/inputs-shock-burn.template create mode 100755 Exec/science/Detonation/shock_paper/profile_compare.py create mode 100755 Exec/science/Detonation/shock_paper/profiles.py create mode 100755 Exec/science/Detonation/shock_paper/setup_runs.py create mode 100755 Exec/science/Detonation/shock_paper/show_shock_flag.py create mode 100755 Exec/science/Detonation/shock_paper/zoom_summary.py diff --git a/Exec/science/Detonation/shock_paper/README.md b/Exec/science/Detonation/shock_paper/README.md new file mode 100644 index 0000000000..cecf4e2236 --- /dev/null +++ b/Exec/science/Detonation/shock_paper/README.md @@ -0,0 +1,47 @@ +# Shock Burning Experiments + +This directory is meant to explore shock burning with detonation. Compile as: + +``` +make USE_SIMPLIFIED_SDC=TRUE USE_SHOCK_VAR=TRUE NETWORK_DIR=aprox13 -j 4 +``` + +Then the script `setup_runs.py` will setup a suite of simulations with +the following resolutions into separate directories (using the +`inputs-shock-burn.template`): + + +| resolution | base grid | levels (4x jumps) | +| ------------ | ----------- | ------------------- | +| 24 km | 48 | 1 | +| 12 km | 96 | 1 | +| 6 km | 192 | 1 | +| 3 km | 384 | 1 | +| 1.5 km | 768 | 1 | +| 0.1875 km | 6144 | 1 | +| 2343.74 cm | 12288 | 2 | + +you can set the value of the shock detection threshold there +and the directory names will reflect that setting. + +## plotting + +The following scripts can make useful plots (some use the +`detonation.py` module as support): + +* `det_speed_comp.py` : plot detonation speed vs. resolution, using + simple differencing to estimate the detonation speed from the last 3 + plotfiles. + +* `profile_compare.py` : given a list of pruns (from different + resolutions), make a plot showing all of their profiles together. + +* `profiles.py` : for a single run, plot profiles of T and enuc for + several times. + +* `show_shock_flag.py` : simply plot the shock variable on top of T + and enuc profiles. + +* `zoom_summary.py` : given a list of runs (from different + resolutions), plot the last plotfile from each run, zoomed in on + where the peak energy generation is. diff --git a/Exec/science/Detonation/shock_paper/det_speed_comp.py b/Exec/science/Detonation/shock_paper/det_speed_comp.py new file mode 100755 index 0000000000..7d1ae9fe9c --- /dev/null +++ b/Exec/science/Detonation/shock_paper/det_speed_comp.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python + +import matplotlib.pyplot as plt + +import detonation + +runs = [("res24.0km", 24), + ("res12.0km", 12), + ("res6.0km", 6), + ("res3.0km", 3), + ("res1.5km", 1.5), + ("res0.1875km", 0.1875)] #, + #("res0.024km", 0.024)] #, +#("res0.003km", 0.003)] + +nsb1_runs = [("res24.0km_noshockburn_1", 24), + ("res12.0km_noshockburn_1", 12), + ("res6.0km_noshockburn_1", 6), + ("res3.0km_noshockburn_1", 3), + ("res1.5km_noshockburn_1", 1.5), + ("res0.1875km_noshockburn_1", 0.1875)] #, + +nsb23_runs = [("res24.0km_noshockburn_0.666", 24), + ("res12.0km_noshockburn_0.666", 12), + ("res6.0km_noshockburn_0.666", 6), + ("res3.0km_noshockburn_0.666", 3), + ("res1.5km_noshockburn_0.666", 1.5), + ("res0.1875km_noshockburn_0.666", 0.1875)] #, + +res = [] +v = [] +dv = [] + +for ddir, dx in runs: + res.append(dx) + d = detonation.Detonation(ddir) + v.append(d.v) + dv.append(d.v_sigma) + +nsb23_res = [] +nsb23_v = [] +nsb23_dv = [] + +for ddir, dx in nsb23_runs: + nsb23_res.append(dx) + d = detonation.Detonation(ddir) + nsb23_v.append(d.v) + nsb23_dv.append(d.v_sigma) + +nsb1_res = [] +nsb1_v = [] +nsb1_dv = [] + +for ddir, dx in nsb1_runs: + nsb1_res.append(dx) + d = detonation.Detonation(ddir) + nsb1_v.append(d.v) + nsb1_dv.append(d.v_sigma) + + +fig, ax = plt.subplots() + +ax.errorbar(res, v, yerr=dv, fmt="o", label="burning in shocks allowed") +ax.errorbar(nsb23_res, nsb23_v, yerr=nsb23_dv, fmt="d", label="no shock burning (f=2/3)") +ax.errorbar(nsb1_res, nsb1_v, yerr=nsb1_dv, fmt="d", label="no shock burning (f=1)") + +ax.set_xlabel(r"$\Delta x$ (km)") +ax.set_ylabel(r"$v_\mathrm{det}$ (cm / s)") + +ax.legend() + +ax.set_xscale("log") + +fig.savefig("det_speeds.png") diff --git a/Exec/science/Detonation/shock_paper/detonation.py b/Exec/science/Detonation/shock_paper/detonation.py new file mode 100644 index 0000000000..710371e132 --- /dev/null +++ b/Exec/science/Detonation/shock_paper/detonation.py @@ -0,0 +1,105 @@ +import glob +import os + +import numpy as np +import matplotlib.pyplot as plt + +import yt +from yt.frontends.boxlib.api import CastroDataset + + +yt.funcs.mylog.setLevel(50) + +class Profile: + """read a plotfile using yt and store the 1d profile for T and enuc""" + + def __init__(self, plotfile): + ds = CastroDataset(plotfile) + + time = float(ds.current_time) + ad = ds.all_data() + + # Sort the ray values by 'x' so there are no discontinuities + # in the line plot + srt = np.argsort(ad['x']) + x_coord = np.array(ad['x'][srt]) + temp = np.array(ad['Temp'][srt]) + enuc = np.array(ad['enuc'][srt]) + shock = np.array(ad['Shock'][srt]) + + self.time = time + self.x = x_coord + self.T = temp + self.enuc = enuc + self.shock = shock + + def find_x_for_T(self, T_0=1.e9): + """ given a profile x(T), find the x_0 that corresponds to T_0 """ + + # our strategy here assumes that the hot ash is in the early + # part of the profile. We then find the index of the first + # point where T drops below T_0 + try: + idx = np.where(self.T < T_0)[0][0] + except IndexError: + idx = len(self.T)-1 + + T1 = self.T[idx-1] + x1 = self.x[idx-1] + + T2 = self.T[idx] + x2 = self.x[idx] + + slope = (x2 - x1)/(T2 - T1) + + return x1 + slope*(T_0 - T1) + + +class Detonation: + def __init__(self, dirname): + self.name = dirname + + self.v = None + self.v_sigma = None + + # find all the output (plot) files + self.files = glob.glob(f"{dirname}/*plt?????") + self.files.sort() + + # precompute the velocity and the data profiles + if len(self.files) >= 3: + self.v, self.v_sigma = self.get_velocity() + else: + self.v, self.v_sigma = 0.0, 0.0 + + def get_velocity(self): + """look at the last 2 plotfiles and estimate the velocity by + finite-differencing""" + + vs = [] + pairs = [(-2, -1), (-3, -1), (-3, -2)] + + for i1, i2 in pairs: + p1 = self.get_data(i1) + p2 = self.get_data(i2) + + # we'll do this by looking at 3 different temperature + # thresholds and averaging + T_ref = [1.e9, 2.e9, 3.e9] + + for T0 in T_ref: + x1 = p1.find_x_for_T(T0) + x2 = p2.find_x_for_T(T0) + vs.append((x1 - x2)/(p1.time - p2.time)) + + vs = np.array(vs) + v = np.mean(vs) + v_sigma = np.std(vs) + return v, v_sigma + + def get_data(self, num=-1): + """get the temperature and energy generation rate from the + num'th plotfile (defaults to the last)""" + + return Profile(os.path.join(self.files[num])) + diff --git a/Exec/science/Detonation/shock_paper/inputs-shock-burn.template b/Exec/science/Detonation/shock_paper/inputs-shock-burn.template new file mode 100644 index 0000000000..a10f50260e --- /dev/null +++ b/Exec/science/Detonation/shock_paper/inputs-shock-burn.template @@ -0,0 +1,115 @@ +# ------------------ INPUTS TO MAIN PROGRAM ------------------- +max_step = 200000 +stop_time = 0.03 + +# PROBLEM SIZE & GEOMETRY +geometry.is_periodic = 0 0 0 +geometry.coord_sys = 0 # 0 => cart, 1 => RZ 2=>spherical +geometry.prob_lo = 0 0 0 +geometry.prob_hi = 1.152e8 2500 2500 +amr.n_cell = @nx@ 16 16 + + +# >>>>>>>>>>>>> BC FLAGS <<<<<<<<<<<<<<<< +# 0 = Interior 3 = Symmetry +# 1 = Inflow 4 = SlipWall +# 2 = Outflow 5 = NoSlipWall +# >>>>>>>>>>>>> BC FLAGS <<<<<<<<<<<<<<<< +castro.lo_bc = 3 4 4 +castro.hi_bc = 2 4 4 + +# WHICH PHYSICS +castro.do_hydro = 1 +castro.do_react = 1 + +castro.react_rho_min = 100.0 +castro.react_T_min = 5.e7 + +castro.ppm_type = 1 +castro.ppm_temp_fix = 0 + +castro.time_integration_method = 3 + +castro.disable_shock_burning = @shock_flag@ +castro.shock_detection_threshold = @shock_thresh@ + +# castro.transverse_reset_density = 1 + +castro.small_dens = 1.e-5 +castro.small_temp = 1.e7 + +castro.use_flattening = 1 + +castro.riemann_solver = 1 + +# TIME STEP CONTROL +castro.cfl = 0.5 # cfl number for hyperbolic system +castro.init_shrink = 0.1 # scale back initial timestep +castro.change_max = 1.05 # scale back initial timestep + +#castro.dtnuc_e = 0.1 + +# DIAGNOSTICS & VERBOSITY +castro.sum_interval = 1 # timesteps between computing mass +castro.v = 1 # verbosity in Castro.cpp +amr.v = 1 # verbosity in Amr.cpp +#amr.grid_log = grdlog # name of grid logging file + +# REFINEMENT / REGRIDDING +amr.max_level = @nlevel@ # maximum level number allowed +amr.ref_ratio = 4 4 2 2 # refinement ratio +amr.regrid_int = 2 2 2 2 # how often to regrid +amr.blocking_factor = 8 # block factor in grid generation +amr.max_grid_size = 512 +amr.n_error_buf = 8 8 8 4 4 2 2 2 2 # number of buffer cells in error est + +# CHECKPOINT FILES +amr.check_file = det_x_chk # root name of checkpoint file +amr.check_int = 10000 # number of timesteps between checkpoints + +# PLOTFILES +amr.plot_file = det_x_plt # root name of plotfile +amr.plot_per = 2.5e-3 +amr.derive_plot_vars = ALL + +# problem initialization + +problem.T_l = 1.1e9 +problem.T_r = 1.75e8 + +problem.dens = 3.0e6 +problem.cfrac = 0.0 +problem.nfrac = 0.01 + +problem.smallx = 1.e-10 + +problem.idir = 1 + +problem.w_T = 1.e-3 +problem.center_T = 0.2 + +# refinement + +amr.refinement_indicators = temperr tempgrad + +amr.refine.temperr.max_level = 0 +amr.refine.temperr.value_greater = 4.e9 +amr.refine.temperr.field_name = Temp + +amr.refine.tempgrad.max_level = 5 +amr.refine.tempgrad.gradient = 1.e8 +amr.refine.tempgrad.field_name = Temp + +# Microphysics + +network.small_x = 1.e-10 +integrator.SMALL_X_SAFE = 1.e-10 + +integrator.rtol_spec = 1.e-5 +integrator.atol_spec = 1.e-5 +integrator.rtol_enuc = 1.e-5 +integrator.atol_enuc = 1.e-5 +integrator.jacobian = 1 + +integrator.X_reject_buffer = 4.0 + diff --git a/Exec/science/Detonation/shock_paper/profile_compare.py b/Exec/science/Detonation/shock_paper/profile_compare.py new file mode 100755 index 0000000000..35edb2502c --- /dev/null +++ b/Exec/science/Detonation/shock_paper/profile_compare.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +# Take a sequence of plotfiles and plot T and enuc vs. position + +import matplotlib +import numpy as np + +matplotlib.use('agg') + +import matplotlib.pyplot as plt + +import matplotlib.ticker as mticker + +import detonation + +def plot_Te(data): + + f = plt.figure() + + f.set_size_inches(7.5, 9.0) + + ax_T = f.add_subplot(211) + ax_e = f.add_subplot(212) + + for n, _d in enumerate(data): + + ddir, label = _d + + d = detonation.Detonation(ddir) + profile = d.get_data(-1) + + ax_T.plot(profile.x, profile.T, label=label) + ax_e.plot(profile.x, profile.enuc, label=label) + + ax_T.set_ylabel("T (K)") + ax_T.yaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + ax_T.xaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + ax_T.legend() + + ax_e.set_yscale("log") + ax_e.set_ylabel(r"$S_\mathrm{nuc}$ (erg/g/s)") + ax_e.set_xlabel("x (cm)") + ax_e.xaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + cur_lims = ax_e.get_ylim() + ax_e.set_ylim(1.e-10*cur_lims[-1], cur_lims[-1]) + + f.tight_layout() + f.savefig("profile_compare.png") + + +if __name__ == "__main__": + + + data = [("res0.003km", "300 cm"), + ("res0.024km", "2400 cm"), + ("res0.192km", "0.192 km"), + ("res1.536km", "1.536 km"), + ("res12.288km", "12.288 km")] + + plot_Te(data) diff --git a/Exec/science/Detonation/shock_paper/profiles.py b/Exec/science/Detonation/shock_paper/profiles.py new file mode 100755 index 0000000000..26aa70cb8f --- /dev/null +++ b/Exec/science/Detonation/shock_paper/profiles.py @@ -0,0 +1,244 @@ +#!/usr/bin/env python3 + +# Take a sequence of plotfiles and plot T and enuc vs. position + +import argparse +import re +import sys + +import matplotlib +import numpy as np +from cycler import cycler + +matplotlib.use('agg') +import math + +import matplotlib.pyplot as plt +import yt + + +## Define RGBA to HEX +def rgba_to_hex(rgba): + r = int(rgba[0]*255.0) + g = int(rgba[1]*255.0) + b = int(rgba[2]*255.0) + return f'#{r:02X}{g:02X}{b:02X}' + + +# Extract number from nuc list +def nuc_list_filter(nuc): + + match = re.search(r'\d+', nuc) + if match: + return int(match.group()) + + return 0 + + +def get_Te_profile(plotfile, plot_in_nse=False): + + ds = yt.load(plotfile, hint="castro") + + time = float(ds.current_time) + ad = ds.all_data() + + # Sort the ray values by 'x' so there are no discontinuities + # in the line plot + srt = np.argsort(ad['x']) + x_coord = np.array(ad['x'][srt]) + temp = np.array(ad['Temp'][srt]) + enuc = np.array(ad['enuc'][srt]) + if plot_in_nse: + in_nse = np.array(ad['in_nse'][srt]) + return time, x_coord, temp, enuc, in_nse + return time, x_coord, temp, enuc + +def get_nuc_profile(plotfile): + + ds = yt.load(plotfile, hint="castro") + + time = float(ds.current_time) + ad = ds.all_data() + + # Sort the ray values by 'x' so there are no discontinuities + # in the line plot + srt = np.argsort(ad['x']) + x_coord = np.array(ad['x'][srt]) + + nuc_list = [f[1] for f in ds.field_list if f[1][0] == "X"] + nuc_list.sort(key=nuc_list_filter) + + nuc_fracs = [np.array(ad[nuc][srt]) for nuc in nuc_list] + + return time, x_coord, nuc_fracs + + +def plot_Te(prefix, nums, skip, limitlabels, xmin, xmax, plot_in_nse=False): + + f = plt.figure() + + # Get set of colors to use and apply to plot + numplots = int(len(nums) / skip) + cm = plt.get_cmap('nipy_spectral') + clist = [cm(0.95*i/numplots) for i in range(numplots + 1)] + hexclist = [rgba_to_hex(ci) for ci in clist] + + if plot_in_nse: + f.set_size_inches(7.0, 12.0) + ax_nse = f.add_subplot(311) + ax_T = f.add_subplot(312) + ax_e = f.add_subplot(313) + ax_nse.set_prop_cycle(cycler('color', hexclist)) + else: + f.set_size_inches(7.0, 9.0) + ax_T = f.add_subplot(211) + ax_e = f.add_subplot(212) + + ax_T.set_prop_cycle(cycler('color', hexclist)) + ax_e.set_prop_cycle(cycler('color', hexclist)) + + if limitlabels > 1: + skiplabels = int(numplots / limitlabels) + elif limitlabels < 0: + print("Illegal value for limitlabels: %.0f" % limitlabels) + sys.exit() + else: + skiplabels = 1 + index = 0 + + for n in range(0, len(nums), skip): + + pfile = f"{prefix}{nums[n]}" + + if plot_in_nse: + time, x, T, enuc, in_nse = get_Te_profile(pfile, plot_in_nse) + ax_nse.plot(x, in_nse) + else: + time, x, T, enuc = get_Te_profile(pfile) + + if index % skiplabels == 0: + ax_T.plot(x, T, label=f"t = {time:6.4g} s") + else: + ax_T.plot(x, T) + + ax_e.plot(x, enuc) + + index = index + 1 + + ax_T.legend(frameon=False) + ax_T.set_ylabel("T (K)") + + if xmax > 0: + ax_T.set_xlim(xmin, xmax) + ax_e.set_xlim(xmin, xmax) + if plot_in_nse: + ax_nse.set_xlim(xmin, xmax) + + ax_e.set_yscale("log") + ax_e.set_ylabel(r"$S_\mathrm{nuc}$ (erg/g/s)") + ax_e.set_xlabel("x (cm)") + + cur_lims = ax_e.get_ylim() + ax_e.set_ylim(1.e-10*cur_lims[-1], cur_lims[-1]) + + if plot_in_nse: + ax_nse.set_ylabel("IN NSE") + + f.savefig("det_Te.png") + + +def plot_nuc_frac(prefix, nums, skip, limitlabels, xmin, xmax): + + f = plt.figure() + f.set_size_inches(32.0, 20.0) + + # Get set of colors to use and apply to plot + numplots = int(len(nums) / skip) + cm = plt.get_cmap('nipy_spectral') + clist = [cm(0.95*i/numplots) for i in range(numplots + 1)] + hexclist = [rgba_to_hex(ci) for ci in clist] + + if limitlabels > 1: + skiplabels = int(numplots / limitlabels) + elif limitlabels < 0: + print("Illegal value for limitlabels: %.0f" % limitlabels) + sys.exit() + else: + skiplabels = 1 + + pfile = f"{prefix}{nums[1]}" + ds = yt.load(pfile, hint="castro") + + nuc_list = [f[1] for f in ds.field_list if f[1][0] == "X"] + nuc_list.sort(key=nuc_list_filter) + N = len(nuc_list) + + nrows = math.ceil(math.sqrt(N)) + ncols = math.ceil(math.sqrt(N)) + + for i in range(N): + ax = f.add_subplot(nrows, ncols, i+1) + ax.set_prop_cycle(cycler('color', hexclist)) + + index = 0 + for n in range(0, len(nums), skip): + + pfile = f"{prefix}{nums[n]}" + + time, x, nuc_prof = get_nuc_profile(pfile) + + if i == 0 and index % skiplabels == 0: + ax.plot(x, nuc_prof[i], label=f"t = {time:6.4g} s") + else: + ax.plot(x, nuc_prof[i]) + + index = index + 1 + + ax.legend(frameon=False) + ax.set_ylabel(nuc_list[i]) + ax.set_yscale("log") + + if xmax > 0: + ax.set_xlim(xmin, xmax) + + f.tight_layout() + f.savefig("det_nuc.png") + + +def doit(prefix, nums, skip, limitlabels, xmin, xmax, + do_nuc_fracs=False, plot_in_nse=False): + + if do_nuc_fracs: + plot_nuc_frac(prefix, nums, skip, limitlabels, xmin, xmax) + else: + plot_Te(prefix, nums, skip, limitlabels, xmin, xmax, plot_in_nse) + + +if __name__ == "__main__": + + p = argparse.ArgumentParser() + + p.add_argument("--skip", type=int, default=1, + help="interval between plotfiles") + p.add_argument("--xmin", type=float, default=0, + help="minimum x-coordinate to show") + p.add_argument("--xmax", type=float, default=-1, + help="maximum x-coordinate to show") + p.add_argument("plotfiles", type=str, nargs="+", + help="list of plotfiles to plot") + p.add_argument("--limitlabels", type=float, default=1., + help="Show all labels (default) or reduce to ~ given value") + p.add_argument("--do_nuc_fracs", dest="do_nuc_fracs", + action="store_true", + help="Plot nuc fracs, otherwise Temp and enuc plot") + p.add_argument("--plot_in_nse", dest="plot_in_nse", + action="store_true", + help="Plot in_nse quantity along with temperature and enuc") + + args = p.parse_args() + + plot_prefix = args.plotfiles[0].split("plt")[0] + "plt" + plot_nums = sorted([p.split("plt")[1] for p in args.plotfiles], key=int) + + doit(plot_prefix, plot_nums, args.skip, args.limitlabels, args.xmin, + args.xmax, do_nuc_fracs=args.do_nuc_fracs, plot_in_nse=args.plot_in_nse) diff --git a/Exec/science/Detonation/shock_paper/setup_runs.py b/Exec/science/Detonation/shock_paper/setup_runs.py new file mode 100755 index 0000000000..416ef4bac7 --- /dev/null +++ b/Exec/science/Detonation/shock_paper/setup_runs.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +import os +import shutil + +# tuples of label, nx, and max_level +RES_INFO = [("24.0km", "48", "0"), + ("12.0km", "96", "0"), + ("6.0km", "192", "0"), + ("3.0km", "384", "0"), + ("1.5km", "768", "0"), + ("0.1875km", "6144", "0"), + ("0.0234375km", "12288", "1")] + +INPUTS_TEMPLATE = "inputs-shock-burn.template" + +COMMON_FILES = ["helm_table.dat", + "Castro1d.gnu.MPI.SMPLSDC.ex"] + +shock_flag = "1" +shock_thresh = "0.666" + +def doit(): + + # read in the template + with open(INPUTS_TEMPLATE) as tf: + template = tf.readlines() + + # loop over resolutions + for label, nx, max_level in RES_INFO: + + # create output direct + odir = f"res{label}" + if shock_flag == "1": + odir += f"_noshockburn_{shock_thresh}" + + os.mkdir(odir) + + # copy files + for f in COMMON_FILES: + shutil.copy(f, odir) + + # modify inputs + with open(f"{odir}/inputs", "w") as fin: + for line in template: + fin.write(line.replace("@nx@", nx).replace("@nlevel@", max_level).replace("@shock_flag@", shock_flag).replace("@shock_thresh@", shock_thresh)) + + +if __name__ == "__main__": + doit() diff --git a/Exec/science/Detonation/shock_paper/show_shock_flag.py b/Exec/science/Detonation/shock_paper/show_shock_flag.py new file mode 100755 index 0000000000..969d68d7a7 --- /dev/null +++ b/Exec/science/Detonation/shock_paper/show_shock_flag.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +# Take a sequence of plotfiles and plot T and enuc vs. position + +import matplotlib +import numpy as np + +matplotlib.use('agg') + +import matplotlib.pyplot as plt + +import matplotlib.ticker as mticker + +import detonation + +def plot_Te(ddir): + + f = plt.figure() + + f.set_size_inches(7.5, 9.0) + + ax_T = f.add_subplot(211) + ax_e = f.add_subplot(212) + + d = detonation.Detonation(ddir) + profile = d.get_data(-1) + + ax_T.plot(profile.x, profile.T) + + ishk = profile.shock == 1.0 + ax_T.scatter(profile.x[ishk], profile.T[ishk]) + + ax_e.plot(profile.x, profile.enuc) + ax_e.scatter(profile.x[ishk], profile.enuc[ishk]) + + ax_T.set_ylabel("T (K)") + ax_T.yaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + ax_T.xaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + + ax_e.set_yscale("log") + ax_e.set_ylabel(r"$S_\mathrm{nuc}$ (erg/g/s)") + ax_e.set_xlabel("x (cm)") + ax_e.xaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + cur_lims = ax_e.get_ylim() + ax_e.set_ylim(1.e-10*cur_lims[-1], cur_lims[-1]) + + f.tight_layout() + f.savefig("shock_flag.png") + + +if __name__ == "__main__": + + #ddir = "res12.288km" + #ddir = "res1.536km" + #ddir = "res0.192km" + ddir = "res0.003km" + + plot_Te(ddir) diff --git a/Exec/science/Detonation/shock_paper/zoom_summary.py b/Exec/science/Detonation/shock_paper/zoom_summary.py new file mode 100755 index 0000000000..f0a6aa32f8 --- /dev/null +++ b/Exec/science/Detonation/shock_paper/zoom_summary.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 + +# Take a sequence of plotfiles and plot T and enuc vs. position + +import matplotlib +import numpy as np + +matplotlib.use('agg') + +import matplotlib.pyplot as plt + +import matplotlib.ticker as mticker + +import detonation + + +def plot_Te(data): + + f = plt.figure() + + f.set_size_inches(7.5, 9.0) + + ax_T = f.add_subplot(211) + ax_e = f.add_subplot(212) + + for n, _d in enumerate(data): + + ddir, label = _d + + d = detonation.Detonation(ddir) + profile = d.get_data(-1) + + idx = np.argmax(profile.enuc) + + xpeak = profile.x[idx] + + if n == 0: + Lx = profile.x.max() - profile.x.min() + + xmin = xpeak - 0.002 * Lx + xmax = xpeak + 0.001 * Lx + + ax_T.set_xlim(xmin, xmax) + ax_e.set_xlim(xmin, xmax) + + ax_T.scatter(profile.x, profile.T, label=label, marker="*") + ax_e.scatter(profile.x, profile.enuc, label=label, marker="*") + + ax_T.set_ylabel("T (K)") + ax_T.yaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + ax_T.xaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + ax_T.legend() + + ax_e.set_yscale("log") + ax_e.set_ylabel(r"$S_\mathrm{nuc}$ (erg/g/s)") + ax_e.set_xlabel("x (cm)") + ax_e.xaxis.set_major_formatter(mticker.ScalarFormatter(useMathText=True)) + cur_lims = ax_e.get_ylim() + ax_e.set_ylim(1.e-10*cur_lims[-1], cur_lims[-1]) + + f.tight_layout() + f.savefig("summary_zoom_Te.png") + + +if __name__ == "__main__": + + + data = [("res0.003km", "300 cm"), + ("res0.024km", "2400 cm"), + ("res0.192km", "0.192 km"), + ("res1.536km", "1.536 km"), + ("res12.288km", "12.288 km")] + + plot_Te(data) From 0f6eead3a57588546f61e68d64c5e1e1fbe52729 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 26 Jul 2024 12:47:10 -0400 Subject: [PATCH 13/16] fix the subch_planar diag for cylindrical coords (#2885) the case of projecting against div{U} was not including area factors --- Exec/science/subch_planar/Problem_Derive.cpp | 21 ++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Exec/science/subch_planar/Problem_Derive.cpp b/Exec/science/subch_planar/Problem_Derive.cpp index 2e97187e44..3275166238 100644 --- a/Exec/science/subch_planar/Problem_Derive.cpp +++ b/Exec/science/subch_planar/Problem_Derive.cpp @@ -273,12 +273,15 @@ void ca_dergradpoverp1(const Box& bx, FArrayBox& derfab, int /*dcomp*/, int /*nc Real vm = dat(i,j-1,k,UMY) / dat(i,j-1,k,URHO); Real v0 = dat(i,j,k,UMY) / dat(i,j,k,URHO); + Real du_x{}; + Real dv_y{}; + // construct div{U} if (coord_type == 0) { // Cartesian - div_u += 0.5_rt * (up - um) * dxinv; - div_u += 0.5_rt * (vp - vm) * dyinv; + du_x = 0.5_rt * (up - um) * dxinv; + dv_y = 0.5_rt * (vp - vm) * dyinv; } else if (coord_type == 1) { @@ -287,8 +290,8 @@ void ca_dergradpoverp1(const Box& bx, FArrayBox& derfab, int /*dcomp*/, int /*nc Real rm = (i - 1 + 0.5_rt) * dx[0]; Real rp = (i + 1 + 0.5_rt) * dx[0]; - div_u += 0.5_rt * (rp * up - rm * um) / (rc * dx[0]) + - 0.5_rt * (vp - vm) * dyinv; + du_x = 0.5_rt * (rp * up - rm * um) / (rc * dx[0]); + dv_y = 0.5_rt * (vp - vm) * dyinv; #ifndef AMREX_USE_GPU } else { @@ -296,6 +299,8 @@ void ca_dergradpoverp1(const Box& bx, FArrayBox& derfab, int /*dcomp*/, int /*nc #endif } + div_u = du_x + dv_y; + // we need to compute p in the full stencil Real p_ip1{}; @@ -399,12 +404,12 @@ void ca_dergradpoverp1(const Box& bx, FArrayBox& derfab, int /*dcomp*/, int /*nc Real dP_y = 0.5_rt * (p_jp1 - p_jm1); //Real gradPdx_over_P = std::sqrt(dP_x * dP_x + dP_y * dP_y + dP_z * dP_z) / dat(i,j,k,QPRES); - Real du_x = std::min(up - um, 0.0); - Real dv_y = std::min(vp - vm, 0.0); + Real cdu_x = std::min(du_x, 0.0); + Real cdv_y = std::min(dv_y, 0.0); - Real divu_mag = std::sqrt(du_x * du_x + dv_y * dv_y + 1.e-30); + Real divu_mag = std::sqrt(cdu_x * cdu_x + cdv_y * cdv_y + 1.e-30); - Real gradPdx_over_P = std::abs(dP_x * du_x + dP_y * dv_y) / divu_mag; + Real gradPdx_over_P = std::abs(dP_x * cdu_x + dP_y * cdv_y) / divu_mag; gradPdx_over_P /= p_zone; der(i,j,k,0) = gradPdx_over_P; From c8ef18138b904b9bbb8eb0246463edc121f3088e Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 26 Jul 2024 19:13:05 -0400 Subject: [PATCH 14/16] fix true-SDC compilation due to namespace changes in Microphysics (#2932) --- Source/sdc/sdc_react_util.H | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/sdc/sdc_react_util.H b/Source/sdc/sdc_react_util.H index dffd1dd1f0..b174dd8d03 100644 --- a/Source/sdc/sdc_react_util.H +++ b/Source/sdc/sdc_react_util.H @@ -35,7 +35,7 @@ single_zone_react_source(burn_t& burn_state, eos(eos_input_re, burn_state); // eos_get_small_temp(&small_temp); - burn_state.T = amrex::min(MAX_TEMP, amrex::max(burn_state.T, small_temp)); + burn_state.T = std::clamp(burn_state.T, small_temp, integrator_rp::MAX_TEMP); Array1D ydot; From df7e675f967229479b5eca4025697579197d609d Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 26 Jul 2024 19:22:17 -0400 Subject: [PATCH 15/16] if we have USE_GPU_PRINTF = TRUE, then fflush the output after burn (#2928) this will catch the prints from the burner that were added to Microphysics --- Source/reactions/Castro_react.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Source/reactions/Castro_react.cpp b/Source/reactions/Castro_react.cpp index 7fc8e069b9..ee9807dfb9 100644 --- a/Source/reactions/Castro_react.cpp +++ b/Source/reactions/Castro_react.cpp @@ -417,6 +417,11 @@ Castro::react_state(MultiFab& s, MultiFab& r, Real time, Real dt, const int stra #if defined(AMREX_USE_HIP) Gpu::streamSynchronize(); // otherwise HIP may fail to allocate the necessary resources. #endif + +#ifdef ALLOW_GPU_PRINTF + std::fflush(nullptr); +#endif + } #if defined(AMREX_USE_GPU) @@ -812,6 +817,11 @@ Castro::react_state(Real time, Real dt) #if defined(AMREX_USE_HIP) Gpu::streamSynchronize(); // otherwise HIP may fail to allocate the necessary resources. #endif + +#ifdef ALLOW_GPU_PRINTF + std::fflush(nullptr); +#endif + } #if defined(AMREX_USE_GPU) From d8dd29e85faed7a067f1902647d4a50e3adf7aaa Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 26 Jul 2024 19:22:44 -0400 Subject: [PATCH 16/16] when running on GPUs, have job_info output "GPU time used" (#2930) this is basically just MPI hours, but now the output is more clear --- Source/driver/Castro.H | 4 ++-- Source/driver/Castro_io.cpp | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Source/driver/Castro.H b/Source/driver/Castro.H index 8c7b9c13f8..b0882ec2d0 100644 --- a/Source/driver/Castro.H +++ b/Source/driver/Castro.H @@ -1418,8 +1418,8 @@ protected: /// -/// for keeping track of the amount of CPU time used -- this will persist -/// after restarts +/// for keeping track of the amount of CPU or GPU time used -- this will persist +/// after restarts /// static amrex::Real previousCPUTimeUsed; static amrex::Real startCPUTime; diff --git a/Source/driver/Castro_io.cpp b/Source/driver/Castro_io.cpp index b0c58b5da2..93ea8d7ab6 100644 --- a/Source/driver/Castro_io.cpp +++ b/Source/driver/Castro_io.cpp @@ -564,8 +564,13 @@ Castro::writeJobInfo (const std::string& dir, const Real io_time) jobInfoFile << "hydro tile size: " << hydro_tile_size << "\n"; jobInfoFile << "\n"; +#ifdef AMREX_USE_GPU + jobInfoFile << "GPU time used since start of simulation (GPU-hours): " << + getCPUTime()/3600.0; +#else jobInfoFile << "CPU time used since start of simulation (CPU-hours): " << getCPUTime()/3600.0; +#endif jobInfoFile << "\n\n";

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 JgrWWB{|Bp1{f7Vm literal 31442 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 diff --git a/Exec/science/flame_wave/scaling/frontier/frontier_flame_wave_scaling_by_gpus.png b/Exec/science/flame_wave/scaling/frontier/frontier_flame_wave_scaling_by_gpus.png deleted file mode 100644 index 18bfa6a5a1244959f4e6592e9113d87a0afefaf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26378 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 Date: Mon, 15 Jul 2024 06:38:49 -0400 Subject: [PATCH 03/16] fix spelling in scaling script (#2915) --- Exec/science/wdmerger/scaling/frontier/frontier_scaling.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py index a1329635e0..2c5b472e70 100644 --- a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py +++ b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py @@ -46,7 +46,7 @@ def trend_line(c, t): ax.set_xscale("log") ax.set_yscale("log") -ax.set_title("3D wedmerger scaling (Frontier)") +ax.set_title("3D wdmerger scaling (Frontier)") ax.legend() From 39a7704b41595c2d73fedb0f62ad4007d9f61e06 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 18 Jul 2024 14:44:38 -0400 Subject: [PATCH 04/16] fix axis label of wdmerger scaling plot (#2918) --- .../scaling/frontier/frontier_scaling.py | 2 +- .../scaling/frontier/frontier_wdmerger.png | Bin 35864 -> 48481 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py index 2c5b472e70..604a06badc 100644 --- a/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py +++ b/Exec/science/wdmerger/scaling/frontier/frontier_scaling.py @@ -40,7 +40,7 @@ def trend_line(c, t): c, t = trend_line(frontier_256base_nodes, frontier_256base_times) ax.plot(c, t, alpha=0.5, linestyle=":", color="k") -ax.set_ylabel("wallclock time / step") +ax.set_ylabel("wallclock time") ax.set_xlabel("number of nodes") ax.set_xscale("log") diff --git a/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png b/Exec/science/wdmerger/scaling/frontier/frontier_wdmerger.png index b00c2a434baf51d78b03710b8afa57f1d10eb2f9..1886d7707d482d0d1e586b1d5ba60f4e9fe27ca3 100644 GIT binary patch literal 48481 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