diff --git a/CHANGES b/CHANGES index 7ec32ed8c8c441d80bc3357a799a0b611e3197dd..931ef75863cb4d8e068b8bcb0c28767ad550c923 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +22/01/2019 Backported RGI's discs branch changes to master, including: libmemoize support, better backtraces, better debugging, fixed nanchecks, new binary_c file type support, updated circumbinary discs, added new SNIa yields, effective metallicity and Fabian's mass loss routine, extra magnetic braking algorithms, more BH prescriptions, latest binary_grid and supporting modules, updated documentation, updated version information and speedtests, updated options for common-envelope stability, lots of minor bug fixes. + 16/06/2018 Ported drand48 code from glibc just in case you don't have it. Also added an option to use Mersenne twister random numbers instead. diff --git a/LICENCE b/LICENCE index e26fbf551b25c9cfe93ce2cfb6cb5b6578e33136..d98cad8d89a828427fa50a271dc8805bf73804fa 100644 --- a/LICENCE +++ b/LICENCE @@ -112,7 +112,7 @@ Look out for the semi-regular binary_c workshops. Check out the website for deta thanks for your time! -25/07/2007, last updated 14/08/2018. +25/07/2007, last updated 22/01/2019. ------------------------------------------------------------ diff --git a/README b/README index 6f0463021899f2fae8ea4c16b52d962fd85307b8..e0e15cef5e7e3b8796554764afb52a50e2133128 100644 --- a/README +++ b/README @@ -35,13 +35,28 @@ export LIBRARY_PATH=$LD_LIBRARY_PATH:newgslpath where "newgslpath" is the location of the libgsl.so shared library. If you cannot find libgsl.so (which may be libgsl.so.23 or similar) you cannot run binary_c. +GSL can be found at +https://www.gnu.org/software/gsl/ -You will require libbsd which should come with your system, e.g. in the libbsd-dev package, otherwise you can get it from https://libbsd.freedesktop.org/wiki/. +but I keep a slightly modified version at +https://gitlab.eps.surrey.ac.uk/ri0005/GSL-2.4-RGI + +which you should use if you can. See the INSTALL.RGI file for +installation instructions. + +Binary_c will look in $GSL_DIR and $HOME/gsl for your GSL installation. + + + +You will require libbsd which should come with your system, e.g. in the libbsd-dev package, otherwise you can get it from +https://libbsd.freedesktop.org/wiki/. ------ You might also want to install: +Libmemoize from https://gitlab.eps.surrey.ac.uk/ri0005/libmemoize + Libbacktrace from https://github.com/ianlancetaylor/libbacktrace Libbfd, which should be part of your standard packages: you must install the development package also (e.g. binutils and binutils-dev). diff --git a/TODO b/TODO index 1c464cbff68ded9852ddd479df7bb38e1ffa5ef4..5be8dc99a6f1b2b795c97fe528b756bc1b3c5fea 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,6 @@ +use prefetch on tight loops + + need to change the step size when calling the hybrid solver diff --git a/configure b/configure index 3309f4590985899fad4ae7a907b25256a1f29db0..c2dcea3a27f4feed83998d3e5007d9c05a1a60a6 100755 --- a/configure +++ b/configure @@ -1,6 +1,4 @@ #!/usr/bin/env perl -use strict; -use warnings; # # configuration script for the binary_c/nucsyn code # This is version 2, a more modular, flexible script (I hope) @@ -29,9 +27,13 @@ use warnings; # For automatic building with profiling (for gcc or icc): # ./configure profile +use strict; +use warnings; +use Cwd qw/realpath/; use vars qw($acmlflags $auto_opt $binary $bits @c_files $cc $cflags $generic $coptflags $cpu %cpuinfo $Dcflags $debug $accurate $duma $extrainc $extralibdirs $extralibs $features $gprof $hostname %icc_opts $incdirs $ld $ldflags $ldpath $lib $make $makefilename $nolic $nprocessors $objcopy_opts $opt $os $owd $optdebug $src_dir $static %suncc_opts $tbse_test $v $vb $use_precomp $precomp_file $precomp_build_flags $precomp_use_flags $global_warn $compiler_version $sanitize $standard $soname $depsubflags @dataobjects); +my $colour = colours(); -print "Configuration for binary_c\n"; +print "Configuration for $colour->{red}binary_c$colour->{reset}\n\n"; checks(); defaults(); @@ -191,7 +193,7 @@ sub secondary_variables if($cc=~/^clang/i) { - $cflags .= ' -pipe -m64 -ffast-math -fsignaling-nans '; + $cflags .= ' -pipe -m64 -ffast-math -fno-finite-math-only '; # this *should* work with clang $cflags .= ' -DALIGNSIZE=16 ' ; @@ -224,7 +226,7 @@ sub secondary_variables 'ARM'=>' -DNO_FPU_CONTROL -mcpu=cortex-a53 -mfloat-abi=hard -mfpu=neon-fp-armv8 -mtune=cortex-a53 -mneon-for-64bits ', ); - $cflags .= ' -ffast-math -fsignaling-nans '; + $cflags .= ' -ffast-math -fsignaling-nans -fno-finite-math-only '; $cflags .= ' -DALIGNSIZE=16 ' if(stripversion($compiler_version)>=4.7); } elsif(stripversion($compiler_version)>=3.4) @@ -254,7 +256,7 @@ sub secondary_variables # add arch/cpu to cflags # $cflags.="-march=$cpu -mtune=$cpu - $cflags .= ' -ffast-math -fsignaling-nans '; + $cflags .= ' -ffast-math -fsignaling-nans -fno-finite-math-only '; } else { @@ -274,7 +276,7 @@ sub secondary_variables '750'=>'', 'ARM'=>' -DNO_FPU_CONTROL ', ); - $cflags.="-mtune=$cpu -mtune=$cpu -ffast-math -fsignaling-nans "; + $cflags.="-mtune=$cpu -mtune=$cpu -ffast-math -fsignaling-nans -fno-finite-math-only "; } # no 750 arch exists (?) @@ -497,6 +499,12 @@ sub secondary_variables $extralibs .= ' '.`pkg-config --libs $f->{pkg_config}`.' '; $cflags .= ' '.`pkg-config --cflags $f->{pkg_config}`.' '; } + # apply those set by config executable if given + elsif(defined $f->{config_exec_flags}) + { + $extralibs .= ' '.$f->{config_exec_flags}.' '; + $cflags .= ' '.$f->{config_exec_cflags}.' '; + } # otherwise use the backup libraries else { @@ -533,6 +541,16 @@ sub secondary_variables $coptflags =~ s/-march=\S+//g; $coptflags =~ s/-m(3dnow|popcnt)//g; } + + + $incdirs = "-I. -I/usr/include $extrainc"; + + # join all c flags into one + $cflags .= ' '.($coptflags//''); + + # enforce flag order + $cflags = order_cflags($cflags); + # save cflags to Dcflags, 'fix' quotes $Dcflags = $cflags; @@ -569,17 +587,10 @@ sub secondary_variables } } - - $incdirs = "-I. -I/usr/include $extrainc"; - - # join all c flags into one - $cflags .= ' '.($coptflags//''); - - # enforce flag order - $cflags = order_cflags($cflags); my $nativecheck = $cflags=~/-mtune=native/ ? ' (using native flag for -mcpu and -mtune)' :''; + print "\n"; show( ['Perl',$features->{perl}->{version}], ['Host',$hostname], @@ -822,6 +833,7 @@ sub create_master_makefile # Makefile for binary_c and libbinary_c # Please see the doc directory for more information # or http://www.ast.cam.ac.uk/~rgi/binary_c.html +# or http://personal.ph.surrey.ac.uk/~ri0005/binary_c.html CC ?= $cc\n"; if($ld) @@ -838,7 +850,6 @@ CC ?= $cc\n"; $touchperl = "\n touch $perlmod"; } - # force math library just in case $extralibs .= ' -lm ' if($extralibs!~/-lm/); @@ -854,7 +865,7 @@ GIT_BRANCH := \$(shell git rev-parse --abbrev-ref HEAD 2>/dev/null) CFLAGS ?= $cflags -DCFLAGS=\"\\\"$Dcflags\\\"\" -DCC=\"\\\"$cc\\\"\" -DLD=\"\\\"$ld\\\"\" LIBDIRS ?= ".($lib ? ('-L'.$lib) : '')." -L. $acmlflags $extralibdirs INCDIRS ?= $incdirs -LIBS ?= $extralibs -lc -lm +LIBS ?= $extralibs -lc -lm -ldl C_SRC := \$(wildcard *.c) \$(wildcard */*.c) H_SRC := \$(wildcard *.h) \$(wildcard */*.h) DEPFILES:= \$(C_SRC:.c=.d) \$(H_SRC:.h=.d) binary_c.h.gch.d @@ -1090,7 +1101,7 @@ sub make_dataobjects if(defined $d && -d './src/'.$d && -f -e -s $f) { my $cmd = "cd src/$d; CC=$cc OBJCOPY_OPTS=\"$objcopy_opts\" ./make_data_objects.sh"; - print "Running $f ... "; + print "Running $colour->{red}$f$colour->{reset} ... "; my @objects = split(/\n/,`$cmd`); print "done\n"; map @@ -1203,57 +1214,122 @@ sub checklib # on error return '' (empty string) # on success returns the library path (or a list of paths) - # get the library name - my $lib = shift; - my $striplib = ($lib=~/lib(.*)/)[0]; + # get the library name, lflags and cflags + my ($lib,$libflags,$cflags) = @_; + $libflags//=''; + $cflags//=''; + + # build options, if available + my $soname = ($lib=~/lib(.*)/)[0]; my $path; - print " Check for library $striplib ...\n"if($vb); + print " Check for library $colour->{yellow}$soname$colour->{reset} with libflags \"$colour->{magenta}$libflags$colour->{reset}\", cflags \"$colour->{magenta}$cflags$colour->{reset}\" ...\n" if($vb); + my $cmd; + - # check we have ld : doesn't have to be GNU ld - # but should return a version number - if(`ld -v -o /dev/null`=~/\d\.\d/) + # try gcc first, because it searches LIBRARY_PATH, + # then the system locations + # + # then try ld which only searches system locations + LINKER: foreach my $linker ('gcc 2>&1','ld') { - # check if the library is found with ld - # because this works on multiple architectures - if(`ld -l$striplib -o /dev/null 2>\&1`!~/(cannot find|not found for) -l$striplib/) + # check we have the linker : + # it should return a version number + $cmd = "$linker -v -o /dev/null"; + print "Try linker check : $colour->{green}$cmd$colour->{reset}\n" if($vb); + my $r = `$cmd`; + print "Result : $r\n"if($vb); + if($r =~ /\d\.\d/) { - # find location using ld, return if found. - # NB will not work on OSX because "--verbose" is not supported - if($os ne 'Darwin') + # check if the library is found with the gcc. + # This can take the '-Xlinker' option to provide + # the path output we require. + if($linker =~ '^gcc') { - $path = (`ld --verbose -l$striplib -o /dev/null 2>\&1` - =~ - /attempt to open (\S+lib$striplib.so) succeeded/)[0]; + $cmd = "$linker $libflags -l$soname -Xlinker --verbose -o /dev/null 2>\&1"; + print "Try build with library : $colour->{green}$cmd$colour->{reset}\n"if($vb); + $r = `$cmd`; + print "Result : $r\n"if($vb); + $path = ($r =~ + /attempt to open (\S+lib$soname.so) succeeded/)[0]; + if($path) + { + last LINKER; + } } - - # find location using $cc, gcc or cc, return if found - if(! $path) + # check if the library is found by ld or gcc + $cmd = "ld $libflags -l$soname -o /dev/null 2>\&1"; + print "Try $colour->{green}$cmd$colour->{reset}\n"if($vb); + + $r = `$cmd`; + if($r !~ /(cannot find|not found for) -l$soname/) { - foreach my $c ($cc,'gcc','cc') + $path = ($r =~ + /attempt to open (\S+lib$soname.so) succeeded/)[0]; + + # find location using linker, return if found. + # NB will not work on OSX because "--verbose" is not supported + if($os ne 'Darwin') { - my $cmd = "$c -l$striplib -Xlinker --verbose -o /dev/null 2>\&1"; - print " try $cmd\n"if($vb); - $path = (`` - =~ - /attempt to open (\S+lib$striplib.so) succeeded/)[0]; - - if($vb && defined $path && $path) + print "Try find location : $colour->{green}$linker --verbose -l$soname -o /dev/null 2>\&1$colour->{reset}\n"if($vb); + $r = `$linker --verbose -l$soname -o /dev/null 2>\&1`; + print "Result : $r\n"if($vb); + $path = ($r =~ + /attempt to open (\S+lib$soname.so) succeeded/)[0]; + if(defined $path && $path) { - print " Found $path (1)\n"; + print "Found path (0.5) "; + last LINKER; } } + + # find location using $cc, gcc or cc, return if found + if(! $path) + { + foreach my $c + ( + grep { defined } ( + $cc eq 'gcc' ? undef : $cc, + 'gcc', + realpath('cc') eq realpath('gcc') ? undef : 'cc', + ) + ) + { + my $cmd = "$c -l$soname -Xlinker --verbose -o /dev/null 2>\&1"; + print " Try $colour->{green}$cmd$colour->{reset}\n"if($vb); + $r = `$cmd`; + $path = ($r =~ + /attempt to open (\S+lib$soname.so) succeeded/)[0]; + + if($vb && defined $path && $path) + { + print " Found $path (1)\n"; + last LINKER; + } + } + } + last LINKER if ($path); } } } - - if(!$path && `ldconfig --version 2>\&1`=~/\d\.\d/) + + $cmd = "ldconfig --version 2>\&1"; + print "Find $colour->{green}$cmd$colour->{reset}\n"if($vb); + my $vstring = `$cmd`; + if(!$path && $vstring=~/\d\.\d/) { + my $grepper = "$lib\.so"; + print "linkers failed, version string is \"$vstring\".\nTry ldconfig (grep for $grepper)\n"if($vb); + # ld failed, try ldconfig - my $r = `ldconfig -p | grep $lib`; + my $LD_LIBRARY_PATH = $ENV{LD_LIBRARY_PATH} // ''; + $LD_LIBRARY_PATH=~s/\:/ /g; + $cmd = "ldconfig -p $LD_LIBRARY_PATH | grep $grepper"; + my $r = `$cmd`; remws($r); $path = $r if($r ne ''); + print "Result : \"$r\"\n"if($vb); if($vb && defined $path && $path) { @@ -1282,9 +1358,20 @@ sub checklib } - $path = '' if(!$path); - - print "Found $striplib at $path\n" if($vb); + if($path) + { + # resolve true location + $path = realpath($path); + no warnings; + print "Found library \"$colour->{yellow}$soname$colour->{reset}\" at $path\n"; + use warnings; + } + else + { + # not found: return empty string + $path = ''; + print "Failed to find library \"$colour->{yellow}$soname$colour->{reset}\"\n"; + } return $path; } @@ -1308,11 +1395,23 @@ sub show sub resolve_gsl_dir { - if (defined $ENV{GSL_DIR} && -d $ENV{GSL_DIR}) { + + if (defined $ENV{GSL_DIR} && -d $ENV{GSL_DIR}) + { + # use GSL_DIR env var return $ENV{GSL_DIR}; - } elsif (-d "$ENV{HOME}/gsl") { - return "$ENV{HOME}/gsl"; } + elsif (-d "$ENV{HOME}/gsl") + { + # use $HOME/GSL + return "$ENV{HOME}/gsl"; + } + elsif(-f "$ENV{HOME}/lib/libgsl.so") + { + # use $HOME/lib etc. + return $ENV{HOME}; + } + return ''; } @@ -1330,9 +1429,10 @@ sub features # cflags, coptflags, extralibs, extralibdirs, extrainc are all recongnised my $gsl_dir = resolve_gsl_dir() ; - my $gsl_config = -e "${gsl_dir}/bin/gsl-config" ? "${gsl_dir}/bin/gsl-config" : - -d "$ENV{HOME}/gsl" ? "$ENV{HOME}/gsl/bin/gsl-config" : - `which gsl-config`; + + my $gsl_config = + -e "${gsl_dir}/bin/gsl-config" ? "${gsl_dir}/bin/gsl-config" : + -d "$ENV{HOME}/gsl" ? "$ENV{HOME}/gsl/bin/gsl-config" :`which gsl-config`; chomp $gsl_config; $features = { @@ -1340,14 +1440,16 @@ sub features have_gsl => { check => -e $gsl_config ? 1 : 0, dir => $gsl_dir, - gsl_config => $gsl_config, - pkg_config => 'gsl', - cflags => '-DUSE_GSL', + gsl_config => $gsl_config, + config_exec => $gsl_config, + config_exec_flags => undef, + config_exec_cflags => undef, + cflags => '-DUSE_GSL', backup_libs => '-lgsl -lgslcblas', version => undef, required_version => 2.4, required_libs => ['gsl','gslcblas'], - warn_string => "binary_c looks for the libgsl shared in the usual places your system looks, as well as \$HOME/gsl (which I think is at $ENV{HOME}/gsl), but you can also set the environment variable GSL_DIR to point to the location of libgsl.\n", + warn_string => "binary_c looks for the libgsl shared in the usual places your system looks, as well as \$HOME/gsl (which I think is at $ENV{HOME}/gsl), but you can also set the environment variable GSL_DIR to point to the location of libgsl.\n", }, have_libbacktrace => @@ -1356,7 +1458,7 @@ sub features checklib('libbacktrace') && test_for_header_file('backtrace.h') && test_for_header_file('backtrace-supported.h'), - extralibs=>'-lbacktrace', + extralibs=>'-lbacktrace', }, have_libbfd => @@ -1364,7 +1466,7 @@ sub features check=>(!$generic && !$static) && checklib('libbfd') && test_for_header_file('bfd.h'), - extralibs => '-lbfd', + extralibs => '-lbfd', }, have_libbsd => @@ -1373,17 +1475,17 @@ sub features checklib('libbsd') && test_for_header_file('bsd/string.h'), pkg_config=>'libbsd', - backup_libs => '-lbsd', + backup_libs => '-lbsd', }, have_libiberty => { - check =>(!$generic && !$static) && + check => (!$generic && !$static) && -d '/usr/include/libiberty' && test_for_header_file('libiberty/libiberty.h', '-I/usr/include/libiberty'), extrainc => '-I/usr/include/libiberty', - }, + }, have_malloc_h => { @@ -1399,15 +1501,22 @@ sub features { check => `pkg-config --version 2>\&1`=~/^\d+\.\d+\.?\d+?/, }, - + + have_libmemoize => + { + check=>(!$generic && !$static) && + checklib('libmemoize') && + test_for_header_file('memoize.h'), + backup_libs => '-lmemoize', + }, libc => { - require_libs => ['c'], + required_libs => ['c'], }, libm => { - require_libs => ['m'], + required_libs => ['m'], }, duma => @@ -1480,7 +1589,7 @@ sub features accurate => { check => $accurate, - cflags => '-frounding-math -fsignaling-nans -fno-stack-protector -ffloat-store -fno-fast-math ', + cflags => '-frounding-math -fsignaling-nans -fno-finite-math-only -fno-stack-protector -ffloat-store -fno-fast-math ', perl_pre => '$cflags =~ s/-ffast-math//', }, @@ -1543,7 +1652,7 @@ sub features \$cflags .=' -g -fPIC -fno-stack-protector '; if(\$cc=~/gcc/) { - \$cflags .= ' -rdynamic -fsignaling-nans ' + \$cflags .= ' -rdynamic -fsignaling-nans -fno-finite-math-only ' } if(!\$optdebug) { @@ -1581,34 +1690,50 @@ sub features }, }; - + # remove features that fail their checks foreach my $feature (sort keys %$features) { my $f = $features->{$feature}; - print "Check for feature : $feature\n"if($vb); - if(!($f->{check} || - defined $f->{required_version} || - defined $f->{require_libs}) + no warnings; + print "Check for feature : $feature (check = $f->{check}, required_version = $f->{required_version}, required_libs = $f->{required_libs})\n" if($vb); + use warnings; + + + if(!( + $f->{check} || + defined $f->{required_version} || + defined $f->{required_libs}) ) { - print "$feature not found\n"if($vb); + print "$colour->{red}$feature$colour->{reset} not found\n"if($vb); delete $features->{$feature}; } + if($f->{required_libs}) { foreach my $lib (@{$f->{required_libs}}) { - if(!checklib('lib'.$lib)) - { - print "library $lib not found: it is required! To solve this problem, either install the library, check it is in your library paths (e.g. LD_LIBRARY_PATH and LIBRARY_PATH) or fix the checklib() function in this configure script so that it works properly on your architecture.\n"; + if(defined $f->{config_exec} && $f->{config_exec}) + { + # found library, append flags if given + $f->{config_exec_flags} = `$f->{config_exec} --libs`; + $f->{config_exec_cflags} = `$f->{config_exec} --cflags`; + chomp $f->{config_exec_flags}; + chomp $f->{config_exec_cflags}; + } + + if(!checklib('lib'.$lib,$f->{config_exec_flags})) + { + print "library $colour->{red}$lib$colour->{reset} not found: it is required! To solve this problem, either install the library, check it is in your library paths (e.g. LD_LIBRARY_PATH and LIBRARY_PATH) or fix the checklib() function in this configure script so that it works properly on your architecture.\n"; print $f->{warn_string} if($f->{warn_string}); exit; } - } + } } } + print "Finished standard tests\n"if($vb); @@ -1713,7 +1838,7 @@ sub order_cflags # to prevent spurious warning messages from the compiler my $fastmath = ($cflags=~s/(-ffast-math)//) ? $1 : ''; - my $fsignalingnans = ($cflags=~s/(-fsignaling-nans)//) ? $1: ''; + my $fsignalingnans = ($cflags=~s/(-fsignaling-nans -fno-finite-math-only)//) ? $1: ''; $cflags = join(' ', $cflags, @@ -1725,3 +1850,25 @@ sub order_cflags return $cflags; } +sub colours +{ + return { + 'magenta' => '[35m', + 'black' => '[30m', + 'bold yellow' => '[1;33m', + 'bold white' => '[1;37m', + 'green' => '[32m', + 'bold green' => '[1;32m', + 'cyan' => '[36m', + 'bold black' => '[1;30m', + 'bold blue' => '[1;34m', + 'bold magenta' => '[1;35m', + 'blue' => '[34m', + 'bold cyan' => '[1;36m', + 'bold red' => '[1;31m', + 'red' => '[31m', + 'yellow' => '[33m', + 'reset' => '[0m', + 'white' => '[37m' + }; +} diff --git a/data_object_list.sh b/data_object_list.sh index a171ca6d60948db097ee369d75b29a71e9868d5d..a474146f4990b57b2b0098e47c4056be6d25319b 100755 --- a/data_object_list.sh +++ b/data_object_list.sh @@ -35,7 +35,7 @@ function dependency { } -OBJECT_LIST="" +OBJECT_LIST="stellar_structure/miller_bertolami_postagb_coeffs_R.o stellar_structure/miller_bertolami_postagb_coeffs_L.o stellar_structure/miller_bertolami_postagb.o " dependency "OBJECT_SRC_STELLAR_COLOURS_KURUCZ" "stellar_colours/Kurucz.o" dependency "OBJECT_SRC_STELLAR_COLOURS_ELDRIDGE2015_OSTAR" "stellar_colours/eldridge2015-ostar.o" diff --git a/disc_slow_runs b/disc_slow_runs new file mode 100644 index 0000000000000000000000000000000000000000..dea83c15b150690a51a22815a8800e31304a32da --- /dev/null +++ b/disc_slow_runs @@ -0,0 +1,9 @@ + binary_c --M_1 1.84047512867673 --M_2 2.05307166963857 --orbital_period 0 --separation 129.77605868919 --metallicity 0.02 --max_evolution_time 15000 --comenv_disc_mass_fraction 0.01 --comenv_disc_angmom_fraction 0.5 --cbdisc_gamma 1.66666666666667 --cbdisc_alpha 0.00496891714145382 --cbdisc_kappa 0.143852469834572 --cbdisc_torquef 0.00678912760451139 --cbdisc_mass_loss_constant_rate 0 --cbdisc_mass_loss_inner_viscous_multiplier 39.4794721680935 --cbdisc_mass_loss_inner_viscous_accretion_method 0 --cbdisc_mass_loss_inner_L2_cross_multiplier 0.0440220279254824 --cbdisc_mass_loss_ISM_pressure 1310.95227133604 --cbdisc_mass_loss_ISM_ram_pressure_multiplier 60.4082493332708 --cbdisc_mass_loss_FUV_multiplier 0 --cbdisc_mass_loss_Xray_multiplier 32.6025987642574 --cbdisc_viscous_photoevaporation_coupling 1 --cbdisc_inner_edge_stripping 1 --cbdisc_outer_edge_stripping 0 --cbdisc_eccentricity_pumping_method 1 --cbdisc_resonance_multiplier 37.6599105823292 --cbdisc_resonance_damping 1 --disc_log 0 --disc_timestep_factor 0.01 --cbdisc_minimum_luminosity 0.0001 --cbdisc_minimum_mass 1e-06 --cbdisc_minimum_fRing 0.2 --cbdisc_fail_ring_inside_separation 0 --cbdisc_max_lifetime 1000000 + + binary_c --M_1 5.5165222628393 --M_2 4.48486229138998 --orbital_period 0 --separation 1548.76183110106 --metallicity 0.02 --max_evolution_time 15000 --comenv_disc_mass_fraction 0.01 --comenv_disc_angmom_fraction 0.5 --cbdisc_gamma 1.66666666666667 --cbdisc_alpha 0.0365044562273362 --cbdisc_kappa 0.646882802786714 --cbdisc_torquef 0.00459982435709256 --cbdisc_mass_loss_constant_rate 0 --cbdisc_mass_loss_inner_viscous_multiplier 51.6970666788662 --cbdisc_mass_loss_inner_viscous_accretion_method 2 --cbdisc_mass_loss_inner_L2_cross_multiplier 0.734431102282148 --cbdisc_mass_loss_ISM_pressure 12655.4492020609 --cbdisc_mass_loss_ISM_ram_pressure_multiplier 30.7706084010714 --cbdisc_mass_loss_FUV_multiplier 0 --cbdisc_mass_loss_Xray_multiplier 0.649410320944099 --cbdisc_viscous_photoevaporation_coupling 0 --cbdisc_inner_edge_stripping 0 --cbdisc_outer_edge_stripping 0 --cbdisc_eccentricity_pumping_method 1 --cbdisc_resonance_multiplier 12.0027407857354 --cbdisc_resonance_damping 1 --disc_log 0 --disc_timestep_factor 0.01 --cbdisc_minimum_luminosity 0.0001 --cbdisc_minimum_mass 1e-06 --cbdisc_minimum_fRing 0.2 --cbdisc_fail_ring_inside_separation 0 --cbdisc_max_lifetime 1000000 + +binary_c --M_1 2.34800412697258 --M_2 4.97674463119345 --orbital_period 0 --separation 1285.20409640316 --metallicity 0.02 --max_evolution_time 15000 --comenv_disc_mass_fraction 0.01 --comenv_disc_angmom_fraction 0.5 --cbdisc_gamma 1.66666666666667 --cbdisc_alpha 0.000678289948194627 --cbdisc_kappa 0.000101247348366322 --cbdisc_torquef 0.000830405666758338 --cbdisc_mass_loss_constant_rate 0 --cbdisc_mass_loss_inner_viscous_multiplier 20.5598866933581 --cbdisc_mass_loss_inner_viscous_accretion_method 0 --cbdisc_mass_loss_inner_L2_cross_multiplier 0.544446172574897 --cbdisc_mass_loss_ISM_pressure 2308.36086370124 --cbdisc_mass_loss_ISM_ram_pressure_multiplier 95.675649788404 --cbdisc_mass_loss_FUV_multiplier 0 --cbdisc_mass_loss_Xray_multiplier 11.1486390273392 --cbdisc_viscous_photoevaporation_coupling 1 --cbdisc_inner_edge_stripping 0 --cbdisc_outer_edge_stripping 0 --cbdisc_eccentricity_pumping_method 1 --cbdisc_resonance_multiplier 15.1719431382976 --cbdisc_resonance_damping 1 --disc_log 0 --disc_timestep_factor 0.01 --cbdisc_minimum_luminosity 0.0001 --cbdisc_minimum_mass 1e-06 --cbdisc_minimum_fRing 0.2 --cbdisc_fail_ring_inside_separation 0 --cbdisc_max_lifetime 1000000 + +binary_c --M_1 4.19515431321848 --M_2 2.31704326943836 --orbital_period 0 --separation 1141.40998406809 --metallicity 0.02 --max_evolution_time 15000 --comenv_disc_mass_fraction 0.01 --comenv_disc_angmom_fraction 0.5 --cbdisc_gamma 1.66666666666667 --cbdisc_alpha 0.00103653117338109 --cbdisc_kappa 0.000326131878848017 --cbdisc_torquef 0.00962159018496431 --cbdisc_mass_loss_constant_rate 0 --cbdisc_mass_loss_inner_viscous_multiplier 11.3672284601041 --cbdisc_mass_loss_inner_viscous_accretion_method 0 --cbdisc_mass_loss_inner_L2_cross_multiplier 0.621557583891413 --cbdisc_mass_loss_ISM_pressure 12999.1171104964 --cbdisc_mass_loss_ISM_ram_pressure_multiplier 13.803554139125 --cbdisc_mass_loss_FUV_multiplier 0 --cbdisc_mass_loss_Xray_multiplier 31.1455461160108 --cbdisc_viscous_photoevaporation_coupling 1 --cbdisc_inner_edge_stripping 0 --cbdisc_outer_edge_stripping 0 --cbdisc_eccentricity_pumping_method 1 --cbdisc_resonance_multiplier 66.0967694438224 --cbdisc_resonance_damping 1 --disc_log 0 --disc_timestep_factor 0.01 --cbdisc_minimum_luminosity 0.0001 --cbdisc_minimum_mass 1e-06 --cbdisc_minimum_fRing 0.2 --cbdisc_fail_ring_inside_separation 0 --cbdisc_max_lifetime 1000000 + + diff --git a/doc/binary_c-installation.lyx b/doc/binary_c-installation.lyx index 182fd266db4dcf5d4149b84541ddb612c40571e0..5e9f1f29b8465f459c7a5922646aba738bd6e4ae 100644 --- a/doc/binary_c-installation.lyx +++ b/doc/binary_c-installation.lyx @@ -500,6 +500,93 @@ gdb . \end_layout +\begin_layout Itemize +The +\emph on +GNU Scientific Library +\emph default + version 2.4 is required. + You may be able to install this as a system package, or you can get it + from +\begin_inset Flex URL +status collapsed + +\begin_layout Plain Layout + +https://www.gnu.org/software/gsl/ +\end_layout + +\end_inset + +. + I have a modified version at +\begin_inset Flex URL +status collapsed + +\begin_layout Plain Layout + +https://gitlab.eps.surrey.ac.uk/ri0005/GSL-2.4-RGI +\end_layout + +\end_inset + + which has minor fixes: please use this if you can. +\end_layout + +\begin_layout Itemize + +\emph on +libbsd +\emph default + is recommended. + Please install the libbsd-devel package also. + You can also install from the source available at +\begin_inset Flex URL +status collapsed + +\begin_layout Plain Layout + +https://libbsd.freedesktop.org/wiki/ +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout Itemize + +\emph on +libbacktrace +\emph default + is recommended. + See +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +https://github.com/ianlancetaylor/libbacktrace +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\emph on +libbfd +\emph default + is recommended. + This is part of the Linux +\emph on +binutils +\emph default + package. +\end_layout + \begin_layout Standard By using \emph on @@ -572,7 +659,18 @@ binary_c \emph on git \emph default - server. + server, currently at +\begin_inset Flex URL +status open + +\begin_layout Plain Layout + +https://gitlab.eps.surrey.ac.uk/ri0005/binary_c +\end_layout + +\end_inset + +. Please see the document \emph on getting_binary_c diff --git a/doc/binary_c2.pdf b/doc/binary_c2.pdf deleted file mode 100644 index 7ea3ba42178d53be58e63c04bbebe741cea6d4d6..0000000000000000000000000000000000000000 Binary files a/doc/binary_c2.pdf and /dev/null differ diff --git a/doc/getting_binary_c.lyx b/doc/getting_binary_c.lyx index 8a7eedd532cafa380399073bddf8f58f9a093f61..1817794d462dfea004bcbb8a7746fe970d676424 100644 --- a/doc/getting_binary_c.lyx +++ b/doc/getting_binary_c.lyx @@ -1,12 +1,12 @@ -#LyX 2.2 created this file. For more info see http://www.lyx.org/ -\lyxformat 508 +#LyX 2.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 544 \begin_document \begin_header \save_transient_properties true \origin unavailable \textclass article \begin_preamble - \usepackage[usenames,dvipsnames]{xcolor} +\usepackage[usenames,dvipsnames]{xcolor} \usepackage{eurosym} \usepackage{eulervm} \usepackage{enumitem} @@ -27,11 +27,11 @@ %\usepackage{gradientframe} %\usepackage[pages=all,color=Sectioncolour,angle=90,hshift=-5cm,scale=1.5,contents={Nucleosynthesis in AGB Stars}]{background} - + %\usepackage{framed} %\colorlet{shadecolor}{gray!25} % you may try 'blue' here %\renewenvironment{leftbar}{% - % \def\FrameCommand{% +% \def\FrameCommand{% %{% %\textcolor{Sectioncolour2}{\vrule width 2pt}% %\textcolor{Sectioncolour1}{\vrule width 2pt}% @@ -74,7 +74,7 @@ keepaspectratio]{images/falk2-low-lolores.eps}% {1em}%sep {}%before code {}%after code - + % redefine subsections to use red colour \titleformat{name=\subsection}% command to alter {\color{Sectioncolour}\normalfont\itshape\bfseries\large\setstretch{0.5}}%format @@ -82,8 +82,8 @@ keepaspectratio]{images/falk2-low-lolores.eps}% {1em}%sep {}%before code {}%after code - - + + \def\aj{AJ} % Astronomical Journal \def\araa{ARA\&A} % Annual Review of Astron and Astrophys \def\apj{ApJ} % Astrophysical Journal @@ -106,7 +106,7 @@ keepaspectratio]{images/falk2-low-lolores.eps}% \usepackage{natbibspacing} \setlength{\bibspacing}{0mm} - + % header \usepackage{fancyhdr} \pagestyle{fancy} @@ -115,7 +115,7 @@ keepaspectratio]{images/falk2-low-lolores.eps}% \fancyhead[RE,LO]{\color{Sectioncolour}\rightmark} % other info in "inner" position of footer line \raggedbottom - + \usepackage{listings} \lstset{escapeinside={<@}{@>}} \end_preamble @@ -135,6 +135,8 @@ keepaspectratio]{images/falk2-low-lolores.eps}% \font_osf false \font_sf_scale 100 100 \font_tt_scale 100 100 +\use_microtype false +\use_dash_ligatures true \graphics default \default_output_format default \output_sync 0 @@ -173,6 +175,7 @@ keepaspectratio]{images/falk2-low-lolores.eps}% \suppress_date false \justification true \use_refstyle 1 +\use_minted 0 \index Index \shortcut idx \color #008000 @@ -185,7 +188,10 @@ keepaspectratio]{images/falk2-low-lolores.eps}% \tocdepth 3 \paragraph_separation indent \paragraph_indentation default -\quotes_language english +\is_math_indent 0 +\math_numbering_side default +\quotes_style english +\dynamic_quotes 0 \papercolumns 1 \papersides 2 \paperpagestyle fancy @@ -212,6 +218,7 @@ server at \begin_inset CommandInset href LatexCommand href target "https://gitlab.eps.surrey.ac.uk/ri0005/binary_c" +literal "false" \end_inset @@ -230,6 +237,7 @@ Try to log in at \begin_inset CommandInset href LatexCommand href target "https://gitlab.eps.surrey.ac.uk/ri0005/binary_c" +literal "false" \end_inset @@ -260,9 +268,47 @@ locked \end_inset . - I will then email IT support, who will unlock your account, then tell me - and then I should tell you. - This may take some time: do hot hold your breath, + I will then email IT support, who will unlock your account. +\end_layout + +\begin_layout Enumerate +IT support should then tell me your account is unlocked so I should then + be able to tell you. + However, IT support have been known to unlock accounts and +\emph on +not +\emph default +let me know, so please keep trying. + If you find you +\emph on +can +\emph default +access the gitlab server (i.e. +\begin_inset space ~ +\end_inset + +you can log in) but get a +\begin_inset Quotes eld +\end_inset + +404 The page could not be found or you don't have permission to view it +\begin_inset Quotes erd +\end_inset + + error when trying to view +\begin_inset CommandInset href +LatexCommand href +target "https://gitlab.eps.surrey.ac.uk/ri0005/binary_c" +literal "false" + +\end_inset + +, then I can probably fix the problem. + But you have to tell me, so keep trying to log in :) +\end_layout + +\begin_layout Enumerate +This may take some time: please do hot hold your breath, \emph on it is most unwise. \end_layout @@ -277,10 +323,61 @@ Once you have confirmation from me (or before, if you are impatient) go \end_inset - to sign in. + to sign in, and grab the code. If everything works, great! If not, I may have to talk with IT support, yet again. \end_layout +\begin_layout Standard +\align center +\begin_inset Box Boxed +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 1 +use_makebox 0 +width "75col%" +special "none" +height "1in" +height_special "totalheight" +thickness "0.4pt" +separation "3pt" +shadowsize "4pt" +framecolor "black" +backgroundcolor "none" +status open + +\begin_layout Plain Layout +If you do not know me, it would really help me – and those who fund +\emph on +binary_c +\emph default + – if you could include in your email to me a little about you and why you + want to download and use +\emph on +binary_c +\emph default +. +\begin_inset Newline newline +\end_inset + + +\begin_inset Newline newline +\end_inset + +Please also let me know if you publish a paper which uses results derived + from +\emph on +binary_c +\emph default +. +\end_layout + +\end_inset + + +\end_layout + \end_body \end_document diff --git a/doc/getting_binary_c.pdf b/doc/getting_binary_c.pdf index 9b9330bbc0915db1f093c07cb95a07ce5d91d7d5..a78a41d6230f5da36e8c4427b3fb3f29c7ac2423 100644 Binary files a/doc/getting_binary_c.pdf and b/doc/getting_binary_c.pdf differ diff --git a/doc/papers/Seitenzahl_etal_2013.pdf b/doc/papers/Seitenzahl_etal_2013.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5041f3749437f57b4ca71cc37155c42c7fa5d2f6 Binary files /dev/null and b/doc/papers/Seitenzahl_etal_2013.pdf differ diff --git a/make b/make index e3dd145f1806971dafc86230a36a14f7ceb948e5..a6e411ba3186923b3263416f8483bc145fed5b4e 100755 --- a/make +++ b/make @@ -61,6 +61,13 @@ while(<MAKE>) # skip spurious intel compiler messages <MAKE>;<MAKE>;<MAKE>;next; } + elsif(0 && m!warning\: -fassociative-math disabled\; other options take precedence!) + { + # skip gcc's warning when we use fast-math + my $x = <MAKE>; + print $x; + #<MAKE>; + } else { my $s = (/warning/o) ? $magenta : $red; diff --git a/run_paramspace.pl b/run_paramspace.pl new file mode 100755 index 0000000000000000000000000000000000000000..64501f9bb2761b12f5e1691b4ffa23244e34194f --- /dev/null +++ b/run_paramspace.pl @@ -0,0 +1,76 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Fcntl 'O_RDONLY'; +use Tie::File; +use Term::ANSIColor; +my $dir = $ARGV[0] // die("you must give a source directory"); +my $n = $ARGV[1] // die("you must give a line number"); +my $filestub = 'paramspace.dat'; +my $file = $dir.'/'.$filestub; + +if(!-s -f -r $file) +{ + print STDERR "Cannot file $file or it has zero size.\n"; + exit; +} +if($n<1) +{ + print STDERR "Line number must be >= 1\n"; + exit; +} + +print "Run paramspace at $file line $n\n"; + +my @paramspace; +tie @paramspace,'Tie::File',$file,mode=>O_RDONLY,recsep=>"\n" + or die("cannot open $file for reading"); + + +my $system = $paramspace[$n-1]; +$system=~s/^\s+//; # just in case +print "System is $system\n"; + +my ($M0,$M1,$a,$P,$stellar_type,$lifetime,$final_eccentricity,$prob) = + split(/\s+/,$system); + +my $args = `$ENV{HOME}/progs/stars/binary_c/src/perl/scripts2/cbdiscs.pl show_opts outdir=/dev/null | grep BSE_OPTIONS`; +$args=~s/^BSE_OPTIONS\s+//; +$args=~s/\s+$//; +$args=~s/extra//; +$args=~s/--z/--metallicity/; +$args=~s/--log_fins \d//; +$args=~s/--disc_log\s+\S+//g; +$args=~s/ -- //g; + +$args = "$args --M_1 $M0 --M_2 $M1 --separation $a --orbital_period 0 --probability $prob --eccentricity 0 --metallicity 0.02 "; +print "ARGS\n$args\n"; + +my $valgrind = 'valgrind --main-stacksize=30000000 --max-stackframe=30000000 --read-var-info=yes --track-origins=yes --tool=memcheck --leak-check=full --show-reachable=yes --freelist-vol=100000000 --partial-loads-ok=no --undef-value-errors=yes -v --vgdb-error=1'; +$valgrind=''; + +my $pwd = `pwd`; chomp $pwd; + +if($pwd eq '/home/izzard/progs/stars/binary_c') +{ + # new build + $args .= ' --disc_log 2 '; +} +else +{ + # old build + $args =~ s/--cbdisc_adapt_Rin_to_L2 \d//; + $args =~ s/--cbdisc_fail_ring_inside_separation \d//; + $args =~ s/--cbdisc_inner_edge_stripping \d//; + $args =~ s/--cbdisc_outer_edge_stripping \d//; +} + +$args .= " --comenv_disc_mass_fraction 0.1 --comenv_disc_angmom_fraction -3 "; + +# run the system +my $cmd = "$valgrind tbse $args --internal_buffering 0 --log_filename /tmp/disc.log |grep -v DISC_ |grep -v POSTAGB | grep -v XYIELD|grep -v SINGLE_STAR "; + +print "exec: \n\n",color('red'),$cmd,color('white'),"\n\n"; +print `$cmd`; + +print "You should have lifetime = $lifetime\n"; diff --git a/src/API/binary_c_API.h b/src/API/binary_c_API.h index 9f065ac9625a0d3bfb7b087b8908d34bea84a452..d5da4b5e0c5090123e524a79a89bdea2b863036c 100644 --- a/src/API/binary_c_API.h +++ b/src/API/binary_c_API.h @@ -1,3 +1,4 @@ +#pragma once #include "../binary_c.h" #ifndef BINARY_C_API_H diff --git a/src/API/binary_c_evolve_for_dt.c b/src/API/binary_c_evolve_for_dt.c index 6d4464ff362327a2a400d5d4a8c30c7eed504622..6721a44b163f14d029af068166896789398942a8 100644 --- a/src/API/binary_c_evolve_for_dt.c +++ b/src/API/binary_c_evolve_for_dt.c @@ -23,6 +23,7 @@ int binary_c_API_function binary_c_evolve_for_dt(struct stardata_t * stardata, binary_c_API_log(stardata,API_LOG_PRE); + check_nans_are_signalled(); /* * Save max_evolution_time so it can be restored later diff --git a/src/RLOF/RLOF.h b/src/RLOF/RLOF.h index 2dad8ba9373d955f7e0ed7f7e81c88a4b9baa877..834f2a4eb790f09af42891c7aa80d4ccccb1fbac 100644 --- a/src/RLOF/RLOF.h +++ b/src/RLOF/RLOF.h @@ -1,3 +1,4 @@ +#pragma once #ifndef RLOF_H #define RLOF_H diff --git a/src/RLOF/RLOF_critical_q.c b/src/RLOF/RLOF_critical_q.c index 6fa53ca728256e8f6afa162f0c79823e9afcce40..ff7e5e3848f487a927ef8295028b2a36377074c1 100644 --- a/src/RLOF/RLOF_critical_q.c +++ b/src/RLOF/RLOF_critical_q.c @@ -66,6 +66,10 @@ double RLOF_critical_q(struct stardata_t * RESTRICT stardata) /* Ge et al 2015 */ qc = Ge_et_al_2015_qc(stardata,donor->mass, donor->radius); break; + case QCRIT_GB_VOS2018: + /* Vos 2018 for RGB tip */ + qc = 1.0/POW2(donor->core_mass)-0.25*donor->core_mass-2.55; + break; default: Exit_binary_c(SETUP_UNKNOWN_ARGUMENT, "Unknown qcrit method %d\n", diff --git a/src/RLOF/RLOF_prototypes.h b/src/RLOF/RLOF_prototypes.h index f829292335af95fc92bba5b22cbbbb06c90990b0..227fc25b49858abe9b3ac77c0baefbf6c62eac94 100644 --- a/src/RLOF/RLOF_prototypes.h +++ b/src/RLOF/RLOF_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef RLOF_PROTOTYPES_H #define RLOF_PROTOTYPES_H diff --git a/src/RLOF/RLOF_set_RLOF_timestep.c b/src/RLOF/RLOF_set_RLOF_timestep.c index 4e1edef8b60c4a09c2d4de668295b890cdf7977d..5f1a63375780f762e79bb83361384fca529838b8 100644 --- a/src/RLOF/RLOF_set_RLOF_timestep.c +++ b/src/RLOF/RLOF_set_RLOF_timestep.c @@ -12,7 +12,7 @@ void RLOF_set_RLOF_timestep(struct stardata_t * RESTRICT stardata, * in calculate_speed_up_factor(...). */ double speed_fac = RLOF_speed_up_factor(stardata,RLOF_orbit); - + if(IS_ZERO(speed_fac)) { /* @@ -142,7 +142,7 @@ void RLOF_set_RLOF_timestep(struct stardata_t * RESTRICT stardata, /* timestep in years */ stardata->model.dt = 1e6*stardata->model.dtm; - Dprint("RLOF Set dtm=%g M1=%g (%d) M2=%g (%d) dt_zoom = %g -> dtm = %g\n",stardata->model.dtm, + Dprint("RLOF Set timestep dtm=%g M1=%g (%d) M2=%g (%d) dt_zoom = %g -> dtm = %g\n",stardata->model.dtm, stardata->star[0].mass, stardata->star[0].stellar_type, stardata->star[1].mass, diff --git a/src/RLOF/RLOF_stability_tests.c b/src/RLOF/RLOF_stability_tests.c index a4b85c8073740218d4087af7d2077c8e03fa920e..ec0c4da62554ec69e268e719a60c6226e4b7f82f 100644 --- a/src/RLOF/RLOF_stability_tests.c +++ b/src/RLOF/RLOF_stability_tests.c @@ -119,7 +119,7 @@ int RLOF_stability_tests(struct stardata_t * RESTRICT stardata) */ stability = RLOF_UNSTABLE_GIANT_COMENV; Append_logstring(LOG_ROCHE, - "0Unstable RLOF : q=%g > qc=%g (prescription=%g, donor %d, accretor %d, M1=%g M2=%g sep=%g )", + "0Unstable RLOF : q=%g > qc=%g (prescription=%g, donor %d, accretor %d, M1=%g M2=%g sep=%g R1=%g R2=%g )", donor->q, qc, Qcrit_prescription, @@ -127,7 +127,9 @@ int RLOF_stability_tests(struct stardata_t * RESTRICT stardata) accretor->stellar_type, stardata->star[0].mass, stardata->star[1].mass, - stardata->common.separation + stardata->common.separation, + stardata->star[0].radius, + stardata->star[1].radius ); } else if(WHITE_DWARF_DYNAMICAL_TEST) diff --git a/src/RLOF/RLOF_update_masses.h b/src/RLOF/RLOF_update_masses.h index 6c7fe000d0c383095f193f5b237c6fd9822cae0a..fe428c54aa8c474593db3b50a37249d6bfef5717 100644 --- a/src/RLOF/RLOF_update_masses.h +++ b/src/RLOF/RLOF_update_masses.h @@ -1,3 +1,7 @@ +#pragma once +#ifndef RLOF_UPDATE_MASSES_H +#define RLOF_UPDATE_MASSES_H + #include "../evolution/evolution_macros.h" #include "../binary_c.h" @@ -12,3 +16,5 @@ #define ACCRETOR (naccretor) //#define MIXDEBUG + +#endif // RLOF_UPDATE_MASSES_H diff --git a/src/binary_c.h b/src/binary_c.h index 1da6e87de88b90f75de40183d7e0d6e8e2880ab5..600c4971676061b213c582e60d02a1380cc189eb 100644 --- a/src/binary_c.h +++ b/src/binary_c.h @@ -1,6 +1,8 @@ + #ifndef BINARY_C_H #define BINARY_C_H + /* * Header file to load in all macros, prototypes, etc. * for binary_c/nucsyn, and set a couple of global variables. @@ -48,9 +50,8 @@ #include "disc/disc.h" #include "memory/memory_function_macros.h" #include "API/binary_c_API.h" - +#include MEMOIZE_HEADER_FILE #include "binary_c_objects.h" - #endif //BINARY_C_H diff --git a/src/binary_c_bse.h b/src/binary_c_bse.h index eb96376e550e3b721dc947cdf87272731fc00ef3..a548ba1f8da19869940b778c04b20d681b539bb3 100644 --- a/src/binary_c_bse.h +++ b/src/binary_c_bse.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_BSE_H #define BINARY_C_BSE_H diff --git a/src/binary_c_code_options.h b/src/binary_c_code_options.h index ed701fe44837b5e4f041bb30c093c9cebcae521b..9cc396ee8cea22f8e9e6da0379a51e396748b3c8 100644 --- a/src/binary_c_code_options.h +++ b/src/binary_c_code_options.h @@ -1,5 +1,6 @@ -#ifndef CODE_OPTIONS_H -#define CODE_OPTIONS_H +#pragma once +#ifndef BINARY_C_CODE_OPTIONS_H +#define BINARY_C_CODE_OPTIONS_H /* * * This file contains the code building options for binary_c @@ -8,8 +9,8 @@ * hence a rebuild is necessary when you change them. * * There are also compiler-specific options in here, and - * some stuff for aligned memory allocation which may (or may not) - * be useful. + * some stuff for aligned memory allocation, prefecting etc. + * which may (or may not) be useful/faster for you. * * Please note: debugging is in binary_c_debug.h */ @@ -35,11 +36,6 @@ #undef SVN_URL #endif -/* - * Debugging options always come first - */ -#include "binary_c_debug.h" - /* * If __NATIVE_*__ options are set, do not use our overrides * for C-library functions. It is not recommended to set @@ -91,26 +87,25 @@ #endif -#define Exit_binary_c(...) { \ - int errsv=errno; \ - binary_c_breakpoint(stardata); \ - exit_binary_c(stardata, \ - __FILE__, \ - __LINE__, \ - errsv, \ - __VA_ARGS__); \ - \ +#define Exit_binary_c(...) { \ + int errsv=errno; \ + binary_c_breakpoint(stardata); \ + exit_binary_c_with_stardata(stardata, \ + __FILE__, \ + __LINE__, \ + errsv, \ + __VA_ARGS__); \ + \ } #define Exit_binary_c_no_stardata(...) { \ int errsv=errno; \ binary_c_breakpoint(NULL); \ - exit_binary_c(NULL, \ - __FILE__, \ - __LINE__, \ - errsv, \ - __VA_ARGS__); \ + exit_binary_c_no_stardata(__FILE__, \ + __LINE__, \ + errsv, \ + __VA_ARGS__); \ } @@ -268,6 +263,7 @@ /* * Generic macro to print a trace. */ +void Print_trace(void); #define Backtrace Print_trace(); #else @@ -281,7 +277,7 @@ * Enable this to get real segfaults (for gdb etc.) or * disable to catch segfaults and report a (rather useless) error */ -//#define SEGFAULTS +#define SEGFAULTS /* use AMD math library? */ #ifdef ACML @@ -303,6 +299,11 @@ #define FPU_CAPTURE_OVERFLOWS #define FPU_CAPTURE_DIVIDE_BY_ZERO +/* + * You want to check if isnan works + */ +#define CHECK_ISNAN_WORKS + /* use DUMA (m/c)alloc checking library? */ #ifdef DUMA #include <string.h> @@ -326,7 +327,7 @@ * The number of seconds til timeout - see reset_binary_c_timeout.c. * Ignored if 0. */ -#define TIMEOUT_SECONDS 300 +#define TIMEOUT_SECONDS 0 /* * Provide a longer timeout if using valgrind @@ -373,7 +374,8 @@ #undef MAYBE_UNUSED #define MAYBE_UNUSED __attribute__ ((unused)) -#if __GNU_MINOR__>9 + +#if (__GNUC__ ==4 && __GNU_MINOR__>9) || __GNUC__ > 4 #define Deprecated(STRING) __attribute__((deprecated(STRING))) #else #define Deprecated(STRING) @@ -481,18 +483,31 @@ /* * Enable random_seed logging */ -#define RANDOM_SEED_LOG +//#define RANDOM_SEED_LOG /* choose stdout or stderr */ //#define RANDOM_SEED_LOG_STREAM stderr +/* + * Enable random_number logging + * (in the file log) + */ +//#define RANDOM_NUMBER_LOG + /* * Enable to generate extra code for NaN checking * WARNING: very slow but sometimes necessary * e.g. 100 systems without NANCHECKS: 7.22s, with NANCHECKS 9.49s * So, disable this for a 25% gain in speed, but fewer checks. */ -//#define NANCHECKS +#define NANCHECKS + +/* + * Use native isnan, or a custom funtion? + * See nancheck.c for details. Sometimes + * a custom function is faster, but maybe not as reliable? + */ +#define USE_NATIVE_ISNAN /* * Perhaps unroll loops? @@ -505,6 +520,12 @@ */ #define TIMER +/* + * Force the use of assembly code to call the timer, + * otherwise use __rdtsc function + */ +//#define TIMER_USE_ASM + /* * Usually the timer works on the whole run, but perhaps * you want per-system stats too? You'll need this to make @@ -740,9 +761,6 @@ (N)==GSL_INTEGRATOR_CQUAD ? "CQUAD" : \ "?" ) -#define Map_GSL_params(PARAMS,ARGS) \ - va_list (ARGS); va_copy((ARGS),*(va_list*)PARAMS); - #endif //USE_GSL /************************************************************* @@ -764,7 +782,6 @@ /* use native malloc, calloc, realloc */ #define __NATIVE_MALLOC__ - /* * Define BAN_UNSAFE_FUNCTIONS to prevent the use * of some functions which could easily cause buffer @@ -834,6 +851,70 @@ #endif // USE_DRAND48_R +/* + * Memoize functions with MEMOIZE. + */ +#define MEMOIZE + +/* + * undefine __HAVE_LIBMEMOIZE__ to force use of + * local memoize code even if libmemoize is found + */ +//#undef __HAVE_LIBMEMOIZE__ + +#ifdef __HAVE_LIBMEMOIZE__ +/* + * use library memoize and its header files + */ +#define MEMOIZE_HEADER_FILE <memoize.h> + +#ifndef MEMOIZE +/* + * We don't want to use libmemoize if MEMOIZE is not + * defined, but we DO want to load its header file to + * get the fake Memoize macro. + * + * This behaviour can be enabled by setting DISABLE_LIBMEMOIZE + * before loading the header file. + */ +#define DISABLE_LIBMEMOIZE +#endif // MEMOIZE + +#undef USE_LOCAL_MEMOIZE +/* + * Note that MEMOIZE_STATS and MEMOIZE_DEBUG + * do nothing in this case, you should compile + * binary_c with libmemoize-stats or libmemoize-debug + * instead. + */ +#else + +/* + * Use local version of libmemoize and its header files. + * + * The local version does not set MEMOIZE. + */ +#define USE_LOCAL_MEMOIZE +#define MEMOIZE_HEADER_FILE "memoize/memoize.h" + +/* + * We can apply MEMOIZE_STATS and MEMOIZE_DEBUG directly + * when using the local copy of the library. + */ +//#define MEMOIZE_STATS +//#define MEMOIZE_DEBUG + +#endif // HAVE_LIBMEMOIZE + +/* + * Autotype(X) should use __auto_type if available, + * but typeof if not. + */ +#ifdef __GNUC__ +#define Autotype(X) __auto_type +#else +#define Autotype(X) typeof(X) +#endif // __GNUC__ -#endif //CODE_OPTIONS_H +#endif //BINARY_C_CODE_OPTIONS_H diff --git a/src/binary_c_collision_matrix.h b/src/binary_c_collision_matrix.h index 794496a2581992b435b8e22adaaf2b77d8bc0923..3730f8b7102fcc5ad4336257635897ebeccb1ce5 100644 --- a/src/binary_c_collision_matrix.h +++ b/src/binary_c_collision_matrix.h @@ -1,4 +1,4 @@ - +#pragma once /* * Collision matrix. * diff --git a/src/binary_c_debug.h b/src/binary_c_debug.h index 18cdab8f612f92de1202393c297cd473b9dcf497..a5ad663ffa076449edd3effbe77025b1e764ce77 100644 --- a/src/binary_c_debug.h +++ b/src/binary_c_debug.h @@ -1,9 +1,10 @@ +#pragma once /* * Debugging for binary_c */ - #ifndef BINARY_C_DEBUG_H #define BINARY_C_DEBUG_H + #include "binary_c_string_macros.h" /* @@ -55,8 +56,8 @@ * the same, but stardata is defined everywhere as a global * variable. */ -#define Debug_expression (0) -//#define Debug_expression (stardata!=NULL && stardata->model.time>1493.554) +#define Debug_expression (1) +//#define Debug_expression (stardata!=NULL && stardata->model.time>3170 && stardata->model.time < 3190) /* * If you define Debug_stop_expression, and it is at any time TRUE, @@ -70,10 +71,9 @@ * set this as part of the Debug_stop_expression. */ -#define Debug_stop_expression \ - (stardata->star[0].num_thermal_pulses>-1.0) - -#undef Debug_stop_expression + +//#define Debug_stop_expression (isinf(stardata->common.orbital_angular_frequency)) +#undef Debug_stop_expression /* * Debug_show_expression, if defined, is shown at the beginning @@ -85,9 +85,14 @@ * this is not shown. */ -#define Debug_show_expression " %g %g ", \ - stardata->star[0].stellar_timestep, \ - stardata->model.dtm +#define Debug_show_expression " %g st=[%d,%d] omega=[%g,%g] Jorb=%g omega_orb=%g ", \ + stardata->model.time, \ + stardata->star[0].stellar_type, \ + stardata->star[1].stellar_type, \ + stardata->star[0].omega, \ + stardata->star[1].omega, \ + stardata->common.orbital_angular_momentum, \ + stardata->common.orbital_angular_frequency //#undef Debug_show_expression @@ -102,7 +107,7 @@ #define DEBUG_STREAM stdout #define DEBUG_STREAM_BUFFER #define MAX_DEBUG_PRINT_SIZE 2048 -#endif +#endif // !DEBUG_STREAM /* basic debugging output statement */ /* ref: http://en.wikipedia.org/wiki/Variadic_macro */ @@ -119,7 +124,7 @@ * nan is printed. Note that this can be overridden by setting * preferences->allow_debug_nan to TRUE (usually temporarily). */ -#define DEBUG_FAIL_ON_NAN +//#define DEBUG_FAIL_ON_NAN /* * Sometimes you'll be searching for a nan (not a number) in the debug @@ -143,11 +148,11 @@ * go */ #define DEBUG_CALLER_DEPTH 3 -#endif +#endif // DEBUG_CALLER #if (defined DEBUG_CALLER) && (defined DEBUG_CALLER_LINE) #define ADDR2LINE -#endif +#endif // DEBUG_CALLER && DEBUG_CALLER_LINE /* * Action for the Debug_stop_expression @@ -173,7 +178,6 @@ * The all-important Dprint macro */ #ifndef DISABLE_DPRINT - #define Dprint_to_pointer(P,NEWLINE,...) \ if( ( DEBUG ) && ( stardata!=NULL && Debug_expression ) ) \ { \ @@ -198,24 +202,31 @@ #else #define Dprint(...) _Debug_stop; -#endif +#endif // !DISABLE_PRINT #ifdef NANCHECKS /* nan check */ #define NANCHECK(A) { \ - if(isnan(A) || isinf(A)) \ - {fflush(stdout);fflush(stderr); \ - printf("NaN detected in %s (file %s, line %d)\n",STRINGOF(A),__FILE__,__LINE__); \ - fflush(stdout); \ - fprintf(stderr,"NaN detected in %s (file %s, line %d)\n",STRINGOF(A),__FILE__,__LINE__); \ - fflush(stderr); \ - kill(0,SIGSEGV); \ - Exit_binary_c(EXIT_NAN,"NaN detected in %s (file %s, line %d)\n",STRINGOF(A),__FILE__,__LINE__); \ - } \ + if(isnan(A) || isinf(A)) \ + { \ + fflush(stdout); \ + fflush(stderr); \ + printf("NaN detected in %s (file %s, line %d)\n", \ + STRINGOF(A),__FILE__,__LINE__); \ + fflush(stdout); \ + fprintf(stderr,"NaN detected in %s (file %s, line %d)\n", \ + STRINGOF(A),__FILE__,__LINE__); \ + fflush(stderr); \ + kill(0,SIGSEGV); \ + Exit_binary_c(EXIT_NAN, \ + "NaN detected in %s (file %s, line %d)\n", \ + STRINGOF(A),__FILE__,__LINE__); \ + } \ } #else /* do nothing if no NANCHECK is defined, but also do not fail to compile */ -#define NANCHECK(A) /* do nothing */ +#define NANCHECK(A) /* do nothing */ \ + printf("do nothing\n"); #endif diff --git a/src/binary_c_derivatives.h b/src/binary_c_derivatives.h index 0ee40b757ef682cf89a9fd8a12e786e2543b39a7..ebc07f733b1cb47d28e15f68e5f8efe90e44f866 100644 --- a/src/binary_c_derivatives.h +++ b/src/binary_c_derivatives.h @@ -1,3 +1,6 @@ +#pragma once +#ifndef BINARY_C_DERIVATIVES_H +#define BINARY_C_DERIVATIVES_H /* * Macros labelling derivatives in binary_c @@ -22,7 +25,6 @@ /* * Radius, luminosity and core mass derivatives. - * Currnetly unused. */ #define DERIVATIVE_STELLAR_RADIUS 3 #define DERIVATIVE_STELLAR_LUMINOSITY 4 @@ -319,3 +321,4 @@ specific_angular_momentum_derivative((STAR),(N)) \ #endif +#endif // BINARY_C_DERIVATIVES_H diff --git a/src/binary_c_error_codes.h b/src/binary_c_error_codes.h index 8b38a29665f7e9ef0d43c0f564a9f63bc5b61a83..bebb46396b688113614524bc7793874c25b6f96f 100644 --- a/src/binary_c_error_codes.h +++ b/src/binary_c_error_codes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_ERROR_CODES_H #define BINARY_C_ERROR_CODES_H @@ -87,9 +88,12 @@ #define BINARY_C_DEBUG_STOP 79 #define FILE_READ_ERROR 80 #define STACK_HANDLER 81 -#define BINARY_C_FPE 82 -#define BINARY_C_ISNAN_FAILED 83 -#define BINARY_C_INTERPOLATION_ERROR 84 +#define STACK_FAIL 82 +#define BINARY_C_FPE 83 +#define BINARY_C_ISNAN_FAILED 84 +#define BINARY_C_INTERPOLATION_ERROR 85 +#define DISC_NO_INITIAL_STRUCTURE 86 +#define BINARY_C_BISECT_ERROR 87 /* * generic_bisect errors @@ -99,6 +103,7 @@ #define BISECT_ERROR_BRACKET_FAILED 2 #define BISECT_ERROR_NON_MONOTONICALLY_INCREASING 3 #define BISECT_ERROR_ALL_ZERO 4 +#define BISECT_ERROR_FUNCTION_FAILED 5 #define Bisect_error_string(I) \ ( \ @@ -107,7 +112,9 @@ (I)==BISECT_ERROR_BRACKET_FAILED ? "Bracket failed" : \ (I)==BISECT_ERROR_NON_MONOTONICALLY_INCREASING ? "Function is not monotonic" : \ (I)==BISECT_ERROR_ALL_ZERO ? "All residuals are zero" : \ + (I)==BISECT_ERROR_FUNCTION_FAILED ? "Function failed" : \ "unknown" \ ) + #endif // BINARY_C_ERROR_CODES_H diff --git a/src/binary_c_exit_prototypes.h b/src/binary_c_exit_prototypes.h new file mode 100644 index 0000000000000000000000000000000000000000..7e48f0e80c56d8374989d17f773187c1b37a953e --- /dev/null +++ b/src/binary_c_exit_prototypes.h @@ -0,0 +1,31 @@ + + +/* + * Exit function prototypes + * + * If you define __HAVE_STARDATA_T then the + * exit function with stardata is also included. + * + * This option is provided so that you can include + * the exit prototypes from code locations that lack + * stardata. If you include binary_c.h (as is recommended + * from general code) then you'll always have __HAVE_STARDATA_T + * defined by binary_c_structures.h + */ + +#ifdef __HAVE_STARDATA_T +void exit_binary_c_with_stardata(struct stardata_t * stardata, + char * filename, + const int fileline, + const int errsv, + const int binary_c_error_code, + char * format, + ...); +#endif//__HAVE_STARDATA_T + +void exit_binary_c_no_stardata(char * filename, + const int fileline, + const int errsv, + const int binary_c_error_code, + char * format, + ...); diff --git a/src/binary_c_experimental.h b/src/binary_c_experimental.h index 2138a0ad0cee213ab91057ce22c0f224723b8c85..939f70d3666209245e33e06d1232e25fddb03a6a 100644 --- a/src/binary_c_experimental.h +++ b/src/binary_c_experimental.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_EXPERIMENTAL_H #define BINARY_C_EXPERIMENTAL_H diff --git a/src/binary_c_function_macros.h b/src/binary_c_function_macros.h index 493036d79b028cc1026e23e3fe212eef7489c3fa..463c05d44d7a625b7958549f8744a3b175110dc3 100644 --- a/src/binary_c_function_macros.h +++ b/src/binary_c_function_macros.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_FUNCTION_MACROS_H #define BINARY_C_FUNCTION_MACROS_H @@ -12,10 +13,13 @@ * http://christian-seiler.de/projekte/fpmath/ */ #if defined FPU_PRECISION && !defined NO_FPU_CONTROL -#define Set_FPU_precision fpu_control_t fpu_oldcw,fpu_cw; \ - _FPU_GETCW(fpu_oldcw); \ - fpu_cw = (fpu_oldcw & ~ _FPU_EXTENDED & ~ _FPU_DOUBLE & ~ _FPU_SINGLE) | \ - _FPU_DOUBLE; \ +#define Set_FPU_precision fpu_control_t fpu_oldcw,fpu_cw; \ + _FPU_GETCW(fpu_oldcw); \ + fpu_cw = (fpu_oldcw & \ + ~ _FPU_EXTENDED & \ + ~ _FPU_DOUBLE & \ + ~ _FPU_SINGLE) | \ + _FPU_DOUBLE; \ _FPU_SETCW(fpu_cw); #else @@ -62,15 +66,25 @@ FPU_POLICY_DIVIDE_BY_ZERO \ FPU_POLICY_INEXACT -#define Set_FPU_policy feenableexcept(0 FPU_POLICY) - +#define Set_FPU_policy /**/ +//feenableexcept(0 FPU_POLICY) + +#define fpstring(X) \ + ( \ + fpclassify(X)==FP_NAN ? "NaN" : \ + fpclassify(X)==FP_INFINITE ? "Inf" : \ + fpclassify(X)==FP_ZERO ? "Zero" : \ + fpclassify(X)==FP_SUBNORMAL ? "Subnormal" : \ + fpclassify(X)==FP_NORMAL ? "Normal" : \ + "Unknown" \ + ) #ifdef STACK_CHECKS #define Set_stack_size \ if(STACK_ACTION != STACK_DO_NOTHING) \ { \ struct rlimit rl; \ - if(getrlimit(RLIMIT_STACK,&rl)==0) \ + if(likely(getrlimit(RLIMIT_STACK,&rl)==0)) \ { \ unsigned long int stacksize = STACK_SIZE*1000L*1000L; \ if(rl.rlim_cur!=RLIM_INFINITY && rl.rlim_cur < stacksize) \ @@ -84,16 +98,20 @@ if(setrlimit(RLIMIT_STACK,&rl)!=0) \ { \ fprintf(stderr, \ - "Unable to set stack to %ld MB (%ld bytes)\n", \ - (long int)STACK_SIZE, \ - (long int)STACK_SIZE*1024L*1024L); \ - _exit(0); \ + "Unable to set stack to %ld MB (%ld bytes)\n", \ + (long int)STACK_SIZE, \ + (long int)STACK_SIZE*1024L*1024L); \ + Exit_binary_c_no_stardata( \ + STACK_FAIL, \ + "Unable to set stack to %ld MB (%ld bytes)\n", \ + (long int)STACK_SIZE, \ + (long int)STACK_SIZE*1024L*1024L); \ } \ else \ { \ getrlimit(RLIMIT_STACK,&rl); \ printf("Stack set to %ld\n", \ - (long int) rl.rlim_cur); \ + (long int) rl.rlim_cur); \ } \ } \ } \ @@ -520,12 +538,12 @@ #ifdef BUFFERED_STACK -#define Clear_printf_buffer \ - if(stardata!=NULL && \ - stardata->preferences!=NULL && \ - stardata->preferences->internal_buffering) \ - { \ - clear_printf_buffer(stardata); \ +#define Clear_printf_buffer \ + if(likely(stardata!=NULL && \ + stardata->preferences!=NULL && \ + stardata->preferences->internal_buffering)) \ + { \ + clear_printf_buffer(stardata); \ } #else #define Clear_printf_buffer /*do_nothing*/ @@ -576,24 +594,86 @@ gsl_vector_set((V),1,(Y)); \ gsl_vector_set((V),2,(Z)); \ } +#define Set_GSL_4vector(V,W,X,Y,Z) \ + { \ + gsl_vector_set((V),0,(W)); \ + gsl_vector_set((V),1,(X)); \ + gsl_vector_set((V),2,(Y)); \ + gsl_vector_set((V),3,(Z)); \ + } #define Set_GSL_vector_array(V,X) \ { \ gsl_vector_set((V),0,((X)[0])); \ gsl_vector_set((V),1,((X)[1])); \ gsl_vector_set((V),2,((X)[2])); \ } +#define Set_GSL_4vector_array(V,X) \ + { \ + gsl_vector_set((V),0,((X)[0])); \ + gsl_vector_set((V),1,((X)[1])); \ + gsl_vector_set((V),2,((X)[2])); \ + gsl_vector_set((V),3,((X)[3])); \ + } #define Get_GSL_vector(V,X,Y,Z) \ { \ (X)=gsl_vector_get((V),0); \ (Y)=gsl_vector_get((V),1); \ (Z)=gsl_vector_get((V),2); \ } +#define Get_GSL_4vector(V,W,X,Y,Z) \ + { \ + (W)=gsl_vector_get((V),0); \ + (X)=gsl_vector_get((V),1); \ + (Y)=gsl_vector_get((V),2); \ + (Z)=gsl_vector_get((V),3); \ + } #define Get_GSL_vector_array(V,X) \ { \ (X)[0] = gsl_vector_get((V),0); \ (X)[1] = gsl_vector_get((V),1); \ (X)[2] = gsl_vector_get((V),2); \ } +#define Get_GSL_4vector_array(V,X) \ + { \ + (X)[0] = gsl_vector_get((V),0); \ + (X)[1] = gsl_vector_get((V),1); \ + (X)[2] = gsl_vector_get((V),2); \ + (X)[3] = gsl_vector_get((V),3); \ + } + +/* + * Here, ARGS are a va_list, but PARAMS are + * a (void * p) which is a pointer to a GSL_args struct. + * + * This in turn contains the pointer to the args list. + * + * You can access the error value through the integer pointer + * int * GSL_error : the VA_ARGS should be used to set this + * in a variable which is returned. + */ +#define Map_GSL_params(PARAMS,VA_ARGS) \ + va_list (VA_ARGS); \ + va_copy( \ + (VA_ARGS), \ + ((struct GSL_args_t *)(PARAMS))->args \ + ); + +/* + * Copy a set of GSL_args while also copying the va_list + * properly with va_copy. + * + * DEST and SRC are cast to a GSL_args_t * (so can be void *). + */ +#define Copy_GSL_args(SRC,DEST) \ + \ + memcpy(((struct GSL_args_t *)(DEST)), \ + ((struct GSL_args_t *)(SRC)), \ + sizeof(struct GSL_args_t)); \ + \ + va_copy(((struct GSL_args_t *)(DEST))->args, \ + ((struct GSL_args_t *)(SRC))->args)); \ + + #endif//USE_GSL /* @@ -767,5 +847,58 @@ stardata->preferences->batchmode = __batchmode; +/* + * Map a va_arg without having to specify its TYPE twice + */ +#define Map_varg(TYPE,NAME,ARGLIST) TYPE NAME = va_arg(ARGLIST,TYPE); + +/* + * Bisector function result + * + * Given a CONSTRAINT, we want VARIABLE to equal it, + * at which point the bisection function should give zero. + * + * The function must be monotonically increasing with + * VARIABLE, and preferably not be infinite. + * + * Thus, if CONSTRAINT is zero we just + * compare VARIABLE to CONSTRAINT directly. + * + * If the function is monotonically decreasing, + * use Bisection_result_inverse, in which we switch + * CONSTRAINT and VARIABLE, while this time checking + * that VARIABLE is non-zero. + */ +#define Bisection_result(CONSTRAINT, \ + VARIABLE) \ + ( \ + IS_REALLY_NOT_ZERO(CONSTRAINT) ? \ + ((VARIABLE) / (CONSTRAINT) - 1.0) : \ + ((VARIABLE) - (CONSTRAINT)) \ + ) + +#define Bisection_result_inverse(CONSTRAINT, \ + VARIABLE) \ + (Bisection_result( \ + (VARIABLE), \ + (CONSTRAINT) \ + )) + +/* + * perhaps use custom isnan function? + */ +#ifdef USE_NATIVE_ISNAN +#define _Nanchecker(X) isnan(X) +#else +/* + * remove isnan which is sometimes defined as + * a macro, and call my_isnan instead + */ +#undef isnan +#define isnan(X) my_isnan(X) +#define _Nanchecker(X) my_isnan(X) +#endif // USE_NATIVE_ISNAN + + #endif // BINARY_C_FUNCTION_MACROS_H diff --git a/src/binary_c_function_map.h b/src/binary_c_function_map.h index 6630252eb2b3c0a240b0250838ef9662a2a23933..69862417ceaa22901e697e40e9c6e3013eb1228c 100644 --- a/src/binary_c_function_map.h +++ b/src/binary_c_function_map.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_FUNCTION_MAP #define BINARY_C_FUNCTION_MAP diff --git a/src/binary_c_function_map_BSE.h b/src/binary_c_function_map_BSE.h index 277c0e192e0c822965948646bdf304a7cb970e22..34366b8a67c46e4a366ed675c26d2afc44cd18b4 100644 --- a/src/binary_c_function_map_BSE.h +++ b/src/binary_c_function_map_BSE.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_FUNCTION_MAP_BSE #define BINARY_C_FUNCTION_MAP_BSE diff --git a/src/binary_c_macros.h b/src/binary_c_macros.h index 774a3ede03cd5b0f5f0b0d79bfc8fb2fdd690b50..410b417ad308e70bb92bf801a886bc95c09fd577 100644 --- a/src/binary_c_macros.h +++ b/src/binary_c_macros.h @@ -1,7 +1,7 @@ /* * Macros used in binary_c/nucsyn */ - +#pragma once #ifndef BINARY_MACROS_H #define BINARY_MACROS_H @@ -20,13 +20,13 @@ #include "binary_c_derivatives.h" #include "stellar_colours/stellar_colour_macros.h" #include "supernovae/sn.h" +#include "file/file_macros.h" /* buffering states */ #define INTERNAL_BUFFERING_OFF 0 #define INTERNAL_BUFFERING_PRINT 1 #define INTERNAL_BUFFERING_STORE 2 - /* batchmode controls */ #define BATCHMODE_ERROR -1 #define BATCHMODE_OFF 0 @@ -508,6 +508,8 @@ #define QCRIT_GB_CHEN_HAN_FORMULA -5 #define QCRIT_GB_DEFAULT QCRIT_GB_H02 #define QCRIT_GB_GE2015 -6 +#define QCRIT_GB_VOS2018 -7 + /* * critical q by stellar type : * negative means use an appropriate algorithm @@ -723,6 +725,13 @@ #define STACK_SET 1 #define STACK_DO_NOTHING 2 +/* + * fprintf file format filters + */ +#define FILE_FILTER_NOTHING 0 +#define FILE_FILTER_STRIP_ARGUMENTS 1 + + /* * Common envelope prescriptions * (other than the default). Comment out @@ -733,71 +742,6 @@ #define LAMBDA_CE_WANG_2016 -2.0 #define LAMBDA_CE_POLYTROPE -3.0 -/* - * Circumbinary disc eccentricity pumping algorithms - */ -#define CBDISC_ECCENTRICITY_PUMPING_NONE 0 -#define CBDISC_ECCENTRICITY_PUMPING_DERMINE 1 - -/* - * Circumbinary disc from commom envelope - * angular momentum selectors - */ -#define CBDISC_ANGMOM_FROM_MOMENTS_OF_INERTIA -1 -#define CBDISC_ANGMOM_FROM_COMENV_SPECIFIC_ANGMOM -2 -#define CBDISC_ANGMOM_FROM_POSTCE_L2 -3 -#define CBDISC_ANGMOM_FROM_PRECE_RADIUS -4 - -/* - * Circumbinary disc angular momentum selectors - */ -#define CBDISC_ANGMOM_FROM_WIND_L2 -1 - -/* - * Circumbinary viscous accretion which star gains mass method - */ -#define CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_CLARKE_YOUNG_2015 0 -#define CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_GEROSA_2015 1 -#define CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_EQUAL 2 - -/* - * Minimum disc mass (in Msun) - */ -#define MINIMUM_DISC_MASS 1e-6 - -/* disc mass/angmom/ecc loss/gain mechanisms */ -#define DISC_LOSS_GLOBAL 0 -#define DISC_LOSS_INNER_VISCOUS 1 -#define DISC_LOSS_INNER_L2_CROSSING 2 -#define DISC_LOSS_FUV 3 -#define DISC_LOSS_XRAY 4 -#define DISC_LOSS_BINARY_TORQUE 5 -#define DISC_LOSS_ISM 6 -#define DISC_LOSS_RESONANCES 7 -#define DISC_LOSS_NEGATIVE_FLUX 8 -#define DISC_LOSS_N 9 - -#define DISC_LOSS_STRINGS "Global",\ - "Inner Viscous", \ - "Inner L2 Crossing", \ - "FUV", \ - "X-ray", \ - "Binary torque", \ - "ISM ram stripping", \ - "Resonances", \ - "Negative flux" - -#define Disc_derivative_string(A) ( \ - (A) == DISC_LOSS_GLOBAL ? "Global" : \ - (A) == DISC_LOSS_INNER_VISCOUS ? "Viscous" : \ - (A) == DISC_LOSS_INNER_L2_CROSSING ? "L2 crossing": \ - (A) == DISC_LOSS_FUV ? "FUV" : \ - (A) == DISC_LOSS_XRAY ? "X-ray" : \ - (A) == DISC_LOSS_BINARY_TORQUE ? "Binary torque" : \ - (A) == DISC_LOSS_ISM ? "ISM ram stripping" : \ - (A) == DISC_LOSS_RESONANCES ? "Resonances" : \ - (A) == DISC_LOSS_NEGATIVE_FLUX ? "Negative flux" : \ - "Unknown" ) /* * Number of Lagrange points */ @@ -847,11 +791,11 @@ (abs(A)) == BISECTOR_DISC_J ? "J" : \ (abs(A)) == BISECTOR_DISC_F ? "F" : \ (abs(A)) == BISECTOR_DISC_RHALFJ ? "RhalfJ" : \ - (abs(A)) == BISECTOR_DISC_PRESSURE_RADIUS ? "PhalfJ" : \ + (abs(A)) == BISECTOR_DISC_PRESSURE_RADIUS ? "RfromP" : \ (abs(A)) == BISECTOR_COMENV_DM ? "ComenvDM" : \ (abs(A)) == BISECTOR_DISC_OWEN_RADIUS ? "OwenRadius" : \ (abs(A)) == BISECTOR_DISC_VISCOUS ? "Viscous" : \ - (abs(A)) == BISECTOR_DISC_MASS_RADIUS ? "RhalfM" : \ + (abs(A)) == BISECTOR_DISC_MASS_RADIUS ? "RfromM" : \ (abs(A)) == BISECTOR_DISC_RIN_MIN ? "RinMin" : \ (abs(A)) == BISECTOR_DISC_BISECTION_ROOTER ? "Disc_bi_rooter" : \ "Unknown") @@ -885,6 +829,9 @@ /* a large separation to mimic single stars */ #define VERY_LARGE_SEPARATION 1e50 +/* an impossibly large stellar mass */ +#define IMPOSSIBLY_LARGE_MASS 1e50 + /* * Accretion limitors */ @@ -977,4 +924,74 @@ */ #define SVN_REVISION_UNDEFINED -1.0 +/* + * Solar symbol + * + * Use either: + * U+2609 ☉ + * or + * U+2299 ⊙ + */ +#define SOLAR_SYMBOL "☉" + +/* + * Convenience macros + */ +#define L_SOLAR "L☉" +#define M_SOLAR "M☉" +#define R_SOLAR "R☉" + +/* + * Convert X to the appropriate solar unit, + * where TYPE is L, M or R + */ +#define Solarunit(X,TYPE) ((X) / TYPE##_SUN) + +/* + * Convert X to the appropriate solar unit, + * and return a pair of variables: + * + * 1) the variable X divided by the appropriate solar constant + * 2) the solar constant string + * + * Type is L, M or R + * + * You can thus do something like: + * + * r = 123.45 * R_SUN; + * printf("Radius is %g %s",Solar(r,R)); + * + * to output something like + * + * "Radius is 123.45 R☉" + */ +#define Solar(X,TYPE) Solarunit((X),TYPE) , TYPE##_SOLAR + + +/* + * Magnetic braking algorithms + */ +#define MAGNETIC_BRAKING_ALGORITHM_HURLEY_2002 0 +#define MAGNETIC_BRAKING_ALGORITHM_ANDRONOV_2003 1 +#define MAGNETIC_BRAKING_ALGORITHM_BARNES_2010 2 +#define MAGNETIC_BRAKING_ALGORITHM_RAPPAPORT_1983 3 + +/* + * Default gamma for Rappaport type systemsx + */ +#define MAGNETIC_BRAKING_GAMMA_DEFAULT 3.0 + + +/* + * number of burn in timesteps + */ +#define BURN_IN_TIMESTEPS 10 + + +/* + * Small envelope algorithms + */ +#define SMALL_ENVELOPE_METHOD_HURLEY 0 +#define SMALL_ENVELOPE_METHOD_MILLER_BERTOLAMI 1 + #endif /* BINARY_MACROS_H */ diff --git a/src/binary_c_main.h b/src/binary_c_main.h index 52c547c3bcc176916e5b93c8112a8b2e773af1d3..7b1ee77a579664426f1bae117a46495020ce44a6 100644 --- a/src/binary_c_main.h +++ b/src/binary_c_main.h @@ -1,3 +1,8 @@ +#pragma once +#ifndef BINARY_C_MAIN_H +#define BINARY_C_MAIN_H + + #include "binary_c.h" #ifdef FPU_PRECISION #include <fpu_control.h> @@ -10,3 +15,5 @@ #ifdef USE_MCHECK #include <mcheck.h> #endif//USE_MCHECK + +#endif // BINARY_C_MAIN_H diff --git a/src/binary_c_main_macros.h b/src/binary_c_main_macros.h index 2294e7dfd566085aec9ad896fdac2e07c02ef26d..d7be479be04ea499094d12db07169c05361b6b4c 100644 --- a/src/binary_c_main_macros.h +++ b/src/binary_c_main_macros.h @@ -1,3 +1,5 @@ +#pragma once + #ifndef MAIN_MACROS_H #define MAIN_MACROS_H /* diff --git a/src/binary_c_maths.h b/src/binary_c_maths.h index 316224f6b165f8584c98ef61773dcc412e119fba..d801eda85527dbfc5f9a5008cc39adf7995bb1f1 100644 --- a/src/binary_c_maths.h +++ b/src/binary_c_maths.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_MATHS_H #define BINARY_MATHS_H @@ -10,11 +11,11 @@ /* options */ -/* - * define MIN_MAX_ARE_FUNCTIONS to make MIN and MAX use functions, - * otherwise they are true macros. + +/* + * If defined, allow monochecks in generic_bisect. */ -#define MIN_MAX_ARE_FUNCTIONS +#define BISECT_DO_MONOCHECKS /* * define USE_FABS to force the use of fabs instead of @@ -57,42 +58,29 @@ #define PI (3.141592653589793238462643383279) #define TWOPI (2.0*PI) -/* swap macro */ -#define SWAP(A,B) {register double temp=(A);(A)=(B);(B)=temp;} - -/* MIN and MAX of two floating point numbers */ - -/* generic macros */ -#define MIN_MACRO(A,B) ((A)<(B)?(A):(B)) -#define MAX_MACRO(A,B) ((A)>(B)?(A):(B)) - -#ifdef MIN_MAX_ARE_FUNCTIONS -/* bulild in the MAX,MIN as functions */ - -/* check for C99 standard */ -#if (_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L) -/* use standard (C99) library functions */ -#define MAX(A,B) (fmax((A),(B))) -#define MIN(A,B) (fmin((A),(B))) -#else -/* otherwise make our own functions */ -#define MAX(A,B) (func_max((A),(B))) -#define MIN(A,B) (func_min((A),(B))) -static inline double func_max(const double a,const double b) pure_function; -static inline double func_max(const double a,const double b){return(MAX_MACRO(a,b));} -static inline double func_min(const double a,const double b) pure_function; -static inline double func_min(const double a,const double b){return(MIN_MACRO(a,b));} -#endif // C99 check - -#else//MIN_MAX_ARE_FUNCTIONS - -/* build in the macros as true C macros */ -#define MIN_MAX_ARE_MACROS -#define MAX(A,B) (MAX_MACRO((A),(B))) -#define MIN(A,B) (MIN_MACRO((A),(B))) +/* swap macro : A and B must be of the same type */ +#define SWAP(A,B) {register Autotype(A) temp=(A);(A)=(B);(B)=temp;} -#endif //MIN_MAX_ARE_FUNCTIONS +/* macros to define less and more than operations */ +#define LESS_THAN(A,B) ((A)<(B)) +#define MORE_THAN(A,B) ((A)>(B)) +/* + * MIN and MAX of two numbers of generic type with only + * one evalutation of each, taken from + * https://gcc.gnu.org/onlinedocs/gcc/Typeof.html + */ +#define MAX(A,B) ({ \ + Autotype(A) _a = (A); \ + Autotype(B) _b = (B); \ + MORE_THAN(_a,_b) ? _a : _b; \ + }) +#define MIN(A,B) ({ \ + Autotype(A) _a = (A); \ + Autotype(B) _b = (B); \ + LESS_THAN(_a,_b) ? _a : _b; \ + }) + /* max, min of several floating point numbers */ #define MAX3(A,B,C) MAX((A),MAX((B),(C))) #define MAX4(A,B,C,D) MAX((A),MAX3((B),(C),(D))) @@ -101,6 +89,29 @@ static inline double func_min(const double a,const double b){return(MIN_MACRO(a, #define MIN4(A,B,C,D) MIN((A),MIN3((B),(C),(D))) #define MIN5(A,B,C,D,E) MIN((A),MIN4((B),(C),(D),(E))) +#define MINX(ax,ay,bx,by,_minx) ({ \ + Autotype(ax) _ax = (ax); \ + Autotype(bx) _bx = (bx); \ + Autotype(ay) _ay = (ay); \ + Autotype(by) _by = (by); \ + if(_minx!=NULL) \ + { \ + *_minx = LESS_THAN((_ay),(_by)) ? _ax : _bx; \ + } \ + MIN(_ay,_by); \ + }) + +#define MAXX(ax,ay,bx,by,_minx) ({ \ + Autotype(ax) _ax = (ax); \ + Autotype(bx) _bx = (bx); \ + Autotype(ay) _ay = (ay); \ + Autotype(by) _by = (by); \ + if(_maxx!=NULL) \ + { \ + *_maxx = MORE_THAN((_ay),(_by)) ? _ax : _bx; \ + } \ + MAX(_ay,_by); \ + }) /* * Which_MIN and Which_MAX return the minimum and maximum (respectively) @@ -125,7 +136,7 @@ static inline double _which_MIN(int * which, for(i=0;i<n;i++) { double x = va_arg(args,double); - if(x < min) + if(LESS_THAN(x, min)) { *which = i; min = x; @@ -146,7 +157,7 @@ static inline double _which_MAX(int * which, for(i=0;i<n;i++) { double x = va_arg(args,double); - if(x > max) + if(MORE_THAN(x, max)) { *which = i; max = x; @@ -173,21 +184,21 @@ static inline double _which_MAX(int * which, * with a check to make sure we avoid 1/0 and calculate the maximum * difference (assumes floats/doubles) */ -#define ABSDIFF(A,B) (fabs((A)-(B))/MAX(MIN(fabs(A),fabs(B)),TINY)) +#define ABSDIFF(A,B) (fabs((A)-(B))/MAX(MIN(fabs(A),fabs(B)),(TINY))) /* * Use ABSDIFF to see if A and B are the same within * some threshold EPS */ -#define FLOATSAMEEPS(A,B,EPS) (ABSDIFF((A),(B))<=EPS) +#define FLOATSAMEEPS(A,B,EPS) (ABSDIFF((A),(B))<=(EPS)) /* * Apply FLOATSAMEEPS with the double-precision * floating point epsilon. NB we assume that we never use * single-precision in binary_c */ -#define FLOATSAME(A,B) FLOATSAMEEPS((A),(B),DBL_EPSILON) -#define FLOATNEARLYSAME(A,B) FLOATSAMEEPS((A),(B),(10.0*DBL_EPSILON)) +#define FLOATSAME(A,B) FLOATSAMEEPS((A),(B),(DBL_EPSILON)) +#define FLOATNEARLYSAME(A,B) FLOATSAMEEPS((A),(B),(10.0*(DBL_EPSILON))) /* * Macro to calculate the absolute % difference between two numbers @@ -249,14 +260,6 @@ static inline int powab(const int a,const int b){int r=1,i;for(i=0;i<b;i++){r*=a #define ABS_LESS_THAN(A,B) (fabs((A))<(B)) #define ABS_LESS_THAN_OR_EQUAL(A,B) (ABS_LESS_THAN((A),(B))||FEQUAL((A),(B))) -/* - * Compare with DBL_EPSILON to make sure - * numbers are non-zero but either positive - * or negative - */ -#define POSITIVE_NONZERO(A) ((A)>(DBL_EPSILON)) -#define NEGATIVE_NONZERO(A) ((A)<(DBL_EPSILON)) - #else//USE_FABS @@ -277,11 +280,16 @@ static inline int func_is_really_zero(const double a) pure_function; static inline int func_is_zero(const double a){return(IS_ZERO_MACRO(a));} static inline int func_is_really_zero(const double a){return(IS_REALLY_ZERO_MACRO(a));} +/* derived macros */ #define IS_NOT_ZERO(A) (!(IS_ZERO((A)))) #define IS_REALLY_NOT_ZERO(A) (!(IS_REALLY_ZERO((A)))) #define FEQUAL(A,B) (IS_ZERO((A)-(B))) #define MORE_OR_EQUAL(A,B) (((A)>=(B))||(FEQUAL((A),(B)))) #define LESS_OR_EQUAL(A,B) MORE_OR_EQUAL((B),(A)) +#define NEITHER_ZERO(A,B) (IS_NOT_ZERO(A) && \ + IS_NOT_ZERO(B)) +#define NEITHER_REALLY_ZERO(A,B) (IS_REALLY_NOT_ZERO(A) && \ + IS_REALLY_NOT_ZERO(B)) // alternative > and < for fabs(x)<y #define ABS_MORE_THAN(A,B) (((A)>(B))||(-(A)>(B))) @@ -290,14 +298,9 @@ static inline int func_is_really_zero(const double a){return(IS_REALLY_ZERO_MACR #define ABS_LESS_THAN_OR_EQUAL(A,B) (ABS_LESS_THAN((A),(B))||FEQUAL((A),(B))) #endif//USE_FABS -/* - * Definition of positive or negative, non-zero numbers - */ -#define POSITIVE_NONZERO(A) ((A)>REALLY_TINY) -#define NEGATIVE_NONZERO(A) ((A)<REALLY_TINY) - /* find the sign of a number */ #define SIGN(X) (IS_ZERO(X) ? +1.0 : (X)/fabs(X)) +#define SIGN_REALLY(X) (IS_REALLY_ZERO(X) ? +1.0 : (X)/fabs(X)) /* range macros */ #define IN_RANGE(A,B,C) ((MORE_OR_EQUAL((A),(B)))&&(LESS_OR_EQUAL((A),(C)))) @@ -327,6 +330,7 @@ static inline int func_is_really_zero(const double a){return(IS_REALLY_ZERO_MACR #define POW6_MACRO(X) ((X)*(X)*(X)*(X)*(X)*(X)) #define POW7_MACRO(X) ((X)*(X)*(X)*(X)*(X)*(X)*(X)) #define POW8_MACRO(X) ((X)*(X)*(X)*(X)*(X)*(X)*(X)*(X)) +#define POW9_MACRO(X) ((X)*(X)*(X)*(X)*(X)*(X)*(X)*(X)*(X)) #define POW1p5_MACRO(X) ((X)*sqrt(X)) #define POW2p5_MACRO(X) ((X)*(X)*sqrt(X)) #define POW3p5_MACRO(X) ((X)*(X)*(X)*sqrt(X)) @@ -346,6 +350,7 @@ static inline int func_is_really_zero(const double a){return(IS_REALLY_ZERO_MACR #define POW6(A) func_pow6(A) #define POW7(A) func_pow7(A) #define POW8(A) func_pow8(A) +#define POW9(A) func_pow9(A) #define POW2p5(A) func_pow2p5(A) #define POW3p5(A) func_pow3p5(A) #define POW1p5(A) func_pow1p5(A) @@ -364,6 +369,7 @@ static inline double func_pow5(const double x) pure_function; static inline double func_pow6(const double x) pure_function; static inline double func_pow7(const double x) pure_function; static inline double func_pow8(const double x) pure_function; +static inline double func_pow9(const double x) pure_function; static inline double func_pow2p5(const double x) pure_function; static inline double func_pow3p5(const double x) pure_function; static inline double func_pow1d4(const double x) pure_function; @@ -375,6 +381,7 @@ static inline double func_pow5(const double x) {return POW5_MACRO(x);} static inline double func_pow6(const double x) {return POW6_MACRO(x);} static inline double func_pow7(const double x) {return POW7_MACRO(x);} static inline double func_pow8(const double x) {return POW8_MACRO(x);} +static inline double func_pow9(const double x) {return POW8_MACRO(x);} static inline double func_pow1p5(const double x) {return POW1p5_MACRO(x);} static inline double func_pow2p5(const double x) {return POW2p5_MACRO(x);} static inline double func_pow3p5(const double x) {return POW3p5_MACRO(x);} @@ -393,6 +400,7 @@ static inline double func_pow4d3(const double x) {return POW4d3_MACRO(x);} #define POW6(A) POW6_MACRO(A) #define POW7(A) POW7_MACRO(A) #define POW8(A) POW8_MACRO(A) +#define POW9(A) POW9_MACRO(A) #define POW2p5(A) POW2p5_MACRO(A) #define POW3p5(A) POW3p5_MACRO(A) #define POW1p5(A) POW1p5_MACRO(A) @@ -406,6 +414,20 @@ static inline double func_pow4d3(const double x) {return POW4d3_MACRO(x);} #endif //POWER_OPERATIONS_ARE_FUNCTIONS +/* + * Compare with DBL_MIN to make sure + * numbers are non-zero but either positive + * or negative + */ +#define SMALLEST_POSITIVE_NUMBER (DBL_MIN) +#define POSITIVE_NONZERO(A) ((A)>(SMALLEST_POSITIVE_NUMBER)) +#define NEGATIVE_NONZERO(A) ((A)<(-SMALLEST_POSITIVE_NUMBER)) +#define NONZERO(A) (POSITIVE_NONZERO(A)||NEGATIVE_NONZERO(A)) + + +/* + * Polynomial forms + */ #define Quadratic(X,A,B,C) ( \ (A)+ \ @@ -455,4 +477,10 @@ static inline double func_pow4d3(const double x) {return POW4d3_MACRO(x);} */ #define Eval_if_nonzero(X,Y) (IS_NOT_ZERO(X) ? (Y) : 0.0) + +/* + * "Safe" pow(10,x) which first checks if x is NaN, if it + * is, do nothing + */ +#define Safepow10(X) (isnan(X) ? (X) : pow(10.0,(X))) #endif // BINARY_MATHS_H diff --git a/src/binary_c_objects.h b/src/binary_c_objects.h index 57503ef7c244e4b93cab215e46b47c8319461fe8..e76bece4bad512e7d0b6d2ee98189c87637f39b1 100644 --- a/src/binary_c_objects.h +++ b/src/binary_c_objects.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_OBJECTS_H #define BINARY_C_OBJECTS_H diff --git a/src/binary_c_parameters.h b/src/binary_c_parameters.h index 916f3713d464b05759fec6acb7c3bfa985439a24..0fa04f0e0b9a6efff7eec5fffcdaf498d6e3051f 100644 --- a/src/binary_c_parameters.h +++ b/src/binary_c_parameters.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_PARAMETERS_H #define BINARY_PARAMETERS_H @@ -17,6 +18,7 @@ */ #include "binary_c_code_options.h" + /* * Constants from BSE */ @@ -1279,7 +1281,7 @@ #endif /************************************************************ - * 2018 treatment of circumstellar and circumbinary discs + * 2019 treatment of circumstellar and circumbinary discs ************************************************************/ //#define DISCS @@ -1292,39 +1294,6 @@ #define DISCS_ACCRETION_ONTO_RGB_FUDGE -//#define DISC_TESTING -#define DISCS_JERMYN - -/* - * Maximum number of disc zones - */ -#define DISCS_MAX_N_ZONES 3 - -/* - * Number of power laws to calculate in each disc - */ -#define DISCS_NUMBER_OF_POWER_LAWS 10 - -/* - * Maximum age of a disc - */ -#define DISC_MAX_AGE (1e9*YEAR_LENGTH_IN_SECONDS) - -/* - * Set the timestep to be this factor multiplied by - * the natural timescale of the disc. - * Default: 1e-2 - */ -#define DISC_TIMESTEP_FACTOR (0.02) -#define DISC_MAX_TIMESTEP (1e+5*YEAR_LENGTH_IN_SECONDS) -#define DISC_MIN_TIMESTEP (1e-3*YEAR_LENGTH_IN_SECONDS) - -/* - * Disc minimum timestep in years. If below this is required, the - * disc is evaporated. - */ -#define DISC_MINIMUM_TIMESTEP 0.5 - /* * Material ejected from the common envelope should be put in * a circumbinary disc @@ -1369,6 +1338,11 @@ #endif // DISCS +/* + * Post-AGB star logging + */ +#define LOG_POSTAGB_STARS + /* * Circumbinary disk physics: deprecated. This remains @@ -1741,7 +1715,7 @@ #undef RLOF_CONVERGENCE_FACTOR1 #define RLOF_CONVERGENCE_FACTOR1 1.0 #undef RLOF_LIMIT_TO_TWENTY_PERCENT_CHANGE -#endif +#endif//CFDENISE #ifdef HRDIAG__XXXXX #undef ROTATIONALLY_ENHANCED_MASS_LOSS @@ -1749,8 +1723,8 @@ #undef NANCHECKS #ifndef HRDIAG_APPEND_NUCSYN #undef NUCSYN -#endif -#endif +#endif//HRDIAG_APPEND_NUCSYN +#endif//HRDIAG_XXXXX #ifdef NUCSYN #include "nucsyn/nucsyn_parameters.h" @@ -1837,5 +1811,40 @@ */ #define TRIPLE +/* + * Simulate carbon burning + */ +//#define CARBON_BURNING + + +/* + * Energy ranges to define FUV, EUV and X-ray, + * in eV. + * + * Following Richling and Yorke + * + * FUV photons have 6 < E / eV < 13.6 + * EUV photons have 13.6 < E/eV < 100.0 + * X-ray photons have 100.0 < E/eV < 10^5 + * + */ +#define FUV_eV_MIN 6.0 +#define FUV_eV_MAX 13.6 +#define EUV_eV_MIN 13.6 +#define EUV_eV_MAX 1e2 +#define XRAY_eV_MIN 1e2 +#define XRAY_eV_MAX 1e5 + + +/* + * Fabian's cosmology project + */ +//#define FABIAN_COSMOLOGY + +/* + * Allow time to reverse + */ +//#define REVERSE_TIME + #endif //BINARY_PARAMETERS_H diff --git a/src/binary_c_physical_constants.h b/src/binary_c_physical_constants.h index b53fc15deee8ad229286b6786179ed54e179a280..9595e461bb9e3668194ab20f9e5acc7a490e65c2 100644 --- a/src/binary_c_physical_constants.h +++ b/src/binary_c_physical_constants.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_PHYSICAL_CONSTANTS #define BINARY_C_PHYSICAL_CONSTANTS @@ -16,6 +17,7 @@ /* Gravitational constant in CGS units */ //#define GRAVITATIONAL_CONSTANT (6.67259E-8) // updated from http://physics.nist.gov/cgi-bin/cuu/Value?bg +// using CODATA 2014 recommended values #define GRAVITATIONAL_CONSTANT (6.67408E-8) /* Planck's constant : h */ @@ -152,6 +154,15 @@ /* Stefan-Boltzmann constant in erg cm-2 K-4 s-1 (5.67051E-5) */ #define STEFAN_BOLTZMANN_CONSTANT (POW2(PI) * POW4(BOLTZMANN_CONSTANT) / (60.0 * POW3(PLANCK_CONSTANT_BAR) * POW2(SPEED_OF_LIGHT))) +/* one parsec */ +#define PARSEC (1296000.0 / TWOPI * ASTRONOMICAL_UNIT) + +/* one kiloparsec */ +#define KILOPARSEC (1e3 * PARSEC) + +/* one megaparsec */ +#define MEGAPARSEC (1e6 * PARSEC) + /* * Define LIKE_ASTROPY to switch constants to * those used in astropy @@ -173,4 +184,10 @@ #endif//LIKE_ASTROPY + + +/* one Foe (also known as a Bethe) is 10^51 erg == 10^44 Joule */ +#define FOE (1e51) +#define BETHE (FOE) + #endif //BINARY_C_PHYSICAL_CONSTANTS diff --git a/src/binary_c_prototypes.h b/src/binary_c_prototypes.h index 4a7b350ff0644b5c5ad92472eebed40d7a355ed3..07147918e3d46f974edc58fc8e5ea55baedc13b3 100644 --- a/src/binary_c_prototypes.h +++ b/src/binary_c_prototypes.h @@ -3,6 +3,7 @@ * Header file to load in all the binary_c function * prototypes. */ +#pragma once #ifndef BINARY_PROTOTYPES_H #define BINARY_PROTOTYPES_H @@ -15,6 +16,7 @@ #include "./binary_c_main_prototypes.h" #include "./debug/debug_prototypes.h" +#include "./file/file_prototypes.h" #include "./batchmode/batchmode_prototypes.h" #include "./memory/memory_prototypes.h" #include "./tables/tables_prototypes.h" @@ -43,6 +45,9 @@ #include "./opacity/opacity_prototypes.h" #include "./equation_of_state/equation_of_state_prototypes.h" #include "./envelope_integration/envelope_integration_prototypes.h" +#include "./breakpoints/breakpoints_prototypes.h" +#include "./memoize/memoize_prototypes.h" +#include "binary_c_exit_prototypes.h" void reset_binary_c_timeout(void); void disable_binary_c_timeout(void); @@ -53,13 +58,6 @@ void tstp_handler(int sig, siginfo_t *info, ucontext_t *uc); #endif -void exit_binary_c(struct stardata_t * stardata, - char * filename, - const int fileline, - const int errsv, - const int binary_c_error_code, - char * format, - ...); #ifdef RANDOM_SYSTEMS void set_random_system(struct stardata_t * stardata); diff --git a/src/binary_c_stellar_parameters.h b/src/binary_c_stellar_parameters.h index 4ba42336ecd720a94d4d25f159313a3e9db781c3..d66ddd5523a373c1ec1ef477f0ec15160680eb03 100644 --- a/src/binary_c_stellar_parameters.h +++ b/src/binary_c_stellar_parameters.h @@ -1,5 +1,5 @@ /* Header file for the Binary Star Evolution Model */ - +#pragma once /******************************************************************************/ /****************************************************************************** * This file contains various parameters for identifying types of stars in the diff --git a/src/binary_c_stellar_types.h b/src/binary_c_stellar_types.h index 47302d9e587d6a44dc1cba5c0d2c95b392aa97be..299728944cc0e6137e2d61ca6ee4655735a0a8fe 100644 --- a/src/binary_c_stellar_types.h +++ b/src/binary_c_stellar_types.h @@ -1,3 +1,4 @@ +#pragma once #ifndef STELLAR_TYPES_H #define STELLAR_TYPES_H @@ -128,6 +129,9 @@ /* Naked He Star 7,8,9 */ #define NAKED_HELIUM_STAR(A) (((A)>TPAGB)&&((A)<HeWD)) +/* carbon-core stars */ +#define CARBON_CORE_STAR(A) ((A)>=CHeB && (A)<HeWD && (A)!=HeMS) + /* dammit! I wish we could call two things "MAIN_SEQENCE" but we can't! */ /* NB Helium main sequence is separate from the hydrogen main sequence */ /* Main sequence 0,1 */ @@ -187,7 +191,10 @@ /************************************************************/ /* These are the types for the individual stars */ #define SINGLE_UNDEF 666 -#define CHECK_BLUE_STRAGGLER(k) ((stardata->common.tm<stardata->model.time)&&(ON_MAIN_SEQUENCE(stardata->star[(k)].stellar_type))) +#define CHECK_BLUE_STRAGGLER(k) \ + (stardata->common.tm<stardata->model.time \ + && \ + ON_MAIN_SEQUENCE(stardata->star[(k)].stellar_type)) #define BLUE_STRAGGLER 16 /************************************************************/ @@ -204,7 +211,7 @@ #define EITHER_STAR_EVOLVING (EVOLVING(0) || EVOLVING(1)) #define EITHER_STAR_MASSLESS (MASSLESS(0) || MASSLESS(1)) -#define NEITHER_STAR_MASSLESS (!(EITHER_STAR_MASSLESS)) +#define NEITHER_STAR_MASSLESS ((!MASSLESS(0))&&(!MASSLESS(1))) #define NOTHING_LEFT (MASSLESS(0) && MASSLESS(1)) #define OSTAR(A) \ diff --git a/src/binary_c_string_macros.h b/src/binary_c_string_macros.h index 9188e202b846f82d39975d0b7df4ca2805502434..7bcd3b6113b7c53b17aa5982bcc5b14de0babddb 100644 --- a/src/binary_c_string_macros.h +++ b/src/binary_c_string_macros.h @@ -1,3 +1,4 @@ +#pragma once #ifndef STRING_MACROS_H #define STRING_MACROS_H diff --git a/src/binary_c_structures.h b/src/binary_c_structures.h index eeed54146e5b6193d2f29050198d2a8268f2504c..9fe3b9c64fb14161c07fb004a32d2987c1c2723e 100644 --- a/src/binary_c_structures.h +++ b/src/binary_c_structures.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_STRUCTURES_H #define BINARY_STRUCTURES_H @@ -20,6 +21,14 @@ #include "nucsyn/nucsyn_ensemble.h" #endif /* NUCSYN */ + +#ifdef DISCS +#include "disc/disc_parameters.h" +#include "disc/disc_macros.h" +#include "disc/disc_power_laws.h" +#include "disc/disc_constraints.h" +#endif//DISCS + /* * Data table plus */ @@ -42,6 +51,59 @@ struct mersenne_twister_data { #endif // USE_MERSENNE_TWISTER +/* + * custom file struct: use this with + * binary_c_fopen, binary_c_fclose + * binary_c_fprintf and binary_c_fflush + * + * This enables you to specify your own + * maximum file lengths and monitor file size. + */ +struct binary_c_file { +#ifdef MEMOIZE + struct memoize_hash_t * memo; +#endif + FILE * fp; + size_t size; // bytes + size_t maxsize; // bytes + char path[STRING_LENGTH]; +}; + +#if defined MEMOIZE && defined USE_LOCAL_MEMOIZE +/* + * Memoize structs, see memoize.h and memoize.c + */ +struct memoize_hash_item_t { + char * funcname; + void * parameter; + void * result; + size_t parameter_memsize; + size_t result_memsize; + size_t n; +#ifdef MEMOIZE_STATS + ticks tmisses; + ticks thits; + long int nhits; + long int nmisses; +#endif // MEMOIZE_STATS +}; + +struct memoize_hash_t { + size_t n; + unsigned int free_results_pointers; + struct memoize_hash_item_t * item; +#ifdef MEMOIZE_STATS + /* counters */ + long int nhits; + long int nmisses; + /* timers */ + ticks toverheads; + ticks tsearch; + ticks tstore; +#endif // MEMOIZE_STATS +}; +#endif // USE_LOCAL_MEMOIZE && MEMOIZE + /* * Persistant stored data: * note that this struct is set up by binary_c when run, @@ -55,7 +117,9 @@ struct store_t { Nuclear_mass *mnuc; /* Nuclear masses */ Nuclear_mass *imnuc; /* 1.0/ Nuclear masses */ Nuclear_mass *mnuc_amu; /* Nuclear masses divided by AMU */ + Nuclear_mass *imnuc_amu; /* 1.0 / (Nuclear masses divided by AMU) */ double *molweight; /* factor used in molecular weight calculation */ + double *ZonA; /* factor used in molecular weight calculation */ Atomic_number *atomic_number; /* Atomic numbers */ int *nucleon_number; /* Nucleon numbers (mass numbers) */ struct hsearch_data * atomic_number_hash; @@ -79,6 +143,9 @@ struct store_t { struct data_table_t * jaschek_jaschek_dwarf; struct data_table_t * jaschek_jaschek_giant; struct data_table_t * jaschek_jaschek_supergiant; + struct data_table_t * miller_bertolami; + struct data_table_t * miller_bertolami_coeffs_L; + struct data_table_t * miller_bertolami_coeffs_R; #ifdef MAIN_SEQUENCE_STRIP struct data_table_t * MS_strip; #endif @@ -217,11 +284,13 @@ struct tmpstore_t { #endif #ifdef WTTS_LOG FILE *fp_sys; - FILE *fp_star[2] + FILE *fp_star[2]; #endif #ifdef DISCS - FILE * logfile; - FILE * logfile2d; + int disc_logfilecount; + int disc_logfilecount2d; + struct binary_c_file * disc_logfile; + struct binary_c_file * disc_logfile2d; #endif #ifdef NUCSYN #ifdef NUCSYN_STRIP_AND_MIX @@ -233,6 +302,7 @@ struct tmpstore_t { #endif//NUCSYN double * comenv_lambda_data; struct data_table_t * comenv_lambda_table; + }; @@ -327,6 +397,7 @@ struct preferences_t { double accretion_end_time; double minimum_donor_menv_for_comenv; double magnetic_braking_factor; + double magnetic_braking_gamma; // Wolf Rayet wind selection /* Wolf-Rayet wind multiplication factor */ @@ -388,6 +459,7 @@ struct preferences_t { double minimum_mass_for_carbon_ignition; double minimum_mass_for_neon_ignition; double max_HeWD_mass; + double minimum_helium_ignition_core_mass; /* multipliers */ double gbwindfac,agbwindfac; @@ -506,11 +578,15 @@ struct preferences_t { #endif//NUCSYN -#ifdef DISCS +#ifdef DISCS + double cbdisc_max_lifetime; + double disc_timestep_factor; double cbdisc_gamma; double cbdisc_alpha; double cbdisc_kappa; double cbdisc_torqueF; + double cbdisc_init_dM; + double cbdisc_init_dJdM; #ifdef DISCS_CIRCUMBINARY_FROM_COMENV double comenv_disc_angmom_fraction; double comenv_disc_mass_fraction; @@ -519,8 +595,10 @@ struct preferences_t { double wind_disc_mass_fraction; double wind_disc_angmom_fraction; #endif + double cbdisc_minimum_evaporation_timescale; double cbdisc_mass_loss_constant_rate; double cbdisc_mass_loss_inner_viscous_multiplier; + double cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier; double cbdisc_mass_loss_inner_L2_cross_multiplier; double cbdisc_mass_loss_ISM_ram_pressure_multiplier; double cbdisc_mass_loss_ISM_pressure; @@ -530,6 +608,7 @@ struct preferences_t { double cbdisc_minimum_mass; double cbdisc_resonance_multiplier; double cbdisc_minimum_fRing; + double disc_log_dt; #endif // DISCS #ifdef CN_THICK_DISC double thick_disc_start_age, thick_disc_end_age; @@ -537,6 +616,12 @@ struct preferences_t { #endif // CN_THICK_DISC double observable_radial_velocity_minimum; + +#ifdef CARBON_BURNING + Boolean carbon_burning; + double carbon_burning_lifetime; +#endif + double start_time; /* * Strings (e.g. Filenames) @@ -626,7 +711,9 @@ struct preferences_t { Boolean hrdiag_output; #endif + /* Wind mass loss options */ Boolean wind_mass_loss; + int wind_mass_loss_algorithm; /* common envelope prescription changer */ int comenv_prescription; @@ -636,6 +723,9 @@ struct preferences_t { int comenv_ejection_spin_method; int comenv_merger_spin_method; + /* magnetic braking algorithm */ + int magnetic_braking_algorithm; + /* Boolean to specify monte-carlo SN kicks or not */ Boolean monte_carlo_sn_kicks; int post_SN_orbit_method; @@ -661,20 +751,26 @@ struct preferences_t { int mattsson_Orich_tpagbwind; #endif int RLOF_method; + int small_envelope_method; #ifdef NUCSYN /* which abundance mixture on the ZAMS? */ Abundance_mix initial_abundance_mix; /* Boolean - set to TRUE if you just want to output initial abundances */ Boolean initial_abunds_only; + int type_Ia_MCh_supernova_algorithm; + int type_Ia_sub_MCh_supernova_algorithm; + char Seitenzahl2013_model[12]; + #ifdef NUCSYN_THIRD_DREDGE_UP_MULTIPLIERS Boolean boost_third_dup; #endif #ifdef NUCSYN_TPAGB_HBB Boolean NeNaMgAl; #endif +#ifdef NUCSYN_YIELDS Boolean yields_logtimes; - +#endif #ifdef NUCSYN_ALLOW_NO_PRODUCTION Boolean no_production; #endif // NUCSYN_ALLOW_NO_PRODUCTION @@ -705,7 +801,16 @@ struct preferences_t { int cbdisc_eccentricity_pumping_method; int cbdisc_mass_loss_inner_viscous_accretion_method; int cbdisc_viscous_photoevaporation_coupling; + int cbdisc_viscous_L2_coupling; + int cbdisc_inner_edge_stripping_timescale; + int cbdisc_outer_edge_stripping_timescale; + int disc_n_monte_carlo_guesses; Boolean cbdisc_resonance_damping; + Boolean cbdisc_fail_ring_inside_separation; + Boolean cbdisc_inner_edge_stripping; + Boolean cbdisc_outer_edge_stripping; + int disc_log; + int disc_log2d; #endif #ifdef EVOLUTION_SPLITTING Boolean evolution_splitting; @@ -724,14 +829,16 @@ struct preferences_t { #ifdef DEBUG_FAIL_ON_NAN Boolean allow_debug_nan; #endif - +#ifdef REVERSE_TIME + Boolean reverse_time; +#endif #ifdef OPACITY_ALGORITHMS int opacity_algorithm; #endif #ifdef EQUATION_OF_STATE_ALGORITHMS int equation_of_state_algorithm; #endif - + Boolean speedtests; char stardata_dump_filename[STRING_LENGTH]; }; @@ -821,15 +928,20 @@ struct disc_loss_t { }; struct disc_t { - +#ifdef MEMOIZE + struct memoize_hash_t * memo; /* memoize data */ +#endif double M; // disc total mass double alpha; // disc viscosity constant (dimensionless) double gamma; // adiabatic exponent (dimensionless) - double torqueF; // binary torque fudge factor (dimensionless) + double torqueF; // binary torque multiplication factor (dimensionless) + double torqueF_for_Rin; // binary torque multiplication factor used to fix Rin (dimensionless) double fuv; // Far UV mass flux in g/cm^2/s double kappa; // Opacity in cm^2/g (assumed constant, only valid at low T) double Rin; // inner radius (cm) double Rout; // outer radius (cm) + double Rin_min; // minimum inner radius + double Rout_max; // maximum outer radius double lifetime; // lifetime of the disc (seconds) double dt; // natural timestep (seconds) double J; // total angular momentum @@ -840,6 +952,7 @@ struct disc_t { double dM_binary,Mdot_binary; double dM_ejected,Mdot_ejected; double dJ_binary,Jdot_binary; + double dJ_ejected,Jdot_ejected; double dT; double de_binary,edot_binary; double Tvisc,Tradin,Tradout; @@ -848,31 +961,50 @@ struct disc_t { double HRJhalf; // H/R at half angular momentum radius double dRindt,dRoutdt; // derivatives double PISM,RISM; + double LX; // X-ray irradiation onto the disc #ifdef NUCSYN double X[ISOTOPE_ARRAY_SIZE]; -#endif +#endif//NUCSYN double Owen2012_norm; - double Revap,Jdot_evap,Mdot_evap_whole_disc; + double Revap_in,Revap_out,Rshred,F_stripping_correction,Mdot_evap_whole_disc; double nextlog; double fRing; +#ifdef DISC_SAVE_EPSILONS + double epstorquef; + double epsilon[DISC_NUMBER_OF_CONSTRAINTS]; +#endif //DISC_LOG +#ifdef DISC_LOG_POPSYN + double lastlogtime; +#endif + double t_m; + double t_m_slow; + double t_j; + double t_e; +#ifdef DISC_EQUATION_CHECKS + double equations_T_error_pc; + double equations_mass_loss_term_pc; +#endif // DISC_EQUATION_CHECKS -/* mass,ang mom and eccentricty transfer */ + + /* mass,ang mom and eccentricty transfer */ struct disc_loss_t loss[DISC_LOSS_N]; /* allow a maximum of 3 thermal zones */ - int n_thermal_zones; + Disc_zone_counter n_thermal_zones; struct disc_thermal_zone_t thermal_zones[DISCS_MAX_N_ZONES+1]; - + int vb; int ndisc; int type; int delete_count; int solver; int guess; + int iteration; + int end_count; Boolean first; Boolean firstlog; Boolean append; Boolean converged; - Boolean Xray_wind_dominated; + Boolean suppress_viscous_inflow; Stellar_type donor_stellar_type; }; @@ -925,7 +1057,7 @@ struct star_t { double alt_luminosity; #endif double accretion_luminosity; /* accretion luminosity */ - double omega; /* star's angular frequency */ + double omega; /* star's angular frequency, y^-1 */ double omega_crit; /* critical angular frequency */ double l_acc; /* specific angular momentum of accreted material (in RLOF) */ @@ -1028,6 +1160,9 @@ struct star_t { double spiky_luminosity; // L modulated by pulse rise/fall double prev_tagb; +#ifdef CARBON_BURNING + double t_start_carbon_burn; +#endif #ifdef NUCSYN /* Nucleosynthesis stuff */ /* stuff you might want to log */ @@ -1144,7 +1279,12 @@ struct star_t { double TZ_mass; double TZ_NS_mass; #endif - +#ifdef FABIAN_COSMOLOGY + double final_carbon_core_mass; + double final_helium_core_mass; + double final_nuclear_burning_mass; + double nuclear_burning_lifetime; +#endif /* integer and Boolean variables */ Stellar_type stellar_type; /* stellar type */ @@ -1357,6 +1497,9 @@ struct common_t { struct diffstats_t Aligned prev; #ifdef DISCS struct disc_t discs[NDISCS]; +#endif +#ifdef MEMOIZE + struct memoize_hash_t * memo; #endif char ** argv; double parameters_metallicity; @@ -1365,6 +1508,7 @@ struct common_t { double Aligned metallicity_parameters[Align(NUMBER_OF_METALLICITY_PARAMETERS)]; double orbital_period; /* Orbital period in years */ Abundance metallicity; /* The metallicity, Z, range 0-1 */ + Abundance effective_metallicity; double eccentricity; /* The eccentricity of the orbit, range 0-1 */ double separation; /* stellar separation */ double orbital_angular_momentum; @@ -1490,6 +1634,7 @@ struct common_t { Random_buffer random_buffer; int argc; + int model_number; Boolean interpolate_debug; Boolean diffstats_set; @@ -1513,6 +1658,7 @@ struct stardata_t { Boolean cpu_is_warm; Boolean evolving; }; +#define __HAVE_STARDATA_T /* struct new_stellar_structure_t { @@ -1576,7 +1722,14 @@ struct binary_system_t { double mtot; // total mass (grams) double reduced_mass; // grams double q; // m2/m1 - double separation; // cm + double separation; // orbital semi-major axis, cm + + /* NB distances are relative to the centre of mass */ + double aL1; // L1 radius, cm + double aL2; // L2 radius, cm + double aL3; // L3 radius, cm + double a1; // a1 = position of star 1 + double a2; // a2 = position of star 2 double Jorb; // cgs double eccentricity; // no units double L; // erg/s @@ -1589,6 +1742,7 @@ struct binary_system_t { double Teff[NUMBER_OF_STARS]; double luminosity[NUMBER_OF_STARS]; double Rstar; + double torqueF; Boolean RLOF; }; #endif @@ -1768,5 +1922,13 @@ struct stardata_dump_t }; +struct GSL_args_t +{ + va_list args; + int error; + Boolean uselog; + brent_function func; +}; + #endif /*BINARY_STRUCTURES_H*/ diff --git a/src/binary_c_types.h b/src/binary_c_types.h index 32c46a6a0fc14f7275d190fc1489fc057a65e35c..cacc22c7e9dc68b71aa9f045a7709fef73f4e274 100644 --- a/src/binary_c_types.h +++ b/src/binary_c_types.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_TYPES_H #define BINARY_C_TYPES_H @@ -27,6 +28,7 @@ typedef unsigned int Boolean; #define Const_data_table static const double #define Disc_type int #define Ensemble_type int +#define Disc_zone_counter unsigned int /* other variable types */ #define Number_density double @@ -62,4 +64,11 @@ typedef unsigned int Boolean; #define Random_buffer struct mersenne_twister_data #endif // USE_MERSENNE_TWISTER +/* qsort_r function type */ +typedef int (*comparison_fn_r) (const void *, const void *, void * arg); + +/* brent bisector function type */ +typedef double(*brent_function)(const double,void*); +#define brent_cast double (*)(const double,void*) + #endif // BINARY_C_TYPES_H diff --git a/src/binary_c_unit_tests.h b/src/binary_c_unit_tests.h index ea2520352bca4ecb8ceb59a4c2c1fc08381faf51..3839338015f373cd79ae9759d4b7cc15c0001c20 100644 --- a/src/binary_c_unit_tests.h +++ b/src/binary_c_unit_tests.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_UNIT_TESTS_H #define BINARY_C_UNIT_TESTS_H diff --git a/src/binary_c_version.h b/src/binary_c_version.h index aa6b4d20a69d3518162f9f24d817df251a5bae99..e875bd9f8141c509bbb7760ffe7ae98bc2b5faef 100644 --- a/src/binary_c_version.h +++ b/src/binary_c_version.h @@ -1,13 +1,19 @@ - +#pragma once +#ifndef BINARY_C_VERSION_H +#define BINARY_C_VERSION_H + + /* * This file holds the version number for binary_c/nucsyn. * * BINARY_C_VERSION should have no spaces in it */ -#define BINARY_C_VERSION "2.0pre29" +#define BINARY_C_VERSION "2.0pre30" /* and a CEMP run version */ #define CEMP_VERSION "prelim10-O1-noCNEMPs" #define BINARY_C_START_YEAR 2000 #define BINARY_C_END_YEAR 2018 + +#endif// BINARY_C_VERSION_H diff --git a/src/binary_star_functions/angular_momentum_and_eccentricity_derivatives.c b/src/binary_star_functions/angular_momentum_and_eccentricity_derivatives.c index 80d207abfc7c23132ede4aa3f2dc791fc9a2601d..46755a4d7c5ae4e0fd1fe59e23814e33e00803bd 100644 --- a/src/binary_star_functions/angular_momentum_and_eccentricity_derivatives.c +++ b/src/binary_star_functions/angular_momentum_and_eccentricity_derivatives.c @@ -1,5 +1,5 @@ #include "../binary_c.h" -#include "../disc/disc.h" + void angular_momentum_and_eccentricity_derivatives( struct stardata_t * RESTRICT stardata, const Boolean RLOF_boolean) @@ -98,27 +98,41 @@ void angular_momentum_and_eccentricity_derivatives( * (and angmom?) between the two stars * * Note that f is the fraction of the accretion rate from - * the disc that falls onto star 0 (the "primary") + * the disc that falls onto star 0 (the "primary") given + * q = M2/M1. + * + * If f < -0.5, set the accretion rate to zero. */ double f = disc_inner_edge_accretion_f(stardata); - double mdot = disc->Mdot_binary * ftdisc * - YEAR_LENGTH_IN_SECONDS / M_SUN; - - if(0)printf("DMBIN deriv mdot %g Msun/y (ftdisc = %g/%g = %g, disc->M=%g) : DM=%g\n", - mdot, - disc->dT/YEAR_LENGTH_IN_SECONDS, - dt, - ftdisc, - disc->M/M_SUN, - mdot * stardata->model.dtm * 1e6 - ); - stardata->star[0].derivative[DERIVATIVE_STELLAR_MASS_CBDISC_GAIN] = - f * mdot; - stardata->star[1].derivative[DERIVATIVE_STELLAR_MASS_CBDISC_GAIN] = - (1.0-f) * mdot; - - // what about the stellar spin up? + if(f>-0.5) + { + double mdot = disc->Mdot_binary * ftdisc * + YEAR_LENGTH_IN_SECONDS / M_SUN; +#ifdef ___MOREDEBUGGING + if(0)printf("DMBIN deriv mdot %g Msun/y (ftdisc = %g/%g = %g, disc->M=%g) : DM=%g : f = %g : 1-f = %g\n", + mdot, + disc->dT/YEAR_LENGTH_IN_SECONDS, + dt, + ftdisc, + disc->M/M_SUN, + mdot * stardata->model.dtm * 1e6, + f, + 1.0-f + ); +#endif// ___MOREDEBUGGING + stardata->star[0].derivative[DERIVATIVE_STELLAR_MASS_CBDISC_GAIN] = + f * mdot; + stardata->star[1].derivative[DERIVATIVE_STELLAR_MASS_CBDISC_GAIN] = + (1.0-f) * mdot; + } + else + { + stardata->star[0].derivative[DERIVATIVE_STELLAR_MASS_CBDISC_GAIN] = 0.0; + stardata->star[1].derivative[DERIVATIVE_STELLAR_MASS_CBDISC_GAIN] = 0.0; + } + + // TODO : what about the stellar spin up? /* * Resonant interaction with the circumbinary diff --git a/src/binary_star_functions/apply_orbital_angular_momentum_and_eccentricity_derivatives.c b/src/binary_star_functions/apply_orbital_angular_momentum_and_eccentricity_derivatives.c index cfe13d8ceb5d1eabf3738e3290daf117222e11e4..95e6c1ac0d57ec0eeb527834ad471fc6b675c03c 100644 --- a/src/binary_star_functions/apply_orbital_angular_momentum_and_eccentricity_derivatives.c +++ b/src/binary_star_functions/apply_orbital_angular_momentum_and_eccentricity_derivatives.c @@ -9,24 +9,32 @@ Boolean apply_orbital_angular_momentum_and_eccentricity_derivatives(struct stard * Apply orbital angular momentum and eccentricity derivatives */ struct common_t *common = &stardata->common; - + + double dt = stardata->model.dt; +#ifdef REVERSE_TIME + if(stardata->preferences->reverse_time == TRUE) + { + dt *= -1.0; + } +#endif//REVERSE_TIME /* * Eccentricity */ common->eccentricity += stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY] * - stardata->model.dt; + dt; common->eccentricity = MAX(common->eccentricity,0.0); if(0)printf("UpdateE edot = %g, dt = %g, e = %g\n", stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY], - stardata->model.dt, + dt, common->eccentricity); /* close to zero, set the eccentricity to zero */ if(ABS_LESS_THAN(common->eccentricity,TINY_ECCENTRICITY)) common->eccentricity=0.0; - + NANCHECK(common->eccentricity); + /* unbound system */ if(RLOF_boolean && MORE_OR_EQUAL(common->eccentricity,1.0)) { @@ -42,7 +50,8 @@ Boolean apply_orbital_angular_momentum_and_eccentricity_derivatives(struct stard //show_derivatives(stardata); common->orbital_angular_momentum += stardata->model.derivative[DERIVATIVE_ORBIT_ANGMOM] * - stardata->model.dt; + dt; + /* * Sometimes the angular momentum is slightly less @@ -53,7 +62,8 @@ Boolean apply_orbital_angular_momentum_and_eccentricity_derivatives(struct stard Clamp(common->orbital_angular_momentum, MINIMUM_ORBITAL_ANGMOM, MAXIMUM_ORBITAL_ANGMOM); - + + NANCHECK(common->orbital_angular_momentum); update_orbital_variables(stardata); } else diff --git a/src/binary_star_functions/apply_stellar_mass_and_angular_momentum_derivatives.c b/src/binary_star_functions/apply_stellar_mass_and_angular_momentum_derivatives.c index 71727cd63699f7544b6b47aad051deaf6e0ebb48..c0793ad366d3b6415cec1cc55e65c5078b7896a5 100644 --- a/src/binary_star_functions/apply_stellar_mass_and_angular_momentum_derivatives.c +++ b/src/binary_star_functions/apply_stellar_mass_and_angular_momentum_derivatives.c @@ -17,6 +17,15 @@ void apply_stellar_mass_and_angular_momentum_derivatives(struct stardata_t * sta * Timestep */ double dt = RLOF==TRUE ? (stardata->model.dtm*1e6) : stardata->model.dt; + double dtm = stardata->model.dtm; + +#ifdef REVERSE_TIME + if(stardata->preferences->reverse_time == TRUE) + { + dt *= -1; + dtm *= -1; + } +#endif//REVERSE_TIME #if DEBUG==1 if(0&&Debug_expression) @@ -52,18 +61,6 @@ void apply_stellar_mass_and_angular_momentum_derivatives(struct stardata_t * sta double dM_in_timestep = star->derivative[DERIVATIVE_STELLAR_MASS]*dt; star->mass += dM_in_timestep; - if(0&&star->mass > 90) - { - show_derivatives(stardata); - printf("star %d: M=%g dM=%g Mdot=%g\n", - star->starnum, - star->mass, - dM_in_timestep, - star->derivative[DERIVATIVE_STELLAR_MASS] - ); - Exit_binary_c(2,"oops M>90"); - } - #ifdef MINIMUM_STELLAR_MASS star->mass = MAX(MINIMUM_STELLAR_MASS, star->mass); @@ -82,6 +79,11 @@ void apply_stellar_mass_and_angular_momentum_derivatives(struct stardata_t * sta */ star->core_mass = MIN(star->mass, star->core_mass); + /* + * CO core mass cannot exceed the total core mass + */ + star->CO_core_mass = MIN(star->core_mass, + star->CO_core_mass); /* * Reset phase start mass on accretion @@ -244,9 +246,11 @@ void apply_stellar_mass_and_angular_momentum_derivatives(struct stardata_t * sta stardata, accretor); - accretor->core_mass = mcx; + accretor->core_mass = MIN(accretor->mass,mcx); + accretor->CO_core_mass = MIN(accretor->core_mass, + accretor->CO_core_mass); accretor->epoch = stardata->model.time + - stardata->model.dtm - accretor->age; + dtm - accretor->age; } #ifdef DISCS_ACCRETION_ONTO_RGB_FUDGE_BROKEN else if(accretor->stellar_type == GIANT_BRANCH && @@ -260,6 +264,9 @@ void apply_stellar_mass_and_angular_momentum_derivatives(struct stardata_t * sta & accretor->age, stardata, accretor); + accretor->core_mass = MIN(accretor->mass,mcx); + accretor->CO_core_mass = MIN(accretor->core_mass, + accretor->CO_core_mass); } #endif else if(accretor->stellar_type>=HeWD && @@ -276,6 +283,10 @@ void apply_stellar_mass_and_angular_momentum_derivatives(struct stardata_t * sta &steady_burn_rate, &new_envelope_rate); + Dprint("compare accretion Mdot = %g to new_envelope_rate = %g\n", + Mdot_net(accretor), + new_envelope_rate); + if(Mdot_net(accretor) > new_envelope_rate) { /* @@ -305,9 +316,12 @@ void apply_stellar_mass_and_angular_momentum_derivatives(struct stardata_t * sta &accretor->age, stardata, accretor); - + accretor->core_mass = MIN(accretor->mass,accretor->mass); + accretor->CO_core_mass = MIN(accretor->core_mass, + accretor->CO_core_mass); + accretor->epoch = stardata->model.time + - stardata->model.dtm - accretor->age; + dtm - accretor->age; Dprint("Set accretor (star %d) epoch = %g\n", accretor->starnum, accretor->epoch); @@ -348,4 +362,7 @@ void apply_stellar_mass_and_angular_momentum_derivatives(struct stardata_t * sta } } } + + + } diff --git a/src/binary_star_functions/calc_wind_loss_and_gain_rates.c b/src/binary_star_functions/calc_wind_loss_and_gain_rates.c index 35803c4ff776cbea6b93722e16a06274334147ed..79428d48e941746d6080dfad7d54d8d63586fe3f 100644 --- a/src/binary_star_functions/calc_wind_loss_and_gain_rates.c +++ b/src/binary_star_functions/calc_wind_loss_and_gain_rates.c @@ -11,7 +11,7 @@ void calc_wind_loss_and_gain_rates(struct stardata_t * RESTRICT stardata, * different radius (the Roche radius, rather than the stellar radius, * stored in star->effective_radius) rather than the usual star->radius. */ - if(stardata->preferences->wind_mass_loss == TRUE) + if(stardata->preferences->wind_mass_loss != FALSE) { double radius,rlperi,vwind2,ivsqm,omv2; Star_number k; diff --git a/src/binary_star_functions/prevent_overspin.c b/src/binary_star_functions/prevent_overspin.c index 53cb92b692508289808f804ac4f005c2d9f6d8f2..85aaefa3abb6bab68bfb136bbf4288bd5d279885 100644 --- a/src/binary_star_functions/prevent_overspin.c +++ b/src/binary_star_functions/prevent_overspin.c @@ -37,7 +37,12 @@ Boolean prevent_overspin(struct star_t * star, /* timestep */ double dt = in_RLOF==TRUE ? (stardata->model.dtm*1e6) : stardata->model.dt; - Dprint("star %d in RLOF? %d -> dt = %g\n",star->starnum,in_RLOF,dt); + Dprint("star %d, in RLOF? %d (R=%g, RL=%g) -> dt = %g\n", + star->starnum, + in_RLOF, + star->radius, + star->roche_radius, + dt); if( @@ -47,26 +52,6 @@ Boolean prevent_overspin(struct star_t * star, /* we can do nothing if we have no spin */ IS_ZERO(star->omega) ) return FALSE; - - //show_derivatives(stardata); - - /* - printf("Star %d : M=%g R=%g RL=%g \n", - star->starnum, - star->mass, - star->radius, - star->roche_radius); - - if(star->mass < 0.1) - { - printf("MASS TOO SMALL\n"); - show_derivatives(stardata); - - fflush(NULL); - _exit(0); - return; - } - */ double jcrit = breakup_angular_momentum(star); @@ -78,8 +63,6 @@ Boolean prevent_overspin(struct star_t * star, double jstar = MAX(MINIMUM_STELLAR_ANGMOM, star->angular_momentum + Jdot_net(star)*dt); - //show_derivatives(stardata); - Dprint("Star %d Jcrit = %g, Jstar = %g\n",star->starnum,jcrit,jstar); /* diff --git a/src/binary_star_functions/stellar_wind_angmom.c b/src/binary_star_functions/stellar_wind_angmom.c index 5ebc4c9cf67db962c22fd6d890053a5e7f7c20d1..655ec4feabf2803b761eadff9a8133f938dc91ee 100644 --- a/src/binary_star_functions/stellar_wind_angmom.c +++ b/src/binary_star_functions/stellar_wind_angmom.c @@ -10,6 +10,10 @@ void stellar_wind_angmom(struct stardata_t *stardata, */ SETstars(k); + Dprint("Stars of types %d %d\n", + star->stellar_type, + companion->stellar_type); + /* * Calculate spin angular momentum change of star k: * sense is such that angular momentum LOSS (wind) is positive, @@ -36,9 +40,15 @@ void stellar_wind_angmom(struct stardata_t *stardata, dm_dt_lost_from_a_spherical_wind -= dm_dt_lost_from_a_disk; #endif - /* calculate mass accreted from the companion's wind */ + /* + * calculate mass accreted from the companion's wind ... + */ double dm_accreted = star->derivative[DERIVATIVE_STELLAR_MASS_WIND_GAIN]; - double r2o=r1*r1*star->omega; + + /* + * ... at this stellar surface + */ + double r2o = r1 * r1 * star->omega; /* * Spherical mass loss from a wind. @@ -54,6 +64,15 @@ void stellar_wind_angmom(struct stardata_t *stardata, double dj_dt_accretion = SPHERICAL_ANGMOM_ACCRETION_FACTOR * dm_accreted*r2*r2*companion->omega; + Dprint("spherical wind: dM/dt wind %g disc %g accreted %g\n", + dm_dt_lost_from_a_spherical_wind, + dm_dt_lost_from_a_disk, + dm_accreted); + Dprint("spherical wind: dJ/dt wind = R1=%g * omega=%g = %g\n", + r1, + star->omega, + dj_dt_spherical_wind); + Dprint("dj/dt accretion = %g * (dm = %g) * (r2=%g)^2 * (companion omega=%g)\n", SPHERICAL_ANGMOM_ACCRETION_FACTOR, dm_accreted, diff --git a/src/binary_star_functions/tides.c b/src/binary_star_functions/tides.c index 32e4d8fe1256b9c503f86bfdf9685f64eea8d65b..1394b54af002d0e2ec0e066ba8608c2c0bcb08ce 100644 --- a/src/binary_star_functions/tides.c +++ b/src/binary_star_functions/tides.c @@ -1,8 +1,6 @@ #include "../binary_c.h" #include "tides.h" -#undef DEBUG -#define DEBUG 0 /* * This function calculates the derivatives of @@ -26,14 +24,13 @@ void tides(struct stardata_t *stardata, double sq6 = POW6(sqome2); double isqome2_13 = 1.0/(sq6*sq6*sqome2); double starI = moment_of_inertia(star,radius); - const int ndonor = stardata->model.ndonor; - + const int ndonor MAYBE_UNUSED = stardata->model.ndonor; + /* * Calculate tidal effects : circularization, orbital changes and spin up. */ Dprint("Calculate circularization/shrinkage/spinup (tides) %d\n",DO_TIDES); - - + if(DO_TIDES) { raa2 = POW2(radius/stardata->common.separation); @@ -160,11 +157,23 @@ void tides(struct stardata_t *stardata, * Spin up of star. */ double sqome3f5=sqome3*f5; - star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY] = (3.0*cq*tcqr/(rg2*POW6(omecc2)))* + star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY] = + (3.0*cq*tcqr/(rg2*POW6(omecc2)))* (f2*stardata->common.orbital_angular_frequency - sqome3f5*star->omega); - - Dprint("Spin up star->dspint = %g\n",star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY]); - + + Dprint("Spin up star->dspint = %g from cq=%g tcqr=%g rg2=%g omecc2=%g f2=%g sqome3f5=%g omega_orb=%g omega_star=%g\n", + star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY], + cq, + tcqr, + rg2, + omecc2, + f2, + sqome3f5, + stardata->common.orbital_angular_frequency, + star->omega + ); + NANCHECK(star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY]); + /* * Calculate the equilibrium spin at which no angular momentum * can be transferred. The stellar angular velocity derivative @@ -193,6 +202,7 @@ void tides(struct stardata_t *stardata, } Dprint("eqspin = %g (hence dspint is now %g)\n",eqspin,star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY]); } + star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY] = - star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY]; diff --git a/src/binary_star_functions/tides.h b/src/binary_star_functions/tides.h index bfa9224181994a8a28dc59d34a4a24026a038ef9..9be2a9bb3dcebde13f51d6554f0be60e70f309dd 100644 --- a/src/binary_star_functions/tides.h +++ b/src/binary_star_functions/tides.h @@ -1,10 +1,24 @@ #ifndef TIDES_H #define TIDES_H -#define DO_TIDES (stardata->preferences->tidal_strength_factor>TINY && \ - ((star->stellar_type<=HeGB && \ - MORE_OR_EQUAL(star->radius,0.01*star->roche_radius))|| \ - (star->stellar_type>=HeWD && k==ndonor))) +/* BSE definition of when to allow tides */ +#define DO_TIDES ( \ + /* tides must be on */ \ + stardata->preferences->tidal_strength_factor>TINY \ + && \ + ( \ + /* star is pre-WD */ \ + ( \ + star->stellar_type<HeWD && \ + MORE_OR_EQUAL(star->radius,1e-2*star->roche_radius) \ + ) \ + || \ + /* or star is a WD donor */ \ + (star->stellar_type>=HeWD && k==ndonor))) + +/* better: always do tides except for black holes and massless remnants */ +#undef DO_TIDES +#define DO_TIDES (star->stellar_type < BLACK_HOLE) #ifdef PRE_MAIN_SEQUENCE diff --git a/src/binary_star_functions/update_masses_and_angular_momenta.c b/src/binary_star_functions/update_masses_and_angular_momenta.c index b6e9718c60d1ff8435279e789585d0f716c28a10..689d517b8e6f704e2ed44d3d142525fe533c81d0 100644 --- a/src/binary_star_functions/update_masses_and_angular_momenta.c +++ b/src/binary_star_functions/update_masses_and_angular_momenta.c @@ -1,4 +1,7 @@ #include "../binary_c.h" + + + #define OUTVAR stardata->star[1].phase_start_mass /* * Generic function for updating the mass/angular momenta @@ -11,6 +14,8 @@ int update_masses_and_angular_momenta(struct stardata_t * stardata, { Dprint("Main loop var=%g: set kw1,kw2 dtm=%g\n", OUTVAR,stardata->model.dtm); + NANCHECK(stardata->common.orbital_angular_momentum); + stardata->model.dt = 1e6 * stardata->model.dtm; zero_stellar_derivatives(stardata); @@ -66,6 +71,7 @@ int update_masses_and_angular_momenta(struct stardata_t * stardata, stardata->common.separation ); Safe_free(RLOF_orbit); + Dprint("post-RLOF\n"); } /* impose timestep limits based on mass/angmom rates */ @@ -74,19 +80,24 @@ int update_masses_and_angular_momenta(struct stardata_t * stardata, /* limit accretion rates (also novae and updates stellar types) */ limit_accretion_rates(stardata); - + Dprint("post-limit\n"); + /* Save wind accretion luminosities */ set_wind_accretion_luminosities(stardata); - + Dprint("post-wind accretion luminosities\n"); + /* Calculate angular momentum and eccentricity derivatives */ angular_momentum_and_eccentricity_derivatives(stardata,RLOF); - + Dprint("post angmom and ecc derivs\n"); + /* apply stellar derivatives */ apply_stellar_mass_and_angular_momentum_derivatives(stardata,RLOF); - + Dprint("post apply stellar\n"); + #ifdef CIRCUMBINARY_DISK_DERMINE /* deprecated disc evolution */ circumbinary_disk(stardata); + Dprint("post-CB-disk\n"); #endif #ifdef NUCSYN @@ -94,12 +105,17 @@ int update_masses_and_angular_momenta(struct stardata_t * stardata, * Call update_abundances to deal with mass transfer */ nucsyn_update_abundances(stardata); + Dprint("post-nucsyn\n"); #endif/* NUCSYN */ } /* apply orbital derivatives */ Dprint("Main loop: update and check ecc var=%g, dtm=%g\n",OUTVAR,stardata->model.dtm); + NANCHECK(stardata->common.orbital_angular_momentum); Boolean retval = apply_orbital_angular_momentum_and_eccentricity_derivatives(stardata,RLOF); + Dprint("post-apply orb and ecc : J=%g NaN? %d\n",stardata->common.orbital_angular_momentum,isnan(stardata->common.orbital_angular_momentum)); + NANCHECK(stardata->common.orbital_angular_momentum); + return(retval); } diff --git a/src/binary_star_functions/update_orbital_variables.c b/src/binary_star_functions/update_orbital_variables.c index ba56317661aa9eb7a94cfdd26e1cec42220b04bd..a92dde6d649b6f13f65b0512ba258d3c029a954c 100644 --- a/src/binary_star_functions/update_orbital_variables.c +++ b/src/binary_star_functions/update_orbital_variables.c @@ -11,9 +11,11 @@ void update_orbital_variables(struct stardata_t * RESTRICT stardata) double total_mass=Total_mass; double awas=stardata->common.separation; - Dprint("In: a=%g e=%g\n", + Dprint("In: a=%g e=%g Jorb=%g\n", stardata->common.separation, - stardata->common.eccentricity); + stardata->common.eccentricity, + stardata->common.orbital_angular_momentum + ); if(MORE_OR_EQUAL(stardata->common.eccentricity,1.0)|| stardata->common.eccentricity<-TINY) @@ -23,16 +25,18 @@ void update_orbital_variables(struct stardata_t * RESTRICT stardata) else { double denom = POW2(MASS_PRODUCT*TWOPI)*(POW3(AU_IN_SOLAR_RADII)*(1.0-ECC_SQUARED)); - stardata->common.separation = denom > TINY ? total_mass*JORB_SQUARED/denom : 0.0; + stardata->common.separation = denom > TINY ? (total_mass*JORB_SQUARED/denom) : 0.0; } stardata->model.derivative[DERIVATIVE_ORBIT_SEMI_MAJOR_AXIS] = (stardata->model.dtm > TINY) ? (stardata->common.separation - awas)/(1e6*stardata->model.dtm) : 0.0; - Dprint("sep = %30.22e from %30.22e * %30.22e / (%30.22e * %30.22e): da/dt = %g Binary ? %d\n", - stardata->common.separation,total_mass, - JORB_SQUARED,POW2(MASS_PRODUCT*TWOPI), + Dprint("sep = %30.22e from Mtot=%30.22e * J^2=%30.22e / (M1*M2=%30.22e * (1-e^2)=%30.22e): da/dt = %g Binary ? %d\n", + stardata->common.separation, + total_mass, + JORB_SQUARED, + POW2(MASS_PRODUCT*TWOPI), (POW3(AU_IN_SOLAR_RADII)*(1.0-ECC_SQUARED)), stardata->model.derivative[DERIVATIVE_ORBIT_SEMI_MAJOR_AXIS], System_is_binary diff --git a/src/debug/binary_c_breakpoint.c b/src/breakpoints/binary_c_breakpoint.c similarity index 67% rename from src/debug/binary_c_breakpoint.c rename to src/breakpoints/binary_c_breakpoint.c index e4017e171591076c14ddab31e21cae6ccf7d4345..fd61d167bdeda3e7c8828b7cd52351877fedd8d6 100644 --- a/src/debug/binary_c_breakpoint.c +++ b/src/breakpoints/binary_c_breakpoint.c @@ -1,5 +1,5 @@ #include "../binary_c.h" -void binary_c_breakpoint(void * p) +void binary_c_breakpoint(const void * p) { /* * dummy function to act as a breakpoint for gdb @@ -10,6 +10,6 @@ void binary_c_breakpoint(void * p) * * in your .gdbinit file */ - struct stardata_t * stardata MAYBE_UNUSED = (struct stardata_t *) p; + const struct stardata_t * stardata MAYBE_UNUSED = (const struct stardata_t *) p; //printf("breakpoint\n"); } diff --git a/src/breakpoints/breakpoints_prototypes.h b/src/breakpoints/breakpoints_prototypes.h new file mode 100644 index 0000000000000000000000000000000000000000..8e4117f006650cbfe00987408a60679cc70d180d --- /dev/null +++ b/src/breakpoints/breakpoints_prototypes.h @@ -0,0 +1,7 @@ +#pragma once +#ifndef BREAKPOINTS_PROTOTYPES_H +#define BREAKPOINTS_PROTOTYPES_H + +void binary_c_breakpoint(const void * p); + +#endif // BREAKPOINTS_PROTOTYPES_H diff --git a/src/buffering/buffered_printf.c b/src/buffering/buffered_printf.c index f87d4736f44135d99794733c906ab4bcc684a40b..857c7d230b3c04e656c9edcbb5af7af178a2f673 100644 --- a/src/buffering/buffered_printf.c +++ b/src/buffering/buffered_printf.c @@ -159,7 +159,7 @@ int buffered_printf(struct stardata_t * RESTRICT stardata, return 0; } } - else if(stardata) + else /* no buffering: just write directly to stdout */ { fwrite((char *)string,(int)dn/sizeof(char),1,stdout); diff --git a/src/buffering/buffering_prototypes.h b/src/buffering/buffering_prototypes.h index 5a3dece0d22ee26a5f8310fea86cf090365f790a..6b1d4b315f97c726d5530126f4447943257b78cc 100644 --- a/src/buffering/buffering_prototypes.h +++ b/src/buffering/buffering_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BUFFERING_PROTOTYPES_H #define BUFFERING_PROTOTYPES_H @@ -22,13 +23,12 @@ void binary_c_fail_fprintf(struct stardata_t * RESTRICT stardata, void clear_printf_buffer(struct stardata_t * RESTRICT stardata); int binary_c_stack_printf(struct stardata_t * stardata, __const char *__restrict format, ...); - int buffer_stack_len(struct stardata_t * stardata); int buffer_stack_pop(struct stardata_t * stardata,char *c); void free_buffer_stack(struct stardata_t * stardata); int buffer_stack_push(struct stardata_t * stardata, const char *__restrict__ format, va_list args); -#endif +#endif // BUFFERED_STACK #endif // BUFFERING_PROTOTYPES_H diff --git a/src/buffering/printf_stack.h b/src/buffering/printf_stack.h index cdbd84e49bc5cbf6347543152568a1a35cb0c82d..6daa56ee8799545f9f487eb9cbb1c53ad2f27c44 100644 --- a/src/buffering/printf_stack.h +++ b/src/buffering/printf_stack.h @@ -1,3 +1,6 @@ +#pragma once +#ifndef PRINTF_STACK_H +#define PRINTF_STACK_H #define Stream_buffer stardata->tmpstore->stream_buffer @@ -12,3 +15,5 @@ stardata->tmpstore->stream_buffer_stacksize-1) #define Stack_string(A) *(stardata->tmpstore->stream_buffer+(A)) + +#endif // PRINTF_STACK_H diff --git a/src/common_envelope/common_envelope_evolution.c b/src/common_envelope/common_envelope_evolution.c index 4abe2376638e154a38e8aad121ecb00dd81f4827..5231c862daf1f6bc94b6068cdc3266a985f5b36e 100644 --- a/src/common_envelope/common_envelope_evolution.c +++ b/src/common_envelope/common_envelope_evolution.c @@ -22,7 +22,6 @@ #endif //DEBUG==1 #include "common_envelope_evolution.h" -#include "../disc/disc.h" #ifdef __HAVE_VALGRIND__ #include "valgrind/valgrind.h" @@ -30,7 +29,8 @@ #ifdef POST_CE_OBJECTS_HAVE_ENVELOPES static double stripped_radius(struct star_t * star, - struct stardata_t * stardata); + struct stardata_t * stardata, + const double Rtarget); #endif // POST_CE_OBJECTS_HAVE_ENVELOPES static void calc_roche_lobe_radii(const double sep, @@ -45,11 +45,10 @@ int common_envelope_evolution ( struct stardata_t *stardata ) { - /* * Common envelope evolution. * - * Entered only when for giant primary stars. + * Entered only when by giant primary stars. * * For "simplicity" energies are divided by -G. */ @@ -82,6 +81,7 @@ int common_envelope_evolution ( struct star_t * star2 = &stardata->star[accretor->starnum]; double tscls1[TSCLS_ARRAY_SIZE],tscls2[TSCLS_ARRAY_SIZE]; double lums[LUMS_ARRAY_SIZE],GB[GB_ARRAY_SIZE]; + double alpha_ce = stardata->preferences->alpha_ce; double EbindI,EbindF=0.0,EorbI=0.0,EorbF=0.0,Ecirc,lambda1,lambda2; double r1=0.0,r2=0.0,rc1=0.0,rc2=0.0,rl1=0.0,rl2=0.0,renv=0.0,rzams=0.0,final_separation=0.0; @@ -101,7 +101,9 @@ int common_envelope_evolution ( /* add the stellar spins to this */ const double MAYBE_UNUSED jtot_cgs = jorb_cgs + - ANGULAR_MOMENTUM_CGS * (donor->angular_momentum + accretor->angular_momentum); + ANGULAR_MOMENTUM_CGS * + (donor->angular_momentum + + accretor->angular_momentum); #if defined DISCS && defined DISCS_CIRCUMBINARY_FROM_COMENV struct disc_t * cbdisc = NULL; @@ -228,7 +230,7 @@ int common_envelope_evolution ( */ stellar_type = donor->stellar_type; STRUCTURE1; - + char *ststrings[] = { STELLAR_TYPES }; if(0)printf("RC = %g from stellar_type %s (%d)\n", @@ -296,8 +298,8 @@ int common_envelope_evolution ( Safe_free(envelope->shells); Safe_free(envelope); - fflush(NULL); - _exit(0); + + Exit_binary_c_no_stardata(0,"Exit from comenv after envelope structure calc\n"); #endif #ifdef COMENV_POLYTROPES @@ -307,9 +309,8 @@ int common_envelope_evolution ( stardata->star[donor->starnum].Xenv, #endif//NUCSYN stardata); - fflush(NULL); - _exit(0); + Exit_binary_c_no_stardata(0,"Exit from comenv after polytrope calc\n"); #endif Append_logstring(LOG_COMENV_PRE, "LAMBDA(st=%d,m01=%g,mc1=%g,l1=%g,r1=%g,rzams=%g,convfrac=%g,lambda_ion=%g)=%g ", @@ -415,11 +416,16 @@ int common_envelope_evolution ( lambda2 = LARGE_LAMBDA; } } +#define LARGE_ENERGY (1e100) - //printf("lambda %g %g\n",lambda1,lambda2); - EbindI = - donor->mass *(donor->mass-donor->core_mass)/(lambda1*r1) + - accretor->mass*(accretor->mass-accretor->core_mass)/(lambda2*r2); + EbindI = + (IS_ZERO(lambda1) || + IS_ZERO(lambda2) || + IS_ZERO(r1) || + IS_ZERO(r2)) ? + LARGE_ENERGY : + (donor->mass * (donor->mass-donor->core_mass)/(lambda1*r1) + + accretor->mass*(accretor->mass-accretor->core_mass)/(lambda2*r2)); Dprint("EbindI %g\n", EbindI); @@ -430,7 +436,18 @@ int common_envelope_evolution ( */ if(CEFLAG!=3) { - EorbI = donor->core_mass *(GIANT_LIKE_STAR(accretor->stellar_type) ? accretor->core_mass : accretor->mass)/(2.0*(stardata->common.separation)); + EorbI = + IS_ZERO(stardata->common.separation) ? + LARGE_ENERGY : + (donor->core_mass *(GIANT_LIKE_STAR(accretor->stellar_type) ? accretor->core_mass : accretor->mass)/(2.0*stardata->common.separation)); + + Dprint("EorbI %g (donor->mc=%g accretor->core_mass=%g accretor->mass=%g accretor->stellar_type=%d sep=%g)\n", + EorbI, + donor->core_mass, + accretor->core_mass, + accretor->mass, + accretor->stellar_type, + stardata->common.separation); } // this should include star 2's contribution to the envelope radius @@ -693,7 +710,7 @@ int common_envelope_evolution ( double Rtarget = CE_ROCHE_FILL_FACTOR * Roche_radius(donor->core_mass / accretor->mass, final_separation); - double Rstripped = stripped_radius(donor,stardata); + double Rstripped = stripped_radius(donor,stardata,Rtarget); /* * The radius cannot exceed the radius @@ -1926,8 +1943,9 @@ end_section: /* * Cannot eject more angular momentum than exists */ - Clamp(f_J,0.0,1.0); - + //Clamp(f_J,0.0,1.0); + f_J = MAX(0.0,f_J); + if(0) printf("NEWDISC fm=%g fj=%g jej=%g mej=%g\n",f_M,f_J,J_ejected,mass_ejected); Boolean make_new_disc = @@ -1971,9 +1989,11 @@ end_section: double discJ = J_ejected * f_J; Append_logstring(LOG_COMENV_PRE, - "Try disc with M=%g J=%g ", + "Try disc with M=%g (f_M %g) J=%g (f_J %g) ", discM, - discJ); + f_M, + discJ, + f_J); /* * If cbdisc is NULL, we already have a * circumbinary disc. @@ -2033,12 +2053,18 @@ end_section: */ Dprint("2a"); - Set_logstring(LOG_DISC, - "0New CB disc: M=%g Msun J=%g (%g and %g %% of CE) ", + Append_logstring(LOG_DISC, + "0New CB disc: M=%g Msun J = %g = %g Msun km/s AU (%g and %g %% of CE, Jorb = %g; Lorb = %g, Ldisc = %g km/s AU) ", cbdisc->M/M_SUN, cbdisc->J, - f_M, - f_J); + cbdisc->J / (M_SUN * 1e5 * ASTRONOMICAL_UNIT), + f_M*100.0, + f_J*100.0, + jorb_cgs / (M_SUN * 1e5 * ASTRONOMICAL_UNIT), + jorb_cgs / (M_SUN * 1e5 * ASTRONOMICAL_UNIT) / (M_SUN*(m1init + m2init)), + cbdisc->J / (M_SUN * 1e5 * ASTRONOMICAL_UNIT) / cbdisc->M + + ); Dprint("2"); PRINTF("DISC_COMENV %d\n", (stardata->star[0].luminosity > stardata->star[1].luminosity ? @@ -2505,20 +2531,22 @@ end_section: tmp_stardata->star[0].luminosity = l1; tmp_stardata->star[1].luminosity = l2; tmp_stardata->common.separation = stardata->common.separation; - disc_initialize_disc(tmp_stardata,cbdisc); + disc_initialize_disc(tmp_stardata,cbdisc,NULL); Safe_free(tmp_stardata); } #endif Boolean m = IS_ZERO(stardata->common.separation); Append_logstring(LOG_COMENV_POST, - "post-COMENV M=%g(Mc=%g,st=%d,Teff=%g) + M=%g(Mc=%g,st=%d,Teff=%g) a_out=%g P_out=%g (%g d) R1=%g RL1=%g (R1/RL1 = %g) R2=%g RL2=%g (R2/RL2 = %g) SN? %d %d Single? %d ", + "post-COMENV M=%g(Mc=%g,Menv=%g,st=%d,Teff=%g) + M=%g(Mc=%g,Menv=%g,st=%d,Teff=%g) a_out=%g P_out=%g (%g d) R1=%g RL1=%g (R1/RL1 = %g) R2=%g RL2=%g (R2/RL2 = %g) SN? %d %d Single? %d ", stardata->star[0].mass, stardata->star[0].core_mass, + stardata->star[0].mass - stardata->star[0].core_mass, stardata->star[0].stellar_type, Teff(0), stardata->star[1].mass, stardata->star[1].core_mass, + stardata->star[1].mass - stardata->star[1].core_mass, stardata->star[1].stellar_type, Teff(1), stardata->common.separation, @@ -2551,8 +2579,7 @@ end_section: stardata->common.orbital_period*YEAR_LENGTH_IN_DAYS ); - - + Dprint("Comenv returns NORMAL_EXIT"); return(NORMAL_EXIT); } @@ -2657,7 +2684,8 @@ static double comenv_dm_bisector_wrapper(const double menv, } static double stripped_radius(struct star_t * star, - struct stardata_t * stardata) + struct stardata_t * stardata, + const double Rtarget) { /* * Find the stripped (remnant) radius of the star. @@ -2669,7 +2697,6 @@ static double stripped_radius(struct star_t * star, s->timescales = tscls1; s->luminosities = lums; s->GB = GB; - s->rzams = star->rzams; s->core_radius = star->core_radius; s->rtms = star->rtms; @@ -2678,17 +2705,21 @@ static double stripped_radius(struct star_t * star, s, star, stardata, - 1.0); - - double R = f + 1.0; - + Rtarget); + /* + * f = R/Rtarget - 1 + * + * Rtarget * (f+1) = R + */ + double R = Rtarget * ( f + 1.0 ); + Dprint("POST STRIP R=%g (s->radius=%g star->radius=%g)) KW=%d\n", R, s->radius, star->radius, s->stellar_type); - R = s->radius; +// R = s->radius; Safe_free(s); return R; } @@ -2704,12 +2735,16 @@ static double comenv_dm_bisector(double menv, * interpolator */ stardata->common.logflag = TRUE; - - const double vb = 0; + + + const int vb = 0; double ntp = star->num_thermal_pulses; if(vb) { - printf("star in mass = %g, s mass = %g\n",star->mass,s->mass); + printf("comenv_dm_bisector: menv = %g, star in mass = %g, s mass = %g\n", + menv, + star->mass, + s->mass); } struct star_t * news = New_star; Copy_star(s,news); @@ -2739,38 +2774,89 @@ static double comenv_dm_bisector(double menv, ); - if(1) - stellar_timescales(news->stellar_type, - news->phase_start_mass, - news->mass, - &(news->tm), - &(news->tn), - news->timescales, - news->luminosities, - news->GB, - stardata, - star); + + stellar_timescales(news->stellar_type, + news->phase_start_mass, + news->mass, + &(news->tm), + &(news->tn), + news->timescales, + news->luminosities, + news->GB, + stardata, + star); + { double age; if(0) + { giant_age(&s->core_mass, s->mass, &s->stellar_type, &s->phase_start_mass, &age, stardata,star); - } + if(vb)printf("giant age gives %g for stellar type %d %d\n", + age, + s->stellar_type, + news->stellar_type); + } + } + stellar_structure_BSE(news, star, stardata, STELLAR_STRUCTURE_CALLER_common_envelope_evolution_dm_bisector); erase_events(stardata); + + + /* testing */ + if(1 && + news->radius > Rtarget && + news->stellar_type != s->stellar_type) + { + + if(vb) + printf("Remnant radius > target radius: cannot fulfil : stellar type changed(?) from %d to %d\n", + s->stellar_type, + news->stellar_type); + + /* + * Stellar type changed: recalculate + */ + news->mass = news->core_mass; + stellar_timescales(news->stellar_type, + news->phase_start_mass, + news->mass, + &(news->tm), + &(news->tn), + news->timescales, + news->luminosities, + news->GB, + stardata, + star); + if(0)giant_age(&news->core_mass, + news->mass, + &news->stellar_type, + &news->phase_start_mass, + &news->age, + stardata, + news); + stellar_structure_BSE(news, + star, + stardata, + STELLAR_STRUCTURE_CALLER_common_envelope_evolution_dm_bisector); + erase_events(stardata); + Dprint("new radius %g\n",news->radius); + } + + /* end testing */ if(vb) { printf("Bisector : type %d (was %d) M = %g, Menv = %g, R = %g vs Rtarget = %g, SN? %d \n", news->stellar_type, - news->stellar_type, + star->stellar_type, news->mass, menv, news->radius, @@ -2779,17 +2865,8 @@ static double comenv_dm_bisector(double menv, ); } - if(0) - { - printf("MMM m = %g menv = %g R = %g R/Rtarget = %g\n", - news->mass, - news->mass - news->core_mass, - news->radius, - news->radius/Rtarget - ); - } - - double f = news->radius/Rtarget - 1.0; + //double f = news->radius/Rtarget - 1.0; + const double f = Bisection_result(Rtarget, news->radius); Safe_free(news); star->num_thermal_pulses = ntp; @@ -2982,6 +3059,7 @@ void add_envelope_to_remnant(double envelope_mass, max, tolerance, itmax, + BISECTOR_COMENV_DM_USELOG, alpha, s, star, @@ -3028,11 +3106,11 @@ void add_envelope_to_remnant(double envelope_mass, *age_donor = s->age; - if(0)printf("FINAL kw=%d r=%g menv=%g\n", - s->stellar_type, - s->radius, - s->mass - s->core_mass); - + Dprint("FINAL kw=%d r=%g menv=%g\n", + s->stellar_type, + s->radius, + s->mass - s->core_mass); + // reset NTP! star->num_thermal_pulses=ntp; // just in case! @@ -3315,7 +3393,7 @@ void mixdebug_fprintf(struct stardata_t * stardata, vsnprintf(s,MAX_DEBUG_PRINT_SIZE,format,args); chomp(s); - Dprint("MIXING "); + //Dprint("MIXING "); /* make the filename, remove nan e.g. in remnant (replace with n_n) */ char f[MAX_DEBUG_PRINT_SIZE]; diff --git a/src/common_envelope/common_envelope_evolution.h b/src/common_envelope/common_envelope_evolution.h index 19c2f927ed7a807e348e747f481f843830c1302f..5b29e3fdde9ef30890bf4cf24ff342e93562ccfb 100644 --- a/src/common_envelope/common_envelope_evolution.h +++ b/src/common_envelope/common_envelope_evolution.h @@ -1,3 +1,7 @@ +#pragma once +#ifndef COMMON_ENVELOPE_H +#define COMMON_ENVELOPE_H + #include "../binary_c.h" #define ACCURACY 1.0E-6 @@ -8,9 +12,6 @@ #define TOTAL_YIELD (stardata->star[0].Xyield[kk]+stardata->star[1].Xyield[kk]) -//#undef DEBUG -//#define DEBUG 1 - #if (defined(MIXDEBUG) && (!defined(NUCSYN))) #undef MIXDEBUG #endif @@ -26,6 +27,12 @@ +/* + * Use logarithms when finding an envelope mass? + */ +#define BISECTOR_COMENV_DM_USELOG FALSE + + /* * conditions for using Nelemans common envelope prescription: * 1) companion is unevolved (MS) @@ -559,6 +566,7 @@ donor->age, \ donor->SN_type, \ donor->angular_momentum); \ + erase_events(stardata); \ } #define STRUCTURE2 \ { \ @@ -584,6 +592,7 @@ accretor->age, \ accretor->SN_type, \ accretor->angular_momentum); \ + erase_events(stardata); \ } @@ -605,3 +614,4 @@ double dmdr(struct star_t * star, #endif // POST_CE_ADAPTIVE_MENV +#endif // COMMON_ENVELOPE_H diff --git a/src/common_envelope/common_envelope_polytrope.h b/src/common_envelope/common_envelope_polytrope.h index 081eeef5d3d737985dc570b67b233de17f10caaf..b39c80286bfa410db1358f34ceac9964944e86de 100644 --- a/src/common_envelope/common_envelope_polytrope.h +++ b/src/common_envelope/common_envelope_polytrope.h @@ -1,4 +1,4 @@ - +#pragma once #ifndef COMMON_ENVELOPE_POLYTROPE_H #define COMMON_ENVELOPE_POLYTROPE_H diff --git a/src/debug/backtrace-symbols.c b/src/debug/backtrace-symbols.c index 6f43242f65f2dcdd7a8e1e6539626b6f0494d327..d594f8846d54c0573d08c2b2dbb3c07f70219227 100644 --- a/src/debug/backtrace-symbols.c +++ b/src/debug/backtrace-symbols.c @@ -4,6 +4,18 @@ #include "binary_c_debug.h" #include "../binary_c.h" +/* + * RGI: hack to prevent problems on old bfd.h which require + * "config.h" to be defined. This is a workaround for that bug. + */ +#ifndef PACKAGE +#define PACKAGE 1 +#endif // !PACKAGE +#ifndef PACKAGE_VERSION +#define PACKAGE_VERSION 1 +#endif // PACKAGE_VERSION + + /* A hacky replacement for backtrace_symbols in glibc diff --git a/src/debug/debug_colours.h b/src/debug/debug_colours.h new file mode 100644 index 0000000000000000000000000000000000000000..8e887697d293ce28d3b258f0580ffffaef364bc8 --- /dev/null +++ b/src/debug/debug_colours.h @@ -0,0 +1,19 @@ +#pragma once +#ifndef DEBUG_COLOURS_H +#define DEBUG_COLOURS_H + +#ifdef DEBUG_COLOURS +#define COLOUR_TIME CYAN +#define COLOUR_LINENUMBERS GREEN +#define COLOUR_ENDLINE COLOUR_RESET +#define COLOUR_FILENAME RED +#define COLOUR_CALLER YELLOW +#else +#define COLOUR_TIME "" +#define COLOUR_LINENUMBERS "" +#define COLOUR_ENDLINE "" +#define COLOUR_FILENAME "" +#define COLOUR_CALLER "" +#endif + +#endif // DEBUG_COLOURS_H diff --git a/src/debug/debug_fprintf.c b/src/debug/debug_fprintf.c index a0dd445f1f81f0617a09fc7964f11aa812127730..950a809a0d74c6154687d01dcf51a48d1233c80a 100644 --- a/src/debug/debug_fprintf.c +++ b/src/debug/debug_fprintf.c @@ -1,31 +1,19 @@ #include "../binary_c.h" #include <execinfo.h> #include <errno.h> +#include "../debug/debug_colours.h" /* * function called by Dprint * i.e. debugging print statements */ -#ifdef DEBUG_COLOURS -#define COLOUR_TIME CYAN -#define COLOUR_LINENUMBERS GREEN -#define COLOUR_ENDLINE COLOUR_RESET -#define COLOUR_FILENAME RED -#define COLOUR_CALLER YELLOW -#else -#define COLOUR_TIME "" -#define COLOUR_LINENUMBERS "" -#define COLOUR_ENDLINE "" -#define COLOUR_FILENAME "" -#define COLOUR_CALLER "" -#endif #if defined DEBUG_CALLER && defined BACKTRACE static void caller_function (char * string); #endif -void debug_fprintf(struct stardata_t * RESTRICT stardata, +void debug_fprintf(struct stardata_t * stardata, char * RESTRICT filename , int fileline, Boolean newline, @@ -56,7 +44,7 @@ void debug_fprintf(struct stardata_t * RESTRICT stardata, va_start(args,format); /* s contains the message */ - char s[MAX_DEBUG_PRINT_SIZE],sid[100],show[100]; + char s[MAX_DEBUG_PRINT_SIZE],sid[STRING_LENGTH],show[STRING_LENGTH]; vsnprintf(s,MAX_DEBUG_PRINT_SIZE,format,args); chomp(s); @@ -66,7 +54,7 @@ void debug_fprintf(struct stardata_t * RESTRICT stardata, */ #ifdef Debug_show_expression if(stardata!=NULL) - snprintf(show,99,Debug_show_expression); + snprintf(show,STRING_LENGTH-4,Debug_show_expression); #else show[0]='\0'; #endif @@ -75,7 +63,7 @@ void debug_fprintf(struct stardata_t * RESTRICT stardata, if(stardata != NULL) { snprintf(sid, - 99, + STRING_LENGTH-1, "(ID %d %s)", stardata->model.id_number, show @@ -85,7 +73,7 @@ void debug_fprintf(struct stardata_t * RESTRICT stardata, #endif // BINARY_C_API { snprintf(sid, - 99, + STRING_LENGTH-1, "(%s)", show ); diff --git a/src/debug/debug_prototypes.h b/src/debug/debug_prototypes.h index ef8f477d9d2c127c51f14b2493607e20d3914cc9..65ba6e067e6cd1fbec58f8f90a2b45beaeb92a52 100644 --- a/src/debug/debug_prototypes.h +++ b/src/debug/debug_prototypes.h @@ -1,7 +1,8 @@ +#pragma once #ifndef DEBUG_PROTOTYPES_H #define DEBUG_PROTOTYPES_H -void debug_fprintf(struct stardata_t * RESTRICT stardata, +void debug_fprintf(struct stardata_t * stardata, char * RESTRICT filename , int fileline, Boolean newline, @@ -20,7 +21,6 @@ void backtrace_free_cache_memory(void); #endif #endif // BACKTRACE -void binary_c_breakpoint(void * stardata); void show_stardata(struct stardata_t * stardata); #endif // DEBUG_PROTOTYPES_H diff --git a/src/debug/libbacktrace_functions.h b/src/debug/libbacktrace_functions.h index 82614d5ac708822b5c63c2ca730b66d1af785b41..850c20cdf2830b992468351d35a69779f8dce98d 100644 --- a/src/debug/libbacktrace_functions.h +++ b/src/debug/libbacktrace_functions.h @@ -1,3 +1,4 @@ +#pragma once #ifndef LIBBACKTRACE_FUNCTIONS #define LIBBACKTRACE_FUNCTIONS diff --git a/src/disc/cbdisc_eccentricity_pumping_rate.c b/src/disc/cbdisc_eccentricity_pumping_rate.c index 5b68a3cb605196e9984648f8c7c8d657fabb6522..427f3b3745fd1edbb38eb042a87b8b3fd55e246d 100644 --- a/src/disc/cbdisc_eccentricity_pumping_rate.c +++ b/src/disc/cbdisc_eccentricity_pumping_rate.c @@ -2,22 +2,21 @@ #ifdef DISCS -#include "disc.h" - - -static void resonance_radii(struct binary_system_t * binary, - double l, - double m, +static void resonance_radii(const struct binary_system_t * binary, + const double l, + const double m, double *r_corotation, double *r_inner, double *r_outer); void cbdisc_eccentricity_pumping_rate(struct stardata_t * stardata, struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, double * dedt, double * dJdt) { +//#undef DISC_DEBUG +//#define DISC_DEBUG 2 /* * Eccentricty pumping rate caused by * the presence of a circumbinary disc. @@ -194,12 +193,6 @@ void cbdisc_eccentricity_pumping_rate(struct stardata_t * stardata, *dedt*e/(omega_binary*disc->M/Mb) ); } - - if(0 && *dedt<0.0) - { - printf("de/dt<0 : should be impossible!\n"); - _exit(0); - } } else { @@ -208,7 +201,7 @@ void cbdisc_eccentricity_pumping_rate(struct stardata_t * stardata, } - Discdebug(2,"DEDT %g DJDT %g\n",*dedt,*dJdt); + Discdebug(2,"return DEDT %g DJDT %g\n",*dedt,*dJdt); #ifdef NANCHECKS @@ -223,9 +216,9 @@ void cbdisc_eccentricity_pumping_rate(struct stardata_t * stardata, } -static void resonance_radii(struct binary_system_t * binary, - double l, - double m, +static void resonance_radii(const struct binary_system_t * binary, + const double l, + const double m, double *r_corotation, double *r_inner, double *r_outer) diff --git a/src/disc/disc.h b/src/disc/disc.h index f7c5b7988a73ebc3895ae820cb7edcbbbf217f18..4f6ed84c2105e37c134ebf1f4be8ec80046fdcc2 100644 --- a/src/disc/disc.h +++ b/src/disc/disc.h @@ -1,36 +1,19 @@ + +#pragma once #ifndef DISC_H #define DISC_H +#ifdef DISCS /* * Header file for the binary_c disc library */ -/* - * Logging for individual systems with discs - */ -#define DISC_LOG -//#define DISC_LOG_2D - -/* - * Disc debugging - */ -#define DISC_DEBUG 0 +#include "disc_parameters.h" #include "disc_macros.h" #include "disc_power_laws.h" -#include "disc_adam.h" #include "disc_prototypes.h" +#include "disc_thermal_zones.h" -//#define TSCALE 1e25 -//#define RSCALE 1e16 - -#define TSCALE 1.0 -#define RSCALE 1.0 - -/* - * Multiplier for the Jdot term from mass loss - * in the angular momentum flux equation - */ -#define JDOT_EVAP_FAC 1.0 - +#endif // DISCS #endif // DISC_H diff --git a/src/disc/disc_F_bisector.c b/src/disc/disc_F_bisector.c index 741637104fcba8c5b7e937fd788df857bd243cdd..ee3623f9a79795b2f1da6c01bbdb8d1410277ba5 100644 --- a/src/disc/disc_F_bisector.c +++ b/src/disc/disc_F_bisector.c @@ -2,9 +2,8 @@ #ifdef DISCS -#include "disc.h" #undef DEBUG_ANGMOM_FLUX_BISECTOR -#define DEBUG_ANGMOM_FLUX_BISECTOR 0 +#define DEBUG_ANGMOM_FLUX_BISECTOR 1 double disc_F_bisector(const double Rin, @@ -15,9 +14,9 @@ double disc_F_bisector(const double Rin, * Rin at fixed Rout and mass (i.e. Tvisc0) */ Map_GSL_params(p,args); - struct disc_t * disc = va_arg(args, struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t * ); - double Routfac = va_arg(args,double); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); + Map_varg(double,Routfac,args); va_end(args); double ret; @@ -66,7 +65,7 @@ double disc_F_bisector(const double Rin, if(status == DISC_ZONES_OK) { - F = disc_total_angular_momentum_flux(disc,binary); + F = disc_total_angular_momentum_flux_from_binary(disc,binary); if(DEBUG_ANGMOM_FLUX_BISECTOR) { @@ -80,7 +79,7 @@ double disc_F_bisector(const double Rin, disc->F/F - 1.0 ); } - ret = disc->F/F - 1.0; + ret = Bisection_result_inverse(disc->F,F); if(0)printf("Bisect for F : ok want=%g / have=%g = %g : ret = %g : Rin = %g\n", disc->F, F, @@ -90,7 +89,7 @@ double disc_F_bisector(const double Rin, } else { - if(0)printf("Bisect for F : error %d %s\n", + if(1)printf("Bisect for F : disc_build_disc_zones failed with status %d \"%s\"\n", status, Disc_zone_status(status) ); diff --git a/src/disc/disc_J_bisector.c b/src/disc/disc_J_bisector.c index 8831344f8cf63265179780ea8fa854a38aff0a56..be5b4a58791885862c79fd310f2b7d6c3123544a 100644 --- a/src/disc/disc_J_bisector.c +++ b/src/disc/disc_J_bisector.c @@ -2,8 +2,6 @@ #ifdef DISCS -#include "disc.h" - double disc_J_bisector(const double Rout, void * p) { @@ -11,8 +9,8 @@ double disc_J_bisector(const double Rout, * Bisect for J at fixed M (i.e. sigma0) and Rin (i.e. ang mom flux) */ Map_GSL_params(p,args); - struct disc_t * disc = va_arg(args, struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t * ); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); va_end(args); /* @@ -40,7 +38,7 @@ double disc_J_bisector(const double Rout, J,disc->J ); } - ret = J/disc->J - 1.0; + ret = Bisection_result(disc->J,J); } else { diff --git a/src/disc/disc_M_bisector.c b/src/disc/disc_M_bisector.c index ec519095e2fac39e338ff455ac87349f8ce242a0..137bde302200225e65a5b759d0b90e421cb7a8af 100644 --- a/src/disc/disc_M_bisector.c +++ b/src/disc/disc_M_bisector.c @@ -2,13 +2,12 @@ #ifdef DISCS -#include "disc.h" double disc_M_bisector(const double Tvisc0, void * p) { Map_GSL_params(p,args); - struct disc_t * disc = va_arg(args, struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t *); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); va_end(args); if(DEBUG_MASS_BISECTOR) @@ -43,23 +42,29 @@ double disc_M_bisector(const double Tvisc0, if(status == DISC_ZONES_OK) { double M = disc_total_mass(disc); + ret = Bisection_result(disc->M,M); if(DEBUG_MASS_BISECTOR) { - printf("M: Given Rin = %g, Rout = %g, Tvisc0 = %g : M=%g (want %g)\n", + printf("M: Given Rin = %g, Rout = %g, Tvisc0 = %g : M=%g (want %g, diff %g) ret %g\n", disc->Rin, disc->Rout, disc->Tvisc0, M, - disc->M + disc->M, + ABSDIFF(disc->M,M), + ret ); } - ret = M/disc->M - 1.0; + } else { - printf("Failed to build disc zones %d %s\n", - status, - Disc_zone_status(status)); + if(DEBUG_MASS_BISECTOR) + { + printf("Failed to build disc zones %d %s\n", + status, + Disc_zone_status(status)); + } ret = -1.0; } } diff --git a/src/disc/disc_adam_integrals.c b/src/disc/disc_adam_integrals.c deleted file mode 100644 index 84bdcf4a18d70e1975271bc118d708cb96a140c3..0000000000000000000000000000000000000000 --- a/src/disc/disc_adam_integrals.c +++ /dev/null @@ -1,276 +0,0 @@ -#include "../binary_c.h" - -#if defined DISCS && defined DISCS_JERMYN - -#include "disc_adam.h" - - -/* - * Disc integral functions. - * - * Local (static) functions: - * - * The general integral function over the whole disc is disc_integral. - * - * A (relatively untested) function disc_partial_integral can be - * used to integrate over part of the disc. - * - * Public functions:2 - * - * disc_total_mass, disc_total_angular_momentum, disc_total_luminosity, - * disc_total_moment_of_inertia - * etc. - */ - -static double disc_integral(struct disc_t * disc, - const int nlaw); - - -static double disc_integral(struct disc_t * disc, - const int nlaw) -{ - /* - * General integrator over the disc's radius - * for a function A(R) with power laws offsets - * in the viscous and radiative zones, respectively. - * - * The exponent required is (c + m * zone->exponent) - * where c and m are input parameters. - */ - - - int i; - double I=0.0; - if(nlaw==POWER_LAW_TEMPERATURE) - { - /* - * You should probably never integrate the temperature! - */ - /* - for(i=0; i<=disc->n_thermal_zones-1; i++) - { - I += power_law_zone_integral(&disc->thermal_zones[i].Tlaw); - } - */ - Exit_binary_c_no_stardata( - 2, - "You should not try to integrate the temperature power law directly: use one of the ..._INTEGRAND power laws\n"); - } - else - { - for(i=0; i<=disc->n_thermal_zones-1; i++) - { - double dI = power_law_zone_integral(&(disc->thermal_zones[i].power_laws[nlaw])); - I += dI; - //printf("Add plaw %d's dI=%g to I to get %g\n",i,dI,I); - } - //printf("TOTAL I = %g\n",I); - } - return I; -} - -static double disc_partial_integral(struct disc_t * disc, - const int nlaw, - double r0, - double r1) -{ - /* - * As disc_integral between radii r0 and r1 - */ - int i; - double I=0.0; - if(nlaw==POWER_LAW_TEMPERATURE) - { - /* - * You should probably never integrate the temperature! - */ - Exit_binary_c_no_stardata( - 2, - "You should not try to integrate the temperature power law directly: use one of the ..._INTEGRAND power laws\n"); - } - else - { - //printf("PARTIAL INTEGRAL from %g to %g\n",r0,r1); - for(i=0; i<=disc->n_thermal_zones-1; i++) - { - double dI; - if(MORE_OR_EQUAL(disc->thermal_zones[i].rstart,r0) && - LESS_OR_EQUAL(disc->thermal_zones[i].rend,r1)) - { - /* zone is entirely inside the integral region */ - //printf("WHOLE ZONE %d\n",i); - dI = power_law_zone_integral(&(disc->thermal_zones[i].power_laws[nlaw])); - } - else if(r1 < disc->thermal_zones[i].rstart || - r0 > disc->thermal_zones[i].rend) - { - /* integral region is outside the zone */ - //printf("NO CONTRIBUTION from zone %d\n",i); - dI = 0.0; - } - else - { - double r_in = MAX3(disc->Rin,r0,disc->thermal_zones[i].rstart); - double r_out = MIN3(disc->Rout,r1,disc->thermal_zones[i].rend); - if(0)printf("PARTIAL ZONE %d from %g to %g (limits = %g,%g, Rin=%g, Rout=%g, zone from %g to %g)\n", - i, - r_in, - r_out, - r0, - r1, - disc->Rin, - disc->Rout, - disc->thermal_zones[i].rstart, - disc->thermal_zones[i].rend); - dI = power_law_zone_integral_region(&(disc->thermal_zones[i].power_laws[nlaw]), - r_in, - r_out); - } - I += dI; - } - //printf("TOTAL I = %g\n",I); - } - return I; -} - - -/************************************************************/ - -double disc_total_mass(struct disc_t * disc) -{ - /* - * Total mass in the disc (cgs). - */ - return disc_integral(disc,POWER_LAW_MASS_INTEGRAND); -} - -double disc_partial_mass(struct disc_t * disc,double r0,double r1) -{ - /* - * Partial mass integral (cgs). - */ - return disc_partial_integral(disc,POWER_LAW_MASS_INTEGRAND,r0,r1); -} - -double disc_zone_mass(struct disc_t * disc,int n) -{ - /* - * Mass of zone n - */ - double r0 = disc->thermal_zones[n].Tlaw.R0; - double r1 = disc->thermal_zones[n].Tlaw.R1; - return disc_partial_integral(disc,POWER_LAW_MASS_INTEGRAND,r0,r1); -} - -double disc_total_luminosity(struct disc_t * disc) -{ - /* - * Bolometric disc luminosity (cgs), from both sides of - * the disc. - */ - return disc_integral(disc,POWER_LAW_LUMINOSITY_INTEGRAND); -} - -double disc_partial_angular_momentum(struct disc_t * disc, - struct binary_system_t * binary, - double r0, - double r1) -{ - return disc_partial_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_INTEGRAND,r0,r1); -} - -double disc_zone_angular_momentum(struct disc_t * disc, - struct binary_system_t * binary, - int n) -{ - /* - * Angular momentum in zone n - */ - double r0 = disc->thermal_zones[n].Tlaw.R0; - double r1 = disc->thermal_zones[n].Tlaw.R1; - return disc_partial_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_INTEGRAND,r0,r1); -} - -double disc_total_angular_momentum(struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Total angular momentum in the disc (cgs) - */ - return disc_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_INTEGRAND); -} - -double disc_mean_specific_angular_momentum(struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * mean specific angular momentum in the disc (cgs) - */ - return disc_total_angular_momentum(disc,binary) / disc_total_mass(disc); -} - - -double disc_total_moment_of_inertia(struct disc_t * disc) -{ - /* - * Total moment of inertial, assuming a thin disc (cgs) - */ - return disc_integral(disc,POWER_LAW_MOMENT_OF_INERTIA_INTEGRAND); -} - -double disc_total_gravitational_potential_energy(struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Total gravitational potential energy in the disc - */ - return disc_integral(disc,POWER_LAW_GRAVITATIONAL_POTENTIAL_ENERGY_INTEGRAND); -} - -double disc_total_kinetic_energy(struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Total kinetic energy in the disc - */ - return disc_integral(disc,POWER_LAW_KINETIC_ENERGY_INTEGRAND); -} - - -double disc_total_angular_momentum_flux(struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Total angular momentum flux throughout the disc. - * - * In the absence of mass loss, this is given by the disc integral - * over the angular momentum flux. The extra term specifies the - * angular momentum required to remove material from the disc. - * - * Note the Jdot_evap term which corrects for the flow - * of angular momentum from the disc to the inner edge - * when the inner edge is being evaporated. - */ - return - disc_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_FLUX_INTEGRAND) - + - JDOT_EVAP_FAC * disc->Jdot_evap; -} - -double disc_total_angular_momentum_constraint(struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Total angular momentum flux throughout the disc - */ - return disc_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_CONSTRAINT); -} - -double disc_mass_weighted_viscous_timescale(struct disc_t * disc, - struct binary_system_t * binary) -{ - return disc_integral(disc,POWER_LAW_MASS_WEIGHTED_VISCOUS_TIMESCALE); -} - -#endif // DISCS && DISCS_JERMYN - diff --git a/src/disc/disc_adam_structure.c b/src/disc/disc_adam_structure.c deleted file mode 100644 index 866740e25b4055611d27ce92ef1c50ce726f926b..0000000000000000000000000000000000000000 --- a/src/disc/disc_adam_structure.c +++ /dev/null @@ -1,473 +0,0 @@ -#include "../binary_c.h" -#if defined DISCS && defined DISCS_JERMYN -#include "disc.h" -#include "disc_prototypes.h" -#include "disc_adam.h" - - - -/* - * Disc structure functions, e.g. T(R), Sigma(R) etc. - */ - -/************************************************************/ - -static double disc_half_angular_momentum_radius_bisector(const double r, - void * p); -static double disc_pressure_radius_bisector(const double r, - void * p); - -/************************************************************/ - -double disc_temperature(const double radius, - struct disc_t * disc) -{ - /* - * Temperature as a function of radius (K) - */ - return MAX(0.0,generic_power_law(radius,disc,POWER_LAW_TEMPERATURE)); -} - -double disc_inner_edge_temperature(struct disc_t * disc) -{ - /* - * Temperature at the disc's inner edge (K) - */ - const struct disc_thermal_zone_t * zone = DISC_INNER_ZONE(disc); - return MAX(0.0,power_law(&(zone->Tlaw),zone->rstart)); -} - -double disc_outer_edge_temperature(struct disc_t * disc) -{ - /* - * Temperature at the disc's outer edge (K) - */ - const struct disc_thermal_zone_t * zone = DISC_OUTER_ZONE(disc); - return MAX(0.0,power_law(&(zone->Tlaw),zone->rend)); -} - -double generic_power_law(double radius, - struct disc_t * disc, - const int n) -{ - /* - * Wrapper to acquire the value of a power law - * at some point in the disc. - * - * n is the power law number, or -1 for temperature - */ - - struct disc_thermal_zone_t * z; - - if(radius < 0.0) - { - /* - * if radius is negative, we seek only the nearest zone - */ - radius = -radius; - z = DISC_NEAREST_ZONE(radius,disc); - } - else - { - /* - * But by default, we seek a zone INSIDE the disc, - * i.e. there is some error checking. - */ - z = DISC_ZONE(radius,disc); - } - - if(n==POWER_LAW_TEMPERATURE) - { - return power_law(&z->Tlaw,radius); - } - else - { - return power_law(&z->power_laws[n],radius); - } - -#ifdef OLDCODE - int j,n = DISC_ZONE_N(radius,disc); - double An = A0; - Boolean vb=0; - - /* - * Build An from A0 - */ - if(vb)printf("generic : IN ZONE %d/%d : An=A0=%g\n",n,disc->n_thermal_zones,An); - if(n>0) - { - for(j=0;j<=n-1;j++) - { - double f = pow(disc->thermal_zones[j].rend, - m*(disc->thermal_zones[j].Tlaw.exponent - disc->thermal_zones[j+1].Tlaw.exponent)); - if(vb)printf("generic: MULT AT %d - %d transition : f=%g : transition radius = %g\n", - j,j+1, - f, - disc->thermal_zones[j].rend - ) ; - An *= f; - if(vb)printf("generic: An now %g\n",An); - } - } - - /* - * hence the result - */ - double xx= An * pow(radius, m*disc->thermal_zones[n].Tlaw.exponent + c); - if(vb)printf("generic: Hence XX = %g\n",xx); - return xx; -#endif - -} - - -double disc_column_density(const double radius, - struct disc_t * disc) -{ - /* - * Column density as a function of radius - * (g/cm^2) - */ - return generic_power_law(radius,disc,POWER_LAW_SIGMA); -} - -double disc_specific_angular_momentum(const double radius, - struct binary_system_t * binary) -{ - /* - * Specific angular momentum as a function of radius (cm^2/s) - */ - return sqrt(GRAVITATIONAL_CONSTANT * binary->mtot * radius); -} - -double disc_injection_radius(const double h, - struct binary_system_t * binary) -{ - /* - * Given specific angular momentum h, and a binary - * system, determine the radius at which material will be - * injected. - */ - return POW2(h)/(GRAVITATIONAL_CONSTANT * binary->mtot); -} - -double disc_orbital_frequency(const double radius, - struct binary_system_t * binary) -{ - /* - * Orbital frequency as a function of radius (rad/s) - */ - return IS_ZERO(radius) ? 0.0 : (sqrt(GRAVITATIONAL_CONSTANT*binary->mtot/POW3(radius))); -} - -double disc_velocity(const double radius, - struct binary_system_t * binary) -{ - /* - * Velocity as a function of radius - */ - return radius * disc_orbital_frequency(radius,binary); -} - - - -double disc_gravitational_pressure(const double radius, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Gravitational pressure as a function of radius, - * neglecting the disc mass - */ - return IS_ZERO(radius) ? 0.0 : - (GRAVITATIONAL_CONSTANT * binary->mtot * - disc_column_density(radius,disc) / POW2(radius)); -} - -double disc_scale_height(const double radius, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Disc scale height as a function of radius (cm) - */ - const double T = disc_temperature(radius,disc); - return sqrt(BOLTZMANN_CONSTANT * T * disc->gamma * POW3(radius)/ - (disc->mu * GRAVITATIONAL_CONSTANT * binary->mtot)); -} - -double disc_sound_speed(const double radius, - struct disc_t * disc) -{ - /* - * Sound speed as a function of radius (cm/s) - */ - const double T = disc_temperature(radius,disc); - return sqrt(disc->gamma * BOLTZMANN_CONSTANT * T / disc->mu); -} - - -double disc_mass_inflow_rate(const double radius, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Mass inflow rate Mdot = 3*pi*nu(R)*Sigma(R) - */ - return 3.0 * PI * - disc_kinematic_viscosity(radius,disc,binary) * - disc_column_density(radius,disc); -} - -double disc_density(const double radius, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Density (g/cm^3) = Sigma / H - */ - const double Sigma = disc_column_density(radius,disc); - const double H = disc_scale_height(radius,disc,binary); - return IS_ZERO(H) ? 0.0 : (Sigma / H); -} - -double disc_pressure(const double radius, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Pressure as a function of radius (erg/cm^3) - */ - const double density = disc_density(radius,disc,binary); - const double T = disc_temperature(radius,disc); - return BOLTZMANN_CONSTANT * T * density / disc->mu; -} - -double disc_kinematic_viscosity(const double radius, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Kinematic viscosity (nu(R)) as a function of radius - * (cm^2/s) - */ - const double cs = disc_sound_speed(radius,disc); - const double Omega = disc_orbital_frequency(radius,binary); - return disc->alpha * cs * cs / Omega; -} - -double disc_ring_radius(struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * If we were to put the whole disc in a ring, - * where would it be? - */ - return POW2(disc->J) / - (POW2(disc->M) * binary->mtot * GRAVITATIONAL_CONSTANT); -} - -double specific_torque_Armitage(const double radius, - struct binary_system_t * binary) -{ - /* - * Central binary specific torque, erg/g, - * from Armitage and Natarajan (2002) - */ - return - POW2(binary->m1/binary->m2)* - GRAVITATIONAL_CONSTANT * binary->mtot * - POW4(binary->separation)/(2.0*POW5(radius)); -} - -double disc_binary_angular_momentum_flux(struct disc_t * disc, - struct binary_system_t * binary) -{ - return - 3.0 * PI * disc->alpha * disc->gamma * - BOLTZMANN_CONSTANT * disc->sigma0 / disc->mu - ; -} - -double disc_angular_momentum_flux(const double radius, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Angular momentum flux, F(radius). - * - * Note that there is (in theory) no radius dependence - * using our standard disc model, however it's useful - * to have the radius passed in so we can test the calculation - * by using an alternative procedure. - */ - double F1 = disc_binary_angular_momentum_flux(disc,binary); - double Fevap = JDOT_EVAP_FAC * disc->Jdot_evap; - - /* - * Note that if angular momentum is being lost from the - * disc, we assume the disc recovers instantly such that - * F(R) includes this evaporation. - */ - double F = F1 + Fevap; - - if(0)printf("Target F = 3pi (alpha=%g) (gamma=%g) kB (sigma0=%g) / (mu=%g) from Tvisc0 = %g, Fevap = %g -> F = %g (disc->F = %g)\n", - - disc->alpha, - disc->gamma, - disc->sigma0, - disc->mu, - disc->Tvisc0, - Fevap, - F, - disc->F); - - if(isnan(F)) - { - Exit_binary_c_no_stardata(1,"nan oops"); - } - - return F; - - /* alternative (but slower) - //const double H = disc_scale_height(radius,disc,binary); - const double Sigma = disc_column_density(radius,disc); - const double h = disc_specific_angular_momentum(radius,binary); - const double nu = disc_kinematic_viscosity(radius,disc,binary); - return 3.0 * PI * h * Sigma * nu; - */ -} - -double disc_viscous_timescale(const double radius, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Viscous timescale at a given radius - */ - return IS_ZERO(radius) ? 0.0 : (POW2(radius)/(5.0 * disc_kinematic_viscosity(radius,disc,binary))); -} - - - - -double disc_half_angular_momentum_radius(struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Function to bisect on the half angular - * momentum radius. - * - * Returns 0.0 on error. - */ - int error; - double r = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_RHALFJ, - &disc_half_angular_momentum_radius_bisector, - 0.9*(disc->Rout - disc->Rin) + disc->Rin, - disc->Rin, - disc->Rout, - DISC_RHALFJ_TOLERANCE, - 1000, - 1.0, - disc, - binary); - - Discdebug(1, - "RJHALF Bisect gave %g, error = %d (was %g)\n", - r, - error, - disc->RJhalf); - - /* - * On error, use previous value. - */ - return error == BISECT_ERROR_NONE ? r : - MAX(disc->Rin,MIN(disc->Rout,disc->RJhalf)); -} - -static double disc_half_angular_momentum_radius_bisector(const double r, - void *p) -{ - /* - * Bisect the half angular momentum radius - */ - Map_GSL_params(p,args); - struct disc_t * disc = va_arg(args, struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t * ); - va_end(args); - double Jpart = MAX(0.0,disc_partial_angular_momentum(disc, - binary, - disc->Rin, - r)); - //printf("Bisect RJhalf from Rin=%g to r=%g : Jpart = %g (disc J = %g, target = %g)\n",disc->Rin,r,Jpart,disc->J,0.5*disc->J); - return -(disc->J*0.5 - Jpart); -} - - -double disc_pressure_radius(struct disc_t * disc, - struct binary_system_t * binary, - double P) -{ - /* - * Function to find the radius at which the pressure - * is P. - * - * Assumes pressure monotonically decreases outwards. - * - * Gives outer/inner edge radii if the P is - * less/greater than that at the outer/inner edge - * of the disc, respectively. - * - * Returns 0.0 on error. - */ - - Discdebug(2, - "Find P = %g radius between Pin = %g, Pout = %g\n", - P, - disc_gravitational_pressure(disc->Rin,disc,binary), - disc_gravitational_pressure(disc->Rout,disc,binary)); - if(P < disc_gravitational_pressure(disc->Rout,disc,binary)) - { - return disc->Rout; - } - else if(P > disc_gravitational_pressure(disc->Rin,disc,binary)) - { - return disc->Rin; - } - else - { - int error; - double r = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_PHALFJ, - &disc_pressure_radius_bisector, - 0.9*(disc->Rout - disc->Rin) + disc->Rin, - disc->Rin, - disc->Rout, - DISC_PRESSURE_RADIUS_TOLERANCE, - 1000, - 1.0, - P, - disc, - binary); - return error == BISECT_ERROR_NONE ? r : 0.0; - } -} - -static double MAYBE_UNUSED disc_pressure_radius_bisector(const double r, - void * p) -{ - Map_GSL_params(p,args); - /* - * Bisect the half angular momentum radius - */ - double Pwant = va_arg(args,double); - struct disc_t * disc = va_arg(args,struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t * ); - va_end(args); - double P = disc_gravitational_pressure(r,disc,binary); - return (Pwant-P); -} -#endif // DISCS && DISCS_JERMYN diff --git a/src/disc/disc_apply_derivatives.c b/src/disc/disc_apply_derivatives.c index 1dd59a30621ab9b8cd014dd0e470a71f77fde24e..4279f704812d9ed2139dba59e366ea67b1d5e93b 100644 --- a/src/disc/disc_apply_derivatives.c +++ b/src/disc/disc_apply_derivatives.c @@ -3,8 +3,6 @@ #ifdef DISCS -#include "disc.h" - /* * Apply various derivatives to change * the disc's mass, angular momentum, etc. @@ -17,22 +15,22 @@ * binary_c timestep). * * The sums are stored in cgs. + * + * The edge-stripping algorithm is NOT applied here, this is + * done immediately after a converged structure is made in + * disc_calc_disc_structure(). */ void disc_apply_derivatives(struct disc_t * disc, + const struct binary_system_t * binary, struct stardata_t * stardata, - double ddt, + const double ddt, Boolean * success) { *success = TRUE; - { - int i; - double mdot = 0.0; - for(i=0;i<DISC_LOSS_N;i++) - { - mdot += disc->loss[i].mdot; - } + if(Disc_is_disc(disc)) + { /* * disc->dT is the time over which the disc * evolves during which the quantities stored here @@ -42,6 +40,24 @@ void disc_apply_derivatives(struct disc_t * disc, * than they should... */ disc->dT += ddt; + } + else + { + disc->M = 0.0; + disc->J = 0.0; + } + + if(Disc_is_disc(disc)) + { + int i; + double mdot = 0.0; + for(i=0;i<DISC_LOSS_N;i++) + { + if(!Disc_loss_from_edge(i)) + { + mdot += disc->loss[i].mdot; + } + } /* * Limit changes to at most 10% of the disc mass @@ -51,8 +67,9 @@ void disc_apply_derivatives(struct disc_t * disc, /* * Update the mass of the disc */ - disc->M = MAX(0.0, disc->M + MIN(dM_max,MAX(-dM_max,mdot * ddt))); - + const double dM = MIN(dM_max,MAX(-dM_max,mdot * ddt)); + disc->M = MAX(0.0, disc->M + dM); + /* * Mass that falls onto the binary */ @@ -64,6 +81,7 @@ void disc_apply_derivatives(struct disc_t * disc, disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot )); +#ifdef ___UNLIKELY if(0) printf("DMBIN substep ddt=%g : integrated dM=%g Msun in dT=%g y, rate = %g Msun/y (ddt = %g y, disc->dT = %g y, stardata dt = %g y) disc->M = %g Msun\n", ddt/YEAR_LENGTH_IN_SECONDS, @@ -74,31 +92,33 @@ void disc_apply_derivatives(struct disc_t * disc, disc->dT/YEAR_LENGTH_IN_SECONDS, stardata->model.dtm * 1e6, disc->M/M_SUN - ); - + ); +#endif /* * Mass that is ejected from the system */ disc->dM_ejected += MAX(-dM_max, ddt * ( - disc->loss[DISC_LOSS_GLOBAL].mdot + - disc->loss[DISC_LOSS_ISM].mdot + - disc->loss[DISC_LOSS_FUV].mdot + - disc->loss[DISC_LOSS_XRAY].mdot + disc->loss[DISC_LOSS_GLOBAL].mdot + + disc->loss[DISC_LOSS_ISM].mdot + + disc->loss[DISC_LOSS_FUV].mdot + + disc->loss[DISC_LOSS_XRAY].mdot + + disc->loss[DISC_LOSS_INNER_EDGE].mdot + + disc->loss[DISC_LOSS_OUTER_EDGE].mdot )); } /* * check for evaporation */ - Discdebug(2,"check for evaporation\n"); + Discdebug(2,"check for evaporation : M = %g\n",disc->M); - if(IS_REALLY_ZERO(disc->M)) + if(!Disc_is_disc(disc)) { - Set_logstring(LOG_DISC, - "Evaporate disc (M==0) age %g y", - disc->lifetime/YEAR_LENGTH_IN_SECONDS); + Append_logstring(LOG_DISC, + "Evaporate disc (M==0) age %g y", + disc->lifetime/YEAR_LENGTH_IN_SECONDS); Discdebug(1, "Disc has evaporated because its mass is %g (= %g Msun)!\n",disc->M,disc->M/M_SUN); *success = FALSE; @@ -116,25 +136,42 @@ void disc_apply_derivatives(struct disc_t * disc, static const char *ds[100] = {DISC_LOSS_STRINGS}; for(i=0;i<DISC_LOSS_N;i++) { - jdot += disc->loss[i].jdot; - Discdebug(2,"DD %d %s = Mdot=%g Jdot=%g edot=%g\n", - i, - ds[i], - disc->loss[i].mdot, - disc->loss[i].jdot, - disc->loss[i].edot); + /* + * Do not apply for inner and outer edge + * stripping : these are dealt with by applying + * new disc bounaries (at the top of this subroutine). + */ + if(!Disc_loss_from_edge(i)) + { + jdot += disc->loss[i].jdot; + + Discdebug(2,"DD %3d %30s = Mdot=% 15g (g/s) Jdot=% 15g edot=% 15g : tM=% 15g tJ=% 15g te=% 15g y\n", + i, + ds[i], + disc->loss[i].mdot, + disc->loss[i].jdot, + disc->loss[i].edot, + fabs(disc->M/disc->loss[i].mdot), + fabs(disc->J/disc->loss[i].jdot), + fabs(binary->eccentricity/disc->loss[i].edot) + ); + } } - - double newJ = disc->J + jdot * ddt; + double dj = jdot * ddt; + double newJ = disc->J + dj; Discdebug(2,"NEWJ %g\n",newJ); + if(newJ < 0.0) { - disc->J *= 0.1; - } - else - { - disc->J = MAX(0.0, disc->J + jdot * ddt); + /* + * Panic: J<0. instead, reduce J by 10% + */ + dj = - 0.1 * disc->J; } + + disc->J = MAX(0.0, disc->J + dj); + disc->dJ_ejected += dj; + /* * Net binary orbit angular momentum derivative: * this is: @@ -151,7 +188,8 @@ void disc_apply_derivatives(struct disc_t * disc, disc->loss[DISC_LOSS_INNER_VISCOUS].jdot + disc->loss[DISC_LOSS_INNER_L2_CROSSING].jdot + disc->loss[DISC_LOSS_BINARY_TORQUE].jdot + - disc->loss[DISC_LOSS_RESONANCES].jdot + disc->loss[DISC_LOSS_RESONANCES].jdot + + 0.0 ); } @@ -163,7 +201,11 @@ void disc_apply_derivatives(struct disc_t * disc, */ disc->de_binary += ddt * disc->loss[DISC_LOSS_RESONANCES].edot; - Discdebug(2,"EDOTBIN %g\n",disc->edot_binary); + Discdebug(2, + "EDOTBIN %g = %g * %g\n", + disc->de_binary, + ddt, + disc->loss[DISC_LOSS_RESONANCES].edot); } @@ -179,18 +221,22 @@ void disc_apply_derivatives(struct disc_t * disc, * application process (with its factor ftdisc). */ disc->Mdot_ejected = disc->dM_ejected / disc->dT; + disc->Jdot_ejected = disc->dJ_ejected / disc->dT; disc->Mdot_binary = disc->dM_binary / disc->dT; disc->Jdot_binary = disc->dJ_binary / disc->dT; disc->edot_binary = disc->de_binary / disc->dT; +#ifdef ___DISABLED if(0) - printf("disc dMej/dt=%g dMbin/dt=%g Msun/y for dT=%g y\n", + printf("disc dMej/dt=%g dMbin/dt=%g Msun/y for dT=%g y, edot_bin=%g\n", disc->Mdot_ejected * YEAR_LENGTH_IN_SECONDS / M_SUN, disc->Mdot_binary * YEAR_LENGTH_IN_SECONDS / M_SUN, - disc->dT / YEAR_LENGTH_IN_SECONDS + disc->dT / YEAR_LENGTH_IN_SECONDS, + disc->edot_binary ); - } + printf("disc Mdot binary (timestep) %g\n",disc->Mdot_binary); +#endif + } } - } #endif //DISCS diff --git a/src/disc/disc_bisection_rooter.c b/src/disc/disc_bisection_rooter.c new file mode 100644 index 0000000000000000000000000000000000000000..f04fdc01068a5ce4980878d3cd81657a2514b70a --- /dev/null +++ b/src/disc/disc_bisection_rooter.c @@ -0,0 +1,311 @@ +#include "../binary_c.h" + +#ifdef DISCS +#include "disc_constraints.h" + +static double disc_nsector_wrapper(const double x, + void * p); +static void disc_nsector_wrapper2(const int n, + const double * parameter_value, + double * residual, + ...); + + +/* + * Hard-coded bisection rooter + */ + +int disc_bisection_rooter(const int n, + const disc_parameter * parameters, + const disc_constraint * constraints, + struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + Boolean * return_failed) +{ + unsigned long int bisection_count = 0; + unsigned long int maxcount = DISC_BISECTION_MAX_ATTEMPTS; + Boolean converged = FALSE; + Boolean failed = FALSE; + int error,i,j; + + while(converged == FALSE && failed == FALSE) + { + /* + * Loop over each parameter in turn + */ + i = bisection_count % n; + + Discdebug(1, + "BISECT %ld param %d/%d %d %s : constraint %d %s\n", + bisection_count, + i, + n, + parameters[i], + Disc_parameter_string(parameters[i]), + constraints[i], + Disc_constraint_string(constraints[i])); + + double unknown MAYBE_UNUSED = 0.0; + /* + * make local, 1D version of parameters + */ + disc_constraint local_constraints[1] = + { + constraints[i] + }; + disc_parameter local_parameters[1] = + { + parameters[i] + }; + double local_parameter_value[1] = + { + Disc_parameter(disc, + local_parameters[0]) + }; + + if(local_constraints[0] == DISC_CONSTRAINT_F_TO_DISC_F) + { + disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); + } + + int bisect_failed = 0; + Discdebug(1,"Call generic_bisect\n"); + double new_parameter_value = + generic_bisect(&error, + BISECT_USE_MONOCHECKS, + BISECTOR_DISC_BISECTION_ROOTER, + &disc_nsector_wrapper, + local_parameter_value[0], + Disc_parameter_min(disc, + local_parameters[0]), + + Disc_parameter_max(disc, + local_parameters[0]), + DISC_BISECTION_TOLERANCE, + DISC_BISECTION_MAX_ITERATIONS, + DISC_BISECT_BISECTION_ROOTER_USELOG, + 1.0, + + /* va_args */ + 1, // nn + local_parameters, + local_constraints, + disc, + binary, + stardata, + &bisect_failed + ); + + /* + * Detect error + */ + Discdebug(1, + "Bisection gave error %d \"%s\"\n", + error, + Bisect_error_string(error)); + if(error != BISECT_ERROR_NONE) + { + failed = i + 1; + continue; + } + + /* + * Update the disc property + */ + Disc_parameter(disc,local_parameters[0]) = new_parameter_value; + + /* + * Update secondary properties + */ + if(local_constraints[0] == DISC_CONSTRAINT_F_TO_DISC_F || + local_constraints[0] == DISC_CONSTRAINT_M_TO_DISC_M) + { + /* + * When we update Tvisc0 we must also update disc->F + */ + disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); + } + else if(local_constraints[0] == DISC_CONSTRAINT_J_TO_DISC_J) + { + DISC_OUTER_ZONE(disc)->rend = disc->Rout; + } + + + /* + * Check vs maximum number of iterations + */ + if(bisection_count > maxcount && + converged==FALSE) + { + Discdebug(1, + " >>>>>>> Failed to converge in %ld attempts\n", + maxcount); + failed = 7; + } + + if(DEBUG_BISECTION_LOOP) + { + printf("Bisection loop %ld : converged? %d : failed %d\n", + bisection_count, + converged, + failed); + } + + /* + * Check for convergence + */ + converged = TRUE; + Boolean loop = TRUE; + for(j=0;(j<n && loop==TRUE);j++) + { + if(DEBUG_BISECTION_LOOP) + { + printf("Check constraint %d : conv? %d : residual %g\n", + j, + Disc_constraint_converged(disc,binary,constraints[j]), + Disc_residual(disc,binary,constraints[j])); + } + else + { + Discdebug(1, + "Check constraint %d : %g vs %g : conv? %d : residual %g\n", + j, + Disc_constraint_constant(disc,binary,constraints[j]), + Disc_constraint_value(disc,binary,constraints[j]), + Disc_constraint_converged(disc,binary,constraints[j]), + Disc_residual(disc,binary,constraints[j])); + } + + if(Disc_constraint_converged(disc,binary,constraints[j]) == FALSE) + { + Discdebug(1, + "Constraint failed : set converged = FALSE\n"); + converged = FALSE; + loop = FALSE; + } + } + + Discdebug(1, + "Convd %ld : converged = %d, failed = %d, eps(MJF)=[%g,%g,%g] MJF=[%g,%g,%g] Tvisc0=%g Rin=%g (%g Rsun) Rout=%g (%g Rsun)\n", + bisection_count, + converged, + failed, + Disc_residual(disc,binary,DISC_CONSTRAINT_M_TO_DISC_M), + Disc_residual(disc,binary,DISC_CONSTRAINT_J_TO_DISC_J), + Disc_residual(disc,binary,DISC_CONSTRAINT_F_TO_DISC_F), + disc->M, + disc->J, + disc->F, + disc->Tvisc0, + disc->Rin, + disc->Rin/R_SUN, + disc->Rout, + disc->Rout/R_SUN + ); + + bisection_count++; + } + + + /* + * Set return values + */ + *return_failed = failed ? TRUE : FALSE; + + /* + * Set disc's convergence flag + */ + if(converged == TRUE) + { + disc->converged = TRUE; + + /* + * Check that the inner edge of the disc is not + * inside the binary + */ + if(disc->Rout < binary->separation) + { + Discdebug(1,"\n >>> WARNING : converged disc is all inside the binary orbit (Rout = %g Rsun, a = %g Rsun)\n", + disc->Rout/R_SUN, + binary->separation/R_SUN + ); + } + else if(disc->Rin < binary->separation) + { + Discdebug(1,"\n >>> WARNING : converged disc inner edge (at Rin=%g Rsun) is inside the binary orbit (a=%g Rsun)\n", + disc->Rin / R_SUN, + binary->separation / R_SUN + ); + } + + /* + * Perhaps check for a local minimum in the parameter + * space? + */ + if(0) check_local_minimum(stardata,disc,binary); + } + + return converged; +} + +static double disc_nsector_wrapper(const double x, + void * p) +{ + /* + * Function to be called by generic_bisect() + */ + Discdebug(2,"in disc_nsector_wrapper\n"); + + Map_GSL_params(p,args); + Map_varg(const int,n,args); + Map_varg(const disc_parameter *,local_parameters,args); + Map_varg(const disc_constraint *,local_constraints,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(const struct binary_system_t *,binary,args); + Map_varg(struct stardata_t *,stardata,args); + Map_varg(int *,failed,args); + va_end(args); + + const double parameter_value[1] = { x }; + double residual[1]; + + disc_nsector_wrapper2(n, + parameter_value, + residual, + n, + local_parameters, + local_constraints, + disc, + binary, + stardata, + failed + ); + + ((struct GSL_args_t *)p)->error = *failed; + + Discdebug(2, + "return from disc_nsector_wrapper, failed = %d\n", + *failed); + + return residual[0]; +} + +static void disc_nsector_wrapper2(const int n, + const double * parameter_value, + double * residual, + ...) +{ + /* + * Wrapper function + */ + va_list args; + va_start(args, residual); + disc_nsector(n, + parameter_value, + residual, + args); + va_end(args); +} + +#endif // DISCS diff --git a/src/disc/disc_boundary_conditions.h b/src/disc/disc_boundary_conditions.h new file mode 100644 index 0000000000000000000000000000000000000000..9bcac5f84b2f6c5d1a8d81fe59d9a6929e2938f6 --- /dev/null +++ b/src/disc/disc_boundary_conditions.h @@ -0,0 +1,17 @@ +#pragma once +#ifndef DISC_BOUNDARY_CONDITIONS_H +#define DISC_BOUNDARY_CONDITIONS_H + +/* + * Macros used to define disc boundary conditions + */ + +#define DISC_BOUNDARY_CONDITION_NONE 0 +#define DISC_BOUNDARY_CONDITION_INNER_REVAP_IN 1 +#define DISC_BOUNDARY_CONDITION_INNER_BINARY_TORQUE 2 +#define DISC_BOUNDARY_CONDITION_INNER_DISC_TORQUE 3 +#define DISC_BOUNDARY_CONDITION_OUTER_DISC_ANGULAR_MOMENTUM 4 +#define DISC_BOUNDARY_CONDITION_OUTER_REVAP_OUTER 5 + + +#endif // DISC_BOUNDARY_CONDITIONS_H diff --git a/src/disc/disc_build_disc_zones.c b/src/disc/disc_build_disc_zones.c index 9bb9001cde51fef0c88f6ca6ce336df42b650375..403b72d7397cd8e6fe6016444fb74fb3e0c05645 100644 --- a/src/disc/disc_build_disc_zones.c +++ b/src/disc/disc_build_disc_zones.c @@ -1,31 +1,22 @@ #include "../binary_c.h" #ifdef DISCS -#include "disc.h" int disc_build_disc_zones(struct disc_t * disc, - struct binary_system_t * binary) + const struct binary_system_t * binary) { /* - * Make a new zone list in a disc, - * set the zone radii, - * derive the various power laws in the disc, - * check them for consistency. + * Make a new zone list in a disc and zone it. */ - Boolean new = disc_new_zone_list(disc,binary,disc->thermal_zones); - - if(new == DISC_ZONES_OK) + const Boolean status = disc_new_zone_list(disc,binary,disc->thermal_zones); + + Discdebug(2,"new_zone_list Rin = %g, Rout = %g : ok ? %d\n",disc->Rin,disc->Rout,status); + + if(status == DISC_ZONES_OK) { - if(disc_determine_zone_radii(disc,binary) == TRUE) - { - disc_make_derived_powerlaws(disc,binary); - -#ifdef POWER_LAW_SANITY_CHECKS - check_power_laws(disc,FALSE); -#endif - } + disc_setup_zones(disc,binary); } - return new; + return status; } #endif//DISCS diff --git a/src/disc/disc_calc_disc_structure.c b/src/disc/disc_calc_disc_structure.c index 6cf986591123b94d3859f2c27020ef3a027fca08..277525cdfb8240de9d0b01d1cee47e0a177940ab 100644 --- a/src/disc/disc_calc_disc_structure.c +++ b/src/disc/disc_calc_disc_structure.c @@ -1,3 +1,40 @@ +#include "../binary_c.h" + +#if defined DISCS + +//#undef DISC_DEBUG +//#define DISC_DEBUG 1 + +#define RIN_MIN_BISECT 1 +#define RIN_MIN_QUADSECT 2 + +#include "disc_calc_disc_structure.h" +#include "disc_constraints.h" +#include "disc_boundary_conditions.h" + +/************************************************************ + * disc_calc_disc_structure + * + * Calculate the structure of the disc given the constraints + * mass M, angular momentum J and the flux at the inner edge. + * The flux depends on Rin, J depends on Rout, + * and the mass depends on both, so it's a complicated + * minimization problem which we attempt to solve using GSL's + * appropriate routines. + * + * The method is based on Lipunova's Greens Function solutions to + * the viscous disc equations. See arXiv 1503.09093, also in ApJ. + * + * + * The timestep, ddt (seconds), is passed in so that slow mass + * and angular momentum changes can be performed. If ddt is zero, + * the disc's derivatives + + * returns: CONVERGENCE_SUCCEEDED or CONVERGENCE_FAILED + * depending on whether we can converge on a disc structure, + * or not, respectively. + * + ************************************************************/ /* * TODO @@ -16,91 +53,361 @@ * 4 Forgan and Rice 2011 : disc fragmentation. */ +int disc_calc_disc_structure(const struct binary_system_t * binary, + struct disc_t * disc, + struct stardata_t * stardata, + const double t, + const double ddt) +{ + /* return value */ + int ret = CONVERGENCE_SUCCEEDED; -#include "../binary_c.h" + /* Increase iteration counter */ + disc->iteration++; -#if defined DISCS && defined DISCS_JERMYN + /* start with the prescribed binary torque */ + disc->torqueF = stardata->preferences->cbdisc_torqueF; + + /* take a copy of the disc that was */ + struct disc_t * discwas = New_disc_from(disc); -#ifdef USE_GSL -#include <gsl/gsl_vector.h> -#include <gsl/gsl_multiroots.h> -static int GSL_multiroot(struct stardata_t * stardata, - const int solver, - ...); + /* + * Calculate derivatives and apply mass changes + * only if the previous disc was converged, + * otherwise its structure cannot be trusted. + */ + if(Disc_is_disc(disc) && disc->converged == TRUE) + { + disc_mass_changes(stardata,disc,discwas,binary,1.0,ddt); + + /* + * Overwrite discwas with the new fast-stripped disc, + * with the latest derivatives + */ + Copy_disc(disc,discwas); + } -/* - * I recommend LOG_GSL_PARAMS : this really - * helps convergence when numbers (such as disc->F) - * are very large. - * - * All the numbers are positive, so it should work just fine. - */ -#define LOG_GSL_PARAMS -#endif + /* + * Testing: disc evaporation if wind evaporation lifetime < 1 year + * + * NB we allow edge stripping to be faster. + */ + if(Disc_is_disc(disc) && + IS_NOT_ZERO(disc->t_m) && + IS_NOT_ZERO(stardata->preferences->cbdisc_minimum_evaporation_timescale) && + disc->t_m_slow < stardata->preferences->cbdisc_minimum_evaporation_timescale * YEAR_LENGTH_IN_SECONDS) + { + disc->dM_ejected += -disc->M; + disc->dJ_ejected += -disc->J; + Evaporate_disc(disc, + "Wind will evaporate the disc within 1 year"); + Append_logstring(LOG_DISC, + "Wind will evaporate disc in < %g y (tdisc=%g y, Mdisc=%g %s, Ldisc = %g %s)\n", + stardata->preferences->cbdisc_minimum_evaporation_timescale, + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + Solar(disc->M,R), + Solar(disc_total_luminosity(disc),L) + + ); + } + /* + * if the disc has not evaporated, and enough time has passed, + * calculate its new structure + */ + if(Disc_is_disc(disc)) + { + /* + * set up convergence parameter_types, constraints + * and boundary conditions + */ + disc_parameter * parameter_types; + disc_constraint * constraints; + int n = disc_setup_convergence_parameter_types_and_constraints(stardata, + disc, + binary, + ¶meter_types, + &constraints); -static Boolean check_local_minimum(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary); - + /* start not converged */ + discwas->converged = FALSE; -static int bisection_rooter(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary, - int * return_failed); +#ifdef MEMOIZE + memoize_clear_hash_contents(disc->memo); +#endif + + /* + * Converge, if possible, with the default inner edge torque. + */ + converge_with_torque(n, + parameter_types, + constraints, + binary, + disc, + discwas, + stardata, + t, + &ret); + + +#ifdef DISABLED____ + if(0){ + + /* + * If we found a disc, but the inner edge requires + * shifting, bisect for the appropriate torque. + */ + if(Rin_min_bisect != FALSE) + { + if(Rin_min_bisect == RIN_MIN_BISECT) + { + /* use a bisector : very slow */ + int error; + generic_bisect(&error, + BISECT_USE_MONOCHECKS, + BISECTOR_DISC_RIN_MIN, + &converge_with_torque_wrapper, + disc->torqueF, + DISC_MINIMUM_TORQUE, + DISC_MAXIMUM_TORQUE, + DISC_TORQUEF_TOLERANCE, + DISC_BISECTION_TORQUEF_MAX_ITERATIONS, + DISC_BISECTION_TORQUEF_USELOG, + 1.0, + n, + parameter_types, + constraints, + binary, + disc, + discwas, + stardata, + t, + &ret, + &Rin_min_bisect); + + if(error != BISECT_ERROR_NONE) + { + ret = CONVERGENCE_FAILED; + disc->converged = FALSE; + Discdebug(1, + "bisect on torquef failed: generic bisect error %d\n", + error); + } + else + { + /* + * NB here you should NOT check that Rin >= Rin_min + * because it might not be. In fact, it should be Rin_min + * within a small tolerance which is NOT the same as the + * torquef tolerance (because the problem is non-linear). + */ + if(disc->converged) + { + ret = CONVERGENCE_SUCCEEDED; + disc_calculate_derived_variables(disc,binary); + Discdebug(1, + "bisect on torquef succeeded : Rin = %g, Rin_min = %g\n", + disc->Rin/R_SUN, + disc->Rin_min/R_SUN + ); + } + else + { + ret = CONVERGENCE_FAILED; + disc->converged = FALSE; + Discdebug(1, + "bisect on torquef failed: converged = %s, Rin>Rinmin = %s (%g,%g) %d ? Rout = %g\n", + True_or_false(disc->converged), + True_or_false(MORE_OR_EQUAL(disc->Rin,disc->Rin_min)), + disc->Rin, + disc->Rin_min, + disc->Rin > disc->Rin_min, + disc->Rout + ); + } + } + } + else + { + /* + * Use a quadsector with the GSL routines: + * this usually works and is very fast + */ + converge_with_torque(n, + parameter_types, + constraints, + binary, + disc, + discwas, + stardata, + t, + &ret, + &Rin_min_bisect); + } + } + + } +#endif // DISABLED + /* + * Calculate derived variables + */ + if(disc->converged) + { + disc_calculate_derived_variables(disc,binary); + } + + + Discdebug(1,"disc_calc_disc_structure->%s ret %d (%s)\n", + True_or_false(disc->converged), + ret, + Convergence_status(disc->converged)); -//#define CONVERGENCE_LOG + /* + * Check convergence status + */ + disc_convergence_status("calc_structure_return",disc,binary); -#define NEW_BISECTION + /* + * Check the solution is a local minimum + */ + if(0 && disc->converged) + { + check_local_minimum(stardata,disc,binary); + } -#ifdef USE_GSL -#define USE_GSL_ROOTER -#endif +#ifdef DISC_SAVE_EPSILONS + /* + * Save epsilons for later logging + */ + if(disc->converged) + { + int i; + for(i=0;i<DISC_NUMBER_OF_CONSTRAINTS;i++) + { + disc->epsilon[i] = Disc_residual(disc, + binary, + i); -/* remove this eventually */ -#define WRONG_INITIAL_GUESS +#ifdef DISC_RESIDUAL_WARNING + if(i<4 && // what is wrong with residual 5? + disc->epsilon[i] > DISC_RESIDUAL_WARNING_THRESHOLD + ) + { + fprintf(stderr, + "Warning : disc residual (# %d) is %g which exceeds threshold for warning %g\n", + i, + disc->epsilon[i], + DISC_RESIDUAL_WARNING_THRESHOLD); + } +#endif // DISC_EPSILON_WARNING + } + } +#endif//DISC_LOG + + /* + * Free allocated memory + */ + disc_free_convergence_parameter_types_and_constraints(¶meter_types, + &constraints); + } -static int testfunc(const gsl_vector * x, - void * p, - gsl_vector * f); -/* - * Adam Jermyn's circumbinary disc library, adapted from his - * Python module. - * - * This is based on Lipunova's Greens Function solutions to - * the viscous disc equations. See arXiv 1503.09093, also in ApJ. - */ + + if(disc->converged) + { + /* + * Set M, J, F etc. to their converged values + * as given by integrals over the disc structure. + * + * TOOD set Rin Rout when required + */ + disc->M = Disc_constraint_value(disc,binary,DISC_CONSTRAINT_M_TO_DISC_M); + disc->J = Disc_constraint_value(disc,binary,DISC_CONSTRAINT_J_TO_DISC_J); + disc->F = Disc_constraint_value(disc,binary,DISC_CONSTRAINT_F_TO_DISC_F); + } -#include "disc.h" -/************************************************************ - * disc static structure calculation - ************************************************************/ + /* + * free memory and return + */ + Safe_free(discwas); -int disc_calc_disc_structure(struct binary_system_t * binary, - struct disc_t * disc, - struct stardata_t * stardata, - const double t) + return ret; +} +#ifdef DISABLED____ -{ +static double converge_with_torque_wrapper(const double torquef, + void * p) +{ /* - * Calculate the structure of a disc + * Map between va_args and the converge_with_torque function */ - int ret; // return value - struct disc_t * discwas = MALLOC(sizeof(struct disc_t)); - memcpy(discwas,disc,sizeof(struct disc_t)); - discwas->converged = FALSE; + Map_GSL_params(p,args); + Map_varg(const int,n,args); + Map_varg(const disc_parameter *,parameter_types,args); + Map_varg(const disc_constraint *,constraints,args); + Map_varg(const struct binary_system_t *,binary,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct disc_t *,discwas,args); + Map_varg(struct stardata_t *,stardata,args); + Map_varg(const double, t,args); + Map_varg(int *,ret,args); + //Map_varg(Boolean *,Rin_min_bisect,args); + va_end(args); + + disc->torqueF = torquef; + discwas->torqueF = torquef; + double x = converge_with_torque(n, + parameter_types, + constraints, + binary, + disc, + discwas, + stardata, + t, + ret + //,Rin_min_bisect + ); + + return x; +} +#endif + +static double converge_with_torque(const int n, + const disc_parameter * parameter_types, + const disc_constraint * constraints, + const struct binary_system_t * binary, + struct disc_t * disc, + struct disc_t * discwas, + struct stardata_t * stardata, + const double t, + int * ret + //,Boolean * Rin_min_bisect, + ) +{ Discdebug(2, - "STRUCT visc0=%g Rout=%g F=%g Jdot(evap)=%g\n", + "converge with torque disc=%p discwas=%p stardata=%p visc0=%g Rout=%g F=%g torqueF=%g Jdot(evap)=%g ret=%p \n", + disc, + discwas, + stardata, disc->Tvisc0, disc->Rout, disc->F, - disc->Jdot_evap); + disc->torqueF, + disc->F_stripping_correction, + ret + //,Rin_min_bisect + ); - double Rring = disc_ring_radius(disc,binary); + /* Ring radius : useful for a quick check on stability */ + const double Rring = disc_ring_radius(disc,binary); + Discdebug(1, + "Rring = %g Rsun cf a = %g Rsun\n", + Rring/R_SUN, + binary->separation / R_SUN); + Discdebug(2, "RING (M=%g Msun, J=%g) RADIUS %g Rsun cf. separation %g\n", disc->M/M_SUN, @@ -113,6 +420,11 @@ int disc_calc_disc_structure(struct binary_system_t * binary, disc->Rin, disc->Rout); + /* + * Start unconverged + */ + disc->converged = FALSE; + /* * If the ring sits inside the binary * then the disc cannot be stable. @@ -120,21 +432,23 @@ int disc_calc_disc_structure(struct binary_system_t * binary, * NB this check should not be required if the * "too ringlike" check is also enabled. */ - if(1 && Rring < binary->separation) + if(stardata->preferences->cbdisc_fail_ring_inside_separation && + Rring < binary->separation) { - Discdebug(1,"->Ring(%g)<a(%g)->fail ", + Discdebug(1,"->Ring(%g)<a(%g)->fail\n", Rring/R_SUN, binary->separation/R_SUN ); - disc->converged = FALSE; - ret = CONVERGENCE_FAILED; + *ret = CONVERGENCE_FAILED; } else { + /* debug */ + if(Disc_do_debug(3)) { double _M = disc_total_mass(disc); double _J = disc_total_angular_momentum(disc,binary); - double _F = disc_total_angular_momentum_flux(disc,binary); + double _F = disc_total_angular_momentum_flux_from_binary(disc,binary); double _epsM = fabs(disc->M/MAX(_M,1e-100)-1.0); double _epsJ = fabs(disc->J/MAX(_J,1e-100)-1.0); double _epsF = fabs(disc->F/MAX(_F,1e-100)-1.0); @@ -167,7 +481,7 @@ int disc_calc_disc_structure(struct binary_system_t * binary, disc->Rout, "*","*","*","0","0","I" ); -#endif +#endif // CONVERGENCE_LOG /* * At this point, disc->M, disc->J and disc->F @@ -178,458 +492,429 @@ int disc_calc_disc_structure(struct binary_system_t * binary, */ Discdebug(2,"enter convergence loop\n"); - - disc->converged = FALSE; - - /* - * Guess for Tvisc0, Rin and Rout - */ - Boolean have_previous_disc = IS_NOT_ZERO(discwas->Rin); - - double guesses[DISC_SOLVER_NGUESSES][3]; - memset(guesses, 0, DISC_SOLVER_NGUESSES * 3 * sizeof(double)); - + /* - * First guess is the previous disc + * Guesses for the disc structure. */ - if(have_previous_disc) - { - guesses[0][0] = discwas->Tvisc0; - guesses[0][1] = discwas->Rin; - guesses[0][2] = discwas->Rout; - } + double initial_guesses[DISC_SOLVER_NINITIAL_GUESSES+1][n]; + memset(initial_guesses, + 0, + (DISC_SOLVER_NINITIAL_GUESSES+1)*n*sizeof(double)); + disc_set_disc_initial_guesses(n, + parameter_types, + initial_guesses, + stardata, + disc, + discwas, + binary, + Rring); - /* - * Second guess is based on Rring and the separation - */ - guesses[1][0] = 1e17; - guesses[1][1] = Rring * 2.0; - guesses[1][2] = MAX(guesses[1][1]*10.0, - binary->separation*1e3); /* - * Very large parameter space + * Choose to use the previously succesful solver + * first. On the first timestep, + * disc->solver == DISC_SOLVER_NONE */ - guesses[2][0] = 1e-10;//1e20; - guesses[2][1] = 1.0; - guesses[2][2] = MAX(guesses[1][1]*10.0, - binary->separation*1e10); - - /* - guesses[2][0]=4.0e15; - guesses[2][1]=3.0e19; - guesses[2][2]=3.5e19; - - guesses[0][0] = 6.95712e+16; - guesses[0][1] = 4.70627e+12; - guesses[0][2] = 6.4638e+15; - */ + int solvers[DISC_SOLVER_NSOLVERS+1] = { + disc->solver, + DISC_SOLVER_ORDERED_LIST + }; /* - * Third guess is a radiative disc + * Every DISC_SOLVER_RESET_MODULO iterations, + * or if we have yet to complete DISC_SOLVER_RESET_MIN iterations, + * or if DISC_SOLVER_RESET_MODULO is zero, + * switch back to the default list which prioritises GSL solvers. + * This means things should (on average) move + * more quickly. */ - if(have_previous_disc) + if(DISC_SOLVER_RESET_MODULO == 0 || + disc->iteration % DISC_SOLVER_RESET_MODULO == 0 || + disc->iteration < DISC_SOLVER_RESET_MIN) { - disc_initial_radiative_guesses(binary,disc); - guesses[3][0] = disc->Tvisc0; - guesses[3][1] = disc->Rin; - guesses[3][2] = disc->Rout; + /* + * Reset the solver list. + */ + solvers[0] = DISC_SOLVER_NONE; } else { - disc->Rin = 2.0 * binary->separation; - disc->Rout = 1e3 * disc->Rin; - disc->Tvisc0 = 1e15; - disc_initial_radiative_guesses(binary,disc); - guesses[3][0] = disc->Tvisc0; - guesses[3][1] = disc->Rin; - guesses[3][2] = disc->Rout; + + /* + * Do not allow a solver to be attempted twice. + * DISC_SOLVER_NONE is simply ignored. + */ + int i; + for(i=1;i<DISC_SOLVER_NSOLVERS+1;i++) + { + if(solvers[i] == disc->solver) + { + solvers[i] = DISC_SOLVER_NONE; + break; + } + } } - + + int iguess, isolver; + Boolean failed = FALSE; + + struct solver_guess_pair_t { + int isolver; + int iguess; + Boolean monte_carlo; + }; + struct solver_guess_pair_t * solver_guess_pairs = NULL; + int npairs = 0; - int solvers[DISC_SOLVER_NSOLVERS] = {DISC_SOLVER_ORDERED_LIST}; - -//#define SOLVER_STATS -#ifdef SOLVER_STATS - struct disc_t * first_solution = NULL ; - static int solver_stats[DISC_SOLVER_NSOLVERS][DISC_SOLVER_NGUESSES][2]; - static int solver_stats_set = 0; - if(solver_stats_set == 0) - { - memset(solver_stats, 0, DISC_SOLVER_NSOLVERS * DISC_SOLVER_NGUESSES * 2 * sizeof(int)); - solver_stats_set = 1; + /* + * Make a list of {isolver, iguess} pairs + * + * First, we loop over the solvers going through the + * guesses but not the monte carlo options. + * + * Then we add monte carlo options as a fallback, + * because they are very slow. + */ + +#define Add_pair(ISOLVER,IGUESS,MC) \ + { \ + npairs ++; \ + solver_guess_pairs = \ + REALLOC(solver_guess_pairs, \ + sizeof(struct solver_guess_pair_t) * npairs); \ + struct solver_guess_pair_t * pair = \ + solver_guess_pairs + npairs - 1; \ + pair->isolver = (ISOLVER); \ + pair->iguess = (IGUESS); \ + pair->monte_carlo = (MC); \ } -#endif // SOLVER_STATS + - int iguess, isolver, failed = 0; - for(iguess=0; (iguess < DISC_SOLVER_NGUESSES && disc->converged==FALSE); iguess++) + /* + * Non-monte-carlo attempts + */ + for(isolver=0; + (isolver < (DISC_SOLVER_NSOLVERS+1) && disc->converged==FALSE); + isolver++) { - Discdebug(1, - "Try initial guess %d : Tvisc0 = %g, Rin = %g, Rout = %g\n", - iguess, - guesses[iguess][0], - guesses[iguess][1], - guesses[iguess][2]); - for(isolver=0; (isolver < DISC_SOLVER_NSOLVERS && disc->converged==FALSE); isolver++) + if(isolver != DISC_SOLVER_NONE) { - if(IS_NOT_ZERO(guesses[iguess][0])) + for(iguess=0; + iguess < DISC_SOLVER_NINITIAL_GUESSES; + iguess++) { - int solver = solvers[isolver]; - - /* restore the old disc */ - memcpy(disc,discwas,sizeof(struct disc_t)); - - /* save solver and guess number for later logging */ - disc->solver = solver; - disc->guess = iguess; - - /* set the initial guess */ - disc->Tvisc0 = guesses[iguess][0]; - disc->Rin = guesses[iguess][1]; - disc->Rout = guesses[iguess][2]; - - Discdebug(1,"S%s[%g,%g,%g]->", - Solver_string(solver), - disc->Tvisc0, - disc->Rin, - disc->Rout); - Discdebug(2,"Call solver %s [%g,%g,%g]\n", - Solver_string(solver), - disc->Tvisc0, - disc->Rin, - disc->Rout); - - /* solve */ - if(solver == DISC_SOLVER_BISECTION) - { - /* - * Bisect then refine with GSL - */ - disc->converged = bisection_rooter(stardata, - disc, - binary, - &failed); - } - else - { - /* - * Pure GSL solution - */ -#ifdef USE_GSL_ROOTER - disc->converged = GSL_multiroot(stardata, - solver, - disc, - binary); -#endif//USE_GSL_ROOTER - } - Discdebug(1,"%s[%g,%g,%g]", - disc->converged==TRUE ? "converged" : "fail", - disc->Tvisc0, - disc->Rin, - disc->Rout - ); - - if(disc->converged == TRUE) - { - /* - * Check flux constraint - */ - double Fc = disc_total_angular_momentum_constraint(disc,binary); - if(fabs(Fc-1.0) > 1e-1) - { - //disc->converged = FALSE; - Discdebug(1,"FluxFail"); - } - } - Discdebug(1," "); - - if(disc->converged == TRUE) - { - /* - * Ring detection parameter - */ - disc->fRing = fabs(disc->Rout/disc->Rin - 1.0); - } - -#ifdef SOLVER_STATS - if(disc->converged == TRUE) - { - /* update stats */ - solver_stats[isolver][iguess][1] ++; - /* force recalculation */ - disc->converged = FALSE; - - /* - * Save first converged solution - */ - if(first_solution == NULL) - { - printf("Save first solution %g %g %g\n", - disc->Tvisc0, - disc->Rin, - disc->Rout); - first_solution = MALLOC(sizeof(struct disc_t)); - memcpy(first_solution,disc,sizeof(struct disc_t)); - } - else - { -#define EPS(A) (fabs((disc->A - first_solution->A)/MAX(1e-100,first_solution->A))) - double maxeps = MAX3(EPS(Tvisc0), - EPS(Rin), - EPS(Rout)); - - printf("CF first solution %g\n", - maxeps - ); - - if(0 && maxeps>1e-5) - { - printf("OOPS maxeps > 1e-5\n\n\n"); - printf("First converged\n\n"); - disc_show_disc(first_solution,binary); - printf("\n\nLatest\n\n"); - disc_show_disc(disc,binary); - printf("Exit because solutions disagreed by maxeps = %g\n",maxeps); - fflush(stdout); - _exit(0); - } - } - } - else + if(IS_NOT_ZERO(initial_guesses[iguess][0])) { - /* update stats */ - solver_stats[isolver][iguess][0] ++; + Add_pair(isolver, + iguess, + FALSE); } -#endif } - } // isovler - } // iguess - -#ifdef SOLVER_STATS - /* output stats */ - printf("\n%10s %10s %10s %10s\n", - "Guess", - "Solver", - "Success", - "Fail"); - for(iguess=0; iguess < DISC_SOLVER_NGUESSES; iguess++) - { - for(isolver=0; isolver < DISC_SOLVER_NSOLVERS; isolver++) - { - int solver = solvers[isolver]; - printf("% 10d : %10s : % 10d : % 10d\n", - iguess, - Solver_string(solver), - solver_stats[isolver][iguess][1], - solver_stats[isolver][iguess][0]); } } - /* restore first converged solution if we have one */ - if(first_solution != NULL) - { - printf("Restore solution %g %g %g\n", - disc->Tvisc0, - disc->Rin, - disc->Rout); - memcpy(disc,first_solution,sizeof(struct disc_t)); - Safe_free(first_solution); - disc->converged = TRUE; - } -#endif - - -//#define OLDCODE -#ifdef OLDCODE -#ifdef USE_GSL_ROOTER - Discdebug(2,"Trying hybrids\n"); - - if(disc->converged == FALSE && have_previous_disc) - { - disc->Rin = discwas->Rin; - disc->Rout = discwas->Rout; - disc->Tvisc0 = discwas->Tvisc0; - - Discdebug(1,"Hs[%g,%g,%g]->",disc->Tvisc0,disc->Rin,disc->Rout); - disc->converged = GSL_multiroot(stardata, - GSL_MULTIROOT_FSOLVER_HYBRIDS, - disc, - binary); - disc_convergence_status("post-hybrids",disc,binary); - Discdebug(1, "%s ", - disc->converged==TRUE ? "converged" : "fail"); - } - - if(disc->converged == FALSE) + /* + * Add monte-carlo fallback attempts + */ + if(stardata->preferences->disc_n_monte_carlo_guesses > 0) { - disc->Rout = binary->separation*1e2; - disc->Rin = Rring * 2.0; - disc->Tvisc0 = 1e17; - Discdebug(1,"Hs2[%g,%g,%g]->",disc->Tvisc0,disc->Rin,disc->Rout); - disc->converged = GSL_multiroot(stardata, - GSL_MULTIROOT_FSOLVER_HYBRIDS, - disc, - binary); - disc_convergence_status("post-hybrids try again",disc,binary); - Discdebug(1,"%s ", - disc->converged==TRUE ? "converged" : "fail"); + for(isolver=0; + (isolver < (DISC_SOLVER_NSOLVERS+1) && disc->converged==FALSE); + isolver++) + { + if(isolver != DISC_SOLVER_NONE) + { + Add_pair(isolver, + 0, // guess is irrelevant + TRUE); + } + } } - if(disc->converged==FALSE && have_previous_disc) - { - disc_initial_radiative_guesses(binary,disc); - Discdebug(1,"Hs3[%g,%g,%g]->",disc->Tvisc0,disc->Rin,disc->Rout); - disc->converged = GSL_multiroot(stardata, - GSL_MULTIROOT_FSOLVER_HYBRIDS, - disc, - binary); - disc_convergence_status("post-hybrids try again",disc,binary); - Discdebug(1,"%s ", - disc->converged==TRUE ? "converged" : "fail"); - } - - if(disc->converged == FALSE && have_previous_disc) - { - Discdebug(2,"Trying hybrid\n"); - disc->Rin = discwas->Rin; - disc->Rout = discwas->Rout; - disc->Tvisc0 = discwas->Tvisc0; - Discdebug(1,"H[%g,%g,%g]->",disc->Tvisc0,disc->Rin,disc->Rout); - disc->converged = GSL_multiroot(stardata, - GSL_MULTIROOT_FSOLVER_HYBRID, - disc, - binary); - disc_convergence_status("post-hybrid",disc,binary); - Discdebug(1,"%s ", - disc->converged == TRUE ? "converged" : "fail"); - } - - if(disc->converged == FALSE) - { - disc->Rout = binary->separation*1e2; - disc->Rin = Rring * 2.0; - disc->Tvisc0 = 1e17; - Discdebug(1,"H2[%g,%g,%g]->",disc->Tvisc0,disc->Rin,disc->Rout); - disc->converged = GSL_multiroot(stardata, - GSL_MULTIROOT_FSOLVER_HYBRID, - disc, - binary); - disc_convergence_status("post-hybrid try again",disc,binary); - Discdebug(1,"%s ", - disc->converged==TRUE ? "converged" : "fail"); - } - - if(disc->converged==FALSE && have_previous_disc) - { - disc_initial_radiative_guesses(binary,disc); - Discdebug(1,"H3[%g,%g,%g]->",disc->Tvisc0,disc->Rin,disc->Rout); - disc->converged = GSL_multiroot(stardata, - GSL_MULTIROOT_FSOLVER_HYBRID, - disc, - binary); - disc_convergence_status("post-hybrid try again",disc,binary); - Discdebug(1,"%s ", - disc->converged==TRUE ? "converged" : "fail"); - } - - - failed = disc->converged==TRUE ? 0 : 1; - Discdebug(2,"failed? %d\n",failed); -#endif //USE_GSL_ROOTER - /* - * But, if it fails, use the old bisection routine - * and then refine with the GSL routine. + * Loop over {guess,solver} pairs */ - if(disc->converged == FALSE) + int npair = 0; + int i_monte_carlo = 0; + while(npair < npairs && disc->converged == FALSE) { - Discdebug(2,"Trying triple bisection\n"); - disc->converged = bisection_rooter(stardata,disc,binary,&failed); - Discdebug(1, - "bisection->%s ", - disc->converged==TRUE ? "converged" : "fail"); + struct solver_guess_pair_t * pair = solver_guess_pairs + npair; + isolver = pair->isolver; + iguess = pair->iguess; - if(disc->converged == FALSE) - { - Discdebug(2,"Triple bisection failed\n"); - } - else + int solver = solvers[isolver]; + + if(pair->monte_carlo) { - Discdebug(2,"Triple bisection succeeded!\n"); - disc_convergence_status("post-triple-bisection",disc,binary); + /* + * Do disc_n_monte_carlo_guesses random guesses + */ + if(++i_monte_carlo < stardata->preferences->disc_n_monte_carlo_guesses) + { + /* + * Keep looping + */ + npair--; + + /* + * Set monte carlo guess + */ + disc_set_monte_carlo_guess(stardata, + parameter_types, + disc, + n, + &initial_guesses[iguess][0]); + } + else + { + i_monte_carlo = 0; + } } - if(disc->converged == TRUE) - { -#ifdef USE_GSL - GSL_multiroot(stardata, - GSL_MULTIROOT_FSOLVER_HYBRIDS, - disc, - binary); - disc_convergence_status("GSL-refined",disc,binary); -#endif + Discdebug(1, + "Solver %d (cf %d), test %g\n", + solver, + DISC_SOLVER_NONE, + initial_guesses[iguess][0]); + /* debug */ + Discdebug(1, + "Try initial guess %d\n", + iguess); + + /* restore the old disc */ + Copy_disc(discwas,disc); + /* save solver and guess number for later logging */ + disc->solver = solver; + disc->guess = iguess; + + /* set the initial guess number iguess */ + disc_set_disc_initial_guess(disc, + iguess, + n, + parameter_types, + initial_guesses); + + Discdebug(1, + "Guess : Tvisc0 = %g, Rin = %g, Rout = %g\n", + disc->Tvisc0, + disc->Rin, + disc->Rout) + + if(solver != DISC_SOLVER_BISECTION) + { + /* + * Solve using GSL : this is + * the recommended option + */ Discdebug(1, - "Hs->refine->%s ", - disc->converged == TRUE ? "ok" : "fail"); + "Call GSL multiroot solver %d = %s\n", + solver, + GSL_Multiroot_fsolver_string(solver)); + int fail = 0; + disc->converged = disc_GSL_multiroot(solver, + n, + parameter_types, + constraints, + disc, + binary, + stardata, + &fail + ); } - } -#endif // OLDCODE + else + { + /* + * Bisect : slow but steady + */ + disc->converged = FALSE; + + Discdebug(1, + "calc_disc_structure : need to bisect, this is bad (converged? %d)\n", + disc->converged); + + disc->converged = disc_bisection_rooter(n, + parameter_types, + constraints, + stardata, + disc, + binary, + &failed); + /* + * Debugging: + * now see if the GSL rooter works, + * then exit + */ + if(0) + { + solver = GSL_MULTIROOT_FSOLVER_HYBRIDS; + Boolean fail = FALSE; + disc->converged = disc_GSL_multiroot(solver, + n, + parameter_types, + constraints, + disc, + binary, + stardata, + &fail + ); + Exit_binary_c_no_stardata(0, + "Exit after seeing if the GSL rooter works from a bisected solution"); + } + } + + { + /* debug */ + Discdebug_plain(1, + "%s[", + disc->converged==TRUE ? "converged" : "fail"); + int i; + double unknown MAYBE_UNUSED = UNUSED_FLOAT; + for(i=0;i<n;i++) + { + Discdebug_plain(1, + "%s=%g%s", + Disc_parameter_string(parameter_types[i]), + Disc_parameter(disc,parameter_types[i]), + ((i==n-1) ? "," : "]")); + } + } + + Discdebug_plain(1,"\n"); + if(disc->converged == TRUE) + { + /* + * Ring detection parameter + */ + disc->fRing = fabs(disc->Rout/disc->Rin - 1.0); + Discdebug(1, + "fRing = %g\n", + disc->fRing); + + if(IS_ZERO(disc->lifetime)&&IS_ZERO(t)) + Append_logstring(LOG_DISC, + "CONVERGED t=%g iguess=%d solver=%d MC=%d : ", + disc->lifetime, + iguess, + solver, + i_monte_carlo + ); + } + + /* + * Try the next solution pair + */ + npair++; + } // loop over {guess,solver} pairs + + Safe_free(solver_guess_pairs); + /* * We must have converged M, J and F, or failed */ if(disc->converged == FALSE) { Discdebug(1, - "Fail %d : M=%g J=%g F=%g ", + "Fail %d : M=%g J=%g F=%g\n", failed, disc->M, disc->J, disc->F); - ret = CONVERGENCE_FAILED; + *ret = CONVERGENCE_FAILED; } else { - if(SHOW_CONVERGED_DISC_STRUCTURE) + /* + * Converged disc. + */ + *ret = CONVERGENCE_SUCCEEDED; + + /* + * Show disc if required + */ + if(SHOW_CONVERGED_DISC_STRUCTURE && + Disc_is_disc(disc)) disc_show_disc(disc,binary); - ret = CONVERGENCE_SUCCEEDED; #ifdef CONVERGENCE_LOG if(convlog_fp)fclose(convlog_fp); printf("convergence log active : exiting here\n"); - fflush(NULL); - _exit(0); -#endif + Exit_binary_c_no_stardata(0,"Exit after convergence log\n"); +#endif//CONVERGENCE_LOG } } + return 0.0; - Discdebug(1,"disc_calc_disc_structure->%s ", - True_or_false(disc->converged)); - Discdebug(2, - "RET %d (%s) -> ", - ret, - Convergence_status(disc->converged)); - disc_convergence_status("calc_structure_return",disc,binary); - Safe_free(discwas); +#ifdef OLDCODE + /* + * Perhaps adapt the torque to fix Rin >= Rin_min + */ + Boolean adapt_torque = + Disc_is_disc(disc) + && + IS_NOT_ZERO(disc->Rin_min) + && + disc->converged == TRUE + && + IS_NOT_ZERO(disc->lifetime) + && + (*Rin_min_bisect != FALSE || + disc->Rin < disc->Rin_min); + Discdebug(2, + "adapt torque? %d %d %d (%d || %d) -> %d (Rin = %g, Rin_min = %g)\n", + IS_NOT_ZERO(disc->Rin_min), + disc->converged == TRUE, + IS_NOT_ZERO(disc->lifetime), + *Rin_min_bisect != FALSE, + disc->Rin < disc->Rin_min, + adapt_torque, + disc->Rin/R_SUN, + disc->Rin_min/R_SUN + ); + if(adapt_torque) + { + /* + * Increase the torque on the disc + * to prevent flow back into L2 + */ + //*Rin_min_bisect = RIN_MIN_BISECT; + *Rin_min_bisect = RIN_MIN_QUADSECT; + Discdebug( + 1, + "Set Rin_min_bisect TRUE (Rin = %g < Rin_min = %g\n", + disc->Rin, + disc->Rin_min + ); - if(0 && disc->converged) + /* + * return convergence parameter + * (when d=0, it is converged) + */ + double d = disc->Rin/disc->Rin_min - 1.0; +#ifdef DISC_LOG + disc->epstorquef = d; +#endif + return d; + } + else { - check_local_minimum(stardata,disc,binary); +#ifdef DISC_LOG + disc->epstorquef = 0.0; +#endif + return 0.0; } - - return ret; +#endif // OLDCODE } #ifdef USE_GSL -static int GSL_multiroot(struct stardata_t * stardata, - const int solver, - ...) +static int disc_GSL_multiroot(const int solver, + ...) { /* * See if we can converge with the (superfast) GSL solver. @@ -645,37 +930,45 @@ static int GSL_multiroot(struct stardata_t * stardata, * * But, in general, HYBRID(S) are the most (only?) stable options. */ - va_list args; - - /* get disc and binary structs and then reset the args list */ - va_start(args,solver); - struct disc_t * disc = va_arg(args, struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t *); + int i; + va_list args,args_master; + va_start(args_master,solver); + + /* get parameter_types and required structs from args */ + va_copy(args,args_master); + Map_varg(const int MAYBE_UNUSED, n,args); + Map_varg(const disc_parameter * MAYBE_UNUSED,parameter_types,args); + Map_varg(const disc_constraint * MAYBE_UNUSED, constraints,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(const struct binary_system_t *,binary,args); + Map_varg(struct stardata_t *,stardata,args); + Map_varg(int * MAYBE_UNUSED,fail,args); va_end(args); - va_start(args,solver); + + /* reuse args */ + va_copy(args,args_master); Discdebug(2, - "************************************************************\ntrying GSL multiroot solver %d (%s)\nDISC = %p, BINARY = %p\nTvisc0 = %g, Rin = %g, Rout = %g\n", + "************************************************************\ntrying GSL multiroot solver %d (%s)\nDISC = %p, BINARY = %p\nTvisc0 = %g, Rin = %g, Rout = %g, torqueF = %g\n", solver, GSL_Multiroot_fsolver_string(solver), disc, binary, disc->Tvisc0, disc->Rin, - disc->Rout); - + disc->Rout, + disc->torqueF); /* * Allocate and set up the solver routine(s) */ - const size_t n = 3; const gsl_multiroot_fsolver_type * T = GSL_Multiroot_fsolver(solver); - /* * Check the solver is valid */ +#ifdef ALLOC_CHECKS if(T == NULL) { Exit_binary_c(ALGORITHM_BRANCH_FAILURE, @@ -683,9 +976,10 @@ static int GSL_multiroot(struct stardata_t * stardata, solver, T); } +#endif // ALLOC_CHECKS gsl_multiroot_fsolver * s - = GSL_multiroot_fsolver_ALLOC (T, n); + = GSL_multiroot_fsolver_ALLOC (T, (size_t) n); Discdebug(2,"Allocated s = %p s->x = %p\n",s,s->x); @@ -695,48 +989,39 @@ static int GSL_multiroot(struct stardata_t * stardata, Exit_binary_c(ALLOC_FAILED, "Failed to allocated memory for GSL multiroot fsolver\n"); } -#endif +#endif//ALLOC_CHECKS /* * Set up the test function */ - gsl_multiroot_function F; - F.f = &testfunc; - F.n = n; - F.params = &args; + gsl_multiroot_function * F = MALLOC(sizeof(gsl_multiroot_function)); + F->f = &GSL_multiroot_testfunc; + + /* + * Set the number of dimensions based on whether + * we fix Rin or Rout or both, and whether Rin or Rout + * are growing or shrinking. + * + * Or, perhaps the Jacobian is well behaved when it + * is constant everywhere? hmm. maybe. maybe not. + */ + + F->n = (size_t) n; + F->params = &args; /* * Set up the initial guess vector */ gsl_vector * guess_vector = New_GSL_vector(n); -#ifdef ALLOC_CHECKS - if(guess_vector == NULL) + double unknown = 0.0; + for(i=0;i<n;i++) { - Exit_binary_c(ALLOC_FAILED, - "Failed to allocated memory for GSL multiroot guess vector\n"); + gsl_vector_set( + guess_vector, + (size_t)i, + (double)Disc_parameter(disc,parameter_types[i]) + ); } -#endif - -#ifdef LOG_GSL_PARAMS - Set_GSL_vector(guess_vector, - log10(disc->Tvisc0/TSCALE), - log10(disc->Rin/RSCALE), - log10(disc->Rout/RSCALE)); -#else - Set_GSL_vector(guess_vector, - disc->Tvisc0/TSCALE, - disc->Rin/RSCALE, - disc->Rout/RSCALE); -#endif - Discdebug(2, - "Initial guess Tvisc0 = %g, Rin = %g, Rout = %g : vector %g %g %g\n", - disc->Tvisc0, - disc->Rin, - disc->Rout, - gsl_vector_get(guess_vector,0), - gsl_vector_get(guess_vector,1), - gsl_vector_get(guess_vector,2) - ); /* * set up the solver function @@ -744,9 +1029,9 @@ static int GSL_multiroot(struct stardata_t * stardata, int iter = 0; Discdebug(2,"\n\nSetting up multiroot fsolver\n"); int status = gsl_multiroot_fsolver_set(s, - &F, + F, guess_vector); - Discdebug(2,"Solver is set up, status %d s=%p s->x=%p\n\n\n",status,s,s->x); + Discdebug(2,"Solver is set up, status %d s=%p s->x=%p, F=%p\n\n\n",status,s,s->x,F); if(status != 0) { @@ -767,7 +1052,6 @@ static int GSL_multiroot(struct stardata_t * stardata, */ double tol = DISC_TOLERANCE; - status = gsl_multiroot_test_residual (s->x, tol); @@ -784,26 +1068,31 @@ static int GSL_multiroot(struct stardata_t * stardata, * Further convergence required */ status = GSL_CONTINUE; + do { - double residual[n],state[n]; iter++; - if(0)printf("GSL iterate loop iter=%d s->x = %p\n", - iter, - s->x); - Get_GSL_vector_array(s->x,state); Discdebug(2, - "Call gsl_multiroot_fsolver_iterate (s=%p s->x=%p state is %g, %g, %g, state[] gives Tvisc0 = %g Rin = %g Rout = %g)\n", + "Call gsl_multiroot_fsolver_iterate s=%p s->x=%p s->f=%p : ", s, s->x, - gsl_vector_get(s->x,0), - gsl_vector_get(s->x,1), - gsl_vector_get(s->x,2), - state[0], - state[1], - state[2] + s->f); + for(i=0;i<n;i++) + { + Discdebug_plain(2, + "%s = %g ", + Disc_parameter_string(i), + gsl_vector_get(s->x,i)); + } + + Discdebug_plain(2, + ": args=%p disc->Rin = %g disc->Rout = %g", + args, + disc->Rin, + disc->Rout ); + status = gsl_multiroot_fsolver_iterate(s); /* @@ -811,16 +1100,19 @@ static int GSL_multiroot(struct stardata_t * stardata, * has gone very wrong and we should bail as * soon as possible. */ - if(isnan(state[0]) || - isnan(state[1]) || - isnan(state[2])) + for(i=0;i<n;i++) { - status = 1; // force dump out + if(unlikely(isnan(gsl_vector_get(s->x,i)))) + { + status = 1; + break; + } } /* check for problems */ - Discdebug(2, - "gsl_multiroot_fsolver_iterate status %d\n",status); + Discdebug_plain(2, + "gsl_multiroot_fsolver_iterate status %d\n", + status); if(status != 0) { @@ -831,22 +1123,29 @@ static int GSL_multiroot(struct stardata_t * stardata, iter); break; } - - Get_GSL_vector_array(s->f,residual); - Get_GSL_vector_array(s->x,state); Discdebug(2, - "iter = % 4d/% 4d, status %d : Tvisc0,Rin,Rout = %g %g %g : residuals %g %g %g\n", + "iter = % 4d/% 4d, status %d : parameter_types ", iter, DISC_ROOT_FINDER_MAX_ATTEMPTS, - status, - state[0], - state[1], - state[2], - residual[0], - residual[1], - residual[2]); - + status); + for(i=0;i<n;i++) + { + Discdebug_plain(2, + "%s = %g ", + Disc_parameter_string(parameter_types[i]), + gsl_vector_get(s->x,i)); + } + Discdebug_plain(2,": residuals "); + for(i=0;i<n;i++) + { + Discdebug_plain(2, + "%s = %g ", + Disc_constraint_string(constraints[i]), + gsl_vector_get(s->f,i)); + } + Discdebug(2,"\n"); + status = gsl_multiroot_test_residual (s->f, tol); @@ -863,9 +1162,11 @@ static int GSL_multiroot(struct stardata_t * stardata, /* * Free memory, end va_args */ + Safe_free(F); Safe_free_GSL_multiroot_fsolver(s); Safe_free_GSL_vector(guess_vector); va_end(args); + va_end(args_master); if(status == GSL_SUCCESS && iter < DISC_ROOT_FINDER_MAX_ATTEMPTS) { @@ -881,745 +1182,180 @@ static int GSL_multiroot(struct stardata_t * stardata, } } -static int testfunc(const gsl_vector * x, - void * p, - gsl_vector * f) +static int GSL_multiroot_testfunc(const gsl_vector * x, + void * p, + gsl_vector * f) { /* - * get the parameter values + * the parameter values are in GSL vector x, + * and can be accessed as doubles from x->data. + * + * The residuals are set in f->data. + */ + int ret = GSL_SUCCESS; + const int n = x->size; + int i; + + /* + * Get the data from GSL into a C-array for disc_nsector + */ + double parameter_values[n]; + + for(i=0;i<n;i++) + { + parameter_values[i] = + gsl_vector_get(x,i); + } + double residuals[n]; + + disc_nsector(n, + parameter_values, + residuals, + p); + + for(i=0;i<n;i++) + { + gsl_vector_set(f,i,residuals[i]); + } + + /* + * NaNs cannot be right : return a deliberately failed solution */ - double Tvisc0,Rin,Rout; - Get_GSL_vector(x,Tvisc0,Rin,Rout); +#ifdef NANCHECKS + Boolean nan = FALSE; + for(i=0;i<n;i++) + { + if(unlikely(isnan(residuals[i]))) + { + nan=TRUE; + break; + } + } + if(unlikely(nan == TRUE)) + { + for(i=0;i<n;i++) + { + gsl_vector_set(f,i,-1.0); + } + } +#endif // NANCHECKS + + return ret; +} + + +#endif // USE_GSL + +#endif // DISCS + + + + + +#ifdef OLDCODE +static int quadGSL_multiroot_testfunc(const gsl_vector * x, + void * p, + gsl_vector * f) +{ +/* + * get the parameter values + */ + double Tvisc0,Rin,Rout,torquef; + Get_GSL_4vector(x,Tvisc0,Rin,Rout,torquef); + +/* + * Half the parameter space should fail: + * in this case, invert + */ + if(Rin > Rout) + { + double temp = Rin; + Rin = Rout; + Rout = temp; + } + Discdebug(2, - "testfunc in x= Tvisc0=%30.20e Rin=%30.20e Rout=%30.20e\n", + "quadGSL_multiroot_testfunc in p=%p f=%p x=%p x[]=Tvisc0=%30.20e Rin=%30.20e Rout=%30.20e torquef=%302.0e\n", + p,f,x, Tvisc0, Rin, - Rout + Rout, + torquef ); -#ifdef LOG_GSL_PARAMS - // todo check for nans - Tvisc0 = pow(10.0,Tvisc0); - Rin = pow(10.0,Rin); - Rout = pow(10.0,Rout); -#endif - - /* scale variables */ - Tvisc0 *= TSCALE; - Rin *= RSCALE; - Rout *= RSCALE; - - double xx[3]; + double xx[4]; int ret; - /* - * Exclude invalid paramter space and - * perform NaN checks - */ +/* + * Exclude invalid paramter space and + * perform NaN checks + */ if(Rin > Rout || Tvisc0 < 0.0 || Rout < 0.0 || Rin < 0.0 + || torquef < -TINY #ifdef NANCHECKS || isnan(Tvisc0) || isnan(Rin) || isnan(Rout) + || isnan(torquef) #endif // NANCHECKS ) { - /* - * Cannot be right : return a deliberately failed solution - * that leads us back to the true parameter space - */ +/* + * Cannot be right : return a deliberately failed solution + * that leads us back to the true parameter space + */ xx[0] = Tvisc0 > 0.0 ? -1.0 : Tvisc0; xx[1] = Rin > 0.0 ? -1.0 : Rin; xx[2] = Rout > 0.0 ? -1.0 : Rout; + xx[3] = torquef > 0.0 ? -1.0 : torquef; - Discdebug(2,"Trying RIN (%g from %g) > ROUT (%g from %g) : Tvisc0 = %g from %g : fail\n", + Discdebug(2,"Trying RIN (%g from %g) > ROUT (%g from %g) : Tvisc0 = %g from %g : torquef = %g from %g : fail\n", xx[1],Rin, xx[2],Rout, - xx[0],Tvisc0 + xx[0],Tvisc0, + xx[3],torquef ); - /* - * Return success because we treat this as if it - * worked with values that are clearly wrong. - */ +/* + * Return success because we treat this as if it + * worked with values that are clearly wrong. + */ ret = GSL_SUCCESS; } else { - /* - * Call the trisector function to find residuals - */ - disc_trisector(Tvisc0, - Rin, - Rout, - xx, - p); +/* + * Call the trisector function to find residuals + */ + disc_quadsector(Tvisc0, + Rin, + Rout, + torquef, + xx, + p); + ret = GSL_SUCCESS; } - /* - * NaNs cannot be right : return a deliberately failed solution - */ +/* + * NaNs cannot be right : return a deliberately failed solution + */ #ifdef NANCHECKS - if(isnan(xx[0]) || isnan(xx[1]) || isnan(xx[2])) + if(isnan(xx[0]) || + isnan(xx[1]) || + isnan(xx[2]) || + isnan(xx[3])) { - xx[0] = xx[1] = xx[2] = -1.0; + xx[0] = xx[1] = xx[2] = xx[3] = -1.0; } #endif // NANCHECKS - - /* set the solution vector and return */ - Set_GSL_vector_array(f,xx); - - return ret; -} -#endif//USE_GSL -static int bisection_rooter(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary, - int * return_failed) -{ - /* - * Loop while converged and failed are both FALSE - */ - - Boolean converged = FALSE, failed = FALSE; - long int bisection_count = 0; - long int maxcount = DISC_BISECTION_MAX_ATTEMPTS; - int error; - double M,J,F; -#ifdef NEW_BISECTION - int sinceM=0,sinceJ=0,sinceF=0; -#endif - /* - * Maximum number of iterations - */ - const long int itmax = 10000; - const long int itmaxM=itmax, itmaxJ=itmax, itmaxF=itmax; - - while(converged==FALSE && failed==FALSE) - { - Discdebug(3,"Conv bicount=%ld converged=%d failed=%d\n", - bisection_count, - converged, - failed); +/* set the solution vector and return */ + Set_GSL_4vector_array(f,xx); -#ifdef NEW_BISECTION - bisection_count++; - { - /* - * Current disc's M, J and F from the disc integrals - */ - double _M = disc_total_mass(disc); - double _J = disc_total_angular_momentum(disc,binary); - double _F = disc_total_angular_momentum_flux(disc,binary); - - /* - * Compare to the desired M, J and F - */ - double _epsM = fabs(disc->M/MAX(_M,1e-100)-1.0); - double _epsJ = fabs(disc->J/MAX(_J,1e-100)-1.0); - double _epsF = fabs(disc->F/MAX(_F,1e-100)-1.0); - -#ifdef CONVERGENCE_LOG - if(1)fprintf(convlog_fp,"F = %g %g ::: Tvisc0 = %g sigma0 = %g Rin = %g ::: EPS M %g J %g F %g\n", - _F, - disc->F, - disc->Tvisc0, - disc->sigma0, - disc->Rin, - _epsM, - _epsJ, - _epsF); -#endif - - /* - * Weights to choose the most important - */ - const double epsweight_M = 1e0; - const double epsweight_J = 1e0; - const double epsweight_F = 1e0; - - _epsM *= epsweight_M; - _epsJ *= epsweight_J; - _epsF *= epsweight_F; - - const int max_since = 0; - int next_bisect = - bisection_count < 4 ? ( - bisection_count==1 ? BISECT_M : - bisection_count==2 ? BISECT_J : - BISECT_F - ) : - (max_since && sinceM) > max_since ? BISECT_M : - (max_since && sinceJ) > max_since ? BISECT_J : - (max_since && sinceF) > max_since ? BISECT_F : - - (_epsM > _epsJ && _epsM > _epsF) ? BISECT_M : - (_epsJ > _epsM && _epsJ > _epsF) ? BISECT_J : - BISECT_F; - - Discdebug(3, - "Next bisect %s\n", - next_bisect == BISECT_M ? "M" : - next_bisect == BISECT_J ? "J" : - next_bisect == BISECT_F ? "F" : - "U"); - - if(next_bisect == BISECT_M) - { - sinceM=0; - sinceJ++; - sinceF++; - double new_Tvisc0 = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_TVISC, - &disc_M_bisector, - disc->Tvisc0, - DISC_TVISC0_MIN, - DISC_TVISC0_MAX, - DISC_MASS_TOLERANCE, - itmaxM, - 1.0, - disc, - binary); - if(error != BISECT_ERROR_NONE) - { -#ifdef CONVERGENCE_LOG - fprintf(convlog_fp,"Bisection error %d (M)\n",error); -#endif - failed = 1; - continue; - } - disc->Tvisc0 = new_Tvisc0; - - /* if Tvisc0 changes, so does sigma0 hence also disc->F */ - disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); - } - else if(next_bisect == BISECT_J) - { - sinceM++; - sinceJ=0; - sinceF++; - double new_Rout = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_J, - &disc_J_bisector, - MAX(binary->Rstar,disc->Rout), - DISC_ROUT_MIN, - DISC_ROUT_MAX, - DISC_ANGMOM_TOLERANCE, - itmaxJ, - 1.0, - disc, - binary); - - if(error != BISECT_ERROR_NONE) - { -#ifdef CONVERGENCE_LOG - fprintf(convlog_fp,"Bisection error %d (J)\n",error); -#endif - failed = 2; - continue; - } - disc->Rout = new_Rout; - DISC_OUTER_ZONE(disc)->rend = disc->Rout; - } - else if(next_bisect == BISECT_F) - { - sinceM++; - sinceJ++; - sinceF=0; - - disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); - - //Discdebug(2,"Bisect for F = %g\n",disc->F); - - double new_Rin = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_F, - &disc_F_bisector, - disc->Rin, - DISC_RIN_MIN, - DISC_RIN_MAX, - DISC_ANGMOM_FLUX_TOLERANCE, - itmaxF, - 1.0, - disc, - binary, - 0.0); - - if(error != BISECT_ERROR_NONE) - { -#ifdef CONVERGENCE_LOG - fprintf(convlog_fp, - "Bisection error %d (F)\n",error); -#endif - failed = 3; - continue; - } - - disc->Rin = new_Rin; - disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); - - } - } -#else - - /* - * Bisect on Tvisc0 to get the mass of the disc - * correct. - */ - if(DEBUG_BISECTION_LOOP) - printf("Bisect for M (Tvisc0 = %g, Rin = %g, Rout = %g)\n", - disc->Tvisc0, - disc->Rin, - disc->Rout); - bisection_count++; - - double new_Tvisc0 = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_TVISC, - &disc_M_bisector, - disc->Tvisc0, - DISC_TVISC0_MIN, - DISC_TVISC0_MAX, - DISC_MASS_TOLERANCE, - itmaxM, - 1.0, - disc, - binary); - - -#ifdef CONVERGENCE_LOG - { - double _M = disc_total_mass(disc); - double _J = disc_total_angular_momentum(disc,binary); - double _F = disc_total_angular_momentum_flux(disc,binary); - double _epsM = fabs(disc->M/MAX(_M,1e-100)-1.0); - double _epsJ = fabs(disc->J/MAX(_J,1e-100)-1.0); - double _epsF = fabs(disc->F/MAX(_F,1e-100)-1.0); - fprintf(convlog_fp, - "% 12g% 12g% 12g% 12g% 12g% 12g% 12g% 12g% 12ld%12s%12s\n", - _M, - _J, - _F, - disc->Rin, - disc->Rout, - MIN(1e99,_epsM), - MIN(1e99,_epsJ), - MIN(1e99,_epsF), - bisection_count, - "*", - "M" - ); - } -#endif - - if(DEBUG_BISECTION_LOOP) - printf("Bisect error = %d\n",error); - - if(error != BISECT_ERROR_NONE) - { - if(DEBUG_BISECTION_LOOP) - printf("M bisection failed\n"); - failed = 4; -#ifdef CONVERGENCE_LOG - fprintf(convlog_fp,"Bisection error %d (M)\n",error); -#endif - continue; - } - - disc->Tvisc0 = new_Tvisc0; - - if(DEBUG_BISECTION_LOOP) - { - M = disc_total_mass(disc); - - printf("Bisect for M gave M=%g Tvisc0 = %g, sigma0 = %g, Sigma at inner edge %g, at outer edge %g\n", - M, - disc->Tvisc0, - disc->sigma0, - disc_column_density(disc->Rin,disc), - disc_column_density(disc->Rout,disc) - ); - } - - /* - * Bisect the angular momentum equation on disc->Rout. - * Rout must be > Rin, but there is no limit on its maximum. - */ - if(DEBUG_BISECTION_LOOP) - { - printf("Bisect for J Rin=%g Rout=%g J=%g\n", - disc->Rin, - disc->Rout, - disc->J - ); - } - - bisection_count++; - - double newRout = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_J, - &disc_J_bisector, - MAX(binary->Rstar,disc->Rout), - DISC_ROUT_MIN, - DISC_ROUT_MAX, - DISC_ANGMOM_TOLERANCE, - itmaxJ, - 1.0, - disc, - binary); - - if(DEBUG_BISECTION_LOOP) - printf("Bisect error = %d\n",error); - - if(error != BISECT_ERROR_NONE) - { - if(DEBUG_BISECTION_LOOP) - printf("J bisection failed\n"); - failed = 5; -#ifdef CONVERGENCE_LOG - fprintf(convlog_fp,"Bisection error %d (J)\n",error); -#endif - continue; - } - - disc->Rout = newRout; - DISC_OUTER_ZONE(disc)->rend = disc->Rout; - - -#ifdef CONVERGENCE_LOG - double _M = disc_total_mass(disc); - double _J = disc_total_angular_momentum(disc,binary); - double _F = disc_total_angular_momentum_flux(disc,binary); - double _epsM = fabs(disc->M/MAX(_M,1e-100)-1.0); - double _epsJ = fabs(disc->J/MAX(_J,1e-100)-1.0); - double _epsF = fabs(disc->F/MAX(_F,1e-100)-1.0); - fprintf(convlog_fp, - "% 12g% 12g% 12g% 12g% 12g% 12g% 12g% 12g% 12ld%12s%12s\n", - _M, - _J, - _F, - disc->Rin, - disc->Rout, - MIN(1e99,_epsM), - MIN(1e99,_epsJ), - MIN(1e99,_epsF), - bisection_count, - "*", - "J" - ); -#endif - - if(DEBUG_BISECTION_LOOP) - { - M = disc_total_mass(disc); - J = disc_total_angular_momentum(disc,binary); - printf("Bisect for J gave M=%g (epsM=%g) J=%g (epsJ=%g) disc->Rout=%g\n", - M,M/disc->M-1.0, - J,J/disc->J-1.0, - disc->Rout - ); - } - - /* - * Target angular momentum flux is a function - * of sigma0, hence Tvisc0, hence the disc mass and - * angular momentum. Rin is then a function of the - * angular momentum flux, and we must solve for it. - * - * Set disc->F here to be the target. - */ - disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); - - if(disc->F < 0.0) - { - /* - * if F<0 assume disc is rapidly ejected. - * Really we want a time-dependent solution here. - */ - disc->F = 0.0; - Discdebug(3,"Conv disc->F = %g < 0\n",disc->F); -#ifdef CONVERGENCE_LOG - fprintf(convlog_fp,"Bisection error : F < 0\n"); -#endif - return CONVERGENCE_FLUX_NEGATIVE; - } - - /* - * Bisect for the angular momentum flux on disc->Rin. - * Rin < Rout, but there is no minimum limit (use 1e5 cm). - */ - if(DEBUG_BISECTION_LOOP) - { - printf("Bisect disc->Rin for F = %g (jdot_evap = %g) : min=%g max=%g initial guess=%g (tol=%g itmax=%ld)\n", - disc->F, - disc->Jdot_evap, - DISC_RIN_MIN, - DISC_RIN_MAX, - disc->Rin, - DISC_ANGMOM_FLUX_TOLERANCE, - itmaxF); - } - - Discdebug(3,"Conv trying F twixt %g %g for F=%g\n",DISC_RIN_MIN,DISC_RIN_MAX,disc->F); - - bisection_count++; - - double newRin = - generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_F, - &disc_F_bisector, - disc->Rin, - DISC_RIN_MIN, - DISC_RIN_MAX, - DISC_ANGMOM_FLUX_TOLERANCE, - itmaxF, - 1.0, - disc, - binary, - 0.0); - - if(DEBUG_BISECTION_LOOP) - printf("Bisect error = %d\n",error); - - if(error != BISECT_ERROR_NONE) - { - if(DEBUG_BISECTION_LOOP) - printf("F bisection failed\n"); - failed = 6; - -#ifdef CONVERGENCE_LOG - fprintf(convlog_fp,"Bisection error %d (J)\n",error); -#endif - continue; - } - - // required? - disc->Rin = newRin; - -#endif // NEW_BISECTION - - - /* - * Calculate disc's new M,J and F - * from integrals - */ - M = disc_total_mass(disc); - J = disc_total_angular_momentum(disc,binary); - F = disc_total_angular_momentum_flux(disc,binary); - - /* - * check for convergence - */ - double epsM = fabs(disc->M/MAX(M,1e-100)-1.0); - double epsJ = fabs(disc->J/MAX(J,1e-100)-1.0); - double epsF = fabs(disc->F/MAX(F,1e-100)-1.0); - - if(DEBUG_BISECTION_LOOP) - { - printf("Bisect Convcheck %ld/%ld %g : eps M=%g J=%g F=%g\n", - bisection_count, - maxcount, - disc->lifetime, - epsM, - epsJ, - epsF - ); - } - - if(epsM < DISC_MASS_TOLERANCE && - epsJ < DISC_ANGMOM_TOLERANCE && - epsF < DISC_ANGMOM_FLUX_TOLERANCE) - { - converged = TRUE; - - Discdebug(2, - "Convd:%d eps(MJF)=[%g,%g,%g] MJF=[%g,%g,%g] Tvisc0=%g Rin=%g Rout=%g ", - converged, - epsM, - epsJ, - epsF, - disc->M, - disc->J, - disc->F, - disc->Tvisc0, - disc->Rin, - disc->Rout); - - } - -#ifdef CONVERGENCE_LOG - fprintf(convlog_fp, - "% 12g% 12g% 12g% 12g% 12g% 12g% 12g% 12g% 12ld% 12d%12s\n\n", - M, - J, - F, - disc->Rin, - disc->Rout, - epsM, - epsJ, - epsF, - bisection_count, - converged, - -#ifdef NEW_BISECTION - ( - next_bisect == BISECT_M ? "M" : - next_bisect == BISECT_J ? "J" : - next_bisect == BISECT_F ? "F" : - "U" - ) -#else - "F" -#endif //NEW_BISECTION - ); -#endif //CONVERGENCE_LOG - - - - - if(converged==TRUE) - { - /* - * Disc has converged on a new structure - */ - disc->converged = TRUE; - - /* - * Sanity checks, e.g. - * - * Check that viscosity dominates at R=1cm - * and that the innermost zone is not - * a RADIATIVE_OUTER zone. - */ - if(0 && - (disc->Tvisc < disc->Tradin || - disc->Tvisc < disc->Tradout)) - { - Exit_binary_c_no_stardata( - 2, - "WARNING : Viscosity does not dominate at R=1cm with this choice of Tvisc0 : returning FALSE\n"); - } - - /* - * Check that the inner edge of the disc is not - * inside the binary - */ - if(disc->Rin < binary->separation) - { - Discdebug(1,"\n >>> WARNING : disc is inside the binary\n\n"); - } - } - - if(bisection_count > maxcount && - converged==FALSE) - { - Discdebug(2, - "\n >>>>>>> Failed to converge in %ld attempts\n\n", - maxcount); - failed = 7; - } - - if(DEBUG_BISECTION_LOOP) - { - printf("Bisection loop %ld : converged? %d : failed %d\n", - bisection_count, - converged, - failed); - } - } - - /* - * Set return values - */ - *return_failed = failed; - - if(0 && disc->converged) - { - check_local_minimum(stardata,disc,binary); - } - - return converged; -} - -static Boolean check_local_minimum(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary) -{ - /* - * Check if the disc is at a local minimum in parameter space - */ - - /* - * Step size: assume 10 * tolerance, although this - * is a bit rough. - */ - double d = DISC_TOLERANCE * 100.0; - - /* - * Make a copy of the input disc - */ - struct disc_t * testdisc = MALLOC(sizeof(struct disc_t)); - - - /* - * epsilons - */ - -#define Perturb(V,N) \ - double d##V = d * disc->V; \ - double xx##V##low[3],xx##V##mid[3],xx##V##hi[3]; \ - \ - memcpy(testdisc,disc,sizeof(struct disc_t)); \ - testdisc->V = disc->V - d##V; \ - disc_trisector2(testdisc,binary,xx##V##low); \ - PRINTF("LOCAL %s LOW xx##V %g %g %g\n",Stringify(V),xx##V##low[0],xx##V##low[1],xx##V##low[2]); \ - \ - memcpy(testdisc,disc,sizeof(struct disc_t)); \ - testdisc->V = disc->V; \ - disc_trisector2(testdisc,binary,xx##V##mid); \ - PRINTF("LOCAL %s MID xx##V %g %g %g\n",Stringify(V),xx##V##mid[0],xx##V##mid[1],xx##V##mid[2]); \ - \ - memcpy(testdisc,disc,sizeof(struct disc_t)); \ - testdisc->V = disc->V + d##V; \ - disc_trisector2(testdisc,binary,xx##V##hi); \ - PRINTF("LOCAL %s HIGH xx##V %g %g %g\n", \ - Stringify(V), \ - xx##V##hi[0], \ - xx##V##hi[1], \ - xx##V##hi[2]); \ - \ - if(fabs(xx##V##low[N]) > fabs(xx##V##mid[N]) && \ - fabs(xx##V##hi[N]) > fabs(xx##V##mid[N])) \ - { \ - PRINTF("LOCALTEST OK\n"); \ - } \ - else \ - { \ - PRINTF("LOCALTEST FAIL\n"); \ - if(0)Exit_binary_c(2,"pants"); \ - } - - /* - * Perturb variables - */ - - Perturb(Tvisc0,0); - Perturb(Rin,1); - Perturb(Rout,2); - - Safe_free(testdisc); - - return TRUE; + return ret; } - - -#endif // DISCS && DISCS_JERMYN +#endif //OLDCODE diff --git a/src/disc/disc_calc_disc_structure.h b/src/disc/disc_calc_disc_structure.h new file mode 100644 index 0000000000000000000000000000000000000000..37c946f3548ff1d3d3e0e67ab2db2899b1ac22a5 --- /dev/null +++ b/src/disc/disc_calc_disc_structure.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef DISC_CALC_DISC_STRUCTURE_H +#define DISC_CALC_DISC_STRUCTURE_H + +#ifdef USE_GSL +#include <gsl/gsl_vector.h> +#include <gsl/gsl_multiroots.h> + +static int disc_GSL_multiroot(const int solver, + ...); + +/* + * Define LOG_GSL_PARAMS to take logs before converging : + * usually this is faster and definitely it's more stable + * because it means there are never negative parameter_types + */ +//#define LOG_GSL_PARAMS +#endif // USE_GSL + +//#define CONVERGENCE_LOG + +/* +static double converge_with_torque_wrapper(const double torquef, + void * p); +*/ +static double converge_with_torque(const int n, + const disc_parameter * parameter_types, + const disc_constraint * constraints, + const struct binary_system_t * binary, + struct disc_t * disc, + struct disc_t * discwas, + struct stardata_t * stardata, + const double t, + int * ret + //,Boolean * Rin_min_bisect + ); + +static int GSL_multiroot_testfunc(const gsl_vector * x, + void * p, + gsl_vector * f); + +#ifdef OLDCODE +static int quadGSL_multiroot_testfunc(const gsl_vector * x, + void * p, + gsl_vector * f); +#endif//OLDCODE + + + +#endif // DISC_CALC_DISC_STRUCTURE_H diff --git a/src/disc/disc_calc_natural_timescale.c b/src/disc/disc_calc_natural_timescale.c new file mode 100644 index 0000000000000000000000000000000000000000..330911f15e473777cc1ff2a49e4905c361d85048 --- /dev/null +++ b/src/disc/disc_calc_natural_timescale.c @@ -0,0 +1,39 @@ +#include "../binary_c.h" + +#ifdef DISCS + +double disc_calc_natural_timescale(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + const double dt, + int * why) +{ + /* + * Calculate natural timescales for M, J and e changes. + */ + disc_natural_timescales(stardata, + disc, + binary, + dt); + + /* + * Hence the shortest timescale is the disc's + * natural timescale + */ + double dt_natural = Which_MIN3(*why, + disc->t_m, + disc->t_j, + disc->t_e); + + Discdebug(1, + "disc natural timescale = %g y (from %s)\n", + dt_natural/YEAR_LENGTH_IN_SECONDS, + (*why==0 ? "dM/dt" : + *why==1 ? "dJ/dt" : + *why==2 ? "de/dt" : "?") + ); + + return dt_natural; +} + +#endif // DISCS diff --git a/src/disc/disc_calculate_derived_variables.c b/src/disc/disc_calculate_derived_variables.c new file mode 100644 index 0000000000000000000000000000000000000000..cbe46223585079d51df645873976ec5fcb064419 --- /dev/null +++ b/src/disc/disc_calculate_derived_variables.c @@ -0,0 +1,34 @@ + +#include "../binary_c.h" + +#ifdef DISCS + +/* + * Given a converged disc, calculate some variables + * that are required by other parts of the disc code. + */ + +void disc_calculate_derived_variables(struct disc_t * disc, + const struct binary_system_t * binary) +{ + if(Disc_is_disc(disc)) + { + disc->Hin = disc_scale_height(disc->Rin,disc,binary); + Discdebug(1,"Hin = %g\n",disc->Hin); + + disc->RJhalf = disc_half_angular_momentum_radius(disc,binary); + Discdebug(1,"RJhalf = %g cf Rin = %g\n",disc->RJhalf, disc->Rin); + + if(IS_NOT_ZERO(disc->RJhalf)) + { + disc->HRJhalf = disc_scale_height(disc->RJhalf,disc,binary) / + disc->RJhalf; + } + else + { + disc->HRJhalf = 0.0; + } + Discdebug(2,"HRJhalf = %g\n",disc->HRJhalf); + } +} +#endif // DISCS diff --git a/src/disc/disc_check_local_minimum.c b/src/disc/disc_check_local_minimum.c new file mode 100644 index 0000000000000000000000000000000000000000..cb027461e8c28d9a1e530b9fabefc612d26524b1 --- /dev/null +++ b/src/disc/disc_check_local_minimum.c @@ -0,0 +1,85 @@ + +#include "../binary_c.h" + +#ifdef DISCS + + +Boolean check_local_minimum(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Check if the disc is at a local minimum in parameter space + */ + + /* + * Step size: assume 10 * tolerance, although this + * is a bit rough. + */ + double d = DISC_TOLERANCE * 100.0; + + /* + * Make a copy of the input disc + */ + struct disc_t * testdisc = New_disc; + + + /* + * epsilons + */ + +#define Perturb(V,N) \ + double d##V = d * disc->V; \ + double xx##V##low[3],xx##V##mid[3],xx##V##hi[3]; \ + \ + Copy_disc(disc,testdisc); \ + testdisc->V = disc->V - d##V; \ + disc_trisector2(stardata,testdisc,binary,xx##V##low); \ + PRINTF("LOCAL %s LOW xx##V %g %g %g\n", \ + Stringify(V), \ + xx##V##low[0], \ + xx##V##low[1], \ + xx##V##low[2]); \ + \ + Copy_disc(disc,testdisc); \ + testdisc->V = disc->V; \ + disc_trisector2(stardata,testdisc,binary,xx##V##mid); \ + PRINTF("LOCAL %s MID xx##V %g %g %g\n", \ + Stringify(V), \ + xx##V##mid[0], \ + xx##V##mid[1], \ + xx##V##mid[2]); \ + \ + Copy_disc(disc,testdisc); \ + testdisc->V = disc->V + d##V; \ + disc_trisector2(stardata,testdisc,binary,xx##V##hi); \ + PRINTF("LOCAL %s HIGH xx##V %g %g %g\n", \ + Stringify(V), \ + xx##V##hi[0], \ + xx##V##hi[1], \ + xx##V##hi[2]); \ + \ + if(fabs(xx##V##low[N]) > fabs(xx##V##mid[N]) && \ + fabs(xx##V##hi[N]) > fabs(xx##V##mid[N])) \ + { \ + PRINTF("LOCALTEST OK\n"); \ + } \ + else \ + { \ + PRINTF("LOCALTEST FAIL\n"); \ + if(0)Exit_binary_c(2,"pants"); \ + } + + /* + * Perturb variables + */ + + Perturb(Tvisc0,0); + Perturb(Rin,1); + Perturb(Rout,2); + + Safe_free(testdisc); + + return TRUE; +} +#endif // DISCS diff --git a/src/disc/disc_check_power_laws.c b/src/disc/disc_check_power_laws.c index 3dab63c3c68c1ecafbcf0b32f955354ca4c36d45..069484ba6b28491a48c621e1496bd3063fe042ed 100644 --- a/src/disc/disc_check_power_laws.c +++ b/src/disc/disc_check_power_laws.c @@ -1,22 +1,21 @@ #include "../binary_c.h" #ifdef DISCS -#include "disc_adam.h" #ifdef POWER_LAW_SANITY_CHECKS -void check_power_laws(struct disc_t * d, - Boolean output) +void disc_check_power_laws(const struct disc_t * d, + const Boolean output) { /* * Sanity checks for zone power laws */ - int i; + Disc_zone_counter i; Boolean canrepeat = Boolean_(output == FALSE); Boolean fail = Boolean_(output==TRUE); for(i=0;i<d->n_thermal_zones;i++) { - struct disc_thermal_zone_t * z = &d->thermal_zones[i], *prevz; + const struct disc_thermal_zone_t * z = &d->thermal_zones[i], *prevz; struct power_law_t * PL, * prevPL=NULL; int j; diff --git a/src/disc/disc_constraints.h b/src/disc/disc_constraints.h new file mode 100644 index 0000000000000000000000000000000000000000..99353e7fa4bcefcf6b002c35c0e8497d489952a6 --- /dev/null +++ b/src/disc/disc_constraints.h @@ -0,0 +1,270 @@ +#pragma once +#ifndef DISC_CONSTRAINTS_H +#define DISC_CONSTRAINTS_H + +/* + * Scheme to set up constraints, parameters + * and calculate residuals + * for the disc's GSL solver. + */ + + +/************************************************************ + * Constraint labels + * + * Remember to update DISC_NUMBER_OF_CONSTRAINTS when adding + * a constraint + * + ************************************************************/ +#define DISC_CONSTRAINT_NONE 0 +#define DISC_CONSTRAINT_M_TO_DISC_M 1 +#define DISC_CONSTRAINT_J_TO_DISC_J 2 +#define DISC_CONSTRAINT_F_TO_DISC_F 3 +#define DISC_CONSTRAINT_RIN_MIN_TO_DISC_RIN 4 +#define DISC_CONSTRAINT_ROUT_MAX_TO_DISC_ROUT 5 +#define DISC_NUMBER_OF_CONSTRAINTS 6 + +/* + * A result that cannot be true and must indicate + * failure. + */ +#define DISC_CONSTRAINT_FAILED -1.0 + +/* + * Convert a constraint to a human-readable string + */ +#define Disc_constraint_string(TYPE) ( \ + (TYPE) == DISC_CONSTRAINT_NONE ? "None" : \ + (TYPE) == DISC_CONSTRAINT_M_TO_DISC_M ? "M/disc->M" : \ + (TYPE) == DISC_CONSTRAINT_J_TO_DISC_J ? "J/disc->J" : \ + (TYPE) == DISC_CONSTRAINT_F_TO_DISC_F ? "F/disc->F" : \ + (TYPE) == DISC_CONSTRAINT_RIN_MIN_TO_DISC_RIN ? "Rin_min/disc->Rin" : \ + (TYPE) == DISC_CONSTRAINT_ROUT_MAX_TO_DISC_ROUT ? "Rout_max/disc->Rout" : \ + "unknown") + +/* + * Define disc constraint variables. + * D = disc, B = binary + */ +#define Disc_constraint_constant(D,B,TYPE) ( \ + (TYPE) == DISC_CONSTRAINT_NONE ? 0.0 : \ + (TYPE) == DISC_CONSTRAINT_M_TO_DISC_M ? ((D)->M) : \ + (TYPE) == DISC_CONSTRAINT_J_TO_DISC_J ? ((D)->J) : \ + (TYPE) == DISC_CONSTRAINT_F_TO_DISC_F ? ((D)->F) : \ + (TYPE) == DISC_CONSTRAINT_RIN_MIN_TO_DISC_RIN ? ((D)->Rin) : \ + (TYPE) == DISC_CONSTRAINT_ROUT_MAX_TO_DISC_ROUT ? ((D)->Rout) : \ + 0.0) + +/* + * Define disc constraint values, usually + * integrals of some kind. + */ +#define Disc_constraint_value(D,B,TYPE,...) ( \ + (TYPE) == DISC_CONSTRAINT_NONE ? 0.0 : \ + (TYPE) == DISC_CONSTRAINT_M_TO_DISC_M ? (disc_total_mass((D))) : \ + (TYPE) == DISC_CONSTRAINT_J_TO_DISC_J ? (disc_total_angular_momentum((D),(B))) : \ + (TYPE) == DISC_CONSTRAINT_F_TO_DISC_F ? (disc_total_angular_momentum_flux_from_binary((D),(B))) : \ + (TYPE) == DISC_CONSTRAINT_RIN_MIN_TO_DISC_RIN ? (MAX(1e-100,(D)->Rin_min)) : \ + (TYPE) == DISC_CONSTRAINT_ROUT_MAX_TO_DISC_ROUT ? (MAX(1e-100,(D)->Rout_max)) : \ + 0.0) + + +/* + * Macro to construct a residual and + * return its value, which is approximately + * zero when converged. + * + * Please access the residual through Disc_residual(...). + * + * We usually assume the required values are positive. + * + * You can use the Residualfunc macro to define a residual. + * This takes the variable name as VAR (from disc->VAR), + * D is the disc, (D) in Disc_residual, and FUNC is the function + * to compare to (D)->VAR. The remaining arguments are + * passed to the function. + * + * Note that the Residualfunc MUST be monotonically increasing. + * + * For functions that are montonically decreasing, we provide + * Residualfunc_inverse. + * + * Note that these map to the more generic Bisection_result + * and Bisection_result_inverse macros (see binary_c_function_macros.h). + */ + +#define Residualfunc(D,B,TYPE) \ + ( \ + Bisection_result( \ + (Disc_constraint_constant((D),(B),(TYPE))), \ + (Disc_constraint_value((D),(B),(TYPE))) \ + ) \ + ) + +#define Residualfunc_inverse(D,B,TYPE) \ + ( \ + Bisection_result_inverse( \ + (Disc_constraint_constant((D),(B),(TYPE))), \ + (Disc_constraint_value((D),(B),(TYPE))) \ + ) \ + ) + +#define Disc_residual(D,B,TYPE) \ + ( \ + /* standard */ \ + ( \ + (TYPE)==DISC_CONSTRAINT_M_TO_DISC_M || \ + (TYPE)==DISC_CONSTRAINT_J_TO_DISC_J \ + ) ? \ + \ + /* inverse */ \ + (Residualfunc((D),(B),(TYPE))) \ + : \ + \ + ( \ + (TYPE)==DISC_CONSTRAINT_F_TO_DISC_F || \ + (TYPE)==DISC_CONSTRAINT_ROUT_MAX_TO_DISC_ROUT || \ + (TYPE)==DISC_CONSTRAINT_ROUT_MAX_TO_DISC_ROUT \ + ) ? \ + \ + (Residualfunc_inverse((D),(B),(TYPE))) \ + : \ + \ + DISC_CONSTRAINT_FAILED \ + ) + +#define Disc_abs_residual(D,B,TYPE) (fabs(Disc_residual((D),(B),(TYPE)))) + +/* + * Macro to return the tolerance of a certain constraint + */ +#define Disc_tolerance(D,B,TYPE) \ + ( \ + (TYPE)==DISC_CONSTRAINT_M_TO_DISC_M ? \ + (DISC_MASS_TOLERANCE) : \ + \ + (TYPE)==DISC_CONSTRAINT_J_TO_DISC_J ? \ + (DISC_ANGMOM_TOLERANCE) : \ + \ + (TYPE)==DISC_CONSTRAINT_F_TO_DISC_F ? \ + (DISC_ANGMOM_FLUX_TOLERANCE) : \ + \ + (TYPE)==DISC_CONSTRAINT_RIN_MIN_TO_DISC_RIN ? \ + (DISC_TOLERANCE) : \ + \ + (TYPE)==DISC_CONSTRAINT_ROUT_MAX_TO_DISC_ROUT ? \ + (DISC_TOLERANCE) : \ + \ + DISC_CONSTRAINT_FAILED \ + ) + + + +/* + * Macro to return TRUE if constraint TYPE in disc D is converged, + * FALSE otherwise + */ +#define Disc_constraint_converged(D,B,TYPE) \ + ( \ + (Disc_abs_residual((D),(B),(TYPE)) < \ + Disc_tolerance((D),(B),(TYPE))) ? \ + TRUE : \ + FALSE) + +/************************************************************ + * Parameter labels + ************************************************************/ +#define DISC_PARAMETER_NONE 0 +#define DISC_PARAMETER_TVISC0 1 +#define DISC_PARAMETER_RIN 2 +#define DISC_PARAMETER_ROUT 3 +#define DISC_PARAMETER_TORQUEF 4 + +/* + * Convert a parameter to a human-readable string + */ +#define Disc_parameter_string(TYPE) ( \ + (TYPE) == DISC_PARAMETER_NONE ? "None" : \ + (TYPE) == DISC_PARAMETER_TVISC0 ? "Tvisc0" : \ + (TYPE) == DISC_PARAMETER_RIN ? "Rin" : \ + (TYPE) == DISC_PARAMETER_ROUT ? "Rout" : \ + (TYPE) == DISC_PARAMETER_ROUT ? "Torquef" : \ + "Unknown") + + +/* + * Macro to map a DISC_PARAMETER type (TYPE) to a + * variable in the disc structure (D). + * + * If I is unknown, then the variable "unknown" is + * pointed to. This should be declared as "double MAYBE_UNUSED". + */ +#define Disc_parameter(D,TYPE) \ + (*( \ + (TYPE)==DISC_PARAMETER_TVISC0 ? (&((D)->Tvisc0)) : \ + (TYPE)==DISC_PARAMETER_RIN ? (&((D)->Rin)) : \ + (TYPE)==DISC_PARAMETER_ROUT ? (&((D)->Rout)) : \ + (TYPE)==DISC_PARAMETER_TORQUEF ? (&((D)->torqueF)) : \ + &unknown \ + )) + + +/* + * Macro to test if parameter of type (TYPE) value (VAL) is physically valid + * in disc (D). + * + * Return TRUE if ok, FALSE if bad. + * + * Defaults to TRUE for an unknown parameter + */ +#define Disc_parameter_check(D,TYPE,VAL) \ + ( \ + (TYPE) == DISC_PARAMETER_TVISC0 ? ((VAL) > TINY ? TRUE : TRUE) : \ + (TYPE) == DISC_PARAMETER_RIN ? ((VAL) < ((D)->Rout + TINY) ? TRUE : TRUE) : \ + (TYPE) == DISC_PARAMETER_ROUT ? ((VAL) > ((D)->Rin - TINY) ? TRUE : TRUE) : \ + TRUE) + +/* + * Macro to map the minima and maxima of the various parameters + * + * Defaults to 1e-100 or 1e+100 for an unknown parameter. + * + * Rin can be from DISC_RIN_MIN to almost (D)->Rout + * + * Rout can be from just more than (D)->Rin to DISC_ROUT_MAX + * + */ + +#define _EPS 1e-6 +#define _JUST_MORE (1.0 + _EPS) +#define _JUST_LESS (1.0 - _EPS) + +#define Disc_parameter_min(D,TYPE) \ + ( \ + (TYPE) == DISC_PARAMETER_TVISC0 ? DISC_TVISC0_MIN : \ + (TYPE) == DISC_PARAMETER_RIN ? DISC_RIN_MIN : \ + (TYPE) == DISC_PARAMETER_ROUT ? (MAX(DISC_RIN_MIN, \ + (D)->Rin*_JUST_MORE)): \ + 1e-100 \ + ) + + +/* + * We have to be careful with the max of the parameters. + * + * Simply allowing them to be a "large number" messes + * up the various root finding algorithms (which fail to + * deal well with numbers like 1e300) + */ +#define Disc_parameter_max(D,TYPE) \ + ( \ + (TYPE) == DISC_PARAMETER_TVISC0 ? DISC_TVISC0_MAX : \ + (TYPE) == DISC_PARAMETER_RIN ? MIN(((D)->Rout*_JUST_LESS), \ + DISC_LARGE_RADIUS): \ + (TYPE) == DISC_PARAMETER_ROUT ? MIN(DISC_LARGE_RADIUS, \ + DISC_ROUT_MAX) : \ + 1e+100 \ + ) + + +#endif // DISC_CONSTRAINTS_H diff --git a/src/disc/disc_convergence_status.c b/src/disc/disc_convergence_status.c index a2e83ee40e724b2ca0ae4d89390fe061060d84cf..6e0d802b820702f79620124669e1c32b9932bed5 100644 --- a/src/disc/disc_convergence_status.c +++ b/src/disc/disc_convergence_status.c @@ -1,9 +1,9 @@ #include "../binary_c.h" #ifdef DISCS -void disc_convergence_status(char * s, - struct disc_t * disc, - struct binary_system_t * binary) +void disc_convergence_status(const char * s, + const struct disc_t * disc, + const struct binary_system_t * binary) { /* * Report on the convergence status of the disc @@ -15,7 +15,7 @@ void disc_convergence_status(char * s, */ double _M = disc_total_mass(disc); double _J = disc_total_angular_momentum(disc,binary); - double _F = disc_total_angular_momentum_flux(disc,binary); + double _F = disc_total_angular_momentum_flux_from_binary(disc,binary); /* * Compare to the desired M, J and F diff --git a/src/disc/disc_data_types.h b/src/disc/disc_data_types.h new file mode 100644 index 0000000000000000000000000000000000000000..d6967d7aea6c380cc4a5b737984ae923d6350bb0 --- /dev/null +++ b/src/disc/disc_data_types.h @@ -0,0 +1,13 @@ +#pragma once +#ifndef DISC_DATA_TYPES_H +#define DISC_DATA_TYPES_H + +/* + * Disc data types + */ +#define disc_parameter unsigned int +#define disc_constraint unsigned int +#define disc_boundary_condition unsigned int + + +#endif // DISC_DATA_TYPES_H diff --git a/src/disc/disc_debug.h b/src/disc/disc_debug.h new file mode 100644 index 0000000000000000000000000000000000000000..1976758e3e39024b075b1f9dd941916426697893 --- /dev/null +++ b/src/disc/disc_debug.h @@ -0,0 +1,36 @@ +#pragma once +#ifndef DISC_DEBUG_H +#define DISC_DEBUG_H +/* + * Macros for disc debugging statements + */ +#include "../debug/debug_colours.h" + +#define Disc_do_debug(N) \ + ((DISC_DEBUG) >= (N)) + +#define DISC_DEBUG_STREAM stdout + +#define Discdebug(N,...) \ + if(Disc_do_debug(N)) \ + { \ + fprintf(DISC_DEBUG_STREAM, \ + "%s%s%s %d%s : ", \ + COLOUR_FILENAME, \ + __FILE__, \ + COLOUR_LINENUMBERS, \ + __LINE__, \ + COLOUR_RESET); \ + fprintf(DISC_DEBUG_STREAM,__VA_ARGS__); \ + fflush(DISC_DEBUG_STREAM); \ + } + +#define Discdebug_plain(N,...) \ + if(Disc_do_debug(N)) \ + { \ + fprintf(DISC_DEBUG_STREAM,__VA_ARGS__); \ + fflush(DISC_DEBUG_STREAM); \ + } + + +#endif // DISC_DEBUG_H diff --git a/src/disc/disc_derivatives.c b/src/disc/disc_derivatives.c index 7e1d5d8583f222d28d8eac2459a18847b54112ca..199b0ed09c1d3fa2b32d3776facfa4fb7e99bb18 100644 --- a/src/disc/disc_derivatives.c +++ b/src/disc/disc_derivatives.c @@ -2,497 +2,610 @@ #include "../binary_c.h" #ifdef DISCS - -#include "disc.h" - /* * Calculate the derivatives of disc properties, - * usually mass and angular momentum, according to - * various physical processes. + * usually gain or loss of mass, angular momentum and + * eccentricity, according to various physical processes. + * + * If edges is TRUE, then also calculate edge stripping + * radii. + * + * Also set these values into stardata where appropriate + * to apply changes to the binary system. + * + * Note that the disc structure passed may not be converged. * - * Note that the disc structure passed in is converged, - * but not necessarily with these processes switched on. + * We require 0 < multiplier < 1 */ void disc_derivatives(struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, struct stardata_t * stardata, - const double dt, - const double multiplier) + const double multiplier, + const Boolean edges) { /* - * FUV and X-ray winds + * Update derived variables, just in case */ - disc->loss[DISC_LOSS_FUV].mdot = 0.0; - disc->loss[DISC_LOSS_FUV].jdot = 0.0; - disc->loss[DISC_LOSS_FUV].edot = 0.0; - disc->loss[DISC_LOSS_XRAY].mdot = 0.0; - disc->loss[DISC_LOSS_XRAY].jdot = 0.0; - disc->loss[DISC_LOSS_XRAY].edot = 0.0; - - if(IS_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_Xray_multiplier)) - { + disc_calculate_derived_variables(disc,binary); + + /* + * Reset evaporation boundaries : they'll + * be recalculated below + */ + if(edges == TRUE) + { + Discdebug(2,"Reset Revaps\n"); + if(stardata->preferences->cbdisc_outer_edge_stripping == FALSE) + { + disc->Revap_out = 0.0; + } + if(stardata->preferences->cbdisc_inner_edge_stripping == FALSE) + { + disc->Revap_in = 0.0; + } + } + + if(Disc_is_disc(disc)) + { /* - * Set up the Owen+ (2012) disc evaporation function - * for the current disc and binary system. + * Radius the disc would have, were it a ring */ - disc_Owen_2012_normalize(disc,binary); - disc->Jdot_evap = 0.0; - - if(stardata->preferences->cbdisc_viscous_photoevaporation_coupling == TRUE) + double Rring = disc_ring_radius(disc,binary); + + /* + * Specific angular momentum at the disc's inner edge + */ + double h_inner_edge = POW2(disc->Rin) * + disc_orbital_frequency(disc->Rin,binary); + + Discdebug(2,"L2 cross check\n"); + + if(IS_REALLY_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier)) { /* - * At the inner edge, check if the timescale - * of mass loss is shorter than viscous changes, - * if so remove mass from the inner edge and - * recalculate the inner edge radius. + * Inner edge inside L2 loss (NB this is negative). */ - Discdebug(2, - "Find clearing radius "); - disc->Revap = disc_Owen_2012_clearing_radius2(disc,binary); - Discdebug(2, - "OWEN VISC EVAP Revap = %g (Rin %g Rout %g)\n", - disc->Revap, - disc->Rin, - disc->Rout); - - if(disc->Revap > disc->Rin*(1.0+TINY)) - { - /* - * Set the flag to show that we are X-ray wind - * dominated at the disc inner edge. This prevents - * viscous inflow onto the inner binary. - */ - disc->Xray_wind_dominated = TRUE; - Discdebug(2, - "X-ray DOMINATED : Revap = %g (Rin = %g, Rout = %g)\n", - disc->Revap, - disc->Rin, - disc->Rout - ); - /* - * Material evaporated from between Rin and Revap - * is sent off into the wind. - */ - double mdot_evap = - - disc_partial_mass(disc, - disc->Rin, - disc->Revap) / dt; - - double jdot_evap = - - disc_partial_angular_momentum(disc, - binary, - disc->Rin, - disc->Revap) / dt; - /* - * Correction to the angular momentum flux, F, for the next - * timestep, based on the flux coming in through what's - * left of the disc outside Revap. - */ - if(disc->Revap * (1.0+TINY) < disc->Rout) + /* + * Apply mass loss if the disc is inside L2 + */ + Discdebug(1, + "Rin = %g %s cf aL2 = %g %s\n", + Solar(disc->Rin,R), + binary->aL2/R_SUN, + R_SOLAR); + + if(disc->Rin < binary->aL2) + { + if(stardata->preferences->cbdisc_viscous_L2_coupling == FALSE) { - double Jpart = - disc_partial_angular_momentum(disc, - binary, - disc->Revap, - disc->Rout); - double Mpart = - disc_partial_mass(disc, - disc->Revap, - disc->Rout); - - double h_mean = Jpart / Mpart; - - disc->Jdot_evap = h_mean * mdot_evap; - /* - * NaN check : remove me eventually + * If we aren't coupling viscously to the inner edge, + * we must estimate the mass and angular momentum loss here. + * + * This expression is very ad-hoc! */ - if(isnan(disc->Jdot_evap)) - { - printf("Jdot evap = %g * %g = %g\n", - h_mean, - mdot_evap, - disc->Jdot_evap); - printf("Between R = %g %g : Jpart = %g, Mpart = %g\n", - disc->Revap, - disc->Rout, - Jpart, - Mpart); - Exit_binary_c_no_stardata(1,"nan oops"); - } + double mdot = stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier * + MAX(0.0,log10(binary->aL2 / disc->Rin)); + + mdot *= multiplier * M_SUN / YEAR_LENGTH_IN_SECONDS; + + /* negative : mass loss */ + mdot = - mdot; + + disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot = mdot; + disc->loss[DISC_LOSS_INNER_L2_CROSSING].jdot = mdot * h_inner_edge; + disc->loss[DISC_LOSS_INNER_L2_CROSSING].edot = 0.0; } else { - disc->Jdot_evap = 0.0; - } - - - /* - * Viscous inflow from outside Revap is - * lost into the wind at Revap - */ - /* - double mdot_visc = - -2.0 * PI * POW2(disc->Revap) * disc_column_density(disc->Revap,disc) - / disc_viscous_timescale(disc->Revap,disc,binary); - */ - double mdot_visc = - - disc_mass_inflow_rate(disc->Revap, - disc, - binary); + /* + * (On the first timestep?) enforce mass + * of material inside Revap_in if + * binary->aL2 is inside Rin. + */ + disc->suppress_viscous_inflow = FALSE; - Discdebug(2, - "MDOTVISC inflow = %g Msun/year (Revap viscous time %g y, Rin viscous time)\n", - mdot_visc / M_SUN * YEAR_LENGTH_IN_SECONDS, - disc_viscous_timescale(disc->Revap,disc,binary) / YEAR_LENGTH_IN_SECONDS - ); - - double h_evap = POW2(disc->Revap) * disc_orbital_frequency(disc->Revap,binary); - double jdot_visc = mdot_visc * h_evap; - - /* - * Total mass loss by evaporation and movement of the boundary - */ - double mdot = mdot_evap + mdot_visc; - double jdot = jdot_evap + jdot_visc; + if(edges == TRUE) + { + double Revap = binary->aL2; + Revap = Revap * multiplier + + (1.0 - multiplier) * disc->Rin; + + /* + * Scale if necessary + */ + if(!FEQUAL(stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier, + 1.0)) + { + double dm = disc_partial_mass(disc,disc->Rin,Revap) + * stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier; + Revap = disc_mass_radius(disc,binary,dm); + Revap = multiplier * Revap + + (1.0 - multiplier) * disc->Rin; + } - mdot *= - stardata->preferences->cbdisc_mass_loss_Xray_multiplier; - jdot *= - stardata->preferences->cbdisc_mass_loss_Xray_multiplier; - - Discdebug(2, - "OWEN Clearing radius mdot = %g (viscous = %g, boundary = %g, in this timestep %g, was %g)\nCurrent disc mass %g\n", - mdot*YEAR_LENGTH_IN_SECONDS/M_SUN, - mdot_visc*YEAR_LENGTH_IN_SECONDS/M_SUN, - mdot_evap*YEAR_LENGTH_IN_SECONDS/M_SUN, - mdot*dt/M_SUN, - disc->loss[DISC_LOSS_XRAY].mdot/M_SUN*YEAR_LENGTH_IN_SECONDS, - disc->M/M_SUN - ); - - disc->loss[DISC_LOSS_XRAY].mdot += multiplier * mdot; - disc->loss[DISC_LOSS_XRAY].jdot += multiplier * jdot; - disc->Jdot_evap *= multiplier; + disc->Revap_in = MAX(disc->Revap_in, + Revap); + + Discdebug(1, + "\ncoupled L2 at Revap_in = %g Rsun (L2 = %g Rsun, Rin = %g Rsun, Rout = %g Rsun)\n", + disc->Revap_in / R_SUN, + binary->aL2 / R_SUN, + disc->Rin / R_SUN, + disc->Rout / R_SUN); + } + disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot = 0.0; + disc->loss[DISC_LOSS_INNER_L2_CROSSING].jdot = 0.0; + disc->loss[DISC_LOSS_INNER_L2_CROSSING].edot = 0.0; + } } + + Discdebug(1, + "L2 : sep = %g, aL2 = %g, Rin = %g, Rout = %g, Rring = %g, Revap_in = %g (Rsun) : mdot = %g, jdot = %g (Mdisc %g, Jdisc %g)\n", + binary->separation / R_SUN, + binary->aL2 / R_SUN, + disc->Rin / R_SUN, + disc->Rout / R_SUN, + Rring / R_SUN, + disc->Revap_in / R_SUN, + disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot / (M_SUN / YEAR_LENGTH_IN_SECONDS), + disc->loss[DISC_LOSS_INNER_L2_CROSSING].jdot, + disc->M / M_SUN, + disc->J + ); } else { - disc->Xray_wind_dominated = FALSE; - disc->Revap = disc->Rin; + disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot = 0.0; + disc->loss[DISC_LOSS_INNER_L2_CROSSING].jdot = 0.0; + disc->loss[DISC_LOSS_INNER_L2_CROSSING].edot = 0.0; } - } - else - { - disc->Xray_wind_dominated = FALSE; - disc->Revap = disc->Rin; - } - - Discdebug(2, - "Is disc wind dominated? %s\n", - Yes_or_no(disc->Xray_wind_dominated)); + + /* + * FUV and X-ray winds + */ + disc->loss[DISC_LOSS_FUV].mdot = 0.0; + disc->loss[DISC_LOSS_FUV].jdot = 0.0; + disc->loss[DISC_LOSS_FUV].edot = 0.0; + disc->loss[DISC_LOSS_XRAY].mdot = 0.0; + disc->loss[DISC_LOSS_XRAY].jdot = 0.0; + disc->loss[DISC_LOSS_XRAY].edot = 0.0; + + if(Disc_is_disc(disc) && + IS_REALLY_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_Xray_multiplier)) + { + /* + * Set up the Owen+ (2012) disc evaporation function + * for the current disc and binary system. + */ + disc_Owen_2012_normalize(disc,binary); + - /* - // test Fig.4 of Owen+ 2012 - { + /* + * If we are coupling the viscous evolution of the disc + * to the wind, find the radius inside which the disc + * should be evaporated. + */ + if(stardata->preferences->cbdisc_viscous_photoevaporation_coupling == TRUE) + { + + if(edges == TRUE) + { + /* + * Enforce X-ray wind loss through coupling with the + * inner edge + */ + Discdebug(2, + "Find clearing radius \n"); - binary->mtot = 0.7 * M_SUN; - - for(double logLX=28.0; logLX<31.0; logLX += 0.2) - { - double LX = pow(10.0,logLX); - binary->LX = LX; - double MM = disc_Owen_2012_total_mdot(binary); - printf("LX %g %g %g\n",logLX,LX,MM/M_SUN*YEAR_LENGTH_IN_SECONDS); - } - fflush(NULL);_exit(0); - } - */ - - /* - * Owen et al. (2012) give d(Sigma)/dt. Use this to calculate - * the mass loss rate from the disc between Rin and Rout, - * and take the angular momentum from the whole disc. - */ - if(IS_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_Xray_multiplier)) - { - double mdot = disc_Owen_2012_sigmadot_integral(disc, - binary, - disc->Revap, - disc->Rout); - Discdebug(2, - "OWEN wants %g Msun/y (Revap = %g, Rin = %g, Rout = %g)\n", - mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - disc->Revap, - disc->Rin, - disc->Rout); - - double jdot = disc_Owen_2012_angmom_integral(disc, - binary, - disc->Revap, - disc->Rout); - - double inf = disc_Owen_2012_sigmadot_integral(disc, - binary, - 0.0, - disc->Rout); - mdot *= stardata->preferences->cbdisc_mass_loss_Xray_multiplier; - jdot *= stardata->preferences->cbdisc_mass_loss_Xray_multiplier; - Discdebug(2, - "OWEN mdot = %g Msun/y (over infinite disc %g)\n", - mdot/M_SUN*YEAR_LENGTH_IN_SECONDS, - inf/M_SUN*YEAR_LENGTH_IN_SECONDS); +#define METHOD_SINGLE_RADIUS 0 +#define METHOD_DUAL_RADII 1 + + const int method = METHOD_DUAL_RADII; - disc->loss[DISC_LOSS_XRAY].mdot += multiplier * mdot; - disc->loss[DISC_LOSS_XRAY].jdot += multiplier * jdot; + Discdebug(2, + "Find clearing %s \n", + method == METHOD_SINGLE_RADIUS ? "radius" : "radii" + ); - Discdebug(2, - "mdot Xray outside Revap = %g, jdot = %g\n",mdot,jdot); - } - - Discdebug(2, - "Saving some disc properties Rin=%g Rout=%g J=%g\n", - disc->Rin, - disc->Rout, - disc->J); - - /* - * Save some disc properties - */ - disc->Hin = disc_scale_height(disc->Rin,disc,binary); - Discdebug(1,"Hin = %g\n",disc->Hin); - disc->RJhalf = disc_half_angular_momentum_radius(disc,binary); - Discdebug(1,"RJhalf = %g cf Rin = %g\n",disc->RJhalf, disc->Rin); - if(IS_NOT_ZERO(disc->RJhalf)) - { - disc->HRJhalf = disc_scale_height(disc->RJhalf,disc,binary) / - disc->RJhalf; - } - else - { - disc->HRJhalf = 0.0; - } - Discdebug(2,"HRJhalf = %g\n",disc->HRJhalf); + if(method==0) + { + + const double a_clear = + disc_Owen_2012_clearing_radius(stardata, + disc, + binary); + + Discdebug(2, + "Clearing radius is %g %s\n", + Solar(a_clear,R)); + + if(a_clear > disc->Rin + (1.0+TINY)) + { + double Revap = a_clear; + Revap = Revap * multiplier + + disc->Rin * (1.0 - multiplier); + disc->Revap_in = MAX(disc->Revap_in, + Revap); + } + } + else + { + double a_clear_in,a_clear_out; + disc_Owen_2012_clearing_radii(stardata, + disc, + binary, + &a_clear_in, + &a_clear_out); + - Discdebug(2, - "Global derivatives (disc: M=%g J=%g)\n", - disc->M/M_SUN, - disc->J); + Discdebug(2, + "Clearing radii are in : %g %s, out : %g %s\n", + Solar(a_clear_in,R), + Solar(a_clear_out,R)); + + if(!FEQUAL(a_clear_in, disc->Rin)) + { + double Revap = a_clear_in; + Revap = Revap * multiplier + + disc->Rin * (1.0 - multiplier); + disc->Revap_in = MAX(disc->Revap_in, + Revap); + } + + if(!FEQUAL(a_clear_out, disc->Rout)) + { + double Revap = a_clear_out; + Revap = Revap * multiplier + + disc->Rout * (1.0 - multiplier); + disc->Revap_out = MAX(disc->Revap_out, + Revap); + } + + + } + + + Discdebug(2, + "OWEN VISC EVAP Revap_in = %g %s (Rin %g %s Rout %g %s)\n", + Solar(disc->Revap_in,R), + Solar(disc->Rin,R), + Solar(disc->Rout,R)); + } + } + else + { + disc->suppress_viscous_inflow = FALSE; + } + } + else + { + disc->suppress_viscous_inflow = FALSE; + } - /* - * Derivatives which change global disc structure - */ - { /* - * Global disc mass loss and associated angular momentum loss. - * NB This is negative and is given as Msun/year - * in stardata->preferences. - */ - double mdot = - M_SUN / YEAR_LENGTH_IN_SECONDS * - stardata->preferences->cbdisc_mass_loss_constant_rate; - disc->loss[DISC_LOSS_GLOBAL].mdot = multiplier * mdot; - disc->loss[DISC_LOSS_GLOBAL].jdot = multiplier * disc->J / disc->M * mdot; - disc->loss[DISC_LOSS_GLOBAL].edot = 0.0; - } + // test Fig.4 of Owen+ 2012 + { - Discdebug(2,"Torque"); - { + binary->mtot = 0.7 * M_SUN; + + for(double logLX=28.0; logLX<31.0; logLX += 0.2) + { + double LX = pow(10.0,logLX); + binary->LX = LX; + double MM = disc_Owen_2012_total_mdot(binary); + printf("LX %g %g %g\n",logLX,LX,MM/M_SUN*YEAR_LENGTH_IN_SECONDS); + } + Binary_c_exit_no_stardata(0,"Exit after showing Owen data"); + } + */ + /* - * Torque because of the inner binary + * Owen et al. (2012) give d(Sigma)/dt. Use this to calculate + * the mass loss rate from the disc between Rin and Rout, + * and take the angular momentum from the whole disc. * - * NB This is positive angular momentum transfer from the binary - * to the disc. + * Note, we use the */ - disc->loss[DISC_LOSS_BINARY_TORQUE].mdot = 0.0; - disc->loss[DISC_LOSS_BINARY_TORQUE].jdot = 1.0 * disc->torqueF * - disc_binary_angular_momentum_flux(disc,binary); - disc->loss[DISC_LOSS_BINARY_TORQUE].edot = 0.0; - - /* - * Perhaps resonance eccentricity pumping - */ -#ifdef CBDISC_ECCENTRICITY_PUMPING - disc->loss[DISC_LOSS_RESONANCES].mdot = 0.0; - cbdisc_eccentricity_pumping_rate(stardata, - disc, - binary, - &disc->loss[DISC_LOSS_RESONANCES].edot, - &disc->loss[DISC_LOSS_RESONANCES].jdot); -#else - disc->loss[DISC_LOSS_RESONANCES].mdot = 0.0; - disc->loss[DISC_LOSS_RESONANCES].jdot = 0.0; - disc->loss[DISC_LOSS_RESONANCES].edot = 0.0; -#endif - } + if(IS_REALLY_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_Xray_multiplier)) + { + double mdot = disc_Owen_2012_sigmadot_integral(disc, + binary, + (IS_ZERO(disc->Revap_in) ? disc->Rin : MIN(disc->Revap_in,disc->Rin)), + disc->Rout); + Discdebug(2, + "OWEN wants %g Msun/y (Revap_in = %g, Rin = %g, Rout = %g) (Rsun)\n", + mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, + disc->Revap_in / R_SUN, + disc->Rin / R_SUN, + disc->Rout / R_SUN); + + double jdot = disc_Owen_2012_angmom_integral( + disc, + binary, + (IS_ZERO(disc->Revap_in) ? disc->Rin : MIN(disc->Revap_in,disc->Rin)), + disc->Rout); + + mdot *= stardata->preferences->cbdisc_mass_loss_Xray_multiplier; + jdot *= stardata->preferences->cbdisc_mass_loss_Xray_multiplier; + + if(DISC_DEBUG>=2) + { + const double inf = disc_Owen_2012_sigmadot_integral(disc, + binary, + 0.0, + disc->Rout); + Discdebug(2, + "OWEN mdot = %g Msun/y (over infinite disc %g)\n", + mdot/M_SUN*YEAR_LENGTH_IN_SECONDS, + inf/M_SUN*YEAR_LENGTH_IN_SECONDS); + Discdebug(2, + "OWEN jdot = %g : timescale %g / %g = %g y\n", + jdot, + disc->J, + jdot, + -disc->J/jdot/YEAR_LENGTH_IN_SECONDS); + } + + disc->loss[DISC_LOSS_XRAY].mdot = multiplier * mdot; + disc->loss[DISC_LOSS_XRAY].jdot = multiplier * jdot; + Discdebug(2, + "mdot Xray outside Revap_in = %g, jdot = %g\n",mdot,jdot); + } + + Discdebug(2, + "Saving some disc properties Rin=%g %s Rout=%g %s Revap_in=%g %s Revap_out=%g %s J=%g\n", + Solar(disc->Rin,R), + Solar(disc->Rout,R), + Solar(disc->Revap_in,R), + Solar(disc->Revap_out,R), + disc->J); + - /* - * Specific angular momentum at the disc's inner edge - */ - double h_inner_edge = POW2(disc->Rin) * - disc_orbital_frequency(disc->Rin,binary); - Discdebug(2,"Viscous"); - - if(IS_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_inner_viscous_multiplier) - && - disc->Xray_wind_dominated == FALSE) - { /* - * Inner edge mass viscous loss. - * NB this is negative. + * Edge-stripping derivatives are set and applied + * in disc_edge_stripping, but need to be initialized + * here. */ - double mdot = -disc_mass_inflow_rate(disc->Rin,disc,binary) * - stardata->preferences->cbdisc_mass_loss_inner_viscous_multiplier; - disc->loss[DISC_LOSS_INNER_VISCOUS].mdot = multiplier * mdot; - disc->loss[DISC_LOSS_INNER_VISCOUS].jdot = multiplier * mdot * h_inner_edge; - disc->loss[DISC_LOSS_INNER_VISCOUS].edot = 0.0; - - /* - double tvisc_in = disc_viscous_timescale(disc->Rin, - disc, - binary); - double mdot_approx = - disc->M / tvisc_in; - double mdot_visc_in = -disc_mass_inflow_rate(disc->Rin,disc,binary); - double mdot_visc_out = -disc_mass_inflow_rate(disc->Rout,disc,binary); - - printf("MDOT %g discM/tvisc_in=%g cf. inner %g outer %g\n", - mdot, - mdot_approx, - mdot_visc_in, - mdot_visc_out); - */ - } - else - { - disc->loss[DISC_LOSS_INNER_VISCOUS].mdot = 0.0; - disc->loss[DISC_LOSS_INNER_VISCOUS].jdot = 0.0; - disc->loss[DISC_LOSS_INNER_VISCOUS].edot = 0.0; - } + disc->loss[DISC_LOSS_INNER_EDGE].mdot = 0.0; + disc->loss[DISC_LOSS_INNER_EDGE].jdot = 0.0; + disc->loss[DISC_LOSS_INNER_EDGE].edot = 0.0; + disc->loss[DISC_LOSS_OUTER_EDGE].mdot = 0.0; + disc->loss[DISC_LOSS_OUTER_EDGE].jdot = 0.0; + disc->loss[DISC_LOSS_OUTER_EDGE].edot = 0.0; + + Discdebug(2, + "Is disc wind dominated? %s\n", + Yes_or_no(disc->suppress_viscous_inflow)); + + + Discdebug(2, + "Global derivatives (disc: M=%g J=%g)\n", + disc->M/M_SUN, + disc->J); - Discdebug(2, - "L2 cross"); - - if(IS_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier)) - { /* - * Inner edge inside L2 loss - * NB this is negative. + * Derivatives which change global disc structure */ - double mdot = - stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier * - MAX(0.0,log10(binary->separation / disc->Rin)); - disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot = multiplier * mdot; - disc->loss[DISC_LOSS_INNER_L2_CROSSING].jdot = multiplier * mdot * h_inner_edge; - disc->loss[DISC_LOSS_INNER_L2_CROSSING].edot = 0.0; - } - else - { - disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot = 0.0; - disc->loss[DISC_LOSS_INNER_L2_CROSSING].jdot = 0.0; - disc->loss[DISC_LOSS_INNER_L2_CROSSING].edot = 0.0; - } + { + /* + * Global disc mass loss and associated angular momentum loss. + * NB This is negative and is given as Msun/year + * in stardata->preferences. + */ + double mdot = - M_SUN / YEAR_LENGTH_IN_SECONDS * + stardata->preferences->cbdisc_mass_loss_constant_rate; + disc->loss[DISC_LOSS_GLOBAL].mdot = multiplier * mdot; + disc->loss[DISC_LOSS_GLOBAL].jdot = multiplier * disc->J / disc->M * mdot; + disc->loss[DISC_LOSS_GLOBAL].edot = 0.0; + } - Discdebug(2, - "Ram strip"); + Discdebug(2,"Torque\n"); + { + /* + * Torque because of the inner binary + * + * NB This is positive angular momentum transfer from the binary + * to the disc. + * + * NB We should use the preferences->cbdisc_torqueF parameter + * here, not the disc's torquef (which may be used to set Rin=Revap_in). + */ + disc->loss[DISC_LOSS_BINARY_TORQUE].mdot = 0.0; + disc->loss[DISC_LOSS_BINARY_TORQUE].jdot = 1.0 * stardata->preferences->cbdisc_torqueF * + disc_binary_angular_momentum_flux(disc,binary); + disc->loss[DISC_LOSS_BINARY_TORQUE].edot = 0.0; - if(IS_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_ISM_ram_pressure_multiplier)) - { - /* - * ISM disc truncation by ram stripping. - * - * Calculate ISM pressure and outer edge gravitational pressure. - * - * x is the ratio of the ISM pressure to gravitational pressure - * at the outer edge of the disc. - */ - double P_ISM = stardata->preferences->cbdisc_mass_loss_ISM_pressure*BOLTZMANN_CONSTANT; - double P_grav = disc_gravitational_pressure(disc->Rout,disc,binary); - double x = P_ISM / P_grav; - Discdebug(2, - "PISM = %g Pgrav = %g ", - P_ISM, - P_grav); + /* + * Perhaps resonance eccentricity pumping + */ +#ifdef CBDISC_ECCENTRICITY_PUMPING + disc->loss[DISC_LOSS_RESONANCES].mdot = 0.0; + cbdisc_eccentricity_pumping_rate(stardata, + disc, + binary, + &disc->loss[DISC_LOSS_RESONANCES].edot, + &disc->loss[DISC_LOSS_RESONANCES].jdot); +#else + disc->loss[DISC_LOSS_RESONANCES].mdot = 0.0; + disc->loss[DISC_LOSS_RESONANCES].jdot = 0.0; + disc->loss[DISC_LOSS_RESONANCES].edot = 0.0; +#endif + } - /* - * Set smoothing to TRUE usually, otherwise there may be - * a spiky ISM mass loss rate because of numerical instability. - */ - const Boolean smoothing = TRUE; - /* - * Smoothing: apply if ISM pressure is within 1e-3 of the gravitational pressure - * - * No-smoothing: apply if ISM pressure exceeds gravitational pressure - */ - if((smoothing==TRUE && x>1e-3) - || - (smoothing==FALSE && MORE_OR_EQUAL(x,1.0))) + Discdebug(2,"Viscous\n"); + + if(IS_NOT_ZERO(1+stardata->preferences->cbdisc_mass_loss_inner_viscous_multiplier) + && + disc->suppress_viscous_inflow == FALSE) + { + /* + * Inner edge mass viscous loss which falls onto the binary. + * NB this is negative. + */ + double mdot = -disc_mass_inflow_rate(disc->Rin,disc,binary) * + stardata->preferences->cbdisc_mass_loss_inner_viscous_multiplier; + disc->loss[DISC_LOSS_INNER_VISCOUS].mdot = mdot * multiplier; + disc->loss[DISC_LOSS_INNER_VISCOUS].jdot = mdot * multiplier * h_inner_edge * + stardata->preferences->cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier; + disc->loss[DISC_LOSS_INNER_VISCOUS].edot = 0.0; + } + else { - /* smoothing factor : prevents oscillation */ - double fsmooth = smoothing==TRUE ? - 1.0/(1.0 + pow(1e-15, x - 1.0)) : 1.0; + disc->loss[DISC_LOSS_INNER_VISCOUS].mdot = 0.0; + disc->loss[DISC_LOSS_INNER_VISCOUS].jdot = 0.0; + disc->loss[DISC_LOSS_INNER_VISCOUS].edot = 0.0; + } + + Discdebug(2,"Ram strip\n"); + if(IS_NOT_ZERO(stardata->preferences->cbdisc_mass_loss_ISM_ram_pressure_multiplier)) + { /* - * Find the radius at which we should lose mass, and then - * the mass and angular momentum outside that radius which should - * be stripped. - * - * If we apply smoothing, increase the pressure target so that - * its radius is inside the disc. fsmooth<=1 so P_ISM/fsmooth is - * larger (or equal to) than P_ISM, always. + * ISM disc truncation by ram stripping. */ - double Ptarget = smoothing==TRUE ? - (P_ISM/MAX(1e-3,MIN(fsmooth,1.0))) : P_ISM; - - double P = disc_pressure(disc->Rout,disc,binary); - double R = disc_pressure_radius(disc,binary,Ptarget); - double M = disc_partial_mass(disc,R,disc->Rout); - double J = disc_partial_angular_momentum(disc,binary,R,disc->Rout); - double f = - stardata->preferences->cbdisc_mass_loss_ISM_ram_pressure_multiplier; + double P_ISM = stardata->preferences->cbdisc_mass_loss_ISM_pressure*BOLTZMANN_CONSTANT; + + if(stardata->preferences->cbdisc_outer_edge_stripping == FALSE) + { + /* + * Apply RAM-stripping rate as a smoothed, global rate. + * + * Calculate ISM pressure and outer edge gravitational pressure. + * + * x is the ratio of the ISM pressure to gravitational pressure + * at the outer edge of the disc. + */ + + double P_grav = disc_gravitational_pressure(disc->Rout,disc,binary); + double x = P_ISM / P_grav; + Discdebug(2, + "PISM = %g (=%g k/K) Pgrav = %g ", + P_ISM, + P_ISM / BOLTZMANN_CONSTANT, + P_grav); + + /* + * Set smoothing to TRUE usually, otherwise there may be + * a spiky ISM mass loss rate because of numerical instability. + */ + const Boolean smoothing = TRUE; + + /* + * Smoothing: apply if ISM pressure is within 1e-3 of the gravitational pressure + * + * No-smoothing: apply if ISM pressure exceeds gravitational pressure + */ + if((smoothing==TRUE && x>1e-3) + || + (smoothing==FALSE && MORE_OR_EQUAL(x,1.0))) + { + /* smoothing factor : prevents oscillation */ + double fsmooth = smoothing==TRUE ? + 1.0/(1.0 + pow(1e-15, x - 1.0)) : 1.0; + /* + * Find the radius at which we should lose mass, and then + * the mass and angular momentum outside that radius which should + * be stripped. + */ - disc->PISM = Ptarget; - disc->RISM = R; - - f *= fsmooth; - /* stability factor */ - f *= pow(P_ISM/P,0.5); - disc->loss[DISC_LOSS_ISM].mdot = multiplier * f * M / disc->dt; - disc->loss[DISC_LOSS_ISM].jdot = multiplier * f * J / disc->dt; - disc->loss[DISC_LOSS_ISM].edot = 0.0; + /* + * If we apply smoothing, increase the pressure target so that + * its radius is inside the disc. fsmooth<=1 so P_ISM/fsmooth is + * larger (or equal to) than P_ISM, always. + */ + double Ptarget = smoothing==TRUE ? + (P_ISM/MAX(1e-3,MIN(fsmooth,1.0))) : P_ISM; + + double P = disc_pressure(disc->Rout,disc,binary); + double R = disc_pressure_radius(disc,binary,Ptarget); + double M = disc_partial_mass(disc,R,disc->Rout); + double J = disc_partial_angular_momentum(disc,binary,R,disc->Rout); + double f = - stardata->preferences->cbdisc_mass_loss_ISM_ram_pressure_multiplier; + + disc->PISM = Ptarget; + disc->RISM = R; + + /* stability factor */ + f *= fsmooth * pow(P_ISM/P,0.5); + + disc->loss[DISC_LOSS_ISM].mdot = multiplier * f * M / disc->dt; + disc->loss[DISC_LOSS_ISM].jdot = multiplier * f * J / disc->dt; + disc->loss[DISC_LOSS_ISM].edot = 0.0; - /* lose at most 10% of the disc in one timestep */ - double f0 = - MIN(0.1, - - disc->loss[DISC_LOSS_ISM].mdot * disc->dt / - disc->M); + /* lose at most 10% of the disc in one timestep */ + double f0 = + MIN(0.1, + - disc->loss[DISC_LOSS_ISM].mdot * disc->dt / + disc->M); - disc->loss[DISC_LOSS_ISM].mdot *= f0; - disc->loss[DISC_LOSS_ISM].jdot *= f0; + disc->loss[DISC_LOSS_ISM].mdot *= f0; + disc->loss[DISC_LOSS_ISM].jdot *= f0; + + Discdebug(2, + "ram stripping via global : mdot = %g * %g (=%g Msun) / %g = %g (Msun/year) (f=%g, Pout=%g, Ptarget=%g, Rtarget=%g [disc Rin = %g, Rout = %g] Moutside=%g Msun, Joutside=%g) mass lost = %g cf disc mass %g, f0 = %g\n", + f, + M, + M/M_SUN, + disc->dt, + disc->loss[DISC_LOSS_ISM].mdot/(M_SUN/YEAR_LENGTH_IN_SECONDS), + f, + P, + Ptarget, + R, + disc->Rin, + disc->Rout, + M/M_SUN, + J, + disc->loss[DISC_LOSS_ISM].mdot * disc->dt + / M_SUN, + disc->M / M_SUN, + f0 + ); + } + } + else + { + if(edges == TRUE) + { + /* + * Apply RAM stripping by directly specifying Revap_out. + * + * Interpolate according to the multiplier. + */ + double R = + disc_pressure_radius(disc,binary,P_ISM) * multiplier + + + disc->Rout * (1.0 - multiplier); + + // test function + //R = MAX(1e5,1e6 - disc->lifetime/YEAR_LENGTH_IN_SECONDS*100.0) * R_SUN; + disc->Revap_out = + IS_REALLY_ZERO(disc->Revap_out) ? R : MIN(disc->Revap_out,R); - Discdebug(2, - "ISM ram stripping : mdot = %g * %g / %g = %g (Msun/year) (f=%g, Pout=%g, Ptarget=%g, Rtarget=%g [disc Rin = %g, Rout = %g] Moutside=%g Msun, Joutside=%g) mass lost = %g cf disc mass %g, f0 = %g\n", - f, - M, - disc->dt, - disc->loss[DISC_LOSS_ISM].mdot/(M_SUN/YEAR_LENGTH_IN_SECONDS), - f, - P, - Ptarget, - R, - disc->Rin, - disc->Rout, - M/M_SUN, - J, - disc->loss[DISC_LOSS_ISM].mdot * disc->dt - / M_SUN, - disc->M / M_SUN, - f0 - ); + disc->RISM = R; + disc->loss[DISC_LOSS_ISM].mdot = 0.0; + disc->loss[DISC_LOSS_ISM].jdot = 0.0; + disc->loss[DISC_LOSS_ISM].edot = 0.0; + Discdebug(2, + "\nSTRIP t=%g Ram stripping via Revap : PISM %g == RISM %g cf Rout %g (m out there %g = %5.2f %%, disc M %g) Revap_out = %g\n", + disc->lifetime, + P_ISM,R,disc->Rout, + disc_partial_mass(disc,R,disc->Rout)/M_SUN, + 100.0*disc_partial_mass(disc,R,disc->Rout)/disc->M, + disc->M/M_SUN, + disc->Revap_out + ); + } + } } else { @@ -500,64 +613,68 @@ void disc_derivatives(struct disc_t * disc, disc->loss[DISC_LOSS_ISM].jdot = 0.0; disc->loss[DISC_LOSS_ISM].edot = 0.0; } - } - else - { - disc->loss[DISC_LOSS_ISM].mdot = 0.0; - disc->loss[DISC_LOSS_ISM].jdot = 0.0; - disc->loss[DISC_LOSS_ISM].edot = 0.0; - } - - if(stardata->preferences->cbdisc_viscous_photoevaporation_coupling == TRUE) - { - disc->Rin = MIN(disc->Rin, disc->Revap); - } - /* - * Do not allow any one loss mechanism to take - * more than 10% of the mass. - */ - int l; - if(0) - { - double mdot_limit = 0.1 * disc->M / disc->dt; - for(l=0;l<DISC_LOSS_N;l++) + /* + * Do not allow any one loss mechanism to take + * more than 10% of the mass. + */ + int l; + if(0) { - Discdebug(2, - "%d : CF Mdot = %g vs limit %g\n", - l, - - disc->loss[l].mdot, - mdot_limit); - - if(- disc->loss[l].mdot > mdot_limit) + double mdot_limit = 0.1 * disc->M / disc->dt; + for(l=0;l<DISC_LOSS_N;l++) { - double f = mdot_limit / -disc->loss[l].mdot; - disc->loss[l].mdot *= f; - disc->loss[l].jdot *= f; - disc->loss[l].edot *= f; - if(l == DISC_LOSS_XRAY) + Discdebug(2, + "%d : CF Mdot = %g vs limit %g\n", + l, + - disc->loss[l].mdot, + mdot_limit); + + if(- disc->loss[l].mdot > mdot_limit) { - disc->Jdot_evap *= f; + double f = mdot_limit / -disc->loss[l].mdot; + disc->loss[l].mdot *= f; + disc->loss[l].jdot *= f; + disc->loss[l].edot *= f; } } + printf("Mdot max %g Msun/y\n",mdot_limit/M_SUN*YEAR_LENGTH_IN_SECONDS); } - printf("Mdot max %g Msun/y\n",mdot_limit/M_SUN*YEAR_LENGTH_IN_SECONDS); - } + #ifdef __DERIVDEBUG -//#if 1 - printf("multiplier %g\n",multiplier); Discdebug(2,"done derivs"); - for(l=0;l<DISC_LOSS_N;l++) + for(l=0;l<DISC_LOSS_N;l++) + { + /* + disc->loss[l].mdot = 0.0; + disc->loss[l].jdot = 0.0; + disc->loss[l].edot = 0.0; + */ + Show_disc_derivative(l); + } + printf("Evaporation from edges: Revap_in = %g, Revap_out = %g, Jdot evap %g (cf Flux %g)\n", + disc->Revap_in/R_SUN, + disc->Revap_out/R_SUN, + disc->F_stripping_correction, + disc->F); +#endif + } + + /* + * Check edge stripping: + * + * If it is off, set the appropriate radius to 0.0 so it is ignored. + */ + if(stardata->preferences->cbdisc_outer_edge_stripping == FALSE) { - /* - disc->loss[l].mdot = 0.0; - disc->loss[l].jdot = 0.0; - disc->loss[l].edot = 0.0; - */ - Show_disc_derivative(l); + disc->Revap_out = 0.0; + } + + if(stardata->preferences->cbdisc_inner_edge_stripping == FALSE) + { + disc->Revap_in = 0.0; } -#endif } #endif // DISCS diff --git a/src/disc/disc_determine_zone_radii.c b/src/disc/disc_determine_zone_radii.c index 27e563c20a62a54b84a0902ddee39cbada3cd466..f766f7ea6f50dac2aa77058e77c63dc941537be7 100644 --- a/src/disc/disc_determine_zone_radii.c +++ b/src/disc/disc_determine_zone_radii.c @@ -1,20 +1,13 @@ #include "../binary_c.h" #ifdef DISCS -#include "disc.h" -#include "disc_adam.h" +//#undef DEBUG_ZONE_RADII +//#define DEBUG_ZONE_RADII 1 -Boolean disc_determine_zone_radii(struct disc_t * disc, - struct binary_system_t * binary) +Boolean disc_determine_zone_radii(struct disc_t * disc) { /* - * Second attempt at setting up zone radii, - * only for three zones. - * - * This is far less satisfying the general - * solution in disc_determine_zone_radii(), but - * seems to be monotonic in the mass as a function - * of sigma0 (which we require!). + * Determine disc zone radii */ @@ -28,7 +21,7 @@ Boolean disc_determine_zone_radii(struct disc_t * disc, */ struct disc_thermal_zone_t P[DISCS_MAX_N_ZONES+1]; - int i,nzones=3; + Disc_zone_counter i,nzones=3; /* * Set up list of all three zones in order @@ -87,7 +80,7 @@ Boolean disc_determine_zone_radii(struct disc_t * disc, for(i=0;i<nzones;i++) { Clamp(P[i].rstart, disc->Rin, disc->Rout); - Clamp(P[i].rend, disc->Rin, disc->Rout); + Clamp(P[i].rend, disc->Rin, disc->Rout); } if(DEBUG_ZONE_RADII) @@ -141,41 +134,9 @@ Boolean disc_determine_zone_radii(struct disc_t * disc, } /* - * Enter appropriate radii into the temperature power law + * Set up the temperature power laws */ - for(i=0;i<disc->n_thermal_zones;i++) - { - struct disc_thermal_zone_t * z = &disc->thermal_zones[i]; - z->Tlaw.R0 = z->rstart; - z->Tlaw.R1 = z->rend; - double width = z->rend - z->rstart; - if(width < DISC_MINIMUM_THERMAL_ZONE_WIDTH) - { - Exit_binary_c_no_stardata( - 2,"ZONE %d is too small! (width=%g, lower limit = %g)\n", - i,width,DISC_MINIMUM_THERMAL_ZONE_WIDTH); - } - } - - /* - * Set the inner temperature power law temperature at R0, T0, and hence T1 at R1 - */ - double Tin = disc->thermal_zones[0].Tlaw.A0 * pow(disc->thermal_zones[0].Tlaw.R0, - disc->thermal_zones[0].Tlaw.exponent); - update_power_law(&disc->thermal_zones[0].Tlaw,Tin,0); - - /* - * And match the temperatures at zone boundaries such that - * the temperature power law is continuous - */ - if(disc->n_thermal_zones>1) - { - for(i=1;i<disc->n_thermal_zones;i++) - { - match_power_laws(&disc->thermal_zones[i-1].Tlaw, - &disc->thermal_zones[i].Tlaw); - } - } + disc_set_temperature_power_laws(disc); if(DEBUG_ZONE_RADII) { diff --git a/src/disc/disc_edge_loss_angular_momentum_flux.c b/src/disc/disc_edge_loss_angular_momentum_flux.c new file mode 100644 index 0000000000000000000000000000000000000000..a2e4a73eda6872c9de17d1f02a3f9899baaae497 --- /dev/null +++ b/src/disc/disc_edge_loss_angular_momentum_flux.c @@ -0,0 +1,32 @@ +#include "../binary_c.h" + +#ifdef DISCS + +void disc_edge_loss_angular_momentum_flux(struct disc_t * disc, + const struct binary_system_t * binary) +{ + + /* + * Calculate corrections to the angular momentum flux + * caused because of edge stripping. + * + * Note that both the mdot terms are negative. + */ + if(Disc_is_disc(disc) && + !FEQUAL(disc->Rin, disc->Rout)) + { + disc->F_stripping_correction = + 1.0/(disc->Rout - disc->Rin) * + (disc->loss[DISC_LOSS_OUTER_EDGE].mdot - + disc->loss[DISC_LOSS_INNER_EDGE].mdot) + / disc->M * + disc_total_angular_momentum_flux_correction(disc,binary); + } + else + { + disc->F_stripping_correction = 0.0; + } +} + + +#endif //DISCS diff --git a/src/disc/disc_edge_stripping.c b/src/disc/disc_edge_stripping.c new file mode 100644 index 0000000000000000000000000000000000000000..b96e780eea15999f75b9b5b4d3965d7583339b65 --- /dev/null +++ b/src/disc/disc_edge_stripping.c @@ -0,0 +1,138 @@ +#include "../binary_c.h" +#ifdef DISCS + +void disc_edge_stripping(struct stardata_t * stardata, + struct disc_t * newdisc, + struct disc_t * olddisc, + const struct binary_system_t * binary) +{ + /* + * By default, apply no correction to the angular momentum flux + */ + newdisc->F_stripping_correction = 0.0; + + /* + * Perform outer edge mass loss + */ + if(stardata->preferences->cbdisc_outer_edge_stripping==TRUE) + { + disc_outer_edge_mass_loss(stardata,newdisc,olddisc,binary); + + if(IS_NOT_ZERO(olddisc->Revap_out) && + !FEQUAL(olddisc->Revap_out,newdisc->Revap_out)) + { + if(newdisc->Revap_out < olddisc->Revap_out) + { + /* + * New material is caught up in the stripping which should + * be removed. This material is now gone, along with its + * angular momentum, and there is no adjustment to the + * angular momentum flux. + */ + } + else + { + /* + * newdisc->Revap_out > olddisc->Revap_out + * + * The disc expands outwards to fill the gap. + * + * No mass is lost. + * + * Suppress viscous inflow which would have flowed + * through this inner edge, and adjust the angular momentum + * flux. + */ + newdisc->F_stripping_correction += + 1.0/(olddisc->Rout - olddisc->Rin) * + newdisc->loss[DISC_LOSS_OUTER_EDGE].mdot + / olddisc->M * + disc_total_angular_momentum_flux_correction(olddisc,binary); + newdisc->loss[DISC_LOSS_OUTER_EDGE].mdot = 0.0; + newdisc->loss[DISC_LOSS_OUTER_EDGE].jdot = 0.0; + newdisc->loss[DISC_LOSS_OUTER_EDGE].edot = 0.0; + } + } + +#ifdef __DO_NOT_BUILD + if(0) + printf("REVAP OUT was %g is %g : %s ... mdot = %g, jdot = %g, Fcorr = %g\n", + olddisc->Revap_out, + newdisc->Revap_out, + + ( + FEQUAL(newdisc->Revap_out, olddisc->Revap_out) ? "=" : + newdisc->Revap_out < olddisc->Revap_out ? "<" : + ">" + ), + newdisc->loss[DISC_LOSS_OUTER_EDGE].mdot * YEAR_LENGTH_IN_SECONDS / M_SUN, + newdisc->loss[DISC_LOSS_OUTER_EDGE].jdot, + newdisc->F_stripping_correction + ); +#endif + } + + /* + * Perform inner edge mass loss + */ + if(stardata->preferences->cbdisc_inner_edge_stripping==TRUE) + { + disc_inner_edge_mass_loss(stardata,newdisc,olddisc,binary); + +#if 0 + printf("REVAP was %g %s now %g %s\n", + Solar(olddisc->Revap_in,R), + Solar(newdisc->Revap_in,R)); +#endif + if(IS_NOT_ZERO(olddisc->Revap_in) + && + !FEQUAL(olddisc->Revap_in,newdisc->Revap_in)) + { + if(newdisc->Revap_in > olddisc->Revap_in) + { + /* + * New material is caught up in the stripping which should + * be removed. This material is now gone, along with its + * angular momentum, and there is no adjustment to the + * angular momentum flux. + */ + } + else + { + printf("Disc moves inwards\n"); + + /* + * Revap_in moves inwards + * + * The disc can expand inwards to fill the gap, + * no extra mass is lost. + * + * Suppress viscous inflow which would have flowed + * through this inner edge, and adjust the angular momentum + * flux. + */ + newdisc->suppress_viscous_inflow = TRUE; + newdisc->F_stripping_correction -= + 1.0/(olddisc->Rout - olddisc->Rin) * + newdisc->loss[DISC_LOSS_INNER_EDGE].mdot + / olddisc->M * + disc_total_angular_momentum_flux_correction(olddisc,binary); + newdisc->loss[DISC_LOSS_INNER_EDGE].mdot = 0.0; + newdisc->loss[DISC_LOSS_INNER_EDGE].jdot = 0.0; + newdisc->loss[DISC_LOSS_INNER_EDGE].edot = 0.0; + } + } + } + + if(0 && + stardata->star[0].stellar_type == 6 && + stardata->star[0].mass - stardata->star[0].core_mass < 0.1 && + IS_ZERO(olddisc->Revap_in) && + IS_NOT_ZERO(newdisc->Revap_in)) + { + Exit_binary_c(2,"temp exit"); + } +} + + +#endif diff --git a/src/disc/disc_evaporate_cbdiscs.c b/src/disc/disc_evaporate_cbdiscs.c index 652e1fbf8994cb2d5cf2e44b42106fdf0984a308..7f3532b8d5acaf5cfa5b7d548b93b6ec26b622f4 100644 --- a/src/disc/disc_evaporate_cbdiscs.c +++ b/src/disc/disc_evaporate_cbdiscs.c @@ -13,20 +13,17 @@ void disc_evaporate_cbdiscs(struct stardata_t * stardata) if(stardata->common.discs[i].M > 0.0) { struct disc_t * disc = &stardata->common.discs[i]; - Set_logstring(LOG_DISC, - "Evaporate disc (system becomes single) age %g y, M %g Msun, L = %g Lsun, Rin = %g Rsun, Rout = %g Rsun", - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - disc->M/M_SUN, - disc_total_luminosity(disc)/L_SUN, - disc->Rin/R_SUN, - disc->Rout/R_SUN); + Append_logstring(LOG_DISC, + "Evaporate disc (system becomes single) age %g y, M %g Msun, L = %g Lsun, Rin = %g Rsun, Rout = %g Rsun", + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + disc->M/M_SUN, + disc_total_luminosity(disc)/L_SUN, + disc->Rin/R_SUN, + disc->Rout/R_SUN); - disc->M = 0; - /* - remove_disc(DISC_CIRCUMBINARY, - stardata, - i); - */ + disc->M = 0.0; + disc->J = 0.0; + disc->F = 0.0; } } } diff --git a/src/disc/disc_evolve_disc_structure.c b/src/disc/disc_evolve_disc_structure.c index 8d8557c7ef391d9ad1ec8bd575d8ef3c24d59afc..ab4c33a47974bff405ec84866cc9736908bae81d 100644 --- a/src/disc/disc_evolve_disc_structure.c +++ b/src/disc/disc_evolve_disc_structure.c @@ -3,30 +3,19 @@ #ifdef DISCS -#include "disc.h" -static double calc_natural_timestep( struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary, - const double dt); -static void set_disc_timestep(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary, - const double dt); -static char * disc_failure_mode(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary, - const int status); +#include "disc_evolve_disc_structure.h" + +/* + * Evolve the disc for time dt (seconds). + * + * Returns the lifetime of the disc, or 0 if the + * system is single (which means there can be no disc). + */ double disc_evolve_disc_structure(struct stardata_t * stardata, struct disc_t * disc, double dt) { - /* - * Evolve the disc for time dt (seconds) - * - * Returns the lifetime of the disc, or 0 if the - * system is single (which means there can be no disc). - */ #ifdef TEST_POWER_LAW_API /* or test the power law API */ test_power_law_API(); @@ -36,22 +25,26 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, * Set the internal binary-star information structure */ struct binary_system_t * binary = CALLOC(1,sizeof(struct binary_system_t)); - disc_init_binary_structure(stardata,binary); - + disc_init_binary_structure(stardata,binary,disc); + /* * Check the system is a binary star */ Boolean system_is_binary = Boolean_( binary->separation > TINY && - IS_NOT_ZERO(binary->m1) && - IS_NOT_ZERO(binary->m2) + NEITHER_ZERO(binary->m1,binary->m2) ); /* - * Disc lifetime : returned (zero if single) + * Time for which the disc is evolved in this subroutine */ double t = 0.0; + /* + * Perhaps show the M,J parameter space? + */ + int show_MJ_space = 0; + if(system_is_binary==TRUE) { /* @@ -61,7 +54,7 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, * whether evolution is required or not. */ - struct disc_t * discwas = MALLOC(sizeof(struct disc_t)); + struct disc_t * discwas = New_disc; /* * If we have a previous disc structure, put it in @@ -69,7 +62,7 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, */ if(disc->converged == TRUE) { - memcpy(discwas,disc,sizeof(struct disc_t)); + Copy_disc(disc,discwas); } /* @@ -77,12 +70,6 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, */ Boolean first = Boolean_(IS_ZERO(disc->lifetime) || disc->first); - /* - * The derivative_multiplier enables us to modulate the - * derivatives and phase them in slowly on the first timestep. - */ - double derivative_multiplier = first == TRUE ? 1e-50 :1.0; - /* * Assume we can evolve to start with */ @@ -94,9 +81,9 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, */ if(first) { - Discdebug(1," %s ", - first==TRUE ? "first" : - disc->append==TRUE ? "append" : + Discdebug(1," %s \n", + first==TRUE ? "first timestep" : + disc->append==TRUE ? "append to previous disc" : "!conv"); /* @@ -108,6 +95,15 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, { disc->dt = DISC_MIN_TIMESTEP; } + + /* + * Perhaps explore the parameter space: + * if so, we exit here + */ + if(unlikely(show_MJ_space)) + { + disc_show_MJ_space(disc,binary,stardata); + } memset(disc->loss,0,sizeof(struct disc_loss_t)*DISC_LOSS_N); disc_initial_structure(disc, @@ -117,12 +113,19 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, first, &can_evolve); - + if(!Disc_is_disc(disc)) + { + can_evolve = FALSE; + } + if(can_evolve) { - Discdebug(1,"Have converged initial disc structure\n"); + Discdebug(1, + "Have converged initial disc structure with M=%g J=%g\n", + disc->M/M_SUN, + disc->J); disc->converged = TRUE; - memcpy(discwas,disc,sizeof(struct disc_t)); + Copy_disc(disc,discwas); } /* explore the parameter space */ @@ -137,52 +140,23 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, dt - t > TINY) { Discdebug(1, - "can_evolve (derivative mult %g) ", - derivative_multiplier); - - if(disc->converged == TRUE) + "can_evolve\n"); + + if(!Disc_is_disc(disc)) { - /* - * We have a previous (or initial) disc solution. - */ - - /* - * The disc is no longer converged because we're - * about to re-calculate its derivatives and its - * structure. - */ - disc->converged = FALSE; - - /* - * - * Calculate derivatives d(M,J,e)/dt - * - * These are modulated by derivative_multiplier. - * - * Note: if the disc is new, derivative_multiplier will - * be very small. - * If the disc is old, derivative_multiplier should be 1.0 - */ - Discdebug(1,"calcderivs (M=%g J=%g Rin=%30.20e Rout=%30.20e) ", - disc->M, - disc->J, - disc->Rin, - disc->Rout - ); - disc_derivatives(disc, - binary, - stardata, - dt, - derivative_multiplier); - Discdebug(1, - "derivsdone (converged = %d, multiplier %g) ", - disc->converged, - derivative_multiplier); + can_evolve = FALSE; + } + /* + * We have a previous (or initial) disc solution. + */ + if(disc->converged == TRUE && + can_evolve == TRUE) + { /* - * And hence the disc's timestep based on the derivatives. + * Set disc's timestep. */ - set_disc_timestep(stardata,disc,binary,dt); + disc_set_disc_timestep(stardata,disc,binary,dt); if(0) { @@ -195,8 +169,7 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, double H=disc_scale_height(R,disc,binary); double tbin = 2.0*PI/binary->omega; - - Discdebug(2, + printf( "SANITY 1 : R=%g H=%g : tvisc(Rout) = %g should be %g = %g\n", R,H, disc_viscous_timescale(R,disc,binary), @@ -206,49 +179,24 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, } /* - * Apply derivatives for either the disc's timestep or the + * Time for which we evolve the disc : + * either the disc's timestep or the * remaining time, whichever is shorter. */ double ddt = MIN(disc->dt, 1.00000001*(dt - t)); - Discdebug(1,"[ddt %g disc->dt=%g dt=%g t=%g] y ", + Discdebug(1,"[ddt %g disc->dt=%g dt=%g t=%g] y \n", ddt/YEAR_LENGTH_IN_SECONDS, disc->dt/YEAR_LENGTH_IN_SECONDS, dt/YEAR_LENGTH_IN_SECONDS, t/YEAR_LENGTH_IN_SECONDS); - /* - * Apply derivatives to update the disc's mass and - * angular momentum for the next timestep. - */ - Discdebug(2, - "doing Mdot\n"); - Boolean derivative_success; - disc_apply_derivatives(disc,stardata,ddt,&derivative_success); - Discdebug(1, - "deriv:F=%g (mult %g)\n ", - disc->F, - derivative_multiplier); - - /* - * The disc may have evaporated, in which case we should stop - */ - if(derivative_success == FALSE) - { - Discdebug(1,"deriv->fail "); - break; - } - else - { - Discdebug(1,"deriv->ok "); - } - + /* * Calculate the structure at the next timestep - * with the derivatives applied above. */ int status; - Discdebug(1,"\ncheck F %g\n",disc->F); + Discdebug(1,"check F %g\n",disc->F); if(disc->F < -TINY) { /* @@ -263,92 +211,37 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, else { Discdebug(2, - "calculate new structure : Rin=%g Rout=%g\n", - disc->Rin, - disc->Rout); + "calculate new structure : Rin = %g Rout = %g Revap_in = %g Revap_out = %g\n", + disc->Rin / R_SUN, + disc->Rout / R_SUN, + disc->Revap_in / R_SUN, + disc->Revap_out / R_SUN + ); /* - * Calculate disc structure taking derivatives - * into account + * Calculate disc structure a time ddt later. + * + * at the inner and outer edge. */ - status = disc_calc_disc_structure(binary,disc,stardata,t); + status = disc_calc_disc_structure(binary, + disc, + stardata, + t, + ddt); Discdebug(1,"structure -> status = %d\n",status); } - - /* - * If the derivative_multiplier < 1.0 then we're - * burning in the first timestep. Do not yet update the time. - */ - if(derivative_multiplier < 1.0 - TINY) - { - if(status == CONVERGENCE_SUCCEEDED) - { - /* - * Converged but with a derivative multiplier that is - * less than 1.0. Increase the multiplier (up to a maximum - * of 1.0) and try to go again. - */ - double M = disc_total_mass(disc); - double J = disc_total_angular_momentum(disc,binary); - double F = disc_total_angular_momentum_flux(disc,binary); - Discdebug(1, - "INTERMEDIATE mult %20.15g status %d : Sigma0 %g Rin %20.15g Rout %20.15g : M %20.15g (%20.15g) J %20.15g (%20.15g) F %20.15f (%20.15g)\n", - derivative_multiplier, - status, - disc->sigma0, - disc->Rin/R_SUN, - disc->Rout/R_SUN, - disc->M / M_SUN, - M / M_SUN, - disc->J, - J, - disc->F, - F - ); - - /* - * Phase in - */ - derivative_multiplier *= 1.2; - - - /* - * Or jump straight to the solution - */ - derivative_multiplier = 1.0; - - /* - * Keep in a reasonable range - */ - Clamp(derivative_multiplier,1e-50,1.0); - Discdebug(1, - "UP MULT %g (F=%g, converged=%d)\n", - derivative_multiplier, - disc->F, - disc->converged); - - /* - * Restart using this disc structure as the next's - * guess - */ - disc->converged = TRUE; - continue; - } - else - { - Discdebug(1,"\nfailed on burn in :( fixme!\n"); - can_evolve = FALSE; - disc->M = disc->J = 0.0; - break; - } - } /* - * Check for convergence failure. If this happens, restore the disc. + * Check for convergence failure. If this happens, + * restore the disc. */ if(status == CONVERGENCE_FAILED || status == CONVERGENCE_FLUX_NEGATIVE) { - Discdebug(1,"struct->fail(%s) restore and try with dt smaller ",Convergence_status(status)); + Discdebug( + 1, + "struct->fail(%d,%s) restore and try with dt smaller\n", + status, + Convergence_status(status)); /* * Try again with a smaller timestep if we are not shorter @@ -356,11 +249,28 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, */ double dtwas = disc->dt; double newdt = 0.1*dtwas/DISC_TIMESTEP_HIGH_FACTOR; - double mindt = YEAR_LENGTH_IN_SECONDS * - MIN(DISC_MINIMUM_TIMESTEP, + double mindt = + MIN(DISC_MIN_TIMESTEP, + YEAR_LENGTH_IN_SECONDS * stardata->preferences->minimum_timestep*1e6); - - if(disc->dt < mindt) + + if(disc->lifetime > DISC_MAX_LIFETIME) + { + /* + * Disc exceeds maxmimum age + */ + Discdebug(1, + "Stop disc evolution : disc age %g exceeds DISC_MAX_LIFETIME = %g\n", + disc->lifetime, + DISC_MAX_LIFETIME); + Append_logstring(LOG_DISC, + "Stop disc evolution : disc age %g exceeds DISC_MAX_LIFETIME = %g\n", + disc->lifetime, + DISC_MAX_LIFETIME); + Evaporate_disc(disc, + "Disc age exceeds limit"); + } + else if(disc->dt < mindt) { /* * Timestep too small : stop evolution @@ -368,24 +278,29 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, can_evolve = FALSE; if(disc->lifetime > TINY) { - Set_logstring(LOG_DISC, - "Stop disc evolution (dt = %g y too short, < mindt = %g) age %g y, M %g Msun, L = %g Lsun", - disc->dt/YEAR_LENGTH_IN_SECONDS, - mindt/YEAR_LENGTH_IN_SECONDS, - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - disc->M/M_SUN, - disc_total_luminosity(disc)/L_SUN); - - - Discdebug(1,"Disc failed to converged : exploring the parameter space\n"); - //disc_parameter_space(stardata,disc); - //Exit_binary_c(2,"Dt too small\n"); + Append_logstring(LOG_DISC, + "Stop disc evolution (dt = %g y too short, < mindt = %g) age %g y, M %g Msun, L = %g Lsun", + disc->dt/YEAR_LENGTH_IN_SECONDS, + mindt/YEAR_LENGTH_IN_SECONDS, + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + disc->M/M_SUN, + disc_total_luminosity(disc)/L_SUN); + + + Discdebug(1,"Disc failed to converge\n"); + if(0) + { + Discdebug(1,"exploring the parameter space\n"); + disc_parameter_space(stardata,disc); + Exit_binary_c(2,"Dt too small\n"); + } } else { Unset_logstring(LOG_DISC); } - disc->M = 0.0; + Evaporate_disc(disc, + "Disc timestep too small"); } else { @@ -393,8 +308,8 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, * Timestep allowed : try to converge */ can_evolve = TRUE; - memcpy(disc,discwas,sizeof(struct disc_t)); - disc->Jdot_evap = 0.0; + Copy_disc(discwas,disc); + disc->F_stripping_correction = 0.0; disc->dt = newdt; Discdebug(1, "Try dt %g m = %g j = %g\n", @@ -415,12 +330,11 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, * Converged on new structure with correct * derivatives. */ - Discdebug(1,"struct->ok "); - + Discdebug(1,"struct->ok\n"); + /* * Reset various flags that cannot apply twice */ - //disc->append = FALSE; disc->first = FALSE; /* @@ -432,9 +346,8 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, /* * Update ring detection parameter */ - disc->fRing = fabs(disc->Rout/disc->Rin - 1.0); - - + disc->fRing = IS_ZERO(disc->Rin) ? 0.0 : fabs(disc->Rout/disc->Rin - 1.0); + /* * Check for failure modes: failure_reason * is NULL if there is no failure. @@ -445,17 +358,29 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, status); if(failure_reason && disc->append==FALSE) { +#if defined DISC_LOG || defined DISC_LOG_2D + if(abs(stardata->preferences->disc_log) >= 2) + { + disc_logging(stardata, + binary, + DISC_LOG_EVOLVE_DISC_STRUCTURE2); + } +#endif // DISC_LOG or DISC_LOG_2D + Discdebug(1, - "\nDisc failure : %s", + "\nDisc failure : %s\n", failure_reason); - Set_logstring(LOG_DISC, - "Evaporate disc (%s) age %g y, M %g Msun, L = %g Lsun", - failure_reason, - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - disc->M/M_SUN, - disc_total_luminosity(disc)/L_SUN); + Append_logstring(LOG_DISC, + "Evaporate disc (%s) age %g y, M %g %s, L = %g %s, Rin=%g %s, Rout=%g %s", + failure_reason, + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + Solar(disc->M,M), + Solar(disc_total_luminosity(disc),L), + Solar(disc->Rin,R), + Solar(disc->Rout,R) + ); + Evaporate_disc(disc,failure_reason); Safe_free(failure_reason); - disc->M = disc->J = 0.0; /* * If the disc fails on this timestep, @@ -473,77 +398,8 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, */ Discdebug(1,"disc good\n"); -#if defined SHOW_TEST_EXPRESSIONS && SHOW_TEST_EXPRESSIONS==1 - double B = - pow(POW2(binary->Rstar) * (binary->flux/(4.0*STEFAN_BOLTZMANN_CONSTANT)) *sqrt(disc->gamma*BOLTZMANN_CONSTANT/ - (GRAVITATIONAL_CONSTANT*binary->mtot*M_PROTON)), - 2.0/7.0); - double Tin = disc_temperature(disc->Rin,disc); - Discdebug(2, - "B from (Tin=%g) %g should be %g\n", - Tin, - Tin * pow(disc->Rin,-3.0/7.0), - B - ); - - double sigmaRin = disc_column_density(disc->Rin,disc); - - Discdebug(2,"Sigma at Rin = %g\n",sigmaRin); - Discdebug(2,"Sigma0 = %g expressions give %g %g\n", - disc->sigma0, - sigmaRin * Tin * POW2(disc->Rin), - disc->F * disc->mu / (3.0 * PI * disc->alpha * - disc->gamma * BOLTZMANN_CONSTANT)); - - - double chi = disc->mu / - (3.0 *PI * disc->alpha * disc->gamma * BOLTZMANN_CONSTANT) /B; - if(DISC_DEBUG) - { - printf("chi is %g\n",chi); - printf("Mass integral gives %g\nExpression gives %g %g approx %g\n", - disc_total_mass(disc), - - 14.0/3.0 * PI * sigmaRin * POW2(disc->Rin) * - (pow(disc->Rout/disc->Rin, 3.0/7.0) - 1.0), - - 14.0/3.0 * PI * disc->F * chi * - pow(disc->Rin,3.0/7.0) * - (pow(disc->Rout/disc->Rin,3.0/7.0)-1.0), - - 14.0/3.0 * PI * disc->F * chi * pow(disc->Rout,3.0/7.0) - ); - - printf("Ang mom integral gives %g\nExpression gives %g %g approx %g\n", - disc_total_angular_momentum(disc,binary), - - 2.0*PI*sqrt(GRAVITATIONAL_CONSTANT*binary->mtot)* - sigmaRin * pow(disc->Rin,5.0/2.0) * - (pow(disc->Rout/disc->Rin,13.0/14.0)-1.0), - - 28.0/13.0 * PI * sqrt(GRAVITATIONAL_CONSTANT * binary->mtot) * - disc->F * chi * pow(disc->Rin,13.0/14.0) * - (pow(disc->Rout/disc->Rin,13.0/14.0)-1.0), - - 28.0/13.0 * PI * sqrt(GRAVITATIONAL_CONSTANT * binary->mtot) * - disc->F * chi * pow(disc->Rout,13.0/14.0) - - ); - - printf("Flux integral gives %g\nExpression gives %g approx should be 1 %g\n", - disc_total_angular_momentum_flux(disc,binary), - - 7.0/32.0 * PI * disc->torqueF * POW4(binary->separation) * POW2(binary->q) * - GRAVITATIONAL_CONSTANT * binary->mtot * sigmaRin * - POW3(1.0/disc->Rin) * - (1.0 - pow(disc->Rout/disc->Rin, -32.0/7.0)), - - 7.0/32.0 * PI * disc->torqueF * POW4(binary->separation) * - POW2(binary->q) * GRAVITATIONAL_CONSTANT * binary->mtot * chi * - pow(disc->Rin,-32.0/7.0) - ); - } - _exit(0); +#if defined DISC_SHOW_TEST_EXPRESSIONS && DISC_SHOW_TEST_EXPRESSIONS==1 + show_test_expressions(binary,disc); #endif /* @@ -552,19 +408,39 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, t += ddt; if(disc->first==TRUE) disc->firstlog = TRUE; disc->first = FALSE; - //disc->append = FALSE; - Discdebug(1,"t(+=%g)->%g ", + Discdebug(1,"t(+=%g)->%g\n", ddt/YEAR_LENGTH_IN_SECONDS, t/YEAR_LENGTH_IN_SECONDS); - /* * save discwas for next time */ - memcpy(discwas,disc,sizeof(struct disc_t)); + Copy_disc(disc,discwas); - Discdebug(3,"Conv ret M = %g J = %g F = %g sigma0 = %g Tvisc0 = %g\n", - disc->M,disc->J,disc->F,disc->sigma0,disc->Tvisc0); + Discdebug(3, + "Conv ret M = %g J = %g F = %g sigma0 = %g Tvisc0 = %g\n", + disc->M, + disc->J, + disc->F, + disc->sigma0, + disc->Tvisc0); + + /* + * Increase disc lifetime + */ + disc->lifetime += ddt; + +#ifdef DISC_LOG + /* + * Do logging + */ + if(abs(stardata->preferences->disc_log)>=2) + { + disc_logging(stardata, + binary, + DISC_LOG_EVOLVE_DISC_STRUCTURE); + } +#endif//DISC_LOG } } else @@ -576,7 +452,6 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, disc->edot_binary = 0.0; } - if(can_evolve == FALSE) { /* @@ -596,250 +471,184 @@ double disc_evolve_disc_structure(struct stardata_t * stardata, */ if(DISC_DEBUG) printf("Binary merged : cannot evolve circumbinary disc\n"); - Set_logstring(LOG_DISC, - "Evaporate disc : binary merged (age %g, M = %g Msun, L = %g Lsun)", - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - disc->M/M_SUN, - disc_total_luminosity(disc)/L_SUN); - disc->M = 0.0; - disc->J = 0.0; - disc->converged = FALSE; - disc->dt = LONG_TIMESTEP; + Append_logstring(LOG_DISC, + "Evaporate disc : binary merged (age %g, M = %g Msun, L = %g Lsun)", + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + disc->M/M_SUN, + disc_total_luminosity(disc)/L_SUN); + Evaporate_disc(disc, + "Binary system is single"); t = 0.0; } Safe_free(binary); Clear_disc_feedback(disc); - return t; } -static double calc_natural_timestep(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary, - const double dt) + +#if defined DISC_SHOW_TEST_EXPRESSIONS && DISC_SHOW_TEST_EXPRESSIONS==1 + +static void show_test_expressions(struct binary_system_t * binary, + struct disc_t * disc) { - /* - * Timescales associated with the above - * mass and angular momentum changes - */ - int i; - double mdt=0.0,jdt=0.0,edt=0.0; - double dt_natural; + double B = + pow(POW2(binary->Rstar) * (binary->flux/(4.0*STEFAN_BOLTZMANN_CONSTANT)) *sqrt(disc->gamma*BOLTZMANN_CONSTANT/ + (GRAVITATIONAL_CONSTANT*binary->mtot*M_PROTON)), + 2.0/7.0); + double Tin = disc_temperature(disc->Rin,disc); + Discdebug(2, + "B from (Tin=%g) %g should be %g\n", + Tin, + Tin * pow(disc->Rin,-3.0/7.0), + B + ); - for(i=0;i<DISC_LOSS_N;i++) - { - mdt += disc->loss[i].mdot; - jdt += disc->loss[i].jdot; - edt += disc->loss[i].edot; - } + double sigmaRin = disc_column_density(disc->Rin,disc); - double mdot = mdt; - double jdot = jdt; - double edot = edt; - /* - int l; - for(l=0;l<DISC_LOSS_N;l++) - { - Show_disc_derivative(l); - }*/ - Discdebug(1, - "MDOT disc %g g/s\n", - mdt); + Discdebug(2,"Sigma at Rin = %g\n",sigmaRin); + Discdebug(2,"Sigma0 = %g expressions give %g %g\n", + disc->sigma0, + sigmaRin * Tin * POW2(disc->Rin), + disc->F * disc->mu / (3.0 * PI * disc->alpha * + disc->gamma * BOLTZMANN_CONSTANT)); - /* - * eccentricity must be > 0, so - * if edt * dt reduces the eccentricity - * below zero, don't do anything - */ - if(binary->eccentricity + edt * dt < 0.0) - { - edt = 1e-50; - } - else - { - /* - * Remove other de/dt effects : - * if edot is negative, set to zero. - * - * NB this is per year - */ - edt += (stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY] - - stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_CBDISC]); - - edt = stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_CBDISC]; - - /* convert to s^-1 */ - edt /= YEAR_LENGTH_IN_SECONDS; - - Discdebug(1, - "EDOT disc %g cf e = %g, de/dt [sum = %g : GR = %g, tid = %g, winds = %g, cbdisc = %g]\n", - edt, - binary->eccentricity, - stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY], - stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_GRAVITATIONAL_RADIATION], - stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_TIDES], - stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_WINDS], - stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_CBDISC] - ); - - - if(stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY] < 0.0) - { - edt = 0.0; - } - else - { - edt = fabs(edt / binary->eccentricity); - } - } + double chi = disc->mu / + (3.0 *PI * disc->alpha * disc->gamma * BOLTZMANN_CONSTANT) /B; + if(DISC_DEBUG) + { + printf("chi is %g\n",chi); + printf("Mass integral gives %g\nExpression gives %g %g approx %g\n", + disc_total_mass(disc), + + 14.0/3.0 * PI * sigmaRin * POW2(disc->Rin) * + (pow(disc->Rout/disc->Rin, 3.0/7.0) - 1.0), - mdt = fabs(mdt / disc->M); - jdt = fabs(jdt / disc->J); - - mdt = 1.0/MAX(1e-20,mdt); - jdt = 1.0/MAX(1e-20,jdt); - edt = 1.0/MAX(1e-20,edt); - - int which; - dt_natural = Which_MIN3(which, - mdt, - jdt, - edt); - - dt_natural = MAX(YEAR_LENGTH_IN_SECONDS,dt_natural); - - Discdebug(1, - "TIMESTEP t=%30.12e y M=%g J=%g E=%g years (mdot = %g, jdot = %g; edot = %g; stardata = %g; e = %g) -> dt_natural %g years\n", - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - mdt/YEAR_LENGTH_IN_SECONDS, - jdt/YEAR_LENGTH_IN_SECONDS, - edt/YEAR_LENGTH_IN_SECONDS, - mdot * YEAR_LENGTH_IN_SECONDS / M_SUN, - jdot, - edot, - stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY], - stardata->common.eccentricity, - dt_natural/YEAR_LENGTH_IN_SECONDS - ); - Discdebug(1, - "dt=%g (from %s) ", - dt_natural/YEAR_LENGTH_IN_SECONDS, - (which==0 ? "dM/dt" : - which==1 ? "dJ/dt" : - which==2 ? "de/dt" : "?") - ); - return dt_natural; -} + 14.0/3.0 * PI * disc->F * chi * + pow(disc->Rin,3.0/7.0) * + (pow(disc->Rout/disc->Rin,3.0/7.0)-1.0), -static void set_disc_timestep(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary, - const double dt) -{ - /* - * We have a converged structure from the previous - * step. This means we can estimate timescales for changes - * to disc properties. - */ - double dt_natural = calc_natural_timestep(stardata, - disc, - binary, - dt); - double dtwas = disc->dt; - - /* - * Hence the disc timestep - */ - disc->dt = LIMIT_RANGE(DISC_TIMESTEP_FACTOR * - dt_natural, - DISC_MIN_TIMESTEP, - DISC_MAX_TIMESTEP); - - /* - * Don't let the timestep increase too fast - */ - disc->dt = MIN(disc->dt, - dtwas * DISC_TIMESTEP_HIGH_FACTOR); - - Discdebug(1, - "Set disc dt = %g y (was %g, fac*natural %g, min %g, max %g) (natural timestep %g, binary sep = %g, RLOF? %d)\n", - disc->dt/YEAR_LENGTH_IN_SECONDS, - dtwas/YEAR_LENGTH_IN_SECONDS, - DISC_TIMESTEP_FACTOR * dt_natural/YEAR_LENGTH_IN_SECONDS, - DISC_MIN_TIMESTEP/YEAR_LENGTH_IN_SECONDS, - DISC_MAX_TIMESTEP/YEAR_LENGTH_IN_SECONDS, - dt_natural, - binary->separation, - binary->RLOF); + 14.0/3.0 * PI * disc->F * chi * pow(disc->Rout,3.0/7.0) + ); -} + printf("Ang mom integral gives %g\nExpression gives %g %g approx %g\n", + disc_total_angular_momentum(disc,binary), + 2.0*PI*sqrt(GRAVITATIONAL_CONSTANT*binary->mtot)* + sigmaRin * pow(disc->Rin,5.0/2.0) * + (pow(disc->Rout/disc->Rin,13.0/14.0)-1.0), + + 28.0/13.0 * PI * sqrt(GRAVITATIONAL_CONSTANT * binary->mtot) * + disc->F * chi * pow(disc->Rin,13.0/14.0) * + (pow(disc->Rout/disc->Rin,13.0/14.0)-1.0), -static char * disc_failure_mode(struct stardata_t * stardata, - struct disc_t * disc, - struct binary_system_t * binary, - const int status) -{ - /* - * Check for disc failure mode. - * - * On failure, returns a string explaining why. This string - * needs to be freed. - * - * On success, returns NULL. - */ + 28.0/13.0 * PI * sqrt(GRAVITATIONAL_CONSTANT * binary->mtot) * + disc->F * chi * pow(disc->Rout,13.0/14.0) + + ); + printf("Flux integral gives %g\nExpression gives %g approx should be 1 %g\n", + disc_total_angular_momentum_flux(disc,binary), - /* - * Check if the disc is a narrow ring. - * In this case, stop. - */ - Boolean disc_is_ring = - disc->Rout - disc->Rin < DISC_MINIMUM_WIDTH ? - TRUE : FALSE; + 7.0/32.0 * PI * disc->torqueF * POW4(binary->separation) * POW2(binary->q) * + GRAVITATIONAL_CONSTANT * binary->mtot * sigmaRin * + POW3(1.0/disc->Rin) * + (1.0 - pow(disc->Rout/disc->Rin, -32.0/7.0)), - /* - * Special case : flux is negative, - * disc should be evaporated - */ - Boolean flux_negative = - status == CONVERGENCE_FLUX_NEGATIVE ? - TRUE : FALSE; + 7.0/32.0 * PI * disc->torqueF * POW4(binary->separation) * + POW2(binary->q) * GRAVITATIONAL_CONSTANT * binary->mtot * chi * + pow(disc->Rin,-32.0/7.0) + ); + } + Exit_binary_c_no_stardata(0,"Exit after testing disc expressions"); +} +#endif // DISC_SHOW_TEST_EXPRESSIONS - /* - * Evaporate if dimmer or less massive - * than thresholds +void disc_show_MJ_space(struct disc_t * disc, + struct binary_system_t * binary, + struct stardata_t * stardata) +{ + /* + * Using the given binary system, go through the + * mass and angular momentum parameter space to + * determine which structres are possible. */ - Boolean too_dim = - (stardata->preferences->cbdisc_minimum_luminosity >-TINY ? - (disc_total_luminosity(disc) < L_SUN * stardata->preferences->cbdisc_minimum_luminosity) : - (disc_total_luminosity(disc)/binary->L < stardata->preferences->cbdisc_minimum_luminosity)); - Boolean too_low_mass = - disc->M < stardata->preferences->cbdisc_minimum_mass * M_SUN; + double logm,logj; + const double dlogm = 0.1; + const double dlogj = 0.1; + + struct disc_t * discwas = New_disc_from(disc); + Copy_disc(disc,discwas); + + printf("MJSPACE# binary: a=%g aL2=%g M1=%g M2=%g Jorb=%g P=%g\n", + binary->aL2/R_SUN, + binary->separation/R_SUN, + binary->m1/M_SUN, + binary->m2/M_SUN, + binary->Jorb, + binary->orbital_period / YEAR_LENGTH_IN_SECONDS + ); + + for(logm=-10; logm<-1; logm += dlogm) + { + for(logj = 40; logj < 53; logj += dlogj) + { + /* + * un-log and convert to cgs + */ + double m = pow(10.0,logm) * M_SUN; + double j = pow(10.0,logj); - Boolean too_ringlike = - IS_NOT_ZERO(disc->fRing) && - (disc->fRing < stardata->preferences->cbdisc_minimum_fRing); + /* + * Restore the disc + */ + Copy_disc(discwas,disc); - char * reason; - if(too_dim || too_low_mass || flux_negative || too_ringlike || disc_is_ring) - { - reason = MALLOC(sizeof(char)*100); - snprintf(reason,99,"%s%s%s%s%s", - too_low_mass ? "too low mass" : "", - too_dim ? " too dim" : "", - disc_is_ring ? " is ring" : "", - flux_negative ? " flux negative" : "", - too_ringlike ? " too ringlike" : ""); - } - else - { - reason = NULL; + /* + * Set the new mass and angular momentum + */ + disc->M = m; + disc->J = j; + + /* + * Try to converge + */ + //Boolean can_evolve = TRUE; + disc->converged = FALSE; + disc_calc_disc_structure(binary,disc,stardata,0.0,0.0); + + /* + * Check for convergence + */ + Boolean converged = disc->converged; + + /* + * Check if we're inside L2 + */ + Boolean inside_L2 = (converged && disc->Rin < binary->aL2) ? TRUE : FALSE; + + /* + * Log + */ + printf("MJSPACE %20g %20g %20g %20g %d %d %20g %20g\n", + m/M_SUN, + j, + disc->M/M_SUN, + disc->J, + converged, + inside_L2, + converged ? (disc->Rin/R_SUN) : -1.0, + converged ? (disc->Rout/R_SUN) : -1.0 + ); + fflush(stdout); + } } - return reason; + Exit_binary_c(NORMAL_EXIT, + "Finished exploring M,J disc space\n"); } + + #endif // DISCS diff --git a/src/disc/disc_evolve_disc_structure.h b/src/disc/disc_evolve_disc_structure.h new file mode 100644 index 0000000000000000000000000000000000000000..764bbb17dbb8c4cdad63e6c3c6d94239bb44bfaf --- /dev/null +++ b/src/disc/disc_evolve_disc_structure.h @@ -0,0 +1,13 @@ +#pragma once +#ifndef DISC_EVOLVE_DISC_STRUCTURE_H +#define DISC_EVOLVE_DISC_STRUCTURE_H + +#if defined DISC_SHOW_TEST_EXPRESSIONS && \ + DISC_SHOW_TEST_EXPRESSIONS==1 + +static void show_test_expressions(struct binary_system_t * binary, + struct disc_t * disc); + +#endif // DISC_SHOW_TEST_EXPRESSIONS + +#endif //DISC_EVOLVE_DISC_STRUCTURE_H diff --git a/src/disc/disc_extend_powerlaw_from_reference_point.c b/src/disc/disc_extend_powerlaw_from_reference_point.c index 92876c0a7c44d5b95fcdad97ca063967ee4c4d1e..9108aab5096346da563c54ae178e2c8cf9a71dc0 100644 --- a/src/disc/disc_extend_powerlaw_from_reference_point.c +++ b/src/disc/disc_extend_powerlaw_from_reference_point.c @@ -1,10 +1,7 @@ #include "../binary_c.h" #ifdef DISCS -#include "disc.h" -#undef DISC_DEBUG -#define DISC_DEBUG 1 void disc_extend_powerlaw_from_reference_point(struct disc_t * disc, const int ilaw, const double Rref, diff --git a/src/disc/disc_failure_mode.c b/src/disc/disc_failure_mode.c new file mode 100644 index 0000000000000000000000000000000000000000..496434cccf5f03005a55cb1bf63cdb5e8ed63008 --- /dev/null +++ b/src/disc/disc_failure_mode.c @@ -0,0 +1,90 @@ +#include "../binary_c.h" +#ifdef DISCS +char * disc_failure_mode(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + const int status) +{ + /* + * Check for disc failure mode. + * + * On failure, returns a string explaining why. This string + * needs to be freed. + * + * On success, returns NULL. + */ + + + /* + * Check if the disc is a narrow ring. + * In this case, stop. + */ + Boolean disc_is_ring = + disc->Rout - disc->Rin < DISC_MINIMUM_WIDTH ? + TRUE : FALSE; + + /* + * Special case : flux is negative, + * disc should be evaporated + */ + Boolean flux_negative = + status == CONVERGENCE_FLUX_NEGATIVE ? + TRUE : FALSE; + + /* + * Reasons for failure... + */ + const double Ldisc = disc_total_luminosity(disc); + Boolean too_dim = + (stardata->preferences->cbdisc_minimum_luminosity >-TINY ? + (Ldisc < L_SUN * stardata->preferences->cbdisc_minimum_luminosity) : + (Ldisc/binary->L < stardata->preferences->cbdisc_minimum_luminosity)); + + Boolean too_low_mass = + disc->M < stardata->preferences->cbdisc_minimum_mass * M_SUN; + + Boolean too_ringlike = + IS_NOT_ZERO(disc->fRing) && + (disc->fRing < stardata->preferences->cbdisc_minimum_fRing); + + Boolean too_old = + disc->lifetime > DISC_MAX_LIFETIME || + (disc->type == DISC_CIRCUMBINARY && + IS_NOT_ZERO(stardata->preferences->cbdisc_max_lifetime) && + disc->lifetime > YEAR_LENGTH_IN_SECONDS * stardata->preferences->cbdisc_max_lifetime); + + /* + * Hence failure string: can be multiple + * reasons concurrently. + */ + char * reason; + if(too_dim || + too_low_mass || + flux_negative || + too_ringlike || + disc_is_ring || + too_old) + { +#define __STRING_N 155 + reason = MALLOC(sizeof(char)*__STRING_N); + snprintf(reason,(__STRING_N-1),"%s%s%s%s%s%s : disc->M=%6.3e Msun (%6.3e), disc->J=%6.3e (%6.3e), disc->F=%6.3e", + (too_low_mass ? "too low mass" : ""), // 12 + (too_dim ? " too dim" : ""), // + 8 = 20 + (disc_is_ring ? " is ring" : ""), // + 8 = 28 + (flux_negative ? " flux negative" : ""), // + 14 = 42 + (too_ringlike ? " too ringlike" : ""), // + 13 = 55 + (too_old ? " too old " : ""), // + 8 = 63 + disc->M/M_SUN, // + disc_total_mass(disc)/M_SUN, + disc->J, + disc_total_angular_momentum(disc,binary), + disc->F + ); + } + else + { + reason = NULL; + } + return reason; +} +#endif//DISCS diff --git a/src/disc/disc_free_convergence_parameter_types_and_constraints.c b/src/disc/disc_free_convergence_parameter_types_and_constraints.c new file mode 100644 index 0000000000000000000000000000000000000000..c7c487daca6f61eb42ef8b9ad1ab9105264d06db --- /dev/null +++ b/src/disc/disc_free_convergence_parameter_types_and_constraints.c @@ -0,0 +1,16 @@ +#include "../binary_c.h" + +#ifdef DISCS + +void disc_free_convergence_parameter_types_and_constraints(disc_parameter ** parameter_types_p, + disc_constraint ** constraints_p) +{ + /* + * Free the memory allocated in + * disc_setup_convergence_parameter_types_and_constraints + */ + Safe_free(*parameter_types_p); + Safe_free(*constraints_p); +} + +#endif // DISCS diff --git a/src/disc/disc_generic_stripping_timescale.c b/src/disc/disc_generic_stripping_timescale.c new file mode 100644 index 0000000000000000000000000000000000000000..acf77d839543c04b3384f84d66ea140441c00aa7 --- /dev/null +++ b/src/disc/disc_generic_stripping_timescale.c @@ -0,0 +1,65 @@ +#include "binary_c.h" + +#ifdef DISCS + +/* + * Given an algorithm to define the mass loss timescale + * at the inner or outer edge, calculate the timescale. + */ + +double disc_generic_stripping_timescale(struct disc_t * disc, + const struct binary_system_t * binary, + const double radius, + const int algorithm) +{ + double timescale; + + switch(algorithm) + { + case DISC_STRIPPING_TIMESCALE_INSTANT: + + /* + * Instant + */ + timescale = 0.0; + break; + + case DISC_STRIPPING_TIMESCALE_INFINITE: + + /* + * Very long + */ + timescale = DISC_LONG_TIME; + break; + + + case DISC_STRIPPING_TIMESCALE_ORBIT: + /* + * limit to orbital timescale + */ + + timescale = 2.0 * PI / + disc_orbital_frequency(disc->Rout,binary); + break; + + case DISC_STRIPPING_TIMESCALE_VISCOUS: + /* + * limit to viscous timescale + */ + timescale = disc_viscous_timescale(disc->Rout, + disc, + binary); + break; + + default: + /* + * What to do? + * Return a negative timescale to indicate an error. + */ + timescale = -1.0; + } + return timescale; + +} + +#endif // DISCS diff --git a/src/disc/disc_init_binary_structure.c b/src/disc/disc_init_binary_structure.c index 380f9b16f409ead85c963ffbd8bd8a0617fdd322..a9226d03a038397be0d19b9344bcf1c97b6539f8 100644 --- a/src/disc/disc_init_binary_structure.c +++ b/src/disc/disc_init_binary_structure.c @@ -2,12 +2,15 @@ #ifdef DISCS void disc_init_binary_structure(struct stardata_t * stardata, - struct binary_system_t *binary) + struct binary_system_t *binary, + struct disc_t * cbdisc) { /* * Initialize the binary star information * structure. This also precomputes some variables, * such as mtot and q. + * + * Also sets the disc minimum inner radius to the L2 radius */ Discdebug(2,"initbinary "); binary->L = L_SUN*(stardata->star[0].luminosity + @@ -25,6 +28,27 @@ void disc_init_binary_structure(struct stardata_t * stardata, binary->separation = R_SUN * MAX3(stardata->common.separation, stardata->star[0].radius, stardata->star[1].radius); + binary->torqueF = stardata->preferences->cbdisc_torqueF; + + /* + * Find the L2 and L3 points + */ + { + struct coordinate_t L[NUMBER_OF_LAGRANGE_POINTS]; + lagrange_points(binary->m1, + binary->m2, + binary->separation, + L, + &binary->a1, + &binary->a2); + binary->aL1 = PYTHAGC3(L[0]); // L1 radius + binary->aL2 = PYTHAGC3(L[1]); // L2 radius + binary->aL3 = PYTHAGC3(L[2]); // L3 radius + binary->a1 = fabs(binary->a1); + binary->a2 = fabs(binary->a2); + cbdisc->Rin_min = 0.0; + } + binary->eccentricity = Clamp(stardata->common.eccentricity,0.0,1.0-1e-8); binary->Jorb = stardata->common.orbital_angular_momentum * ANGULAR_MOMENTUM_CGS; binary->mtot = binary->m1 + binary->m2; @@ -80,14 +104,14 @@ void disc_init_binary_structure(struct stardata_t * stardata, */ double frac_FUV = Blackbody_flux_fraction(binary->Teff[i], - 6.0*ELECTRON_VOLT, - 13.6*ELECTRON_VOLT); + FUV_eV_MIN*ELECTRON_VOLT, + FUV_eV_MAX*ELECTRON_VOLT); double frac_EUV = Blackbody_flux_fraction(binary->Teff[i], - 13.6*ELECTRON_VOLT, - 1e2*ELECTRON_VOLT); + EUV_eV_MIN*ELECTRON_VOLT, + EUV_eV_MAX*ELECTRON_VOLT); double frac_X = Blackbody_flux_fraction(binary->Teff[i], - 1e2*ELECTRON_VOLT, - 1e5*ELECTRON_VOLT); + XRAY_eV_MIN*ELECTRON_VOLT, + XRAY_eV_MAX*ELECTRON_VOLT); double Lcgs = stardata->star[i].luminosity * L_SUN; binary->LEUV += frac_EUV * Lcgs; @@ -140,8 +164,7 @@ void disc_init_binary_structure(struct stardata_t * stardata, ); } - fflush(NULL); - _exit(0); + Exit_binary_c(0,"Exit after testing black body functions"); #endif // TESTBB } @@ -172,6 +195,9 @@ void disc_init_binary_structure(struct stardata_t * stardata, log10(stardata->star[0].luminosity), menv > 0.0 ? log10(menv) : -30 ); + + cbdisc->LX = binary->LX; + } #endif diff --git a/src/disc/disc_initial_radiative_guess.c b/src/disc/disc_initial_radiative_guess.c index b6e99c5667d3a2c500b7661b6f534c97947e69d7..c74dff070fcb0deaeaf68fd40514db87c2c7a276 100644 --- a/src/disc/disc_initial_radiative_guess.c +++ b/src/disc/disc_initial_radiative_guess.c @@ -1,8 +1,8 @@ #include "../binary_c.h" #ifdef DISCS -void disc_initial_radiative_guesses(struct binary_system_t * binary, - struct disc_t * disc) +void disc_initial_radiative_guesses(const struct binary_system_t * binary, + struct disc_t * disc) { /* * Assuming the disc is a single "outer" radiative zone, @@ -35,9 +35,5 @@ void disc_initial_radiative_guesses(struct binary_system_t * binary, ); #endif -#ifdef WRONG_INITIAL_GUESS - /* deliberate error */ - disc->Rin *= 0.1; -#endif } #endif diff --git a/src/disc/disc_initial_structure.c b/src/disc/disc_initial_structure.c index 1e866e565c34ad8777dc6f82809756aa99322617..74a86211c4c3752400cc368f0a9ca6a5f5e7f8b3 100644 --- a/src/disc/disc_initial_structure.c +++ b/src/disc/disc_initial_structure.c @@ -2,7 +2,6 @@ #ifdef DISCS -#include "disc.h" /* * Calculate the initial structure of the disc assuming * the derivatives are zero. @@ -10,23 +9,25 @@ * Perhaps also reduce M and J to stabilise the disc. */ static void disc_reduced_initial_structure(struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, struct stardata_t * stardata, + const double t, const double Rring, Boolean * can_evolve, - int * trycount); + int * trycount, + const Boolean vb); void disc_initial_structure(struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, struct stardata_t * stardata, - double t, - Boolean first, + const double t, + const Boolean first, Boolean * can_evolve) { - Discdebug(2,"disc not converged, call structure\n"); - double Rring = disc_ring_radius(disc,binary); - + const Boolean vb = FALSE; int kk = TRUE, trycount = 1; + const double Rring = disc_ring_radius(disc,binary); + while(trycount) { Discdebug(1,"ITRY%d ",trycount); @@ -42,41 +43,65 @@ void disc_initial_structure(struct disc_t * disc, * First timestep disc structure */ Discdebug(1,"init%d ",trycount); - kk = disc_calc_disc_structure(binary,disc,stardata,t); + kk = disc_calc_disc_structure(binary,disc,stardata,t,0.0); Discdebug(1,"init->%d (%d) ",kk,CONVERGENCE_SUCCEEDED); if(kk == CONVERGENCE_SUCCEEDED && IS_NOT_ZERO(disc->M)) { + if(vb)printf("\nINIT CONVERGED on try %d with M=%g J=%g\n", + trycount, + disc->M/M_SUN, + disc->J); trycount = 0; Discdebug(1,"OK CONVERGED INIT%d ",trycount); } else { - if(first) + /* + * No stable structure found: + * try reducing M and J to obtain one + */ + if(first && + IS_NOT_ZERO(stardata->preferences->cbdisc_init_dM)) { - Discdebug(1,"ReduceMJ "); + Discdebug(1,"\nReduceMJ "); disc_reduced_initial_structure(disc, binary, stardata, + t, Rring, can_evolve, - &trycount); + &trycount, + vb); + } + else + { + /* + * We're not allowed to try lower mass solutions + * so just break the loop. + */ + trycount = 0; + Evaporate_disc(disc,"Disc initial structure failed [no M reduction allowed]"); + Append_logstring(LOG_DISC, + "Disc initial structure failed [no M reduction allowed]"); } continue; } } - + disc_convergence_status("Initial",disc,binary); Discdebug(1,"initret "); } void disc_reduced_initial_structure(struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, struct stardata_t * stardata, const double Rring, + const double t, Boolean * can_evolve, - int * trycount) + int * trycount, + const Boolean vb) { /* @@ -84,58 +109,97 @@ void disc_reduced_initial_structure(struct disc_t * disc, * In this case, reduce the mass more than the angular momentum. * * The initial Rin and Rout are important: + * * Rin can be ~ twice the separation, while Rout * should be at least twice this, but try putting it * further out in order to converge. */ - disc->Rin = 1.2 * binary->separation; - disc->Rout = MAX(1e20*R_SUN,2.0 * disc->Rin); - + disc->Rin = (1.0 + 0.1) * binary->separation; + disc->Rout = MAX(1e20 * R_SUN, + 10.0 * disc->Rin); + disc->Rout = 1e100; + struct disc_t * disc_in = New_disc_from(disc); + /* * Bisect in M,F with Rout = Rin */ +#ifdef TWOSTEP const long int itmax = 10000; const long int itmaxM = itmax, itmaxF = itmax; +#endif // TWOSTEP Boolean converged = FALSE; - int error; + if(IS_REALLY_ZERO(disc->Tvisc0)) disc->Tvisc0 = 1e10 ; + if(vb)printf("\nDISCINIT: INIT %g %g %g converged? %d\n", + disc->M/M_SUN, + disc->J, + disc->J/disc->M, + converged); /* - * Mass is reduced by a factor mult < 1 each time. - * (typically mult = 0.9) + * Mass is reduced by a factor multM < 1 each time, + * where multM is stardata->preferences->cbdisc_init_dM * - * Angular momentum is reduced by a factor (xMJ * mult) each time. + * Angular momentum is reduced by a factor multJ each time + * where multJ = multM * dJdM + * where dJdM = stardata->preferences->dJdM * * If xMJ < 1.0, this means that the disc increases its * specific angular momentum when mass is removed. * * Typically xMJ = 0.5. */ - const double mult = 0.9; // 0.9 - const double xMJ = 0.5; // 0.5 + const double multM = stardata->preferences->cbdisc_init_dM; // 0.9 + const double multJ = multM * stardata->preferences->cbdisc_init_dJdM; // 0.5 + + if(vb)printf("DISCINIT: INIT multM = %g, multJ = %g\n",multM, multJ); + + /* + * Given + * Rring = J^2 / (G M^2 Mbin) + * + * estimate the mass required given Rring = 2a + * + * M = J / sqrt(2 G a Mbin) + */ + { + double mring = disc->J/sqrt(GRAVITATIONAL_CONSTANT * binary->separation * 2.0 * binary->mtot); + Discdebug(2,"DISCINIT: A ring with J = %g at 2a = %g requires M = %g g = %g Msun\n", + disc->J, + 2.0 * binary->separation, + mring, + mring/M_SUN + ); + } while(converged == FALSE && *can_evolve == TRUE) { /* * Mass must be reduced */ - Discdebug(2,"Mass must be reduced\n"); + Discdebug(2,"DISCINIT: Mass must be reduced\n"); double mwas = disc->M; double jwas = disc->J; - double dM = - mwas * mult; - double dJ = //xMJ * jwas / mwas * dM; - - xMJ * mult * jwas; + double dM = - multM * mwas; + double dJ = - multJ * jwas; + + if(vb)printf("DISCINIT: INIT dM = %g, dJ = %g\n",dM/M_SUN,dJ); disc->M = mwas + dM; disc->J = jwas + dJ; + if(vb)printf("DISCINIT: INIT %g %g %g\n", + disc->M/M_SUN, + disc->J, + disc->J/disc->M); + Discdebug(1, - "reduce:M=%g(was %g),J=%g(was %g) ", + "DISCINIT: reduce:M=%g(was %g),J=%g(was %g) ", disc->M,mwas, disc->J,jwas); Discdebug(2, - " >>> new M = %g, new J = %g\n", + "DISCINIT: >>> new M = %g, new J = %g\n", disc->M, disc->J); /* @@ -144,135 +208,80 @@ void disc_reduced_initial_structure(struct disc_t * disc, */ if(disc->M / M_SUN < DISC_MINIMUM_DISC_MASS_MSUN) { - Set_logstring(LOG_DISC, - "No stable disc structure at age %g y, M = %g Msun, L = %g Lsun (Rring = %g, a = %g)\n", - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - disc->M/M_SUN, - disc_total_luminosity(disc)/L_SUN, - Rring / R_SUN, - stardata->common.separation + Append_logstring(LOG_DISC, + "DISCINIT: No stable disc structure at age %g y, M = %g Msun, L = %g Lsun (Rring = %g, a = %g) ", + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + disc->M/M_SUN, + disc_total_luminosity(disc)/L_SUN, + Rring / R_SUN, + stardata->common.separation ); - Discdebug(2,"No stable (initial) disc structure found\n"); - disc->M = 0.0; - disc->J = 0.0; + Discdebug(2,"DISCINIT: No stable (initial) disc structure found\n"); + Evaporate_disc(disc,"No stable initial disc structure found (M/M_SUN<DISC_MINIMUM_DISC_MASS_MSUN)"); *can_evolve = FALSE; *trycount = 0; continue; } - Discdebug(2, - "converge for Tvisc0 with Rin = %g, Rout = %g, disc->M = %g (%g Msun), disc->J = %g (start %g)\n", - disc->Rin, - disc->Rout, - disc->M, - disc->M/M_SUN, - disc->J, - disc->Tvisc0 - ); - - double new_Tvisc0 = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_TVISC, - &disc_M_bisector, - disc->Tvisc0, - DISC_TVISC0_MIN, - DISC_TVISC0_MAX, - DISC_MASS_TOLERANCE, - itmaxM, - 1.0, - disc, - binary); - Discdebug(2,"M converge error = %d\n",error); - disc->Tvisc0 = new_Tvisc0; - disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); + Boolean ok = FALSE; /* - * Allow the disc to form inside the orbit. - * This means we converge fast, and detect the error - * afterwards. If we force the disc to be outside the orbit, - * often convergence is very slow. - */ - double min = 1e-6*binary->separation; - double max = DISC_RIN_MAX; - Discdebug(2, - "Converge for F with Tvisc0 = %g, disc->F = %g, vary Rin in range [%g,%g], itmax=%ld, tol %g, Rin = %g Rout = %g\n", - disc->Tvisc0, - disc->F, - min, - max, - itmaxF, - DISC_ANGMOM_FLUX_TOLERANCE, - disc->Rin, - disc->Rout - ); - double new_Rin = generic_bisect(&error, - BISECT_USE_MONOCHECKS, - BISECTOR_DISC_F, - &disc_F_bisector, - disc->Rin, - min, - max, - DISC_ANGMOM_FLUX_TOLERANCE, - itmaxF, - 1.0, - disc, - binary, - 2.0); - - Discdebug(2,"post bisect Rin = %g Rout = %g\n",disc->Rin,disc->Rout); + * Calculate new disc structure + */ + int status = disc_calc_disc_structure(binary,disc,stardata,t,0.0); - Boolean ok = FALSE; - - if(error) - { - Discdebug(2,"F converge error = %d %s\n",error,Bisector_error_string(error)); - } - else + /* + * The disc may have converged, in which case + * check its structure against disc_failure_mode + */ + if(disc->converged) { - Discdebug(2,"Successfully Bisected for F = %g with Rin = %g cf a = %g\n", + Discdebug(2, + "DISCINIT: Successfully Bisected for F = %g with Rin = %g cf a = %g\n", + disc->Rin, disc->Rin, - new_Rin, binary->separation); - - if(new_Rin < binary->separation) + + /* + * The solution is required to satisfy the disc_failure_mode + */ + + char * reason = disc_failure_mode(stardata, + disc, + binary, + status); + + if(reason==NULL) { - Discdebug(2, - "But Rin < a, so this is not a solution.\n"); + ok = TRUE; } else { - /* - * Calculate new J - */ - double newJ = disc_total_angular_momentum(disc,binary); - Discdebug(2, - "Done this : newJ = %g (want %g)\n", - newJ,disc->J); - - if(newJ < disc->J) - { - ok = TRUE; - } + Discdebug(1,"Disc failed because %s\n",reason); + Safe_free(reason); } + } + if(ok == TRUE) - { + { /* * A stable solution should follow */ - Discdebug(2,"Stable solution should follow >>>>>>> Rin = %g Rsun, Rout = %g Rsun\n", - disc->Rin/R_SUN, - disc->Rout/R_SUN); converged = TRUE; + Discdebug(2, + "DISCINIT: Stable solution should follow >>>>>>> Rin = %g Rsun, Rout = %g Rsun, a = %g Rsun\n", + disc->Rin / R_SUN, + disc->Rout / R_SUN, + binary->separation / R_SUN); Discdebug(1, - "ok:M=%g,J=%g ", + "DISCINIT: ok:M=%g,J=%g ", disc->M, disc->J); - } else { @@ -283,79 +292,44 @@ void disc_reduced_initial_structure(struct disc_t * disc, if(disc->M / M_SUN < DISC_MINIMUM_DISC_MASS_MSUN || disc->M / M_SUN < stardata->preferences->cbdisc_minimum_mass) { - Set_logstring(LOG_DISC, - "No stable disc structure at age %g y, M = %g Msun, L = %g Lsun (Rring = %g, a = %g)\n", - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - disc->M/M_SUN, - disc_total_luminosity(disc)/L_SUN, - Rring / R_SUN, - stardata->common.separation); - - Discdebug(2,"No stable (initial) disc structure found: M = %g < MIN(hard = %g, user = %g)\n", + Append_logstring(LOG_DISC, + "DISCINIT: No stable disc structure at age %g y, M = %g Msun, L = %g Lsun (Rring = %g, a = %g) ", + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + disc->M/M_SUN, + disc_total_luminosity(disc)/L_SUN, + Rring / R_SUN, + stardata->common.separation); + + Discdebug(2,"DISCINIT: No stable (initial) disc structure found: M = %g < MIN(hard = %g, user = %g)\n", disc->M / M_SUN, DISC_MINIMUM_DISC_MASS_MSUN, stardata->preferences->cbdisc_minimum_mass); - disc->M = 0.0; - disc->J = 0.0; + Evaporate_disc(disc, + "No stable initial disc structure found : M < minimum limit"); *can_evolve = FALSE; *trycount = 0; } } } + + if(Disc_is_disc(disc)) + { + Append_logstring(LOG_DISC, + "[ reduced M,J from %g,%g to %g,%g ] ", + disc_in->M/M_SUN, + disc_in->J, + disc->M/M_SUN, + disc->J); + } + else + { + Append_logstring(LOG_DISC, + "[ reduce M,J failed : no stable disc ]"); + } + + Safe_free(disc_in); } #endif // DISCS - -/************************************************************/ -// old code -#ifdef ALGO1 - - Discdebug(2,"Convergence failed, M was = %g (now %g cf. min %g Msun), J was %g\n", - mwas/M_SUN, - disc->M/M_SUN, - DISC_MINIMUM_DISC_MASS_MSUN, - jwas - ); - - /* - * Reduce on each failure : - * replace with bisection - */ - const double mult = 0.5; - double dM = - mwas * mult; - double xMJ = 0.5; // 0.5 - double dJ = xMJ * jwas / mwas * dM; - - disc->M = mwas + dM; - disc->J = jwas + dJ; - - Discdebug(2, - "Halving mass and trying again : new mass %g new J %g (J/M=%g)\n", - disc->M/M_SUN, - disc->J, - disc->J/disc->M - ); - - *trycount ++; - - if(disc->M / M_SUN < DISC_MINIMUM_DISC_MASS_MSUN) - { - Set_logstring(LOG_DISC, - "No stable disc structure at age %g y, M = %g Msun, L = %g Lsun (Rring =%g, a = %g)\n", - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - disc->M/M_SUN, - disc_total_luminosity(disc)/L_SUN, - Rring / R_SUN, - stardata->common.separation); - - Discdebug(2, - "No stable (initial) disc structure found\n"); - disc->M = 0.0; - disc->J = 0.0; - *can_evolve = FALSE; - *trycount = 0; - } - -#endif // ALGO1 diff --git a/src/disc/disc_initialize_disc.c b/src/disc/disc_initialize_disc.c index d979099086cd94117bb04f8fa11b1389245e0a37..ad4073270a35c6738d217cf06a25e7c6166d7b8e 100644 --- a/src/disc/disc_initialize_disc.c +++ b/src/disc/disc_initialize_disc.c @@ -1,10 +1,10 @@ #include "../binary_c.h" #ifdef DISCS -#include "disc.h" void disc_initialize_disc(struct stardata_t * stardata, - struct disc_t * disc) + struct disc_t * disc, + struct binary_system_t * binary_in) { /* * Initialize the structure of the disc. @@ -12,22 +12,91 @@ void disc_initialize_disc(struct stardata_t * stardata, * In particular, set up the internal binary * star information structure, * and any other physical parameters. + * + * The binary structure is allocated if required, + * in which case binary_in should be NULL, + * otherwise binary_in is used. + */ + + + + /* + * Assume the molecular weight of the + * mixture, if we know it, assuming it is + * atomic (not ionised). + * + * If we don't know, assume it is hydrogen, + * i.e. mu = m_proton. */ - struct binary_system_t binary; disc->mu = #ifdef NUCSYN - nucsyn_molecular_weight(disc->X, - MAIN_SEQUENCE, - stardata) * - + nucsyn_molecular_weight( + disc->X, + stardata, + GAS_ATOMIC + ) * #endif // NUCSYN M_PROTON; - disc_init_binary_structure(stardata,&binary); - if(DISC_DEBUG) +#if 0 + /* + * Debug molecular weight calculators + */ + Exit_binary_c(2, + "Disc mu %g : molecular atomic %g plasma %g effective plasma %g approx %g\n", + disc->mu, + nucsyn_molecular_weight( + disc->X, + stardata, + GAS_ATOMIC + ) , + nucsyn_molecular_weight( + disc->X, + stardata, + GAS_FULLY_IONISED_PLASMA + ) , + nucsyn_effective_molecular_weight( + disc->X, + MAIN_SEQUENCE, + stardata + ), + 4.0/(6.0*disc->X[XH1]+disc->X[XHe4]+2.0) + ); +#endif + + disc->solver = DISC_SOLVER_NONE; + disc->iteration = 0; +#ifdef DISC_USE_PREVZONE + disc->prevzone = DISC_NO_PREVZONE_YET; +#endif +#ifdef MEMOIZE + disc->memo = NULL; + memoize_initialize(&disc->memo); +#endif + + /* + * If we're passed in a binary structure, + * or need some debug output, set up the binary structure. + */ + if(DISC_DEBUG || binary_in!=NULL) { - disc_show_disc(disc,&binary); + struct binary_system_t * binary = + binary_in != NULL ? binary_in : + MALLOC(sizeof(struct binary_system_t)); + + disc_init_binary_structure(stardata,binary,disc); + + if(DISC_DEBUG) + { + disc_show_disc(disc,binary); + } + + if(binary != binary_in) + { + Safe_free(binary); + } } + return; } diff --git a/src/disc/disc_initialize_every_timestep.c b/src/disc/disc_initialize_every_timestep.c index 696cfff964f93cf11846b62bdc9d754b07693ec3..626b43338a03e22848bf4fba787781eba68f6734 100644 --- a/src/disc/disc_initialize_every_timestep.c +++ b/src/disc/disc_initialize_every_timestep.c @@ -4,7 +4,7 @@ * Initialize all discs every timestep */ #ifdef DISCS -#include "disc.h" + static void initialize_discs_every_timestep(struct star_t * star); void disc_initialize_every_timestep(struct stardata_t * stardata) { @@ -20,7 +20,6 @@ void disc_initialize_every_timestep(struct stardata_t * stardata) struct disc_t * disc = & stardata->common.discs[i]; disc->first = FALSE; disc->append = FALSE; - disc->firstlog = FALSE; } /* diff --git a/src/disc/disc_inner_edge_accretion_f.c b/src/disc/disc_inner_edge_accretion_f.c index 8bc9c024902a762fc38bb82621c711912ace1748..d1d19ed064703b202d5783da98e2afa2542d595a 100644 --- a/src/disc/disc_inner_edge_accretion_f.c +++ b/src/disc/disc_inner_edge_accretion_f.c @@ -4,16 +4,33 @@ double disc_inner_edge_accretion_f(struct stardata_t * stardata) { double f; + + /* + * Of material accreting from the inner edge of a + * circumbinary disc, return f, the fraction that + * accretes onto star 0. + * + * If star 1 is more massive than star 0, i.e. q>1, + * we flip q (so then q<1) and return 1.0 - f + */ + + Boolean flip = stardata->star[1].mass > stardata->star[0].mass ? + TRUE : FALSE; + if(stardata->preferences->cbdisc_mass_loss_inner_viscous_accretion_method == CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_CLARKE_YOUNG_2015) { /* * Young and Clarke (2015, MNRAS 452, 3085) * give a prescription for f=f(q) (Eqs. 8 and 9) - * with q = M2/M1 <= 1.0 + * with q = M2/M1 <= 1.0, for cold gas. + * + * Note: if q > 1, we should flip M1 and M2. */ double q = stardata->star[1].mass / stardata->star[0].mass; + if(flip == TRUE) q = 1.0 / q; f = 0.5 * q; // Young & Clarke Eq.8 + if(flip == TRUE) f = 1.0 - f; } else if(stardata->preferences->cbdisc_mass_loss_inner_viscous_accretion_method == CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_GEROSA_2015) @@ -23,8 +40,10 @@ double disc_inner_edge_accretion_f(struct stardata_t * stardata) * Eq. 23 */ double q = stardata->star[1].mass / stardata->star[0].mass; - f = q/(1+q); - } + if(flip == TRUE) q = 1.0 / q; + f = q / (1 + q); + if(flip == TRUE) f = 1.0 - f; + } else if(stardata->preferences->cbdisc_mass_loss_inner_viscous_accretion_method == CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_EQUAL) { @@ -33,12 +52,25 @@ double disc_inner_edge_accretion_f(struct stardata_t * stardata) */ f = 0.5; } + else if(stardata->preferences->cbdisc_mass_loss_inner_viscous_accretion_method == + CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_NONE) + { + /* + * No accretion + */ + f = -1.0; + } else { f = 0.0; Exit_binary_c(ALGORITHM_BRANCH_FAILURE, "Unknown disc accretion method"); } + + //printf("f = %g from q = %g\n",f,stardata->star[1].mass/stardata->star[0].mass); + + /* Clamp just in case */ + Clamp(f,0.0,1.0); return f; } diff --git a/src/disc/disc_inner_edge_loss_timescale.c b/src/disc/disc_inner_edge_loss_timescale.c new file mode 100644 index 0000000000000000000000000000000000000000..e119c4f3c75032625ca8d6201fee5b68ee42167b --- /dev/null +++ b/src/disc/disc_inner_edge_loss_timescale.c @@ -0,0 +1,33 @@ +#include "../binary_c.h" + +#ifdef DISCS + +/* + * Timescale on which material is stripped from the inner + * edge of a disc. + * + * You might want this to be the orbital timescale, + * or perhaps you think it should be zero (i.e. the + * stripping is instantaneous) ? + */ + +double disc_inner_edge_loss_timescale(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + const double t = + disc_generic_stripping_timescale(disc, + binary, + disc->Revap_in, + stardata->preferences->cbdisc_inner_edge_stripping_timescale); + + if(t < 0.0) + { + Exit_binary_c(ALGORITHM_OUT_OF_RANGE, + "Stripping timescale at the inner edge is < 0 : this indicates that the algorithm has gone wrong. Check cbdisc_inner_edge_stripping_timescale is valid.\n"); + } + + return t; +} + +#endif diff --git a/src/disc/disc_inner_edge_mass_loss.c b/src/disc/disc_inner_edge_mass_loss.c new file mode 100644 index 0000000000000000000000000000000000000000..ba159dbac834035ff2d984c5a3b1832d082ba510 --- /dev/null +++ b/src/disc/disc_inner_edge_mass_loss.c @@ -0,0 +1,230 @@ +#include "../binary_c.h" +#ifdef DISCS + +double disc_inner_edge_mass_loss(struct stardata_t * stardata, + struct disc_t * newdisc, + struct disc_t * olddisc, + const struct binary_system_t * binary) +{ + + /* + * Strip the inner edge of the disc out to + * newdisc->Revap_in, if newdisc->Revap_in is non-zero. + * + * olddisc is the previously calculated disc structure + * which is used to calculate the changes. + * + * We apply the new Revap_in to newdisc. + */ + double mdot_in=0.0; + double dm; + + if(Disc_is_disc(newdisc) && + Disc_is_disc(olddisc) && + IS_NOT_ZERO(newdisc->Revap_in) && + MORE_OR_EQUAL(newdisc->Revap_in, olddisc->Rin)) + { + Discdebug(1, + "Disc inner edge evaporation : pre : Rin = %g %s, Revap_in was = %g %s\n", + Solar(olddisc->Rin,R), + Solar(newdisc->Revap_in,R)); + + Discdebug(1, + "Disc->J = %g, integral gives %g\n", + olddisc->J, + disc_total_angular_momentum(olddisc,binary)); + + /* + * Mass loss timescale ~ the orbital period (seconds) + */ + double timescale = disc_inner_edge_loss_timescale(stardata, + olddisc, + binary); + Discdebug(1,"Disc mass loss timescale %g y\n", + timescale/YEAR_LENGTH_IN_SECONDS); + + double f = IS_REALLY_ZERO(timescale) ? 1.0 : + (LIMIT_RANGE(olddisc->dt / timescale, 0.0, 1.0)); + + /* + * Mass we would like to strip + */ + double dmwant = disc_partial_mass(olddisc, + olddisc->Rin, + newdisc->Revap_in); + double djwant = disc_partial_angular_momentum(olddisc, + binary, + olddisc->Rin, + newdisc->Revap_in); + + Discdebug(1, + "dmwant = %30.20g djwant = %g \n", + dmwant/M_SUN, + djwant); + + /* + * Mass we'll try to strip + */ + dm = MIN(olddisc->M * DISC_STRIP_FRAC_M_INNER, f * dmwant); + double dj = MIN(olddisc->J * DISC_STRIP_FRAC_J_INNER, f * djwant); + + Discdebug(1, + "dm = %30.20g \n", + dm/M_SUN); + + if(!FEQUAL(dmwant,dm) || !FEQUAL(djwant,dj)) + { + /* + * We tried to remove more material than limiters allow, + * so adjust Revap_in to compensate. + * + * e.g. if too much mass is sucked off, and if there were no limit, + * Revap_in would match dmwant, but we want it to match dm. + * + * ditto for dj, so choose the minimum of the two to prevent + * as much mass loss as possible + */ + Discdebug(1, + "Tried to remove more than limits allow : adjust\n"); + + double R_M = disc_mass_radius(olddisc,binary,dm); + Discdebug(1,"R_M = %g\n",R_M); + + double R_J = disc_angular_momentum_radius(olddisc,binary,dj); + Discdebug(1,"R_J = %g\n",R_J); + + newdisc->Revap_in = MIN(R_M,R_J); + + /* + * Hence the actual mass and angular momentum removed + */ + dm = disc_partial_mass(olddisc, + olddisc->Rin, + newdisc->Revap_in); + dj = disc_partial_angular_momentum(olddisc, + binary, + olddisc->Rin, + newdisc->Revap_in); + Discdebug(1, + "dm(Revap_in=%g Rsun) = %30.20g \n", + newdisc->Revap_in / R_SUN, + dm/M_SUN); + + } + + Discdebug(1, + "Disc inner edge evaporation : remove dm = %g\n", + dm/M_SUN); + + if(IS_NOT_ZERO(dm)) + { + + double pm = disc_partial_mass(newdisc, + newdisc->Rin, + newdisc->Revap_in)/M_SUN; + Discdebug(1, + "= %g %s between %g and %g Rsun\n", + pm, + M_SOLAR, + newdisc->Rin/R_SUN, + newdisc->Revap_in/R_SUN + ); + } + + /* + * Hence the mass loss rate + */ + mdot_in = - dm / olddisc->dt; + + /* + * Update the mass and angular momentum + */ + Clamp(newdisc->M, 0.0, newdisc->M - dm); + Clamp(newdisc->J, 0.0, newdisc->J - dj); + + /* + * Update disc zones + */ + double Rinwas = newdisc->Rin; + newdisc->Rin = MAX(newdisc->Rin, newdisc->Revap_in); + Discdebug(2, + "Set new Rin = %g from old Rin %g, new Revap_in = %g\n", + newdisc->Rin/R_SUN, + Rinwas/R_SUN, + newdisc->Revap_in/R_SUN); + + newdisc->Rout = MAX(newdisc->Rin, newdisc->Rout); + + /* + * Update zones + */ + disc_rezone(newdisc,binary); + Discdebug(2, + "Post disc_rezone new Rin %g\n", + newdisc->Rin/R_SUN); + + /* + * Stripped material is ejected from the binary system + */ + newdisc->dM_ejected += dm; + newdisc->dJ_ejected += dj; + + /* + * Enforce M,J=0 when Rin==Rout: + * prevents small numerical errors + */ + if(FEQUAL(newdisc->Rin/newdisc->Rout,1.0)) + { + Evaporate_disc(newdisc, + "Rin and Rout are equal in inner edge mass loss"); + } + + Discdebug(1, + "Disc inner edge remove: dm=%g dj=%g : M now %g (integral %g), J now %g (integral %g), Rin = %g (was %g), Revap_in = %g, Rout = %g, t = %g\n", + dm/M_SUN, + dj, + newdisc->M/M_SUN, + disc_total_mass(newdisc)/M_SUN, + newdisc->J, + disc_total_angular_momentum(newdisc,binary), + newdisc->Rin/R_SUN, + Rinwas/R_SUN, + newdisc->Revap_in/R_SUN, + newdisc->Rout/R_SUN, + newdisc->lifetime); + + + + /* + * If inner edge evaporation rate exceeds + * the viscous inflow rate, suppress all the + * viscous inflow. + * NB both numbers are negative, hence the < + */ + if(mdot_in < newdisc->loss[DISC_LOSS_INNER_VISCOUS].mdot) + { + newdisc->suppress_viscous_inflow = TRUE; + } + else + { + newdisc->suppress_viscous_inflow = FALSE; + } + + newdisc->loss[DISC_LOSS_INNER_EDGE].mdot = mdot_in; + newdisc->loss[DISC_LOSS_INNER_EDGE].jdot = - dj / newdisc->dt; + } + else + { + Discdebug(1, + "Disc inner edge evaporation : none : is disc? %d Revap_in %g cf Rin %g\n", + Disc_is_disc(newdisc), + newdisc->Revap_in, + newdisc->Rin + ); + dm = 0.0; + newdisc->suppress_viscous_inflow = FALSE; + } + + return dm; +} +#endif//DISCS diff --git a/src/disc/disc_integrals.c b/src/disc/disc_integrals.c new file mode 100644 index 0000000000000000000000000000000000000000..7dda7671804ebd5375326d6985f503b63c552612 --- /dev/null +++ b/src/disc/disc_integrals.c @@ -0,0 +1,338 @@ +#include "../binary_c.h" + +#if defined DISCS + +#include "disc_integrals.h" + +/* + * Disc integral functions. + * + * Local (static) functions: + * + * The general integral function over the whole disc is disc_integral. + * + * A (relatively untested) function disc_partial_integral can be + * used to integrate over part of the disc. + * + * Public functions:2 + * + * disc_total_mass, disc_total_angular_momentum, disc_total_luminosity, + * disc_total_moment_of_inertia + * etc. + */ + +static double disc_integral(const struct disc_t * disc, + const int nlaw) +{ + /* + * General integrator over the disc's radius + * for a function A(R) with power laws offsets + * in the viscous and radiative zones, respectively. + * + * The exponent required is (c + m * zone->exponent) + * where c and m are input parameters. + */ + + + Disc_zone_counter i; + double I=0.0; + if(nlaw==POWER_LAW_TEMPERATURE) + { + /* + * You should probably never integrate the temperature! + */ + /* + for(i=0; i<disc->n_thermal_zones; i++) + { + I += power_law_zone_integral(&disc->thermal_zones[i].Tlaw); + } + */ + Exit_binary_c_no_stardata( + 2, + "You should not try to integrate the temperature power law directly: use one of the ..._INTEGRAND power laws\n"); + } + else + { + for(i=0; i<disc->n_thermal_zones; i++) + { + const double dI = + power_law_zone_integral(&(disc->thermal_zones[i].power_laws[nlaw])); + I += dI; + } + } + return I; +} + +static double disc_partial_integral(const struct disc_t * disc, + const int nlaw, + const double r0, + const double r1) +{ + /* + * As disc_integral between radii r0 and r1 + */ + int i; + double I=0.0; + int vb = 0; + + if(nlaw==POWER_LAW_TEMPERATURE) + { + /* + * You should probably never integrate the temperature! + */ + Exit_binary_c_no_stardata( + 2, + "You should not try to integrate the temperature power law directly: use one of the ..._INTEGRAND power laws\n"); + } + else if(FEQUAL(r1,r0)) + { + /* radii equal */ + } + else if(r1 > r0) + { + if(vb)printf("PARTIAL INTEGRAL from %20.10g to %20.10g\n",r0/R_SUN,r1/R_SUN); + for(i=0; i<disc->n_thermal_zones; i++) + { + double dI; + if(MORE_OR_EQUAL(disc->thermal_zones[i].rstart,r0) && + LESS_OR_EQUAL(disc->thermal_zones[i].rend,r1)) + { + /* zone is entirely inside the integral region */ + if(vb)printf("WHOLE ZONE %d from %g to %g\n", + i, + disc->thermal_zones[i].rstart/R_SUN, + disc->thermal_zones[i].rend/R_SUN + ); + dI = power_law_zone_integral(&(disc->thermal_zones[i].power_laws[nlaw])); + } + else if(FEQUAL(disc->thermal_zones[i].rstart/disc->thermal_zones[i].rend,1.0)) + { + /* zero width */ + if(vb)printf("NO CONTRIBUTION from zone %d\n",i); + dI = 0.0; + } + else if(r1 < disc->thermal_zones[i].rstart || + r0 > disc->thermal_zones[i].rend) + { + /* integral region is outside the zone */ + if(vb)printf("NO CONTRIBUTION from zone %d\n",i); + dI = 0.0; + } + else + { + const double r_in = MAX(r0,disc->thermal_zones[i].rstart); + const double r_out = MIN(r1,disc->thermal_zones[i].rend); + + if(FEQUAL(r_in/r_out,1.0)) + { + if(vb)printf("NO CONTRIBUTION from zone %d\n",i); + dI = 0.0; + } + else + { + + if(vb)printf("PARTIAL ZONE %d from %20.10g to %20.10g == ? %d (limits = %20.10g,%20.10g, Rin=%20.10g, Rout=%20.10g, zone from %20.10g to %20.10g)\n", + i, + r_in/R_SUN, + r_out/R_SUN, + FEQUAL(r_in,r_out), + r0/R_SUN, + r1/R_SUN, + disc->Rin/R_SUN, + disc->Rout/R_SUN, + disc->thermal_zones[i].rstart/R_SUN, + disc->thermal_zones[i].rend/R_SUN); + dI = power_law_zone_integral_region(&(disc->thermal_zones[i].power_laws[nlaw]), + r_in, + r_out); + } + } + if(vb)printf("dI = %20.10g\n",dI/M_SUN); + I += dI; + if(vb)printf("I = %20.10g\n",I/M_SUN); + } + } + else + { + //printf("Partial integral : r0 = %30.20g > r1 = %30.20g error\n",r0,r1); + } + return I; +} + + +/************************************************************/ + +double disc_total_mass(const struct disc_t * disc) +{ + /* + * Total mass in the disc (cgs). + */ + return disc_integral(disc,POWER_LAW_MASS_INTEGRAND); +} + +double disc_partial_mass(const struct disc_t * disc, + const double r0, + const double r1) +{ + /* + * Partial mass integral (cgs). + */ + return disc_partial_integral(disc,POWER_LAW_MASS_INTEGRAND,r0,r1); +} + +double disc_zone_mass(const struct disc_t * disc, + const int n) +{ + /* + * Mass of zone n + */ + const double r0 = disc->thermal_zones[n].Tlaw.R0; + const double r1 = disc->thermal_zones[n].Tlaw.R1; + return disc_partial_integral(disc,POWER_LAW_MASS_INTEGRAND,r0,r1); +} + +double disc_total_luminosity(const struct disc_t * disc) +{ + /* + * Bolometric disc luminosity (cgs), from both sides of + * the disc. + */ + return disc_integral(disc,POWER_LAW_LUMINOSITY_INTEGRAND); +} + +double disc_partial_angular_momentum(const struct disc_t * disc, + const struct binary_system_t * binary, + const double r0, + const double r1) +{ + return disc_partial_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_INTEGRAND,r0,r1); +} + +double disc_zone_angular_momentum(const struct disc_t * disc, + const struct binary_system_t * binary, + const int n) +{ + /* + * Angular momentum in zone n + */ + const double r0 = disc->thermal_zones[n].Tlaw.R0; + const double r1 = disc->thermal_zones[n].Tlaw.R1; + return disc_partial_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_INTEGRAND,r0,r1); +} + +double disc_total_angular_momentum(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Total angular momentum in the disc (cgs) + */ + return disc_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_INTEGRAND); +} + +double disc_mean_specific_angular_momentum(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * mean specific angular momentum in the disc (cgs) + */ + return disc_total_angular_momentum(disc,binary) / disc_total_mass(disc); +} + + +double disc_total_moment_of_inertia(const struct disc_t * disc) +{ + /* + * Total moment of inertial, assuming a thin disc (cgs) + */ + return disc_integral(disc,POWER_LAW_MOMENT_OF_INERTIA_INTEGRAND); +} + +double disc_total_gravitational_potential_energy(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Total gravitational potential energy in the disc + */ + return disc_integral(disc,POWER_LAW_GRAVITATIONAL_POTENTIAL_ENERGY_INTEGRAND); +} + +double disc_total_kinetic_energy(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Total kinetic energy in the disc + */ + return disc_integral(disc,POWER_LAW_KINETIC_ENERGY_INTEGRAND); +} + + +double disc_total_angular_momentum_flux_from_binary(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Total angular momentum flux throughout the disc. + * + * In the absence of mass loss, this is given by the disc integral + * over the angular momentum flux. The extra term specifies the + * angular momentum required to remove material from the disc. + * + * Note the F_stripping_correction term which corrects for the flow + * of angular momentum from the disc to the inner edge + * when the inner edge is being evaporated. + * + * This version of the function uses the torque parameter + * that's set in the binary struct to calculate the integral. + */ + return + disc_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_FLUX_BINARY_INTEGRAND) + + + F_STRIPPING_CORRECTION_FAC * disc->F_stripping_correction; +} + + +double disc_total_angular_momentum_flux_from_disc(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Total angular momentum flux throughout the disc. + * + * In the absence of mass loss, this is given by the disc integral + * over the angular momentum flux. The extra term specifies the + * angular momentum required to remove material from the disc. + * + * Note the F_stripping_correction term which corrects for the flow + * of angular momentum from the disc to the inner edge + * when the inner edge is being evaporated. + * + * This version of the function uses the disc's local torque parameter + * that's set in the preferences struct to calculate the integral. + */ + return + disc_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_FLUX_DISC_INTEGRAND) + + + F_STRIPPING_CORRECTION_FAC * disc->F_stripping_correction; +} + +double disc_total_angular_momentum_constraint(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Total angular momentum flux throughout the disc + */ + return disc_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_CONSTRAINT); +} + +double disc_mass_weighted_viscous_timescale(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + return disc_integral(disc,POWER_LAW_MASS_WEIGHTED_VISCOUS_TIMESCALE); +} + +double disc_total_angular_momentum_flux_correction(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + return disc_integral(disc,POWER_LAW_ANGULAR_MOMENTUM_FLUX_CORRECTION_INTEGRAND); +} + +#endif // DISCS + diff --git a/src/disc/disc_integrals.h b/src/disc/disc_integrals.h new file mode 100644 index 0000000000000000000000000000000000000000..389db8d80da6a0285ecb77f90e737d1fb9fb67b2 --- /dev/null +++ b/src/disc/disc_integrals.h @@ -0,0 +1,14 @@ +#pragma once + +#ifdef DISC_ADAM_INTEGRALS_H +#define DISC_ADAM_INTEGRALS_H + +static double disc_integral(const struct disc_t * disc, + const int nlaw); + +static double disc_partial_integral(const struct disc_t * disc, + const int nlaw, + const double r0, + const double r1); + +#endif // DISC_ADAM_INTEGRALS_H diff --git a/src/disc/disc_logging.c b/src/disc/disc_logging.c index 7aeca8b12c0a17a5a1f6e140477ecf636c5e7171..d0d55112ae6e64e01ee90570331e7c4538712238 100644 --- a/src/disc/disc_logging.c +++ b/src/disc/disc_logging.c @@ -1,284 +1,376 @@ #include "../binary_c.h" -#if defined DISCS && \ - (defined DISC_LOG_POPSYN || defined DISC_LOG || defined DISC_LOG_2D) -#include "../disc/disc.h" -#include "../disc/disc_adam.h" +#if defined DISCS && \ + (defined DISC_LOG_POPSYN || \ + defined DISC_LOG || \ + defined DISC_LOG_2D) + #ifdef __HAVE_VALGRIND__ #include "valgrind/valgrind.h" #endif +#include "disc_constraints.h" + +/* + * Perform logging for the disc. + * + * Note : the binary struct can be NULL. If this is the case, + * it is set up here. The alternative is to pass in a predefined + * binary struct, thus saving us the effort. + */ + +#define Mdot(X) (MAX(0.0,-disc->loss[(X)].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS)) +#define Jdot(X) (MAX(0.0,-disc->loss[(X)].jdot)) + -void disc_logging(struct stardata_t * stardata) +void disc_logging(struct stardata_t * stardata, + const struct binary_system_t * binary, + const int logger) { /* * Disc logging */ -/* time between log outputs */ -#define DISC_LOG_MIN_DT ( \ - MIN(10000.0 * YEAR_LENGTH_IN_SECONDS,disc->lifetime*0.05) \ - ) -//disc->lifetime < (1000 * YEAR_LENGTH_IN_SECONDS) ? YEAR_LENGTH_IN_SECONDS : - - int i; for(i=0; i<stardata->common.ndiscs; i++) { struct disc_t * disc = & stardata->common.discs[i]; - struct binary_system_t binary; - disc_init_binary_structure(stardata,&binary); - -#ifdef DISC_LOG_POPSYN - if(disc->firstlog == TRUE && - stardata->common.discs[i].delete_count == 0) - { - Star_number overflower = - stardata->previous_stardata->star[0].radius > stardata->previous_stardata->star[0].roche_radius ? - (stardata->previous_stardata->star[1].radius > stardata->previous_stardata->star[1].roche_radius ? 2 : 0) : 1; - PRINTF("DISC_START %g %g %d %d %d %d %g %g %g %g %g %g %g\n", - stardata->model.time, - stardata->model.probability, - stardata->star[0].stellar_type, - stardata->star[1].stellar_type, - overflower, - disc->donor_stellar_type, - disc->M / M_SUN, - disc->J, - stardata->star[0].pms_mass, - stardata->star[1].pms_mass, - stardata->common.zams_period, - stardata->common.zams_separation, - stardata->common.zams_eccentricity - ); - } - double logdt = DISC_LOG_MIN_DT; - Boolean dolog; + Boolean do_log_output = FALSE; + + /* + * Calculate the time since the previous log + * output for this disc, and update the last log time + * to this time. + */ + double tsince = + IS_NOT_ZERO(disc->lastlogtime) ? + (disc->lifetime - disc->lastlogtime) : + 0.0; - if(disc->firstlog == TRUE || - disc->lifetime > disc->nextlog) + double log_dt; + + if(stardata->preferences->disc_log_dt < 0.0) { - dolog = TRUE; - disc->nextlog += logdt; - disc->firstlog = FALSE; + /* + * Use an algorithm to decide how often to output + */ + if(ON_GIANT_BRANCH(stardata->star[0].stellar_type)|| + ON_GIANT_BRANCH(stardata->star[1].stellar_type)) + { + /* + * When we have a giant, log everything + */ + log_dt = 0.0; + } + else + { + /* + * Stars are dwarfs, log every Myr + */ + log_dt = 1.0 * 1e6 * YEAR_LENGTH_IN_SECONDS; + } } else { - dolog = FALSE; + log_dt = stardata->preferences->disc_log_dt; } - if(dolog==TRUE && - disc->n_thermal_zones > 0 && - IS_NOT_ZERO(disc->M)) + /* + * If disc_log_dt is zero, or tsince is zero, force output. + */ + if(IS_ZERO(log_dt) || IS_ZERO(tsince)) { - /* dtp = probabilty * time (years) */ - - //double dtp = stardata->model.probability * - // dtsecs / YEAR_LENGTH_IN_SECONDS; - double dtp = stardata->model.probability * - logdt / YEAR_LENGTH_IN_SECONDS; - - /* calculate integrated properties of the disc */ - double Tin = disc_inner_edge_temperature(disc); - double Tout = disc_outer_edge_temperature(disc); - double Ldisc = disc_total_luminosity(disc); - double Mdisc = disc_total_mass(disc); - double Jdisc = disc_total_angular_momentum(disc,&binary); - double Idisc = disc_total_moment_of_inertia(disc); - double Jbinary = ANGULAR_MOMENTUM_CGS * stardata->common.orbital_angular_momentum; - double Mbinary = stardata->star[0].mass + stardata->star[1].mass; - double P_ISM = disc->PISM; - double R_ISM = disc->RISM; - double Revap = disc->Revap; - - /* output */ - PRINTF("DISC_EV %g %g %d %d %d %d %d %d %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n", - - //PRINTF("DISC_EV dtp=%g lifetime=%g(y) st0=%d st1=%d nzones=%d zone0=%d zone1=%d zone2=%d Rin=%g Rout=%g a=%g RISM=%g Revap=%g R0=%g R1=%g ROL0=%g ROL1=%g Ldisc=%g Idisc=%g Jdisc=%g Jbin=%g Mdisc=%g Mbin=%g Mdotvisc=%g Mdotglobal=%g MdotL2=%g MdotISM=%g MdotFUV=%g MdotX=%g e=%g edot=%g Tin=%g Tout=%g rhoin=%g rhoout=%g Pgravin=%g Pgravout=%g PISM=%g Hin/Rin=%g Hout/Rout=%g Teffmax=%g Tin/Teffmax=%g Lbin=%g LbinX=%g Ldisc/L=%g tviscin=%g tviscout=%g PE=%g KE=%g sigma0=%g Tvisc0=%g\n", - //PRINTF("DISC_EV %g %g %d %d %d %d %d %d %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g ", - - dtp, - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - stardata->star[0].stellar_type, - stardata->star[1].stellar_type, - disc->n_thermal_zones, - (disc->thermal_zones[0].valid==TRUE ? disc->thermal_zones[0].type : DISC_ZONE_TYPE_UNDEFINED), - (disc->thermal_zones[1].valid==TRUE ? disc->thermal_zones[1].type : DISC_ZONE_TYPE_UNDEFINED), - (disc->thermal_zones[2].valid==TRUE ? disc->thermal_zones[2].type : DISC_ZONE_TYPE_UNDEFINED), - disc->Rin/R_SUN, - disc->Rout/R_SUN, - binary.separation/R_SUN, - binary.orbital_period/YEAR_LENGTH_IN_SECONDS, - MORE_OR_EQUAL(R_ISM,(1.0-1e-6)*disc->Rout) ? -1.0 : R_ISM/R_SUN, - disc->Xray_wind_dominated==FALSE ? -1.0 : Revap/R_SUN, - stardata->star[0].radius, - stardata->star[1].radius, - stardata->star[0].roche_radius, - stardata->star[1].roche_radius, - Ldisc/L_SUN, - Idisc, - Jdisc, - Jbinary, - Mdisc/M_SUN - - , - //);PRINTF("%g %g %g %g %g %g %g %g %g %g %g %g %g %g %g ", - Mbinary, - -disc->loss[DISC_LOSS_INNER_VISCOUS].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_GLOBAL].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_ISM].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_FUV].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_XRAY].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - stardata->common.eccentricity, - disc->loss[DISC_LOSS_RESONANCES].edot, - Tin, - Tout, - disc_density(disc->Rin,disc,&binary), - disc_density(disc->Rout,disc,&binary), - disc_gravitational_pressure(disc->Rin,disc,&binary), - disc_gravitational_pressure(disc->Rout,disc,&binary) - , -// );PRINTF("%g %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n", - P_ISM, - disc_scale_height(disc->Rin,disc,&binary)/disc->Rin, - disc_scale_height(disc->Rout,disc,&binary)/disc->Rout, - MAX(binary.Teff[0], binary.Teff[1]), - Tin / MAX(binary.Teff[0],binary.Teff[1]), - binary.L / L_SUN, - binary.LX / L_SUN, - disc_total_luminosity(disc) / binary.L, - disc_viscous_timescale(disc->Rin, disc,&binary) / YEAR_LENGTH_IN_SECONDS, - disc_viscous_timescale(disc->Rout,disc,&binary) / YEAR_LENGTH_IN_SECONDS, - disc_total_gravitational_potential_energy(disc,&binary), - disc_total_kinetic_energy(disc,&binary), - disc->sigma0, - disc->Tvisc0 - ); + do_log_output = TRUE; + } + /* + * If disc_log_dt is nonzero, we only output every disc_log_dt. + */ + else if(tsince > log_dt * YEAR_LENGTH_IN_SECONDS * 1e6) + { + do_log_output = TRUE; } +#if 0 + printf("at lifetime %g : do log ? %d : tsince = %g (cf log_dt %g)\n", + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + do_log_output, + tsince/YEAR_LENGTH_IN_SECONDS, + log_dt * 1e6 + ); +#endif /* - * If the disc has evaporated, log its end. - * - * NB Ignore short-lived (<1.1 year) discs. + * If we're called multiple times at the same time, + * only output once. (you probably don't want this) */ - if(IS_REALLY_ZERO(disc->M) && - disc->lifetime > YEAR_LENGTH_IN_SECONDS*1.1) + /* + if(IS_NOT_ZERO(tsince)) + { + do_log_output = FALSE; + } + */ + + if(do_log_output == TRUE) { - PRINTF("DISC_END %g %g %g %g %d %d %g %g %g %g %g\n", - stardata->model.time, - stardata->model.probability, - disc->lifetime/YEAR_LENGTH_IN_SECONDS, - stardata->common.eccentricity, - stardata->star[0].stellar_type, - stardata->star[1].stellar_type, - stardata->star[0].pms_mass, - stardata->star[1].pms_mass, - stardata->common.zams_period, - stardata->common.zams_separation, - stardata->common.zams_eccentricity - ); + disc->lastlogtime = disc->lifetime; -#ifdef __HAVE_VALGRIND__ + Discdebug(2, + "tsince = %g : called by %s, disc %d\n", + tsince/YEAR_LENGTH_IN_SECONDS, + Disc_logger(logger), + i); + /* - * Discs can greatly slow evolution, and when - * running with valgrind cause timeouts. - * Reset the timeout here. + * Allocate memory for the binary struct and + * initialize it if required */ - if(RUNNING_ON_VALGRIND) + struct binary_system_t * b; + if(binary==NULL) { - reset_binary_c_timeout(); + b = CALLOC(1,sizeof(struct binary_system_t)); + disc_init_binary_structure(stardata,b,disc); + } + else + { + b = (struct binary_system_t *) binary; } -#endif // __HAVE_VALGRIND__ - - } -#endif // DISC_LOG_POPSYN - -#ifdef DISC_LOG_2D - { - // tried at 1e-2, 1e-5 is more accurate but still there are issues - double logR,dlogR = log10(disc->Rout - disc->Rin)/(double)DISC_ADAM_RESOLUTION; - - // numerically integrated mass, luminosity, angular momentum etc. in the disc - double Mint = 0.0; - double Lint = 0.0; - double Jint = 0.0; - double Iint = 0.0; - double KEint = 0.0; - double PEint = 0.0; - - /* - * File log for splots - */ - if(stardata->tmpstore->logfile2d==NULL) + disc_check_equations_everywhere(disc,b); + +#ifdef DISC_LOG_POPSYN + if(disc->firstlog == TRUE && + stardata->common.discs[i].delete_count == 0 && + Disc_is_disc(disc)) { - stardata->tmpstore->logfile2d = fopen("/tmp/cbdisc.dat","w"); - fprintf(stardata->tmpstore->logfile2d, - "\"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", - "t", - "type", - "R", - "T", - "Sigma", - "M", - "L", - "J", - "rho", - "h", - "H", - "H/R", - "cs", - "P", - "nu", - "F", - "tvisc", - "Owensigmadot", - "Owentimescale" + disc->firstlog = FALSE; + Star_number overflower = + stardata->previous_stardata->star[0].radius > stardata->previous_stardata->star[0].roche_radius ? + (stardata->previous_stardata->star[1].radius > stardata->previous_stardata->star[1].roche_radius ? 2 : 0) : 1; + PRINTF("DISC_START %g %g %d %d %d %d %g %g %g %g %g %g %g\n", + stardata->model.time, + stardata->model.probability, + stardata->star[0].stellar_type, + stardata->star[1].stellar_type, + overflower, + disc->donor_stellar_type, + disc->M / M_SUN, + disc->J, + stardata->star[0].pms_mass, + stardata->star[1].pms_mass, + stardata->common.zams_period, + stardata->common.zams_separation, + stardata->common.zams_eccentricity + ); + } + + if(IS_NOT_ZERO(tsince) && + disc->n_thermal_zones > 0 && + Disc_is_disc(disc)) + { + /* dtp = probabilty * time (years) */ + double dtp = stardata->model.probability * + tsince / YEAR_LENGTH_IN_SECONDS; + + /* calculate integrated properties of the disc */ + double Tin = disc_inner_edge_temperature(disc); + double Tout = disc_outer_edge_temperature(disc); + double Ldisc = disc_total_luminosity(disc); + double Mdisc = disc_total_mass(disc); + double Jdisc = disc_total_angular_momentum(disc,b); + double Idisc = disc_total_moment_of_inertia(disc); + double Jbinary = ANGULAR_MOMENTUM_CGS * stardata->common.orbital_angular_momentum; + double Mbinary = stardata->star[0].mass + stardata->star[1].mass; + double P_ISM = disc->PISM; + double R_ISM = disc->RISM; + double Revap_in = disc->Revap_in; + + /* output */ + PRINTF("DISC_EV %20.10e %20.10e %d %d %d %d %d %d %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n", + dtp, // 1 + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + stardata->star[0].stellar_type, + stardata->star[1].stellar_type, + disc->n_thermal_zones, + (disc->thermal_zones[0].valid==TRUE ? disc->thermal_zones[0].type : DISC_ZONE_TYPE_UNDEFINED), + (disc->thermal_zones[1].valid==TRUE ? disc->thermal_zones[1].type : DISC_ZONE_TYPE_UNDEFINED), + (disc->thermal_zones[2].valid==TRUE ? disc->thermal_zones[2].type : DISC_ZONE_TYPE_UNDEFINED), + disc->Rin/R_SUN, + disc->Rout/R_SUN, + b->separation/R_SUN, // 11 + b->orbital_period/YEAR_LENGTH_IN_SECONDS, + MORE_OR_EQUAL(R_ISM,(1.0-1e-6)*disc->Rout) ? -1.0 : R_ISM/R_SUN, + Revap_in / R_SUN, + stardata->star[0].radius, + stardata->star[1].radius, + stardata->star[0].roche_radius, + stardata->star[1].roche_radius, + Ldisc/L_SUN, + Idisc, + Jdisc,// 21 + Jbinary, + Mdisc/M_SUN, //);PRINTF("%g %g %g %g %g %g %g %g %g %g %g %g %g %g %g ", + Mbinary, + -disc->loss[DISC_LOSS_INNER_VISCOUS].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, // 25 + -disc->loss[DISC_LOSS_GLOBAL].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, + -disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, + -disc->loss[DISC_LOSS_ISM].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, + -disc->loss[DISC_LOSS_FUV].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, + -disc->loss[DISC_LOSS_XRAY].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, + stardata->common.eccentricity, // 31 + disc->loss[DISC_LOSS_RESONANCES].edot, + Tin, + Tout, + disc_density(disc->Rin,disc,b), + disc_density(disc->Rout,disc,b), + disc_gravitational_pressure(disc->Rin,disc,b), + disc_gravitational_pressure(disc->Rout,disc,b),//);PRINTF("%g %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n", + P_ISM, + disc_scale_height(disc->Rin,disc,b)/disc->Rin, + disc_scale_height(disc->Rout,disc,b)/disc->Rout, // 41 + MAX(b->Teff[0], b->Teff[1]), + Tin / MAX(b->Teff[0],b->Teff[1]), + b->L / L_SUN, + b->LX / L_SUN, + disc_total_luminosity(disc) / b->L, + disc_viscous_timescale(disc->Rin, disc,b) / YEAR_LENGTH_IN_SECONDS, + disc_viscous_timescale(disc->Rout,disc,b) / YEAR_LENGTH_IN_SECONDS, + disc_total_gravitational_potential_energy(disc,b), + disc_total_kinetic_energy(disc,b), + disc->sigma0, // 51 + disc->Tvisc0 ); } - for(logR = log(disc->Rin) + 0.5*dlogR; logR < log(disc->Rout); ) + /* + * If the disc has evaporated, log its end. + */ + if(IS_REALLY_ZERO(disc->M)&& + disc->end_count==0) { - double R = exp(logR); // radius in cm + disc->end_count++; + PRINTF("DISC_END %30.20g %g %g %g %d %d %g %g %g %g %g %d\n", + stardata->model.time, + stardata->model.probability, + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + stardata->common.eccentricity, + stardata->star[0].stellar_type, + stardata->star[1].stellar_type, + stardata->star[0].pms_mass, + stardata->star[1].pms_mass, + stardata->common.zams_period, + stardata->common.zams_separation, + stardata->common.zams_eccentricity + ); + //Backtrace; + +#ifdef __HAVE_VALGRIND__ + /* + * Discs can greatly slow evolution, and when + * running with valgrind cause timeouts. + * Reset the timeout here. + */ + if(RUNNING_ON_VALGRIND) + { + reset_binary_c_timeout(); + } +#endif // __HAVE_VALGRIND__ - // dR = dlogR *R - double dR = dlogR * R; + } +#endif // DISC_LOG_POPSYN - // dA = 2 pi R dR - double dA = 2.0 * PI * R * dR; + +#ifdef DISC_LOG_2D + if(stardata->preferences->disc_log2d != DISC_LOG_LEVEL_NONE && + Disc_is_disc(disc)) + { + // tried at 1e-2, 1e-5 is more accurate but still there are issues + double logR,dlogR = (log(disc->Rout) - log(disc->Rin))/ + (double)DISC_ADAM_RESOLUTION; + + // numerically integrated mass, luminosity, angular momentum etc. in the disc + double Mint = 0.0; + double Lint = 0.0; + double Jint = 0.0; + double Iint = 0.0; + double KEint = 0.0; + double PEint = 0.0; + + /* + * File log for splots + */ + if(Disc_can_log2d && + Disc_is_disc(disc) && + Disc_log_filepointer2d==NULL) + { + Disc_log_filepointer2d = + binary_c_fopen("/tmp/cbdisc.dat", + "w", + DISC_LOG_2D_MAX_BYTES); + binary_c_fprintf(Disc_log_filepointer2d, + "\"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", + "t", + "type", + "R", + "T", + "Sigma", + "M", + "L", + "J", + "rho", + "h", + "H", + "H/R", + "cs", + "P", + "nu", + "F", + "tvisc", + "Owensigmadot", + "Owentimescale", + "ToomreQ" + ); + } + + for(logR = log(disc->Rin) + 0.5*dlogR; logR < log(disc->Rout); ) + { + double R = exp(logR); // radius in cm + + // dR = dlogR *R + double dR = dlogR * R; + + // dA = 2 pi R dR + double dA = 2.0 * PI * R * dR; - /* temperature */ - double T = disc_temperature(R,disc); + /* temperature */ + double T = disc_temperature(R,disc); - /* surface density */ - double Sigma = disc_column_density(R,disc); + /* surface density */ + double Sigma = disc_column_density(R,disc); - // Bolometric luminosity dL = 2 * sigma T^4 dA - Lint += 2.0 * dA * STEFAN_BOLTZMANN_CONSTANT * POW4(T); + // Bolometric luminosity dL = 2 * sigma T^4 dA + Lint += 2.0 * dA * STEFAN_BOLTZMANN_CONSTANT * POW4(T); - double dM = Sigma * dA; - - // add up disc mass - Mint += dM; + double dM = Sigma * dA; - // dJ = dM * h - Jint += dM * disc_specific_angular_momentum(R,&binary); + // add up disc mass + Mint += dM; - // dI = dM * R^2 - double dI = dM * R * R; - Iint += dI; + // dJ = dM * h + Jint += dM * disc_specific_angular_momentum(R,b); - // KE - double omega = disc_orbital_frequency(R,&binary); - KEint += 0.5 * POW2(omega) * dI; + // dI = dM * R^2 + double dI = dM * R * R; + Iint += dI; - // PE - PEint += - GRAVITATIONAL_CONSTANT * binary.mtot * dM / R; + // KE + double omega = disc_orbital_frequency(R,b); + KEint += 0.5 * POW2(omega) * dI; + // PE + PEint += - GRAVITATIONAL_CONSTANT * b->mtot * dM / R; - fprintf(stardata->tmpstore->logfile2d, - "%g %d %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n", + binary_c_fprintf( + Disc_log_filepointer2d, + "%g %d %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g\n", disc->lifetime/YEAR_LENGTH_IN_SECONDS, DISC_ZONE_TYPE(R,disc), R/R_SUN, @@ -287,53 +379,54 @@ void disc_logging(struct stardata_t * stardata) Mint/M_SUN, Lint/L_SUN, Jint, - disc_density(R,disc,&binary), - disc_specific_angular_momentum(R,&binary), - disc_scale_height(R,disc,&binary), - disc_scale_height(R,disc,&binary)/R, + disc_density(R,disc,b), + disc_specific_angular_momentum(R,b), + disc_scale_height(R,disc,b), + disc_scale_height(R,disc,b)/R, disc_sound_speed(R,disc), - disc_pressure(R,disc,&binary), - disc_kinematic_viscosity(R,disc,&binary), - disc_angular_momentum_flux(R,disc,&binary), - disc_viscous_timescale(R,disc,&binary), - disc_Owen_2012_sigmadot(disc,&binary,R), - disc_Owen_2012_mass_loss_timescale(disc,&binary,R) - ); - - - logR += dlogR; - } - - fprintf(stardata->tmpstore->logfile2d,"\n"); - fflush(stardata->tmpstore->logfile2d); - if(0) - { - // numerical tests - printf("TEST M : disc->M = %g, disc_total_mass = %g, Mint = %g\nTEST L : disc_total_luminosity() = %g, Lint = %g Lsun\nTEST J : disc->J = %g, disc_total_angular_momentum = %g, Jint = %g\nTEST I : disc_moment_of_inertia() = %g, Iint = %g\nTEST KE : disc_total_kinetic_energy = %g, KEint = %g\nTEST PE : disc_total_gravitational_potential_energy = %g, PEint = %g\n", - - // M test - disc->M/M_SUN, - disc_total_mass(disc)/M_SUN, - Mint/M_SUN, - // L test - disc_total_luminosity(disc)/L_SUN, - Lint/L_SUN, - // J test - disc->J, - disc_total_angular_momentum(disc,&binary), - Jint, - // I test - disc_total_moment_of_inertia(disc), - Iint, - // disc kinetic energy - disc_total_kinetic_energy(disc,&binary), - KEint, - // disc potential energy - disc_total_gravitational_potential_energy(disc,&binary), - PEint - ); + disc_pressure(R,disc,b), + disc_kinematic_viscosity(R,disc,b), + disc_angular_momentum_flux(R,disc,b), + disc_viscous_timescale(R,disc,b), + disc_Owen_2012_sigmadot(disc,b,R), + disc_Owen_2012_mass_loss_timescale(disc,b,R), + disc_Toomre_Q(R,disc,b) + ); + + + logR += dlogR; + } + + binary_c_fprintf(Disc_log_filepointer2d,"\n"); + binary_c_fflush(Disc_log_filepointer2d); + if(0) + { + // numerical tests + printf("TEST M : disc->M = %g, disc_total_mass = %g, Mint = %g\nTEST L : disc_total_luminosity() = %g, Lint = %g Lsun\nTEST J : disc->J = %g, disc_total_angular_momentum = %g, Jint = %g\nTEST I : disc_moment_of_inertia() = %g, Iint = %g\nTEST KE : disc_total_kinetic_energy = %g, KEint = %g\nTEST PE : disc_total_gravitational_potential_energy = %g, PEint = %g\n", + + // M test + disc->M/M_SUN, + disc_total_mass(disc)/M_SUN, + Mint/M_SUN, + // L test + disc_total_luminosity(disc)/L_SUN, + Lint/L_SUN, + // J test + disc->J, + disc_total_angular_momentum(disc,b), + Jint, + // I test + disc_total_moment_of_inertia(disc), + Iint, + // disc kinetic energy + disc_total_kinetic_energy(disc,b), + KEint, + // disc potential energy + disc_total_gravitational_potential_energy(disc,b), + PEint + ); + } } - } #endif //DISC_LOG_2D @@ -341,13 +434,21 @@ void disc_logging(struct stardata_t * stardata) #ifdef DISC_LOG - if(stardata->tmpstore->logfile==NULL) - { - if(DISC_DEBUG) - printf("evolve disc open logfile\n"); - stardata->tmpstore->logfile = fopen("/tmp/cbdisc.log","w"); - fprintf(stardata->tmpstore->logfile, - "\"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", + if(Disc_can_log && + Disc_log_filepointer == NULL && + Disc_is_disc(disc)) + { + if(DISC_DEBUG) + printf("evolve disc open logfile\n"); + Disc_log_filepointer = + binary_c_fopen( + "/tmp/cbdisc.log", + "w", + DISC_LOG_MAX_BYTES); + stardata->tmpstore->disc_logfilecount++; + binary_c_fprintf( + Disc_log_filepointer, + "\"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n", "t", "st1", "st2", @@ -357,29 +458,57 @@ void disc_logging(struct stardata_t * stardata) "zone2", "Rin", "Rout", + "RMhalf", + "RJhalf", "separation", + "a1", + "a2", + "aL1", + "aL2", + "aL3", + "Revap_in", + "Revap_out", "RISM", - "Revap", "R0", "R1", "RL0", "RL1", + "RZ0", + "RZ1", + "torquef", "Ldisc", "Idisc", + "Fdisc", "Jdisc", "Jbin", + "hdisc", "Mdisc", "Mbin", "Mc1", "Mc2", "Menv1", "Menv2", + "Mdotvisc", "Mdotglobal", "MdotL2", "MdotISM", "MdotFUV", "MdotXray", + "Mdotinner", + "Mdotouter", + + "Jdotvisc", + "Jdotglobal", + "JdotL2", + "JdotISM", + "JdotFUV", + "JdotXray", + "Jdotinner", + "Jdotouter", + "Jdottorque", + "hwind", + "ecc", "eccdot", "Tin", @@ -407,141 +536,279 @@ void disc_logging(struct stardata_t * stardata) "epsM", "epsJ", "epsF", + "epstorquef", "solver", "guess", - "fRing" - ); - fprintf(stardata->tmpstore->logfile, - "# alpha=%g gamma=%g kappa=%g f_{torque}=%g f_{c}=%g f_{visc}=%g f_{L2}=%g : L_{min}=%g M_{min}=%g : Comenv f_{M}=%g f_{J}=%g : ", - disc->alpha, - disc->gamma, - disc->kappa, - disc->torqueF, - stardata->preferences->cbdisc_mass_loss_constant_rate, - stardata->preferences->cbdisc_mass_loss_inner_viscous_multiplier, - stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier, - stardata->preferences->cbdisc_minimum_luminosity, - stardata->preferences->cbdisc_minimum_mass, - stardata->preferences->comenv_disc_mass_fraction, - stardata->preferences->comenv_disc_angmom_fraction); + "fRing", + "minToomreQ", +#ifdef DISC_EQUATION_CHECKS + "eq.dT/T%", + "eq.Mdot/others%", +#else + "","", +#endif + "Mc1dot", + "Mc2dot" + + ); + binary_c_fprintf(Disc_log_filepointer, + "# alpha=%g gamma=%g kappa=%g f_{torque,init}=%g f_{c}=%g f_{visc}=%g f_{L2}=%g viscous_L2_coupling=%d : L_{min}=%g M_{min}=%g : Comenv f_{M}=%g f_{J}=%g : ", + disc->alpha, + disc->gamma, + disc->kappa, + disc->torqueF, + stardata->preferences->cbdisc_mass_loss_constant_rate, + stardata->preferences->cbdisc_mass_loss_inner_viscous_multiplier, + stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier, + stardata->preferences->cbdisc_viscous_L2_coupling, + stardata->preferences->cbdisc_minimum_luminosity, + stardata->preferences->cbdisc_minimum_mass, + stardata->preferences->comenv_disc_mass_fraction, + stardata->preferences->comenv_disc_angmom_fraction); #ifdef SVN_REVISION - fprintf(stardata->tmpstore->logfile, - "SVN %d", - SVN_REVISION+0 - ); + binary_c_fprintf(Disc_log_filepointer, + "SVN %d", + SVN_REVISION+0 + ); #endif // SVN_REVISION #ifdef GIT_REVISION - fprintf(stardata->tmpstore->logfile, - "git %s", - STRINGOF(GIT_REVISION) - ); + binary_c_fprintf(Disc_log_filepointer, + "git %s", + STRINGOF(GIT_REVISION) + ); #endif // GIT_REVISION - fprintf(stardata->tmpstore->logfile,"\n"); - } - - { - /* calculate integrated properties of the disc */ - double Tin = disc_inner_edge_temperature(disc); - double Tout = disc_outer_edge_temperature(disc); - double Ldisc = disc_total_luminosity(disc); - double Mdisc = disc_total_mass(disc); - double Jdisc = disc_total_angular_momentum(disc,&binary); - double Fdisc = disc_total_angular_momentum_flux(disc,&binary); - double Idisc = disc_total_moment_of_inertia(disc); - double Jbinary = ANGULAR_MOMENTUM_CGS * stardata->common.orbital_angular_momentum; - double Mbinary = stardata->star[0].mass + stardata->star[1].mass; - double P_ISM = disc->PISM; - double R_ISM = disc->RISM; - double Revap = disc->Revap; - - /* output */ - fprintf(stardata->tmpstore->logfile, - "%20.12g %d %d %d %d %d %d %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %20.12g %d %d %20.12g\n", + binary_c_fprintf(Disc_log_filepointer,"\n"); + } + + if(stardata->preferences->disc_log != DISC_LOG_LEVEL_NONE && + Disc_is_disc(disc)) + { + /* calculate integrated properties of the disc */ + const double Tin = disc_inner_edge_temperature(disc); + const double Tout = disc_outer_edge_temperature(disc); + const double Ldisc = disc_total_luminosity(disc); + const double Mdisc = disc_total_mass(disc); + const double Jdisc = disc_total_angular_momentum(disc,b); + const double hdisc = Mdisc / Jdisc; + const double Fdisc = disc_total_angular_momentum_flux_from_binary(disc,b); + const double Idisc = disc_total_moment_of_inertia(disc); + const double Jbinary = ANGULAR_MOMENTUM_CGS * stardata->common.orbital_angular_momentum; + const double Mbinary = stardata->star[0].mass + stardata->star[1].mass;//Msun + const double P_ISM = disc->PISM; + const double R_ISM = disc->RISM; + const double Revap_in = disc->Revap_in; + const double Revap_out = disc->Revap_out; + const double RMhalf = disc_half_mass_radius(disc,b); + const double RJhalf = disc_half_angular_momentum_radius(disc,b); + const double Mdotwind = + Mdot(DISC_LOSS_GLOBAL)+ + Mdot(DISC_LOSS_ISM)+ + Mdot(DISC_LOSS_FUV)+ + Mdot(DISC_LOSS_XRAY)+ + Mdot(DISC_LOSS_INNER_EDGE)+ + Mdot(DISC_LOSS_OUTER_EDGE); + + const double Jdotwind = + Jdot(DISC_LOSS_GLOBAL)+ + Jdot(DISC_LOSS_ISM)+ + Jdot(DISC_LOSS_FUV)+ + Jdot(DISC_LOSS_XRAY)+ + Jdot(DISC_LOSS_INNER_EDGE)+ + Jdot(DISC_LOSS_OUTER_EDGE); + + const double hwind = IS_REALLY_NOT_ZERO(Mdotwind) ? + (Jdotwind / Mdotwind) : 0.0; + + + const double min_Toomre_Q = disc_minimum_Toomre_Q(disc,b); + + double RZ0,RZ1; /* zone crossing radii */ + //disc_zone_crossing_radii(disc,binary,&RZ0,&RZ1); + RZ0 = RZ1 = 0.0; + + /* output */ + binary_c_filter_fprintf( + Disc_log_filepointer, + FILE_FILTER_STRIP_ARGUMENTS, + "t=%.20e st1=%d st2=%d nzones=%d zone0=%d zone1=%d zone2=%d Rin=%20.12g Rout=%20.12g RMhalf=%20.12g RJhalf=%20.12g a=%20.12g a1=%20.12g a2=%20.12g aL1=%20.12g aL2=%20.12g aL3=%20.12g Revapin=%20.12g Revapout=%20.12g RISM=%20.12g R0=%20.12g R1=%20.12g RL0=%20.12g RL1=%20.12g RZ0=%20.12g RZ1=%20.12g torqueF=%20.12g Ldisc=%20.12g Idisc=%20.12g Fdisc=%20.12g Jdisc=%20.12g Jbinary=%20.12g hdisc=%20.12g Mdisc=%20.12g Mbinary=%20.12g Mc0=%20.12g Mc1=%20.12g Menv1=%20.12g Menv2=%20.12g Mdotvisc=%20.12g Mdoscglobal=%20.12g MdotL2=%20.12g MdotISM=%20.12g MdotFUV=%20.12g MdotX=%20.12g Mdotin=%20.12g Mdotout=%20.12g Jdotvisc=%20.12g Jdotglobal=%20.12g JdotL2=%20.12g JdotISM=%20.12g JdotFUV=%20.12g JdotX=%20.12g Jdotin=%20.12g Jdotout=%20.12g Jdottorque=%20.12g hwind=%20.12g e=%20.12g edot=%20.12g Tin=%20.12g Tout=%20.12g densityin=%20.12g densityout=%20.12g sigmain=%20.12g sigmaout=%20.12g Pgravin=%20.12g Pgravout=%20.12g PISM=%20.12g HRin=%20.12g HRout=%20.12g Teffmaxstar=%20.12g Tratio=%20.12g Lstar=%20.12g LstarX=%20.12g Ldisc=%20.12g tviscin=%20.12g tviscout=%20.12g PEdisc=%20.12g KEdisc=%20.12g sigma0=%20.12g Tvisc0=%20.12g epsM=%20.12g epsJ=%20.12g epsF=%20.12g epstorqueF=%20.12g solver=%d guess=%d fRing=%20.12g ToomreQ=%20.12g Terrorpc=%20.12g Mdoterrorpc=%20.12g Mc0dot=%20.12g Mc1dot=%20.12g\n", disc->lifetime/YEAR_LENGTH_IN_SECONDS, + + // stellar types stardata->star[0].stellar_type, stardata->star[1].stellar_type, + + // thermal zone information disc->n_thermal_zones, (disc->thermal_zones[0].valid==TRUE ? disc->thermal_zones[0].type : DISC_ZONE_TYPE_UNDEFINED), (disc->thermal_zones[1].valid==TRUE ? disc->thermal_zones[1].type : DISC_ZONE_TYPE_UNDEFINED), (disc->thermal_zones[2].valid==TRUE ? disc->thermal_zones[2].type : DISC_ZONE_TYPE_UNDEFINED), + + // radii disc->Rin/R_SUN, disc->Rout/R_SUN, - binary.separation/R_SUN, + RMhalf/R_SUN, + RJhalf/R_SUN, + b->separation/R_SUN, + b->a1/R_SUN, + b->a2/R_SUN, + b->aL1/R_SUN, + b->aL2/R_SUN, + b->aL3/R_SUN, + IS_NOT_ZERO(Revap_in) ? Revap_in/R_SUN : -1.0, + IS_NOT_ZERO(Revap_out) ? Revap_out/R_SUN : -1.0, MORE_OR_EQUAL(R_ISM,(1.0-1e-6)*disc->Rout) ? -1.0 : R_ISM/R_SUN, - disc->Xray_wind_dominated==FALSE ? -1.0 : Revap/R_SUN, stardata->star[0].radius, stardata->star[1].radius, stardata->star[0].roche_radius, stardata->star[1].roche_radius, + + // zone crossing radii + RZ0/R_SUN, + RZ1/R_SUN, + + // misc. + disc->torqueF, Ldisc/L_SUN, Idisc, + Fdisc, Jdisc, Jbinary, + hdisc, Mdisc/M_SUN, Mbinary, - + + // stellar mass stardata->star[0].core_mass, stardata->star[1].core_mass, stardata->star[0].mass - stardata->star[0].core_mass, stardata->star[1].mass - stardata->star[1].core_mass, - -disc->loss[DISC_LOSS_INNER_VISCOUS].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_GLOBAL].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_INNER_L2_CROSSING].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_ISM].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_FUV].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, - -disc->loss[DISC_LOSS_XRAY].mdot / M_SUN * YEAR_LENGTH_IN_SECONDS, + + // disc mass loss rates + + Mdot(DISC_LOSS_INNER_VISCOUS), + Mdot(DISC_LOSS_GLOBAL), + Mdot(DISC_LOSS_INNER_L2_CROSSING), + Mdot(DISC_LOSS_ISM), + Mdot(DISC_LOSS_FUV), + Mdot(DISC_LOSS_XRAY), + Mdot(DISC_LOSS_INNER_EDGE), + Mdot(DISC_LOSS_OUTER_EDGE), + + // angular momentum rates + Jdot(DISC_LOSS_INNER_VISCOUS), + Jdot(DISC_LOSS_GLOBAL), + Jdot(DISC_LOSS_INNER_L2_CROSSING), + Jdot(DISC_LOSS_ISM), + Jdot(DISC_LOSS_FUV), + Jdot(DISC_LOSS_XRAY), + Jdot(DISC_LOSS_INNER_EDGE), + Jdot(DISC_LOSS_OUTER_EDGE), + Jdot(DISC_LOSS_BINARY_TORQUE), + + // specific angular momentum loss rate in winds + hwind, + + // eccentricity stardata->common.eccentricity, disc->loss[DISC_LOSS_RESONANCES].edot, + + // disc tempeatures Tin, Tout, - disc_density(disc->Rin,disc,&binary), - disc_density(disc->Rout,disc,&binary), + + // densities + disc_density(disc->Rin,disc,b), + disc_density(disc->Rout,disc,b), + + // column densities disc_column_density(disc->Rin,disc), disc_column_density(disc->Rout,disc), - disc_gravitational_pressure(disc->Rin,disc,&binary), - disc_gravitational_pressure(disc->Rout,disc,&binary), + + // pressures + disc_gravitational_pressure(disc->Rin,disc,b), + disc_gravitational_pressure(disc->Rout,disc,b), P_ISM, - IS_ZERO(disc->Rin) ? 0.0 : (disc_scale_height(disc->Rin,disc,&binary)/disc->Rin), - IS_ZERO(disc->Rout) ? 0.0 : (disc_scale_height(disc->Rout,disc,&binary)/disc->Rout), - MAX(binary.Teff[0],binary.Teff[1]), - Tin / MAX(binary.Teff[0],binary.Teff[1]), - binary.L / L_SUN, - binary.LX / L_SUN, - disc_total_luminosity(disc) / binary.L, - disc_viscous_timescale(disc->Rin, disc,&binary) / YEAR_LENGTH_IN_SECONDS, - disc_viscous_timescale(disc->Rout,disc,&binary) / YEAR_LENGTH_IN_SECONDS, - disc_total_gravitational_potential_energy(disc,&binary), - disc_total_kinetic_energy(disc,&binary), + + // scale heights H/R + (IS_ZERO(disc->Rin)||IS_ZERO(disc->Rout)||FEQUAL(disc->Rin,disc->Rout)) ? 0.0 : (disc_scale_height(disc->Rin,disc,b)/disc->Rin), + (IS_ZERO(disc->Rin)||IS_ZERO(disc->Rout)||FEQUAL(disc->Rin,disc->Rout)) ? 0.0 : (disc_scale_height(disc->Rout,disc,b)/disc->Rout), + + // effective tempeartures of the stars + MAX(b->Teff[0],b->Teff[1]), + Tin / MAX(b->Teff[0],b->Teff[1]), + + // luminosities + b->L / L_SUN, + b->LX / L_SUN, + disc_total_luminosity(disc) / b->L, + + // viscous timescales + disc_viscous_timescale(disc->Rin, disc,b) / YEAR_LENGTH_IN_SECONDS, + disc_viscous_timescale(disc->Rout,disc,b) / YEAR_LENGTH_IN_SECONDS, + + // energies + disc_total_gravitational_potential_energy(disc,b), + disc_total_kinetic_energy(disc,b), + disc->sigma0, disc->Tvisc0, - IS_NOT_ZERO(disc->M) ? (Mdisc/disc->M-1.0) : 0.0, - IS_NOT_ZERO(disc->J) ? (Jdisc/disc->J-1.0) : 0.0, - IS_NOT_ZERO(disc->F) ? (Fdisc/disc->F-1.0) : 0.0, + + // solution epsilons + disc->epsilon!=NULL ? disc->epsilon[DISC_CONSTRAINT_M_TO_DISC_M] : 0.0, + disc->epsilon!=NULL ? disc->epsilon[DISC_CONSTRAINT_J_TO_DISC_J] : 0.0, + disc->epsilon!=NULL ? disc->epsilon[DISC_CONSTRAINT_F_TO_DISC_F] : 0.0, + + disc->epstorquef, + disc->solver, disc->guess, - disc->fRing - ); - fflush(stardata->tmpstore->logfile); - } + disc->fRing, + min_Toomre_Q, +#ifdef DISC_EQUATION_CHECKS + disc->equations_T_error_pc, + disc->equations_mass_loss_term_pc, + +#else + 0.0, + 0.0, +#endif // DISC_EQUATION_CHECKS + + /* core growth rates */ + stardata->star[0].derivative[DERIVATIVE_STELLAR_CORE_MASS], + stardata->star[1].derivative[DERIVATIVE_STELLAR_CORE_MASS] + ); + binary_c_fflush(Disc_log_filepointer); + } #endif // DISC_LOG - if(disc->lifetime > DISC_MAX_AGE) - { -#ifdef DISC_LOG_2D - if(stardata->tmpstore->logfile2d != NULL) + if(!Disc_is_disc(disc)) { - fclose(stardata->tmpstore->logfile2d); - stardata->tmpstore->logfile2d=NULL; - } +#ifdef DISC_LOG_2D + if(stardata->preferences->disc_log2d!= DISC_LOG_LEVEL_NONE && + Disc_log_filepointer2d != NULL) + { + binary_c_fclose(&Disc_log_filepointer2d); + Disc_log_filepointer2d = NULL; + } #endif //DISC_LOG_2D #ifdef DISC_LOG - if(stardata->tmpstore->logfile != NULL) + if(stardata->preferences->disc_log != DISC_LOG_LEVEL_NONE && + Disc_log_filepointer != NULL) + { + binary_c_fclose(&Disc_log_filepointer); + Disc_log_filepointer = NULL; + } +#endif //DISC_LOG + } + + /* + * Free memory if required + */ + if(binary==NULL) { - fclose(stardata->tmpstore->logfile); - stardata->tmpstore->logfile=NULL; + Safe_free(b); } -#endif //DISC_LOG } } } diff --git a/src/disc/disc_macros.h b/src/disc/disc_macros.h index 01fdff44b30b6c3d4dc830639a18685e1931803d..b5516f94d82eb265b78fcd153903e03113565550 100644 --- a/src/disc/disc_macros.h +++ b/src/disc/disc_macros.h @@ -1,3 +1,4 @@ +#pragma once #ifndef DISC_MACROS_H #define DISC_MACROS_H @@ -48,6 +49,32 @@ "Unknown" \ ) + +/* + * Macro to determine whether a disc is actually a + * disc. It cannot be if either M or J is zero, + * or if its lifetime exceeds DISC_MAX_LIFETIME. + */ + +#define IS_NONZERO_NUMBER(X) \ + ((IS_REALLY_NOT_ZERO(X) && \ + !isnan(X) && !isinf(X))) + +/* + * Macro to determine whether a disc "really exists". + * + * This can often be used to determine whether other + * functions, like integrals over the disc, will work. + */ +#define Disc_is_disc(D) \ + ( \ + IS_NONZERO_NUMBER((D)->M) \ + && \ + IS_NONZERO_NUMBER((D)->J) \ + && \ + (D)->lifetime < DISC_MAX_LIFETIME \ + ) + /* * Reasons for disc removal */ @@ -65,21 +92,9 @@ "Unknown" \ ) -#define Disc_do_debug(N) \ - ((DISC_DEBUG) >= (N)) - -#define DISC_DEBUG_STREAM stdout - -#define Discdebug(N,...) \ - if(Disc_do_debug(N)) \ - { \ - fprintf(DISC_DEBUG_STREAM,__VA_ARGS__); \ - fflush(DISC_DEBUG_STREAM); \ - } /* solvers */ - #define Solver_string(N) ( \ (N)==(DISC_SOLVER_BISECTION) ? "Bi" : \ (N)==(GSL_MULTIROOT_FSOLVER_HYBRIDS) ? "Hs" : \ @@ -92,13 +107,12 @@ GSL_MULTIROOT_FSOLVER_HYBRID, \ DISC_SOLVER_BISECTION -#define DISC_SOLVER_NGUESSES 4 +#define DISC_SOLVER_NINITIAL_GUESSES 5 +#define DISC_SOLVER_NINITIAL_GUESSES 5 #define DISC_SOLVER_NSOLVERS 3 +#define DISC_SOLVER_NONE 0 #define DISC_SOLVER_BISECTION -1 - - - #define Show_disc_derivative(N) \ Discdebug(1, \ "d(%20s)/dt = M % 20g (Msun/y), J % 20g (cgs), e % 20g (s^-1)\n", \ @@ -116,4 +130,220 @@ (D)->de_binary = 0.0; \ } + +/* + * Circumbinary disc eccentricity pumping algorithms + */ +#define CBDISC_ECCENTRICITY_PUMPING_NONE 0 +#define CBDISC_ECCENTRICITY_PUMPING_DERMINE 1 + +/* + * Circumbinary disc from commom envelope + * angular momentum selectors + */ +#define CBDISC_ANGMOM_FROM_MOMENTS_OF_INERTIA -1 +#define CBDISC_ANGMOM_FROM_COMENV_SPECIFIC_ANGMOM -2 +#define CBDISC_ANGMOM_FROM_POSTCE_L2 -3 +#define CBDISC_ANGMOM_FROM_PRECE_RADIUS -4 + +/* + * Circumbinary disc angular momentum selectors + */ +#define CBDISC_ANGMOM_FROM_WIND_L2 -1 + +/* + * Circumbinary viscous accretion which star gains mass method + */ +#define CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_CLARKE_YOUNG_2015 0 +#define CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_GEROSA_2015 1 +#define CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_EQUAL 2 +#define CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_NONE 3 + +/* + * Minimum disc mass (in Msun) + */ +#define MINIMUM_DISC_MASS 1e-6 + +/* disc mass/angmom/ecc loss/gain mechanisms */ +#define DISC_LOSS_GLOBAL 0 +#define DISC_LOSS_INNER_VISCOUS 1 +#define DISC_LOSS_INNER_L2_CROSSING 2 +#define DISC_LOSS_FUV 3 +#define DISC_LOSS_XRAY 4 +#define DISC_LOSS_BINARY_TORQUE 5 +#define DISC_LOSS_ISM 6 +#define DISC_LOSS_RESONANCES 7 +#define DISC_LOSS_NEGATIVE_FLUX 8 +#define DISC_LOSS_INNER_EDGE 9 +#define DISC_LOSS_OUTER_EDGE 10 +#define DISC_LOSS_N 11 + +#define DISC_LOSS_STRINGS \ + "Global", \ + "Inner Viscous", \ + "Inner L2 Crossing", \ + "FUV", \ + "X-ray", \ + "Binary torque", \ + "ISM ram stripping (global)", \ + "Resonances", \ + "Negative flux", \ + "Inner edge", \ + "Outer edge" + +#define Disc_derivative_string(A) ( \ + (A) == DISC_LOSS_GLOBAL ? "Global" : \ + (A) == DISC_LOSS_INNER_VISCOUS ? "Viscous" : \ + (A) == DISC_LOSS_INNER_L2_CROSSING ? "L2 crossing": \ + (A) == DISC_LOSS_FUV ? "FUV" : \ + (A) == DISC_LOSS_XRAY ? "X-ray" : \ + (A) == DISC_LOSS_BINARY_TORQUE ? "Binary torque" : \ + (A) == DISC_LOSS_ISM ? "ISM ram stripping" : \ + (A) == DISC_LOSS_RESONANCES ? "Resonances" : \ + (A) == DISC_LOSS_NEGATIVE_FLUX ? "Negative flux" : \ + (A) == DISC_LOSS_INNER_EDGE ? "Inner edge" : \ + (A) == DISC_LOSS_OUTER_EDGE ? "Outer edge" : \ + "Unknown" ) + +/* macro to define mass loss from the inner or outer edge */ +#define Disc_loss_from_edge(I) \ + ((I)==DISC_LOSS_INNER_EDGE || \ + (I)==DISC_LOSS_OUTER_EDGE) + + +#define DISC_ZONES_FAILED 0 +#define DISC_ZONES_OK 1 +#define DISC_ZONES_NEW_ZONE_LIST_RIN_EQUALS_ROUT 2 +#define DISC_ZONES_NO_ZONES 3 +#define DISC_ZONES_RIN_EXCEEDS_ROUT 4 + +#define DISC_LOSS_ISM_GLOBAL 0 +#define DISC_LOSS_ISM_OUTER_EDGE 1 + + +/************************************************************/ +/* + * Disc logging caller functions + */ +#define DISC_LOG_EVOLVE_DISC_STRUCTURE 0 +#define DISC_LOG_EVOLVE_DISC_STRUCTURE2 1 +#define DISC_LOG_EVERY_TIMESTEP 2 + +/* + * ... and a string to log them. + */ +#define Disc_logger(A) ( \ + (A) == DISC_LOG_EVOLVE_DISC_STRUCTURE ? "disc_evolve_disc_structure" : \ + (A) == DISC_LOG_EVOLVE_DISC_STRUCTURE2 ? "disc_evolve_disc_structure (2)" : \ + (A) == DISC_LOG_EVERY_TIMESTEP ? "log_every_timestep" : \ + "Unknown") + +/* + * Log levels + */ +#define DISC_LOG_LEVEL_NONE 0 +#define DISC_LOG_LEVEL_NORMAL 1 +#define DISC_LOG_LEVEL_SUBTIMESTEP 2 + +/* + * File pointers used to do logging + */ +#define Disc_log_filepointer (stardata->tmpstore->disc_logfile) +#define Disc_log_filepointer2d (stardata->tmpstore->disc_logfile2d) + +/* + * Macro that returns true if we want + * to reopen log files + */ +#define Disc_can_reopen_log ( \ + ((stardata->preferences->disc_log) > 0) \ + ? TRUE : FALSE \ + ) +#define Disc_can_reopen_log2d ( \ + ((stardata->preferences->disc_log2d) > 0) \ + ? TRUE : FALSE \ + ) +/* + * Macros that returns TRUE if we want to log + */ +#define Disc_can_log ( \ + (stardata->preferences->disc_log != DISC_LOG_LEVEL_NONE \ + && \ + (stardata->tmpstore->disc_logfilecount==0 || \ + Disc_can_reopen_log)) \ + ? TRUE : FALSE \ + ) +#define Disc_can_log2d ( \ + (stardata->preferences->disc_log2d != DISC_LOG_LEVEL_NONE \ + && \ + (stardata->tmpstore->disc_logfilecount2d==0 || \ + Disc_can_reopen_log2d)) \ + ? TRUE : FALSE \ + ) + +/************************************************************/ + + +#define DISC_EDGE_STRIPPING_IN_CONVERGENCE_STEP 0 +#define DISC_EDGE_STRIPPING_AFTER_CONVERGENCE_STEP 1 +#define DISC_EDGE_STRIPPING_BEFORE_CONVERGENCE_STEP 2 + + +/* + * Copy disc from source S to destination D + */ +#define Copy_disc(S,D) memcpy((D),(S),sizeof(struct disc_t)); + +/* + * Space for a new disc + */ +#define New_disc MALLOC(sizeof(struct disc_t)) + +/* + * New disc copied from another + */ +#define New_disc_from(D) Copy_disc((D),New_disc) + + + +/* + * Macros to define the stripping timescale options + */ +#define DISC_STRIPPING_TIMESCALE_INSTANT 0 +#define DISC_STRIPPING_TIMESCALE_INFINITE 1 +#define DISC_STRIPPING_TIMESCALE_VISCOUS 2 +#define DISC_STRIPPING_TIMESCALE_ORBIT 3 + +#define Evaporate_disc(D,REASON) \ + (D)->M = 0.0; \ + (D)->J = 0.0; \ + (D)->dt = LONG_TIMESTEP; \ + (D)->converged = FALSE; \ + if(DISC_DEBUG) \ + printf("Disc evaporated at line %d in file %s because %s\n", \ + __LINE__, \ + __FILE__, \ + REASON); \ + /* disc evaporated */ + +/* + * Disc timestep limiters + */ +#define DISC_TIMESTEP_LIMIT_M 0 +#define DISC_TIMESTEP_LIMIT_J 1 +#define DISC_TIMESTEP_LIMIT_F 2 +#define DISC_TIMESTEP_LIMIT_MIN 3 +#define DISC_TIMESTEP_LIMIT_MAX 4 +#define DISC_TIMESTEP_LIMIT_TOO_FAST 5 +#define Disc_timestep_limit_string(X) \ + ( \ + (X) == DISC_TIMESTEP_LIMIT_M ? "M" : \ + (X) == DISC_TIMESTEP_LIMIT_J ? "J" : \ + (X) == DISC_TIMESTEP_LIMIT_F ? "F" : \ + (X) == DISC_TIMESTEP_LIMIT_MIN ? "Min" : \ + (X) == DISC_TIMESTEP_LIMIT_MAX ? "Max" : \ + (X) == DISC_TIMESTEP_LIMIT_TOO_FAST ? "Too fast" : \ + "Unknown" \ + ) + #endif // DISC_MACROS_H diff --git a/src/disc/disc_make_derived_power_laws.c b/src/disc/disc_make_derived_power_laws.c index f700a8f5b8104249af570d892e8cea866936c987..07a706f8ec20df437276a1a889b23c29eee4cd2e 100644 --- a/src/disc/disc_make_derived_power_laws.c +++ b/src/disc/disc_make_derived_power_laws.c @@ -2,7 +2,7 @@ #ifdef DISCS void disc_make_derived_powerlaws(struct disc_t * disc, - struct binary_system_t * binary) + const struct binary_system_t * binary) { /* * Calculate power law coefficients for power laws @@ -12,7 +12,7 @@ void disc_make_derived_powerlaws(struct disc_t * disc, * (functions which, when integrated, give something useful * e.g. mass or angular momentum) */ - int i; + Disc_zone_counter i; const static char * pls[30] = POWER_LAW_STRINGS; /* @@ -30,11 +30,6 @@ void disc_make_derived_powerlaws(struct disc_t * disc, const double R0 = z->Tlaw.R0; const double sigmaR0 = disc->sigma0 / (T0 * POW2(R0)); - /* - printf("Zone %d : R0=%g, T0=%g, Sigma(R0)=%g from sigma0=%g\n", - i,R0,T0,sigmaR0,disc->sigma0); - */ - /* Sigma(R) */ new_related_power_law(&z->Tlaw, &z->power_laws[POWER_LAW_SIGMA], @@ -42,9 +37,6 @@ void disc_make_derived_powerlaws(struct disc_t * disc, -2.0, -1.0); - //printf("SIGMA exponent %g\n",z->power_laws[POWER_LAW_SIGMA].exponent); - // -1.57 = -11/7 - /* mass integrand */ new_related_power_law(&z->Tlaw, &z->power_laws[POWER_LAW_MASS_INTEGRAND], @@ -53,12 +45,29 @@ void disc_make_derived_powerlaws(struct disc_t * disc, -1.0); - /* angular momentum flux integrand */ - new_related_power_law(&(z->Tlaw), - &(z->power_laws[POWER_LAW_ANGULAR_MOMENTUM_FLUX_INTEGRAND]), + /* angular momentum flux integrand, using the modified disc->torqueF */ + new_related_power_law(&z->Tlaw, + &z->power_laws[POWER_LAW_ANGULAR_MOMENTUM_FLUX_DISC_INTEGRAND], PI * disc->torqueF * POW4(binary->separation) * POW2(binary->q) * GRAVITATIONAL_CONSTANT * binary->mtot * (1.0/POW4(R0)) * sigmaR0, -6.0, -1.0); + + /* + * Ditto using the torqueF specified in the binary struct + * which is a copy of the preferences value. + */ + new_related_power_law(&z->Tlaw, + &z->power_laws[POWER_LAW_ANGULAR_MOMENTUM_FLUX_BINARY_INTEGRAND], + PI * binary->torqueF * POW4(binary->separation) * POW2(binary->q) * GRAVITATIONAL_CONSTANT * binary->mtot * (1.0/POW4(R0)) * sigmaR0, + -6.0, + -1.0); + + /* angular momentum flux correction integrand */ + new_related_power_law(&z->Tlaw, + &z->power_laws[POWER_LAW_ANGULAR_MOMENTUM_FLUX_CORRECTION_INTEGRAND], + 2.0 * PI * sqrt(GRAVITATIONAL_CONSTANT * binary->mtot) * sigmaR0 * POW2p5(R0), + -1.5, + -1.0); /* angular momentum flux constraint */ new_related_power_law(&(z->Tlaw), diff --git a/src/disc/disc_mass_changes.c b/src/disc/disc_mass_changes.c new file mode 100644 index 0000000000000000000000000000000000000000..fd9892f2aa5c10ea7e4a23ab7ca2c6ddb84eb305 --- /dev/null +++ b/src/disc/disc_mass_changes.c @@ -0,0 +1,73 @@ +#include "../binary_c.h" + +#ifdef DISCS +void disc_mass_changes(struct stardata_t * stardata, + struct disc_t * newdisc, + struct disc_t * olddisc, + const struct binary_system_t * binary, + const double multiplier, + const double ddt + ) +{ + /* + * Calculate derivatives and apply disc mass and angular momentum + * changes if the timestep passed in (ddt, seconds) is non-zero. + * + * Also set the changes the binary orbit (e.g. eccentricity + * pumping) if ddt is non-zero. + */ + Discdebug(1,"Post-structure: derivatives, edge strip\n"); + + /* + * Calculate derivatives based on the old disc structure, + * also calculate evaporation radii. + */ + disc_derivatives(newdisc,binary,stardata,multiplier,TRUE); + + Boolean success = FALSE; + if(IS_NOT_ZERO(ddt)) + { + /* + * non-zero timestep : edge strip + */ + disc_edge_stripping(stardata, + newdisc, + olddisc, + binary); + + /* + * Recalculate slow derivatives based on the + * new disc structure. + * Do not recalculate evaporation radii. + */ + disc_derivatives(newdisc, + binary, + stardata, + multiplier, + FALSE); + + /* + * Apply slow derivatives, also updates the + * orbital variables (e.g. eccentricity) + */ + success = TRUE; + disc_apply_derivatives(newdisc, + binary, + stardata, + ddt, + &success); + } + + /* + * If the disc has not been evaporated, + * recalculate the angular momentum flux + */ + if(success==TRUE && Disc_is_disc(newdisc)) + { + newdisc->F = disc_angular_momentum_flux(newdisc->Rout, + newdisc, + binary); + } +} + +#endif // DISCS diff --git a/src/disc/disc_mem_cleanup.c b/src/disc/disc_mem_cleanup.c index 845590dfa9ad815c6e58a3f6dc9a0a799a80a234..5a8724294edfd0eedbd690cb05bbce399458fb63 100644 --- a/src/disc/disc_mem_cleanup.c +++ b/src/disc/disc_mem_cleanup.c @@ -2,8 +2,6 @@ #include "../binary_c.h" #ifdef DISCS -#undef DISC_DEBUG -#define DISC_DEBUG 1 void disc_mem_cleanup(struct stardata_t * stardata) { diff --git a/src/disc/disc_natural_timescales.c b/src/disc/disc_natural_timescales.c new file mode 100644 index 0000000000000000000000000000000000000000..4496ffee2410299c039276c1e26f36e10cf54a99 --- /dev/null +++ b/src/disc/disc_natural_timescales.c @@ -0,0 +1,137 @@ +#include "../binary_c.h" + +#ifdef DISCS + +#define Timescale(VAR,RATE) \ + ( \ + IS_REALLY_ZERO(RATE) ? \ + DISC_LONG_TIME : \ + 1.0/MAX(1e-20,fabs((RATE) / (VAR))) \ + ) +#define Absolute(X) (fabs(X)) + +void disc_natural_timescales(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + const double dt) +{ + /* + * Timescales associated with + * mass and angular momentum changes + */ + int i; + double mdot=0.0,jdot=0.0,edot=0.0,mdot_slow=0.0; + + /* + * The question here is whether to resolve + * the absolute timescales, or the net? + * + * Net (no fabs) is faster ... but absolute (with fabs) + * guarantees resolution of any changes. + * + * Generally, mass loss dominates so it doesn't matter, + * so choose the absolute (fabs) option. + */ + + for(i=0;i<DISC_LOSS_N;i++) + { + mdot += Absolute(disc->loss[i].mdot); + jdot += Absolute(disc->loss[i].jdot); + edot += Absolute(disc->loss[i].edot); + Show_disc_derivative(i); + } + + /* + * Slow (wind-like) mass loss + */ + mdot_slow = + Absolute(disc->loss[DISC_LOSS_GLOBAL].mdot)+ + Absolute(disc->loss[DISC_LOSS_INNER_VISCOUS].mdot)+ + Absolute(disc->loss[DISC_LOSS_XRAY].mdot); + + if(stardata->preferences->cbdisc_outer_edge_stripping == FALSE) + { + Absolute(disc->loss[DISC_LOSS_ISM].mdot); + } + + Discdebug(1, + "MDOT timestep disc %g g/s = %g Msun/y -> timescale = %g (Msun) / %g (Msun/y) = %g y\n", + mdot, + mdot * YEAR_LENGTH_IN_SECONDS / M_SUN, + disc->M / M_SUN, + mdot * YEAR_LENGTH_IN_SECONDS / M_SUN, + disc->M / (mdot * YEAR_LENGTH_IN_SECONDS) + ); + Discdebug(1, + "JDOT disc dJ/dt = %g with -> timescale = %g (cgs) / %g (cgs/y) = %g y\n", + jdot, + disc->J, + (jdot * YEAR_LENGTH_IN_SECONDS), + disc->J / (jdot * YEAR_LENGTH_IN_SECONDS) + ); + + /* + * eccentricity must be > 0, so + * if edot * dt reduces the eccentricity + * below zero, don't do anything + */ + if(binary->eccentricity + edot * dt < 0.0) + { + edot = 1e-50; + } + else + { + Discdebug(1, + "EDOT disc %g cf e = %g, de/dt [sum = %g : GR = %g, tid = %g, winds = %g, cbdisc = %g]\n", + edot, + binary->eccentricity, + stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY], + stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_GRAVITATIONAL_RADIATION], + stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_TIDES], + stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_WINDS], + stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_CBDISC] + ); + + if(stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY] < 0.0) + { + /* + * If tidal circularization dominates, + * ignore cbdisc eccentricity pumping here. + */ + edot = 0.0; + } + else + { + /* + * Resolve eccentricity pumping, remember to + * convert de/dt to s^-1 + */ + edot = stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY_CBDISC] / + YEAR_LENGTH_IN_SECONDS; + } + } + + /* + * Hence the timescales. + */ + disc->t_m = Timescale(disc->M,mdot); + disc->t_j = Timescale(disc->J,jdot); + disc->t_e = Timescale(binary->eccentricity,edot); + disc->t_m_slow = Timescale(disc->M,mdot_slow); + + Discdebug(1, + "natural timescales: t=%30.12e y tM=%g tJ=%g te=%g years (M = %g Msun, mdot = %g Msun/y, jdot = %g; edot = %g; stardata = %g; e = %g)\n", + disc->lifetime/YEAR_LENGTH_IN_SECONDS, + disc->t_m/YEAR_LENGTH_IN_SECONDS, + disc->t_j/YEAR_LENGTH_IN_SECONDS, + disc->t_e/YEAR_LENGTH_IN_SECONDS, + disc->M/M_SUN, + mdot * YEAR_LENGTH_IN_SECONDS / M_SUN, + jdot, + edot, + stardata->model.derivative[DERIVATIVE_ORBIT_ECCENTRICITY], + stardata->common.eccentricity + ); +} + +#endif // DISCS diff --git a/src/disc/disc_nearest_zone_n.c b/src/disc/disc_nearest_zone_n.c index d615e768e2345763d2d6357eea5175fcbdd76457..ed399eda93707e7625f8ebe9b43d18b9783b5531 100644 --- a/src/disc/disc_nearest_zone_n.c +++ b/src/disc/disc_nearest_zone_n.c @@ -2,8 +2,8 @@ #ifdef DISCS -int disc_nearest_zone_n(double radius, - struct disc_t * disc) +Disc_zone_counter disc_nearest_zone_n(const double radius, + struct disc_t * disc) { /* * Return the nearest zone to the given radius diff --git a/src/disc/disc_new_zone_list.c b/src/disc/disc_new_zone_list.c index d6f77d5dbdfd79611dc83c7ba51c0feec5aaae43..25379619c5f34a06a401ef69c50fbfaa5cff87b4 100644 --- a/src/disc/disc_new_zone_list.c +++ b/src/disc/disc_new_zone_list.c @@ -1,13 +1,13 @@ #include "../binary_c.h" #ifdef DISCS Boolean disc_new_zone_list(struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, struct disc_thermal_zone_t * thermal_zones) { /* * Make a new set of thermal zones in thermal_zones[] * - * The prefactors and exponents are defined in disc_adam.h + * The prefactors and exponents are defined in disc_thermal_zones.h * * Returns FALSE on failure, TRUE otherwise. * @@ -20,167 +20,187 @@ Boolean disc_new_zone_list(struct disc_t * disc, * This function does not make such determinations. */ + + /* - * Check Rin != Rout, return FALSE if so + * Fail if Rin and Rout are sufficiently close */ - if(DISC_DEBUG && 0) - printf("CHECK Rin = %g != Rout = %g %d %30.12g\n", - disc->Rin, - disc->Rout, - FEQUAL(disc->Rin/disc->Rout,1.0), - disc->Rin/disc->Rout); - - if(IS_ZERO(disc->Rin/disc->Rout - 1.0)) + + if(unlikely(fabs(1.0 - disc->Rin / disc->Rout) < + DISC_RADIUS_DIFFERENCE_THRESHOLD_FOR_FAILURE)) { - if(DISC_DEBUG) - printf("Disc inner (%g) and outer (%g) radius are equal : returning FALSE\n", - disc->Rin, - disc->Rout); + Discdebug(1, + "Disc inner (%g) and outer (%g) radius are equal (to within %g) : returning %s = %d\n", + disc->Rin, + disc->Rout, + fabs(1.0-disc->Rin/disc->Rout), + Stringify(DISC_ZONES_NEW_ZONE_LIST_RIN_EQUALS_ROUT), + DISC_ZONES_NEW_ZONE_LIST_RIN_EQUALS_ROUT); return DISC_ZONES_NEW_ZONE_LIST_RIN_EQUALS_ROUT; } - - /* - * Create pointers to the zones - * (for convenience and ease of reading in English) - */ - struct disc_thermal_zone_t * radiative_in = &(thermal_zones[DISC_ZONE_TYPE_RADIATIVE_INNER]); - struct disc_thermal_zone_t * radiative_out = &(thermal_zones[DISC_ZONE_TYPE_RADIATIVE_OUTER]); - struct disc_thermal_zone_t * viscous = &(thermal_zones[DISC_ZONE_TYPE_VISCOUS]); + else if(unlikely(disc->Rin > disc->Rout)) + { + Discdebug(1, + "Disc inner radius (%g) exceeds outer radius (%g) : returning %s = %d\n", + disc->Rin, + disc->Rout, + Stringify(DISC_ZONES_RIN_EXCEEDS_ROUT), + DISC_ZONES_RIN_EXCEEDS_ROUT); + return DISC_ZONES_RIN_EXCEEDS_ROUT; + } + else + { + /* + * Create pointers to the zones + * (for convenience and ease of reading in English) + */ + struct disc_thermal_zone_t * radiative_in = &(thermal_zones[DISC_ZONE_TYPE_RADIATIVE_INNER]); + struct disc_thermal_zone_t * radiative_out = &(thermal_zones[DISC_ZONE_TYPE_RADIATIVE_OUTER]); + struct disc_thermal_zone_t * viscous = &(thermal_zones[DISC_ZONE_TYPE_VISCOUS]); - /* - * Set up the outer radiative zone, in which Rref should lie - */ - new_power_law(&(radiative_out->Tlaw), - Prefactor_radiative_out, - Exponent_radiative_out, - 1.0, /* R0=1 */ - 0.0 /* R1=0 is ignored */); - radiative_out->type = DISC_ZONE_TYPE_RADIATIVE_OUTER; + /* + * Set up the outer radiative zone, in which Rref should lie + */ + new_power_law(&(radiative_out->Tlaw), + Prefactor_radiative_out, + Exponent_radiative_out, + 1.0, /* R0=1 */ + 0.0 /* R1=0 is ignored */); + radiative_out->type = DISC_ZONE_TYPE_RADIATIVE_OUTER; - /* - * Set up the inner radiative zone - */ - new_power_law(&(radiative_in->Tlaw), - Prefactor_radiative_in, - Exponent_radiative_in, - 1.0, /* R0=1 */ - 0.0 /* R1=0 is ignored */); - radiative_in->type = DISC_ZONE_TYPE_RADIATIVE_INNER; + /* + * Set up the inner radiative zone + */ + new_power_law(&(radiative_in->Tlaw), + Prefactor_radiative_in, + Exponent_radiative_in, + 1.0, /* R0=1 */ + 0.0 /* R1=0 is ignored */); + radiative_in->type = DISC_ZONE_TYPE_RADIATIVE_INNER; - /* - * Set sigma0 from Tvisc0 (which is a free parameter) - */ - disc->sigma0 = pow(disc->Tvisc0,5.0/2.0) / sqrt(Prefactor_viscous_fraction); + /* + * Set sigma0 from Tvisc0 (which is a free parameter) + */ + disc->sigma0 = pow(disc->Tvisc0,5.0/2.0) / sqrt(Prefactor_viscous_fraction); - /* - * Set up the viscous zone (requires disc->sigma0 to be set) - */ - new_power_law(&(viscous->Tlaw), - Prefactor_viscous, - Exponent_viscous, - 1.0, /* R0 = 1 */ - 0.0 /* R1 = 0 is ignored */); - viscous->type = DISC_ZONE_TYPE_VISCOUS; + /* + * And hence update the disc angular momentum flux, which + * depends only on sigma0 and some constants of the disc (alpha, mu, + * gamma) + */ + disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); - /* - * Save temperatures for later sanity checks (if we converge) - */ - disc->Tvisc = power_law(&viscous->Tlaw,1.0); - disc->Tradin = power_law(&radiative_in->Tlaw,1.0); - disc->Tradout = power_law(&radiative_out->Tlaw,1.0); + /* + * Set up the viscous zone (requires disc->sigma0 to be set) + */ + new_power_law(&(viscous->Tlaw), + Prefactor_viscous, + Exponent_viscous, + 1.0, /* R0 = 1 */ + 0.0 /* R1 = 0 is ignored */); + viscous->type = DISC_ZONE_TYPE_VISCOUS; - if(DEBUG_ZONE_LIST_CONSTRUCTION) - { /* - * Debugging: - * Check that Rref = 1cm is inside the viscous zone + * Save temperatures for later sanity checks (if we converge) */ - double RxVRin = Rcross(viscous,radiative_in); - double RxVRout = Rcross(viscous,radiative_out); - - if(DISC_DEBUG) - printf("Crossing radii visc/radin=%g visc/radout=%g\n", - RxVRin, - RxVRout); - - if(DEBUG_ZONE_LIST_CONSTRUCTION>1) + disc->Tvisc = power_law(&viscous->Tlaw,1.0); + disc->Tradin = power_law(&radiative_in->Tlaw,1.0); + disc->Tradout = power_law(&radiative_out->Tlaw,1.0); + + if(DEBUG_ZONE_LIST_CONSTRUCTION) { /* - * Check that T = Tvisc0 at R=1cm + * Debugging: + * Check that Rref = 1cm is inside the viscous zone */ - printf("T(visc) at 1cm: visc=%g (should be %g, at disc->Rin T=%g), Tradin(1cm)=%g Tradout(1cm)=%g\n", - disc->Tvisc, - disc->Tvisc0, - power_law(&viscous->Tlaw,disc->Rin), - disc->Tradin, - disc->Tradout); + double RxVRin = Rcross(viscous,radiative_in); + double RxVRout = Rcross(viscous,radiative_out); + + Discdebug(1, + "Crossing radii visc/radin=%g visc/radout=%g\n", + RxVRin, + RxVRout); - /* - * Check that sigma*T^4 is the same either side of the visc/radin transition - */ - double TviscX = viscous->Tlaw.A0 * pow(RxVRin,viscous->Tlaw.exponent); - double TradinX = radiative_in->Tlaw.A0 * pow(RxVRin,radiative_in->Tlaw.exponent); - printf("sigma * T4 = %g and %g either side of the visc/Radin transition\n", - disc->sigma0 / (TviscX * POW2(RxVRin)) * POW4(TviscX), - disc->sigma0 / (TradinX * POW2(RxVRin)) * POW4(TradinX)); + if(DEBUG_ZONE_LIST_CONSTRUCTION>1) + { + /* + * Check that T = Tvisc0 at R=1cm + */ + printf("T(visc) at 1cm: visc=%g (should be %g, at disc->Rin T=%g), Tradin(1cm)=%g Tradout(1cm)=%g\n", + disc->Tvisc, + disc->Tvisc0, + power_law(&viscous->Tlaw,disc->Rin), + disc->Tradin, + disc->Tradout); + + /* + * Check that sigma*T^4 is the same either side of the visc/radin transition + */ + double TviscX = viscous->Tlaw.A0 * pow(RxVRin,viscous->Tlaw.exponent); + double TradinX = radiative_in->Tlaw.A0 * pow(RxVRin,radiative_in->Tlaw.exponent); + printf("sigma * T4 = %g and %g either side of the visc/Radin transition\n", + disc->sigma0 / (TviscX * POW2(RxVRin)) * POW4(TviscX), + disc->sigma0 / (TradinX * POW2(RxVRin)) * POW4(TradinX)); + } } - } - if(SHOW_ZONE_LIST_POWER_LAWS) - { - /* - * Output power laws at various R - */ - double logR,R; - for(logR=0.0; logR<20.0; logR+=0.1) + if(SHOW_ZONE_LIST_POWER_LAWS) { - R = pow(10.0,logR); - printf("TESTR %g %g %g %g %g\n", - disc->Tvisc0, - R/R_SUN, - power_law(&viscous->Tlaw,R), - power_law(&radiative_in->Tlaw,R), - power_law(&radiative_out->Tlaw,R)); + /* + * Output power laws at various R + */ + double logR,R; + for(logR=0.0; logR<20.0; logR+=0.1) + { + R = pow(10.0,logR); + printf("TESTR %g %g %g %g %g\n", + disc->Tvisc0, + R/R_SUN, + power_law(&viscous->Tlaw,R), + power_law(&radiative_in->Tlaw,R), + power_law(&radiative_out->Tlaw,R)); + } + printf("TESTR\n"); + Exit_binary_c_no_stardata(0,"exit after outputting power laws"); } - printf("TESTR\n"); - _exit(0); - } - if(DEBUG_ZONE_LIST_CONSTRUCTION) - { - printf("----------------------\npowerlaw: exponent, multiplier, magnitude estimate (with masses=Msun, L=1e4Lsun, R=Rsun)\n"); - printf("viscous: %g %g %g\n", - viscous->Tlaw.exponent, - viscous->Tlaw.A0, - pow((27.0*1.0*1.0*1.0*BOLTZMANN_CONSTANT*sqrt(GRAVITATIONAL_CONSTANT*M_SUN)/(64.0*M_PROTON*STEFAN_BOLTZMANN_CONSTANT)),1.0/5.0) * pow(disc->sigma0,2.0/3.0) + if(DEBUG_ZONE_LIST_CONSTRUCTION) + { + printf("----------------------\npowerlaw: exponent, multiplier, magnitude estimate (with masses=Msun, L=1e4Lsun, R=Rsun)\n"); + printf("viscous: %g %g %g\n", + viscous->Tlaw.exponent, + viscous->Tlaw.A0, + pow((27.0*1.0*1.0*1.0*BOLTZMANN_CONSTANT*sqrt(GRAVITATIONAL_CONSTANT*M_SUN)/(64.0*M_PROTON*STEFAN_BOLTZMANN_CONSTANT)),1.0/5.0) * pow(disc->sigma0,2.0/3.0) - ); - printf("radiative_in: %g %g %g\n", - radiative_in->Tlaw.exponent, - radiative_in->Tlaw.A0, - pow(R_SUN * 1e4 * L_SUN / (6.0*PI*PI*STEFAN_BOLTZMANN_CONSTANT),1.0/4.0)); + ); + printf("radiative_in: %g %g %g\n", + radiative_in->Tlaw.exponent, + radiative_in->Tlaw.A0, + pow(R_SUN * 1e4 * L_SUN / (6.0*PI*PI*STEFAN_BOLTZMANN_CONSTANT),1.0/4.0)); - printf("radiative_out: %g %g %g\n", - radiative_out->Tlaw.exponent, - radiative_out->Tlaw.A0, - pow((1.0/7.0)*(1e4*L_SUN/(4.0*PI))*sqrt(1.0*BOLTZMANN_CONSTANT/(GRAVITATIONAL_CONSTANT*M_SUN*M_PROTON)),2.0/7.0) - ); - printf("----------------------\n"); - } + printf("radiative_out: %g %g %g\n", + radiative_out->Tlaw.exponent, + radiative_out->Tlaw.A0, + pow((1.0/7.0)*(1e4*L_SUN/(4.0*PI))*sqrt(1.0*BOLTZMANN_CONSTANT/(GRAVITATIONAL_CONSTANT*M_SUN*M_PROTON)),2.0/7.0) + ); + printf("----------------------\n"); + } - /* - * Default all thermal zones to be invalid - */ - { - int i; - for(i=0;i<DISCS_MAX_N_ZONES;i++) + /* + * Default all thermal zones to be invalid + */ { - thermal_zones[i].valid = FALSE; + int i; + for(i=0;i<DISCS_MAX_N_ZONES;i++) + { + thermal_zones[i].valid = FALSE; + } } - } - return DISC_ZONES_OK; + return DISC_ZONES_OK; + + } } diff --git a/src/disc/disc_nsector.c b/src/disc/disc_nsector.c new file mode 100644 index 0000000000000000000000000000000000000000..3179713dc8d40cddc8ead13a2c2267410e69dcc4 --- /dev/null +++ b/src/disc/disc_nsector.c @@ -0,0 +1,265 @@ +#include "../binary_c.h" + +#ifdef DISCS +#include "disc_constraints.h" + +#ifdef __HAVE_VALGRIND__ +#include <valgrind/valgrind.h> +#endif //__HAVE_VALGRIND__ +/* + * Function to be minimized by GSL routines + * such that we form a disc. + * + * In the function's normal use as a trisector, + * the three constraints are M, J and F, + * the mass, angular momentum and angular momentum flux, + * respectively, where disc->M, disc->J and disc->F are + * set elsewhere. + * + * n is the number of parameter_types passed in. These + * are in params[]. + * + * n is also the number of contraints, and the array + * constraints[], of size n, tells us which constaints + * they are. This function then implements the constraints. + * + * parameter_value contains the values of each parameter, + * but the index is not a disc_parameter, rather it just + * matches. + * + * The constraints and parameter_types are defined in disc_constraints.h + */ + +void disc_nsector(const int n, + const double * parameter_value, + double * residual, + void * p) +{ + /* + * Map va_args in *p to variables + */ + Map_GSL_params(p,args); + Map_varg(const int MAYBE_UNUSED,nn,args); + Map_varg(const disc_parameter *,parameter_types,args); + Map_varg(const disc_constraint *,constraints,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); + Map_varg(struct stardata_t *,stardata,args); + Map_varg(int *,failure,args); + va_end(args); + double unknown MAYBE_UNUSED; + struct disc_t * discwas; + int i,j; + + /* + * Back up disc + */ + discwas = New_disc_from(disc); + + /* + * Check for nans + */ + for(i=0;i<n;i++) + { + Discdebug(2, + "Nsector parameter %3d/%3d type %3d %40s value = %30.20g\n", + i, + n, + parameter_types[i], + Disc_parameter_string(parameter_types[i]), + parameter_value[i]); + + if(isnan(parameter_value[i])) + { + Discdebug(2, + "Found nan parameter : restoring disc and returning DISC_CONSTRAINT_FAILED == %g\n", + DISC_CONSTRAINT_FAILED); + /* + * Found nan : return all DISC_CONSTRAINT_FAILED + * (which is usually -1.0) + */ + for(j=0;j<n;j++) + { + residual[j] = DISC_CONSTRAINT_FAILED; + } + Copy_disc(discwas,disc); + Safe_free(discwas); + return; + } + } + + /* + * No nans : run parameter checks. If one fails, return. + */ + for(i=0;i<n;i++) + { + if(Disc_parameter_check(disc, + parameter_types[i], + parameter_value[i]) + == FALSE) + { + for(j=0;j<n;j++) + { + residual[j] = DISC_CONSTRAINT_FAILED; + } + Discdebug(2,"nsector : parameter %d type %d %s failed validity check, tried to set value = %g (Rin %g Rout %g)\n", + i, + parameter_types[i], + Disc_parameter_string(parameter_types[i]), + parameter_value[i], + disc->Rin, + disc->Rout + ); + Copy_disc(discwas,disc); + Safe_free(discwas); + return; + } + } + + /* + * All checks passed: set parameters + */ + for(i=0;i<n;i++) + { + if(parameter_types[i] != DISC_PARAMETER_NONE) + { + Disc_parameter(disc,parameter_types[i]) = + parameter_value[i]; + + Discdebug(2,"Nsector: set parameter %d (type %d %s) to %g (now disc : Tvisc0 = %g, Rin = %g, Rout = %g) \n", + i, + parameter_types[i], + Disc_parameter_string(parameter_types[i]), + parameter_value[i], + disc->Tvisc0, + disc->Rin, + disc->Rout + ); + } + } + + Discdebug(2, + "Nsector: call nsector2 with disc-> : Rin=%g Rsun Rout=%g Rsun : M=%g Msun, J=%g, F=%g\n", + disc->Rin, + disc->Rout, + disc->M/M_SUN, + disc->J, + disc->F); + + /* + * Call nsector2 to set up the disc zones and + * calculate the residuals + */ + disc_nsector2(stardata, + disc, + binary, + n, + constraints, + residual, + failure); + + Safe_free(discwas); + + Discdebug(2,"Return from nsector\n"); +} + + + +void disc_nsector2(struct stardata_t * stardata, + struct disc_t * disc, + struct binary_system_t * binary, + const int n, + const disc_constraint * constraints, + double * residual, + int * failed) +{ + /* + * Function that does the work. This may be + * called from elsewhere for debugging purposes, + * so is not a static function. + */ + Discdebug(2, + "Nsector: disc Tvisc0 = %g Rin=%g Rout=%g\n", + disc->Tvisc0, + disc->Rin, + disc->Rout + ); + + int status = disc_build_disc_zones(disc,binary); + int i; + + if(DISC_DEBUG>=2) + { + Discdebug(2, + "Nsector: Built disc zones: %s : Rin=%g Rout=%g Rsun (equal? %d, 1 - ratio = %g)\n", + status==DISC_ZONES_OK ? "ok" : "failed", + disc->Rin/R_SUN, + disc->Rout/R_SUN, + FEQUAL(disc->Rin,disc->Rout), + 1.0 - disc->Rin/disc->Rout + ); + Discdebug(2, + "Nsector: disc->M = %g Msun cf M = %g Msun, disc->J = %g cf J = %g, disc->F = %g cf F = %g, residual = %g\n", + disc->M/M_SUN, + disc_total_mass(disc)/M_SUN, + disc->J, + disc_total_angular_momentum(disc,binary), + disc->F, + disc_total_angular_momentum_flux_from_binary(disc,binary), + Disc_residual(disc,binary,DISC_CONSTRAINT_M_TO_DISC_M) + ); + Discdebug(2, + "Nsector: (disc->J = %g) / (J = %g) - 1.0 = %g, residual = %g\n", + disc->J, + disc_total_angular_momentum(disc,binary), + disc->J/disc_total_angular_momentum(disc,binary)-1.0, + Disc_residual(disc,binary,DISC_CONSTRAINT_J_TO_DISC_J) + ); + double F = disc_total_angular_momentum_flux_from_binary(disc, + binary); + Discdebug(2, + "Nsector: (disc->F = %g) / (F = %g) - 1.0 = %g\n", + disc->F, + F, + disc->F / F - 1.0 + ); + } + + if(status==DISC_ZONES_OK) + { + /* + * Set residuals + */ + for(i=0;i<n;i++) + { + const int constraint = constraints[i]; + residual[i] = Disc_residual(disc,binary,constraint); + Discdebug(2, + "Nsector: constraint %3d type %3d %40s residual = %30.20g\n", + i, + constraint, + Disc_constraint_string(constraint), + residual[i]); + } + *failed = 0; + } + else + { + /* + * Something went wrong: + * set all residuals to DISC_CONSTRAINT_FAILED + */ + for(i=0;i<n;i++) + { + residual[i] = DISC_CONSTRAINT_FAILED; + } + *failed = 1; + } + + + Discdebug(2, + "return from nsector2 : failed = %d\n", + *failed); +} + +#endif // DISCS diff --git a/src/disc/disc_adam_numerical.c b/src/disc/disc_numerical.c similarity index 96% rename from src/disc/disc_adam_numerical.c rename to src/disc/disc_numerical.c index ff2e3a54c732378520e67b7814bf73cf7118af1f..761f72cdb2bea28eea3a7ba6422f639bebe2c2db 100644 --- a/src/disc/disc_adam_numerical.c +++ b/src/disc/disc_numerical.c @@ -1,6 +1,6 @@ #include "../binary_c.h" -#if defined DISCS && defined DISCS_JERMYN +#if defined DISCS /* * Supplementary routines to numerically @@ -8,7 +8,6 @@ * * Should be used to compare to the analytic routines. */ -#include "disc_adam.h" #ifdef TOPORT @@ -98,4 +97,4 @@ double zone_mass_numerical(struct disc_t * disc, #endif //TOPORT -#endif // DISCS && DISCS_JERMYN +#endif // DISCS diff --git a/src/disc/disc_outer_edge_loss_timescale.c b/src/disc/disc_outer_edge_loss_timescale.c new file mode 100644 index 0000000000000000000000000000000000000000..616e0ea250f29c52c9154b84c1ca7cdd898d76cd --- /dev/null +++ b/src/disc/disc_outer_edge_loss_timescale.c @@ -0,0 +1,33 @@ +#include "../binary_c.h" + +#ifdef DISCS + +/* + * Timescale on which material is stripped from the outer + * edge of a disc. + * + * You might want this to be the orbital timescale, + * or perhaps you think it should be zero (i.e. the + * stripping is instantaneous) ? + */ + +double disc_outer_edge_loss_timescale(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + const double t = + disc_generic_stripping_timescale(disc, + binary, + disc->Revap_out, + stardata->preferences->cbdisc_outer_edge_stripping_timescale); + + if(t < 0.0) + { + Exit_binary_c(ALGORITHM_OUT_OF_RANGE, + "Stripping timescale at the outer edge is < 0 : this indicates that the algorithm has gone wrong. Check cbdisc_outer_edge_stripping_timescale is valid.\n"); + } + + return t; +} + +#endif //DISCS diff --git a/src/disc/disc_outer_edge_mass_loss.c b/src/disc/disc_outer_edge_mass_loss.c new file mode 100644 index 0000000000000000000000000000000000000000..89312bc598c7da4df6cd547c03aa60d273704dd9 --- /dev/null +++ b/src/disc/disc_outer_edge_mass_loss.c @@ -0,0 +1,191 @@ +#include "../binary_c.h" + +#ifdef DISCS + +double disc_outer_edge_mass_loss(struct stardata_t * stardata, + struct disc_t * newdisc, + struct disc_t * olddisc, + const struct binary_system_t * binary) +{ + /* + * Strip the outer part of the disc in to newdisc->Revap_out, + * if newdisc->Revap_out is non-zero. + * + * olddisc is the previously calculated disc structure + * which is used to calculate the changes. + * + * We apply the new Revap_out to newdisc. + * + * Returns the amount of mass lost (positive, grams). + */ + double dm; + + if(Disc_is_disc(newdisc) && + Disc_is_disc(olddisc) && + IS_NOT_ZERO(newdisc->Revap_out)) + { + /* + * Timescale over which the mass is lost. + */ + double timescale = disc_outer_edge_loss_timescale(stardata, + olddisc, + binary); + + double f = IS_REALLY_ZERO(timescale) ? 1.0 : + (LIMIT_RANGE(olddisc->dt / timescale, 0.0, 1.0)); + + double dmwant = disc_partial_mass(olddisc, + newdisc->Revap_out, + olddisc->Rout); + double djwant = disc_partial_angular_momentum(olddisc, + binary, + newdisc->Revap_out, + olddisc->Rout); + dm = MIN(olddisc->M * DISC_STRIP_FRAC_M_OUTER, f*dmwant); + double dj = MIN(olddisc->J * DISC_STRIP_FRAC_J_OUTER, f*djwant); + + Discdebug(1, + "Disc outer edge evaporation in : Rin = %g, Rout = %g, Revap_out = %g, M = %g Msun : timescale = %g y hence f = %g : dmwant = %g Msun -> dm = %g Msun, djwant = %g -> dj = %g\n", + olddisc->Rin/R_SUN, + olddisc->Rout/R_SUN, + newdisc->Revap_out/R_SUN, + olddisc->M/M_SUN, + timescale / YEAR_LENGTH_IN_SECONDS, + f, + dmwant / M_SUN, + dm / M_SUN, + djwant, + dj + ); + + + + /* + * Beware: + * The disc may no longer be converged. + * This means the bisectors will BREAK. + * What to do? We should instead bisect on the + * old structure, not the new structure, and + * update based on that. + */ + + if((!FEQUAL(dmwant,dm) || !FEQUAL(djwant,dj))) + { + /* + * We tried to remove more material than limiters allow, + * so adjust Revap_out to compensate. + */ + + newdisc->Revap_out = MAX( + newdisc->Rin, + disc_mass_radius(olddisc,binary,olddisc->M - dm) + //,disc_angular_momentum_radius(olddisc,binary,olddisc->J - dj) + ); + + + Discdebug(1, + "dmwant = %g != dm = %g : adapt Revap_out to %g Rsun (cf. Rout = %g Rsun)\n", + dmwant, + dm, + newdisc->Revap_out / R_SUN, + newdisc->Rout / R_SUN + ); + + + /* + * Hence the actual mass and angular momentum removed + */ + dm = disc_partial_mass(olddisc, + newdisc->Revap_out, + olddisc->Rout); + dj = disc_partial_angular_momentum(olddisc, + binary, + newdisc->Revap_out, + olddisc->Rout); + } + + double mdot_out,jdot_out; + if(IS_REALLY_ZERO(dm)) + { + /* + * Do nothing. + */ + mdot_out = 0.0; + jdot_out = 0.0; + } + else + { + /* + * Hence the mass and angular momentum loss rates (negative) + */ + mdot_out = - dm / olddisc->dt; + jdot_out = - dj / olddisc->dt; + + /* + * Adjust mass and angular momenta of the new disc + */ + Clamp(newdisc->M, 0.0, newdisc->M - dm); + Clamp(newdisc->J, 0.0, newdisc->J - dj); + + /* + * Update disc Rout and zones + */ + Clamp(newdisc->Rout, newdisc->Rin, newdisc->Revap_out); + + /* + * Stripped material is ejected from the binary system + */ + newdisc->dM_ejected += dm; + newdisc->dJ_ejected += dj; + + /* + * Enforce M,J=0 when Rin==Rout: + * prevents small numerical errors + */ + if(FEQUAL(newdisc->Rin/newdisc->Rout,1.0)) + { + Evaporate_disc(newdisc, + "Rin/Rout are equal in outer edge mass loss"); + } + newdisc->loss[DISC_LOSS_OUTER_EDGE].mdot = mdot_out; + newdisc->loss[DISC_LOSS_OUTER_EDGE].jdot = jdot_out; + + disc_rezone(newdisc,binary); + } + + if(0)printf("STRIP OUTER from %g (%g) to %g : dm = %g Msun, dj = %g, olddisc->J = %g, integral %g [%g rest + %g stripped] new Rout = %g\n ", + newdisc->Revap_out, + olddisc->Revap_out, + newdisc->Rout, + dm/M_SUN, + dj, + olddisc->J, + disc_total_angular_momentum(olddisc,binary), + disc_partial_angular_momentum(olddisc,binary,olddisc->Rin,newdisc->Revap_out), + disc_partial_angular_momentum(olddisc,binary,newdisc->Revap_out,olddisc->Rout), + newdisc->Rout + ); + + + Discdebug(1, + "Disc outer edge evaporation out : Rin = %g, Rout = %g, Revap_out = %g, M = %g Msun (mdot = %g, jdot = %g)\n", + newdisc->Rin/R_SUN, + newdisc->Rout/R_SUN, + newdisc->Revap_out/R_SUN, + newdisc->M/M_SUN, + mdot_out, + jdot_out + ); + + } + else + { + dm = 0.0; + } + + return dm; + +} + + +#endif//DISCS diff --git a/src/disc/disc_parameter_space.c b/src/disc/disc_parameter_space.c index 33c712f505c2a4d1cdc8ce4f141900b28f7d5f70..c8ecfde75268e6ec0785bafc28f646f8b089d5ee 100644 --- a/src/disc/disc_parameter_space.c +++ b/src/disc/disc_parameter_space.c @@ -3,9 +3,6 @@ #ifdef DISCS -#include "disc.h" - - /* * Function to loop through the 3D disc parameter * space, finding the residual of the various disc equations, @@ -16,57 +13,170 @@ void disc_parameter_space(struct stardata_t * stardata, struct disc_t * disc) { struct binary_system_t * binary = CALLOC(1,sizeof(struct binary_system_t)); - disc_init_binary_structure(stardata,binary); + disc_init_binary_structure(stardata,binary,disc); - /* NB all are log10 */ - double logTvisc0,logRin,logRout; - double Tvisc0,Rin,Rout; - double residuals[3]; - double minima[3] = {1e100,1e100,1e100}; - double minimum=1e100; - -//#define STREAM stdout -#define DD 0.05 + /* + * + * Best solution is + * 1e+17, 9.76328e+14, 2.51189e+15 + * with residual 9.78066e-06 + * + * But the solver finds + * 4.0705e+19, Rin = 4.61463e+12, Rout = 4.68749e+12 + * with residual 0.000269746 + * + * Why? + * + */ +#define STREAM stdout +#define DD 0.2 #define VAR0 logTvisc0 #define VAR0L 0.0 #define VAR0H 50.0 #define VAR0D DD #define VAR1 logRin -#define VAR1L MAX(8,log10(binary->separation)) +#define VAR1L MAX(8,log10(binary->separation)-3) #define VAR1H 30.0 #define VAR1D DD #define VAR2 logRout -#define VAR2L 8 +#define VAR2L 8.0 #define VAR2H 30.0 #define VAR2D DD +#define NO_MINIMUM 1e100 -#define Varloop(N) \ +#define Logstream stderr +#define Varloop(N) \ for((VAR ## N) = (VAR ## N ## L); \ (VAR ## N) <= (VAR ## N ## H); \ (VAR ## N) += (VAR ## N ## D)) -#define Residual(N) (fabs(residuals[(N)])) +#define Residual(N) ( ( residuals[ (N) ] ) ) #define Set_min(N) minima[(N)] = VAR ## N -#define Fail(N) (FEQUAL(Residual(N),-1.0) || fabs(Residual(N))>10.0) -#define Failure (Fail(0) && Fail(1) && Fail(2)) -#define Product (Residual(0) * Residual(1) * Residual(2)) +#define Set_minima \ + Set_min(0); \ + Set_min(1); \ + Set_min(2); +#define Tolerance DISC_TOLERANCE +#define Fail(N) ( \ + FEQUAL(Residual(N), -1.0) || \ + (fabs(Residual(N)) > MIN(10.0, DISC_TOLERANCE)) \ + ) +#define Failure (Fail(0) || Fail(1) || Fail(2)) + + +#define OK(N) ( \ + fabs(Residual(N))<0.9 \ + ) +#define Terrible (!OK(0) || !OK(1) || OK(2)) +#define Not_terrible (!Terrible) + +#define Product (fabs(Residual(0) * Residual(1) * Residual(2))) +#define Sum (fabs(Residual(0)) + fabs(Residual(1)) + fabs(Residual(2))) +#define Residual_list Residual(0) , Residual(1) , Residual(2) +#define Var_list Tvisc0, Rin, Rout +#define Disc_var_list disc->Tvisc0, disc->Rin, disc->Rout + +#define Show(F,N) \ + fprintf( \ + (F), \ + "# %s from %g to %g step %g\n", \ + Stringify_macro(VAR ## N), \ + (VAR ## N ## L), \ + (VAR ## N ## H), \ + (VAR ## N ## D) \ + ); +#define Show_pc(F,N) \ + fprintf( \ + (F), \ + "# %5.2f %% \x0d", \ + (VAR ## N - VAR ## N ## L) / \ + (VAR ## N ## H - VAR ## N ## L) * \ + 100.0 \ + ); + +/* wrapper for prints */ +#define print(...) fprintf(Logstream,__VA_ARGS__) + +/* + * Call Trisect to find the residuals + */ +#define Trisect disc_trisector2(stardata,disc,binary,residuals) + +/* + * Call Calc_structure to converge on a solution + * using GSL routines (or otherwise) + */ +#define Calc_structure \ + disc_calc_disc_structure(binary, \ + disc, \ + stardata, \ + 0.0,\ + 0.0) + + /* NB all are log10 */ + double logTvisc0,logRin,logRout; + double Var_list; + double residuals[3]; + double minima[3] = {NO_MINIMUM,NO_MINIMUM,NO_MINIMUM}; + double minimum = NO_MINIMUM; + + disc->Tvisc0 = 1e+17; + disc->Rin = 9.76328e+14; + disc->Rout =2.51189e+15; + + print("\nFirst trisect\n"); + + Trisect; + + print( + "Start at 'best' Tvisc0 = %g, Rin = %g, Rout = %g\n", + Disc_var_list); + print("Residuals %g %g %g : %g\n", + Residual_list, + Product); + print("Failure? %s\n",Yes_or_no(Failure)); + + Calc_structure; + Trisect; + + print("Converging from there gives Tvisc0 = %g, Rin = %g, Rout = %g\n", + Disc_var_list); + print("Residuals %g %g %g : %g\n", + Residual_list, + Product); + print("Failure? %s\n",Yes_or_no(Failure)); + + + print("************************************************************\n"); if(disc->converged) { - fprintf(stderr, - "Disc in was converged with solution : Tvisc0 = %g, Rin = %g, Rout = %g\n", - disc->Tvisc0, - disc->Rin, - disc->Rout); + disc_trisector2(stardata,disc,binary,residuals); + print("Disc in was converged with solution : Tvisc0 = %g, Rin = %g, Rout = %g : M=%g J=%g which has residual %g\n", + Disc_var_list, + disc->M/M_SUN, + disc->J, + Product); } else { - fprintf(stderr, - "Input disc is not converged\n"); + print("Input disc is not converged : want M=%g J=%g\n", + disc->M/M_SUN, + disc->J + ); } - fprintf(stderr,"Searching parameter space...\n"); - + print("Searching parameter space:\n"); + Show(Logstream,0); + Show(Logstream,1); + Show(Logstream,2); +#ifdef STREAM + Show(STREAM,0); + Show(STREAM,1); + Show(STREAM,2); +#endif // STREAM + Varloop(0) { + Show_pc(Logstream,0); Varloop(1) { Varloop(2) @@ -75,47 +185,97 @@ void disc_parameter_space(struct stardata_t * stardata, Rin = pow(10.0,VAR1); Rout = pow(10.0,VAR2); - disc->Tvisc0 = Tvisc0; - disc->Rin = Rin; - disc->Rout = Rout; + if(Rin < Rout) + { + disc->Tvisc0 = Tvisc0; + disc->Rin = Rin; + disc->Rout = Rout; - disc_trisector2(disc,binary,residuals); + Trisect; - if(!Failure) - { - double product = Product; - if(product < minimum) + if(!FEQUAL(disc->Tvisc0,Tvisc0) || + !FEQUAL(disc->Rin,Rin) || + !FEQUAL(disc->Rout,Rout)) { - Set_min(0); - Set_min(1); - Set_min(2); - minimum = product; + fprintf(stderr,"MISMATCH\n"); + } + + + //double score = Product; + double score = Sum; + Boolean new_minimum; + + if(unlikely(score < minimum)) + { + Set_minima; + minimum = score; + new_minimum = TRUE; + } + else + { + new_minimum = FALSE; + } + + if(new_minimum == TRUE) + { + fprintf(STREAM, + "PSPACE % 20g % 20g % 20g % 20g % 20g % 20g % 20g %s\n", + Var_list, + Residual_list, + score, + (new_minimum == TRUE ? "*" : "")); + fflush(NULL); } -#ifdef STREAM - fprintf(STREAM, - "PSPACE %g %g %g %g\n", - Tvisc0, - Rin, - Rout, - Product); -#endif } } #ifdef STREAM - fprintf(STREAM,"\n"); + //fprintf(STREAM,"\n"); #endif } } - fprintf(stderr, - "Minimum residual %g at Tvisc0 = %g, Rin = %g, Rout = %g\n", - minimum, - pow(10.0,minima[0]), - pow(10.0,minima[1]), - pow(10.0,minima[2])); + print ("\n"); + if(0 && minimum / NO_MINIMUM > 0.99) + { + print("Parameter space search failed: no solution found\n"); + } + else + { + print("Minimum residual %g at Tvisc0 = %g, Rin = %g, Rout = %g\n", + minimum, + pow(10.0,minima[0]), + pow(10.0,minima[1]), + pow(10.0,minima[2])); + + /* try calculating a structure from there */ + disc->Tvisc0 = minima[0]; + disc->Rin = minima[1]; + disc->Rout = minima[2]; + disc->vb = 1; + disc->converged = FALSE; + disc->lifetime = 0.0; - + Calc_structure; + Trisect; + + print("Converging from there gives Tvisc0 = %g, Rin = %g, Rout = %g\n", + Disc_var_list); + print("With residuals %g, %g, %g : product %g (Tvisc0 = %g, Rin = %g, Rout = %g)\n", + Residual(0), + Residual(1), + Residual(2), + Product, + Disc_var_list + ); + if(Failure) + { + print("*** warning : this is a failed solution! ***\n"); + } + } Safe_free(binary); + fflush(NULL); + + printf("disc_parameter_space done\n"); return; } diff --git a/src/disc/disc_parameters.h b/src/disc/disc_parameters.h new file mode 100644 index 0000000000000000000000000000000000000000..0770975f5ec00dbf39f5795d9eebc5cd5832509f --- /dev/null +++ b/src/disc/disc_parameters.h @@ -0,0 +1,405 @@ +#pragma once +#ifndef DISC_PARAMETERS_H +#define DISC_PARAMETERS_H +#include <float.h> +#include "../binary_c_maths.h" +#include "disc_macros.h" +#include "disc_debug.h" + +/* + * Logging for individual systems with discs + */ +#define DISC_LOG +#define DISC_LOG_2D + +/* + * Disc log max sizes (0 == unlimited) + */ +#define DISC_LOG_MAX_BYTES ((size_t)(1000*MEGABYTE)) +#define DISC_LOG_2D_MAX_BYTES ((size_t)(1000*MEGABYTE)) + +/* + * if DISC_INTERMEDIATE_LOG is defined, then we log on + * disc timesteps as well as binary_c timesteps + */ +#define DISC_INTERMEDIATE_LOG + +/* + * Disc debugging: + * 0 = no debug, 1 = some, 2 = more, etc. + */ +#define DISC_DEBUG 0 + +/* + * Disc equation checks + */ +#define DISC_EQUATION_CHECKS + +/* + * Log equation checks + */ +//#define DISC_EQUATION_CHECKS_LOG + +/* + * Multiplier for the Jdot term from mass loss + * in the angular momentum flux equation. + * + * This should be 1.0, but is included here for + * debugging purposes. + */ +#define F_STRIPPING_CORRECTION_FAC 1.0 + +/* + * If fabs(1-Rin/Rout) < DISC_RADIUS_DIFFERENCE_THRESHOLD_FOR_FAILURE + * consider the disc a failure + */ +#define DISC_RADIUS_DIFFERENCE_THRESHOLD_FOR_FAILURE 1e-8 + + +/* + * Warn if residual > threshold + */ +#define DISC_RESIDUAL_WARNING +#define DISC_RESIDUAL_WARNING_THRESHOLD 1e-6 + +/* + * Maximum number of disc zones + */ +#define DISCS_MAX_N_ZONES 3 + +/* + * Maximum age of a disc + */ +#define DISC_MAX_LIFETIME (1e9*YEAR_LENGTH_IN_SECONDS) + +/* + * Max and min disc timestep + */ +#define DISC_MAX_TIMESTEP (1e+8 * YEAR_LENGTH_IN_SECONDS) +#define DISC_MIN_TIMESTEP (1e-1 * YEAR_LENGTH_IN_SECONDS) + +/* debugging */ +#define DEBUG_ALL 0 + +/* API testing */ +//#define TEST_POWER_LAW_API + +/* + * debugging flags + * 0 = no debugging output + * 1 = some debugging output + * 2 = full debugging output (less useful in most cases) + */ +#if defined DEBUG_ALL && DEBUG_ALL==1 +/* + * Force all debugging to be on + */ +#define DEBUG_FIRST_GUESSES 1 +#define DEBUG_ZONE_RADII 1 +#define DEBUG_BISECTION_LOOP 1 +#define DEBUG_MASS_BISECTOR 1 +#define DEBUG_ANGMOM_BISECTOR 1 +#define DEBUG_ANGMOM_FLUX_BISECTOR 1 +#define DEBUG_ZONE_LIST_CONSTRUCTION 1 +#define DEBUG_DERIVED_POWER_LAWS 1 +#define SHOW_VISCOUS_WARNING 1 +#define SHOW_CONVERGED_DISC_STRUCTURE 1 +#define TEST_ZONE_CONTINUITY 0 +#define DISC_NANS +#define DISC_DEBUG_MJE_CHANGES 1 +#else +/* + * You choose... + */ +#define DEBUG_FIRST_GUESSES 0 +#define DEBUG_ZONE_RADII 0 +#define DEBUG_BISECTION_LOOP 0 +#define DEBUG_MASS_BISECTOR 0 +#define DEBUG_ANGMOM_BISECTOR 0 +#define DEBUG_ANGMOM_FLUX_BISECTOR 0 +#define DEBUG_ZONE_LIST_CONSTRUCTION 0 +#define DEBUG_DERIVED_POWER_LAWS 0 +#define TEST_ZONE_CONTINUITY 0 +#define DISC_DEBUG_MJE_CHANGES 0 +#define SHOW_CONVERGED_DISC_STRUCTURE 0 +#undef DISC_NANS +#define SHOW_VISCOUS_WARNING 0 +#endif + +#ifndef SHOW_ZONE_LIST_POWER_LAWS +#define SHOW_ZONE_LIST_POWER_LAWS 0 +#endif +#ifndef SHOW_CONVERGED_DISC_STRUCTURE +#define SHOW_CONVERGED_DISC_STRUCTURE 0 +#endif +#ifndef DISC_SHOW_TEST_EXPRESSIONS +#define DISC_SHOW_TEST_EXPRESSIONS 0 +#endif + +//#undef DEBUG_ZONE_RADII +//#define DEBUG_ZONE_RADII 1 + +//#define POWER_LAW_SANITY_CHECKS + +//#define Discprint(...) +#define Discprint(...) printf(__VA_ARGS__); + +/* + * Define this to build possibly buggy code + */ +//#define BUILD_DUBIOUS_DISC_CODE + +//#define DISC_BUILD_DEPRECATED_CODE + + +/* + * Timestep change limiters (defaults low 0.8, high 1.2) + */ +#define DISC_TIMESTEP_LOW_FACTOR 0.8 +#define DISC_TIMESTEP_HIGH_FACTOR 1.2 + +/* + * A long time (seconds, default 1e100) + */ +#define DISC_LONG_TIME 1e100 + + +/* + * Reset the disc solver list to the default + * if + * disc->iteration < DISC_SOLVER_RESET_MIN + * or + * disc->iteration % DISC_SOLVER_RESET_MODULO == 0 + * + * If DISC_SOLVER_RESET_MODULO is 0 then the solver + * list is reset every timestep. + */ +#define DISC_SOLVER_RESET_MIN 1 +#define DISC_SOLVER_RESET_MODULO 0 + +/* + * Numerical solver tolerance and max number iterations + * of iterations of bisection rooters (NB: you might not + * use the bisection method, e.g. if you are using GSL's method(s) + * and these work fine). Defaults: 1e-6 and 1000. + */ + +#define DISC_TOLERANCE 1e-6 +#define DISC_BISECTION_MAX_ITERATIONS 1000 + +/* + * Mass bisection tolerance (1e-6) and + * maximum number of iterations + */ +#define DISC_MASS_TOLERANCE (DISC_TOLERANCE) +#define DISC_BISECTION_MASS_MAX_ITERATIONS DISC_BISECTION_MAX_ITERATIONS + +/* + * When Rout is not known, but the disc total angular momentum is, + * Rout is set with this tolerance on J (1e-6) + */ +#define DISC_ANGMOM_TOLERANCE (DISC_TOLERANCE) +#define DISC_BISECTION_ANGMOM_MAX_ITERATIONS DISC_BISECTION_MAX_ITERATIONS + +/* + * Angular momentum flux tolerance (1e-6) + */ +#define DISC_ANGMOM_FLUX_TOLERANCE (DISC_TOLERANCE) +#define DISC_BISECTION_ANGMOM_FLUX_MAX_ITERATIONS DISC_BISECTION_MAX_ITERATIONS + +/* + * Torquef bisection tolerance (1e-6) + * and max iterations (1000) + */ +#define DISC_TORQUEF_TOLERANCE (DISC_TOLERANCE) +#define DISC_BISECTION_TORQUEF_MAX_ITERATIONS 1000 + +/* + * Hence the error at the disc edge: + * this should be greater than the above tolerances + */ +#define DISC_EDGE_EPS ( \ + 2.0*MAX4( \ + DISC_MASS_TOLERANCE, \ + DISC_ANGMOM_TOLERANCE, \ + DISC_ANGMOM_FLUX_TOLERANCE, \ + DISC_TORQUEF_TOLERANCE) \ + ) + + +/* + * General disc bisection tolerance. + * + * I usually set this to 1e-8 because it can quickly be + * far more accurate than the disc convergence tolerance. + */ +#define DISC_BISECTION_TOLERANCE 1e-8 +#define DISC_BISECTION_ATTEMPTS 1000 + +/* + * Disc pressure calculation tolerance (default DISC_BISECTION_TOLERANCE) + */ +#define DISC_PRESSURE_RADIUS_TOLERANCE (DISC_BISECTION_TOLERANCE) +#define DISC_PRESSURE_RADIUS_ATTEMPTS (DISC_BISECTION_ATTEMPTS) + +/* + * Disc R from J calculation tolerance (default DISC_BISECTION_TOLERANCE) + */ +#define DISC_BISECT_RJ_TOLERANCE (DISC_BISECTION_TOLERANCE) +#define DISC_BISECT_RJ_ATTEMPTS (DISC_BISECTION_ATTEMPTS) + +/* + * Disc R from M calculation tolerance (default DISC_BISECTION_TOLERANCE) + */ +#define DISC_BISECT_RM_TOLERANCE (DISC_BISECTION_TOLERANCE) +#define DISC_BISECT_RM_ATTEMPTS (DISC_BISECTION_ATTEMPTS) + +/* + * If the disc < this width, it's a ring. Evaporate it. + * Default 1e5 (cm). + */ +#define DISC_MINIMUM_WIDTH 1e5 + +/* + * If the disc evaporation timescale is < this, + * evaporate it instantly. + */ +#define DISC_MINIMUM_EVAPORATION_TIMESCALE (YEAR_LENGTH_IN_SECONDS) + +/* + * Maximum number of attempts at bisection + */ +#define _DISC_BISECTION_MAX_ATTEMPTS 10000 + +#define DISC_BISECTION_MAX_ATTEMPTS (IS_ZERO(disc->lifetime) ? \ + (10 * _DISC_BISECTION_MAX_ATTEMPTS) \ + : _DISC_BISECTION_MAX_ATTEMPTS) + +/* + * Maximum number of iterations through the GSL root finder + */ +#define DISC_ROOT_FINDER_MAX_ATTEMPTS 100 + +#define DISC_SMALL_RADIUS (1e2) +#define DISC_LARGE_RADIUS (1e50) +#define DISC_LARGE_MASS (1e50) + +/* + * Bisector limits + */ + +#define DISC_TVISC0_MIN (1e-50) +#define DISC_TVISC0_MAX (1e50) + +#define DISC_R_MIN 2.95e5 +#define DISC_R_MAX 1e50 + +#define DISC_ROUT_MIN (disc->converged == TRUE ? \ + MAX(DISC_R_MIN,disc->Rin) : \ + 2.95e5) +#define DISC_ROUT_MAX DISC_LARGE_RADIUS +/* Rin is in cm : cannot be < BH size */ +#define DISC_RIN_MIN (2.95e5) +#define DISC_RIN_MAX (disc->converged == TRUE ? \ + MIN(disc->Rout,DISC_R_MAX) : \ + DISC_R_MAX) + +/* +#define DISC_RIN_MIN 1.0 +#define DISC_RIN_MAX 1e100 +#define DISC_ROUT_MIN 1.0 +#define DISC_ROUT_MAX 1e100 +*/ +/* + * Minimum disc mass, in Msun. + * Default: 1e-20 + */ +#define DISC_MINIMUM_DISC_MASS_MSUN 1e-20 + +/* + * Minimum disc F. Default 1e-3. + */ +#define DISC_MINIMUM_DISC_F 1e-3 + +/* + * Number of shells in numerical integrals. + * Default: 100 + */ +#define DISC_ADAM_RESOLUTION 100 + +/* + * Minimum and maximum torque factor. + * You may think that the preferences->cbdisc_torqueF is a good minimum, + * and often it is (because removing material from the inner + * edge requires an increase in the torque factor) however, may + * be binary orbit changes that require a smaller factor. + */ +#define DISC_MINIMUM_TORQUE 1e-20 +#define DISC_MAXIMUM_TORQUE 1e20 + +/* + * Fix the orbit? + */ +//#define FIX_BINARY + + +/* + * How to lose mass to the ISM? + * Either a global Mdot (DISC_LOSS_ISM_GLOBAL) + * or outer edge stripping (DISC_LOSS_ISM_OUTER_EDGE) + */ +#define DISC_LOSS_ISM_ALGORITHM DISC_LOSS_ISM_OUTER_EDGE + +/* + * When stripping the inner or outer edge, allow the disc + * to reduce its mass (M) or angular momentum (J) by at most + * DISC_STRIP_FRAC_(M|J)_(INNER|OUTER) * (M|J) + * + * e.g. setting this to 0.1 will only allow 10% of the mass to be + * stripped in one timestep. + * + * To allow the whole disc to be stripped very quickly, set + * all these to 1.0. + * + * Note that the OUTER values are currently 1.0. If you set these to, + * say, 0.1, then the algorithm gets into a loop where not stripping + * enough (the 90%) of the outer edge means the mass loss rate goes up faster + * than stripping can happen. Really, we want a shorter timestep to + * allow this to happen accurately, but instead we should just let the + * outer edge of the disc adapt instantaneously. + * + * This also happens on the inner edge, but it's less bad. + */ +#define DISC_STRIP_FRAC_INNER 1.0 +#define DISC_STRIP_FRAC_M_INNER DISC_STRIP_FRAC_INNER +#define DISC_STRIP_FRAC_J_INNER DISC_STRIP_FRAC_INNER +#define DISC_STRIP_FRAC_M_OUTER 1.0 +#define DISC_STRIP_FRAC_J_OUTER 1.0 + +/* + * Use log space? recommended. + */ +#define DISC_MONTE_CARLO_GUESSES_USE_LOG + +/* + * Use logarithm(x) instead of (x) in bisection? + * + * Usually this is very slightly slower, but may help explore + * larger parameter spaces faster. + */ +#define DISC_BISECT_USELOG FALSE + +#define DISC_BISECT_OWEN_RADIUS_USELOG DISC_BISECT_USELOG +#define DISC_BISECT_RJ_USELOG DISC_BISECT_USELOG +#define DISC_BISECT_RM_USELOG DISC_BISECT_USELOG +#define DISC_BISECT_PRESSURE_RADIUS_USELOG DISC_BISECT_USELOG +#define DISC_BISECT_VISCOUS_USELOG DISC_BISECT_USELOG +#define DISC_BISECT_BISECTION_ROOTER_USELOG DISC_BISECT_USELOG +#define DISC_BISECT_TORQUEF_USELOG DISC_BISECT_USELOG + + +#if defined DISC_RESIDUAL_WARNING || defined DISC_LOG +#define DISC_SAVE_EPSILONS +#endif + +#endif // DISC_PARAMETERS_H diff --git a/src/disc/disc_photoevaporation.c b/src/disc/disc_photoevaporation.c index a2ae48bdc9df0e8935b03637f9dd955fa2314717..da187cf1fa8672544ce9e317dab9f7cb4f5714cd 100644 --- a/src/disc/disc_photoevaporation.c +++ b/src/disc/disc_photoevaporation.c @@ -1,22 +1,8 @@ #include "../binary_c.h" #if defined DISCS -#include "disc.h" #include <gsl/gsl_integration.h> - -#undef DISC_DEBUG -#define DISC_DEBUG 1 -/* - * Todo : more flexible GSL integration - * - * disc_Owen_2012_clearing_radius should be bracketed - */ - -#define INTEGRAL_N 100 -#define GSL_INTEGRAL_TOLERANCE 1e-4 - -static double disc_Owen_2012_clearing_radius_bisector(const double r, - void * p); +#include "disc_photoevaporation.h" /* @@ -24,15 +10,15 @@ static double disc_Owen_2012_clearing_radius_bisector(const double r, * based on Owen, Clarke and Ercolano (2012, MNRAS 433, 1880). */ -double disc_Owen_2012_total_mdot(struct binary_system_t * binary) +double disc_Owen_2012_total_mdot(const struct binary_system_t * binary) { /* * Equation B4 of Owen et al. (2012) gives the total * mass loss rate of a disc with a hole. * - * NB returns the rate in cgs, i.e. g s^-1 + * NB returns a negative rate in cgs, i.e. g s^-1 */ - double mdot = + const double mdot = -4.8e-9 * pow(binary->mtot/M_SUN,-0.148) * pow(binary->LX * 1e-30, 1.14) * M_SUN / YEAR_LENGTH_IN_SECONDS; @@ -46,8 +32,8 @@ double disc_Owen_2012_total_mdot(struct binary_system_t * binary) } double disc_Owen_2012_sigmadot(struct disc_t * disc, - struct binary_system_t * binary, - double R) + const struct binary_system_t * binary, + const double R) { /* * Eq. B5 of Owen et al. (2012) gives d(Sigma)/dt @@ -67,86 +53,61 @@ double disc_Owen_2012_sigmadot(struct disc_t * disc, */ double sigmadot; - /* all radii are in AU */ + /* + * all radii in Owen's fitting formulae are in AU + */ const double Rhole = disc->Rin / ASTRONOMICAL_UNIT; - R /= ASTRONOMICAL_UNIT; - - -#define B6(R) ( 0.95 * \ - MAX(0.0, \ - MIN( ((R) - Rhole) , 60.0 ) \ - ) * \ + const double RAU = R / ASTRONOMICAL_UNIT; + const int vb = 0; + if(vb)printf("RAU %g : ",RAU); + +#define B6(R) ( 0.95 * \ + MAX(0.0, \ + MIN( ((R) - Rhole) , 60.0 ) \ + ) * \ ( M_SUN / binary->mtot ) ) /* - * NB Coefficients were sent to me by James Owen, - * so they are slightly (!) more accurate than in + * NB Coefficients were sent to RGI by James Owen, + * so they are slightly more accurate than in * his 2012 paper. */ -#define a2 -4.3822599312953403e-01 -#define b2 -1.0658387115013401e-01 -#define c2 5.6994636363474982e-01 -#define d2 1.0732277075017336e-02 -#define e2 -1.3180959703632333e-01 -#define f2 -1.3228570869396541e+00 +#define a2 (-4.3822599312953403e-01) +#define b2 (-1.0658387115013401e-01) +#define c2 (5.6994636363474982e-01) +#define d2 (1.0732277075017336e-02) +#define e2 (-1.3180959703632333e-01) +#define f2 (-1.3228570869396541e+00) #define expterm(A,B,Y,R) ((A)*(B)*exp((B)*(Y))/(R)) /* - * Eq. B6 gives y + * Eq. B6 gives y. If this is <0 there is no mass loss, + * although by construction this is impossible with the + * definition of B6 above (it *is* possible in Owen's + * original paper). */ - double y = B6(R); - - //printf("B6(%g) = %g\n",R,y); - - if(0)printf("B6 = 0.95 * MAX(0,MIN(R=%g - Rhole=%g,60)) * (%g)^-1 -> y = 0.95 * %g * %g = %g\n", - R, - Rhole, - binary->mtot/M_SUN, - MAX(0.0,MIN( (R - Rhole) , 60.0 )), - M_SUN / binary->mtot, - y); + const double y = B6(RAU); - if(y<0.0) + if(unlikely(y<0.0)) { sigmadot = 0.0; + if(vb)printf("y = 0 : "); } else { /* - * Eq. B5 has units AU^-2 + * Eq. B5 has units AU^-2, convert to cm^-2 */ - double fac = expterm(a2,b2,y,R) + - expterm(c2,d2,y,R) + - expterm(e2,f2,y,R); - double expterm = exp(-pow(y/57.0, 10.0)); - double B5 = fac * expterm; - - //printf("B5([R=%g] fac=%g * exp=%g) = %g\n", - //R,fac,expterm,B5); - - if(0)printf("B5 = %g from R=%g y=%g a2=%g b2=%g c2=%g d2=%g e2=%g f2=%g terms = %g %g %g %g (norm = %g)\n", - B5, - R, - y, - a2, - b2, - c2, - d2, - e2, - f2, - expterm(a2,b2,y,R), - expterm(c2,d2,y,R), - expterm(e2,f2,y,R), - exp(-pow(y/57.0, 10.0)), - disc->Owen2012_norm - ); - - /* - * Convert to cm^-2 - */ - B5 /= POW2(ASTRONOMICAL_UNIT); - + const double B5 = ( + expterm(a2,b2,y,RAU) + + expterm(c2,d2,y,RAU) + + expterm(e2,f2,y,RAU) + ) * exp(-pow(y/57.0, 10.0)) / + POW2(ASTRONOMICAL_UNIT); + + + if(vb)printf("y = %g, B5 = %g : ",y,B5); /* * Normalization. * @@ -158,31 +119,39 @@ double disc_Owen_2012_sigmadot(struct disc_t * disc, * and the factor for the total mass loss rate of the disc. */ sigmadot = B5 * disc->Owen2012_norm; - - /* - printf("OWEN R=%g AU, M*=%g Msun, disc_mdot=%g, sigmadot = %g\n", - disc->Rin/ASTRONOMICAL_UNIT, - binary->mtot/M_SUN, - disc_mdot, - sigmadot); - */ - + #ifdef NANCHECKS if(isnan(B5) || isnan(y) || isnan(sigmadot)) { - printf("NAN error : B5=%g y=%g sigmadot=%g Owen2012_norm=%g\n", + if(vb)printf("NAN error : B5=%g y=%g sigmadot=%g Owen2012_norm=%g\n", B5,y,sigmadot,disc->Owen2012_norm); - fflush(NULL); - _exit(0); + Exit_binary_c_no_stardata( + EXIT_NAN, + "NAN error : B5=%g y=%g sigmadot=%g Owen2012_norm=%g\n", + B5,y,sigmadot,disc->Owen2012_norm); } #endif } + if(vb)printf("sigmadot = %g\n",sigmadot); + + /* + * sigmadot should never be > 0 when the normalization + * factor has been set. + */ + /* + if(sigmadot>0.0 && !FEQUAL(disc->Owen2012_norm,1.0)) + { + printf("sigmadot >0 = %g, norm = %g\n",sigmadot,disc->Owen2012_norm); + fflush(NULL); + _exit(0); + } + */ return sigmadot; } void disc_Owen_2012_normalize(struct disc_t * disc, - struct binary_system_t * binary) + const struct binary_system_t * binary) { /* * Re-calculate the Owen 2012 normalization for the @@ -190,45 +159,46 @@ void disc_Owen_2012_normalize(struct disc_t * disc, * Do this from 0 to 100AU, this should be sufficient. */ disc->Owen2012_norm = 1.0; - double total_mdot = disc_Owen_2012_total_mdot(binary); + const double total_mdot = disc_Owen_2012_total_mdot(binary); /* store this for timestep calculations */ disc->Mdot_evap_whole_disc = total_mdot; /* - * normalize out to 1.65*57 AU with Rin = 0 + * normalize out to OWEN2012_OUTER_RADIUS = 1.65*57 AU + * with Rin = OWEN2012_INNER_RADIUS = 0 * * This outer limit is as in Owen's paper. It * makes little difference if you choose a larger outer * limit: the function flattens off anyway. */ - double Rinwas = disc->Rin; + const double Rinwas = disc->Rin; disc->Rin = 0.0; - double I = disc_Owen_2012_sigmadot_integral(disc, - binary, - 0.0, - ASTRONOMICAL_UNIT*1.65*57.0); + const double I = + disc_Owen_2012_sigmadot_integral(disc, + binary, + OWEN2012_INNER_RADIUS, + OWEN2012_OUTER_RADIUS); /* restore Rin */ disc->Rin = Rinwas; /* hence normalization factor */ disc->Owen2012_norm = total_mdot/I; + Discdebug(2, "OWEN NORM mdot=%g (= %g Msun/y) I = %g cm^-2 = %g AU^-2\n", total_mdot, total_mdot*YEAR_LENGTH_IN_SECONDS/M_SUN, I, I * POW2(ASTRONOMICAL_UNIT)); - - } double disc_Owen_2012_mdot(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout) + const struct binary_system_t * binary, + const double Rin, + const double Rout) { /* * Mass loss rate from the disc by integrating the @@ -236,113 +206,63 @@ double disc_Owen_2012_mdot(struct disc_t * disc, * the "total" mass loss rate: that function assumes all the * disc is there, while some may be lost. */ - double mdot = disc_Owen_2012_sigmadot_integral(disc,binary,Rin,Rout); + const double mdot = disc_Owen_2012_sigmadot_integral(disc, + binary, + Rin, + Rout); return mdot; } -double disc_Owen_2012_sigmadot_integral_old(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout); -double Owen2012_sigmadot_f(double x, - void *params); -double Owen2012_sigmadot_f(double x, - void *params) +static double Owen2012_sigmadot_f(double x, + void *params) { Map_GSL_params(params,args); - struct disc_t * disc = va_arg(args, struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t * ); + Map_varg(struct disc_t *,disc,args); + Map_varg(const struct binary_system_t *,binary,args); va_end(args); - double R = x; - double sigmadot = disc_Owen_2012_sigmadot(disc,binary,R); - double dI = sigmadot * 2.0 * PI * R; + const double R = x; + const double sigmadot = disc_Owen_2012_sigmadot(disc,binary,R); + const double dI = sigmadot * 2.0 * PI * R; return dI; } double disc_Owen_2012_sigmadot_integral(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout) + const struct binary_system_t * binary, + const double Rin, + const double Rout) { /* * Integrate to find the mass loss rate * because of X-ray photoevaporation * between radii Rin and Rout. */ - - /* - double Iold = disc_Owen_2012_sigmadot_integral_old(disc, - binary, - Rin, - Rout); - */ double error; - double Inew = GSL_integrator(Rin, - Rout, - GSL_INTEGRAL_TOLERANCE, - &error, - GSL_INTEGRATOR_QAG, - &Owen2012_sigmadot_f, - disc, - binary); - - return Inew; + const double sigmadot = GSL_integrator(Rin, + Rout, + PHOTOEVAPORATION_GSL_INTEGRAL_TOLERANCE, + &error, + GSL_INTEGRATOR_QAG, + &Owen2012_sigmadot_f, + disc, + binary); + return sigmadot; } -double disc_Owen_2012_sigmadot_integral_old(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout) -{ - /* - * Integrate to find the mass loss rate - * because of X-ray photoevaporation - * between radii Rin and Rout. - */ - double I = 0.0; - if(!FEQUAL(Rin,Rout)) - { - double R = 0.0; - double dR = (Rout - Rin)/((double)INTEGRAL_N); - - Discdebug(2, - "Integrate sigmadot for mdot from Rin %g to Rout %g\n", - Rin, - Rout); - - FILE * fp = fopen("/tmp/integral.dat","w"); - while(R < Rout) - { - R += dR * 0.5; - double dA = 2.0 * PI * R * dR; - double sigmadot = disc_Owen_2012_sigmadot(disc,binary,R); - I += sigmadot * dA; - R += dR * 0.5; - fprintf(fp,"%g %g %g\n",R,sigmadot*dA/dR,I); - } - fclose(fp); - } - return I; -} -double Owen2012_angmom_f(double x, - void *params); double disc_Owen_2012_angmom_integral(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout) -{ + const struct binary_system_t * binary, + const double Rin, + const double Rout) +{ /* - return disc_Owen_2012_angmom_integral_old(Rin, - Rout, - disc, - binary); - */ + * Use GSL to integrate the angular momentum + * loss rate from photoevaporation. + */ double error; return GSL_integrator(Rin, Rout, - GSL_INTEGRAL_TOLERANCE, + PHOTOEVAPORATION_GSL_INTEGRAL_TOLERANCE, &error, GSL_INTEGRATOR_QAG, &Owen2012_angmom_f, @@ -351,152 +271,55 @@ double disc_Owen_2012_angmom_integral(struct disc_t * disc, } -double Owen2012_angmom_f(double x, - void *params) +static double Owen2012_angmom_f(double x, + void *params) { - Map_GSL_params(params,args) - struct disc_t * disc = va_arg(args, struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t * ); + Map_GSL_params(params,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); va_end(args); - double R = x; - double h = disc_specific_angular_momentum(R,binary); - return h * disc_Owen_2012_sigmadot(disc,binary,R) * 2.0 * PI * R; -} - - -double disc_Owen_2012_angmom_integral_old(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout) -{ - /* - * Integrate to find the angular momentum loss rate - * because of X-ray photoevaporation - * between radii Rin and Rout. - */ - double I = 0.0; - if(!FEQUAL(Rin,Rout)) - { - double R = 0.0; - double dR = (Rout - Rin)/((double)INTEGRAL_N); - Discdebug(2, - "Integrate sigmadot for jdot from Rin %g to Rout %g\n",Rin,Rout); - while(R < Rout) - { - R += dR * 0.5; - double h = disc_specific_angular_momentum(R,binary); - double dA = 2.0 * PI * R * dR; - double sigmadot = disc_Owen_2012_sigmadot(disc,binary,R); - I += sigmadot * dA * h; - R += dR * 0.5; - } - } - return I; + const double R = x; + const double h = disc_specific_angular_momentum(R,binary); + + const double sigma = disc_column_density(R,disc); + const double sigmadot = disc_Owen_2012_sigmadot(disc,binary,R); + const double dMdot_dR = 2.0 * PI * R * sigmadot; + const double dJ_dR = 2.0 * PI * R * sigma * h; + const double dJdot_dR = h * dMdot_dR; + const double local_timescale = - dJ_dR / dJdot_dR; + + Discdebug(3, + "At R = %g Rsun : sigmadot = %g, d(Mdot)/dR = %g, dJ/dr = %g, dJdot/dR = %g, local timescale %g years\n", + R/R_SUN, + sigmadot, + dMdot_dR, + dJ_dR, + dJdot_dR, + local_timescale / YEAR_LENGTH_IN_SECONDS); + return h * dMdot_dR; } - - - double disc_Owen_2012_mass_loss_timescale(struct disc_t * disc, - struct binary_system_t * binary, - double R) + const struct binary_system_t * binary, + const double R) { /* * Return the local mass-loss timescale at a location * in the disc given by radius R */ - double sigma = disc_column_density(R,disc); - double sigmadot = disc_Owen_2012_sigmadot(disc,binary,R); + const double sigma = disc_column_density(R,disc); + const double sigmadot = disc_Owen_2012_sigmadot(disc,binary,R); return sigma/MAX(fabs(sigmadot),1e-50); } -#define tmdot(R) disc_Owen_2012_mass_loss_timescale(disc,binary,(R)) -#define tvisc(R) disc_viscous_timescale((R),disc,binary) - -double disc_Owen_2012_clearing_radius(struct disc_t * disc, - struct binary_system_t * binary) - -{ - /* - * Alternative version of the clearing radius - * function that doesn't require the innate function - * to be monotonic. - */ - double r; - if(tvisc(disc->Rin) < tmdot(disc->Rin)) - { - /* - * Viscous transport is faster than mass - * loss at the inner edge, so the disc is - * dominated by visosity. - */ - r = disc->Rin; - - Discdebug(2, - "Whole disc is dominated by viscosity\n"); - } - else if(tvisc(disc->Rout) > tmdot(disc->Rout)) - { - /* - * Mass loss dominates at the outer edge, - * so the whole disc is dominated by mass loss. - */ - r = disc->Rout; - - Discdebug(2, - "Whole disc is dominated by mass loss\n"); - } - else - { - /* - * The radius is bracketed: find it. - */ - r = disc->Rout; - double dr = (disc->Rout - disc->Rin) / 1000.0; - int brk = 0; - while(r > disc->Rin && brk == 0) - { - double tm = tmdot(r); - double tv = tvisc(r); - //printf("at r = %g : tm = %g, tv = %g : break? %s\n",r,tm,tv,Yes_or_no(tm<tv)); - - if(tm < tv) - { - /* - * Mass loss by winds is faster than viscous : - * this is the radius we seek - */ - brk = 1; - } - else - { - /* - * Keep moving inward - */ - r -= dr; - } - } - - Discdebug(2,"Loop exit brk = %d, r = %g\n",brk,r); - if(brk==0) r = disc->Rin; - } - - Discdebug(2, - "disc clearing radius %g (Rin %g Rout %g)\n", - r,disc->Rin,disc->Rout); - - return r; -} - - - - -double disc_Owen_2012_clearing_radius2(struct disc_t * disc, - struct binary_system_t * binary) +double disc_Owen_2012_clearing_radius(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary) { /* * Radius at which the Owen 2012 mass loss timescale - * equals the local viscous timescale. + * equals the local viscous timescale. + * * * If the local viscous time is shorter than the mass loss * time at the inner edge, then the radius is just the inner @@ -508,18 +331,7 @@ double disc_Owen_2012_clearing_radius2(struct disc_t * disc, * Otherwise, we return the radius at which the viscous timescale * and the mass loss timescale are equal. */ - const int vb=2; // not a flag! set to 2 - - /* - printf("OWEN STAR L=%g Teff=%g %g R=%g Rsun\n", - binary->L/L_SUN, - binary->Teff[0], - binary->Teff[1], - binary->separation/R_SUN - ); - */ - - Discdebug(vb, + Discdebug(2, "\nOWEN M=%g J=%g %g\nOWEN Inner edge Rin = %g Tin = %g, tvisc %g y tmdot %g y\n", disc->M/M_SUN, disc->J, @@ -528,7 +340,7 @@ double disc_Owen_2012_clearing_radius2(struct disc_t * disc, disc_temperature(disc->Rin,disc), tvisc(disc->Rin)/YEAR_LENGTH_IN_SECONDS, tmdot(disc->Rin)/YEAR_LENGTH_IN_SECONDS); - Discdebug(vb, + Discdebug(2, "\nOWEN Outer edge Rout = %g Tout = %g tvisc %g y tmdot %g y\n", disc->Rout/R_SUN, disc_temperature(disc->Rout,disc), @@ -541,27 +353,39 @@ double disc_Owen_2012_clearing_radius2(struct disc_t * disc, /* * Viscous transport is faster than X-ray mass * loss at the inner edge, so the disc is - * dominated by viscosity. + * dominated by viscosity and can expand to take into + * account mass loss. */ r = disc->Rin; - Discdebug(vb, - "Whole disc is dominated by viscosity\n"); + Discdebug(2, + "Whole disc is dominated by viscosity (timescales : mdot [inner edge = %g , outer edge %g], viscosity [inner edge %g, outer edge %g)\n", + tmdot(disc->Rin)/YEAR_LENGTH_IN_SECONDS, + tvisc(disc->Rin)/YEAR_LENGTH_IN_SECONDS, + tmdot(disc->Rout)/YEAR_LENGTH_IN_SECONDS, + tvisc(disc->Rout)/YEAR_LENGTH_IN_SECONDS + ); } else if(tvisc(disc->Rout) > tmdot(disc->Rout)) { /* - * X-ray Mass loss dominates at the outer edge, + * X-ray mass loss dominates at the outer edge, * so the whole disc is dominated by X-ray mass loss. */ r = disc->Rout; - Discdebug(vb,"Whole disc is dominated by mass loss\n"); + Discdebug(2, + "Whole disc is dominated by mass loss (timescales : mdot [inner edge = %g , outer edge %g], viscosity [inner edge %g, outer edge %g)\n", + tmdot(disc->Rin)/YEAR_LENGTH_IN_SECONDS, + tvisc(disc->Rin)/YEAR_LENGTH_IN_SECONDS, + tmdot(disc->Rout)/YEAR_LENGTH_IN_SECONDS, + tvisc(disc->Rout)/YEAR_LENGTH_IN_SECONDS + ); } else { /* * The radius is bracketed: find it. */ - Discdebug(vb, + Discdebug(2, "call generic bisector for Owen radius\n"); int error; r = generic_bisect(&error, @@ -573,23 +397,167 @@ double disc_Owen_2012_clearing_radius2(struct disc_t * disc, disc->Rout, DISC_TOLERANCE, 1000, + DISC_BISECT_OWEN_RADIUS_USELOG, 1.0, + stardata, disc, binary); if(error != BISECT_ERROR_NONE) { - Discdebug(vb, + Discdebug(2, "Warning : Owen radius bisect failed, returning r = Rout\n"); r = disc->Rout; } } - Discdebug(vb, - "OWEN clearing radius %g (Rin = %g, Rout = %g)\n", - r,disc->Rin,disc->Rout); + Discdebug(2, + "OWEN clearing radius %g (Rin = %g, Rout = %g) (Rsun)\n", + r / R_SUN, + disc->Rin / R_SUN, + disc->Rout / R_SUN); return r; } +void disc_Owen_2012_clearing_radii(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + double * R_clear_in, + double * R_clear_out) +{ + if(disc->Rin > 0.0 && + disc->Rout > 0.0) + { + /* + * Find the radii outside of which mass loss + * dominates viscous loss. + */ + + /* + * Default radii + */ + *R_clear_in = disc->Rin; + *R_clear_out = disc->Rout; + +#define Viscosity_dominated(R) (tvisc(R) < tmdot(R)) +#define Wind_dominated(R) (!Viscosity_dominated(R)) +#define Dominator_string(R) (Wind_dominated(R) ? "Wind" : "Viscosity") + + Discdebug(2,"clearing: inner edge %s dominated, outer edge %s dominated\n", + Dominator_string(disc->Rin), + Dominator_string(disc->Rout)); + + const double dr_init = (disc->Rout - disc->Rin) / 1000.0; + const double drmin = 0.001 * R_SUN; /* accuracy */ + const double fzoom = 0.5; /* factor for each zoom */ + const int nzoom_max = 100; /* max zoom level */ + int nzoom; + const int nres = 1000; + double r,dr = (disc->Rout - disc->Rin) / ((double)nres); + + /* + * Check for anywhere being wind dominated + */ + Boolean action_required = FALSE; + Boolean somewhere_is_viscous MAYBE_UNUSED = FALSE; + for(r=disc->Rin; r<disc->Rout; r+=dr) + { + if(Wind_dominated(r)) + { + /* wind dominated */ + action_required = TRUE; + } + else + { + /* viscosity dominated */ + somewhere_is_viscous = TRUE; + } + } + + if(action_required) + { + if(Wind_dominated(disc->Rin)) + { + /* + * Inner edge is wind dominated. Move out until + * we find where the disc is viscously dominated. + */ + + Discdebug(2,"Find inner clearing radius\n"); + + dr = dr_init; + nzoom = 0; + for(r=disc->Rin; r<disc->Rout+dr*0.1; r+=dr) + { + /* + printf("clearing in dr = %g %s (nzoom = %d) : At r=Rin=%g %s tvisc = %g, twind = %g : %s dominated\n", + Solar(dr,R), + nzoom, + Solar(r,R), + tvisc(r)/YEAR_LENGTH_IN_SECONDS, + tmdot(r)/YEAR_LENGTH_IN_SECONDS, + Dominator_string(r)); + */ + + if(Viscosity_dominated(r)) + { + /* zoom! */ + r -= dr; + dr *= fzoom; + + if(dr < drmin || ++nzoom > nzoom_max) + { + break; + } + } + + *R_clear_in = MIN(disc->Rout,MAX(disc->Rin,r)); + } + } + + if(Wind_dominated(disc->Rout)) + { + /* + * Outer edge is wind dominated. Move out until + * we find where the disc is viscously dominated. + */ + double r; + nzoom = 0; + dr = dr_init; + for(r=disc->Rout; r<*R_clear_in; r-=dr) + { + printf("clearing out dr = %g %s (nzoom = %d) : At r=Rin=%g %s tvisc = %g, twind = %g : %s dominated\n", + Solar(dr,R), + nzoom, + Solar(r,R), + tvisc(r)/YEAR_LENGTH_IN_SECONDS, + tmdot(r)/YEAR_LENGTH_IN_SECONDS, + Dominator_string(r)); + + if(Viscosity_dominated(r)) + { + r += dr; + dr *= fzoom; + if(dr < drmin || ++nzoom > nzoom_max) + { + break; + } + } + *R_clear_out = MAX3(disc->Rin,*R_clear_in,MIN(disc->Rout,r)); + } + } + } + } + + Discdebug(2, + "OWEN clearing radii in = %g %s, out = %g %s\n", + Solar(*R_clear_in,R), + Solar(*R_clear_out,R)); +} + + + + + static double disc_Owen_2012_clearing_radius_bisector(const double r, void * p) @@ -598,19 +566,21 @@ static double disc_Owen_2012_clearing_radius_bisector(const double r, * Bisect the half angular momentum radius */ Map_GSL_params(p,args); - struct disc_t * disc = va_arg(args,struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t * ); + Map_varg(struct stardata_t *,stardata,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); va_end(args); - double tm = tmdot(r); - double tv = tvisc(r); - double sigma = disc_column_density(r,disc); - double sigmadot = disc_Owen_2012_sigmadot(disc,binary,r); + + const double tm = tmdot(r); + const double tv = tvisc(r); + const double sigma = disc_column_density(r,disc); + const double sigmadot = disc_Owen_2012_sigmadot(disc,binary,r); Discdebug(2, - "at r=%g (Rin = %g, Rout = %g): sigma=%g sigmadot=%g : tmdot = %g, tvisc = %g : ratio %g\n", - r/ASTRONOMICAL_UNIT, - disc->Rin/ASTRONOMICAL_UNIT, - disc->Rout/ASTRONOMICAL_UNIT, + "at r=%g Rsun (Rin = %g, Rout = %g Rsun): sigma=%g sigmadot=%g : tmdot = %g, tvisc = %g : ratio %g\n", + r/R_SUN, + disc->Rin/R_SUN, + disc->Rout/R_SUN, sigma, sigmadot, tm/YEAR_LENGTH_IN_SECONDS, diff --git a/src/disc/disc_photoevaporation.h b/src/disc/disc_photoevaporation.h new file mode 100644 index 0000000000000000000000000000000000000000..6358618f1b002d6322398a8c7af65575d4b8fe03 --- /dev/null +++ b/src/disc/disc_photoevaporation.h @@ -0,0 +1,31 @@ +#pragma once +#ifndef DISC_PHOTOEVAPORATION_H +#define DISC_PHOTOEVAPORATION_H + +/* + * Radii over which the Owen 2012 expressions + * are to be normalized + */ +#define OWEN2012_INNER_RADIUS 0.0 +#define OWEN2012_OUTER_RADIUS ASTRONOMICAL_UNIT*1.65*57.0 + + +#define PHOTOEVAPORATION_GSL_INTEGRAL_TOLERANCE 1e-4 + +#define tmdot(R) \ + (disc_Owen_2012_mass_loss_timescale(disc,binary,(R)) / \ + MAX(1e-100,stardata->preferences->cbdisc_mass_loss_Xray_multiplier)) + +#define tvisc(R) \ + (disc_viscous_timescale((R),disc,binary)) + +static double Owen2012_angmom_f(double x, + void *params); + +static double disc_Owen_2012_clearing_radius_bisector(const double r, + void * p); +static double Owen2012_sigmadot_f(double x, + void *params); + + +#endif // DISC_PHOTOEVAPORATION_H diff --git a/src/disc/disc_power_law_prototypes.h b/src/disc/disc_power_law_prototypes.h new file mode 100644 index 0000000000000000000000000000000000000000..ae90f77d36c85f61275ba701df0fcfa32814260d --- /dev/null +++ b/src/disc/disc_power_law_prototypes.h @@ -0,0 +1,35 @@ +#pragma once +#ifndef DISC_POWER_LAW_PROTOTYPES_H +#define DISC_POWER_LAW_PROTOTYPES_H + +void new_power_law(struct power_law_t * p, + const double A0, + const double exponent, + const double R0, + const double R1); +void update_power_law(struct power_law_t * p, + const double A, + const int n); +void new_related_power_law(const struct power_law_t * old, + struct power_law_t * new, + const double A0, + const double c, + const double m); + +void match_power_laws(const struct power_law_t * in, + struct power_law_t * out); +void match_power_laws_inwards(const struct power_law_t * in, + struct power_law_t * out); + + +double power_law(const struct power_law_t * p, + const double r); +double power_law_zone_integral(const struct power_law_t * p); +double power_law_zone_integral_region(const struct power_law_t * p, + const double in, + const double out); + +double power_law_crossing_radius(const struct power_law_t * p0, + const struct power_law_t * p1); + +#endif //DISC_POWER_LAW_PROTOTYPES_H diff --git a/src/disc/disc_power_laws.c b/src/disc/disc_power_laws.c index cf8c6385858b51ab517e6a4d8fa726f722076c1d..181e161048277e9c38bba3156f1071325c36de7e 100644 --- a/src/disc/disc_power_laws.c +++ b/src/disc/disc_power_laws.c @@ -15,6 +15,7 @@ */ #include "../binary_c.h" + #ifdef DISCS void new_power_law(struct power_law_t * p, const double A0, diff --git a/src/disc/disc_power_laws.h b/src/disc/disc_power_laws.h index 5f1a5efbb9dd989e6b4ae0e1d9319fe22b2330ff..21bf386dc04d0dd1428ad5e368ad4c57a8793f69 100644 --- a/src/disc/disc_power_laws.h +++ b/src/disc/disc_power_laws.h @@ -1,3 +1,4 @@ +#pragma once #ifndef DISC_POWER_LAWS_H #define DISC_POWER_LAWS_H @@ -14,9 +15,16 @@ #define POWER_LAW_MOMENT_OF_INERTIA_INTEGRAND 4 #define POWER_LAW_GRAVITATIONAL_POTENTIAL_ENERGY_INTEGRAND 5 #define POWER_LAW_KINETIC_ENERGY_INTEGRAND 6 -#define POWER_LAW_ANGULAR_MOMENTUM_FLUX_INTEGRAND 7 +#define POWER_LAW_ANGULAR_MOMENTUM_FLUX_BINARY_INTEGRAND 7 #define POWER_LAW_MASS_WEIGHTED_VISCOUS_TIMESCALE 8 #define POWER_LAW_ANGULAR_MOMENTUM_CONSTRAINT 9 +#define POWER_LAW_ANGULAR_MOMENTUM_FLUX_CORRECTION_INTEGRAND 10 +#define POWER_LAW_ANGULAR_MOMENTUM_FLUX_DISC_INTEGRAND 11 + +/* + * Number of power laws to calculate in each disc + */ +#define DISCS_NUMBER_OF_POWER_LAWS 12 #define POWER_LAW_STRINGS { \ "Sigma", \ @@ -26,45 +34,18 @@ "I integrand", \ "grav PE integrand", \ "KE integrand", \ - "F integrand", \ + "F from binary->torqueF integrand", \ "Weighted tvisc", \ - "Ang mom constrain" \ + "Ang mom constraint", \ + "Ang mom flux correction integrand", \ + "F from disc->torqueF integrand", \ } /* - * Note that DISCS_NUMBER_OF_POWER_LAWS in binary_c_parameters.h + * Note that DISCS_NUMBER_OF_POWER_LAWS in disc_parameters.h * should be one greater than the largest power law defined * above */ -void new_power_law(struct power_law_t * p, - const double A0, - const double exponent, - const double R0, - const double R1); -void update_power_law(struct power_law_t * p, - const double A, - const int n); -void new_related_power_law(const struct power_law_t * old, - struct power_law_t * new, - const double A0, - const double c, - const double m); - -void match_power_laws(const struct power_law_t * in, - struct power_law_t * out); -void match_power_laws_inwards(const struct power_law_t * in, - struct power_law_t * out); - - -double power_law(const struct power_law_t * p, - const double r); -double power_law_zone_integral(const struct power_law_t * p); -double power_law_zone_integral_region(const struct power_law_t * p, - const double in, - const double out); - -double power_law_crossing_radius(const struct power_law_t * p0, - const struct power_law_t * p1); #endif // DISCS #endif // DISC_POWER_LAWS_H diff --git a/src/disc/disc_prototypes.h b/src/disc/disc_prototypes.h index 2f6d29159c6f4e1eec0a837a20ef1e63484f0118..928fa2c83646d68697d80933fe3c7cc6a2b61022 100644 --- a/src/disc/disc_prototypes.h +++ b/src/disc/disc_prototypes.h @@ -1,17 +1,23 @@ +#pragma once #ifndef DISC_PROTOTYPES_H #define DISC_PROTOTYPES_H #ifdef DISCS +#include "disc_power_law_prototypes.h" +#include "disc_data_types.h" + void evolve_discs(struct stardata_t * stardata); /************************************************************/ /* disc-related prototypes */ -void disc_logging(struct stardata_t * stardata); +void disc_logging(struct stardata_t * stardata, + const struct binary_system_t * binary, + const int logger); void disc_testing(struct stardata_t * stardata); void disc_status(struct stardata_t * stardata); struct disc_t * new_disc(Disc_type type, - void * object, + void * object, int pos); void remove_disc(Disc_type type, @@ -22,10 +28,10 @@ void remove_disc(Disc_type type, int ndiscs(Disc_type type, void * object); -struct disc_t * inner_disc(Disc_type type, - void * object); -struct disc_t * outer_disc(Disc_type type, - void * object); +struct disc_t * inner_disc(const Disc_type type, + const void * object); +struct disc_t * outer_disc(const Disc_type type, + const void * object); double mass_in_discs(Disc_type type, void * object); @@ -37,189 +43,208 @@ void remove_discs(Disc_type type, void disc_mem_cleanup(struct stardata_t * stardata); double disc_evolve_disc_structure(struct stardata_t * stardata, - struct disc_t * disc, - double dt); + struct disc_t * disc, + double dt); void disc_initialize_disc(struct stardata_t * stardata, - struct disc_t * disc); + struct disc_t * disc, + struct binary_system_t *binary); void disc_init_binary_structure(struct stardata_t * stardata, - struct binary_system_t *binary); - + struct binary_system_t *binary, + struct disc_t * cbdisc); void evolve_disc(struct stardata_t * stardata, struct disc_t * disc, - double dt); + const double dt); double mass_brent_wrapper(const double sig0, va_list args); double disc_temperature(const double radius, struct disc_t * disc); -double disc_inner_edge_temperature(struct disc_t * disc); -double disc_outer_edge_temperature(struct disc_t * disc); +double disc_inner_edge_temperature(const struct disc_t * disc); +double disc_outer_edge_temperature(const struct disc_t * disc); double disc_column_density(const double radius, struct disc_t * disc); double zone_mass_numerical(struct disc_t * disc, - struct disc_thermal_zone_t * zone); + const struct disc_thermal_zone_t * zone); double disc_specific_angular_momentum(const double radius, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_orbital_frequency(const double radius, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_injection_radius(const double h, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_velocity(const double radius, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_gravitational_pressure(const double radius, struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_pressure_radius(struct disc_t * disc, - struct binary_system_t * binary, - double P); + const struct binary_system_t * binary, + const double P); double disc_scale_height(const double radius, struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_sound_speed(const double radius, struct disc_t * disc); +double disc_critical_surface_density_for_gravitational_collapse(const double radius, + struct disc_t * disc); +double disc_Toomre_Q(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary); +double disc_minimum_Toomre_Q(const struct disc_t * disc, + const struct binary_system_t * binary); + +double disc_opacity(const double radius, + struct disc_t * disc); double disc_density(const double radius, struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_pressure(const double radius, struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_mass_inflow_rate(const double radius, struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_kinematic_viscosity(const double radius, struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); double specific_torque_Armitage(const double radius, - struct binary_system_t * binary); -double disc_binary_angular_momentum_flux(struct disc_t * disc, - struct binary_system_t * binary); -double disc_angular_momentum_flux(const double radius, - struct disc_t * disc, - struct binary_system_t * binary); -double disc_total_angular_momentum(struct disc_t * disc, - struct binary_system_t * binary); -double disc_total_angular_momentum_constraint(struct disc_t * disc, - struct binary_system_t * binary); -double disc_total_angular_momentum_numerical(struct disc_t * disc, - struct binary_system_t * binary); -double disc_mean_specific_angular_momentum(struct disc_t * disc, - struct binary_system_t * binary); -double disc_partial_angular_momentum(struct disc_t * disc, - struct binary_system_t * binary, - double r0, - double r1); + const struct binary_system_t * binary); +double disc_binary_angular_momentum_flux(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_total_angular_momentum(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_total_angular_momentum_constraint(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_total_angular_momentum_numerical(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_mean_specific_angular_momentum(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_partial_angular_momentum(const struct disc_t * disc, + const struct binary_system_t * binary, + const double r0, + const double r1); double disc_total_mass_numerical(struct disc_t * disc); -double disc_total_mass(struct disc_t * disc); -double disc_partial_mass(struct disc_t * disc,double r0,double r1); -double disc_zone_mass(struct disc_t * disc,int n); -double disc_total_kinetic_energy(struct disc_t * disc, - struct binary_system_t * binary); -double disc_total_gravitational_potential_energy(struct disc_t * disc, - struct binary_system_t * binary); -double disc_total_angular_momentum_flux(struct disc_t * disc, - struct binary_system_t * binary); - -double disc_zone_angular_momentum(struct disc_t * disc, - struct binary_system_t * binary, - int n); - -double disc_total_luminosity(struct disc_t * disc); -double disc_total_luminosity_numerical(struct disc_t * disc); -double disc_total_moment_of_inertia(struct disc_t * disc); +double disc_total_mass(const struct disc_t * disc); +double disc_partial_mass(const struct disc_t * disc, + const double r0, + const double r1); +double disc_zone_mass(const struct disc_t * disc, + const int n); +double disc_total_kinetic_energy(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_total_gravitational_potential_energy(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_total_angular_momentum_flux_from_binary(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_total_angular_momentum_flux_from_disc(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_total_angular_momentum_flux_correction(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_zone_angular_momentum(const struct disc_t * disc, + const struct binary_system_t * binary, + const int n); +double disc_total_luminosity(const struct disc_t * disc); +double disc_total_luminosity_numerical(const struct disc_t * disc); +double disc_total_moment_of_inertia(const struct disc_t * disc); double disc_viscous_timescale(const double radius, struct disc_t * disc, - struct binary_system_t * binary); -double disc_mass_weighted_viscous_timescale(struct disc_t * disc, - struct binary_system_t * binary); -int disc_zone_n(double radius, - struct disc_t * disc); + const struct binary_system_t * binary); +double disc_mass_weighted_viscous_timescale(const struct disc_t * disc, + const struct binary_system_t * binary); +Disc_zone_counter disc_zone_n(const double radius, + struct disc_t * disc); double generic_power_law(double radius, - struct disc_t * disc, - int n); -int disc_nearest_zone_n(double radius, - struct disc_t * disc); + struct disc_t * RESTRICT disc, + const int n); +Disc_zone_counter disc_nearest_zone_n(const double radius, + struct disc_t * disc); void cbdisc_eccentricity_pumping_rate(struct stardata_t * stardata, struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, double * edot, double * jdot); - -double disc_half_angular_momentum_radius(struct disc_t * disc, - struct binary_system_t * binary); - - +double disc_half_angular_momentum_radius(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_half_mass_radius(const struct disc_t * disc, + const struct binary_system_t * binary); +double disc_mass_radius(const struct disc_t * disc, + const struct binary_system_t * binary, + const double m); +double disc_angular_momentum_radius(const struct disc_t * disc, + const struct binary_system_t * binary, + const double j); double disc_inner_edge_accretion_f(struct stardata_t * stardata); -double disc_Owen_2012_total_mdot(struct binary_system_t * binary); +double disc_angular_momentum_flux(const double radius, + const struct disc_t * disc, + const struct binary_system_t * binary); + +double disc_Owen_2012_total_mdot(const struct binary_system_t * binary); double disc_Owen_2012_sigmadot(struct disc_t * disc, - struct binary_system_t * binary, - double R); + const struct binary_system_t * binary, + const double R); double disc_Owen_2012_mass_loss_timescale(struct disc_t * disc, - struct binary_system_t * binary, - double R); -double disc_Owen_2012_clearing_radius(struct disc_t * disc, - struct binary_system_t * binary); - - + const struct binary_system_t * binary, + const double R); double disc_Owen_2012_sigmadot_integral(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout); + const struct binary_system_t * binary, + const double Rin, + const double Rout); void disc_Owen_2012_normalize(struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); double disc_Owen_2012_mdot(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout); + const struct binary_system_t * binary, + const double Rin, + const double Rout); double disc_Owen_2012_angmom_integral(struct disc_t * disc, - struct binary_system_t * binary, - double Rin, - double Rout); + const struct binary_system_t * binary, + const double Rin, + const double Rout); void disc_show_thermal_zones(struct disc_t * disc, - struct disc_thermal_zone_t * zones, + const struct disc_thermal_zone_t * zones, const int n); void disc_show_disc(struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); double Rcross(const struct disc_thermal_zone_t * z1, - const struct disc_thermal_zone_t * z2); -Boolean disc_determine_zone_radii(struct disc_t * disc, - struct binary_system_t * binary); + const struct disc_thermal_zone_t * z2); +Boolean disc_determine_zone_radii(struct disc_t * disc); + int disc_build_disc_zones(struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); -void disc_initial_radiative_guesses(struct binary_system_t * binary, +void disc_initial_radiative_guesses(const struct binary_system_t * binary, struct disc_t * disc); double disc_ring_radius(struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); void disc_make_derived_powerlaws(struct disc_t * disc, - struct binary_system_t * binary); + const struct binary_system_t * binary); Boolean disc_new_zone_list(struct disc_t * disc, - struct binary_system_t * binary, - struct disc_thermal_zone_t * thermal_zones); + const struct binary_system_t * binary, + struct disc_thermal_zone_t * thermal_zones); -void check_power_laws(struct disc_t * d,Boolean output); +void disc_check_power_laws(const struct disc_t * d, + const Boolean output); void disc_extend_powerlaw_from_reference_point(struct disc_t * disc, - const int ilaw, - const double Rref, - const double Aref, - const double ref_exponent); + const int ilaw, + const double Rref, + const double Aref, + const double ref_exponent); double disc_J_bisector(const double Rout, void * p); @@ -229,46 +254,83 @@ double disc_M_bisector(const double Tvisc0, void * p); -int disc_calc_disc_structure(struct binary_system_t * binary, - struct disc_t * disc, - struct stardata_t * stardata, - const double t); +int disc_calc_disc_structure(const struct binary_system_t * binary, + struct disc_t * disc, + struct stardata_t * stardata, + const double t, + const double ddt); void disc_initial_structure(struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, struct stardata_t * stardata, - double t, - Boolean first, + const double t, + const Boolean first, Boolean * can_evolve); void disc_apply_derivatives(struct disc_t * disc, + const struct binary_system_t * binary, struct stardata_t * stardata, - double ddt, + const double ddt, Boolean * can_evolve); void disc_derivatives(struct disc_t * disc, - struct binary_system_t * binary, + const struct binary_system_t * binary, struct stardata_t * stardata, - const double dt, - const double multiplier); - + const double multiplier, + const Boolean edges); -void disc_trisector(const double Tvisc0, - const double Rin, - const double Rout, +void disc_trisector(double Tvisc0, + double Rin, + double Rout, double *xx, void * p); -void disc_trisector2(struct disc_t * disc, - struct binary_system_t * binary, +void disc_trisector2(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, double *xx); -void disc_convergence_status(char * s, - struct disc_t * disc, - struct binary_system_t * binary); +void disc_quadsector2(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + double *residual); + +void disc_quadsector(double Tvisc0, + double Rin, + double Rout, + double torquef, + double *residual, + void * p); + +void disc_nsector2(struct stardata_t * stardata, + struct disc_t * disc, + struct binary_system_t * binary, + const int n, + const disc_constraint * constraints, + double * residual, + int * failed); + +void disc_nsector(const int n, + const double * parameter_value, + double * residual, + void * p); + +void disc_convergence_status(const char * s, + const struct disc_t * disc, + const struct binary_system_t * binary); + +double disc_Owen_2012_clearing_radius(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary); -double disc_Owen_2012_clearing_radius2(struct disc_t * disc, - struct binary_system_t * binary); + + +void disc_Owen_2012_clearing_radii(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + double * R_clear_in, + double * R_clear_out); + void disc_initialize_every_timestep(struct stardata_t * stardata); @@ -281,9 +343,152 @@ void disc_stellar_wind_to_cbdisc(struct stardata_t * stardata); void disc_parameter_space(struct stardata_t * stardata, struct disc_t * disc); +double disc_viscous_mass(struct disc_t * disc, + const struct binary_system_t * binary, + const double dt); -#endif // DISCS +double disc_calc_natural_timescale(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + const double dt, + int * why); + +void disc_natural_timescales(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + const double dt); + +void disc_set_disc_timestep(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + const double dt); +char * disc_failure_mode(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + const int status); +double disc_outer_edge_mass_loss(struct stardata_t * stardata, + struct disc_t * newdisc, + struct disc_t * olddisc, + const struct binary_system_t * binary); +double disc_inner_edge_mass_loss(struct stardata_t * stardata, + struct disc_t * newdisc, + struct disc_t * olddisc, + const struct binary_system_t * binary); +void disc_edge_stripping(struct stardata_t * stardata, + struct disc_t * newdisc, + struct disc_t * olddisc, + const struct binary_system_t * binary); + +void disc_calculate_derived_variables(struct disc_t * disc, + const struct binary_system_t * binary); + +void disc_edge_loss_angular_momentum_flux(struct disc_t * disc, + const struct binary_system_t * binary); +void disc_mass_changes(struct stardata_t * stardata, + struct disc_t * newdisc, + struct disc_t * olddisc, + const struct binary_system_t * binary, + const double multiplier, + const double ddt); + +Boolean disc_rezone(struct disc_t * disc, + const struct binary_system_t * binary); + +void disc_setup_zones(struct disc_t * disc, + const struct binary_system_t * binary); + +void disc_set_temperature_power_laws(struct disc_t * disc); + +int disc_bisection_rooter(const int i, + const disc_parameter * parameters, + const disc_constraint * constraints, + struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + Boolean * return_failed); + +int old_disc_bisection_rooter(const int i, + const disc_parameter * parameters, + const disc_constraint * constraints, + struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + Boolean * return_failed); + +Boolean check_local_minimum(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary); + + +int disc_setup_convergence_parameter_types_and_constraints(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + disc_parameter ** parameter_types_p, + disc_constraint ** constraints_p); + +void disc_set_disc_initial_guesses(const int n, + const disc_parameter * parameter_types, + double initial_guesses[DISC_SOLVER_NINITIAL_GUESSES][n], + struct stardata_t * stardata, + struct disc_t * disc, + struct disc_t * discwas, + const struct binary_system_t * binary, + const double Rring + ); + +void disc_set_disc_initial_guess(struct disc_t * disc, + const int iguess, + const int n, + const disc_parameter * parameter_types, + double initial_guesses[DISC_SOLVER_NINITIAL_GUESSES][n]); + +void disc_set_monte_carlo_guess(struct stardata_t * stardata, + const disc_parameter * parameter_types, + struct disc_t * disc, + const int n, + double * guess); + +void disc_free_convergence_parameter_types_and_constraints(disc_parameter ** parameter_types_p, + disc_constraint ** constraints_p); + + + + +double disc_inner_edge_loss_timescale(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary); +double disc_outer_edge_loss_timescale(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary); +double disc_generic_stripping_timescale(struct disc_t * disc, + const struct binary_system_t * binary, + const double radius, + const int algorithm); + +void disc_show_MJ_space(struct disc_t * disc, + struct binary_system_t * binary, + struct stardata_t * stardata); + + +#ifdef DISC_EQUATION_CHECKS +void disc_check_equations_everywhere(struct disc_t * disc, + const struct binary_system_t * binary); +void disc_equation_checker(const double r, + struct disc_t * disc, + const struct binary_system_t * binary, + double * model, + double * star); +#endif // DISC_EQUATION_CHECKS + +int disc_n_valid_zones(struct disc_t * disc); + +void disc_zone_crossing_radii(struct disc_t * disc, + const struct binary_system_t * binary, + double * r1, + double * r2); + +#endif // DISCS #endif // DISC_PROTOTYPES_H diff --git a/src/disc/disc_quadsector.c b/src/disc/disc_quadsector.c new file mode 100644 index 0000000000000000000000000000000000000000..bb969de31d9b33d3542652d257f620da0615c98e --- /dev/null +++ b/src/disc/disc_quadsector.c @@ -0,0 +1,149 @@ +#include "../binary_c.h" + +#ifdef DISCS +/* + * Function to be minimized by GSL routines + * such that we form a disc. + * + * The four constraints are M, J, F and torquef, + * the mass, angular momentum, angular momentum flux, + * and multiplier on the binary torque respectively. + */ + +void disc_quadsector(double Tvisc0, + double Rin, + double Rout, + double torquef, + double *xx, + void * p) +{ + Map_GSL_params(p,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(const struct binary_system_t *,binary,args); + Map_varg(struct stardata_t *,stardata,args); + va_end(args); + + /* check for nans */ + if(isnan(Tvisc0)!=0 || + isnan(Rin)!=0 || + isnan(Rout)!=0 || + isnan(torquef)!=0 || + /* and torquef must be positive */ + torquef < 0.0) + { + printf("\nQuadsector >>> NAN <<< Rin = %g (%d), Rout = %g (%d), Tvisc0 = %g (%d), torquef = %g -> xx = -1 (fail)\n", + disc->Rin,isnan(disc->Rin), + disc->Rout,isnan(disc->Rout), + disc->Tvisc0,isnan(disc->Tvisc0), + torquef + ); + Discdebug(2, + "Quadsector: Found NAN : Rin=%g Rout=%g Tvisc0=%g torquef=%g\n", + Rin, + Rout, + Tvisc0, + torquef + ); + xx[0] = xx[1] = xx[2] = xx[3] = -1.0; + } + else if(Rin > Rout) + { + Discdebug(2, + "Quadsector: Rin > Rout fail : Rin = %g Rout = %g Tvisc0 = %g\n", + Rin, + Rout, + Tvisc0); + xx[0] = xx[1] = xx[2] = xx[3] = -1.0; + } + else + { + /* + * No nans : all (probably) ok + */ + disc->Tvisc0 = Tvisc0; + disc->Rin = MAX(1e-10,Rin); + disc->Rout = MAX(Rin,Rout); + disc->torqueF = torquef; + + Discdebug(2, + "Quadsect Rin=%g Rout=%g Tvisc0=%g Torquef=%g (disc=%p binary=%p)\n", + Rin, + Rout, + Tvisc0, + torquef, + disc, + binary); + + disc_quadsector2(stardata, + disc, + binary, + xx); + } +} + + + +void disc_quadsector2(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + double * xx) +{ + /* + * Function that does the work. This may be + * called from elsewhere for debugging purposes, + * so is not a static function. + */ + + int status = disc_build_disc_zones(disc,binary); + + Discdebug(2, + "Quadsector: Built disc zones: %s : Rin=%g Rout=%g\n", + status==DISC_ZONES_OK ? "ok" : "failed", + disc->Rin, + disc->Rout); + + if(status==DISC_ZONES_OK) + { + double M = disc_total_mass(disc); + double J = disc_total_angular_momentum(disc,binary); + double F = disc_total_angular_momentum_flux_from_binary(disc,binary); + + Discdebug(2, + "Quadsector : Rin = %g, Rout = %g Rsun, Tvisc0 = %g, torquef = %g : M=%30.20e (want %30.20g) J=%30.20e (want %30.20g) F = %30.20e (want %30.20g) Rin = %g (want Rin_min = %g)\n", + disc->Rin/R_SUN, + disc->Rout/R_SUN, + disc->Tvisc0, + disc->torqueF, + M/M_SUN,disc->M/M_SUN, + J,disc->J, + F,disc->F, + disc->Rin, disc->Rin_min + ); + + xx[0] = M/disc->M - 1.0; + xx[1] = J/disc->J - 1.0; + xx[2] = fabs(F/disc->F) - 1.0; + xx[3] = disc->Rin / disc->Rin_min - 1.0; + + Discdebug(2, + "Quadsector : M %g/%g-1 = %g : J %g/%g - 1 = %g : F %g/%g -1 = %g : Rin %g/%g - 1 = %g\n", + M, + disc->M, + xx[0], + J, + disc->J, + xx[1], + F, + disc->F, + xx[2], + disc->Rin, + disc->Rin_min, + xx[3]); + } + else + { + xx[0] = xx[1] = xx[2] = xx[3] = -1.0; + } +} + +#endif // DISCS diff --git a/src/disc/disc_rezone.c b/src/disc/disc_rezone.c new file mode 100644 index 0000000000000000000000000000000000000000..5e889da4b01cd1226cb78ce5af9639bec7a500ae --- /dev/null +++ b/src/disc/disc_rezone.c @@ -0,0 +1,191 @@ +#include "../binary_c.h" + +#ifdef DISCS + +//#define REZONE_DEBUG + +#ifdef REZONE_DEBUG +#define Rezone_debug(...) \ + printf("REZONE : "); \ + printf(__VA_ARGS__); \ + fflush(stdout); +#else +#define Rezone_debug(...) /**/ +#endif // REZONE_DEBUG + +Boolean disc_rezone(struct disc_t * disc, + const struct binary_system_t * binary) +{ + Boolean ret; + /* + * If Rin and/or Rout have changed, update + * the thermal zones to match + */ + if(Disc_is_disc(disc)) + { + + Rezone_debug("start with %d zones\n", + disc->n_thermal_zones); + + /* + * Trim zones + */ + Disc_zone_counter i; + Boolean change = FALSE; + struct disc_thermal_zone_t * zone; + Disczoneloop(disc,i) + { + zone = &disc->thermal_zones[i]; + + if(disc->Rin > zone->rstart) + { +#ifdef REZONE_DEBUG + double dmzone = disc_partial_mass(disc,zone->rstart,disc->Rin); +#endif + Rezone_debug("zone %d starts inside the disc : material between old rstart = %g Rsun and Rin = %g Rsun : dMzone = %g Msun\n", + i, + zone->rstart/R_SUN, + disc->Rin/R_SUN, + dmzone/M_SUN + ); + zone->rstart = disc->Rin; + change = TRUE; + } + + if(disc->Rout < zone->rend) + { +#ifdef REZONE_DEBUG + double dmzone = disc_partial_mass(disc,disc->Rout,zone->rend); +#endif + Rezone_debug("zone %d ends outside the disc : material between old rend = %g Rsun and Rout = %g Rsun : dMzone = %g Msun\n", + i, + disc->Rout/R_SUN, + zone->rend/R_SUN, + dmzone/M_SUN + ); + zone->rend = disc->Rout; + change = TRUE; + } + + Rezone_debug("zone %d/%d is between %g and %g Rsun and starts with A0 = %g, R0 = %g, exponent = %g\n", + i, + disc->n_thermal_zones, + zone->rstart/R_SUN, + zone->rend/R_SUN, + zone->Tlaw.A0, + zone->Tlaw.R0, + zone->Tlaw.exponent + ); + } + + if(change == TRUE) + { + /* + * Detect bad zones + */ + Disczoneloop(disc,i) + { + zone = &disc->thermal_zones[i]; + if(FEQUAL(zone->rstart/zone->rend, 1.0) || + zone->rend/disc->Rin < 1.0-TINY || + zone->rstart/disc->Rout > 1.0+TINY) + { + Rezone_debug("zone %d is invalid\n",i); + zone->valid = FALSE; + } + } + + /* + * Delete bad thermal zones + */ + Disczoneloop(disc,i) + { + if(disc->thermal_zones[i].valid == FALSE) + { + /* + * Zone is invalid, move all zones outward of this one inwards + */ + Rezone_debug("move zone %d to %d\n",i+1,i); + Copy_zone_n(disc,i+1,i); + disc->n_thermal_zones--; + } + } + + /* + * Update the innermost temperature power law + * to be correct at the new rstart + */ + Rezone_debug("set T power laws\n"); + zone = DISC_INNER_ZONE(disc); + zone->Tlaw.A0 = power_law(&zone->Tlaw, + zone->rstart); + zone->Tlaw.R0 = zone->rstart; + zone->Tlaw.R1 = zone->rend; + update_power_law(&zone->Tlaw,zone->Tlaw.A0,0); + Rezone_debug("T at Rin = %g = %g K, R0 = %g, R1 = %g Rsun, A0 = %g\n", + power_law(&zone->Tlaw, + zone->rstart), + disc_temperature(disc->Rin,disc), + zone->Tlaw.R0/R_SUN, + zone->Tlaw.R1/R_SUN, + zone->Tlaw.A0 + + ); + + /* + * Match temperature power laws in any + * further zones + */ + if(disc->n_thermal_zones>1) + { + for(i=1;i<disc->n_thermal_zones;i++) + { + zone = disc->thermal_zones + i; + match_power_laws(&(zone-1)->Tlaw, + &zone->Tlaw); + } + } + + if(disc->n_thermal_zones > 0) + { + Rezone_debug("make derived powerlaws for %d zones\n", + disc->n_thermal_zones+1); + disc_make_derived_powerlaws(disc,binary); +#ifdef POWER_LAW_SANITY_CHECKS + disc_check_power_laws(disc,FALSE); +#endif + } + +#ifdef REZONE_DEBUG + Disczoneloop(disc,i) + { + zone = &(disc->thermal_zones[i]); + Rezone_debug("zone %d is between %g and %g Rsun has A0 = %g, R0 = %g, exponent = %g, mass %g Msun\n", + i, + zone->rstart/R_SUN, + zone->rend/R_SUN, + zone->Tlaw.A0, + zone->Tlaw.R0, + zone->Tlaw.exponent, + disc_partial_mass(disc,zone->rstart,zone->rend)/M_SUN + ); + } +#endif + } + + Rezone_debug("have %d zones : return %d\n", + disc->n_thermal_zones, + disc->n_thermal_zones==0 ? FALSE : TRUE); + + ret = disc->n_thermal_zones==0 ? FALSE : TRUE; + } + else + { + Rezone_debug("disc != disc : return FALSE\n"); + + ret = FALSE; + } + return ret; +} + +#endif // DISCS diff --git a/src/disc/disc_set_disc_initial_guess.c b/src/disc/disc_set_disc_initial_guess.c new file mode 100644 index 0000000000000000000000000000000000000000..45331648a8365c4a0d60b8065fe6a93b59b69c79 --- /dev/null +++ b/src/disc/disc_set_disc_initial_guess.c @@ -0,0 +1,33 @@ +#include "../binary_c.h" + +#ifdef DISCS + +#include "disc_constraints.h" + +void disc_set_disc_initial_guess(struct disc_t * disc, + const int iguess, + const int n, + const disc_parameter * parameter_types, + double initial_guesses[DISC_SOLVER_NINITIAL_GUESSES][n]) +{ + /* + * Set intitial guess number iguess into the disc + */ + int i; + double unknown; + Discdebug(1, + "Set initial guess : solver = %s :: ", + Solver_string(disc->solver)); + for(i=0;i<n;i++) + { + Disc_parameter(disc,parameter_types[i]) = initial_guesses[iguess][i]; + Discdebug_plain(1, + " %s = %g %s", + Disc_parameter_string(parameter_types[i]), + Disc_parameter(disc,parameter_types[i]), + ((i==n-1) ? "" : ",")); + } + Discdebug_plain(1,"\n"); +} + +#endif // DISCS diff --git a/src/disc/disc_set_disc_initial_guesses.c b/src/disc/disc_set_disc_initial_guesses.c new file mode 100644 index 0000000000000000000000000000000000000000..eb8f7b7b5feb13943a09450d030cce94ae987ad0 --- /dev/null +++ b/src/disc/disc_set_disc_initial_guesses.c @@ -0,0 +1,109 @@ +#include "../binary_c.h" + +#ifdef DISCS + +#include "disc_constraints.h" + +void disc_set_disc_initial_guesses(const int n, + const disc_parameter * parameter_types, + double initial_guesses[DISC_SOLVER_NINITIAL_GUESSES][n], + struct stardata_t * stardata, + struct disc_t * disc, + struct disc_t * discwas, + const struct binary_system_t * binary, + const double Rring + ) +{ + /* + * Set the initial guesses for disc parameters prior to + * attempts to solve for the disc structure. + * + * This is important on the first timestep, but subsequently + * the convergence disc structure from the previous timestep + * will be used. + */ + Boolean have_previous_disc = IS_NOT_ZERO(discwas->Rin); + memset(initial_guesses, 0, + DISC_SOLVER_NINITIAL_GUESSES * n * sizeof(double)); + + int i; +#define Set_guess(N,TVISC,RIN,ROUT,TORQUEF) \ + if(0)printf("Set_guess : N=%d TVISC=%g RIN=%g ROUT=%g TORQUEF=%g\n", \ + N,TVISC,RIN,ROUT,TORQUEF); \ + for(i=0;i<n;i++) \ + { \ + initial_guesses[(N)][i] = \ + parameter_types[i] == DISC_PARAMETER_TVISC0 ? (TVISC) : \ + parameter_types[i] == DISC_PARAMETER_RIN ? (RIN) : \ + parameter_types[i] == DISC_PARAMETER_ROUT ? (ROUT) : \ + parameter_types[i] == DISC_PARAMETER_TORQUEF ? (TORQUEF) : \ + -1.0; \ + if(0)printf("Set guess element %d : parameter type %d %s : %g\n", \ + i, \ + parameter_types[i], \ + Disc_parameter_string(parameter_types[i]), \ + initial_guesses[(N)][i]); \ + } + + /* + * First guess is the previous disc, or all zero (hence ignored) + */ + if(have_previous_disc) + { + Set_guess(0, + discwas->Tvisc0, + discwas->Rin, + discwas->Rout, + discwas->torqueF); + } + + /* + * Second guess is based on Rring and the separation + */ + Set_guess(1, + 1e17, + Rring * 2.0, + MAX(Rring*20.0, + MIN(DBL_MAX*1e-30,binary->separation)*1e30), + stardata->preferences->cbdisc_torqueF + ); + + /* + * Very large parameter space + */ + Set_guess(2, + 1e-10, + 1.0, + MAX(Rring*10.0, + MIN(DBL_MAX*1e-10,binary->separation)*1e10), + stardata->preferences->cbdisc_torqueF + ); + + /* + * Third guess is a radiative disc + */ + if(have_previous_disc == FALSE) + { + disc->Rin = 2.0 * binary->separation; + disc->Rout = 1e3 * disc->Rin; + disc->Tvisc0 = 1e15; + } + disc_initial_radiative_guesses(binary,disc); + Set_guess(3, + disc->Tvisc0, + disc->Rin, + disc->Rout, + disc->torqueF); + + + /* + * Expanded ring + */ + Set_guess(4, + disc->Tvisc0, + 0.1 * Rring, + 100.0 * Rring, + disc->torqueF); + +} +#endif // DISCS diff --git a/src/disc/disc_set_disc_timestep.c b/src/disc/disc_set_disc_timestep.c new file mode 100644 index 0000000000000000000000000000000000000000..d4e98badde1b4971f20655cf32bee27d78417fd8 --- /dev/null +++ b/src/disc/disc_set_disc_timestep.c @@ -0,0 +1,65 @@ +#include "../binary_c.h" +#ifdef DISCS + +void disc_set_disc_timestep(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + const double dt) +{ + /* + * We have a converged structure from the previous + * step. This means we can estimate timescales for changes + * to disc properties. + */ + int why; + double dt_natural = disc_calc_natural_timescale(stardata, + disc, + binary, + dt, + &why); + double dtwas = disc->dt; + + /* + * Hence the disc timestep + */ + disc->dt = dt_natural * stardata->preferences->disc_timestep_factor; + + if(disc->dt < DISC_MIN_TIMESTEP) + { + disc->dt = DISC_MIN_TIMESTEP; + why = DISC_TIMESTEP_LIMIT_MIN; + } + else if(disc->dt > DISC_MAX_TIMESTEP) + { + disc->dt = DISC_MAX_TIMESTEP; + why = DISC_TIMESTEP_LIMIT_MAX; + } + + /* + * Don't let the timestep increase too fast + */ + if(disc->dt > dtwas * DISC_TIMESTEP_HIGH_FACTOR) + { + disc->dt = dtwas * DISC_TIMESTEP_HIGH_FACTOR; + } + + Discdebug(1, + "Set disc dt = %g y because %s (was %g, (fac=%g)*(natural=%g y), min %g, max %g) (natural timestep %g y, disc t = %g, M = %g, binary sep = %g Rsun, RLOF? %d : binary_c dt = %g y)\n", + disc->dt/YEAR_LENGTH_IN_SECONDS, + Disc_timestep_limit_string(why), + dtwas/YEAR_LENGTH_IN_SECONDS, + stardata->preferences->disc_timestep_factor, + dt_natural/YEAR_LENGTH_IN_SECONDS, + DISC_MIN_TIMESTEP/YEAR_LENGTH_IN_SECONDS, + DISC_MAX_TIMESTEP/YEAR_LENGTH_IN_SECONDS, + dt_natural/YEAR_LENGTH_IN_SECONDS, + disc->lifetime / YEAR_LENGTH_IN_SECONDS, + disc->M / M_SUN, + binary->separation/R_SUN, + binary->RLOF, + stardata->model.dtm * 1e6); + +} + + +#endif//DISCS diff --git a/src/disc/disc_set_monte_carlo_guess.c b/src/disc/disc_set_monte_carlo_guess.c new file mode 100644 index 0000000000000000000000000000000000000000..f2e3d056ee243fc8104cd1f17eeeb400ebe4e3de --- /dev/null +++ b/src/disc/disc_set_monte_carlo_guess.c @@ -0,0 +1,70 @@ +#include "../binary_c.h" + +#ifdef DISCS + +#include "disc_constraints.h" + +/* + * Set an initial guess for the disc parameters using a Monte Carlo + * procedure. + */ + +void disc_set_monte_carlo_guess(struct stardata_t * stardata, + const disc_parameter * parameter_types, + struct disc_t * disc, + const int n, + double * guess) +{ + int i,iRin=-1,iRout=-1; + for(i=0;i<n;i++) + { + const int param = parameter_types[i]; + +#ifdef DISC_MONTE_CARLO_GUESSES_USE_LOG +#define __Log(X) (log(X)) +#define __Raise(X) (exp(X)) +#else +#define __Log(X) (X) +#define __Raise(X) (X) +#endif // DISC_MONTE_CARLO_GUESSES_USE_LOG + + const double min = + __Log(Disc_parameter_min(disc,param)); + const double max = + MAX(min,__Log(Disc_parameter_max(disc,param))); + //printf("MC%d : min = %g, max = %g\n",i,min,max); + guess[i] = + __Raise(min + (max - min) * random_number(stardata,NULL)); + + if(param == DISC_PARAMETER_RIN) + { + iRin = i; + } + else if(param == DISC_PARAMETER_ROUT) + { + iRout = i; + } + } + + /* + * If Rin > Rout, swap them + */ + if(iRin>=0 && + iRout>=0 && + guess[iRin] > guess[iRout]) + { + SWAP(guess[iRin],guess[iRout]); + } + + /* + int ip; + printf("INMC : "); + for(ip=0;ip<n;ip++) + { + printf("%g ",guess[ip]); + } + printf("\n"); + */ +} + +#endif // DISCS diff --git a/src/disc/disc_set_temperature_power_laws.c b/src/disc/disc_set_temperature_power_laws.c new file mode 100644 index 0000000000000000000000000000000000000000..e25f92b8c9626cdecc630a94645f05ac52b935e8 --- /dev/null +++ b/src/disc/disc_set_temperature_power_laws.c @@ -0,0 +1,53 @@ +#include "../binary_c.h" + + +#ifdef DISCS + +/* + * Function to set up the temperature power laws. + * + * This is called by disc_determine_zone_radii, when making a new + * disc structure, and by disc_rezone when the disc is stripped at its + * outer or inner edge which may change the zone boundaries. + */ + +void disc_set_temperature_power_laws(struct disc_t * disc) +{ + + /* + * Enter appropriate radii into the temperature power law + */ + Disc_zone_counter i; + Disczoneloop(disc,i) + { + struct disc_thermal_zone_t * z = &disc->thermal_zones[i]; + struct power_law_t * pl = &z->Tlaw; + pl->R0 = z->rstart; + pl->R1 = z->rend; + } + + /* + * Set the inner temperature power law temperature at + * R0, T0, and hence T1 at R1 + */ + { + struct power_law_t * pl = &disc->thermal_zones[0].Tlaw; + double Tin = pl->A0 * pow(pl->R0,pl->exponent); + update_power_law(pl,Tin,0); + } + + /* + * And match the temperatures at zone boundaries such that + * the temperature power law is continuous + */ + if(disc->n_thermal_zones>1) + { + for(i=1;i<disc->n_thermal_zones;i++) + { + match_power_laws(&disc->thermal_zones[i-1].Tlaw, + &disc->thermal_zones[i].Tlaw); + } + } +} + +#endif // DISCS diff --git a/src/disc/disc_setup_convergence_parameter_types_and_constraints.c b/src/disc/disc_setup_convergence_parameter_types_and_constraints.c new file mode 100644 index 0000000000000000000000000000000000000000..cbf199dbf8de532f800e26301ed819f6b65b9616 --- /dev/null +++ b/src/disc/disc_setup_convergence_parameter_types_and_constraints.c @@ -0,0 +1,119 @@ +#include "../binary_c.h" + +#ifdef DISCS + +#include "disc_constraints.h" +#include "disc_boundary_conditions.h" + +/* + * Macro to set up of parameter_types, constraints and boundary + * conditions, and update the _p pointers + */ +#define Add_constraint(N,PARAMETER,CONSTRAINT) \ + { \ + Discdebug(2, \ + "Add constraint %d : %d = %s, parameter %d = %s : constraints = %p, parameter_types = %p\n", \ + (N), \ + (CONSTRAINT), \ + Disc_constraint_string(CONSTRAINT), \ + (PARAMETER), \ + Disc_parameter_string(PARAMETER), \ + constraints, \ + parameter_types); \ + parameter_types = REALLOC(parameter_types, \ + sizeof(disc_parameter) * ((N)+1)); \ + constraints = REALLOC(constraints, \ + sizeof(disc_constraint) * ((N)+1)); \ + parameter_types[(N)] = (PARAMETER); \ + constraints[(N)] = (CONSTRAINT); \ + *parameter_types_p = parameter_types; \ + *constraints_p = constraints; \ + (N)++; \ + } + + + +int disc_setup_convergence_parameter_types_and_constraints(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + disc_parameter ** parameter_types_p, + disc_constraint ** constraints_p) +{ + int n = 0; + + /* + * Given the nature of the disc set boundary conditions + * and constraints. + * + * Returns the number of constraints, n, which is the same + * as the number of parameter_types. + */ + + /* + * Pointers to the constraints and parameter_types. + * These start NULL and calls to REALLOC populate them. + */ + disc_constraint * constraints = NULL; + disc_parameter * parameter_types = NULL; + + /* + * Mass must always be conserved + */ + Add_constraint(n, + DISC_PARAMETER_TVISC0, + DISC_CONSTRAINT_M_TO_DISC_M); + Discdebug(2,"CONSTRAINT: M always constrained by disc->M\n"); + + /* + * Choose inner boundary condition + */ + disc_boundary_condition inner_bc MAYBE_UNUSED; + if(IS_NOT_ZERO(disc->Revap_in)) + { + inner_bc = DISC_BOUNDARY_CONDITION_INNER_REVAP_IN; + /* + * Rin is just specified : we have no parameter + */ + Discdebug(2,"CONSTRAINT: Rin specified\n"); + } + else + { + Discdebug(2,"CONSTRAINT: Rin constrained, add F boundary condition\n"); + inner_bc = DISC_BOUNDARY_CONDITION_INNER_BINARY_TORQUE; + Add_constraint(n, + DISC_PARAMETER_RIN, + DISC_CONSTRAINT_F_TO_DISC_F); + } + + /* + * Choose outer boundary condition + */ + disc_boundary_condition outer_bc MAYBE_UNUSED; + if(IS_NOT_ZERO(disc->Revap_out)) + { + /* + * Rout is just specified: we have no parameter + */ + outer_bc = DISC_BOUNDARY_CONDITION_OUTER_REVAP_OUTER; + Discdebug(2, + "CONSTRAINT: Rout specified by Revap_out (=%g Rsun)\n", + disc->Revap_out/R_SUN); + } + else + { + Discdebug(2,"CONSTRAINT: Rout constrained, add J boundary condition\n"); + Add_constraint(n, + DISC_PARAMETER_ROUT, + DISC_CONSTRAINT_J_TO_DISC_J); + } + + + /* todo : implement disc torque if we need to adapt this */ + + + Discdebug(1,"Made n = %d constraints/parmeters\n",n); + + /* return number of constraints/parameter_types */ + return n; +} +#endif //DISCS diff --git a/src/disc/disc_setup_zones.c b/src/disc/disc_setup_zones.c new file mode 100644 index 0000000000000000000000000000000000000000..c5cc61f958a0cba0048eb541ea827defc8f433c2 --- /dev/null +++ b/src/disc/disc_setup_zones.c @@ -0,0 +1,21 @@ +#include "../binary_c.h" + +#ifdef DISCS +void disc_setup_zones(struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * set the zone radii, + * derive the various power laws in the disc, + * perhaps check them for consistency. + */ + if(disc_determine_zone_radii(disc) == TRUE) + { + disc_make_derived_powerlaws(disc,binary); + +#ifdef POWER_LAW_SANITY_CHECKS + check_power_laws(disc,FALSE); +#endif + } +} +#endif // DISCS diff --git a/src/disc/disc_show_disc.c b/src/disc/disc_show_disc.c index 95bc72ba815537c06c028048ca2618c4fb9d3ec2..35d19d9cb7c7ae6d16047fc6d173ffd5e1aa8555 100644 --- a/src/disc/disc_show_disc.c +++ b/src/disc/disc_show_disc.c @@ -2,7 +2,7 @@ #ifdef DISCS void disc_show_disc(struct disc_t * disc, - struct binary_system_t * binary) + const struct binary_system_t * binary) { printf("===========================================================\n"); printf("DISC %p at lifetime = %20.12g (%g 20.12y), M=%g (%g Msun), J=%g, F=%g, alpha=%g, gamma=%g, torqueF=%g, fuv=%g, kappa=%g, Rin=%g cm (%g Rsun %g AU), Rout=%g (%g Rsun %g AU), dt=%g, Tvisc0=%g, sigma0=%g, mu=%g, T(Rin)=%g; H(in)/R(in)=%g L=%g L_sun : solver %s guess %d\n", @@ -33,7 +33,7 @@ void disc_show_disc(struct disc_t * disc, disc_show_thermal_zones(disc,disc->thermal_zones,disc->n_thermal_zones); double _M = disc_total_mass(disc); double _J = disc_total_angular_momentum(disc,binary); - double _F = disc_total_angular_momentum_flux(disc,binary); + double _F = disc_total_angular_momentum_flux_from_binary(disc,binary); double _epsM = fabs(disc->M/MAX(_M,1e-100)-1.0); double _epsJ = fabs(disc->J/MAX(_J,1e-100)-1.0); double _epsF = fabs(disc->F/MAX(_F,1e-100)-1.0); diff --git a/src/disc/disc_show_thermal_zones.c b/src/disc/disc_show_thermal_zones.c index 0ee6bc7a32c9736a8527e7549dbe5edfe73928b1..6e9a15cb9dd98bb5f0ed70edfc42876074f4ba99 100644 --- a/src/disc/disc_show_thermal_zones.c +++ b/src/disc/disc_show_thermal_zones.c @@ -4,10 +4,8 @@ /* * show disc thermal zone structure */ -#include "disc.h" -#include "disc_adam.h" void disc_show_thermal_zones(struct disc_t * disc, - struct disc_thermal_zone_t * zones, + const struct disc_thermal_zone_t * zones, const int n) { const int max = n==-1 ? DISCS_MAX_N_ZONES : n; @@ -27,7 +25,7 @@ void disc_show_thermal_zones(struct disc_t * disc, for(i=0;i<max;i++) { - struct disc_thermal_zone_t * z = zones + i; + const struct disc_thermal_zone_t * z = zones + i; printf("Zone %d at %p :",i,z); fflush(stdout); printf("type %s : %s %s: ", @@ -43,7 +41,7 @@ void disc_show_thermal_zones(struct disc_t * disc, Boolean xxx=(i!=max-1 && (zones+i+1)->valid==TRUE); if(xxx==TRUE) { - printf("R transition=%5.3e ",i!=max-1 ? Rcross(z+i,z+i+1) : 0); + printf("R transition=%5.3e ",i!=max-1 ? (Rcross(z+i,z+i+1)/R_SUN) : 0); fflush(stdout); } else @@ -54,20 +52,24 @@ void disc_show_thermal_zones(struct disc_t * disc, printf(" %sstart=%g%s, %send=%g%s, %swidth=%g%s ", ASSERT_COLOUR(!(MORE_OR_EQUAL(z->rstart/disc->Rin,1.0) && LESS_OR_EQUAL(z->rstart/disc->Rout,1.0))), - z->rstart, + z->rstart/R_SUN, NORMAL_COLOUR(z), ASSERT_COLOUR(!(MORE_OR_EQUAL(z->rend/disc->Rin,1.0) && LESS_OR_EQUAL(z->rend/disc->Rout,1.0))), - z->rend, + z->rend/R_SUN, NORMAL_COLOUR(z), ASSERT_COLOUR(z->rstart >= z->rend), - z->rend - z->rstart, + (z->rend - z->rstart)/R_SUN, NORMAL_COLOUR(z) ); fflush(stdout); } - printf(": prefactor=%g exponent=%g%s Tstart=%g (from A0=%g R0=%g exponent=%g) T(Rin)=%g Sigma(Rin)=%g %s\n", + + double dmzone = disc_partial_mass(disc, + z->rstart, + z->rend); + printf(": prefactor=%g exponent=%g%s Tstart=%g (from A0=%g R0=%g Rsun exponent=%g) T(rstart)=%g Sigma(rstart)=%g [zone M=%20.10g Msun] %s\n", z->Tlaw.A0, z->Tlaw.exponent, CYAN, @@ -78,10 +80,11 @@ void disc_show_thermal_zones(struct disc_t * disc, // power law is set up properly power_law(&(z->Tlaw),z->rstart)), z->Tlaw.A0, - z->rstart, + z->rstart/R_SUN, z->Tlaw.exponent, - power_law(&z->Tlaw,disc->Rin), - power_law(&z->power_laws[POWER_LAW_SIGMA],disc->Rin), + power_law(&z->Tlaw,z->rstart), + power_law(&z->power_laws[POWER_LAW_SIGMA],z->rstart), + dmzone/M_SUN, COLOUR_RESET ); fflush(stdout); diff --git a/src/disc/disc_stellar_wind_to_cbdisc.c b/src/disc/disc_stellar_wind_to_cbdisc.c index e3aada8cf62cec73385f063ead19fe9a786986af..48d2df4c8c4ce30f28ee6f185d2d63a73e8763f9 100644 --- a/src/disc/disc_stellar_wind_to_cbdisc.c +++ b/src/disc/disc_stellar_wind_to_cbdisc.c @@ -1,5 +1,4 @@ #include "../binary_c.h" -#include "disc.h" #ifdef DISCS_CIRCUMBINARY_FROM_WIND void disc_stellar_wind_to_cbdisc(struct stardata_t * stardata) @@ -25,12 +24,13 @@ void disc_stellar_wind_to_cbdisc(struct stardata_t * stardata) star->derivative[DERIVATIVE_STELLAR_ANGMOM_WIND_GAIN]; } - printf("At %20.12g mdot_wind = %g\n", - stardata->model.time, - mdot_wind); if(mdot_wind < -TINY) { + printf("At %20.12g mdot_wind = %g\n", + stardata->model.time, + mdot_wind); + /* * Mass to be added (grams, positive number) */ @@ -102,7 +102,7 @@ void disc_stellar_wind_to_cbdisc(struct stardata_t * stardata) /* * Angular frequency in radians per year */ - double orbital_angular_frequency = TWOPI*PI/orbital_period_years; + double orbital_angular_frequency = TWOPI/orbital_period_years; /* * And in radians per second @@ -159,16 +159,17 @@ void disc_stellar_wind_to_cbdisc(struct stardata_t * stardata) { double hcb = dJ_disc / dM_disc; double hcb2 = omega_binary * POW2(RL2); - double Rinj = POW2(hcb) / (GRAVITATIONAL_CONSTANT * M_SUN * - (stardata->star[0].mass + stardata->star[1].mass)); - printf("Inject wind with ang mom = %g, h = %g, %g, inj rad %g cf L2 %g ratio %g : sep = %g\n", + double Rinj = POW2(hcb) / + (GRAVITATIONAL_CONSTANT * M_SUN * + (stardata->star[0].mass + stardata->star[1].mass)); + printf("Inject wind with ang mom = %g, h = %g (h_orb = %g), inj rad %g %s cf L2 %g %s ratio %g : sep = %g %s\n", dJ_disc, hcb, hcb2, - Rinj, - RL2, + Solar(Rinj,R), + Solar(RL2,R), RL2/Rinj, - stardata->common.separation * R_SUN); + Solar(stardata->common.separation,R)); } Boolean put_in_disc = @@ -210,8 +211,8 @@ void disc_stellar_wind_to_cbdisc(struct stardata_t * stardata) */ printf("first disc\n"); Set_logstring(LOG_DISC, - "0New CB disc: M=%g Msun J=%g (%g and %g %% of wind) ", - dM_disc/M_SUN, + "0New CB disc: M=%g %s J=%g (%g and %g %% of wind) ", + Solar(dM_disc,M), dJ_disc, stardata->preferences->wind_disc_mass_fraction, f_J); @@ -228,8 +229,9 @@ void disc_stellar_wind_to_cbdisc(struct stardata_t * stardata) stardata->star[1].Xenv, cbdisc->X); #endif - disc_initialize_disc(stardata,cbdisc); + disc_initialize_disc(stardata,cbdisc,NULL); } + /* * For the donor type, choose the star with * the strongest wind. Remember the net_mdot[...] @@ -240,15 +242,16 @@ void disc_stellar_wind_to_cbdisc(struct stardata_t * stardata) stardata->star[0].stellar_type : stardata->star[1].stellar_type; - printf("Add M=%g Msun, J=%g to the cbdisc (which had M=%g J=%g), donor type %d\n", - dM_disc/M_SUN, + printf("Add M=%g %s, J=%g to the cbdisc (which had M=%g %s J=%g), donor type %d\n", + Solar(dM_disc,M), dJ_disc, - cbdisc->M/M_SUN, + Solar(cbdisc->M,M), cbdisc->J, cbdisc->donor_stellar_type); cbdisc->M += dM_disc; cbdisc->J += dJ_disc; + printf("DISC M = %g J = %g\n", cbdisc->M, cbdisc->J); diff --git a/src/disc/disc_structure_functions.c b/src/disc/disc_structure_functions.c new file mode 100644 index 0000000000000000000000000000000000000000..db1bb201b26a84d821029bf3a392dc8dd605c899 --- /dev/null +++ b/src/disc/disc_structure_functions.c @@ -0,0 +1,864 @@ +#include "../binary_c.h" +#if defined DISCS +#include "disc_structure_functions.h" + +/* + * Disc structure functions, e.g. T(R), Sigma(R) etc. + */ + +double disc_temperature(const double radius, + struct disc_t * disc) +{ + /* + * Temperature as a function of radius (K). + * + * Memoize only 1 call back, because it's either + * going to be a repeated call at a given radius, or + * be different. + */ + return Memoize( + disc->memo, + "discT", + 1, + scalar, + double, + 1, + radius, + double, + 1, + MAX(0.0,generic_power_law(radius,disc,POWER_LAW_TEMPERATURE)) + ); +} + +double disc_inner_edge_temperature(const struct disc_t * disc) +{ + /* + * Temperature at the disc's inner edge (K) + */ + const struct disc_thermal_zone_t * zone = DISC_INNER_ZONE(disc); + return MAX(0.0,power_law(&(zone->Tlaw),zone->rstart)); +} + +double disc_outer_edge_temperature(const struct disc_t * disc) +{ + /* + * Temperature at the disc's outer edge (K) + */ + const struct disc_thermal_zone_t * zone = DISC_OUTER_ZONE(disc); + return MAX(0.0,power_law(&(zone->Tlaw),zone->rend)); +} + +double generic_power_law(double radius, + struct disc_t * RESTRICT disc, + const int n) +{ + /* + * Wrapper to acquire the value of a power law + * at some point in the disc. + * + * n is the power law number, or -1 for temperature + */ + const struct disc_thermal_zone_t * z; + + if(unlikely(radius) < 0.0) + { + /* + * if radius is negative, we seek only the nearest zone + */ + radius = - radius; + z = DISC_NEAREST_ZONE(radius,disc); + } + else + { + /* + * But by default, we seek a zone INSIDE the disc, + * i.e. there is some error checking. + */ + z = DISC_ZONE(radius,disc); + } + + return power_law(n==POWER_LAW_TEMPERATURE ? + (&z->Tlaw) : (z->power_laws+n), + radius); +} + + +double disc_column_density(const double radius, + struct disc_t * disc) +{ + /* + * Column density as a function of radius + * (g/cm^2) + */ + return generic_power_law(radius,disc,POWER_LAW_SIGMA); +} + +double disc_specific_angular_momentum(const double radius, + const struct binary_system_t * binary) +{ + /* + * Specific angular momentum as a function of radius (cm^2/s) + */ + return sqrt(GRAVITATIONAL_CONSTANT * binary->mtot * radius); +} + +double disc_injection_radius(const double h, + const struct binary_system_t * binary) +{ + /* + * Given specific angular momentum h, and a binary + * system, determine the radius at which material will be + * injected. + */ + return POW2(h)/(GRAVITATIONAL_CONSTANT * binary->mtot); +} + +double disc_orbital_frequency(const double radius, + const struct binary_system_t * binary) +{ + /* + * Orbital frequency as a function of radius (rad/s) + */ + return IS_ZERO(radius) ? 0.0 : (sqrt(GRAVITATIONAL_CONSTANT*binary->mtot/POW3(radius))); +} + +double disc_velocity(const double radius, + const struct binary_system_t * binary) +{ + /* + * Velocity as a function of radius + */ + return radius * disc_orbital_frequency(radius,binary); +} + + + +double disc_gravitational_pressure(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Gravitational pressure as a function of radius, + * neglecting the disc mass + */ + return IS_ZERO(radius) ? 0.0 : + (GRAVITATIONAL_CONSTANT * binary->mtot * + disc_column_density(radius,disc) / POW2(radius)); +} + +double disc_scale_height(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Disc scale height as a function of radius (cm) + */ + return sqrt(BOLTZMANN_CONSTANT * disc_temperature(radius,disc) * disc->gamma * POW3(radius)/ + (disc->mu * GRAVITATIONAL_CONSTANT * binary->mtot)); +} + +double disc_sound_speed(const double radius, + struct disc_t * disc) +{ + /* + * Sound speed as a function of radius (cm/s) + */ + return sqrt(disc->gamma * BOLTZMANN_CONSTANT * disc_temperature(radius,disc) / disc->mu); +} + +double disc_critical_surface_density_for_gravitational_collapse(const double radius, + struct disc_t * disc) +{ + /* + * Critical surface density for disc collapse + * by gravitational instability + */ + return disc_sound_speed(radius,disc) * disc_opacity(radius,disc)/ + (PI * GRAVITATIONAL_CONSTANT); +} + +double disc_Toomre_Q(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Return the Toomre Q value: + * Q>1 : stable + * Q<1 : unstable + * + * See e.g. + * Toomre, Astrophysical Journal, vol. 139, p. 1217-1238 (1964) + */ + const double Q = + disc_sound_speed(radius,disc) * disc_orbital_frequency(radius,binary) / + (PI * GRAVITATIONAL_CONSTANT * disc_column_density(radius,disc)); + return Q; +} + +static double Toomre_Q_minimizer(double x, + void * params); + +double disc_minimum_Toomre_Q(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Return the minimum Q in the disc + * + * First we sample the disc at n points to determine whether there + * is a bracketed minimum, then if there is we use the Brent + * algorithm to find the minimum. + */ + int status; + double minx; + const double minQ = generic_minimizer(&status, + 10, + TRUE, + 0.01, + &minx, + &Toomre_Q_minimizer, + disc->Rin, + disc->Rout, + disc, + binary); + + if(status!=0) + { + Discdebug(1,"Warning: generic_minimizer returned an error code %d\n",status); + } + + Discdebug(2, + "Toomre disc minimum Q : minQ(R=%g cm) = %g\n",minx,minQ); + + return minQ; +} + + +static double Toomre_Q_minimizer(double x, + void * p) +{ + Map_GSL_params(p,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(const struct binary_system_t *,binary,args); + va_end(args); + double Q = disc_Toomre_Q(x,disc,binary); + return Q; +} + +double disc_opacity(const double radius, + struct disc_t * disc) +{ + /* + * Opacity may vary with radius. + */ + + /* not yet! */ + return disc->kappa; +} + + +double disc_mass_inflow_rate(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Mass inflow rate Mdot = 3*pi*nu(R)*Sigma(R) + */ + return 3.0 * PI * + disc_kinematic_viscosity(radius,disc,binary) * + disc_column_density(radius,disc); +} + +double disc_density(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Density (g/cm^3) = Sigma / H + */ + const double H = disc_scale_height(radius,disc,binary); + return IS_ZERO(H) ? 0.0 : (disc_column_density(radius,disc) / H); +} + +double disc_pressure(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Pressure as a function of radius (erg/cm^3) + */ + return BOLTZMANN_CONSTANT * disc_temperature(radius,disc) * + disc_density(radius,disc,binary) / disc->mu; +} + +double disc_kinematic_viscosity(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Kinematic viscosity (nu(R)) as a function of radius + * (cm^2/s) + */ + const double cs = disc_sound_speed(radius,disc); + const double Omega = disc_orbital_frequency(radius,binary); + return disc->alpha * cs * cs / Omega; +} + +double disc_ring_radius(struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * If we were to put the whole disc in a ring, + * where would it be? + */ + return POW2(disc->J) / + (POW2(disc->M) * binary->mtot * GRAVITATIONAL_CONSTANT); +} + +double specific_torque_Armitage(const double radius, + const struct binary_system_t * binary) +{ + /* + * Central binary specific torque, erg/g, + * from Armitage and Natarajan (2002). + * + * radius is the distance from the centre of mass. + */ + return + POW2(binary->m1/binary->m2)* + GRAVITATIONAL_CONSTANT * binary->mtot * + POW4(binary->separation)/(2.0*POW5(radius)); +} + +double disc_binary_angular_momentum_flux(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Angular momentum flux through the disc + * caused by the binary torque + */ + return + 3.0 * PI * disc->alpha * disc->gamma * + BOLTZMANN_CONSTANT * disc->sigma0 / disc->mu + ; +} + +double disc_angular_momentum_flux(const double radius, + const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Angular momentum flux, F(radius). + * + * Note that there is (in theory) no radius dependence + * using our standard disc model, however it's useful + * to have the radius passed in so we can test the calculation + * by using an alternative procedure. + */ + const double F1 = disc_binary_angular_momentum_flux(disc,binary); + const double Fevap = F_STRIPPING_CORRECTION_FAC * disc->F_stripping_correction; + + /* + * Note that if angular momentum is being lost from the + * disc, we assume the disc recovers instantly such that + * F(R) includes this evaporation. + */ + const double F = F1 + Fevap; + + /* + if(0)printf("FFF Target F = 3pi (alpha=%g) (gamma=%g) kB (sigma0=%g) / (mu=%g) from Tvisc0 = %g, Fevap = %g -> F = %g (was disc->F = %g)\n", + + disc->alpha, + disc->gamma, + disc->sigma0, + disc->mu, + disc->Tvisc0, + Fevap, + F, + disc->F); + */ + + return F; + + /* alternative (but slower) + //const double H = disc_scale_height(radius,disc,binary); + const double Sigma = disc_column_density(radius,disc); + const double h = disc_specific_angular_momentum(radius,binary); + const double nu = disc_kinematic_viscosity(radius,disc,binary); + return 3.0 * PI * h * Sigma * nu; + */ +} + +double disc_viscous_timescale(const double radius, + struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Viscous timescale at a given radius + */ + return IS_ZERO(radius) ? 0.0 : + (POW2(radius)/(5.0 * disc_kinematic_viscosity(radius,disc,binary))); +} + +double disc_half_angular_momentum_radius(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Function to bisect on the half angular + * momentum radius. + */ + + double rjhalf = disc_angular_momentum_radius(disc,binary,disc->J*0.5); + + /* + * On error, return the previous value, which may be zero. + */ + if(IS_ZERO(rjhalf)) + { + rjhalf = MAX(disc->Rin,MIN(disc->Rout,disc->RJhalf)); + } + + Discdebug(2, + "RJHALF Bisect gave %g (was %g)\n", + rjhalf, + disc->RJhalf); + + return rjhalf; + +} + +double disc_angular_momentum_radius(const struct disc_t * disc, + const struct binary_system_t * binary, + const double j) +{ + /* + * Function to bisect on the half angular + * momentum radius. + * + * Returns 0.0 on error. + */ + double radius; + + if(IS_ZERO(j)) + { + /* + * No angular momentum inside r = 0 : should never happen + */ + radius = 0.0; + } + else if(MORE_OR_EQUAL(j, disc_total_angular_momentum(disc,binary))) + { + /* + * We want to be outside the disc : return Rout + */ + radius = disc->Rout; + } + else + { + int error; + const double r = generic_bisect(&error, + BISECT_USE_MONOCHECKS, + BISECTOR_DISC_RHALFJ, + &disc_angular_momentum_radius_bisector, + disc->Rout, + disc->Rin, + disc->Rout, + DISC_BISECT_RJ_TOLERANCE, + DISC_BISECT_RJ_ATTEMPTS, + DISC_BISECT_RJ_USELOG, + 1.0, + disc, + binary, + j); + + /* + * On error, return zero. + */ + if(unlikely(error)) + { + Discdebug(2, + "angmom->radius: error = %d = %s\n", + error, + gsl_strerror(error)); + } + radius = (error == BISECT_ERROR_NONE ? r : 0.0); + } + + return radius; +} + +double disc_half_mass_radius(const struct disc_t * disc, + const struct binary_system_t * binary) +{ + + /* + * Function to bisect on the half mass + * radius. + * + * Returns 0.0 on error. + */ + return disc_mass_radius(disc, + binary, + disc->M*0.5); +} + +double disc_mass_radius(const struct disc_t * disc, + const struct binary_system_t * binary, + const double m) +{ + /* + * Function to bisect on a particular mass co-ordinate + * and return its radius. + * + * Returns 0.0 on error, and we assume m=0 is an error also. + */ + double radius; + if(IS_ZERO(m)) + { + radius = 0.0; + } + else if(MORE_OR_EQUAL(m,disc_total_mass(disc))) + { + radius = disc->Rout; + } + else + { + int error; + const double r = generic_bisect( + &error, + BISECT_USE_MONOCHECKS, + BISECTOR_DISC_MASS_RADIUS, + &disc_mass_radius_bisector, + disc->Rout, + disc->Rin, + disc->Rout, + DISC_BISECT_RM_TOLERANCE, + DISC_BISECT_RM_ATTEMPTS, + DISC_BISECT_RM_USELOG, + 1.0, + disc, + binary, + m); + + /* + * On error, return 0.0 + */ + if(error) + { + printf( + "mass->radius: error = %d = %s, r = %g\n", + error, + gsl_strerror(error), + r); + } + + radius = (error == BISECT_ERROR_NONE ? r : 0.0); + } + + return radius; +} + +static double disc_angular_momentum_radius_bisector(const double r, + void *p) +{ + /* + * Bisect the half angular momentum radius + */ + Map_GSL_params(p,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); + Map_varg(const double,j,args); + va_end(args); + + const double low = disc_partial_angular_momentum(disc, + binary, + disc->Rin, + disc->Rin); + const double high = disc_partial_angular_momentum(disc, + binary, + disc->Rin, + disc->Rout); + + const double Jpart = MAX(0.0, + disc_partial_angular_momentum(disc, + binary, + disc->Rin, + r)); + const double f = Bisection_result(j,Jpart); + Discdebug(2, + "J->R bisector: At r = %g (Rin = %g : Rout = %g : in disc ? %d) : Jwant = %g, Jpart = %g, Jdisc=%g : return f = %g [bounds %g %g]\n", + r, + disc->Rin, + disc->Rout, + r>=disc->Rin && r<=disc->Rout, + j, + Jpart, + disc->J, + f, + low, + high + + ); + return f; +} + +static double disc_mass_radius_bisector(const double r, + void *p) +{ + /* + * Bisect for a given mass + */ + Map_GSL_params(p,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t * MAYBE_UNUSED, binary,args); + Map_varg(const double,m,args); + va_end(args); + + const double Mpart = disc_partial_mass(disc, + disc->Rin, + r); + const double f = Bisection_result(m,Mpart); + + Discdebug(1, + "M->R bisector: At r = %g (%g << %g : in disc ? %d ) : Mwant = %g, Mpart = %g, Mdisc=%g Msun : return f = %g\n", + r, + disc->Rin, + disc->Rout, + r>=disc->Rin && r<=disc->Rout, + m/M_SUN, + Mpart/M_SUN, + disc->M/M_SUN, + f); + return f; +} + + +double disc_pressure_radius(struct disc_t * disc, + const struct binary_system_t * binary, + const double P) +{ + /* + * Function to find the radius at which the pressure + * is P. + * + * Assumes pressure monotonically decreases outwards. + * + * Gives outer/inner edge radii if the P is + * less/greater than that at the outer/inner edge + * of the disc, respectively. + * + * Returns 0.0 on error. + */ + double radius; + const double P_at_Rin = disc_gravitational_pressure(disc->Rin,disc,binary); + const double P_at_Rout = disc_gravitational_pressure(disc->Rout,disc,binary); + Discdebug(2, + "Find P = %g radius between Pin(Rin=%g) = %g, Pout(Rout=%g) = %g\n", + P, + disc->Rin, + P_at_Rin, + disc->Rout, + disc_gravitational_pressure(disc->Rout,disc,binary)); + + if(LESS_OR_EQUAL(P,P_at_Rout)) + { + /* + * Wanted pressure is below that at the disc edge, + * so return the outer edge. + */ + radius = disc->Rout; + } + else if(MORE_OR_EQUAL(P,P_at_Rin)) + { + /* + * Wanted pressure exceeds that at the inner edge, + * so return the inner edge. + */ + radius = disc->Rin; + } + else + { + /* + * Bisect for the required pressure. + */ + int error; + const double r = generic_bisect(&error, + BISECT_USE_MONOCHECKS, + BISECTOR_DISC_PRESSURE_RADIUS, + &disc_pressure_radius_bisector, + disc->Rin, + disc->Rin, + disc->Rout, + DISC_PRESSURE_RADIUS_TOLERANCE, + DISC_PRESSURE_RADIUS_ATTEMPTS, + DISC_BISECT_PRESSURE_RADIUS_USELOG, + 1.0, + P, + disc, + binary); + radius = (error == BISECT_ERROR_NONE ? r : 0.0); + } + + return radius; +} + +static double disc_pressure_radius_bisector(const double r, + void * p) +{ + Map_GSL_params(p,args); + /* + * Bisect for the radius at which the pressure is Pwant + */ + Map_varg(double,Pwant,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); + va_end(args); + const double P = disc_gravitational_pressure(r,disc,binary); + /* + * P drops outwards, so use Bisection_result_inverse() + */ + return Bisection_result_inverse(Pwant,P); +} + +#ifdef DISC_EQUATION_CHECKS + +void disc_check_equations_everywhere(struct disc_t * disc, + const struct binary_system_t * binary) +{ + /* + * Call equation checkers throughout the disc + */ + if( + Disc_is_disc(disc) && + !FEQUAL(disc->Rin,disc->Rout) && + disc->Rin < disc->Rout && + disc_n_valid_zones(disc) > 0 + ) + { + const int n = 100; + disc->equations_T_error_pc = 0.0; + disc->equations_mass_loss_term_pc = 0.0; + double logr, dlogr = MAX(1e-10,(log10(disc->Rout) - log10(disc->Rin))/(1.0*n)); + if(IS_NOT_ZERO(dlogr)) + { + for(logr = log10(disc->Rin); + logr < log10(disc->Rout); + logr += dlogr) + { + const double r = pow(10.0,logr); + double modelT4,starT4; + disc_equation_checker(r,disc,binary,&modelT4,&starT4); + } + } + } +} + +int disc_n_valid_zones(struct disc_t * disc) +{ + /* + * Return the number of valid zones in the disc + */ + int n=0; + for(n=0;n<DISCS_MAX_N_ZONES;n++) + { + if(disc->thermal_zones[n].valid) + { + n++; + } + } + return n; +} + +void disc_equation_checker(const double r, + struct disc_t * disc, + const struct binary_system_t * binary, + double * model, + double * star) +{ + /* + * At radius r evaluate dL/dR from the star and from the disc model + */ + + /* + * star : Lstar = 4PI sigma R^2 T^4 + * + * hence + * + * dL/dR = 4PI sigma 2R T^4 + * + * because T is a constant. + * + * where sigma is the Stefan-Boltzmann constant + */ + *star = binary->L / (4.0 * PI * POW2(r) * STEFAN_BOLTZMANN_CONSTANT); + + /* + * Disc temperature as a function of radius + */ + double T_LHS = disc_temperature(r,disc); + + /* + * Evaluate T^4 RHS from disc model + */ + const double nu = disc_kinematic_viscosity(r,disc,binary); + const double Sigma = disc_column_density(r,disc); + const double omega = disc_orbital_frequency(r,binary); + const double eps = 1e-7; + const double rlow = r*(1.0-eps); + const double H = disc_scale_height(r,disc,binary); + const double Hlow = disc_scale_height(rlow,disc,binary); + const double dHdR = (H-Hlow) / (r - rlow); + const double dlnHdlnR = (r/H) * dHdR; + const double A = 27.0 * disc->kappa * nu * POW2(Sigma * omega) / (64.0 * STEFAN_BOLTZMANN_CONSTANT); + double mdot = 0.0; + if(1) + { + /* + * Use non-edge mass loss + */ + int i; + for(i=0;i<DISC_LOSS_N;i++) + { + if(!Disc_loss_from_edge(i)) + { + mdot += disc->loss[i].mdot; + } + } + } + const double B = GRAVITATIONAL_CONSTANT * binary->mtot * mdot / + (2.0 * PI * binary->separation * POW2(r) * STEFAN_BOLTZMANN_CONSTANT); + const double C = 2.0/(3.0*PI) * binary->flux * POW3(binary->Rstar / r) / STEFAN_BOLTZMANN_CONSTANT; + const double D = 3.0 * PI * H / (4.0 * binary->Rstar) * (dlnHdlnR - 1.0); + const double T4_RHS = A + 0.0*B + C * (1.0 + D); +#ifdef DISC_EQUATION_CHECKS_LOG + const double T4_LHS = POW4(T_LHS); +#endif // DISC_EQUATION_CHECKS_LOG + const double T_RHS = POW1d4(T4_RHS); + const double dT = T_LHS - T_RHS; + + /* save for logging */ + disc->equations_T_error_pc = MAX(disc->equations_T_error_pc, + fabs(dT/T_LHS)*100.0); + disc->equations_mass_loss_term_pc = MAX(disc->equations_mass_loss_term_pc, + fabs(B/(A+C*(1+D)))*100.0); + +#ifdef DISC_EQUATION_CHECKS_LOG + printf("EQN2 r=%12g T_LHS=%12g T^4(LHS) = %12g == (A=%12g) + (B=%12g) + (C=%12g) * (1 + (D=%12g)) = %12g :: T4 ratio %12g : dT = %12g : dT/T = %5.2f %% : B/(A+C*(1+D)) = %5.2f %%\n", + r, + T_LHS, + T4_LHS, + A, + B, + C, + D, + T4_RHS, + T4_LHS/T4_RHS, + dT, + disc->equations_T_error_pc, + disc->equations_mass_loss_term_pc + ); +#endif// DISC_EQUATION_CHECKS_LOG +} + +#endif // DISC_EQUATION_CHECKS + +#endif // DISCS diff --git a/src/disc/disc_structure_functions.h b/src/disc/disc_structure_functions.h new file mode 100644 index 0000000000000000000000000000000000000000..ae54a6f84f9f6027982e0497464edf3ba245ad00 --- /dev/null +++ b/src/disc/disc_structure_functions.h @@ -0,0 +1,18 @@ +#ifndef DISC_ADAM_STRUCTURE_H +#define DISC_ADAM_STRUCTURE_H + + +#include <gsl/gsl_errno.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_min.h> + + +static double disc_mass_radius_bisector(const double r, + void * p); +static double disc_pressure_radius_bisector(const double r, + void * p); +static double disc_angular_momentum_radius_bisector(const double r, + void *p); + + +#endif // DISC_ADAM_STRUCTURE_H diff --git a/src/disc/disc_testing.c b/src/disc/disc_testing.c index 4c53a008ca58b8db7d405bfca9921d7ddeffe051..f5473020820f2810ef98ce0052ebcb744f4909b7 100644 --- a/src/disc/disc_testing.c +++ b/src/disc/disc_testing.c @@ -134,7 +134,7 @@ void disc_testing(struct stardata_t * stardata) disc_status(stardata); printf("INITIALIZE DISC THERMAL STRUCTURE\n");fflush(stdout); - disc_initialize_disc(stardata,cbdisc); + disc_initialize_disc(stardata,cbdisc,NULL); printf("EVOLVE DISC THERMAL STRUCTURE\n");fflush(stdout); int i=0; diff --git a/src/disc/disc_adam.h b/src/disc/disc_thermal_zones.h similarity index 50% rename from src/disc/disc_adam.h rename to src/disc/disc_thermal_zones.h index 530d881bf6eab6cf4f2d12e7a24f09dca81df819..cdb9fdc3778122c4efa056fa5bfa14807868b8ee 100644 --- a/src/disc/disc_adam.h +++ b/src/disc/disc_thermal_zones.h @@ -1,193 +1,13 @@ -#ifndef DISC_ADAM_H -#define DISC_ADAM_H -#include <float.h> -#include "../binary_c_maths.h" -/* debugging */ -#define DEBUG_ALL 0 - -/* API testing */ -//#define TEST_POWER_LAW_API - -/* - * debugging flags - * 0 = no debugging output - * 1 = some debugging output - * 2 = full debugging output (less useful in most cases) - */ -#if defined DEBUG_ALL && DEBUG_ALL==1 -/* - * Force all debugging to be on - */ -#define DEBUG_FIRST_GUESSES 1 -#define DEBUG_ZONE_RADII 1 -#define DEBUG_BISECTION_LOOP 1 -#define DEBUG_MASS_BISECTOR 1 -#define DEBUG_ANGMOM_BISECTOR 1 -#define DEBUG_ANGMOM_FLUX_BISECTOR 1 -#define DEBUG_ZONE_LIST_CONSTRUCTION 1 -#define DEBUG_DERIVED_POWER_LAWS 1 -#define SHOW_VISCOUS_WARNING 1 -#define SHOW_CONVERGED_DISC_STRUCTURE 1 -#define TEST_ZONE_CONTINUITY 0 -#define DISC_NANS -#define DISC_DEBUG_MJE_CHANGES 1 -#else -/* - * You choose... - */ -#define DEBUG_FIRST_GUESSES 0 -#define DEBUG_ZONE_RADII 0 -#define DEBUG_BISECTION_LOOP 0 -#define DEBUG_MASS_BISECTOR 0 -#define DEBUG_ANGMOM_BISECTOR 0 -#define DEBUG_ANGMOM_FLUX_BISECTOR 0 -#define DEBUG_ZONE_LIST_CONSTRUCTION 0 -#define DEBUG_DERIVED_POWER_LAWS 0 -#define TEST_ZONE_CONTINUITY 0 -#define DISC_DEBUG_MJE_CHANGES 0 -#define SHOW_CONVERGED_DISC_STRUCTURE 0 -#undef DISC_NANS -#define SHOW_VISCOUS_WARNING 0 -#endif - -#ifndef SHOW_ZONE_LIST_POWER_LAWS -#define SHOW_ZONE_LIST_POWER_LAWS 0 -#endif -#ifndef SHOW_CONVERGED_DISC_STRUCTURE -#define SHOW_CONVERGED_DISC_STRUCTURE 0 -#endif -#ifndef SHOW_TEST_EXPRESSIONS -#define SHOW_TEST_EXPRESSIONS 0 -#endif - -//#undef DEBUG_ZONE_RADII -//#define DEBUG_ZONE_RADII 1 - -//#define POWER_LAW_SANITY_CHECKS - -//#define Discprint(...) -#define Discprint(...) printf(__VA_ARGS__); - -/* - * Define this to build possibly buggy code - */ -//#define BUILD_DUBIOUS_DISC_CODE - -//#define DISC_BUILD_DEPRECATED_CODE - - -/* - * Timestep change limiters - */ -#define DISC_TIMESTEP_LOW_FACTOR 0.8 -#define DISC_TIMESTEP_HIGH_FACTOR 1.2 - -/* - * A long time - */ -#define DISC_LONG_TIME (1e100) - -/* - * Bisection tolerances: - * typically 1e-5 is sufficient, 1e-4 sometimes fails, - * 1e-6 is probably safer. - */ - -#define DISC_TOLERANCE (1e-6) - -/* - * Mass bisection tolerance (1e-6) - */ -#define DISC_MASS_TOLERANCE (DISC_TOLERANCE) - -/* - * When Rout is not known, but the disc total angular momentum is, - * Rout is set with this tolerance on J (1e-6) - */ -#define DISC_ANGMOM_TOLERANCE (DISC_TOLERANCE) - -/* - * Angular momentum flux tolerance (1e-6) - */ -#define DISC_ANGMOM_FLUX_TOLERANCE (DISC_TOLERANCE) - -/* - * Hence the error at the disc edge: - * this should be greater than the above tolerances - */ -#define DISC_EDGE_EPS ( \ - 2.0*MAX3( \ - DISC_MASS_TOLERANCE, \ - DISC_ANGMOM_TOLERANCE, \ - DISC_ANGMOM_FLUX_TOLERANCE) \ - ) - -/* - * Disc pressure calculation tolerance (1e-8) - */ -#define DISC_PRESSURE_RADIUS_TOLERANCE 1e-8 - -/* - * Disc RhalfJ calculation tolerance (1e-8) - */ -#define DISC_RHALFJ_TOLERANCE 1e-8 +#pragma once +#ifndef DISC_THERMAL_ZONES_H +#define DISC_THERMAL_ZONES_H /* * Minimum width of a thermal zone (cm) + * Default 1cm. */ #define DISC_MINIMUM_THERMAL_ZONE_WIDTH 1.0 -/* - * If the disc < this width, it's a ring. Evaporate it. - */ -#define DISC_MINIMUM_WIDTH 1e5 - -/* - * Maximum number of attempts at bisection - */ -#define _DISC_BISECTION_MAX_ATTEMPTS 10000 - -#define DISC_BISECTION_MAX_ATTEMPTS (IS_ZERO(disc->lifetime) ? \ - (10 * _DISC_BISECTION_MAX_ATTEMPTS) \ - : _DISC_BISECTION_MAX_ATTEMPTS) - -/* - * Maximum number of iterations through the GSL root finder - */ -#define DISC_ROOT_FINDER_MAX_ATTEMPTS 1000 - -/* - * Bisector maxima - */ -#define DISC_LARGE_RADIUS (DBL_MAX*0.1) -#define DISC_LARGE_MASS (DBL_MAX*0.1) - -#define DISC_TVISC0_MIN (1e-50) -#define DISC_TVISC0_MAX (1e50) -#define DISC_ROUT_MIN (disc->Rin) -#define DISC_ROUT_MAX DISC_LARGE_RADIUS - -/* Rin is in cm : cannot be < BH size */ -#define DISC_RIN_MIN (2.95e5) -#define DISC_RIN_MAX (disc->Rout) - -/* - * Minimum disc mass, in Msun. - * Default: 1e-14 - */ -#define DISC_MINIMUM_DISC_MASS_MSUN 1e-20 - -/* - * Minimum disc F - */ -#define DISC_MINIMUM_DISC_F 1e-3 - -/* - * Number of shells in numerical integrals. - * Default: 100 - */ -#define DISC_ADAM_RESOLUTION 100 - /************************************************************ * Function macros ************************************************************/ @@ -196,7 +16,10 @@ * Given a radius, return the zone number */ //#define DISC_ZONE_N(R,D) ((D)->n_thermal_zones==1 ? 0 : (R) < (D)->thermal_zones[1].rstart ? 0 : 1) + +// was 2.38s #define DISC_ZONE_N(R,D) (disc_zone_n((R),(D))) + #define DISC_NEAREST_ZONE_N(R,D) (disc_nearest_zone_n((R),(D))) /* @@ -233,6 +56,8 @@ (Z)->type==DISCS_MAX_N_ZONES ? NULL \ : &((D)->thermal_zones[(Z)->type+1])) +#define Disczoneloop(D,I) for(i=0;i<(D)->n_thermal_zones;i++) + /* * Zone types, listed by innermost to outermost */ @@ -256,7 +81,7 @@ ( \ 27.0*disc->kappa*disc->alpha*disc->gamma* \ BOLTZMANN_CONSTANT*sqrt(GRAVITATIONAL_CONSTANT*binary->mtot)/ \ - (64.0*STEFAN_BOLTZMANN_CONSTANT*M_PROTON) \ + (64.0*STEFAN_BOLTZMANN_CONSTANT*disc->mu) \ ) #define Prefactor_viscous \ ( \ @@ -272,7 +97,7 @@ 1.0/7.0 * POW2(binary->Rstar) * \ (binary->flux/STEFAN_BOLTZMANN_CONSTANT) \ *sqrt(disc->gamma*BOLTZMANN_CONSTANT/ \ - (GRAVITATIONAL_CONSTANT*binary->mtot*M_PROTON)), \ + (GRAVITATIONAL_CONSTANT*binary->mtot*disc->mu)), \ 2.0/7.0) \ ) #define Exponent_radiative_out (-3.0/7.0) @@ -297,26 +122,22 @@ ) #define Exponent_radiative_in (-3.0/4.0) -/* - * Fix the orbit? - */ -//#define FIX_BINARY -/* - * Copy disc from source S to destination D - */ -#define Copy_disc(S,D) memcpy((D),(S),sizeof(struct disc_t)); + /* * Copy thermal zone from source Z1 to destination Z2 */ #define Copy_zone(Z1,Z2) memcpy((Z2),(Z1),sizeof(struct disc_thermal_zone_t)); -#define DISC_ZONES_FAILED 0 -#define DISC_ZONES_OK 1 -#define DISC_ZONES_NEW_ZONE_LIST_RIN_EQUALS_ROUT 2 -#define DISC_ZONES_NO_ZONES 3 -#define DISC_ZONES_RIN_EXCEEDS_ROUT 4 +/* + * Copy thermal zone N1 to N2 in disc D + */ + +#define Copy_zone_n(D,N1,N2) \ + Copy_zone(&((D)->thermal_zones[(N1)]), \ + &((D)->thermal_zones[(N2)])); + #define Disc_zone_status(A) ( \ (A)==DISC_ZONES_FAILED ? "Failed (generic)" : \ @@ -328,4 +149,5 @@ -#endif // DISC_ADAM_H + +#endif // DISC_THERMAL_ZONES_H diff --git a/src/disc/disc_trisector.c b/src/disc/disc_trisector.c index 9b3061d602ee81565081c44441da2de7f28b5795..967d818462a6d4ec63a88332888946ec0b600806 100644 --- a/src/disc/disc_trisector.c +++ b/src/disc/disc_trisector.c @@ -1,7 +1,6 @@ #include "../binary_c.h" #ifdef DISCS -#include "disc.h" /* * Function to be minimized by GSL routines @@ -16,83 +15,124 @@ * disc->F is set after the disc is built, * and then compared to an integral form. When * these agree, and M, J also converge, the disc - * is converged. + * is converged. */ - - -void disc_trisector(const double Tvisc0, - const double Rin, - const double Rout, - double *xx, +void disc_trisector(double Tvisc0, + double Rin, + double Rout, + double *residual, void * p) { Map_GSL_params(p,args); - struct disc_t * disc = va_arg(args, struct disc_t *); - struct binary_system_t * binary = va_arg(args,struct binary_system_t * ); + Map_varg(struct disc_t *,disc,args); + Map_varg(const struct binary_system_t *,binary,args); + Map_varg(struct stardata_t *,stardata,args); va_end(args); - disc->Tvisc0 = Tvisc0; - disc->Rin = Rin; - disc->Rout = Rout; + if(isnan(Tvisc0)!=0 || + isnan(Rin)!=0 || + isnan(Rout)!=0) + { + printf("Trisector: \n >>> NAN <<< Rin = %g (%d), Rout = %g (%d), Tvisc0 = %g (%d) -> residual = -1 (fail)\n", + disc->Rin,isnan(disc->Rin), + disc->Rout,isnan(disc->Rout), + disc->Tvisc0,isnan(disc->Tvisc0)); + Discdebug(2, + "Trisector: Found NAN : Rin=%g Rout=%g Tvisc0=%g\n", + Rin, + Rout, + Tvisc0); + residual[0] = -1.0; + residual[1] = -1.0; + residual[2] = -1.0; + } + else if(Rin > Rout) + { + Discdebug(2, + "Trisector: Rin > Rout fail : Rin = %g Rout = %g Tvisc0 = %g\n", + Rin, + Rout, + Tvisc0); + residual[0] = -1.0; + residual[1] = -1.0; + residual[2] = -1.0; + } + else + { + /* + * No nans : all ok + */ + disc->Tvisc0 = Tvisc0; + disc->Rin = MAX(1e-10,Rin); + disc->Rout = MAX(Rin,Rout); - Discdebug(2, - "Trisect Rin=%g Rout=%g Tvisc0=%g (disc=%p binary=%p)\n", - Rin, - Rout, - Tvisc0, - disc, - binary); + Discdebug(2, + "Trisect Rin=%g Rout=%g Tvisc0=%g (disc=%p binary=%p)\n", + Rin, + Rout, + Tvisc0, + disc, + binary); - disc_trisector2(disc, - binary, - xx); + disc_trisector2(stardata, + disc, + binary, + residual); + } } -void disc_trisector2(struct disc_t * disc, - struct binary_system_t * binary, - double *xx) +void disc_trisector2(struct stardata_t * stardata, + struct disc_t * disc, + const struct binary_system_t * binary, + double *residual) { /* * Function that does the work. This may be * called from elsewhere for debugging purposes, * so is not a static function. */ - int status = disc_build_disc_zones(disc,binary); Discdebug(2, - "Built disc zones: %s : Rin=%g Rout=%g\n", + "Trisector: Built disc zones: %s : Rin=%g Rout=%g Rsun\n", status==DISC_ZONES_OK ? "ok" : "failed", - disc->Rin, - disc->Rout); + disc->Rin/R_SUN, + disc->Rout/R_SUN); if(status==DISC_ZONES_OK) { - disc->F = disc_angular_momentum_flux(disc->Rout,disc,binary); double M = disc_total_mass(disc); double J = disc_total_angular_momentum(disc,binary); - double F = disc_total_angular_momentum_flux(disc,binary); + double F = disc_total_angular_momentum_flux_from_binary(disc,binary); Discdebug(2, - "Trisector : Rin = %g, Rout = %g Rsun, Tvisc0 = %g : M=%30.20e (want %g) J=%30.20e (want %g) F = %30.20e (want %g)\n", + "Trisector : Rin = %g, Rout = %g Rsun, Tvisc0 = %g : M=%30.20e (want %30.20g) J=%30.20e (want %30.20g) F = %30.20e (want %30.20g) zone 0 : R = %g - %g cm\n", disc->Rin/R_SUN, disc->Rout/R_SUN, disc->Tvisc0, - M,disc->M, + M/M_SUN,disc->M/M_SUN, J,disc->J, - F,disc->F + F,disc->F, + DISC_INNER_ZONE(disc)->rstart, + DISC_INNER_ZONE(disc)->rend ); - xx[0] = M/disc->M - 1.0; - xx[1] = J/disc->J - 1.0; - xx[2] = fabs(F/disc->F) - 1.0; + residual[0] = M/disc->M - 1.0; + residual[1] = J/disc->J - 1.0; + residual[2] = F/disc->F - 1.0; + + Discdebug(2, + "Trisector residual = %g, %g %g\n", + residual[0], + residual[1], + residual[2]); } else { - xx[0] = -1.0; - xx[1] = -1.0; - xx[2] = -1.0; + residual[0] = -1.0; + residual[1] = -1.0; + residual[2] = -1.0; } } diff --git a/src/disc/disc_viscous_mass.c b/src/disc/disc_viscous_mass.c new file mode 100644 index 0000000000000000000000000000000000000000..9abd20254a819c69f8aee42fb8bbcc89643c4c4e --- /dev/null +++ b/src/disc/disc_viscous_mass.c @@ -0,0 +1,71 @@ +#include "../binary_c.h" + +#ifdef DISCS + +#define tvisc(R) \ + (disc_viscous_timescale((R),disc,binary)) + +static double bisector(const double r, + void * p); + +double disc_viscous_mass(struct disc_t * disc, + const struct binary_system_t * binary, + const double dt) +{ + /* + * Return the mass of the disc which is viscously + * coupled more quickly than the current timestep + */ + int error; + printf("\n"); + double r = generic_bisect(&error, + BISECT_USE_MONOCHECKS, + BISECTOR_DISC_VISCOUS, + &bisector, + 0.5*(disc->Rout+disc->Rin), + disc->Rin, + disc->Rout, + DISC_TOLERANCE, + 1000, + DISC_BISECT_VISCOUS_USELOG, + 1.0, + disc, + binary, + dt); + + printf("\n\ndt = tvisc at r = %g (error %d %s)\n", + r, + error, + gsl_strerror(error) + + ); + Exit_binary_c_no_stardata(0,"Exit after disc viscous mass"); + return 0.0; +} + + +static double bisector(const double r, + void * p) +{ + /* + * Bisect the half angular momentum radius + */ + Map_GSL_params(p,args); + Map_varg(struct disc_t *,disc,args); + Map_varg(struct binary_system_t *,binary,args); + Map_varg(const double,dt,args); + va_end(args); + + double tv = tvisc(r); + double d = tv/dt - 1.0; + printf("\nat r = %g (%g << %g) : tv = %g cf dt = %g -> d = %g\n", + r / R_SUN, + disc->Rin / R_SUN, + disc->Rout / R_SUN, + tv / YEAR_LENGTH_IN_SECONDS, + dt / YEAR_LENGTH_IN_SECONDS, + d); + + return d; +} +#endif // DISCS diff --git a/src/disc/disc_zone_crossing_radii.c b/src/disc/disc_zone_crossing_radii.c new file mode 100644 index 0000000000000000000000000000000000000000..29b7f6c811f79a8b05ab01cc63b3a77b574c1574 --- /dev/null +++ b/src/disc/disc_zone_crossing_radii.c @@ -0,0 +1,22 @@ +#include "../binary_c.h" + +#ifdef DISCS + +void disc_zone_crossing_radii(struct disc_t * disc, + const struct binary_system_t * binary, + double * r1, + double * r2) +{ + /* + * Set r1,r2 to the zone crossing radii + */ + struct disc_thermal_zone_t W[DISCS_MAX_N_ZONES+1]; + disc_new_zone_list(disc,binary,W); + + *r1 = Rcross(W+0,W+1); // VR + *r2 = Rcross(W+1,W+2); // IO + + printf("r1 = %g, r2 = %g\n",*r1,*r2); +} + +#endif diff --git a/src/disc/disc_zone_n.c b/src/disc/disc_zone_n.c index eae74d57b88cb07f42b6af8a29dcd34f13ce6fa5..63de6565f48b7d95ccf38bf8debb645ab4283535 100644 --- a/src/disc/disc_zone_n.c +++ b/src/disc/disc_zone_n.c @@ -1,78 +1,202 @@ #include "../binary_c.h" #ifdef DISCS -#include "disc.h" -#include "disc_adam.h" -int disc_zone_n(double radius, - struct disc_t * disc) +Disc_zone_counter disc_zone_n(const double radius, + struct disc_t * disc) { - int i; - /* * Given a disc structure and a radial coordinate (radius) * find the corresponding zone. * - * Note: if the radius is within 1e-8 of the edge, + * Note: if the radius is within DISC_EDGE_EPS of the edge, * and outside the disc, put it at the edge. * This prevents floating point errors. */ + +#if DISC_DEBUG >= 3 + double d = radius-DISC_INNER_ZONE(disc)->rstart; + Discdebug(3, + "R = %g, Disc Rin = %g, Rout = %g, Zone R inner edge = %g, R outer edge = %g, diff = %g, diff / R = %g, diff / INNER = %g, ABSDIFF %g\n", + radius, + disc->Rin, + disc->Rout, + DISC_INNER_ZONE(disc)->rstart, + DISC_OUTER_ZONE(disc)->rend, + d, + d/radius, + d/DISC_INNER_ZONE(disc)->rstart, + ABSDIFF(radius,DISC_INNER_ZONE(disc)->rstart) + ); +#endif //DISC_DEBUG>=3 + + /* + * Negative logic : use || (it's faster) + * + * Match to a zone if R is in the zone to within + * a fraction 1.0 +/- ZONE_FLUFF + */ +#define ZONE_FLUFF (TINY) +#define Is_not_our_zone(RADIUS,ZONE) ( \ + (ZONE)->valid == FALSE || \ + (RADIUS) < (ZONE)->rstart*(1.0 - ZONE_FLUFF) || \ + (RADIUS) > (ZONE)->rend*(1.0 + ZONE_FLUFF) \ + ) + +#define Is_our_zone(RADIUS,ZONE) \ + (!(Is_not_our_zone((RADIUS),(ZONE)))) -/* - double d = radius-DISC_INNER_ZONE(disc)->rstart; - - printf("R = %g, INNER = %g, diff = %g, diff / R = %g, diff / INNER = %g, ABSDIFF %g\n", - radius, - DISC_INNER_ZONE(disc)->rstart, - d, - d/radius, - d/DISC_INNER_ZONE(disc)->rstart, - ABSDIFF(radius,DISC_INNER_ZONE(disc)->rstart) - ); -*/ - if(ABSDIFF(radius,DISC_OUTER_ZONE(disc)->rend)<DISC_EDGE_EPS) + /* one zone : must be in it! */ + if(disc->n_thermal_zones==1) + { + return 0; + } + + /* compare to inner and outer edges */ + else if(unlikely(FLOATSAMEEPS(radius/DISC_OUTER_ZONE(disc)->rend, + 1.0, + DISC_EDGE_EPS))) { return DISC_OUTER_ZONE_N(disc); } - else if(ABSDIFF(radius,DISC_INNER_ZONE(disc)->rstart)<DISC_EDGE_EPS) + else if(unlikely(FLOATSAMEEPS(radius/DISC_INNER_ZONE(disc)->rstart, + 1.0, + DISC_EDGE_EPS))) { return DISC_INNER_ZONE_N(disc); } else { - for(i=0;i<DISCS_MAX_N_ZONES;i++) + /* + * cycle estimation with callgrind (valgrind) + * + * orig code: self = 1.21 + * + * with z pointer ++ = 0.84 + * + * with z pointer + i = 0.98 : slower + * + * with "register unsigned int i" = 1.21 : no change + * + * invert logic = 1.13 + * + * invert logic + z pointer ++ = 0.76 + * + * invert logic + zz pointer = 0.90 + * + * invert logic + z pointer ++ + while i loop = 0.76 + * + * invert logic + z pointer ++ + while z loop (with zmax) = 0.77 + * + * invert logic + z pointer ++ + while z loop (with zmax) and no i = 0.80 + * + * invert logic + z pointer ++ + while i loop + unsigned (Disc_zone_counter) i = 0.70 + * + * invert logic + z pointer ++ + while i loop + unsigned (Disc_zone_counter) i + multiply instead of divide = 0.68 + */ + + + + + /* + * Search all zones + */ + Disc_zone_counter i = 0; + struct disc_thermal_zone_t * z = + (struct disc_thermal_zone_t *) disc->thermal_zones + i; + + for(;i<DISCS_MAX_N_ZONES;i++,z++) { - struct disc_thermal_zone_t * z = &(disc->thermal_zones[i]); - if(0)printf("ZONE %d : CF R = %g to Rstart = %g, Rend = %g\n", - i,radius,z->rstart,z->rend); - if(z->valid==TRUE && - MORE_OR_EQUAL(radius,z->rstart) && - LESS_OR_EQUAL(radius,z->rend)) + if(! Is_not_our_zone(radius,z)) { + /* all conditions ok : this is our zone! */ return i; } + + /* + * positive logic: use &&, requires + * all to be true, so is slower than with || + */ + /* + if(z->valid==TRUE && + MORE_OR_EQUAL(radius/z->rstart,1.0) && + LESS_OR_EQUAL(radius/z->rend,1.0)) + { + return i; + } + */ + } + } + + fprintf(stderr,"disc_zone_n failed\n"); + + { + int i; + for(i=0;i<DISCS_MAX_N_ZONES;i++) + { + const struct disc_thermal_zone_t * z = &(disc->thermal_zones[i]); + fprintf(stderr, + "ZONE %d : CF R = %g to Rstart = %g, Rend = %g : valid %d : %g %g\n", + i, + radius, + z->rstart, + z->rend, + z->valid, + radius/z->rstart, + radius/z->rend + ); } } /* radius is not in the disc! fail */ - printf("eps out cf %g %g = %g\n", + fprintf(stderr, + "eps in cf %g %g = %g\n", + radius, + DISC_INNER_ZONE(disc)->rstart, + ABSDIFF(radius,DISC_INNER_ZONE(disc)->rstart)); + fprintf(stderr, + "eps out cf %g %g = %g\n", radius, DISC_OUTER_ZONE(disc)->rend, ABSDIFF(radius,DISC_OUTER_ZONE(disc)->rend)); // failure Backtrace; + +#if DISC_DEBUG<3 + // not defined above... + double d = radius-DISC_INNER_ZONE(disc)->rstart; +#endif + + fprintf(stderr, + "R = %g, Disc Rin = %g, Rout = %g, Zone R inner edge = %g, R outer edge = %g, diff = %g, diff / R = %g, diff / INNER = %g, ABSDIFF %g\n", + radius, + disc->Rin, + disc->Rout, + DISC_INNER_ZONE(disc)->rstart, + DISC_OUTER_ZONE(disc)->rend, + d, + d/radius, + d/DISC_INNER_ZONE(disc)->rstart, + ABSDIFF(radius,DISC_INNER_ZONE(disc)->rstart) + ); + Exit_binary_c_no_stardata( - OUT_OF_RANGE,"Radius %22.10e is outside the disc (%22.10e<R<%22.10e) so I cannot calculate a zone number (ABSDIFF = Rin:%g Rout:%g FEQUALs %d %d)", + OUT_OF_RANGE, + "Radius %22.10e is outside the disc (%22.10e < R / cm < %22.10e) so I cannot calculate a zone number (ABSDIFF = Rin:%g Rout:%g FEQUALs %d %d, inner zone valid? %d outer zone valid? %d)", radius, disc->Rin, disc->Rout, ABSDIFF(radius,DISC_INNER_ZONE(disc)->rstart), ABSDIFF(radius,DISC_OUTER_ZONE(disc)->rend), FEQUAL(radius,DISC_INNER_ZONE(disc)->rstart), - FEQUAL(radius,DISC_OUTER_ZONE(disc)->rend) - ); + FEQUAL(radius,DISC_OUTER_ZONE(disc)->rend), + DISC_INNER_ZONE(disc)->valid, + DISC_OUTER_ZONE(disc)->valid + ); + + return DISC_ZONE_TYPE_UNDEFINED; } diff --git a/src/disc/evolve_disc.c b/src/disc/evolve_disc.c index 161a97683b6c6a3d21986478059e69a8fcc83d45..c6359aa5fe7b025e694b5783a24805cba58f2298 100644 --- a/src/disc/evolve_disc.c +++ b/src/disc/evolve_disc.c @@ -2,11 +2,9 @@ #ifdef DISCS -#include "disc.h" - void evolve_disc(struct stardata_t * stardata, struct disc_t * disc, - double dtsecs) + const double dtsecs) { /* * Evolve a disc for the current binary_c timestep @@ -24,7 +22,7 @@ void evolve_disc(struct stardata_t * stardata, stardata->star[0].roche_radius, stardata->common.separation ); - Discdebug(1,"EV t=%g dt=%g : ", + Discdebug(1,"EV t=%g dt=%g\n", disc->lifetime/YEAR_LENGTH_IN_SECONDS, dtsecs/YEAR_LENGTH_IN_SECONDS); @@ -33,7 +31,7 @@ void evolve_disc(struct stardata_t * stardata, disc->dT = 0.0; Clear_disc_feedback(disc); - if(disc->lifetime < DISC_MAX_AGE) + if(Disc_is_disc(disc)) { /* * Evolve the disc @@ -42,16 +40,20 @@ void evolve_disc(struct stardata_t * stardata, "No RLOF : evolve disc for %g years\n", dtsecs/YEAR_LENGTH_IN_SECONDS); - Discdebug(3,"Conv precall Tvisc0 = %g\n",disc->Tvisc0); + Discdebug(3,"Conv precall converged? %d Tvisc0 = %g M = %g Msun\n", + disc->converged, + disc->Tvisc0, + disc->M/M_SUN); double ret = disc_evolve_disc_structure(stardata, disc, dtsecs); - Discdebug(3,"Conv postcall Tvisc0 = %g\n",disc->Tvisc0); + Discdebug(3,"Conv postcall converged? %d Tvisc0 = %g M = %g\n", + disc->converged, + disc->Tvisc0, + disc->M/M_SUN); if(IS_NOT_ZERO(ret)) { - disc->lifetime += dtsecs; - /* * Check and output the disc properties to make * sure the code is working @@ -59,7 +61,7 @@ void evolve_disc(struct stardata_t * stardata, // binary structure struct binary_system_t binary; - disc_init_binary_structure(stardata,&binary); + disc_init_binary_structure(stardata,&binary,disc); disc_convergence_status("post-init-binary-structure",disc,&binary); /* choose the most evolved star */ @@ -91,13 +93,17 @@ void evolve_disc(struct stardata_t * stardata, { /* * If disc is no longer evolving, set its - * timestep to be very long. + * timestep to be very long, and remove its + * mass and angular momentum. */ + Discdebug(2, + "disc lifetime %g exceeds DISC_MAX_LIFETIME = %g : set very long timestep\n", + disc->lifetime, + DISC_MAX_LIFETIME); disc->dt = LONG_TIMESTEP; - Discdebug(2,"Set very long timestep\n"); + Evaporate_disc(disc,"Disc lifetime exceeds limit"); } Discdebug(3,"Conv end evolve Tvisc0 = %g\n",disc->Tvisc0); - Discdebug(1,"\n"); } #endif // DISCS diff --git a/src/disc/evolve_discs.c b/src/disc/evolve_discs.c index 1d730a5ae17a38d4d2c54c7ba131c21e5f6f5597..c05836877d99e227450719c1d3d228f62a0d8d87 100644 --- a/src/disc/evolve_discs.c +++ b/src/disc/evolve_discs.c @@ -31,17 +31,20 @@ void evolve_discs(struct stardata_t * stardata) } else { - for(i=0; i<stardata->common.ndiscs; i++) + if(stardata->common.ndiscs > 0) { - struct disc_t * d = & stardata->common.discs[i]; - Dprint("At t=%g DISC %d has delete count %d and mass %g\n", - stardata->model.time, - i, - d->delete_count, - d->M); - if(d->delete_count == 0) + for(i=0; i<stardata->common.ndiscs; i++) { - evolve_disc(stardata,d,dtsecs); + struct disc_t * d = & stardata->common.discs[i]; + Dprint("At t=%g DISC %d has delete count %d and mass %g\n", + stardata->model.time, + i, + d->delete_count, + d->M); + if(d->delete_count == 0) + { + evolve_disc(stardata,d,dtsecs); + } } } } @@ -50,24 +53,31 @@ void evolve_discs(struct stardata_t * stardata) * Remove evaporated circumbinary discs * or discs that are about to be evaporated. */ - for(i=0; i<stardata->common.ndiscs; i++) + if(stardata->common.ndiscs > 0) { - struct disc_t * d = & stardata->common.discs[i]; - if(IS_REALLY_ZERO(d->M)) + for(i=0; i<stardata->common.ndiscs; i++) { - /* - * But only remove if the delete count is 2 : - * this allows a line of logging before the disc - * disappears. - */ - if(++(d->delete_count) == 2) - { - Dprint("Evaporated disc %d at t=%g, call remove_disc\n", - i,stardata->model.time); - remove_disc(stardata->common.discs[i].type, - stardata, - i, - DISC_REMOVE_EVAPORATE); + struct disc_t * d = & stardata->common.discs[i]; + if(IS_REALLY_ZERO(d->M)) + { + /* + * But only remove if the delete count is 2 : + * this allows a line of logging before the disc + * disappears. + */ + if(++(d->delete_count) >= 2) + { + Dprint("Evaporated disc %d at t=%g, call remove_disc (ndiscs = %d, delete count %d)\n", + i, + stardata->model.time, + stardata->common.ndiscs, + d->delete_count + ); + remove_disc(stardata->common.discs[i].type, + stardata, + i, + DISC_REMOVE_EVAPORATE); + } } } } diff --git a/src/disc/inner_disc.c b/src/disc/inner_disc.c index 2c30887f33862d36e5ece1d170bdfdba085e79b0..d5f86017a7af61e3d769a109296d2a479f9ca382 100644 --- a/src/disc/inner_disc.c +++ b/src/disc/inner_disc.c @@ -6,18 +6,18 @@ * Return a pointer to the innermost disc of object */ -struct disc_t * inner_disc(Disc_type type, - void * object) +struct disc_t * inner_disc(const Disc_type type, + const void * object) { struct disc_t * disc = NULL; if(type == DISC_CIRCUMSTELLAR) { - struct star_t * star = object; + struct star_t * star = (struct star_t *) object; disc = star->discs[DISC_POS_TO_N(star,DISC_INNER_EDGE)]; } else if(type == DISC_CIRCUMBINARY) { - struct stardata_t * stardata = object; + struct stardata_t * stardata = (struct stardata_t *) object; disc = &stardata->common.discs[DISC_POS_TO_N(&(stardata->common), DISC_INNER_EDGE)]; } diff --git a/src/disc/new_disc.c b/src/disc/new_disc.c index 7d935d73325794086b2dcb6a8dbd59f94f5de79f..962e626e11594a767f8f93f2a0ef0ca008637521 100644 --- a/src/disc/new_disc.c +++ b/src/disc/new_disc.c @@ -1,6 +1,7 @@ #include "../binary_c.h" #ifdef DISCS +#include "disc_constraints.h" struct disc_t * new_disc( Disc_type type, @@ -71,6 +72,7 @@ struct disc_t * new_disc( disc->delete_count = 0; disc->firstlog = TRUE; disc->first = TRUE; + disc->lifetime = 0.0; ret = &(common->discs[common->ndiscs]); common->ndiscs++; } @@ -132,7 +134,7 @@ struct disc_t * new_disc( "Disc type %d unknown : cannot allocate memory for it", type); } - + return ret; } diff --git a/src/disc/outer_disc.c b/src/disc/outer_disc.c index 75a3eb6282268106e9b776646f418a1f60c37694..3ff16fc017fdd2272b6431e765b93ffd7daf08d7 100644 --- a/src/disc/outer_disc.c +++ b/src/disc/outer_disc.c @@ -6,18 +6,18 @@ * Return a pointer to the innermost disc of object */ -struct disc_t * outer_disc(Disc_type type, - void * object) +struct disc_t * outer_disc(const Disc_type type, + const void * object) { struct disc_t * disc = NULL; if(type == DISC_CIRCUMSTELLAR) { - struct star_t * star = object; + struct star_t * star = (struct star_t *) object; disc = star->discs[DISC_POS_TO_N(star,DISC_OUTER_EDGE)]; } else if(type == DISC_CIRCUMBINARY) { - struct stardata_t * stardata = object; + struct stardata_t * stardata = (struct stardata_t *) object; disc = &stardata->common.discs[DISC_POS_TO_N(&(stardata->common),DISC_OUTER_EDGE)]; } else diff --git a/src/disc/remove_disc.c b/src/disc/remove_disc.c index 14ad5589b83feda5b2b322bfd2a790cb2c393742..cb280618108deabe8500d27852336df7d170b9b3 100644 --- a/src/disc/remove_disc.c +++ b/src/disc/remove_disc.c @@ -1,7 +1,6 @@ #include "../binary_c.h" #ifdef DISCS -#include "disc.h" void remove_disc( Disc_type type, @@ -30,7 +29,10 @@ void remove_disc( OUT_OF_RANGE, "No circumstellar disc to remove in remove_disc\n"); } - int n = DISC_POS_TO_N(star,pos); + int n = DISC_POS_TO_N(star,pos); +#ifdef MEMOIZE + memoize_free(star->discs[n]->memo); +#endif // MEMOIZE Safe_free(star->discs[n]); int i; for(i=n; i<star->ndiscs;i++) @@ -57,6 +59,7 @@ void remove_disc( { struct stardata_t * stardata = object; struct common_t * common = &(stardata->common); + if(common->ndiscs==0) { /* no disc to remove! */ @@ -65,32 +68,40 @@ void remove_disc( "No circumbinary disc to remove in remove_disc at position %d\n", pos); } - int n = DISC_POS_TO_N(common,pos); - - if(DISC_DEBUG) + else { - printf("Remove disc n=%d pos=%d at %p because %s (dM=%g dJ=%g M1=%g)\n", - n, - pos, - &common->discs[n], - Disc_removal_string(reason), - common->discs[n].dM_binary, - common->discs[n].dJ_binary, - stardata->star[0].mass + int n = DISC_POS_TO_N(common,pos); - ); - fflush(stdout); - } - if(common->ndiscs>0) - { - Dprint("remove disc %d at time %g (dt_zoom %g) because %s\n", - common->ndiscs, - stardata->model.time, - stardata->model.dt_zoom, - Disc_removal_string(reason) - ); - memset(&common->discs[n],0,sizeof(struct disc_t)); - common->ndiscs--; + if(DISC_DEBUG) + { + printf("Remove disc n=%d pos=%d at %p because %s (dM=%g dJ=%g M1=%g, dt_zoom=%g)\n", + n, + pos, + &common->discs[n], + Disc_removal_string(reason), + common->discs[n].dM_binary, + common->discs[n].dJ_binary, + stardata->star[0].mass, + stardata->model.dt_zoom + ); + fflush(stdout); + } + if(common->ndiscs>0) + { + Dprint("remove disc %d at time %g from stardata = %p (dt_zoom %g) because %s\n", + common->ndiscs, + stardata->model.time, + stardata, + stardata->model.dt_zoom, + Disc_removal_string(reason) + ); + struct disc_t * disc = &common->discs[n]; +#ifdef MEMOIZE + memoize_free(disc->memo); +#endif + memset(disc,0,sizeof(struct disc_t)); + common->ndiscs--; + } } } else diff --git a/src/evolution/catch_events.c b/src/evolution/catch_events.c index 5c0b1edd72d8ee6f4055104c76f4dcbf6f1f36d2..a2c7c0535292fdabdb6e328463dccefe82a2ca30 100644 --- a/src/evolution/catch_events.c +++ b/src/evolution/catch_events.c @@ -38,6 +38,7 @@ void catch_events(struct stardata_t * stardata) * kicks, mass change, yields, etc. */ supernova(stardata,star); + Dprint("after supernova\n"); /* * Check for broken system @@ -60,10 +61,11 @@ void catch_events(struct stardata_t * stardata) IS_ZERO(stardata->common.separation) ? 0.0 : ((stardata->common.separation/AU_IN_SOLAR_RADII) *sqrt(stardata->common.separation/(AU_IN_SOLAR_RADII*(stardata->star[0].mass + stardata->star[1].mass)))); - + + /* and the orbital angular frequency */ stardata->common.orbital_angular_frequency = IS_ZERO(stardata->common.separation) ? 0.0 : - (TWOPI/stardata->common.orbital_period)/0.0; + (TWOPI/stardata->common.orbital_period); } } } diff --git a/src/evolution/check_for_time_exhaustion.c b/src/evolution/check_for_time_exhaustion.c index 0f54e81ce535971f62db215c50b846be5941a394..10eb7fcbf6dd17008b8bf16bf977ef031655c5fc 100644 --- a/src/evolution/check_for_time_exhaustion.c +++ b/src/evolution/check_for_time_exhaustion.c @@ -3,12 +3,21 @@ * Check if time has run out */ +#ifdef REVERSE_TIME +/* use absolute time */ +#define The_time fabs(stardata->model.time) +#else +#define The_time (stardata->model.time) +#endif // REVERSE_TIME + + Boolean check_for_time_exhaustion(struct stardata_t *stardata, const int intpol) { Boolean exhausted = Boolean_(intpol==0 && - MORE_OR_EQUAL(stardata->model.time, - stardata->model.max_evolution_time)); - + MORE_OR_EQUAL( + The_time, + stardata->model.max_evolution_time)); + return exhausted; } diff --git a/src/evolution/erase_events.c b/src/evolution/erase_events.c index bd49cef9ea6c5576960fb0fcef10d7ae1b408e19..716947bdb19e8e7e39c67a8858e9e4a9f35997c6 100644 --- a/src/evolution/erase_events.c +++ b/src/evolution/erase_events.c @@ -12,6 +12,7 @@ void erase_events(struct stardata_t * stardata) STARLOOP(k) { SETstar(k); - free_supernova(star); + Dprint("call free supernova\n"); + free_supernova(stardata,star); } } diff --git a/src/evolution/evolution.c b/src/evolution/evolution.c index 022a5986329728a033defdf666b9d62df497bcc7..556c9de7ca3ab2d556dcd2ae731d0214a50e2abe 100644 --- a/src/evolution/evolution.c +++ b/src/evolution/evolution.c @@ -12,8 +12,6 @@ int evolution(struct stardata_t * RESTRICT stardata, Boolean system_type) { - //initialize_system_every_timestep(stardata); - /* * Apply stellar mass and angular momentum changes, * e.g. wind loss, wind accretion, RLOF diff --git a/src/evolution/evolution_difflog.c b/src/evolution/evolution_difflog.c index 6930045b639a277c57193e8bcf226b6073c622c8..5ae5f44edf49718d4b7adf75595046f0d5725f4f 100644 --- a/src/evolution/evolution_difflog.c +++ b/src/evolution/evolution_difflog.c @@ -1,6 +1,7 @@ #include "../binary_c.h" +#include "evolution_difflog.h" /* * Compare stardata to previous_stardata, and log @@ -20,30 +21,6 @@ * not one-off events. */ -#define RLOFing(D,K) (D)->stellar_type[(K)]!=MASSLESS_REMNANT && \ - (D)->radius[(K)] > 0.0 && \ - (D)->roche_radius[(K)] > 0.0 && \ - IS_NOT_ZERO((D)->roche_radius[(K)]) && \ - MORE_OR_EQUAL((D)->radius[(K)] , (D)->roche_radius[(K)]); - -static void set_diffstats(struct stardata_t * stardata, - struct diffstats_t * now); - -static void cf_diffstats(struct stardata_t * RESTRICT stardata, - struct diffstats_t * RESTRICT now, - struct diffstats_t * RESTRICT prev, - Boolean * RESTRICT flags, - Boolean * RESTRICT prevflags, - Boolean lockflags[NUMBER_OF_STARS][NLOCKFLAGS+1]); - -static void dolog(struct stardata_t * RESTRICT stardata, - const char * RESTRICT cin); - -static void logging_dependencies(struct stardata_t * RESTRICT stardata, - Boolean * flags, - Boolean lockflags[NUMBER_OF_STARS][NLOCKFLAGS+1]); - - void evolution_difflog(struct stardata_t * RESTRICT stardata) { Dprint("In difflog, stardata=%p, previous_stardata=%p (SN %d %d)\n", @@ -61,7 +38,6 @@ void evolution_difflog(struct stardata_t * RESTRICT stardata) Boolean flags[NLOG_LABELS]; Dprint("prev = %p\n",prev); - /* * Set flags to FALSE */ @@ -129,6 +105,12 @@ void evolution_difflog(struct stardata_t * RESTRICT stardata) * Do log and copy flags to prevflags */ Dprint("do log"); + + + /* + * New local log stack + */ + struct logstack_t * logstack = new_logstack(); /* standard logstrings */ for(i=0;i<NLOGFLAGS;i++) @@ -141,14 +123,17 @@ void evolution_difflog(struct stardata_t * RESTRICT stardata) if(stardata->model.logflagstrings[j][0]!='0') { /* use current stardata */ - dolog(stardata,stardata->model.logflagstrings[j]); + push_stacklog(logstack, + stardata, + stardata->model.logflagstrings[j]); } else if(stardata->model.logflags[j]==TRUE && stardata->model.logflagstrings[j][0] == '0') { /* use previous stardata */ - dolog(stardata->previous_stardata, - stardata->model.logflagstrings[j]+1); + push_stacklog(logstack, + stardata->previous_stardata, + stardata->model.logflagstrings[j]+1); } stardata->model.logflags[j]=FALSE; stardata->model.logflagstrings[j][0] = 0; @@ -156,17 +141,50 @@ void evolution_difflog(struct stardata_t * RESTRICT stardata) } } - /* diff logging */ + /* + * Do diff logging, put the results on the stacklog + */ for(i=0;i<NLOG_LABELS;i++) { if(flags[i] == TRUE) { - dolog(stardata, - stardata->store->label[i]); + push_stacklog(logstack, + stardata, + stardata->store->label[i]); } stardata->common.prevflags[i] = flags[i]; } + /* + * Sort local log stack + */ + void * arg = NULL; + qsort_r(logstack->items, + logstack->n, + sizeof(struct logitem_t *), + (comparison_fn_r)compare_logitems, + &arg); + Safe_free(arg); + + /* + * Dump local log stack + */ + for(i=0;i<logstack->n;i++) + { + Stack_debug_print("DOLOG %d %g %g : %s\n", + i, + logstack->items[i]->m[0], + logstack->items[i]->m[1], + logstack->items[i]->string); + dolog(logstack->items[i]->stardata, + logstack->items[i]->string); + } + + /* + * Free local log stack + */ + free_logstack(logstack); + /* clear log stack */ for(i=0;i<NLOGFLAGS;i++) { @@ -174,6 +192,132 @@ void evolution_difflog(struct stardata_t * RESTRICT stardata) } } +static int compare_logitems(const void * RESTRICT a, + const void * RESTRICT b, + void * arg) +{ + + /* + * Compare log items to determine their order + * + * itema and itemb are logitem_t structs, as defined + * in evolution_difflog.h + * + * These are set in push_stacklog() [see below]. + * + * You should compare them to determine whether to + * return +1 or -1. You should not return 0: + * in this case, the original order is preserved. + * + * For details of the sort, see the man page of qsort_r. + */ + + struct logitem_t * itema = * (struct logitem_t **) a; + struct logitem_t * itemb = * (struct logitem_t **) b; + Stack_debug_print("CF %p %p\n",itema,itemb); + Stack_debug_print("%s\n%s\n",itema->string,itemb->string); + Stack_debug_print("WITH M1 %g %g\n",itema->m[0],itemb->m[0]); + Stack_debug_print("WITH M2 %g %g\n",itema->m[1],itemb->m[1]); + + int ret = 0; + if(FEQUAL(itema->m[0], itemb->m[0])) + { + if(FEQUAL(itema->m[1], itemb->m[1])) + { + Stack_debug_print("both equal cf %d %d\n",itema->n,itemb->n); + + /* both equal : use n to preserve order */ + ret = itema->n > itemb->n ? +1 : -1; + } + else + { + /* use the secondary */ + Stack_debug_print("use secondary\n"); + ret = itema->m[1] > itemb->m[1] ? -1 : +1; + } + } + else + { + /* use the primary */ + Stack_debug_print("use primary\n"); + ret = itema->m[0] > itema->m[1] ? -1 : +1; + } + + /* + * or the original order if nothing else + */ + if(ret==0) + { + ret = itema->n > itemb->n ? +1 : -1; + } + + Stack_debug_print("return %d : %s\n", + ret, + (ret == -1 ? itema->string : + ret == +1 ? itemb->string : + "unknown!" + ) + ); + return ret; +} + +static void push_stacklog(struct logstack_t * logstack, + struct stardata_t * stardata, + const char * cin) +{ + /* + * Increase size of the stack + */ + logstack->items = + REALLOC(logstack->items, + sizeof(struct logitem_t *)* + (1 + logstack->n)); + + /* + * Allocate space for the new stack item + */ + logstack->items[logstack->n] = MALLOC(sizeof(struct logitem_t)); + + Stack_debug_print("NEW LOGSTACK ITEM %p (list starts at %p)\n", + logstack->items[logstack->n], + logstack->items + ); + + /* + * Shortcut to the new stack item + */ + struct logitem_t * new = logstack->items[logstack->n]; + new->string = MALLOC(sizeof(char)*STRING_LENGTH); + + /* + * Set the new stack item information + */ + int k; + STARLOOP(k) + { + new->m[k] = stardata->star[k].mass; + } + strlcpy(new->string, + cin, + STRING_LENGTH); + new->n = logstack->n; + new->stardata = stardata; + + Stack_debug_print("New string %d : %s\nM %g %g\n", + logstack->n, + new->string, + new->m[0], + new->m[1] + ); + + + /* + * Up the stack length + */ + logstack->n++; +} + + static void dolog(struct stardata_t * stardata, const char * cin) { @@ -539,3 +683,29 @@ static void logging_dependencies(struct stardata_t * stardata, star->blue_straggler = lockflags[k][LOCK_BSS]; } } + +static struct logstack_t * new_logstack(void) +{ + /* + * Make a new local logstack + */ + struct logstack_t * logstack = MALLOC(sizeof(struct logstack_t)); + logstack->n = 0; + logstack->items = NULL; + return logstack; +} + +static void free_logstack(struct logstack_t * logstack) +{ + /* + * Free the local logstack and everything inside it + */ + int i; + for(i=0;i<logstack->n;i++) + { + Safe_free(logstack->items[i]->string); + Safe_free(logstack->items[i]); + } + Safe_free(logstack->items); + Safe_free(logstack); +} diff --git a/src/evolution/evolution_difflog.h b/src/evolution/evolution_difflog.h new file mode 100644 index 0000000000000000000000000000000000000000..bae646c95f3a4a2257cbefddd3da060d04de7db9 --- /dev/null +++ b/src/evolution/evolution_difflog.h @@ -0,0 +1,58 @@ +#pragma once +#ifndef EVOLUTION_DIFFLOG_H +#define EVOLUTION_DIFFLOG_H + +/* + * Structs, macros and prototypes for the evolution difflog + */ + +#define Stack_debug_print(...) /* do nothing */ + +struct logitem_t { + struct stardata_t * stardata; + double m[NUMBER_OF_STARS]; + char * string; + int n; +}; + +struct logstack_t { + struct logitem_t ** items; + int n; +}; +static struct logstack_t * new_logstack(void); + +#define RLOFing(D,K) (D)->stellar_type[(K)]!=MASSLESS_REMNANT && \ + (D)->radius[(K)] > 0.0 && \ + (D)->roche_radius[(K)] > 0.0 && \ + IS_NOT_ZERO((D)->roche_radius[(K)]) && \ + MORE_OR_EQUAL((D)->radius[(K)] , (D)->roche_radius[(K)]); + +static void set_diffstats(struct stardata_t * stardata, + struct diffstats_t * now); + +static void cf_diffstats(struct stardata_t * RESTRICT stardata, + struct diffstats_t * RESTRICT now, + struct diffstats_t * RESTRICT prev, + Boolean * RESTRICT flags, + Boolean * RESTRICT prevflags, + Boolean lockflags[NUMBER_OF_STARS][NLOCKFLAGS+1]); + +static void dolog(struct stardata_t * RESTRICT stardata, + const char * RESTRICT cin); + +static void logging_dependencies(struct stardata_t * RESTRICT stardata, + Boolean * flags, + Boolean lockflags[NUMBER_OF_STARS][NLOCKFLAGS+1]); + +static void push_stacklog(struct logstack_t * logstack, + struct stardata_t * stardata, + const char * cin); + +static int compare_logitems(const void * RESTRICT a, + const void * RESTRICT b, + void * arg); + +static void free_logstack(struct logstack_t * logstack); + +#endif // EVOLUTION_DIFFLOG_H + diff --git a/src/evolution/evolution_macros.h b/src/evolution/evolution_macros.h index 0ca2b58f3c0809501d3727ac42b710014530b464..0e1fd108325b62326ac043b47782b53cdd15bf97 100644 --- a/src/evolution/evolution_macros.h +++ b/src/evolution/evolution_macros.h @@ -1,3 +1,4 @@ +#pragma once #ifndef EVOLUTION_MACROS_H #define EVOLUTION_MACROS_H diff --git a/src/evolution/evolution_prototypes.h b/src/evolution/evolution_prototypes.h index 5050656cccfc1cdcdcfd053dcc64d096120cec8c..51fb87d7ab309b9f33742573ea2c2de42a0ca6f3 100644 --- a/src/evolution/evolution_prototypes.h +++ b/src/evolution/evolution_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef EVOLUTION_PROTOTYPES_H #define EVOLUTION_PROTOTYPES_H @@ -61,7 +62,7 @@ void update_phase_start_times(struct stardata_t * stardata); void catch_events(struct stardata_t * stardata); void erase_events(struct stardata_t * stardata); Boolean check_reject_flags(struct stardata_t * stardata); -void initialize_system_every_timestep(struct stardata_t * RESTRICT stardata); + void initialize_RLOFing_system_every_timestep(struct stardata_t * RESTRICT stardata); #endif /* EVOLUTION_PROTOTYPES_H */ diff --git a/src/evolution/evolution_restore_from_previous.c b/src/evolution/evolution_restore_from_previous.c index 038dab6da3f3edce98e952667fa9f2b4cc9f2362..60e88715d068b72ee187600410828146f935a161 100644 --- a/src/evolution/evolution_restore_from_previous.c +++ b/src/evolution/evolution_restore_from_previous.c @@ -1,6 +1,7 @@ #include "../binary_c.h" + void evolution_restore_from_previous(struct stardata_t * RESTRICT stardata) { /* diff --git a/src/evolution/evolution_split.c b/src/evolution/evolution_split.c index 43aecd73db3b8e9d2676922bd0283da80f8a6735..327b526d8c8c3fc001b6437f3da55c6c6fd71cd9 100644 --- a/src/evolution/evolution_split.c +++ b/src/evolution/evolution_split.c @@ -67,6 +67,18 @@ int testindex = NUCSYN_ENSEMBLE_RSG_LUM; #endif // EVOLUTION_SPLITTING +#define DDD \ + SDEBUG("stardata new_supernovae %p %p st %d %d omega %g %g J %g %g Jorb %g\n", \ + p->stardata->star[0].new_supernova, \ + p->stardata->star[1].new_supernova, \ + p->stardata->star[0].stellar_type, \ + p->stardata->star[1].stellar_type, \ + p->stardata->star[0].omega, \ + p->stardata->star[1].omega, \ + p->stardata->star[0].angular_momentum, \ + p->stardata->star[1].angular_momentum, \ + p->stardata->common.orbital_angular_momentum \ + ); int evolution_split(struct stardata_t * RESTRICT stardata, @@ -100,7 +112,10 @@ int evolution_split(struct stardata_t * RESTRICT stardata, * Check if we need to rerun from a previous * splitpoint */ - SDEBUG("SPLIT status is evolution_break : currently working on splitinfo struct %d at %p, of which count = %d\n",stardata->preferences->current_splitdepth-1,p,p->count); + SDEBUG("SPLIT status is evolution_break : currently working on splitinfo struct %d at %p, of which count = %d\n", + stardata->preferences->current_splitdepth-1, + p, + p->count); if(p->count > 0) { @@ -116,6 +131,8 @@ int evolution_split(struct stardata_t * RESTRICT stardata, Random_buffer random_buffer = stardata->common.random_buffer; Boolean random_buffer_set = stardata->common.random_buffer_set; + DDD; + p->count--; Copy_stardata(p->stardata,stardata); @@ -128,7 +145,10 @@ int evolution_split(struct stardata_t * RESTRICT stardata, stardata->preferences->current_splitdepth - 1, p->count, stardata->model.time); - Append_logstring(LOG_SPLIT_EVOLUTION,"Evolution restart @ t=%g, %d.%d",stardata->model.time,stardata->preferences->current_splitdepth-1,p->count); + Append_logstring(LOG_SPLIT_EVOLUTION,"Evolution restart @ t=%g, %d.%d", + stardata->model.time, + stardata->preferences->current_splitdepth-1, + p->count); #ifdef LINUX reset_binary_c_timeout(); #endif @@ -137,7 +157,9 @@ int evolution_split(struct stardata_t * RESTRICT stardata, else { stardata->preferences->current_splitdepth--; - SDEBUG("SPLIT last done (count=%d) : next depth is %d\n",p->count,stardata->preferences->current_splitdepth-1); + SDEBUG("SPLIT last done (count=%d) : next depth is %d\n", + p->count, + stardata->preferences->current_splitdepth-1); /* clean up memory */ Safe_free(stardata->preferences->splitinfo[stardata->preferences->current_splitdepth]->stardata); @@ -158,7 +180,7 @@ int evolution_split(struct stardata_t * RESTRICT stardata, SDEBUG("SPLIT AT %g : split depth = %d\n", stardata->model.time, stardata->preferences->current_splitdepth); - + /* add new struct */ stardata->preferences->splitinfo[stardata->preferences->current_splitdepth] = malloc(sizeof(struct splitinfo_t)); @@ -174,6 +196,7 @@ int evolution_split(struct stardata_t * RESTRICT stardata, /* allocate space and copy previous stardata for restore */ p->stardata = New_stardata_from(stardata->previous_stardata); SDEBUG("starting post-split at t=%g\n",p->stardata->model.time); + DDD; /* * modulate probability, yields, ensemble etc. which diff --git a/src/evolution/evolve_system.c b/src/evolution/evolve_system.c index 6fb9d3cc0105406476c0f7949c686551543ef3f5..c4b5ad6c6cc94b474921549a7d6c205b760d226b 100644 --- a/src/evolution/evolve_system.c +++ b/src/evolution/evolve_system.c @@ -49,6 +49,8 @@ int evolve_system(struct stardata_t * RESTRICT stardata) show_stardata(stardata); while(evolving==TRUE) { + stardata->common.model_number++; + Dprint("Evolution loop top\n"); if(evolution_loop_top(stardata)==EVOLUTION_BREAK) { diff --git a/src/evolution/init_common.c b/src/evolution/init_common.c index 9c6d6ae0b922e0d53409c26cf82f7f8178bd2543..718b84d3ce4b47d5258512b96b6abbb8a85cc2ab 100644 --- a/src/evolution/init_common.c +++ b/src/evolution/init_common.c @@ -38,7 +38,11 @@ void init_common(struct stardata_t * RESTRICT stardata) #ifdef NUCSYN common->nucsyn_metallicity=-1.0; #endif + common->effective_metallicity = - 1.0; + common->random_seed=random_seed(); + if(common->random_seed==0) common->random_seed=random_seed(); + #ifdef ADAPTIVE_RLOF common->mdot_RLOF_adaptive=0.0; common->mdot_RLOF_H02=0.0; diff --git a/src/evolution/init_model.c b/src/evolution/init_model.c index a18c563b4f39d344018fde5276e147b7a8ec71a9..e37d9a139ac47c1f3cb5b382c8565c1617e1e85c 100644 --- a/src/evolution/init_model.c +++ b/src/evolution/init_model.c @@ -16,7 +16,6 @@ void init_model(struct model_t * RESTRICT model) model->log_fp=fp; #endif - model->tphys0=model->time; model->probability=1.0; #ifdef RLOF_ABC diff --git a/src/evolution/initialize_parameters.c b/src/evolution/initialize_parameters.c index 3565f31d216dc501574cace1c01a6173ffca5174..308c0b56048f44ac39bff4dd18599cdcf1ea42b8 100644 --- a/src/evolution/initialize_parameters.c +++ b/src/evolution/initialize_parameters.c @@ -20,8 +20,9 @@ void initialize_parameters(struct stardata_t * RESTRICT stardata) #endif /************************************************************/ - model->time=0.0; - model->dt=0.0; + check_nans_are_signalled(); + model->time = stardata->preferences->start_time; + model->dt = 0.0; Dprint("Initializing the parameters\n"); @@ -90,19 +91,25 @@ void initialize_parameters(struct stardata_t * RESTRICT stardata) Dprint("Memcopied XZAMS ok\n"); - /* if the period is zero, use the provided separation, otherwise use the provided period */ - if(IS_ZERO(common->orbital_period)) + if(IS_NOT_ZERO(stardata->star[0].mass) + && + IS_NOT_ZERO(stardata->star[1].mass)) { - common->orbital_period = calculate_orbital_period(stardata); - } + + /* if the period is zero, use the provided separation, otherwise use the provided period */ + if(IS_ZERO(common->orbital_period)) + { + common->orbital_period = calculate_orbital_period(stardata); + } - common->zams_period = common->orbital_period; + common->zams_period = common->orbital_period; - /** convert orbital period to years **/ - common->orbital_period /= YEAR_LENGTH_IN_DAYS; + /** convert orbital period to years **/ + common->orbital_period /= YEAR_LENGTH_IN_DAYS; - /** calculate the separation (pass in pointer) **/ - common->zams_separation = common->separation=calculate_orbital_separation(stardata); + /** calculate the separation (pass in pointer) **/ + common->zams_separation = common->separation=calculate_orbital_separation(stardata); + } common->zams_eccentricity = common->eccentricity; #ifdef PRE_MAIN_SEQUENCE @@ -122,6 +129,7 @@ void initialize_parameters(struct stardata_t * RESTRICT stardata) else if(common->random_seed!=0) { common->random_seed = random_seed(); + Dprint("random_seed from random_seed() %ld\n",common->random_seed); } common->init_random_seed = common->random_seed; @@ -183,331 +191,340 @@ void initialize_parameters(struct stardata_t * RESTRICT stardata) stardata->star[Other_star(k)].mass, stardata->star[Other_star(k)].phase_start_mass); - age = model->time - star->epoch; - Dprint("Set initial age = %g from %g - epoch = %g\n", - age,model->time,star->epoch); + /* + * This function can be called with mass == 0, + * in which case skip most of the per-star setup. + * + * This happens, e.g., when inital abundances + * are required but nothing else. + */ + if(IS_NOT_ZERO(star->mass)) + { + age = model->time - star->epoch; + Dprint("Set initial age = %g from %g - epoch = %g\n", + age,model->time,star->epoch); - Dprint("Calling stellar_timescales..."); + Dprint("Calling stellar_timescales..."); - if(init_sgl && k==1) - { - star->phase_start_mass=0.0; - star->effective_zams_mass=0.0; - star->pms_mass=0.0; - } - else - { - star->phase_start_mass = star->mass; - star->effective_zams_mass = star->mass; - star->pms_mass = star->mass; - } - star->max_MS_core_mass=0.0; - star->stellar_type_tstart=0.0; - double GB[GB_ARRAY_SIZE]; - double lums[LUMS_ARRAY_SIZE]; - double tscls[TSCLS_ARRAY_SIZE]; - double tm,tn; + if(init_sgl && k==1) + { + star->phase_start_mass=0.0; + star->effective_zams_mass=0.0; + star->pms_mass=0.0; + } + else + { + star->phase_start_mass = star->mass; + star->effective_zams_mass = star->mass; + star->pms_mass = star->mass; + } + star->max_MS_core_mass=0.0; + star->stellar_type_tstart=0.0; + double GB[GB_ARRAY_SIZE]; + double lums[LUMS_ARRAY_SIZE]; + double tscls[TSCLS_ARRAY_SIZE]; + double tm,tn; - stellar_timescales(star->stellar_type, - star->phase_start_mass, - star->mass, - &tm,&tn, - tscls, - lums, - GB, - stardata,star); - - Dprint("Call stellar_structure : m0=%12.12e, age=%12.12e, m=%12.12e\ntm==%12.12e, tn=%12.12e\n", - star->phase_start_mass, - age, - star->mass, - tm,tn); - - stellar_structure_longcall(&star->phase_start_mass, - &star->phase_start_core_mass, - &age, - &star->mass, - &tm, - &tn, - tscls, - lums, - GB, - &rm, - &lum, - &star->stellar_type, - &mc, - &star->CO_core_mass, - &star->GB_core_mass, - &star->max_MS_core_mass, - &rc, - &(star->menv), - &(star->renv), - &(star->k2), + stellar_timescales(star->stellar_type, + star->phase_start_mass, + star->mass, + &tm,&tn, + tscls, + lums, + GB, + stardata,star); + + Dprint("Call stellar_structure : m0=%12.12e, age=%12.12e, m=%12.12e\ntm==%12.12e, tn=%12.12e\n", + star->phase_start_mass, + age, + star->mass, + tm,tn); + + stellar_structure_longcall(&star->phase_start_mass, + &star->phase_start_core_mass, + &age, + &star->mass, + &tm, + &tn, + tscls, + lums, + GB, + &rm, + &lum, + &star->stellar_type, + &mc, + &star->CO_core_mass, + &star->GB_core_mass, + &star->max_MS_core_mass, + &rc, + &(star->menv), + &(star->renv), + &(star->k2), - &star->time_first_pulse, - &star->num_thermal_pulses, - &star->time_prev_pulse, - &star->prev_tagb, - &star->menv_1tp, - &star->mc_1tp, - &star->core_mass_no_3dup, - &star->interpulse_period, - &star->time_next_pulse, - &star->lambda_3dup, - &star->num_thermal_pulses_since_mcmin, - &star->dmc_prev_pulse, - &star->spiky_luminosity, - - &(star->SN_type), - FALSE, - star, - stardata, - STELLAR_STRUCTURE_CALLER_initialize_parameters - ); - - Dprint("OUT stellar_structure : m0=%12.12e, age=%12.12e, m=%12.12e\ntm==%12.12e, tn=%12.12e\n", - star->phase_start_mass, - age, - star->mass, - tm,tn); + &star->time_first_pulse, + &star->num_thermal_pulses, + &star->time_prev_pulse, + &star->prev_tagb, + &star->menv_1tp, + &star->mc_1tp, + &star->core_mass_no_3dup, + &star->interpulse_period, + &star->time_next_pulse, + &star->lambda_3dup, + &star->num_thermal_pulses_since_mcmin, + &star->dmc_prev_pulse, + &star->spiky_luminosity, + + &(star->SN_type), + FALSE, + star, + stardata, + STELLAR_STRUCTURE_CALLER_initialize_parameters + ); + + Dprint("OUT stellar_structure : m0=%12.12e, age=%12.12e, m=%12.12e\ntm==%12.12e, tn=%12.12e\n", + star->phase_start_mass, + age, + star->mass, + tm,tn); - Dprint("Setting stellar variables\n"); - - star->age = age; - Dprint("SET AGE %g\n",star->age); - star->epoch = model->time-age; - - Dprint("Set initial epoch = %g - %g = %g\n",model->time,age,star->epoch); - - star->radius=rm; - star->core_mass=mc; - star->core_radius=rc; - star->tms=tm; - star->tbgb=tscls[T_BGB]; - star->luminosity=lum; - star->q=Q(k); - determine_roche_lobe_radius(stardata,star); - star->rol0=star->roche_radius; + Dprint("Setting stellar variables\n"); + + star->age = age; + Dprint("SET AGE %g\n",star->age); + star->epoch = model->time-age; + + Dprint("Set initial epoch = %g - %g = %g\n",model->time,age,star->epoch); + + star->radius=rm; + star->core_mass=mc; + star->core_radius=rc; + star->tms=tm; + star->tbgb=tscls[T_BGB]; + star->luminosity=lum; + star->q=Q(k); + determine_roche_lobe_radius(stardata,star); + star->rol0=star->roche_radius; - Dprint("setting lum to %12.12e\n",lum); + Dprint("setting lum to %12.12e\n",lum); #ifdef PRE_MAIN_SEQUENCE - /* - * If the binary orbit is so close that the star is outside - * its Roche lobe on the pre-main sequence, try to age the - * star appropriately such that it fits inside its Roche lobe. - * - * Of course this is just a fudge... - */ + /* + * If the binary orbit is so close that the star is outside + * its Roche lobe on the pre-main sequence, try to age the + * star appropriately such that it fits inside its Roche lobe. + * + * Of course this is just a fudge... + */ #define PMSprint if(1)printf - Boolean pms_fit_failed = FALSE; + Boolean pms_fit_failed = FALSE; - if(stardata->preferences->pre_main_sequence==TRUE && - stardata->preferences->pre_main_sequence_fit_lobes==TRUE && - star->radius > star->roche_radius_at_periastron) - { - /* age the star until it fits just inside the main sequence */ + if(stardata->preferences->pre_main_sequence==TRUE && + stardata->preferences->pre_main_sequence_fit_lobes==TRUE && + star->radius > star->roche_radius_at_periastron) + { + /* age the star until it fits just inside the main sequence */ - /* find the R/RZAMS factor now */ - double f=preMS_radius_factor(star->mass,0.0); + /* find the R/RZAMS factor now */ + double f=preMS_radius_factor(star->mass,0.0); - /* hence RZAMS */ - double RZAMS = star->radius / f; + /* hence RZAMS */ + double RZAMS = star->radius / f; - /* - * hence target factor = R/RZAMS = ROLperi/RZAMS - * but this must be >1 - */ - double targetf = MAX(1.0, 0.999 * star->roche_radius_at_periastron / RZAMS); + /* + * hence target factor = R/RZAMS = ROLperi/RZAMS + * but this must be >1 + */ + double targetf = MAX(1.0, 0.999 * star->roche_radius_at_periastron / RZAMS); - /* - * hence get the corresponding age - * NB on failure will put the star on the ZAMS - */ - age = 1e-6*time_from_preMS_radius_factor(stardata, - star->mass, - targetf); - - PMSprint("star %d : R_PMS=%g > RLperi=%g : R_ZAMS = %g : ", - star->starnum,star->radius,star->roche_radius_at_periastron,RZAMS); - PMSprint("target radius factor f = %g : ",targetf); - PMSprint("new age %g\n",age); + /* + * hence get the corresponding age + * NB on failure will put the star on the ZAMS + */ + age = 1e-6*time_from_preMS_radius_factor(stardata, + star->mass, + targetf); + + PMSprint("star %d : R_PMS=%g > RLperi=%g : R_ZAMS = %g : ", + star->starnum,star->radius,star->roche_radius_at_periastron,RZAMS); + PMSprint("target radius factor f = %g : ",targetf); + PMSprint("new age %g\n",age); - /* if we can, calculate new radius */ - if(!FEQUAL(f,1.0)) - { - stellar_structure_longcall(&star->phase_start_mass, - &star->phase_start_core_mass, - &age, - &star->mass, - &tm, - &tn, - tscls, - lums, - GB, - &rm, - &lum, - &star->stellar_type, - &mc, - &star->CO_core_mass, - &star->GB_core_mass, - &star->max_MS_core_mass, - &rc, - &(star->menv), - &(star->renv), - &(star->k2), - - &star->time_first_pulse, - &star->num_thermal_pulses, - &star->time_prev_pulse, - &star->prev_tagb, - &star->menv_1tp, - &star->mc_1tp, - &star->core_mass_no_3dup, - &star->interpulse_period, - &star->time_next_pulse, - &star->lambda_3dup, - &star->num_thermal_pulses_since_mcmin, - &star->dmc_prev_pulse, - &star->spiky_luminosity, - - &(star->SN_type), - FALSE, - star, - stardata,STELLAR_STRUCTURE_CALLER_initialize_parameters - ); + /* if we can, calculate new radius */ + if(!FEQUAL(f,1.0)) + { + stellar_structure_longcall(&star->phase_start_mass, + &star->phase_start_core_mass, + &age, + &star->mass, + &tm, + &tn, + tscls, + lums, + GB, + &rm, + &lum, + &star->stellar_type, + &mc, + &star->CO_core_mass, + &star->GB_core_mass, + &star->max_MS_core_mass, + &rc, + &(star->menv), + &(star->renv), + &(star->k2), + + &star->time_first_pulse, + &star->num_thermal_pulses, + &star->time_prev_pulse, + &star->prev_tagb, + &star->menv_1tp, + &star->mc_1tp, + &star->core_mass_no_3dup, + &star->interpulse_period, + &star->time_next_pulse, + &star->lambda_3dup, + &star->num_thermal_pulses_since_mcmin, + &star->dmc_prev_pulse, + &star->spiky_luminosity, + + &(star->SN_type), + FALSE, + star, + stardata,STELLAR_STRUCTURE_CALLER_initialize_parameters + ); - star->age = age; - star->epoch = -age; - Dprint("Set epoch = - age = %g, age = %g\n",star->epoch, star->age); - star->radius = rm; - } + star->age = age; + star->epoch = -age; + Dprint("Set epoch = - age = %g, age = %g\n",star->epoch, star->age); + star->radius = rm; + } - PMSprint("R=%g : RLperi=%g ", - star->radius, - star->roche_radius_at_periastron); - - if(star->radius > star->roche_radius_at_periastron) - { - PMSprint("FAILED"); - pms_fit_failed = TRUE; - } - else - { - PMSprint("SUCCESS"); - } - - PMSprint(" (sep=%g perisep=%g) age=%g age/pms_lifetime=%g (pms lifetime %g)\n", - stardata->common.separation, - stardata->common.separation*(1.0-stardata->common.eccentricity), - star->age, - star->age/(1e-6*preMS_lifetime(star->mass)), - 1e-6*preMS_lifetime(star->mass) - ); - } + PMSprint("R=%g : RLperi=%g ", + star->radius, + star->roche_radius_at_periastron); - if(pms_fit_failed==TRUE) - { - printf(">>> WARNING <<< : Pre-MS Roche lobe fitting failed, expect immediate RLOF from star %d\n",k); - } -#endif - - /* - * If t=0 (first timestep) then set the spin - */ - if(IS_ZERO(model->time) && star->omega<1e-3) - { - Dprint("hello"); - calculate_rotation_variables(star,star->radius); - Dprint("hello again"); - if(FEQUAL(star->vrot0,-2.0)) + if(star->radius > star->roche_radius_at_periastron) + { + PMSprint("FAILED"); + pms_fit_failed = TRUE; + } + else + { + PMSprint("SUCCESS"); + } + + PMSprint(" (sep=%g perisep=%g) age=%g age/pms_lifetime=%g (pms lifetime %g)\n", + stardata->common.separation, + stardata->common.separation*(1.0-stardata->common.eccentricity), + star->age, + star->age/(1e-6*preMS_lifetime(star->mass)), + 1e-6*preMS_lifetime(star->mass) + ); + } + + if(pms_fit_failed==TRUE) { - /* - * vrot0 = -2 : - * form at the orbital velocity - */ - star->omega = stardata->common.orbital_angular_frequency; - Dprint("from omega orb"); + printf(">>> WARNING <<< : Pre-MS Roche lobe fitting failed, expect immediate RLOF from star %d\n",k); } - else +#endif + + /* + * If t=0 (first timestep) then set the spin + */ + if(IS_ZERO(model->time) && star->omega<1e-3) { - if(IS_ZERO(star->vrot0)) + Dprint("hello"); + calculate_rotation_variables(star,star->radius); + Dprint("hello again"); + if(FEQUAL(star->vrot0,-2.0)) { /* - * Given zero on the command line, or nothing, - * use the Hurley et al 2000/2002 formula - * Hurley, Phd - * Thesis (2000), Cambridge University, p. 63 + * vrot0 = -2 : + * form at the orbital velocity */ - if(IS_NOT_ZERO(rm)) - { - star->omega = OMEGA_FROM_VKM * vrotf(star->mass) / rm; - } - else - { - star->omega = 0.0; - } - Dprint("from Hurley"); + star->omega = stardata->common.orbital_angular_frequency; + Dprint("from omega orb"); } - else if(FEQUAL(star->vrot0,-1.0)) - { - /* - * vrot0 = -1 : - * form at breakup velocity. - * NB This assumes the radius is deformed - * at the equator - * (see calculate_rotation_variables). - */ - star->omega = star->omega_crit; - Dprint("from omega crit"); - } else { - /* - * Use cmd-line specified vrot (km/s) - * and assume the star is not deformed. - */ - if(IS_NOT_ZERO(rm)) + if(IS_ZERO(star->vrot0)) { - star->omega = OMEGA_FROM_VKM * star->vrot0 / rm; + /* + * Given zero on the command line, or nothing, + * use the Hurley et al 2000/2002 formula + * Hurley, Phd + * Thesis (2000), Cambridge University, p. 63 + */ + if(IS_NOT_ZERO(rm)) + { + star->omega = OMEGA_FROM_VKM * vrotf(star->mass) / rm; + } + else + { + star->omega = 0.0; + } + Dprint("from Hurley"); } + else if(FEQUAL(star->vrot0,-1.0)) + { + /* + * vrot0 = -1 : + * form at breakup velocity. + * NB This assumes the radius is deformed + * at the equator + * (see calculate_rotation_variables). + */ + star->omega = star->omega_crit; + Dprint("from omega crit"); + } else { - star->omega = 0.0; + /* + * Use cmd-line specified vrot (km/s) + * and assume the star is not deformed. + */ + if(IS_NOT_ZERO(rm)) + { + star->omega = OMEGA_FROM_VKM * star->vrot0 / rm; + } + else + { + star->omega = 0.0; + } + Dprint("from cmd"); } - Dprint("from cmd"); - } - /* - * hence set the equatorial angular velocity - * NB (YEAR_LENGTH_IN_SECONDS*1e5/R_SUN ~ 45.35 - */ + /* + * hence set the equatorial angular velocity + * NB (YEAR_LENGTH_IN_SECONDS*1e5/R_SUN ~ 45.35 + */ + } + Dprint("hello"); + calculate_rotation_variables(star,star->radius); } - Dprint("hello"); - calculate_rotation_variables(star,star->radius); - } - /* and hence set the stellar angular momentum */ - Dprint("J from omega=%g k2=%g rm=%g m=%g mc=%g rc=%g\n", - star->omega, - star->k2, - rm, - star->mass, - mc, - rc); - star->angular_momentum = star->omega* - (star->k2*POW2(rm)*(star->mass-mc) + K3*POW2(rc)*mc); + /* and hence set the stellar angular momentum */ + Dprint("J from omega=%g k2=%g rm=%g m=%g mc=%g rc=%g\n", + star->omega, + star->k2, + rm, + star->mass, + mc, + rc); + star->angular_momentum = star->omega* + (star->k2*POW2(rm)*(star->mass-mc) + K3*POW2(rc)*mc); - /* zero derivatives */ - star->derivative[DERIVATIVE_STELLAR_MASS_WIND_LOSS]=0.0; - star->derivative[DERIVATIVE_STELLAR_MASS_WIND_GAIN]=0.0; - star->derivative[DERIVATIVE_STELLAR_ANGMOM]=0.0; - star->stellar_timestep = 1e6; /* large initial timestep */ - + /* zero derivatives */ + star->derivative[DERIVATIVE_STELLAR_MASS_WIND_LOSS]=0.0; + star->derivative[DERIVATIVE_STELLAR_MASS_WIND_GAIN]=0.0; + star->derivative[DERIVATIVE_STELLAR_ANGMOM]=0.0; + star->stellar_timestep = 1e6; /* large initial timestep */ + } } /** end loop over stars **/ model->dtm = 0.0; diff --git a/src/evolution/stellar_evolution.c b/src/evolution/stellar_evolution.c index e918d38b33b4310965f69ff340cded515ef9ef6c..4807c8b09152fa8c3490a7a9265619229956f550 100644 --- a/src/evolution/stellar_evolution.c +++ b/src/evolution/stellar_evolution.c @@ -227,7 +227,7 @@ int stellar_evolution(struct stardata_t * RESTRICT stardata, newstar, stardata, STELLAR_STRUCTURE_CALLER_stellar_evolution); - + Dprint("post call\n"); /* * Save derivatives */ diff --git a/src/evolution/update_the_time.c b/src/evolution/update_the_time.c index c422f29ea5a9d11c9f2861e79fd8915574a1bb1f..ca07580be2179ad5a7ea8ceb9109c82f1a110523 100644 --- a/src/evolution/update_the_time.c +++ b/src/evolution/update_the_time.c @@ -6,5 +6,9 @@ */ void update_the_time(struct stardata_t * stardata) { - stardata->model.time += stardata->model.dtm; + stardata->model.time += +#ifdef REVERSE_TIME + (stardata->preferences->reverse_time == FALSE ? +1.0 : -1.0) * +#endif // REVERSE_TIME + stardata->model.dtm; } diff --git a/src/exit_binaryc.c b/src/exit_binaryc.c index cde8fb689d47eef07f03350528ec0d5baa6a78c5..14183a50254091a0e588241300e720d22697a211 100644 --- a/src/exit_binaryc.c +++ b/src/exit_binaryc.c @@ -20,14 +20,21 @@ #include <errno.h> #include "binary_c.h" +static void exit_binary_c_handler(struct stardata_t * stardata, + char * filename, + const int fileline, + const int errsv, + const int binary_c_error_code, + char * format, + va_list args); -void exit_binary_c(struct stardata_t * stardata, - char * filename, - const int fileline, - const int errsv, - const int binary_c_error_code, - char * format, - ...) +void exit_binary_c_with_stardata(struct stardata_t * stardata, + char * filename, + const int fileline, + const int errsv, + const int binary_c_error_code, + char * format, + ...) { /* * Function to handle the shutdown of BINARY_C in a clean manner: @@ -66,11 +73,49 @@ void exit_binary_c(struct stardata_t * stardata, va_list args; va_start(args,format); + exit_binary_c_handler(stardata, + filename, + fileline, + errsv, + binary_c_error_code, + format, + args); + va_end(args); + +} + +void exit_binary_c_no_stardata(char * filename, + const int fileline, + const int errsv, + const int binary_c_error_code, + char * format, + ...) +{ + va_list args; + va_start(args,format); + exit_binary_c_handler(NULL, + filename, + fileline, + errsv, + binary_c_error_code, + format, + args); + va_end(args); +} + + +static void exit_binary_c_handler(struct stardata_t * stardata, + char * filename, + const int fileline, + const int errsv, + const int binary_c_error_code, + char * format, + va_list args) +{ char s[MAX_EXIT_STATEMENT_PRINT_SIZE]; vsnprintf(s,MAX_EXIT_STATEMENT_PRINT_SIZE,format,args); chomp(s); - va_end(args); - + #ifdef BUFFERED_STACK //Dprint("Dump buffer to stderr\n"); //dump_buffer_to_stderr(); @@ -79,11 +124,11 @@ void exit_binary_c(struct stardata_t * stardata, Boolean longjump = (binary_c_error_code != NORMAL_BATCHMODE_EXIT && binary_c_error_code != SPECIAL_EXIT) #ifdef BATCHMODE - && (stardata!=NULL) - && (stardata->preferences != NULL) - && (BATCHMODE_IS_ON(stardata->preferences->batchmode)) + && (stardata!=NULL) + && (stardata->preferences != NULL) + && (BATCHMODE_IS_ON(stardata->preferences->batchmode)) #else - && 0 + && 0 #endif // BATCHMODE ; @@ -100,10 +145,10 @@ void exit_binary_c(struct stardata_t * stardata, Dprint("batchmode : but we don't want to quit"); if(binary_c_error_code!=SPECIAL_EXIT) { - _printf("SYSTEM_ERROR file %s, line %d, with error code %d: %s (errno=%d)\n", + _printf("SYSTEM_ERROR file %s, line %d, with error code %d: %s (errno=%d)\n", filename,fileline,binary_c_error_code,s,errno); PRINTF("SYSTEM_ERROR file %s, line %d, with error code %d: %s (errno=%d)\n", - filename,fileline,binary_c_error_code,s,errno); + filename,fileline,binary_c_error_code,s,errno); } /* flush all files, close logs, longjmp back to batchmode function */ @@ -127,24 +172,24 @@ void exit_binary_c(struct stardata_t * stardata, if(!isatty(fileno(stdout))) { /* stdout is not a terminal, so output to it */ - _printf("Exit binary_c/nucsyn from file %s, line %d, with error code %d: %s (errno=%d)\n", + _printf("Exit binary_c from file %s, line %d, with error code %d: %s (errno=%d)\n", filename,fileline,binary_c_error_code,s,errno); } /* ... and always output to stderr */ fprintf(stderr, - "Exit binary_c/nucsyn from file %s, line %d, with error code %d: %s (errno=%d)\n", + "Exit binary_c from file %s, line %d, with error code %d: %s (errno=%d)\n", filename,fileline,binary_c_error_code,s,errno); } /* - fprintf(stderr,"Attempting backtrace from exit_binaryc\n"); - Backtrace; + fprintf(stderr,"Attempting backtrace from exit_binaryc\n"); + Backtrace; */ - /* - * Free the global stardata and the store - */ + /* + * Free the global stardata and the store + */ if(stardata!=NULL) free_memory(&stardata,TRUE,TRUE,TRUE); #undef exit @@ -155,11 +200,11 @@ void exit_binary_c(struct stardata_t * stardata, { if(binary_c_error_code == NORMAL_BATCHMODE_EXIT) { - _printf("Normal exit from binary_c/nucsyn (batchmode)\n"); + _printf("Normal exit from binary_c (batchmode)\n"); } else { - _printf("Normal exit from binary_c/nucsyn\n"); + _printf("Normal exit from binary_c\n"); } } @@ -167,6 +212,7 @@ void exit_binary_c(struct stardata_t * stardata, } } + #ifdef GNU_SOURCE_WAS #undef _GNU_SOURCE #define _GNU_SOURCE GNU_SOURCE_WAS diff --git a/src/file/binary_c_fclose.c b/src/file/binary_c_fclose.c new file mode 100644 index 0000000000000000000000000000000000000000..6d3547074ac5536168cc5ef87f6c5b7e046ad2d0 --- /dev/null +++ b/src/file/binary_c_fclose.c @@ -0,0 +1,55 @@ + +#include "../binary_c.h" + +int binary_c_fclose(struct binary_c_file ** fp) +{ + /* + * Given a pointer fp to a binary_c_file structure pointer, close + * the file and free the memory, and set the file structrure pointer + * to NULL. + * + * Return what is returned by fclose, or: + * -2 if the pointer to the file structure pointer is NULL + * -1 if file or file->fp is NULL + */ + int ret; + + if(fp!=NULL) + { + struct binary_c_file * file = *fp; + + if(likely(file != NULL)) + { + if(likely(file->fp != NULL)) + { +#ifdef MEMOIZE + if(file->memo!=NULL) + { + memoize_free(file->memo); + } +#endif // MEMOIZE + ret = fclose(file->fp); + } + else + { + ret = -1; + } + + /* + * Free and explicitly NULL + */ + Safe_free(file); + *fp = NULL; + } + else + { + ret = -1; + } + } + else + { + ret = -2; + } + + return ret; +} diff --git a/src/file/binary_c_fflush.c b/src/file/binary_c_fflush.c new file mode 100644 index 0000000000000000000000000000000000000000..e382546cd56a0ef03eeb47f0e8e99a41a33b02f1 --- /dev/null +++ b/src/file/binary_c_fflush.c @@ -0,0 +1,23 @@ + +#include "../binary_c.h" + +int binary_c_fflush(struct binary_c_file * file) +{ + /* + * Flush a binary_c_file pointer. + * + * Return what is returned from fflush, + * or -1 if file or file->fp is NULL + */ + int ret; + if(likely(file != NULL) && + likely(file->fp != NULL)) + { + ret = fflush(file->fp); + } + else + { + ret = -1; + } + return ret; +} diff --git a/src/file/binary_c_filter_format.c b/src/file/binary_c_filter_format.c new file mode 100644 index 0000000000000000000000000000000000000000..a5b4382d7c31333cc1ffbb812d8a66511ff32d17 --- /dev/null +++ b/src/file/binary_c_filter_format.c @@ -0,0 +1,121 @@ +#include "../binary_c.h" + +/* + * Function to reformat a format string according to + * the given algorithm. Returns a pointer to the new + * format string or the original string if there is + * no change. + * + * The memory allocated by the new format string (returned) + * must later be freed by the user. + */ + +//#define __DEBUG + +char * binary_c_filter_format(const int algorithm, + const char * format) +{ + char * format_copy; + size_t count = strlen(format) + 1; // current length of format string (+1 for NULL) + size_t size = sizeof(char)*count; + format_copy = MALLOC(size); + + if(format_copy==NULL) + { + Exit_binary_c_no_stardata( + ALLOC_FAILED, + "Failed to allocate memory for memo in binary_c_filter_format\n"); + } + else + { + if(algorithm == FILE_FILTER_NOTHING) + { + /* do nothing */ + format_copy = (char*) format; + } + else + { + + memcpy(format_copy,format,size); +#ifdef __DEBUG + /* macro to return 1 if string X is NULL-terminated, 0 otherwise */ +#define NULLterm(X) ((*((X)+strlen(X))=='\0') ? 1 : 0) + + printf("format_copy = %p\n",format_copy); +#endif + + if(algorithm == FILE_FILTER_STRIP_ARGUMENTS) + { + /* remove "x=" from "x=%..." style arguments */ +#ifdef __DEBUG + int i = 0; +#endif + char * arg_start = NULL; + + /* + * Pointers to the start and end of the string + */ + char * this = format_copy; + char * end = this + count - 1; + + /* + * Loop while we have characters to scan + */ + while(this < end && *this != '\0') + { +#ifdef __DEBUG + printf("i=%d count=%ld strlen=%ld PRE : \"%s\" NULL term ? %d\n", + i++, + count, + strlen(format_copy), + format_copy, + NULLterm(format_copy)); +#endif + const char * prev = this > format_copy ? (this - 1) : format_copy; + +#ifdef __DEBUG + printf("this \"%c\" (prev = %c) arg_start=%p, at start? %d\n", + *this, + prev ? (*prev) : '0', + arg_start, + this==format_copy ? 1 : 0 + ); +#endif + if(*this != ' ' && + (this==format_copy || *prev == ' ')) + { + arg_start = this; +#ifdef __DEBUG + printf("ARG_START at %p\n",arg_start); +#endif + } + else if(arg_start!=NULL && (*this) == '=') + { + /* end of argument */ + const char * arg_end = this; + const size_t n = arg_end - arg_start + 1; + memmove(arg_start,arg_end+1,end - arg_end);//strlen(arg_end)); + end -= n; + count -= n; + this = arg_start; + arg_start = NULL; +#ifdef __DEBUG + printf("ARG_END at %p, remove %ld chars\n",arg_end,n); +#endif + } + + this++; +#ifdef __DEBUG + printf("i=%d count=%ld strlen=%ld POST : \"%s\" NULL term? %d\n", + i, + count, + strlen(format_copy), + format_copy, + NULLterm(format_copy)); +#endif + } + } + } + } + return format_copy; +} diff --git a/src/file/binary_c_filter_fprintf.c b/src/file/binary_c_filter_fprintf.c new file mode 100644 index 0000000000000000000000000000000000000000..b49df19dc5ec203c9fa7074dabe110675341846a --- /dev/null +++ b/src/file/binary_c_filter_fprintf.c @@ -0,0 +1,67 @@ + +#include "../binary_c.h" + +//#define __DEBUG +/* + * Wrapper around binary_c_fprintf which processes + * the input format string according to some required algorithm, + * then sends the new format string to binary_c_fprintf. + */ +int binary_c_filter_fprintf(struct binary_c_file * file, + const int algorithm, + const char * format, + ...) +{ + int ret = 0; + if(file!=NULL) + { + va_list args; + va_start(args,format); + +#ifdef MEMOIZE + /* + * If we can, memozie the call. Note that Memoize returns + * a pointer to the hashed content, so we can just free the pointer + * returned by binary_c_filter_format. + */ + if(file->memo==NULL) + { + /* + * Make space for the memo, and set to free results pointers + */ + if(memoize_initialize(&file->memo) != NULL) + { + file->memo->free_results_pointers = 1; + } + else + { + Exit_binary_c_no_stardata( + ALLOC_FAILED, + "Failed to allocate memory for memo in binary_c_filter_fprintf\n"); + } + } + char * format_copy = Memoize( + file->memo, + "filtf", + 10, + array, + char, + 1, + format, + char*, + 1, + binary_c_filter_format(algorithm,format) + ); + ret = binary_c_vprintf(file,format_copy,args); +#else + /* + * Memoize not available. + */ + ret = binary_c_filter_vprintf(file,algorithm,format,args); +#endif // MEMOIZE + + va_end(args); + } + return ret; +} + diff --git a/src/file/binary_c_filter_vprintf.c b/src/file/binary_c_filter_vprintf.c new file mode 100644 index 0000000000000000000000000000000000000000..cf1ab21a71b64d31cf49e2ecbbe3a22a0d9795b1 --- /dev/null +++ b/src/file/binary_c_filter_vprintf.c @@ -0,0 +1,42 @@ + +#include "../binary_c.h" + +/* + * Wrapper around binary_c_fprintf which processes + * the input format string according to some required algorithm, + * then sends the new format string to binary_c_fprintf. + */ + +int binary_c_filter_vprintf(struct binary_c_file * file, + const int algorithm, + const char * format, + va_list args) +{ + + va_list args_copy; + va_copy(args_copy,args); + + /* + * Reformat + */ + char * format_copy = binary_c_filter_format(algorithm, + format); + + + /* + * Call binary_c_fprintf with the updated + * format string + */ + int ret = binary_c_vprintf(file, + format_copy, + args_copy); + + /* + * Clean up + */ + va_end(args_copy); + va_end(args); + Safe_free(format_copy); + + return ret; +} diff --git a/src/file/binary_c_fopen.c b/src/file/binary_c_fopen.c new file mode 100644 index 0000000000000000000000000000000000000000..6902b577f78457c2877818efedde04aaa0d45722 --- /dev/null +++ b/src/file/binary_c_fopen.c @@ -0,0 +1,48 @@ + +#include "../binary_c.h" + +struct binary_c_file * binary_c_fopen(const char * RESTRICT path, + const char * RESTRICT mode, + const size_t maxsize) +{ + /* + * open the file at "path" with mode "mode", + * + * Set its maxsize, which is ignored if zero, + * and current size (zero). + * + * Returns a pointer to the newly allocated file struct. + * + * The return value from fopen is set as file->fp + * + * On failure, returns NULL and frees all + * associated memory. + */ + struct binary_c_file * file = MALLOC(sizeof(struct binary_c_file)); + if(file != NULL) + { + file->fp = fopen(path,mode); +#ifdef MEMOIZE + file->memo = NULL; +#endif // MEMOIZE + if(file->fp) + { + /* + * Opened ok, set values. + */ + file->size = 0; + file->maxsize = maxsize; + strlcpy(file->path, + path, + sizeof(char)*(STRING_LENGTH-1)); + } + else + { + /* + * Failure: free to NULL + */ + Safe_free(file); + } + } + return file; +} diff --git a/src/file/binary_c_fprintf.c b/src/file/binary_c_fprintf.c new file mode 100644 index 0000000000000000000000000000000000000000..32460ae7c7a4760e41d33e021a50fdcce9769548 --- /dev/null +++ b/src/file/binary_c_fprintf.c @@ -0,0 +1,19 @@ + +#include "../binary_c.h" + + +int binary_c_fprintf(struct binary_c_file * file, + const char * format, + ...) +{ + /* + * For a variable arg list, call vprintf + * to do the work + */ + int written = 0; + va_list args; + va_start(args,format); + written = binary_c_vprintf(file,format,args); + va_end(args); + return written; +} diff --git a/src/file/binary_c_vprintf.c b/src/file/binary_c_vprintf.c new file mode 100644 index 0000000000000000000000000000000000000000..cd96263eae53193a382f1d9c65946e502a372b4d --- /dev/null +++ b/src/file/binary_c_vprintf.c @@ -0,0 +1,43 @@ + +#include "../binary_c.h" + +int binary_c_vprintf(struct binary_c_file * file, + const char * format, + va_list args) +{ + /* + * like fprintf to a binary_c file + * + * checks whether we're allowed to write more + * characters to the file, if so, do it. + * Returns the number of characters written. + * + * On failure, just don't write (return 0). + */ + int written = 0; + if(file!=NULL && file->fp!=NULL) + { + va_list copy; + va_copy(copy,args); + + /* + * Determine how many characters + * we would write + */ + const size_t n = (file->maxsize==0) ? -1 : + vsnprintf(NULL,0,format,copy); + va_end(copy); + + /* + * If allowed, write + */ + if(n==-1 || + n + file->size < file->maxsize) + { + vfprintf(file->fp,format,args); + file->size += n; + written += n; + } + } + return written; +} diff --git a/src/file/file_macros.h b/src/file/file_macros.h new file mode 100644 index 0000000000000000000000000000000000000000..53d5b59b89b33b1b70590bc80144421fe33fc12c --- /dev/null +++ b/src/file/file_macros.h @@ -0,0 +1,7 @@ +#pragma once +#ifndef BINARY_C_FILE_MACROS_H +#define BINARY_C_FILE_MACROS_H + + +#define Safe_fclose(X) if((X)!=NULL)fclose(X) +#endif // BINARY_C_FILE_MACROS_H diff --git a/src/file/file_prototypes.h b/src/file/file_prototypes.h new file mode 100644 index 0000000000000000000000000000000000000000..f5427dcf9b995543653b7d67bbdd9b4ec3235c46 --- /dev/null +++ b/src/file/file_prototypes.h @@ -0,0 +1,27 @@ + +#ifndef FILE_H +#define FILE_H + +struct binary_c_file * binary_c_fopen(const char * RESTRICT path, + const char * RESTRICT mode, + const size_t maxsize); +int binary_c_fprintf(struct binary_c_file * file, + const char * format, + ...); +int binary_c_fclose(struct binary_c_file ** file); +int binary_c_fflush(struct binary_c_file * file); +int binary_c_filter_fprintf(struct binary_c_file * file, + const int filter_algorithm, + const char * format, + ...); +int binary_c_vprintf(struct binary_c_file * file, + const char * format, + va_list args); +int binary_c_filter_vprintf(struct binary_c_file * file, + const int algorithm, + const char * format, + va_list args); +char * binary_c_filter_format(const int algorithm, + const char * format); + +#endif// FILE_H diff --git a/src/logging/close_log_files.c b/src/logging/close_log_files.c index f5c751ce02683796ba686a368a8caad16e3600bb..8b1653c6f5a500e7889ad1d65c1bf29cbe0db2c2 100644 --- a/src/logging/close_log_files.c +++ b/src/logging/close_log_files.c @@ -9,17 +9,17 @@ void close_log_files(FILE *(*log_fp), #ifdef DISCS #ifdef DISC_LOG_2D - if(stardata->tmpstore->logfile2d != NULL) + if(unlikely(stardata->tmpstore->disc_logfile2d != NULL)) { - fclose(stardata->tmpstore->logfile2d); - stardata->tmpstore->logfile2d=NULL; + binary_c_fclose(&stardata->tmpstore->disc_logfile2d); + stardata->tmpstore->disc_logfile2d=NULL; } #endif //DISC_LOG_2D #ifdef DISC_LOG - if(stardata->tmpstore->logfile != NULL) + if(unlikely(stardata->tmpstore->disc_logfile != NULL)) { - fclose(stardata->tmpstore->logfile); - stardata->tmpstore->logfile=NULL; + binary_c_fclose(&stardata->tmpstore->disc_logfile); + stardata->tmpstore->disc_logfile=NULL; } #endif //DISC_LOG #endif//DISCS @@ -31,7 +31,7 @@ void close_log_files(FILE *(*log_fp), #ifdef FILE_LOG Dprint("FP trying to close files\n"); - if(*log_fp!=NULL && fclose(*log_fp)!=0) + if(*log_fp!=NULL && unlikely(fclose(*log_fp)!=0)) { perror("open_log_files error on close log_fp"); char errorstring[1024]; diff --git a/src/logging/log_every_timestep.c b/src/logging/log_every_timestep.c index 15ffe788907d998092de217e2b185d33f3b96844..159216c176d285a7abdacded626f629fbbb3e52a 100644 --- a/src/logging/log_every_timestep.c +++ b/src/logging/log_every_timestep.c @@ -32,19 +32,23 @@ void log_every_timestep(struct stardata_t * RESTRICT stardata) * No logging when RLOF-interpolating * (negative timesteps are bad!). */ - if(stardata->model.dtm<-TINY) return; + if(unlikely(stardata->model.dtm<-TINY)) return; /* timestep and dtp */ Boolean first_timestep=IS_ZERO(stardata->model.time); - if(first_timestep==TRUE) stardata->model.prev_log_t=0.0; + if(unlikely(first_timestep==TRUE)) stardata->model.prev_log_t=0.0; double dt = stardata->model.time - stardata->model.prev_log_t; double dtp MAYBE_UNUSED = dt * stardata->model.probability; stardata->model.prev_log_t = stardata->model.time; - + /* single star condition */ Boolean single MAYBE_UNUSED = system_is_observationally_single(stardata); Boolean binary MAYBE_UNUSED = NOT(single); + /* detect final timestep */ + Boolean final MAYBE_UNUSED = FEQUAL(stardata->model.time, + stardata->model.max_evolution_time); + if(0)PRINTF("TESTLOG %30.12e %g %g %d %g %g %g\n", stardata->model.time, // 1 stardata->star[0].mass,//2 @@ -69,12 +73,11 @@ void log_every_timestep(struct stardata_t * RESTRICT stardata) ,stardata->model.dt ); - //if(stardata->star[0].stellar_type>=6) - if(0)printf("HRDHRD %d %g %g\n", - stardata->star[0].stellar_type, - Teff(0), - stardata->star[0].luminosity); - + if(0&&stardata->star[0].stellar_type>=6) + printf("HRDHRD %d %g %g\n", + stardata->star[0].stellar_type, + HRdiagram(0)); + #if defined GAIA && \ defined STELLAR_COLOURS /* @@ -2212,67 +2215,44 @@ void log_every_timestep(struct stardata_t * RESTRICT stardata) #endif // UNIT_TESTS #ifdef DISCS - disc_logging(stardata); -#endif // DISCS - /* - printf("ACCLOG %g %g %g %g\n", - stardata->model.time, - stardata->star[0].mass, - stardata->star[0].stellar_type==HeMS ? stardata->star[0].mass : stardata->star[0].core_mass, - stardata->star[0].phase_start_mass - ); - */ + disc_logging(stardata,NULL,DISC_LOG_EVERY_TIMESTEP); +#ifdef LOG_POSTAGB_STARS /* - * 7100 = 1Gyr + * Count post-AGB stars for Hans */ - if(0 && - stardata->model.time > 7800 && - stardata->model.time < 8800) +#define POST_AGB_MIN_TEFF 6000 +#define POST_AGB_MAX_TEFF 20000 +#define POST_AGB_MAX_MENV 0.1 +#define POST_AGB_STELLAR_TYPE(ST) (ON_GIANT_BRANCH(ST)) + + Star_number k; + STARLOOP(k) { - PRINTF("KARSTEN t=%g Teff=%g %g st=%d %d P=%g\n", - stardata->model.time, - Teff(0), - Teff(1), - stardata->star[0].stellar_type, - stardata->star[1].stellar_type, - stardata->common.orbital_period * 365.25 - ); + SETstar(k); + double teff = Teff(k); + if(POST_AGB_STELLAR_TYPE(star->stellar_type) && + star->mass - star->core_mass < POST_AGB_MAX_MENV && + IN_RANGE(teff, + POST_AGB_MIN_TEFF, + POST_AGB_MAX_TEFF)) + { + Boolean has_disc = Boolean_(stardata->common.ndiscs > 0); + PRINTF("POSTAGB %g %g %d %d %g %g %g\n", + stardata->model.time, // Myr + dtp, + star->stellar_type, + has_disc, + teff, + stardata->common.orbital_period, // y + stardata->common.eccentricity); + } } +#endif // LOG_POSTAGB_STARS - - /* - * Count post-AGB stars for Hans - */ - /* - #define POST_AGB_MIN_TEFF 6000 - #define POST_AGB_MAX_TEFF 20000 - #define POST_AGB_MAX_MENV 0.1 - #define POST_AGB_STELLAR_TYPE(ST) (ON_GIANT_BRANCH(ST)) +#endif // DISCS + - Star_number k; - STARLOOP(k) - { - SETstar(k); - double teff = Teff(k); - if(POST_AGB_STELLAR_TYPE(star->stellar_type) && - star->mass - star->core_mass < POST_AGB_MAX_MENV && - IN_RANGE(teff, - POST_AGB_MIN_TEFF, - POST_AGB_MAX_TEFF)) - { - Boolean has_disc = Boolean_(stardata->common.ndiscs > 0); - PRINTF("POSTAGB %g %g %d %d %g %g %g\n", - stardata->model.time, // Myr - dtp, - star->stellar_type, - has_disc, - teff, - stardata->common.orbital_period, // y - stardata->common.eccentricity); - } - } - */ #ifdef NUCSYN if(0 && stardata->star[0].stellar_type < 10) @@ -2352,4 +2332,77 @@ void log_every_timestep(struct stardata_t * RESTRICT stardata) } #endif // NUCSYN, NUCSYN_ANGELOU_LITHIUM, NUCSYN_ANGELOU_LITHIUM_LOGGING +#ifdef FABIAN_COSMOLOGY + struct star_t * star = & stardata->star[0]; + + if(star->stellar_type != MASSLESS_REMNANT) + { + if(NUCLEAR_BURNING(star->stellar_type)) + { + if(NAKED_HELIUM_STAR(star->stellar_type)) + { + star->final_helium_core_mass = star->mass; + } + else + { + star->final_helium_core_mass = star->core_mass; + } + + if(CARBON_CORE_STAR(star->stellar_type)) + { + star->final_carbon_core_mass = star->core_mass; + } + + star->final_nuclear_burning_mass = star->mass; + star->nuclear_burning_lifetime = stardata->model.time; + + } + } + + if(final == TRUE) + { + PRINTF("FABIAN_COSMOLOGY %g %g %g %g %g %g %g %s \n", + stardata->common.metallicity, + star->pms_mass, + star->final_helium_core_mass, + star->final_carbon_core_mass, + star->final_nuclear_burning_mass, + star->mass, + star->nuclear_burning_lifetime, + Short_stellar_type_string(star->stellar_type)); + } +#endif//FABIAN_COSMOLOGY + + +#ifdef __CHECK_TIMESTEP + printf("SYS %g %g %g %g %g %g %g %g %g %g %g %g\n", + stardata->model.time, + stardata->star[0].mass, // 2 + stardata->star[1].mass, + stardata->star[0].angular_momentum, //4 + stardata->star[1].angular_momentum, //5 + stardata->common.separation, //6 + stardata->common.orbital_period,//7 + stardata->common.orbital_angular_momentum, + stardata->star[0].derivative[DERIVATIVE_STELLAR_ANGMOM_TIDE],//9 + stardata->star[1].derivative[DERIVATIVE_STELLAR_ANGMOM_TIDE], + stardata->star[0].derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY],//11 + stardata->star[1].derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY] + ); +#endif//__CHECK_TIMESTEP + + /* + if(stardata->model.time > 0.0 && + stardata->star[0].stellar_type<3) + { + printf("KARSTEN %g %g %g %g %g\n", + stardata->model.time, + stardata->star[0].mass, + stardata->star[1].mass, + YEAR_LENGTH_IN_DAYS * stardata->common.orbital_period, + stardata->common.orbital_angular_momentum + + ); + } + */ } diff --git a/src/logging/open_log_files.c b/src/logging/open_log_files.c index 2f4ce28770dbfe791e87e1a8b19d5ddde0e6222e..ba28379960caf32f6370ddc545c565cef6962d68 100644 --- a/src/logging/open_log_files.c +++ b/src/logging/open_log_files.c @@ -9,7 +9,7 @@ void open_log_files(FILE *(*log_fp), #ifdef FILE_LOG #ifdef FILE_LOG_REWIND - if(*log_fp!=NULL && *log_fp!=stdout && *log_fp!=stderr) + if(likely(*log_fp!=NULL && *log_fp!=stdout && *log_fp!=stderr)) { /* log is already open, just rewind and truncate it */ Dprint("rewind log_fp\n"); @@ -30,12 +30,12 @@ void open_log_files(FILE *(*log_fp), } #endif - if(strcmp(stardata->preferences->log_filename,"/dev/null")==0) + if(unlikely(strcmp(stardata->preferences->log_filename,"/dev/null")==0)) { /* force a NULL pointer so we do nothing */ *log_fp = NULL; } - else if(strcmp(stardata->preferences->log_filename,"/dev/stdout")==0) + else if(unlikely(strcmp(stardata->preferences->log_filename,"/dev/stdout")==0)) { /* redirect output to stdout */ *log_fp=stdout; @@ -48,7 +48,7 @@ void open_log_files(FILE *(*log_fp), fflush(*log_fp); #endif } - else if(strcmp(stardata->preferences->log_filename,"/dev/stderr")==0) + else if(unlikely(strcmp(stardata->preferences->log_filename,"/dev/stderr")==0)) { /* redirect output to stderr */ *log_fp=stderr; @@ -64,9 +64,8 @@ void open_log_files(FILE *(*log_fp), else { /* open log and check for error */ - if(*log_fp==NULL && - (*log_fp=fopen(stardata->preferences->log_filename,"w"))==NULL) + unlikely((*log_fp=fopen(stardata->preferences->log_filename,"w"))==NULL) ) { perror("open_log_files error on open log_fp"); char errorstring[1024]; @@ -80,7 +79,12 @@ void open_log_files(FILE *(*log_fp), } else { - fprintf(*log_fp," TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE"); + fprintf(*log_fp, + " TIME M1 M2 K1 K2 SEP ECC R1/ROL1 R2/ROL2 TYPE RANDOM_SEED=%ld", + (stardata->preferences->cmd_line_random_seed!=0 ? + stardata->preferences->cmd_line_random_seed : + stardata->common.random_seed) + ); #ifdef CIRCUMBINARY_DISK_DERMINE fprintf(*log_fp," MCBDISK"); #endif // CIRCUMBINARY_DISK_DERMINE diff --git a/src/logging/output_to_logfile.c b/src/logging/output_to_logfile.c index 32faabe18fb9e6027cdaffd9469ab754aee2f28d..b063eb92f23e0831b03e41a3c730fe4777b97e3a 100644 --- a/src/logging/output_to_logfile.c +++ b/src/logging/output_to_logfile.c @@ -10,6 +10,7 @@ #define NANCHECKL(A) \ if(isnan(A)!=0) \ { \ + Backtrace; \ Exit_binary_c(EXIT_NAN,"NaN in logfile at %s\n",STRINGOF(A)); \ } @@ -55,7 +56,7 @@ void output_to_logfile(FILE *fp, NANCHECKL(tphys); NANCHECKL(m1); NANCHECKL(m2); - NANCHECKL(sep); + //NANCHECKL(sep); NANCHECKL(ecc); #endif snprintf(c1,4,"%d",stardata->star[0].stellar_type); @@ -106,10 +107,16 @@ void output_to_logfile(FILE *fp, snprintf(logstring, LOGSTRINGLENGTH, "%11.4lf%9.3lf%9.3lf%3s%3s%13.5g%6.2lf%8.3lf%8.3lf %s", - tphys,m1,m2,c1,c2, - ((stardata->star[0].stellar_type != MASSLESS_REMNANT && - stardata->star[1].stellar_type != MASSLESS_REMNANT) ? sep : -1.0), - ecc,MIN(999.0,r1_rol),MIN(999.0,r2_rol),type); + tphys, + m1, + m2, + c1, + c2, + (NEITHER_STAR_MASSLESS ? sep : -1.0), + ecc, + MIN(999.0,r1_rol), + MIN(999.0,r2_rol), + type); #ifdef CIRCUMBINARY_DISK_DERMINE { diff --git a/src/logging/show_derivatives.c b/src/logging/show_derivatives.c index 3e8d619364f73028d564fd5d1153fbbbcf483097..58517116cc12e24002f3d5a47c1ceb75a72295fa 100644 --- a/src/logging/show_derivatives.c +++ b/src/logging/show_derivatives.c @@ -16,8 +16,9 @@ void show_derivatives(struct stardata_t * stardata) STARLOOP(n) { SETstar(n); - PRINTF("Star %d M=%g Mc=%g Menv=%g L=%g R=%g RL=%g J=%g\n", + PRINTF("Star %d type %d M=%g Mc=%g Menv=%g L=%g R=%g RL=%g J=%g\n", n, + star->stellar_type, star->mass, star->core_mass, star->mass - star->core_mass, diff --git a/src/logging/wtts_log.c b/src/logging/wtts_log.c index ebe7e0525592fdc96caed0ffc95e52b5eef7986e..bfe3c7a9f550493cfd73ebc6288b0a72697db767 100644 --- a/src/logging/wtts_log.c +++ b/src/logging/wtts_log.c @@ -64,7 +64,8 @@ void wtts_log(struct stardata_t * RESTRICT stardata, // calculate number of columns int nsys_cols=(int)(sizeof(sys_cols)/sizeof(struct datacolumn_t)); - if(IS_ZERO(stardata->model.time) || fp_sys==NULL) + if((IS_ZERO(stardata->model.time) && fp_sys==NULL) + || fp_sys==NULL) { fp_sys = fopen("./system","w"); if(fp_sys!=NULL) @@ -145,7 +146,7 @@ void wtts_log(struct stardata_t * RESTRICT stardata, if(fp==NULL) { char f[200]; - sprintf(f,"./star%d",i); + snprintf(f,9,"./star%d",i); fp_star[Other_star(i)]=fopen(f,"w"); if(fp_star[Other_star(i)]==NULL) diff --git a/src/main.c b/src/main.c index f9c4306538dac1715e9715e3fe853c0cb3dae5f3..0b7a37d07c715932f81ac91bbf23a5bdb74f887b 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,6 @@ #include "binary_c_main.h" + /* * main function for the binary_c code * @@ -101,7 +102,7 @@ int binary_c_main(int argc, kap_fop); fflush(stdout); - _exit(0); + Exit_binary_c(0,"Exit after testing opacity table"); #endif @@ -125,8 +126,9 @@ int binary_c_main(int argc, if(repeat_reset && repeat) { reset_preferences(preferences); - set_up_variables(argc,argv,NULL,stardata); + set_up_variables(argc,argv,NULL,stardata); } + check_nans_are_signalled(); #ifdef DISC_TESTING tbdisc_testing(stardata); diff --git a/src/maths/binary_c_drandr_prototypes.h b/src/maths/binary_c_drandr_prototypes.h index 78d2d1733454a0c5c24c25a479be0ae5dd95b0b1..7a97aa67c8f9087d1eb4a1e9c2a97268e958c395 100644 --- a/src/maths/binary_c_drandr_prototypes.h +++ b/src/maths/binary_c_drandr_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_DRANDR_PROTOTYPES_H #define BINARY_C_DRANDR_PROTOTYPES_H diff --git a/src/maths/brent_GSL_valist.c b/src/maths/brent_GSL_valist.c index 4351b0dc8b32bf7a3b64540b10a6fc69635cbb74..48cee839dcdd9415999ed1bab9db255db618093d 100644 --- a/src/maths/brent_GSL_valist.c +++ b/src/maths/brent_GSL_valist.c @@ -14,6 +14,11 @@ * func is the function that does the computation: this should * return (calulated / constraint - 1.0) * + * wrapper_func calls func after testing its args for things + * such as whether log spacing should be used. If this is NULL + * it is ignored, and func is called directly. + * + * * [If you seek constraint = 0, you'll have to rewrite your equations.] * * itmax is the maximum number of iterations @@ -24,11 +29,14 @@ * for convergence : fabs(calculated/constraint - 1.0) < tol */ -double brent_GSL_valist(double (*func)(double,void*), + +double brent_GSL_valist(brent_function wrapper_func, + brent_function func, const int itmax, const double xmin, const double xmax, const double tol, + const Boolean uselog, va_list args) { double ret = -1.0; @@ -36,15 +44,21 @@ double brent_GSL_valist(double (*func)(double,void*), const int vb = 0; int status, iter = 0; + /* + * the parameters sent to the function should + * be inside a GSL_args struct + */ + struct GSL_args_t * GSL_args = MALLOC(sizeof(struct GSL_args_t)); + GSL_args->func = func; + GSL_args->uselog = uselog; + if(vb) { printf("setup brent : itmax=%d xmin=%g xmax=%g tol=%g\n", itmax,xmin,xmax,tol ); fflush(NULL); - } - - + } const gsl_root_fsolver_type * T = GSL_ROOT_FSOLVER; @@ -67,22 +81,22 @@ double brent_GSL_valist(double (*func)(double,void*), } #endif - gsl_function F; + gsl_function * F = MALLOC(sizeof(gsl_function)); if(vb) { printf("set F\n");fflush(NULL); } - F.function = func; + F->function = wrapper_func ? wrapper_func : func; - va_list args_copy; - va_copy(args_copy,args); + /* * Calling gsl_root_fsolver_set requires args to * be accessed, which messes up the va_list, so use * a copy (args_copy) instead */ - F.params = &args_copy; + F->params = GSL_args; + va_copy(GSL_args->args,args); if(vb) { @@ -92,14 +106,13 @@ double brent_GSL_valist(double (*func)(double,void*), ); fflush(NULL); } - //gsl_set_error_handler_off(); - status = gsl_root_fsolver_set(s,&F,xmin,xmax); - va_end(args_copy); - + gsl_set_error_handler_off(); + status = gsl_root_fsolver_set(s,F,xmin,xmax); + if(status) { Backtrace; - printf("F = %p\n",&F); + printf("F = %p\n",F); printf("xmin=%g xmax=%g\n",xmin,xmax); printf("s=%p\n",s); printf("status = %d\n",status); @@ -126,19 +139,19 @@ double brent_GSL_valist(double (*func)(double,void*), double x_lo = xmin; double x_hi = xmax; - double r=0.0; + double r = 0.0; do { iter++; if(vb) printf("iter %d\n",iter); status = gsl_root_fsolver_iterate(s); - r = gsl_root_fsolver_root (s); - x_lo = gsl_root_fsolver_x_lower (s); - x_hi = gsl_root_fsolver_x_upper (s); - status = gsl_root_test_interval (x_lo, - x_hi, - 0, - tol); + r = gsl_root_fsolver_root(s); + x_lo = gsl_root_fsolver_x_lower(s); + x_hi = gsl_root_fsolver_x_upper(s); + status = gsl_root_test_interval(x_lo, + x_hi, + 0, + tol); if(vb) { @@ -157,7 +170,15 @@ double brent_GSL_valist(double (*func)(double,void*), * Free and return */ gsl_root_fsolver_free(s); + Safe_free(F); + Safe_free(GSL_args); + ret = r; +#else + Exit_binary_c_no_stardata( + ALGORITHM_BRANCH_FAILURE, + "No non-GSL function to do Brent interpolation is available. Please compile with GSL."); #endif//USE_GSL + return ret; } diff --git a/src/maths/check_nans_are_signalled.c b/src/maths/check_nans_are_signalled.c new file mode 100644 index 0000000000000000000000000000000000000000..50cf04d438efebcd446e99b1f9cd993cace5b84b --- /dev/null +++ b/src/maths/check_nans_are_signalled.c @@ -0,0 +1,48 @@ +#include "binary_c.h" + +void check_nans_are_signalled(void) +{ +#ifdef CHECK_ISNAN_WORKS + /* + * Some algorithms in binary_c require NaN to be + * correctly identified. So, check that isnan works. + * + * GCC 8 requires -fsignaling-nans if -ffast-math is used. + * + * Clang 5 does not require (in fact, does not support) -fsignaling-nans + * with -ffast-math to detect nans. + * + * On failure, exits with an error message to stdout and stderr. + */ + + double nan; +#ifdef NAN + /* + * gcc provides NAN which is always not-a-number + */ + nan = NAN; +#else + nan = 0.0 / 0.0; +#endif + + if(isnan(nan)!=0) + { + /* + * NaN is detected correctly + */ + } + else + { + /* + * NaN is not detected correctly. + */ +#define _ERRSTRING "Not-a-number (NaN or nan) is not detected as NaN. This means some algorithms will fail. Please build with -fsignaling-nans enabled. (Note that \"-ffast-math\" disables \"-fsignaling-nans\" by default, and this is not what you want, try making sure that \"-fsignaling-nans\" appears after \"-ffast-math\" in the Makefile. You should probably also enable -fno-finite-math-only.)\n" + + fprintf(stderr,_ERRSTRING); + fprintf(stdout,_ERRSTRING); + Backtrace; + Exit_binary_c_no_stardata(BINARY_C_ISNAN_FAILED, + _ERRSTRING); + } +#endif // CHECK_ISNAN_WORKS +} diff --git a/src/maths/fastpow.c b/src/maths/fastpow.c new file mode 100644 index 0000000000000000000000000000000000000000..211d50acc1b7f58407b742a8eda857a00fa81f0a --- /dev/null +++ b/src/maths/fastpow.c @@ -0,0 +1,42 @@ +#include "../binary_c.h" + + +double fastPow(const double a, + const double b) +{ +/* + * From https://martin.ankerl.com/2007/10/04/optimized-pow-approximation-for-java-and-c-c/ + * + * An approximate pow(a,b) function + */ + + if(FEQUAL(b,0.0)) + { + return 1.0; + } + else if(FEQUAL(a,0.0)) + { + return 0.0; + } + else + { + union { + double d; + int x[2]; + } u = { a }; + + if(b < 0.0) + { + u.x[1] = (int)(-b * (u.x[1] - 1072632447) + 1072632447); + u.x[0] = 0; + return - (u.d); + } + else + { + u.x[1] = (int)(b * (u.x[1] - 1072632447) + 1072632447); + u.x[0] = 0; + return u.d; + } + } +} + diff --git a/src/maths/generic_bisect.c b/src/maths/generic_bisect.c index ef913181aba594045cd93b6825a2733a3bd4131b..cd8199338f9a25bfab1eae72cb66367062f2becb 100644 --- a/src/maths/generic_bisect.c +++ b/src/maths/generic_bisect.c @@ -37,11 +37,14 @@ * * itmax is the maximum number of iterations * + * If uselog is TRUE then use log(x) instead of (x) when + * bisecting. This may, or may not, be quicker. * * Returns the converged value with *error == BISECT_ERROR_NONE * on success. * - * On failure, sets *error and returns BISECT_RETURN_FAIL. + * On failure, sets *error and returns BISECT_RETURN_FAIL, + * although the return value is not useful in this case. * * If BISECT_FAIL_EXIT is defined, exits on error. * This is not ideal when running a population of stars: you @@ -53,49 +56,40 @@ * make your function return 1.0 - x/X which is nearer to 1.0. */ - #include "../binary_c.h" - -//#define BISECT_SHOW_RANGE -/* - * Bisection stats and checks. - * NB Stats are not thread safe, and are - * just for testing and/or optimization. - */ -//#define BISECT_STATS -#define BISECT_BRACKET_CHECKS -#ifdef NANCHECKS -#define BISECT_NANS -#endif - -#define INCREASE 2.0 -#define DECREASE 0.5 - -/* allow verbosity */ -#define VBPRINT(...) \ - if(vb) \ - { \ - generic_bisect_vbprint(n,__VA_ARGS__); \ - } - -static void generic_bisect_vbprint(int n, - char * RESTRICT format, - ...); - +#include "generic_bisect.h" double generic_bisect(int * RESTRICT error, const int monochecks, int n, - double (*func)(double, void * p), - const double guess, - const double min, - const double max, + brent_function func, + double guess, + double min, + double max, const double tol, const int itmax, + const Boolean uselog, const double alpha, ... ) { + /* + * If uselog, then adjust ranges. + * + * Allow min to be zero by setting it to REALLY_TINY. + */ + if(uselog == TRUE) + { + if(min<-TINY || max<-TINY) + { + Exit_binary_c_no_stardata( + OUT_OF_RANGE, + "if using logarithms in generic_bisect, the minimum cannot be <=0\n"); + } + min = log10(MAX(REALLY_TINY,min)); + max = log10(MAX(REALLY_TINY,max)); + guess = log10(guess); + } int vb = 0; *error = BISECT_ERROR_NONE; va_list args_master,args; @@ -104,14 +98,10 @@ double generic_bisect(int * RESTRICT error, double x = guess; const double guessin = guess; - /* - * call va_start to get args_master - * - * then we always copy this to access the args passed in - */ - va_start(args_master,alpha); - - if(n<0) + /* set up GSL args */ + struct GSL_args_t * GSL_args = MALLOC(sizeof(struct GSL_args_t)); + + if(unlikely(n<0)) { /* * Called with a negative identifier: this means @@ -122,18 +112,26 @@ double generic_bisect(int * RESTRICT error, n = -n; } + //if(n==BISECTOR_DISC_BISECTION_ROOTER) vb = 1; + + /* + * call va_start to get args_master + * + * then we always copy this to access the args passed in + */ + va_start(args_master,alpha); + VBPRINT("generic_bisect: guess=%g min=%g max=%g tol=%g itmax=%d func=%p alpha=%g\n", guess,min,max,tol,itmax,func,alpha); - /* * If min == max, there's no point in doing anything. * We should just return min (or max). */ - if(IS_REALLY_ZERO(min-max)) + if(unlikely(IS_REALLY_ZERO(min-max))) { - VBPRINT("generic_bisect: min==max=%g, just returning this\n",min) - return min; + VBPRINT("generic_bisect: min==max=%g, just returning this\n",min); + Clean_return(min); } @@ -148,43 +146,25 @@ double generic_bisect(int * RESTRICT error, #endif #ifdef BISECT_NANS -#define CALLFUNCNANCHECK(X) \ - if(isnan(X)) \ - { \ - Backtrace; \ - Exit_binary_c_no_stardata( \ - EXIT_NAN, \ - "NAN failure (bisector %d %s)", \ - n, \ - Bisector_string(n) \ - ); \ +#define CALLFUNCNANCHECK(X) \ + if(unlikely(isnan(X))) \ + { \ + Backtrace; \ + Exit_binary_c_no_stardata( \ + EXIT_NAN, \ + "NAN failure (bisector %d %s)", \ + n, \ + Bisector_string(n) \ + ); \ } #else #define CALLFUNCNANCHECK(X) #endif - /* - * Define the function call. - * Note: if the return value is within tolerance, - * immediately return, this is good enough! - * - * Should it be args or &args? - */ -#define CALLFUNC(X) \ - va_copy(args,args_master); \ - va_start((args),(alpha)); \ - ret = (*func)((X),(void*)(&args)); \ - va_end(args); \ - CALLFUNCNANCHECK((ret)); \ - if(fabs(ret) < tol) { \ - va_end(args_master); \ - return (X); \ - } \ - POSTFUNC; #ifdef BISECT_DO_MONOCHECKS - if(monochecks != BISECT_NO_MONOCHECKS) + if(unlikely(monochecks != BISECT_NO_MONOCHECKS)) { /* * Check function is monotonic, i.e. slope is positive. @@ -204,13 +184,65 @@ double generic_bisect(int * RESTRICT error, const double fmax = 1.0 - eps; const double xmin = min; const double xmax = max; + int GSL_error_min, GSL_error_max; + + /* + * monotonous checks + * + * xmin should be < xmax, but + * there may be no solution right + * on the edge of the range, so try + * slightly inside as well. + */ CALLFUNC(xmin); - double retmin = ret; + if(unlikely(GSL_args->error)) + { + VBPRINT("xmin gave error : trying just above\n"); + CALLFUNC(xmin + range*eps); + if(GSL_args->error) + { + GSL_error_min = 1; + VBPRINT("This failed too\n"); + } + else + { + VBPRINT("This worked\n"); + GSL_error_min = 0; + } + } + else + { + GSL_error_min = 0; + } + const double retmin = ret; + CALLFUNC(xmax); - double retmax = ret; - double diff = retmax - retmin; - double sign = IS_REALLY_ZERO(diff) ? 0.0 : diff / fabs(diff); - VBPRINT("Monocheck at xmin=%g -> low %g, xmax=%g -> high %g : diff = %g : sign %g\n", + if(unlikely(GSL_args->error)) + { + VBPRINT("xmax gave error : trying just below\n"); + CALLFUNC(xmax - range*eps); + if(GSL_args->error) + { + GSL_error_max = 1; + VBPRINT("This failed too\n"); + } + else + { + VBPRINT("This worked\n"); + GSL_error_max = 0; + } + } + else + { + GSL_error_max = 0; + } + + const double retmax = ret; + const double diff = retmax - retmin; + double sign = SIGN_REALLY(diff); + VBPRINT("Monocheck: GSL_error? min %d max %d : f(xmin = %g) = %g, f(xmax = %g) = high %g : diff = %g : sign %g\n", + GSL_error_min, + GSL_error_max, xmin, retmin, xmax, @@ -224,29 +256,88 @@ double generic_bisect(int * RESTRICT error, *error = IS_REALLY_ZERO(diff) ? BISECT_ERROR_ALL_ZERO : (sign < 0.0) ? BISECT_ERROR_NON_MONOTONICALLY_INCREASING : + GSL_error_min ? BISECT_ERROR_FUNCTION_FAILED : + GSL_error_max ? BISECT_ERROR_FUNCTION_FAILED : *error; - if(*error) + if(unlikely(*error)) { + int show = 0; if(*error == BISECT_ERROR_ALL_ZERO) { + show = 1; VBPRINT("WARNING : evalulations at the minimum and maximum of the bisector function (%d \"%s\") range are both zero. This function cannot be bisected.\n", n, Bisector_string(n)); } else if(*error == BISECT_ERROR_NON_MONOTONICALLY_INCREASING) { - VBPRINT("WARNING : evalulations at the minimum and maximum of the bisector function (%d \"%s\") give the wrong sign (sign = %g). Please fix the function so it is montonically increasing with its parameter.\n", + show = 1; + VBPRINT("WARNING : evalulations at the minimum (%g) and maximum (%g) of the bisector function (%d \"%s\") give the wrong sign (sign = %g). Please fix the function so it is montonically increasing with its parameter.\n", + min, + max, n, Bisector_string(n), sign); + Exit_binary_c_no_stardata( + BINARY_C_BISECT_ERROR, + "generic_bisect: evalulations at the minimum (%g) and maximum (%g) of the bisector function (%d \"%s\") give the wrong sign (sign = %g). Please fix the function so it is montonically increasing with its parameter.\n", + min, + max, + n, + Bisector_string(n), + sign); } + if(0&&show) + { + /* + * Try at the floating point range + */ + double sign,lx,prevsign=-2,prevchange=DBL_MIN; + int n = (int)(log10(DBL_MAX)); + for(lx=log10(DBL_MIN); + lx<log10(DBL_MAX); + lx += (log10(DBL_MAX) - log10(DBL_MIN))/(1.0*(double)n)) + { + double xx = pow(10.0,lx); + CALLFUNC(xx); - va_end(args_master); + sign = SIGN_REALLY(ret); + if(unlikely(FEQUAL(prevsign,-2.0))) prevsign=sign; + if((!FEQUAL(sign,prevsign) && + !FEQUAL(prevchange,xx))) + { + printf( + "Range %g to %g has sign %+g\n", + prevchange, + xx, + prevsign + ); + prevsign = sign; + prevchange = xx; + } + } + printf( + "Range %g to %g has sign %+g\n", + prevchange, + DBL_MAX, + prevsign + ); + + CALLFUNC(xmax); + printf("at xmax = %g -> ret = %g (error %d)\n",xmax,ret,GSL_args->error); + CALLFUNC(xmin); + printf("at xmin = %g -> ret = %g (error %d)\n",xmin,ret,GSL_args->error); + + Exit_binary_c_no_stardata( + 0, + "Exit after testing bisection range"); + } - if(monochecks == BISECT_USE_MONOCHECKS_FATAL) + if(unlikely(monochecks == BISECT_USE_MONOCHECKS_FATAL)) { + Cleanup_bisect; Exit_binary_c_no_stardata(BINARY_C_INTERPOLATION_ERROR,"Function %d \"%s\" into generic_bisect is poorly behaved: the difference between its values at range locations %g and %g (x values %g and %g) is %g (this must be non-zero), sign (which should be == +1) is %g (0.0 means diff the difference is zero)\n", n, Bisector_string(n), @@ -259,7 +350,7 @@ double generic_bisect(int * RESTRICT error, } else { - return BISECT_RETURN_FAIL; + Clean_return(BISECT_RETURN_FAIL); } } } @@ -293,7 +384,7 @@ double generic_bisect(int * RESTRICT error, VBPRINT("topfind ret starts at x=%g ret=%g\n",x,ret); while(ret < 0.0 && *error == BISECT_ERROR_NONE) { - x *= (INCREASE); + x *= (BISECT_INCREASE); /* panic if zero! (could happen) */ if(IS_REALLY_ZERO(x)) x+=TINY; @@ -348,8 +439,8 @@ double generic_bisect(int * RESTRICT error, printf("%3d : At %g func = %g\n", iy,Y,ret); } - fflush(NULL); - _exit(0); + Binary_c_exit_no_stardata(0, + "Exit after showing bisect range"); } #endif @@ -358,7 +449,6 @@ double generic_bisect(int * RESTRICT error, #ifdef BISECT_FAIL_EXIT { - double was; double y,dy=(log10(max)-log10(min))/100.0; int iy=0; for(y=log10(min);y<=log10(max);y+=dy) @@ -388,8 +478,7 @@ double generic_bisect(int * RESTRICT error, #endif /* if we haven't exited, return -1 */ x = max; - va_end(args_master); - return BISECT_RETURN_FAIL; + Clean_return(BISECT_RETURN_FAIL); } else { @@ -400,7 +489,7 @@ double generic_bisect(int * RESTRICT error, VBPRINT("Exit topfind with x=%g (ret=%g should be >0)\n",x,ret); top = MIN(max,x); - bottom = MAX(min,0.5 * x); + bottom = MAX(min,BISECT_DECREASE * x); } else { @@ -419,17 +508,25 @@ double generic_bisect(int * RESTRICT error, Boolean ok = TRUE; while(ok == TRUE && ret > 0.0) { - double xwas = x; - x = min + (DECREASE)*(x-min); - double dx = fabs(x - xwas); + /* + * Save prev x so we can check for dx == 0 (below) + * + * then decrease to find new x + */ + double xprev = x; + x = min + (BISECT_DECREASE)*(x-min); + double dx = fabs(x - xprev); VBPRINT("bottomfind 1 : reduce x from %g to %g (min=%g, cf %g to %g : %d)\n", - xwas, + xprev, x, min, dx, REALLY_TINY, IS_REALLY_ZERO(dx) ); + /* + * If dx == 0, break the loop and fail + */ if(IS_REALLY_ZERO(dx)) { VBPRINT("Warning: x has not decreased within floating point uncertainty\n"); @@ -437,27 +534,30 @@ double generic_bisect(int * RESTRICT error, } VBPRINT("bottomfind 1a : x now %g\n",x); CALLFUNC(x); - VBPRINT("bottomfind 2 : f(%g) = %g\n",x,ret); + VBPRINT("bottomfind 2 : f(%g) = ret = %g, ok = %d : loop? %d\n",x,ret,ok, + (ok == TRUE && ret > 0.0) ? 1 : 0 + ); } if(ok == FALSE) { *error = BISECT_ERROR_MAXED_OUT; - va_end(args_master); - return BISECT_RETURN_FAIL; + Clean_return(BISECT_RETURN_FAIL); } VBPRINT("bottomfind : done with x=%g (ret=%g should be <0)\n",x,ret); bottom = MAX(min,x); - top = MIN(max,2.0 * x); + top = guess; } - if(isnan(top) || isnan(bottom)) + if(unlikely(isnan(top) || isnan(bottom))) + { + fflush(stdout); Exit_binary_c_no_stardata(EXIT_NAN, "NaN in top=%g bottom=%g\n", top, bottom); - + } #ifdef BISECT_BRACKET_CHECKS double check_bottom,check_top; @@ -484,16 +584,16 @@ double generic_bisect(int * RESTRICT error, ((check_bottom < 0.0 && check_top > 0.0) ? "ok" : "failed")); } - if(check_bottom > 0.0 || check_top < 0.0) + if(unlikely(check_bottom > 0.0 || check_top < 0.0)) { #ifdef BISECT_FAIL_EXIT - Exit_binary_c_no_stardata(2, + fflush(stdout); + Exit_binary_c_no_stardata(OUT_OF_RANGE, "bracket error (search %d, %s) bottom %g top %g\n", check_bottom,check_top); #endif *error = BISECT_ERROR_BRACKET_FAILED; - va_end(args_master); - return BISECT_RETURN_FAIL; + Clean_return(BISECT_RETURN_FAIL); } @@ -502,13 +602,22 @@ double generic_bisect(int * RESTRICT error, va_copy(args,args_master); va_start(args,alpha); - VBPRINT("Call brent_GSL_valist itmax = %d, range [%g, %g], tol = %g\n", itmax, bottom, top, tol); - ret = brent_GSL_valist(func,itmax,bottom,top,tol,args); + + ret = brent_GSL_valist( + generic_bisect_funcwrapper, + func, + itmax, + bottom, + top, + tol, + uselog, + args); + va_end(args); VBPRINT("Brent bisect gave ret = %g \n",ret); @@ -518,8 +627,7 @@ double generic_bisect(int * RESTRICT error, #endif if(0)printf("RET %g + %g = %g\n",alpha*ret, (1-alpha)*guessin, alpha * ret + (1.0 - alpha) * guessin); - va_end(args_master); - return alpha * ret + (1.0 - alpha) * guessin; + Clean_return(alpha * ret + (1.0 - alpha) * guessin); } static void generic_bisect_vbprint(int n, @@ -533,3 +641,26 @@ static void generic_bisect_vbprint(int n, va_end(args); fflush(stdout); } + + +static double generic_bisect_funcwrapper(const double x, + void * p) +{ + /* + * Wrapper for generic bisect. Should return the + * residual value as a double. + * + * p is a va_list of which the first two elements are + * + * Boolean uselog + * *func (double,void*) + * + * and the rest should be send to func in void* + */ + struct GSL_args_t * pcast = (struct GSL_args_t *)p; + const double xx = pcast->uselog == TRUE ? pow(10.0,x) : x; + double y = pcast->func(xx, + pcast); + return y; +} + diff --git a/src/maths/generic_bisect.h b/src/maths/generic_bisect.h new file mode 100644 index 0000000000000000000000000000000000000000..5f1d6a2eda7a11944b316d4c133e6d4b6782e750 --- /dev/null +++ b/src/maths/generic_bisect.h @@ -0,0 +1,87 @@ +#pragma once +#ifndef GENERIC_BISECT_H +#define GENERIC_BISECT_H + +/* + * Headers for the generic_bisect.c function + */ + +/* + * Clean up and return + */ +#define Cleanup_bisect \ + va_end(args_master); \ + Safe_free(GSL_args); + +#define Clean_return(X) \ + Cleanup_bisect; \ + return(*error == BISECT_ERROR_NONE ? \ + (uselog ? pow(10.0,(X)) : (X)) : \ + BISECT_RETURN_FAIL) + +/* + * Define the function call. + * Note: if the return value is within tolerance, + * immediately return, this is good enough! + * + * Should it be args or &args? + */ +#define CALLFUNC(X) \ + GSL_args->error = 0; \ + va_copy(GSL_args->args,args_master); \ + va_start(GSL_args->args,alpha); \ + \ + ret = (*func)( \ + (uselog ? pow(10.0,(X)) : (X)), \ + (void*)(GSL_args)); \ + \ + va_end(GSL_args->args); \ + \ + CALLFUNCNANCHECK(ret); \ + if(fabs(ret) < tol) \ + { \ + Clean_return(X); \ + } \ + POSTFUNC; + + + +//#define BISECT_SHOW_RANGE +/* + * Bisection stats and checks. + * NB Stats are not thread safe, and are + * just for testing and/or optimization. + */ +//#define BISECT_STATS +#define BISECT_BRACKET_CHECKS +#ifdef NANCHECKS +#define BISECT_NANS +#endif + +#define BISECT_INCREASE 2.0 +#define BISECT_DECREASE 0.5 + +/* allow verbosity */ +#define VBPRINT(...) \ + if(vb) \ + { \ + generic_bisect_vbprint(n,__VA_ARGS__); \ + } + +static void generic_bisect_vbprint(int n, + char * RESTRICT format, + ...); + +static double generic_bisect_funcwrapper(const double x, + void * f); + +double brent_GSL_valist(brent_function wrapper, + brent_function func, + const int itmax, + const double xmin, + const double xmax, + const double tol, + const Boolean uselog, + va_list args); + +#endif // GENERIC_BISECT_H diff --git a/src/maths/generic_minimizer.c b/src/maths/generic_minimizer.c new file mode 100644 index 0000000000000000000000000000000000000000..47a472dea02993fe0698ec311d764eb7ac7d275d --- /dev/null +++ b/src/maths/generic_minimizer.c @@ -0,0 +1,187 @@ +#include "../binary_c.h" + +#include <gsl/gsl_errno.h> +#include <gsl/gsl_math.h> +#include <gsl/gsl_min.h> + +double generic_minimizer(int * status, + const int n, + const Boolean logscale, + const double accuracy, + double *minimumx, + const brent_function func, + const double min, + const double max, + ...) +{ + /* + * Find the minimum of func, f(x), over the range x=min to x=max. + * + * To do this we first find f(min) and f(max). Then we take + * n trial points inside the range min to max, and if one is + * less than f(min) and less than f(max), we call the Brent + * minimizer of GSL (which can deal with a bracketed minimum) + * which finds the minimum to within a relative accuracy given + * as the "accuracy" argument. + * + * Otherwise, we return the minimum value found, and set + * *minimumx to the corresponding x if minimumx is non-NULL. + * + * Set status=0 on success, otherwise status is an error + * code: + * -1 : min==max, no bracket is possible, return f(x=min==max) + * 0 : no error + * >0 : GSL error code + */ + + + /* + * we have no stardata, so Dprint will not work. + * instead use a private vb Boolean + */ +#undef Dprint + const int vb = 0; /* set to >=1 for verbose output */ +#define Dprint if(vb)printf + + Dprint("generic minimizer: status=%p, n=%d, logscale=%d, func=%p, min=%g, max=%g\n", + status,n,logscale,func,min,max); + + *status = 0; + + /* returned value(s) */ + double miny,minx; + + /* + * Put everything in a GSL_args struct + */ + struct GSL_args_t * GSL_args = MALLOC(sizeof(struct GSL_args_t)); + GSL_args->func = func; + GSL_args->uselog = logscale; + va_start(GSL_args->args,max); + + /* + * check min != max, if min == max then + * just evaluate at min (==max) and return + */ + if(FEQUAL(min,max)) + { + *status = -1; + minx = min; + miny = func(min,GSL_args); + } + else + { + /* + * First guess is the minimum of the function + * at the end points + */ + const double f_min = func(min,GSL_args); + const double f_max = func(max,GSL_args); + miny = MINX(min,f_min,max,f_max,&minx); + + Dprint("first guess %g (fmin = %g, fmax = %g)\n", + miny, + f_min, + f_max); + + /* + * then make sure there is a minimum somewhere between + * min and max + */ + double loopmin,loopmax,dloop; + double (*loopfunc)(double); + + if(logscale == TRUE) + { + loopmin = log(min); + loopmax = log(max); + loopfunc = &exp; + } + else + { + loopmin = min; + loopmax = max; + loopfunc = NULL; + } + dloop = (loopmax - loopmin) / ((double)n - 1.0); + + /* + * loop to find a minimum + */ + double x; + Boolean bracketed = FALSE; + for(x = loopmin + dloop; x < loopmax + dloop*0.5; x+=dloop) + { + const double y = func((loopfunc!=NULL ? loopfunc(x) : x),GSL_args); + Dprint("GENERIC MINIMIZER (linear) f(%g) = %g cf. miny %g : less? %d (diff %g)\n", + x,y,miny,y<miny,y-miny); + + if(LESS_THAN(y,miny) && + IS_NOT_ZERO(miny) && + fabs(y/miny-1.0) < TINY) + { + /* found new minimum : store and exit loop */ + minx = x; + miny = y; + bracketed = TRUE; + x = loopmax + dloop; + } + } + + Dprint("bracketed? %d\n",bracketed); + + if(bracketed == TRUE) + { + /* + * We're bracketed : use GSL's Brent minimizer + */ + gsl_function * F = MALLOC(sizeof(gsl_function)); + F->function = func; + F->params = GSL_args; + const gsl_min_fminimizer_type * T = gsl_min_fminimizer_brent; + gsl_min_fminimizer * s = gsl_min_fminimizer_alloc(T); + *status = gsl_min_fminimizer_set(s, + F, + 0.5*(min + max), + min, + max); + + int iter = 0,max_iter = 100; + do + { + iter++; + *status = gsl_min_fminimizer_iterate (s); + const double lower = gsl_min_fminimizer_x_lower (s); + const double upper = gsl_min_fminimizer_x_upper (s); + Dprint("iter %d : %g < minQ = %g < %g\n",iter,min,lower,upper); + + /* converge once min==max within 1% */ + *status = gsl_min_test_interval(lower, + upper, + 0.0, + accuracy); + } while (*status == GSL_CONTINUE && iter < max_iter); + + /* best estimate of radius at which we have a minimum */ + miny = gsl_min_fminimizer_f_minimum (s); + minx = gsl_min_fminimizer_x_minimum (s); + + /* free memory */ + gsl_min_fminimizer_free (s); + Safe_free(F); + } + } + + va_end(GSL_args->args); + Safe_free(GSL_args); + + /* store x-value if non-null pointer passed in */ + if(minimumx != NULL) + { + *minimumx = minx; + } + + Dprint("Generic minimizer return x=%g, y=%g\n",minx,miny); + return miny; +} + diff --git a/src/maths/interpolate.c b/src/maths/interpolate.c index 4323ff3577790da62cb00e03ce61ea0644ce4f3b..9ce53233d236547570dd6215622b63738ed7467a 100644 --- a/src/maths/interpolate.c +++ b/src/maths/interpolate.c @@ -299,7 +299,7 @@ void interpolate(struct stardata_t * stardata, /* * If table is NULL we should free all allocated memory and just return */ - if(table==NULL) + if(unlikely(table==NULL)) { if(steps_array!=NULL) { @@ -409,7 +409,7 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", * First time through: set up the cache memory space for the * arrays of pointers */ - if(cache_array==NULL) + if(unlikely(cache_array==NULL)) { // cache_array holds pointers to the cache for each table // results_array ditto for the results @@ -422,13 +422,13 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", #ifdef ALLOC_CHECKS - if( + if(unlikely( #ifdef NEWCACHE cache_array==NULL #else cache_array==NULL || results_array==NULL #endif - ) + )) { Exit_binary_c(CALLOC_FAILED_IN_INTERPOLATE, "failed to alloc\n"); @@ -437,7 +437,7 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", } - if(cache_array[table_id]==NULL) + if(unlikely(cache_array[table_id]==NULL)) { cache_match_line[table_id]=0; #ifdef NEWCACHE @@ -461,13 +461,13 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", #ifdef ALLOC_CHECKS - if( + if(unlikely( #ifdef NEWCACHE cache==NULL #else cache==NULL || results==NULL #endif - ) + )) { Exit_binary_c(CALLOC_FAILED_IN_INTERPOLATE, "Failed to alloc cache_array \n"); @@ -599,7 +599,7 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", Iprint("int_table alloc 2 * %d * %d\n",max_itc_size,lnl_sizeof); #endif - if(varcount_array==NULL) + if(unlikely(varcount_array==NULL)) { /* set up an array of pointers to arrays containing the varcounts */ /* and the variable steps */ @@ -610,11 +610,11 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", #ifdef ALLOC_CHECKS - if((varcount_array==NULL)|| - (f==NULL)|| - (sum==NULL)|| - (int_table==NULL)|| - (steps_array==NULL)) + if(unlikely((varcount_array==NULL)|| + (f==NULL)|| + (sum==NULL)|| + (int_table==NULL)|| + (steps_array==NULL))) { Exit_binary_c(CALLOC_FAILED_IN_INTERPOLATE, "Error allocating varcount in interpolate\n"); @@ -625,7 +625,7 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", k = lnl*l; // end of the table g = lnl*(l-1); // start of the final line of the table - if(steps_array[table_id]==NULL) + if(unlikely(steps_array[table_id]==NULL)) { /* * First time with this table: Find the variable steps @@ -633,7 +633,7 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", steps=steps_array[table_id]=INTERPOLATE_CALLOC(n,sizeof(int)); #ifdef ALLOC_CHECKS - if(steps==NULL) + if(unlikely(steps==NULL)) { Exit_binary_c(CALLOC_FAILED_IN_INTERPOLATE, "(m|c)alloc failed in interpolate() : steps/steps_array\n"); @@ -698,11 +698,11 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", /* * We have to count how many different values each parameter can take. */ - if(varcount_array[table_id]==NULL) + if(unlikely(varcount_array[table_id]==NULL)) { varcount=varcount_array[table_id]=INTERPOLATE_CALLOC(n,sizeof(int)); #ifdef ALLOC_CHECKS - if(varcount==NULL) + if(unlikely(varcount==NULL)) { Exit_binary_c(CALLOC_FAILED_IN_INTERPOLATE, "Error allocating varcount %d in interpolate\n", @@ -790,7 +790,7 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", a=0; b=varcount[j]; - if(b>1) + if(likely(b>1)) { /* * Binary search blatantly stolen from Evert Glebbeek's code @@ -871,7 +871,7 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", /* watch for table overrun */ for(i=0;i<max_itc_size;i++) { - if(sum[i]>l) sum[i] = sum[i]%l; + if(unlikely(sum[i]>l)) sum[i] = sum[i]%l; //printf("SUM i = %d, sum[i] = %d vs l = %d\n",i,sum[i],l); } @@ -965,6 +965,8 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", dim=0; g=lnl<<n1; + prefetch(int_table); + { double *int_table_n=int_table+n; while(dim<n) @@ -982,9 +984,9 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", v=f[dim]; #endif - if(v>TINY) + if(likely(v>TINY)) { - if(v+TINY>1.0) + if(unlikely(v+TINY>1.0)) { // u=0 v=1: unusual case but easy to calculate (no inner loop required) double *xxx; @@ -1011,9 +1013,13 @@ table_id=%d, cache_hint=%d, can_cache=%d\n", { int_table_k = int_table_n+i; int_table_g = int_table_k+g; + prefetch(int_table_k); + prefetch(int_table_g); p_kmax = int_table_k + d; while(int_table_k < p_kmax) { + prefetch(int_table_k+1); + prefetch(int_table_g+1); *(int_table_k) = u*(*(int_table_k))+v*(*(int_table_g++)); int_table_k++; } diff --git a/src/maths/interpolate.h b/src/maths/interpolate.h index 518930c8758049a296b1768e55c240cfe217464a..60390d73ac99cd801ceb248fbdf0504c7bcf1b1c 100644 --- a/src/maths/interpolate.h +++ b/src/maths/interpolate.h @@ -1,3 +1,9 @@ +#pragma once + + +#ifndef INTERPOLATE_H +#define INTERPOLATE_H + /* * Macros used by ./interpolate.c */ @@ -16,3 +22,5 @@ * more slowly). */ #define NUMBER_OF_INTERPOLATE_CACHE_TABLES 50 + +#endif // INTERPOLATE_H diff --git a/src/maths/maths_prototypes.h b/src/maths/maths_prototypes.h index 8d201ce9853b11ade8e1e905ee96f0bb9e655637..e26199e11acfeef3151e849e801d4b82086b8069 100644 --- a/src/maths/maths_prototypes.h +++ b/src/maths/maths_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef MATHS_PROTOTYPES_H #define MATHS_PROTOTYPES_H @@ -7,14 +8,18 @@ #ifdef USE_GSL #include <gsl/gsl_linalg.h> +#include <gsl/gsl_matrix.h> +#include <gsl/gsl_permutation.h> #endif // USE_GSL #ifdef BINARY_C_USE_LOCAL_RAND48 #include "binary_c_drandr.h" -#endif +#endif // BINARY_C_USE_LOCAL_RAND48 /* Mathematical functions, generally stolen from numerical recipes */ - +#ifndef USE_NATIVE_ISNAN +int my_isnan(double val); +#endif // USE_NATIVE_ISNAN /** Random number generator function **/ double random_number(struct stardata_t * stardata, @@ -75,15 +80,15 @@ void _nancheck(struct stardata_t * stardata, void kaps_rentrop_LU_decomp(double ** RESTRICT a, - const int n, - gsl_matrix * m, - gsl_permutation * p + const int n, + gsl_matrix * m, + gsl_permutation * p ); void kaps_rentrop_LU_backsub(double ** RESTRICT a, - double * RESTRICT b, - const int n, - gsl_matrix * m, - gsl_permutation * p + double * RESTRICT b, + const int n, + gsl_matrix * m, + gsl_permutation * p ); @@ -112,17 +117,7 @@ double select_from_pdist(struct stardata_t * stardata, void free_pdist(struct probability_distribution_t * p); -#ifdef FASTPOW -inline double fastPow(double a, double b) ; -inline double fastPow2(double a, double b); -double brent(double (*func)(double,va_list args), - const double xmin, - const double xmax, - const double tol, - ... - ); -#endif//FASTPOW - +double fastPow(const double a, const double b) ; double brent_valist(double (*func)(double,va_list args), const int itmax, @@ -145,12 +140,13 @@ double brent(double (*func)(double,va_list args), double generic_bisect(int * RESTRICT error, const int monochecks, int n, - double (*func)(double, void * p), - const double guess, - const double min, - const double max, + brent_function func, + double guess, + double min, + double max, const double tol, const int itmax, + const Boolean uselog, const double alpha, ...); void timestamp (void); @@ -165,14 +161,6 @@ double polyalgorithm(const int s, Boolean inverse3( const double theMatrix [/*Y=*/3] [/*X=*/3], double theOutput [/*Y=*/3] [/*X=*/3] ); -double brent_GSL_valist(double (*func)(double,void*), - const int itmax, - const double xmin, - const double xmax, - const double tol, - va_list args - ); - double GSL_integrator(double lower, double upper, double tolerance, @@ -183,10 +171,27 @@ double GSL_integrator(double lower, void setup_GSL_handlers(struct stardata_t * stardata); +void check_nans_are_signalled(void); + #ifdef USE_MERSENNE_TWISTER #include "mersenne_twister_prototypes.h" #endif // USE_MERSENNE_TWISTER +double max_from_list(int n,...); + + +pure_function double sin2(double x); +pure_function double cos2(double x); + +double generic_minimizer(int * status, + const int n, + const Boolean logscale, + const double accuracy, + double *minimumx, + const brent_function func, + const double min, + const double max, + ...); #endif // MATHS_PROTOTYPES diff --git a/src/maths/max_from_list.c b/src/maths/max_from_list.c new file mode 100644 index 0000000000000000000000000000000000000000..1b471c8e31fe596bc8b78c45c8a7598f531f1a54 --- /dev/null +++ b/src/maths/max_from_list.c @@ -0,0 +1,19 @@ +#include "../binary_c.h" + +double max_from_list(int n,...) +{ + /* + * given a list of doubles return the maximum value + */ + va_list args; + va_start(args,n); + double val,maxval = va_arg(args,double); + int i; + for(i=1;i<n;i++) + { + val = va_arg(args,double); + maxval=MAX(val,maxval); + } + va_end(args); + return(maxval); +} diff --git a/src/maths/mersenne_twister_macros.h b/src/maths/mersenne_twister_macros.h index fbbcafefa3bebed106088795049b7f0de0c6bba7..97b5e1b7bafb07907d28c49efa420b6caf1f9f37 100644 --- a/src/maths/mersenne_twister_macros.h +++ b/src/maths/mersenne_twister_macros.h @@ -1,4 +1,4 @@ - +#pragma once #ifndef MERSENNE_TWISTER_MACROS_H #define MERSENNE_TWISTER_MACROS_H diff --git a/src/maths/nancheck.c b/src/maths/nancheck.c index 2d7eeeea22ed8193b7675f611db3a37f98af7a44..67f08b9bc91c07bfe8bd439a57ff6f88b2c3fe02 100644 --- a/src/maths/nancheck.c +++ b/src/maths/nancheck.c @@ -1,6 +1,7 @@ #include "../binary_c.h" - #ifdef NANCHECKS +#include <stdint.h> +//9.05 /* * Code to check an array for NaNs: if we find one then * exit binary_c and give an error @@ -17,13 +18,31 @@ static void nancheck_oops(struct stardata_t * stardata, #define OOPS nancheck_oops(stardata,label,x,i,s) +#ifndef USE_NATIVE_ISNAN +int my_isnan(double val) +{ + /* + * This may be faster than libm's isnan() + * but may not work. + */ + + /* this works only on 64-bit architectures */ +// union { double f; uint64_t x; } u = { val }; +// return (u.x << 1) > 0x7ff0000000000000u; + + /* this should always work */ + return (val!=val); +} +#endif + + void _nancheck(struct stardata_t * stardata, const char * RESTRICT label, const double * RESTRICT x, const unsigned int s) { /* check pointer is not null */ - if(x==NULL) return ; + if(unlikely(x==NULL)) return ; /* the LOOP ITSELF is the often slowest part of the check! */ #ifdef UNROLL_NUCSYN_LOOPS @@ -36,13 +55,14 @@ void _nancheck(struct stardata_t * stardata, while(i) { i--; - if(isnan(x[i])!=0) + if(unlikely(_Nanchecker(x[i])!=0)) { OOPS; } } } + static void nancheck_oops(struct stardata_t * stardata, const char * RESTRICT label, const double * RESTRICT x, diff --git a/src/maths/nintlib.h b/src/maths/nintlib.h index 2842e55fb57d1bfa36fb04ab036027332a0770f1..ca7ffd9cc8bf9be6e9b7986ba25fa6b118a30fb5 100644 --- a/src/maths/nintlib.h +++ b/src/maths/nintlib.h @@ -1,3 +1,7 @@ +#pragma once +#ifndef NINTLIB_H +#define NINTLIB_H + double box_nd ( double func ( int dim_num, double x[] ), int dim_num, int order, double xtab[], double weight[], int *eval_num ); int i4_huge ( void ); @@ -27,3 +31,5 @@ double sum2_nd ( double func ( int dim_num, double x[] ), double xtab[], double weight[], int order[], int dim_num, int *eval_num ); void timestamp ( void ); void tuple_next ( int m1, int m2, int n, int *rank, int x[] ); + +#endif // NINTLIB_H diff --git a/src/maths/random_number.c b/src/maths/random_number.c index 3560c643b20d913d4ecd0bc4e339235bc6e9a02c..cc3e2337f3faf2d2ab6cf66d01ad27ff77ed7b83 100644 --- a/src/maths/random_number.c +++ b/src/maths/random_number.c @@ -10,6 +10,8 @@ * the GNU drand48_r routine. This takes an initial * seed so is reproducible when the seed is given, * otherwise the seed is generated by the current time. + * + * If random_seed is NULL, use stardata's random seed. */ #include <stdlib.h> @@ -18,22 +20,37 @@ #include "binary_c_drandr.h" #endif // BINARY_C_USE_LOCAL_RAND48 + + double random_number(struct stardata_t * stardata, Random_seed * random_seed) { double r; - + + /* + * Use stardata's random seed if none is given + */ + if(random_seed == NULL) + { + random_seed = &stardata->common.random_seed; + } + #ifdef USE_DRAND48_R if(unlikely(stardata->common.random_buffer_set == FALSE)) { stardata->common.random_buffer_set = TRUE; - Append_logstring(LOG_RANDOM,"Set drand buffer from random_seed = %ld ",*random_seed); +#ifdef RANDOM_NUMBER_LOGGING + Append_logstring(LOG_RANDOM, + "Set drand buffer from random_seed = %ld ",*random_seed); +#endif // RANDOM_NUMBER_LOGGING srand48_r(*random_seed, &stardata->common.random_buffer); } drand48_r(&stardata->common.random_buffer, &r); +#ifdef RANDOM_NUMBER_LOGGING Append_logstring(LOG_RANDOM,"Random number (drand48_r) %g ",r); +#endif // RANDOM_NUMBER_LOGGING #endif // USE_DRAND48_R @@ -41,12 +58,16 @@ double random_number(struct stardata_t * stardata, if(unlikely(stardata->common.random_buffer_set == FALSE)) { stardata->common.random_buffer_set = TRUE; +#ifdef RANDOM_NUMBER_LOGGING Append_logstring(LOG_RANDOM,"Set mersenne buffer from random_seed = %ld ",*random_seed); +#endif // RANDOM_NUMBER_LOGGING init_genrand64(*random_seed, &stardata->common.random_buffer); } r = genrand64_real1(&stardata->common.random_buffer); +#ifdef RANDOM_NUMBER_LOGGING Append_logstring(LOG_RANDOM,"Random number (Mersenne twister) %g ",r); +#endif // RANDOM_NUMBER_LOGGING #endif // USE_MERSENNE_TWISTER diff --git a/src/maths/trigonometry.c b/src/maths/trigonometry.c new file mode 100644 index 0000000000000000000000000000000000000000..caaaaa25b292070cebb5c3ecf8eb369670a90d2b --- /dev/null +++ b/src/maths/trigonometry.c @@ -0,0 +1,16 @@ + +#include "binary_c.h" + +pure_function double sin2(double x) +{ + /* sin squared */ + const double y = sin(x); + return y*y; +} + +pure_function double cos2(double x) +{ + /* cos squared */ + const double y = cos(x); + return y*y; +} diff --git a/src/memoize/LICENCE b/src/memoize/LICENCE new file mode 100644 index 0000000000000000000000000000000000000000..0f7e116f750639ee1b43ccdada727740650dc9d2 --- /dev/null +++ b/src/memoize/LICENCE @@ -0,0 +1,71 @@ + +libmemoize is copyright Robert Izzard, written while on Christmas/New Year holiday 2018-2019 + +------------------------------------------------------------ + +TERMS AND CONDITIONS FOR USE, COPYING, DISTRIBUTION AND MODIFICATION + +Definitions +"Program" means a copy of libmemoize, which is said to be distributed under this Academic Public License. + +"Work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) + +"Using the Program" means any act of creating executables that contain or directly use libraries that are part of the Program, running any of the tools that are part of the Program, or creating works based on the Program. + +Each licensee is addressed as "you". + +§1. Permission is hereby granted to use the Program free of charge for any noncommercial purpose, including teaching and research at universities, colleges and other educational institutions, research at non-profit research institutions, and personal non-profit purposes. For using the Program for commercial purposes, including but not restricted to consulting activities, design of commercial hardware or software networking products, and a commercial entity participating in research projects, you have to contact the Author for an appropriate license. Permission is also granted to use the Program for a reasonably limited period of time for the purpose of evaluating its usefulness for a particular purpose. + +§2. You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. + +a) Any work which uses libmemoize, especially published (academic or otherwise) works, should acknowledge its use and provide a link to the libmemoize repository. + +§3. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 2 above, provided that you also meet all of these conditions: + +a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + +b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose regulations for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. (If the same, independent sections are distributed as part of a package that is otherwise reliant on, or is based on the Program, then the distribution of the whole package, including but not restricted to the independent section, must be on the unmodified terms of this License, regadless of who the author of the included sections was.) + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based or reliant on the Program. + +In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of storage or distribution medium does not bring the other work under the scope of this License. + +§4. You may copy and distribute the Program (or a work based on it, under Section 3) in object code or executable form under the terms of Sections 2 and 3 above provided that you also do one of the following: + +a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 2 and 3 above on a medium customarily used for software interchange; or, + +b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 2 and 3 above on a medium customarily used for software interchange; or, + +c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b) above.) + +The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + +§5. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +§6. You are not required to accept this License, since you have not signed it. Nothing else grants you permission to modify or distribute the Program or its derivative works; law prohibits these actions if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License and all its terms and conditions for copying, distributing or modifying the Program or works based on it, to do so. + +§7. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients’ exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + +§8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. + +§9. If the distribution and/or use of the Program are restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +NO WARRANTY + +§10. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +§11. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED ON IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +------- + +This licence was copied from +https://omnetpp.org/intro/license +written by Andras Varga (license text is in public domain) with added clause 2a \ No newline at end of file diff --git a/src/memoize/README b/src/memoize/README new file mode 100644 index 0000000000000000000000000000000000000000..56c92b3fa080dd988397f058ae75a383f03ccf00 --- /dev/null +++ b/src/memoize/README @@ -0,0 +1,329 @@ +This directory contains a copy of the Memoize library + +The full library is at https://gitlab.eps.surrey.ac.uk/ri0005/libmemoize + +The following is a copy of its README, and its LICENCE is in this +directory. + +------------------------------------------------------------ + + +libmemoize + +Libmemoize provides a wrapper around C functions to memoize them, +i.e. only call them once for a given set of parameters. + +If you are running a function which is expensive, gives a unique result +result for a given set of input parameters (i.e. is "pure"), then +libmemoize may speed up your program. + + + +Copyright 2018/2019 Robert Izzard. + +Please see the file LICENCE for licensing conditions, particularly +note the attribution clause (2a), requirements for use in commercial +projects and note that no warranty is provided for any purposes. + +Current repository: + +https://gitlab.eps.surrey.ac.uk/ri0005/libmemoize + +------------------------------------------------------------ + +Installation + +To install to /usr/local/lib, you normally should do: + +--- + +cd src +make +make install + +--- + +To install to $PREFIX, simply set the PREFIX environment variable +before running make install, e.g. in bash, to install in $HOME/lib and +$HOME/include : + +--- + +export PREFIX=$HOME +cd src +make +make install + +--- + + +------------------------------------------------------------ + +Requirements + +You will need a C compiler, e.g. gcc or clang, and libbsd must be +installed (we require strlcpy, for example). + +While I have made every effort to make sure the libmemoize code +works on all platforms, it has only been tested on a modern Intel i7 +processor on Linux, specifically the Ubuntu 18.04 distribution. + +------------------------------------------------------------ + + +Usage + +You should use Memoize() whenever: + +a) Your function takes a long time to run and is likely to be called + with the same parameters, repeatedly. You should make the hash as large + as the number of parameter combinations. + + Note that if the input is a floating point number which is (effectively) + random, you should not use Memoize. The number of possible parameter combinations + is so large that you will never have enough memory to store them all. + + If your function is *very* fast, the overheads associated with Memoize will always + make using it pointless. (Although see (b) below.) + + If your function depends on any other variables than the input parameters, + e.g. external or global variables, then you should either not use Memoize or you + should call memoize_clear_hash_contents() when the external variable changes. + +b) Your function is likely to be called repeatedly with the same input + parameter(s). In this case, set the hash size to 1, so it only checks + the previous call, so the hash is fast to scan. In this case, it's possible + that even system-library calls can be speeded up by calls to Memoize instead. + + +Memoize( + struct memoize_hash_tRESTRICT memo, + const charRESTRICT funcname, + const size_t nmax, + (scalar|array), + <parameter variable type>, + const size_t n_parameters, + const voidparameter, + <parameter result type>, + const size_t n_results, + result + ); + +Where + +memo is a memoize_hash_t pointer that can be allocated. + Note: to allocate memory manually, call memoize_initialize(memo); + Note: to free memory call memoize_free(memo); + +funcname is a string to identify your function. Use only one + string per function. + +nmax is the maximum number of results that are stored for each function. + Typically you want this number to be small, e.g. if you expect repeated + calls with the same result, set it to 1. + +(scalar|array) : choose one of scalar or array. If you choose scalar, + you can send the (single) parameter directly into parameter, + if you choose array you have to wrap the parameter data in + ((parameter_type[]){...}) (see example 2 below). + +<parameter variable type> is the C variable type of the parameters, + e.g. int, char, double. We assume all parameters are of the same + type, sorry (if you require different types, consider wrapping them + in a struct: this will then be compared byte-by-byte to the memoize hash). + +n_parameters is the number of parameters pointed to byparameter (below), + e.g. for a scalar this is 1. + +parameter is the parameter data. + +<result variable type> is an C variable type of the results, + e.g. int, char, double. + +n_results is the number of results provided by the function, . + e.g. for a scalar this is 1. + +result is the result data. This can be an expression, a call to a + function, etc. and can be a pointer to memory (e.g. to + return an array of data or a struct). + + +Generally, Memoize is designed for scalar input (n_parameters == n_results == 1) +but by setting larger numbers there's no reason why arrays of data won't work. + +Similarly, Memoize has been tested on intrinsic C data types (e.g. double, int) +but should work on any complex data type. + + +Note: because we use a macro, RESULT is not calcualted until + it is required, hence we gain some speed. The down side + to this is that search_result and store_result must both + check the hash for an existing key. This is (presumably) faster + than the function to be memoized. You can only know by trying! + +Example: scalar in, scalar out + +double x = Memoize( + disc->memo, + "discT", + 1, + scalar, + double, + 1, + radius, + double, + 1, + MAX(0.0,generic_power_law(radius,disc,POWER_LAW_TEMPERATURE)) + ); + +This example sets the result in the MAX(...) call, where the result +is a single double and the parameter is also a single double ("radius"). +The hash table at disc->memo is stored elsewhere, as is required. + +Example 2: array in, scalar out, to replace the pow function. + +#define POW(x,y) Memoize( \ + binary_c_memo,\ + "pow",\ + 10, \ + array,\ + double,\ + 2, \ + ((double[]){x,y}), \ + double, + 1,\ + pow(x,y)) + +In this case, we replace calls to pow(x,y), a standard C-library function, +with a macro POW(x,y) which instead calls the memoized version of pow. +You can see that two double-precision parameters are passed in, x and y. +These must be encapsulated in an anonymous array, which is the +((double)[]{x,y}). The outer brackets are required to avoid this being +treated as part of the POW macro. 10 results are stored in the memo +hash. +Now, instead of calling pow(x,y) you should call POW(x,y) to use the +memoized version. + +NB: you can override the pow library call with something like the following, +and remember to link with "-ldl": + +#include <dlfcn.h> +double (*orig_pow)(double,double) orig_pow = dlsym(RTLD_NEXT, "pow"); +#define pow(x,y) Memoize( + binary_c_memo, + "pow", + 10, + array, + double, + 2, + ((double[]){x,y}), + double, + 1, + orig_pow(x,y)); + + +Three versions of the memoize library are built, libmemoize, libmemoize-debug +and libmemoize-stats. +libmemoize is the version to use in practice for maximum speed. +libmemoize-debug is the debugging version, which includes extra output. +libmemoize-stats includes statistics output and should be used for testing + + +The memoize library is based on the general idea, best expounded by + https://perldoc.perl.org/Memoize.html +many thanks to the author of Memoize-perl. + +Note: + Memory allocation is done with MALLOC and checking for success is + thus only done if ALLOC_CHECKS is defined. There is no checking here. + +------------------------------------------------------------ + +API + +You should use the Memoize macro to access the library, but you can +also call the functions directly if you wish. + +--- + +void memoize_initialize(struct memoize_hash_t * RESTRICT * RESTRICT m) + +Initialize the memoize hash at *m : you should pass in a pointer to +the pointer, e.g. + +struct memoize_hash_t memo; +memoize_initalize(&memo); + +--- + +struct memoize_hash_item_t * memoize_search_hash(const struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname) + +An internal function to search the hash at memo for an entry +corresponding to the function label, funcname. Returns a pointer +to the entry, or NULL if there is no match. + +--- + +void * memoize_search_result(struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname, + const void * parameter) + +Searches the hash memo for a match to both hthe function label +funcname and the parameter set at *parmeter. + +Returns the matching hash result, or NULL if there is no match. + +--- + +void * memoize_store_result(struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname, + const size_t nmax, + const size_t parameter_memsize, + const void * parameter, + const size_t result_memsize, + const void * result) + +memoize_store_result() stores a given result in the memoize hash at memo. +The function name (which is the hash key) is funcname, the size +of the hash is nmax. +The parameters are in *parmaeter, which if there is only one parameter +is a pointer to the parameter, in the case of an array is a pointer to the +array. +The result is set in result. + +parameter_memsize and parameter_memsize are the memory sizes (in bytes) +that are allocated in the memo hash. These are equal to sizeof(type)*n where +n is the number of parameters/results. + +--- + +void memoize_clear_hash_contents(struct memoize_hash_t * RESTRICT memo) + +Clears the contents of the hash stored at memo. + +--- + +void memoize_free(struct memoize_hash_t * RESTRICT memo) + +Frees the contents of the hash stored at memo. + +--- + +void memoize_status(const struct memoize_hash_t * memo) + +Shows, on stdout, the status of the hash at memo. + +--- + +size_t memoize_sizeof(struct memoize_hash_t * memo) + +Returns the size of memory allocated in memo. + +--- + + + +Author: Robert Izzard +You have no guarantee that this works, and the author accepts no liability. +Originally part of the binary_c project https://gitlab.eps.surrey.ac.uk/ri0005/binary_c \ No newline at end of file diff --git a/src/memoize/memoize.c b/src/memoize/memoize.c new file mode 100644 index 0000000000000000000000000000000000000000..2c1f6bdd4d03ff2aca5914141e23a9df751d4232 --- /dev/null +++ b/src/memoize/memoize.c @@ -0,0 +1,703 @@ +#include "../binary_c.h" +#include "memoize.h" +#ifdef MEMOIZE +#ifdef USE_LOCAL_MEMOIZE +/* + * memoize.c, part of libmemoize + * + * A wrapper around C functions to memoize them, i.e. only call them + * once for a given set of parameters. + * + * Please see the LICENCE file for licensing conditions. + * + * Usage: + * + * #include <memoize.h> + * + * Memoize( + * struct memoize_hash_t * RESTRICT memo, + * const char * RESTRICT funcname, + * const size_t nmax, + * (scalar|array), + * <parameter variable type>, + * const size_t n_parameters, + * const void * parameter, + * <parameter result type>, + * const size_t n_results, + * result + * ); + * + * Where + * + * memo is a memoize_hash_t pointer that can be allocated. + * Note: to allocate memory manually, call memoize_initialize(memo); + * Note: to free memory call memoize_free(memo); + * + * funcname is a string to identify your function. Use only one + * string per function. + * + * nmax is the maximum number of results that are stored for each function. + * Typically you want this number to be small, e.g. if you expect repeated + * calls with the same result, set it to 1. + * + * (scalar|array) : choose one of scalar or array. If you choose scalar, + * you can send the (single) parameter directly into parameter, + * if you choose array you have to wrap the parameter data in + * ((parameter_type[]){...}) (see example 2 below). + * + * <parameter variable type> is the C variable type of the parameters, + * e.g. int, char, double. We assume all parameters are of the same + * type, sorry (if you require different types, consider wrapping them + * in a struct: this will then be compared byte-by-byte to the memoize hash). + * + * n_parameters is the number of parameters pointed to by * parameter (below), + * e.g. for a scalar this is 1. + * + * parameter is the parameter data. + * + * <result variable type> is an C variable type of the results, + * e.g. int, char, double. + * + * n_results is the number of results provided by the function, . + * e.g. for a scalar this is 1. + * + * result is the result data. This can be an expression, a call to a + * function, etc. and can be a pointer to memory (e.g. to + * return an array of data or a struct). + * + * + * Generally, Memoize is designed for scalar input (n_parameters == n_results == 1) + * but by setting larger numbers there's no reason why arrays of data won't work. + * + * Similarly, Memoize has been tested on intrinsic C data types (e.g. double, int) + * but should work on any complex data type. + * + * + * Note: because we use a macro, RESULT is not calcualted until + * it is required, hence we gain some speed. The down side + * to this is that search_result and store_result must both + * check the hash for an existing key. This is (presumably) faster + * than the function to be memoized. You can only know by trying! + * + * Example: scalar in, scalar out + * + * double x = Memoize( + * disc->memo, + * "discT", + * 1, + * scalar, + * double, + * 1, + * radius, + * double, + * 1, + * MAX(0.0,generic_power_law(radius,disc,POWER_LAW_TEMPERATURE)) + * ); + * + * This example sets the result in the MAX(...) call, where the result + * is a single double and the parameter is also a single double ("radius"). + * The hash table at disc->memo is stored elsewhere, as is required. + * + * Example 2: array in, scalar out, to replace the pow function. + * + * #define POW(x,y) Memoize( \ + * binary_c_memo,\ + * "pow",\ + * 10, \ + * array,\ + * double,\ + * 2, \ + * ((double[]){x,y}), \ + * double, + * 1,\ + * pow(x,y)) + * + * In this case, we replace calls to pow(x,y), a standard C-library function, + * with a macro POW(x,y) which instead calls the memoized version of pow. + * You can see that two double-precision parameters are passed in, x and y. + * These must be encapsulated in an anonymous array, which is the + * ((double)[]{x,y}). The outer brackets are required to avoid this being + * treated as part of the POW macro. 10 results are stored in the memo + * hash. + * Now, instead of calling pow(x,y) you should call POW(x,y) to use the + * memoized version. + * + * NB: you can override the pow library call with something like the following, + * and remember to link with "-ldl": + * + * #include <dlfcn.h> + * double (*orig_pow)(double,double) orig_pow = dlsym(RTLD_NEXT, "pow"); + * #define pow(x,y) Memoize( + * binary_c_memo, + * "pow", + * 10, + * array, + * double, + * 2, + * ((double[]){x,y}), + * double, + * 1, + * orig_pow(x,y)) + * + * + * Three versions of the memoize library are built, libmemoize, libmemoize-debug + * and libmemoize-stats. + * libmemoize is the version to use in practice for maximum speed. + * libmemoize-debug is the debugging version, which includes extra output. + * libmemoize-stats includes statistics output and should be used for testing + * + * + * The memoize library is based on the general idea, best expounded by + * https://perldoc.perl.org/Memoize.html + * many thanks to the author of Memoize-perl. + * + * Note: + * Memory allocation is done with MALLOC and checking for success is + * thus only done if ALLOC_CHECKS is defined. There is no checking here. + * + * Author: Robert Izzard + * You have no guarantee that this works, and the author accepts no liability. + * Originally part of the binary_c project https://gitlab.eps.surrey.ac.uk/ri0005/binary_c + */ + +/* activate debugging if MEMOIZE_DEBUG is set */ +#ifdef MEMOIZE_DEBUG +#define verbose +#define show_memcmp +#define show_status +#endif // MEMOIZE_DEBUG + +#ifdef verbose +#define vb(...) \ + printf("MEMO:"); \ + fflush(stdout); \ + printf(__VA_ARGS__); \ + fflush(stdout); +#else +#define vb(...) +#endif // verbose + +/* + * Look up pointer to element J in hash H of type TYPE + * (which is "result" or "parameter") + */ +#define item(H,TYPE,J) \ + ((H)->TYPE + (H)->TYPE##_memsize * ((size_t)(J))) + +void * memoize_store_result(struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname, + const size_t nmax, + const size_t parameter_memsize, + const void * parameter, + const size_t result_memsize, + const void * result +#ifdef MEMOIZE_STATS + ,ticks * timer +#endif + ) +{ +#ifdef MEMOIZE_STATS + ticks tstart = getticks(); +#endif // MEMOIZE_STATS + + /* + * Given function "funcname", a "parameter" and "result", + * store in the memo hash. This assumes the result + * was not found previously, so you should only call + * this function if memoize_search_result has + * already been called. + * + * Returns a pointer to the stored result, and cannot fail to do so. + */ + vb("store_result: memo=%p funcname=\"%s\" nmax=%ld parameter=%p result=%p\n", + memo, + funcname, + nmax, + parameter, + result + ); + + /* + * If there's an exisiting hash key, use it. + */ + struct memoize_hash_item_t * h = + memoize_search_hash(memo,funcname); + + vb("store_result: h = %p\n",h); + + /* + * No hash key was found for this function name. + */ + if(h==NULL) + { + /* + * Need a new hash key for this funcname. + * + * This should be a rare occurrance (~once for each function). + */ + vb("store_result: need new hash item, realloc memo stack (sizeof %ld) at %p\n", + sizeof(struct memoize_hash_item_t) * (memo->n+1), + memo->item); + + /* + * Increase the size of the list of hash items + */ + memo->n++; + memo->item = REALLOC(memo->item, + sizeof(struct memoize_hash_item_t) * (memo->n+1)); + vb("store_result: reallocd for new item at %p\n",memo->item); + + /* + * h is the new item location (remember the -1!) + */ + h = & memo->item[memo->n - 1]; + + /* + * Store the sizes and counts of parameters and results in h + */ + h->parameter_memsize = parameter_memsize; + h->result_memsize = result_memsize; + + /* + * Add storage space for the parameters and results. + */ + h->parameter = MALLOC(nmax * h->parameter_memsize); + h->result = MALLOC(nmax * h->result_memsize); + + /* + * We don't have any parameters or results stored yet + */ + h->n = 0; + +#ifdef MEMOIZE_STATS + /* + * Set stats to zero + */ + h->nhits = 0; + h->nmisses = 0; + h->tmisses = 0; + h->thits = 0; +#endif // MEMOIZE_STATS + + /* + * Store the funcname, remember the extra NULL character + * and that strlcpy requires the length including the NULL + * character. + */ + size_t s = strlen(funcname); + h->funcname = MALLOC((s+1)*sizeof(char)); + strlcpy(h->funcname,funcname,s+1); + + vb("store_result: new is at # %ld, at %p (lists: parameter=%p (memsize %ld (double=%ld int=%ld char=%ld)) result=%p (memsize %ld)), h=%p, h->funcname=\"%s\", h->n=%ld, strlen %ld)\n", + memo->n-1, + memo->item, + h->parameter, + h->parameter_memsize, + sizeof(double), + sizeof(int), + sizeof(char), + h->result, + h->result_memsize, + h, + h->funcname, + h->n, + s); + } + else + { + /* + * A hash key already exists for this function. + * + * Shift elements by 1 in the stack. + * + * NB we shift n elements, where the stack is size nmax+1 + * so we never shift off the end (the n+1th element is just + * overwritten) + */ + vb("store_result: have hash item already\n"); + +#ifdef show_status + memoize_status(memo); +#endif + if(nmax>1) + { + vb("store_result: mv parameter %p to %p size %ld*%ld=%ld\n", + h->parameter, + h->parameter+1, + h->parameter_memsize,nmax-1,h->parameter_memsize*(nmax-1)); + memmove(h->parameter + h->parameter_memsize, + h->parameter, + h->parameter_memsize*(nmax-1)); + + vb("store_result: mv result %p to %p size %ld*%ld=%ld\n", + h->result, + h->result +1, + h->result_memsize,nmax-1,h->result_memsize*(nmax-1)); + + if(memo->free_results_pointers && + h->n+1 > nmax) + { + /* + * Free pointers which are shifted off + */ + Safe_free(*(void **)item(h,result,h->n-1)); + } + + memmove(h->result + h->result_memsize, + h->result, + h->result_memsize*(nmax-1)); + } + else + { + if(memo->free_results_pointers) + { + /* + * Free pointer which is shifted off + */ + Safe_free(*(void **)item(h,result,h->n-1)); + } + } + } + + /* + * Increase number of stored items + */ + h->n = MIN(nmax,h->n+1); + vb("store_result: h->n increased to %ld\n",h->n); + + /* + * Store in the top of the stack + */ + memcpy(item(h,parameter,0), parameter, h->parameter_memsize); + memcpy(item(h,result,0), result, h->result_memsize); + + vb("store_result: Return pointer at %p (h=%p h->n=%ld)\n\n", + item(h,result,0), + h, + h->n); + +#ifdef show_status + memoize_status(memo); +#endif + +#ifdef MEMOIZE_STATS + h->nmisses++; + *timer = getticks(); + h->tmisses += *timer - tstart; + memo->nmisses ++; +#endif // MEMOIZE_STATS + + return item(h,result,0); +} + +struct memoize_hash_item_t * memoize_search_hash(const struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname) +{ + /* + * Search for a hash item matching given funcname. + * Return a pointer to this item, or NULL if not found. + */ + vb("search: try to match against memo=%p, funcname = \"%s\"\n", + memo, + funcname); + vb("search: memo has n=%ld entries\n", + memo->n); + + size_t i; + for(i=0;i<memo->n;i++) + { + struct memoize_hash_item_t * h = & memo->item[i]; + + vb("search : h = %p from i = %ld\n",h,i); + vb("search: cf. item %ld at %p : item with %ld parameters, funcname = \"%s\" to required funcname = \"%s\"\n", + i, + h, + h->n, + h->funcname, + funcname); + + if(strcmp(h->funcname,funcname)==0) + { + vb("search: found matching item : return %p\n",h); + return h; + } + } + vb("search: found no matching items, return NULL\n"); + return NULL; +} +struct memoize_hash_t * memoize_initialize(struct memoize_hash_t * RESTRICT * RESTRICT m) +{ + /* + * Initialize memo given a pointer to its new location memo (m), + * with suitable defaults. + * + * Returns the pointer to the memo, or NULL on failure. + */ + vb("initialize: Try to malloc %ld bytes\n",sizeof(struct memoize_hash_t)); + *m = MALLOC(sizeof(struct memoize_hash_t)); + if(*m != NULL) + { + vb("initialize: Malloc'd memo at %p\n",*m); + (*m)->n = 0; + (*m)->item = NULL; + (*m)->free_results_pointers = 0; +#ifdef MEMOIZE_STATS + (*m)->nmisses = (*m)->nhits = 0; + (*m)->tsearch = (*m)->tstore = (*m)->toverheads = 0; +#endif // MEMOIZE_STATS + } + return *m; +} +void memoize_clear_hash_contents(struct memoize_hash_t * RESTRICT memo) +{ + /* + * Do not free memory, just "clear" the hash contents + * by settings n = 0 to ignore the function lists. + */ + int i; + for(i=0;i<memo->n;i++) + { + memo->item[i].n=0; + } +} + +void memoize_free(struct memoize_hash_t * RESTRICT memo) +{ + /* + * Free memo + */ + int i; + for(i=0;i<memo->n;i++) + { + struct memoize_hash_item_t * h = &memo->item[i]; +#ifdef MEMOIZE_STATS + printf("Memoize: function \"%s\" : %ld hits (%g s), %ld misses (%g s)\n", + h->funcname, + h->nhits, + (double)h->thits, + h->nmisses, + (double)h->tmisses); +#endif // MEMOIZE_STATS + if(memo->free_results_pointers) + { + /* + * Optionally free pointers stored in + * results hash items. + */ + size_t j; + for(j=0;j<h->n;j++) + { + void ** p = item(h,result,j); + Safe_free(*p); + } + } + Safe_free(h->parameter); + Safe_free(h->result); + Safe_free(h->funcname); + + } +#ifdef MEMOIZE_STATS + /* + * How efficient is memoize? + * + * We want tsearch to be large, and tstore+toverheads to be small, + * define the efficency score as 100*(tsearch/(tstore+toverheads)-1) + * + * Note that toverheads is typically small. + */ + double efficiency = 100.0 * + ( + ((double)memo->tsearch)/ + ((double)memo->tstore + + (double)memo->toverheads)-1.0); + + printf("Memoize: nhits = %ld, nmisses = %ld : tsearch = %g, tstore = %g, toverheads = %g : efficiency %5.2f %%\n", + memo->nhits, + memo->nmisses, + (double)memo->tsearch, + (double)memo->tstore, + (double)memo->toverheads, + efficiency + ); +#endif // MEMOIZE_STATS + Safe_free(memo->item); + Safe_free(memo); +} + +void * memoize_search_result( +#ifndef MEMOIZE_STATS + const +#endif + struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname, + const void * parameter + +#ifdef MEMOIZE_STATS + ,ticks * timer +#endif // MEMOIZE_STATS + ) +{ +#ifdef MEMOIZE_STATS + ticks tstart = getticks(); +#endif // MEMOIZE_STATS + /* + * Search for a call to function "funcname" + * with given parmaeter. Returns a pointer to the result, + * or NULL if not found. + */ + vb("search_result, memo = %p, funcname = \"%s\", parameter is at %p\n", + memo, + funcname, + parameter); + + /* + * First search for matching hash item. + */ + vb("search_result : look for matching hash entry in memo=%p\n", + memo); + + struct memoize_hash_item_t * h = + memoize_search_hash(memo,funcname); + + vb("search_result : hash entry = %p in memo=%p\n",h,memo); + + if(h) + { + /* + * found funcname in the hash, check we can match the + * parameter, if so return a pointer to the result + */ + size_t j; + const size_t ncmp = h->parameter_memsize; + + for(j=0; j<h->n; j++) + { + vb("search_result: Match paramter at %p to h->parameter[%ld] at %p, memsize %ld : equal? %d\n", + parameter, + j, + item(h,parameter,j), + h->parameter_memsize, + (int)((memcmp(parameter,item(h,parameter,j),ncmp)==0) ? 1 : 0) + ); + +#ifdef show_memcmp + { + size_t k; + unsigned char * x = (unsigned char *) parameter; + unsigned char * y = (unsigned char *) item(h,parameter,j); + printf("CMP pointers %p %p\n",x,y); + for(k=0;k<ncmp;k++) + { + printf("CMP byte %5ld/%5ld : input = %5hhu vs item = %5hhu : %s\n", + k, + ncmp, + *(x+k), + *(y+k), + *(x+k)==*(y+k) ? "same" : "different"); + } + } +#endif + + + /* + * Use memcmp to compare : this seems to work fine for + * floating point. + */ + if(memcmp(parameter,item(h,parameter,j),ncmp)==0) + { + /* + * Matched: return pointer to the result + */ + vb("search_result: return pointer %ld at %p\n", + j, + item(h,result,j)); +#ifdef MEMOIZE_STATS + memo->nhits++; + h->nhits++; + *timer = getticks(); + h->thits += *timer - tstart; +#endif // MEMOIZE_STATS + return item(h,result,j); + } + } + } + + vb("search_result: return NULL (failed to match parameter to any in the hash)\n"); + +#ifdef show_status + memoize_status(memo); +#endif +#ifdef MEMOIZE_STATS + const ticks _dt = getticks() - tstart; + *timer += _dt; +#endif // MEMOIZE_STATS + + /* + * return NULL if there were no matches, + * next memoize_store_result will be called + */ + return NULL; +} + + +void memoize_status(const struct memoize_hash_t * memo) +{ + /* + * Show the status of the memoize stack + */ + printf("Memoize status: \n"); + if(memo!=NULL) + { + printf(" memo = %p and contains %ld items\n", + memo, + memo->n); + int i; + for(i=0;i<memo->n;i++) + { + struct memoize_hash_item_t * h = &memo->item[i]; + printf(" % 5d at %p contains %ld parameter/result pairs for function %s : { ", + i, + h, + h->n, + h->funcname); + fflush(stdout); + + size_t j; + for(j=0;j<h->n;j++) + { + void * p = item(h,parameter,j); + void * r = item(h,result,j); + printf("%ld p=%p r=%p ", + j,p,r); + if(j != h->n-1) printf(" : "); + } + printf(" }\n"); + } + } + else + { + printf(" ... nothing allocated :( \n"); + } + printf("\n"); + fflush(stdout); +} + +size_t memoize_sizeof(struct memoize_hash_t * memo) +{ + /* + * Return the size of the memo hash and all its contents + */ + size_t s=0; + int i; + for(i=0;i<memo->n;i++) + { + struct memoize_hash_item_t * h = &memo->item[i]; + s += (h->n+1) * (h->parameter_memsize + h->result_memsize); + s += sizeof(char) * sizeof(h->funcname); + } + s += sizeof(memo); + return s; +} + +#endif // USE_LOCAL_MEMOIZE +#endif // MEMOIZE diff --git a/src/memoize/memoize.h b/src/memoize/memoize.h new file mode 100644 index 0000000000000000000000000000000000000000..1fd299b2b23e56c9105493fd5b20cfad1c0e5aa6 --- /dev/null +++ b/src/memoize/memoize.h @@ -0,0 +1,210 @@ +#pragma once +#ifndef BINARY_C_MEMO_H +#define BINARY_C_MEMO_H +#ifdef USE_LOCAL_MEMOIZE +#ifdef MEMOIZE + +/* + * Header file for the memoize library. + * + * For details please see memoize.c + */ + + +/* + * Memoize function called "FUNCNAME" up to N times in the MEMO. + * Initialize or store the result for parameter PARAMETER with + * result RESULT. + */ +#define MEMOIZE_VERSION "1.0" +#define MEMOIZE_MAJOR_VERSION 1 +#define MEMOIZE_MINOR_VERSION 0 + +/* + * If we have GNU C extensions, we can use the native Elvis + * operator. + * + * Otherwise, use the usual ternary with a temporary variable. + * + * Note: we can use typeof here because the calls to memoize_search_result + * and memoize_store_results are cast to RESULT_TYPE* pointers in + * the Memoize macros. + */ +#ifdef __GNUC__ +#define Memoize_Elvis(A,B) ((A) ?: (B)) +#else +#define Memoize_Elvis(A,B) ({typeof(A) * __x = (A); __x ? __x : (B);}) +#endif//__GNUC__ + +/* + * number of * required for scalar or array data + */ +#define Memoize_pointer(SCALAR_OR_ARRAY) Memoize_pointer_primitive(SCALAR_OR_ARRAY) +#define Memoize_pointer_primitive(SCALAR_OR_ARRAY) Memoize_pointer_##SCALAR_OR_ARRAY +#define Memoize_pointer_scalar * +#define Memoize_pointer_array ** + +#define Memoize_set_pp(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) \ + Memoize_pp_primitive(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) +#define Memoize_pp_primitive(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) \ + Memoize_pp_##SCALAR_OR_ARRAY(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) + +/* set pointer to scalar type */ +#define Memoize_pp_scalar(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) \ + Memoize_pp_scalar_primitive(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) +#define Memoize_pp_scalar_primitive(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) \ + PARAMETER_TYPE _x = (PARAMETER); \ + _memoize_pp = ((PARAMETER_TYPE Memoize_pointer(SCALAR_OR_ARRAY)) &_x); + +/* set pointer to array type */ +#define Memoize_pp_array(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) \ + Memoize_pp_array_primitive(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) +#define Memoize_pp_array_primitive(SCALAR_OR_ARRAY,PARAMETER_TYPE,NPARAMETERS,PARAMETER) \ + _memoize_pp = ((PARAMETER_TYPE Memoize_pointer(SCALAR_OR_ARRAY)) &(PARAMETER)); + + + +#ifdef MEMOIZE_STATS +/* + * Timers to measure performance + */ +#define Memoize_timer_define \ + ticks _memoize_timer,_memoize_timer_search,_memoize_timer_store +#define Memoize_timer_start \ + _memoize_timer = getticks() +#define Memoize_timer_end_overhead(MEMO) \ + (MEMO)->toverheads += getticks() - _memoize_timer +#define Memoize_timer_end_search(MEMO) \ + (MEMO)->tsearch += _memoize_timer_search - _memoize_timer +#define Memoize_timer_end_store(MEMO) \ + (MEMO)->tstore += _memoize_timer_store - _memoize_timer +#define Memoize_timer_arg_search \ + ,&_memoize_timer_search +#define Memoize_timer_arg_store \ + ,&_memoize_timer_store + +#else +/* versions of the above macros that do nothing */ +#define Memoize_timer_define +#define Memoize_timer_start +#define Memoize_timer_end_overhead(MEMO) +#define Memoize_timer_end_search(MEMO) +#define Memoize_timer_end_store(MEMO) +#define Memoize_timer_arg_search +#define Memoize_timer_arg_store +#define Memoize_result_set +#define Memoize_result_declare(RESULT_TYPE) +#define Memoize_result +#endif // MEMOIZE_STATS + +/* + * Compiler-specific settings + */ +#ifdef __clang__ +#define MEMOIZE_EXPLICIT_RESULT_SET +#endif // __clang__ + +#ifdef MEMOIZE_EXPLICIT_RESULT_SET +/* + * GCC does not require that we explicitly return + * a variable of the RESULT_TYPE, but clang does. + */ +#undef Memoize_result_set +#undef Memoize_result_declare +#undef Memoize_result +#define Memoize_result_set _memoize_result = +#define Memoize_result_declare(RESULT_TYPE) \ + RESULT_TYPE _memoize_result +#define Memoize_result \ + _memoize_result +#endif // MEMOIZE_EXPLICIT_RESULT_SET + + +/* + * Wrapper macro for Memoizing + */ +#define Memoize( \ + MEMO, \ + FUNCNAME, \ + N, \ + SCALAR_OR_ARRAY, \ + PARAMETER_TYPE, \ + NPARAMETERS, \ + PARAMETER, \ + RESULT_TYPE, \ + NRESULTS, \ + RESULT \ + ) \ + ({ \ + Memoize_result_declare(RESULT_TYPE); \ + Memoize_timer_define; \ + Memoize_timer_start; \ + \ + /* store a pointer to the paramter(s) */ \ + void * _memoize_pp; \ + Memoize_set_pp(SCALAR_OR_ARRAY, \ + PARAMETER_TYPE, \ + NPARAMETERS, \ + PARAMETER); \ + \ + /* initialize memo stack if required */ \ + if((MEMO)==NULL) memoize_initialize(&(MEMO)); \ + \ + Memoize_timer_end_overhead(MEMO); \ + Memoize_timer_start; \ + \ + Memoize_result_set \ + (*(RESULT_TYPE*) \ + ( \ + Memoize_Elvis( \ + /* first do the search */ \ + (RESULT_TYPE*)memoize_search_result( \ + (MEMO), \ + (FUNCNAME), \ + _memoize_pp \ + Memoize_timer_arg_search), \ + /* on failure, evaluate and store the result */ \ + ({ \ + Memoize_timer_start; \ + const RESULT_TYPE _r = (RESULT); \ + (RESULT_TYPE*)memoize_store_result( \ + (MEMO), \ + (FUNCNAME), \ + (N), \ + (NPARAMETERS)*sizeof(PARAMETER_TYPE), \ + _memoize_pp, \ + (NRESULTS)*sizeof(RESULT_TYPE), \ + &_r \ + Memoize_timer_arg_store); \ + }) \ + ) \ + ) \ + ); \ + \ + Memoize_timer_end_search(MEMO); \ + Memoize_timer_end_store(MEMO); \ + Memoize_result; \ + }) + +#else + +/* + * Version of the above macro for when MEMOIZE is disabled, just + * returns the RESULT + */ +#define Memoize(MEMO, \ + FUNCNAME, \ + N, \ + SCALAR_OR_ARRAY, \ + PARAMETER_TYPE, \ + NPARAMETERS, \ + PARAMETER, \ + RESULT_TYPE, \ + NRESULTS, \ + RESULT) \ + (RESULT) + +#endif // MEMOIZE +#endif // USE_LOCAL_MEMOIZE +#endif // BINARY_C_MEMO_H + diff --git a/src/memoize/memoize_prototypes.h b/src/memoize/memoize_prototypes.h new file mode 100644 index 0000000000000000000000000000000000000000..a1dbd0ab1c6e5fcd95086038ddc427077392a393 --- /dev/null +++ b/src/memoize/memoize_prototypes.h @@ -0,0 +1,49 @@ +#pragma once +#ifndef BINARY_C_MEMOIZE_PROTOTYPES_H +#define BINARY_C_MEMOIZE_PROTOTYPES_H + +#ifdef USE_LOCAL_MEMOIZE + + +/* + * Prototypes for the memoize library. + */ + +void * memoize_store_result(struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname, + const size_t nmax, + const size_t parameter_memsize, + const void * parameter, + const size_t result_memsize, + const void * result +#ifdef MEMOIZE_STATS + ,ticks * timer +#endif // MEMOIZE_STATS +); +struct memoize_hash_item_t * +memoize_search_hash(const struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname); + +struct memoize_hash_t * memoize_initialize(struct memoize_hash_t * RESTRICT * RESTRICT m); + +void memoize_clear_hash_contents(struct memoize_hash_t * RESTRICT memo); + +void memoize_free(struct memoize_hash_t * RESTRICT memo); + +void * memoize_search_result( +#ifndef MEMOIZE_STATS + const +#endif + struct memoize_hash_t * RESTRICT memo, + const char * RESTRICT funcname, + const void * parameter +#ifdef MEMOIZE_STATS + ,ticks * timer +#endif // MEMOIZE_STATS + ); +void memoize_status(const struct memoize_hash_t * memo); +size_t memoize_sizeof(struct memoize_hash_t * memo); + +#endif // USE_LOCAL_MEMOIZE + +#endif // BINARY_C_MEMOIZE_PROTOTYPES_H diff --git a/src/memory/build_store_contents.c b/src/memory/build_store_contents.c index 6b4a5acd420f071d979248c8f992b5f1539fb7b2..f6ee6ab629036f98a07e391fd60659a65b0bb376 100644 --- a/src/memory/build_store_contents.c +++ b/src/memory/build_store_contents.c @@ -67,7 +67,9 @@ void build_store_contents(struct store_t * RESTRICT store) table_Eldridge2012_colours(store); #endif // STELLAR_COLOURS table_spectral_types(store); +#ifdef USE_2012_MAIN_SEQUENCE_LIFETIMES_TABLE table_massive_MS_lifetimes(store); +#endif // USE_2012_MAIN_SEQUENCE_LIFETIMES_TABLE table_comenv(store); table_BSE(store); table_Karakas_ncal(store); @@ -83,7 +85,8 @@ void build_store_contents(struct store_t * RESTRICT store) table_opacity_ferguson_opal(store); #endif // OPACITY_ENABLE_ALGORITHM_FERGUSON_OPAL #endif // OPACITY_ALGORITHMS - + table_miller_bertolami(store); + store->built = TRUE; store->debug_stopping = 0; } diff --git a/src/memory/free_store_contents.c b/src/memory/free_store_contents.c index 5f136a64172382794152f921a566bd4283c57bed..a2c77bebe8aaeb355ee29bcef452a7203b56aa3b 100644 --- a/src/memory/free_store_contents.c +++ b/src/memory/free_store_contents.c @@ -68,5 +68,8 @@ void free_store_contents(struct store_t * RESTRICT store) defined OPACITY_ENABLE_ALGORITHM_FERGUSON_OPAL Safe_free(store->opacity_ferguson_opal); #endif + Safe_free(store->miller_bertolami); + Safe_free(store->miller_bertolami_coeffs_L); + Safe_free(store->miller_bertolami_coeffs_R); } } diff --git a/src/memory/free_tmpstore.c b/src/memory/free_tmpstore.c index bc07194c5f016f267c19827805acabf4f2bcb58e..ce4b513b00d771fe3d5236fb218bbe391f37517e 100644 --- a/src/memory/free_tmpstore.c +++ b/src/memory/free_tmpstore.c @@ -31,6 +31,16 @@ void free_tmpstore(struct tmpstore_t * RESTRICT tmpstore) //Safe_free(tmpstore->comenv_lambda_data); Delete_data_table(tmpstore->comenv_lambda_table); #endif +#ifdef WTTS_LOG + { + int i; + for(i=0;i<=1;i++) + { + Safe_fclose(tmpstore->fp_star[i]); + } + Safe_fclose(tmpstore->fp_sys); + } +#endif // WTTS_LOG Safe_free(tmpstore); } } diff --git a/src/memory/main_allocations.c b/src/memory/main_allocations.c index 91191a7299a15b110af746ee4c52461921a71a9d..53a32a7481992c85f5aa58a885ac2db56644629e 100644 --- a/src/memory/main_allocations.c +++ b/src/memory/main_allocations.c @@ -24,7 +24,7 @@ void main_allocations(struct stardata_t ** new_stardata, * A few preferences are set. Perhaps this part should * be moved elsewhere. */ - + /* * The stardata structure contains all of the stuff * to describe the physics of diff --git a/src/memory/memory_alignment_checks.h b/src/memory/memory_alignment_checks.h index a8e7d65c9cfb0736a4af640d38fa848b266e3e73..af62e7ef17bf1e2c1a1573098058cd694a803fbe 100644 --- a/src/memory/memory_alignment_checks.h +++ b/src/memory/memory_alignment_checks.h @@ -1,3 +1,4 @@ +#pragma once #ifndef MEMORY_ALIGNMENT_CHECKS_H #define MEMORY_ALIGNMENT_CHECKS_H diff --git a/src/memory/memory_function_macros.h b/src/memory/memory_function_macros.h index 521415304df5668a7ff6ba3fa535952d7171b513..c6af3c803aab62028e8e9ee107a49f7d6c3a8cef 100644 --- a/src/memory/memory_function_macros.h +++ b/src/memory/memory_function_macros.h @@ -1,3 +1,4 @@ +#pragma once #ifndef MEMORY_FUNCTION_MACROS_H #define MEMORY_FUNCTION_MACROS_H @@ -5,8 +6,10 @@ #include <malloc.h> #endif // __HAVE_MALLOC_H__ #include <stdlib.h> +#include <string.h> -#include "../binary_c_code_options.h" +#include "../breakpoints/breakpoints_prototypes.h" +#include "../binary_c_exit_prototypes.h" /* * Memory function macros for binary_c @@ -26,7 +29,7 @@ * not an expression. */ #define Safe_free(PTR) \ - if((PTR)!=NULL) \ + if(likely((PTR)!=NULL)) \ { \ free(PTR); \ (PTR)=NULL; \ @@ -37,13 +40,17 @@ */ #ifdef ALLOC_CHECKS #define _Alloc_check(P) \ - if((P)==NULL) \ + if(unlikely((P)==NULL)) \ { \ fprintf(stderr,"Memory allocation failed.\n"); \ - _exit(ALLOC_FAILED); \ - } + Backtrace; \ + Exit_binary_c_no_stardata( \ + ALLOC_FAILED, \ + "Memory allocation failed.\n" \ + ); \ + } #else -#define _Alloc_check(P) +#define _Alloc_check(P) /* _Alloc_check(P) do nothing */ #endif @@ -84,13 +91,12 @@ #define ASSUME_ALIGNED(P) (P) #endif -#include <string.h> -#include <malloc.h> -#include <stdlib.h> -static inline void *aligned_malloc(size_t size, size_t alignment); -static inline void *aligned_malloc(size_t size, size_t alignment) +static inline void *aligned_malloc(size_t size, \ + size_t alignment); +static inline void *aligned_malloc(size_t size, \ + size_t alignment) { - if(size==0) return NULL; + if(unlikely(size==0)) return NULL; void *p = NULL; if(0)fprintf(stderr, "size %ld at %p\n", \ (long int)size,p); @@ -99,8 +105,12 @@ static inline void *aligned_malloc(size_t size, size_t alignment) return r==0 ? (void *) BUILTIN_ALIGNED(p,alignment) : NULL; } -static inline void *aligned_calloc(size_t nelem, size_t elsize, size_t alignment); -static inline void *aligned_calloc(size_t nelem, size_t elsize, size_t alignment) +static inline void *aligned_calloc(size_t nelem, \ + size_t elsize, \ + size_t alignment); +static inline void *aligned_calloc(size_t nelem, \ + size_t elsize, \ + size_t alignment) { void *p = aligned_malloc(nelem*elsize,alignment); _Alloc_check(p); @@ -108,15 +118,22 @@ static inline void *aligned_calloc(size_t nelem, size_t elsize, size_t alignment return p; } -static inline void *aligned_realloc(void *ptr, size_t size, size_t alignment); -static inline void *aligned_realloc(void *ptr, size_t size, size_t alignment) +static inline void *aligned_realloc(void *ptr, \ + size_t size, \ + size_t alignment); +static inline void *aligned_realloc(void *ptr, \ + size_t size, \ + size_t alignment) { #ifdef HAVE_MALLOC_USABLE_SIZE - if(size==0) return NULL; + if(unlikely(size==0)) return NULL; size_t usable = Malloc_usable_size(ptr); void *p = NULL; - p = posix_memalign(&p,alignment,size)==0 ? (void *) BUILTIN_ALIGNED(p,alignment) : NULL; - _Alloc_check(p); + p = posix_memalign(&p,alignment,size)==0 ? + (void *) BUILTIN_ALIGNED(p,alignment) : + NULL; + _Alloc_check(p); + if(p!=NULL && ptr!=NULL) { memcpy(p,ptr,usable<size?usable:size); @@ -141,7 +158,8 @@ static inline void *aligned_realloc(void *ptr, size_t size, size_t alignment) * is defined. */ #ifdef CHECK_MEMCPY_ALIGNMENT -#define memcpy(dest,src,n) check_aligned_memcpy_heap_source(dest,src,n) +#define memcpy(dest,src,n) \ + check_aligned_memcpy_heap_source(dest,src,n) #endif // CHECK_MEMCPY_ALIGNMENT @@ -166,7 +184,8 @@ static inline void *_binary_c_calloc(size_t nmemb,size_t size) return p; } -static inline void *_binary_c_realloc(void *ptr,size_t size) +static inline void *_binary_c_realloc(void *ptr, + size_t size) { #ifdef HAVE_MALLOC_USABLE_SIZE void *p; @@ -188,8 +207,10 @@ static inline void *_binary_c_realloc(void *ptr,size_t size) } static inline void *_binary_c_malloc(size_t size); -static inline void *_binary_c_calloc(size_t nmemb,size_t size); -static inline void *_binary_c_realloc(void *ptr,size_t size); +static inline void *_binary_c_calloc(size_t nmemb, + size_t size); +static inline void *_binary_c_realloc(void *ptr, + size_t size); /* standard C malloc */ #define MALLOC(S) (_binary_c_malloc(S)) @@ -222,7 +243,8 @@ static inline void *_binary_c_realloc(void *ptr,size_t size); #define Clear_heap_location(P,S) \ memset((P),0,(S)); -#define Alloc_or_clear_pointer(P,S) if((P)!=NULL) \ +#define Alloc_or_clear_pointer(P,S) \ + if((P)!=NULL) \ { \ Clear_heap_location((P),(S)); \ } \ @@ -255,11 +277,11 @@ static inline void *_New_GSL_vector(const int n) return v; } #define Safe_free_GSL_vector(PTR) \ - if((PTR)!=NULL) \ - { \ - gsl_vector_free(PTR); \ - (PTR)=NULL; \ - }; + if(likely((PTR)!=NULL)) \ + { \ + gsl_vector_free(PTR); \ + (PTR)=NULL; \ + }; #define GSL_multiroot_fsolver_ALLOC(T,N) _GSL_multiroot_fsolver_alloc((T),(N)) @@ -272,7 +294,7 @@ static inline void *_GSL_multiroot_fsolver_alloc(const gsl_multiroot_fsolver_typ } #define Safe_free_GSL_multiroot_fsolver(PTR) \ - if((PTR)!=NULL) \ + if(likely((PTR)!=NULL)) \ { \ gsl_multiroot_fsolver_free(PTR); \ (PTR)=NULL; \ diff --git a/src/memory/memory_prototypes.h b/src/memory/memory_prototypes.h index 8bdac70b9c05e39c6f0a744a82a47423c19364ac..19baba7a01231f4d1c63f1271d46be7d68b65257 100644 --- a/src/memory/memory_prototypes.h +++ b/src/memory/memory_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef MEMORY_PROTOTYPES_H #define MEMORY_PROTOTYPES_H diff --git a/src/misc/misc.h b/src/misc/misc.h index 05f1a6bec4b973d8d93e10aebe136a98b2489f8b..3240bce7eee064bc2f7c1e647508ac27cde9c7dd 100644 --- a/src/misc/misc.h +++ b/src/misc/misc.h @@ -1,3 +1,5 @@ +#pragma once + #ifndef MISC_H #define MISC_H diff --git a/src/nucsyn/nucsyn.h b/src/nucsyn/nucsyn.h index aebe7f1de513b714a2bba351a08464fd57fae072..32790bce9a98b20d8c9cbd91959bd3239a1ad654 100644 --- a/src/nucsyn/nucsyn.h +++ b/src/nucsyn/nucsyn.h @@ -1,3 +1,4 @@ +#pragma once #ifndef NUCSYN_H #define NUCSYN_H diff --git a/src/nucsyn/nucsyn_WR_RS_table_lookup.c b/src/nucsyn/nucsyn_WR_RS_table_lookup.c index 16b2251a08eb13c008e08abbd0923a4994e4848a..c8cac6a5ef002cf39f753b1a03b0ee8af61cd31d 100644 --- a/src/nucsyn/nucsyn_WR_RS_table_lookup.c +++ b/src/nucsyn/nucsyn_WR_RS_table_lookup.c @@ -23,10 +23,10 @@ void nucsyn_WR_RS_table_lookup(struct stardata_t * stardata, /* * This array never changes so can be static */ - Const_data_table rs_data[]={NUCSYN_RS_DATA}; + Const_data_table rs_data[]={NUCSYN_RS_DATA}; - interpolate(stardata, - rs_data,3, + interpolate(stardata, + rs_data,3, #ifdef NUCSYN_WR_RS_TABLE_NeNa_ONLY 2, #else diff --git a/src/nucsyn/nucsyn_WR_table.c b/src/nucsyn/nucsyn_WR_table.c index bc6fa4354153a8853255fab2a15b971c403444a1..71ab24a8153a94e4f5f013d345bcd5030bce4802 100644 --- a/src/nucsyn/nucsyn_WR_table.c +++ b/src/nucsyn/nucsyn_WR_table.c @@ -2,87 +2,46 @@ #ifdef NUCSYN -//#define WRPLOT - /* - * Mass star abundances from tables based on Lynnette Dray and Richard - * Stancliffe's models + * Massive-star abundances from tables based on + * Lynnette Dray and Richard Stancliffe's models */ - -/* - * Useful macros used in tabular lookup - */ #define R_He 0 #define R_C 1 #define R_N 2 #define R_O 3 #define R_Ne 4 #define R_Mg 5 -#define WRDEBUG2 +#define R_COLS 6 + +/* debugging */ +//#define WRDEBUG2 -#if defined(NUCSYN_WR_TABLES) && defined(WRDEBUG2) +#if defined NUCSYN_WR_TABLES && defined WRDEBUG2 static double CNOsum(double *X); -#endif +#endif // NUCSYN_WR_TABLES && WRDEBUG2 void nucsyn_WR_table(struct star_t *star, struct stardata_t * RESTRICT stardata, const double stellar_mass) { - return; -#ifdef NUCSYN_WR_TABLES - - /* - * The input parameters: - * - * metallicity - * - * ZAMS mass is used as the basic fitting parameter - * (note this is not the real ZAMS mass: in the case of - * accretion on the MS it is the rejuvenated star's mass) - * - * mass/effective_zams_mass : this is the fractional mass as a function - * of ZAMS (or rejuvenated) mass. As mass is stripped this - * parameter changes and surface abundances change with it, - * e.g. exposing nitrogen-rich parts of the star. - */ - double x[3]={stardata->common.metallicity, - star->effective_zams_mass, - MIN(1.0,star->mass/star->effective_zams_mass)}; - double r[50]; // resulting abundances - - double *X=star->Xenv; // quick local pointer to star->Xenv (used a lot!) - - -#ifdef WRDEBUG2 - double Hein=X[XHe4]; - fprintf(stderr,"\nnucsyn_WR_table input star %d: H1=%g He4=%g XC12=%g XC13=%g XN14=%g XO16=%g XNe20=%g XNe22=%g tot=%g kw=%d\n", - star->starnum, - X[XH1],X[XHe4],X[XC12],X[XC13], - X[XN14],X[XO16],X[XNe20],X[XNe22], - XXsum(stardata,X),star->stellar_type); -#endif - - /* do the table lookup (slow, in separate function) */ - nucsyn_WR_table_lookup(stardata,x,r,stardata->preferences->wr_wind); - - Dprint("From WR table : He=%g C=%g N=%g O=%g\n",r[R_He],r[R_C],r[R_N],r[R_O]); +#ifdef NUCSYN_WR #ifdef WRDEBUG2 - fprintf(stderr,"Table lookup: Z=%g MZAMS=%g fM=%g (mass=%g)\nFrom WR table : He=%g C=%g N=%g O=%g\n", + fprintf(stderr,"Table lookup: Z=%g MZAMS=%g fM=%g (mass=%g)\n", stardata->common.metallicity, star->effective_zams_mass, MIN(1.0,star->mass/star->effective_zams_mass), - star->mass, - r[R_He],r[R_C],r[R_N],r[R_O]); -#endif + star->mass); + +#endif // WRDEBUG2 #ifdef NUCSYN_WR_ACCRETION - double * r_PMS = star->XWR0; /* copy pointer to local variable */ - - /* first element is helium :if <0.01 then clearly we haven't + /* + * first element is helium :if <0.01 then clearly we haven't * loaded in the t=0 abundances */ if(star->XWR0[0] < 0.01) @@ -90,15 +49,23 @@ void nucsyn_WR_table(struct star_t *star, Dprint("GET PMS WR0 from %g\n",star->XWR0[0]); /* get PMS abundances : cache these! */ - double x_PMS[3]={stardata->common.metallicity, - star->effective_zams_mass,1.0}; - nucsyn_WR_table_lookup(stardata,x_PMS,r_PMS,stardata->preferences->wr_wind); + double x_PMS[3]={ + stardata->common.metallicity, + star->effective_zams_mass, + 1.0 + }; + nucsyn_WR_table_lookup(stardata, + x_PMS, + r_PMS, + stardata->preferences->wr_wind); Dprint("GET PMS WR0 now %g\n",star->XWR0[0]); - } - #endif //NUCSYN_WR_ACCRETION + + /* work on Xenv */ + Abundance * X = star->Xenv; + /* save initial abundances */ double he4=X[XHe4]; double c12=X[XC12]; @@ -110,16 +77,29 @@ void nucsyn_WR_table(struct star_t *star, /* save NeNa and MgAl to accommodate accretion */ #ifdef NUCSYN_WR_RS_TABLE -#ifndef NUCSYN_WR_RS_TABLE_NeNa_ONLY double star_NeNa=X[XNe20]/20.0+X[XNe21]/21.0+X[XNe22]/22.0+X[XNa23]/23.0; double star_MgAl=X[XMg24]/24.0+X[XMg25]/25.0+X[XMg26]/26.0+X[XAl26]/26.0+X[XAl27]/27.0; -#endif -#endif +#endif // NUCSYN_WR_RS_TABLE Dprint("nucsyn_WR_table: m=%g in XC12=%g XN14=%g\n",star->mass,X[XC12],X[XN14]); #ifdef WRDEBUG2 if(star->starnum==0) fprintf(stderr,"CNO in %g N=%g\n",CNOsum(X),X[XN14]); -#endif +#endif // WRDEBUG2 + + double * x = MALLOC(sizeof(double)*3); + double * r = MALLOC(sizeof(double)*R_COLS); + + x[0] = stardata->common.metallicity; + x[1] = star->effective_zams_mass; + x[2] = star->mass / star->effective_zams_mass; + + /* + * Note that x[2] = f = M/Minit is only + * tabulated to 2 decimal places, so + * calculate to 2 decimal places to allow table + * cacheing + */ + x[2]=( (int) (100.0*x[2]) ) / 100.0; /* * Mass must be > NUCSYN_WR_MASS_BREAK @@ -127,6 +107,15 @@ void nucsyn_WR_table(struct star_t *star, */ if(star->effective_zams_mass > NUCSYN_WR_MASS_BREAK) { + /* + * Look up data from Lynnette's tables + */ + nucsyn_WR_table_lookup( + stardata, + x, + r, + stardata->preferences->wr_wind); + /* * Take helium directly from Lynnette's results, but don't let it * drop due to a different initial abundance. Apply the correction @@ -146,7 +135,7 @@ void nucsyn_WR_table(struct star_t *star, fprintf(stderr,"Table He =%g * factor %g = %g\n",r[R_He], stardata->common.XZAMS[XHe4]/star->XWR0[R_He], he4); -#endif +#endif // WRDEBUG2 /* * Assume Lynnette's values for CNO, then scale to the @@ -175,64 +164,10 @@ void nucsyn_WR_table(struct star_t *star, /* * If there is CNO, and Lynnette's star is NOT a helium star */ - if((lynnette_CNO>TINY)&&(Hestar==FALSE)) + if(Hestar==FALSE && lynnette_CNO) { #ifdef NUCSYN_WR_ACCRETION - /* C=r[1]=r[R_C], N=r[2]=r[R_N], O=r[3]=r[R_O] */ - - //#define NUCSYN_WR_EXPERIMENTAL_METHOD -#ifdef NUCSYN_WR_EXPERIMENTAL_METHOD - /* - * Define g = 0 at the original surface, =1 when - * stripped to the core. - * Note that we use N-Ninit as the proxy but it - * could be anything that has the same property. - */ - double g=(r[R_N]-r_PMS[R_N])/(r_PMS[R_C]+r_PMS[R_O]); - g=MAX(0.0,MIN(1.0,g)); /* sanity check */ - g=pow(g,0.1); /* fitting parameter */ - - /* - * Now define factors f - */ - double x,f_N,f_C,f_O; - - double nCNO_init= - star->Xinit[XC12]/12.0+ - star->Xinit[XN14]/14.0+ - star->Xinit[XO16]/16.0; - - double nCNO_table=r[R_C]/12.0+r[R_N]/14.0+r[R_O]/16.0; - - /* x is a factor used in all f_ calculations */ - x=nCNO_init / nCNO_table; - - /* calculate f factors for each element */ - double gix=(1-g)/x; - - /* - * Make sure C,N and O are > some minimum to avoid 1/0 errors - * (Lynnette's tables are not accurate to better than 1e-5 at low Z!) - */ - double CNOmin=MAX(TINY,lynnette_CNO); - - f_N = g + gix * (star->Xinit[XN14]/MAX(CNOmin,r[R_N])); - n14 = f_N * r[R_N] * x ; - - f_C = g + gix * (star->Xinit[XC12]/MAX(CNOmin,r[R_C])); - c12 = f_C * r[R_C] * x ; - - f_O = g + gix * (star->Xinit[XO16]/MAX(CNOmin,r[R_O])); - o16 = f_O * r[R_O] * x ; - - Dprint("f factors: f_C=%g f_N=%g f_O=%g\n",f_C,f_N,f_O); -#else - /* - * Simpler, less buggy method which simply - * scales with total CNO but only changes CNO if - * N increases. - */ double nCNO_init= star->Xinit[XC12]/12.0+ star->Xinit[XN14]/14.0+ @@ -246,7 +181,7 @@ void nucsyn_WR_table(struct star_t *star, #ifdef WRDEBUG2 fprintf(stderr,"Guess new N=%g (table=%g fCNO=%g)\n", n14,r[R_N],x); -#endif +#endif // WRDEBUG2 /* * Only change abundances if n14 increases @@ -259,13 +194,13 @@ void nucsyn_WR_table(struct star_t *star, o16 = x * r[R_O]; #ifdef WRDEBUG2 fprintf(stderr,"Scaled C=%g O=%g (table C=%g O=%g)\n",c12,o16,r[R_C],r[R_O]); -#endif +#endif // WRDEBUG2 } else { n14 = X[XN14]; } -#endif +#endif // NUCSYN_WR_ACCRETION #ifdef NANCHECKS if(isnan(c12)!=0) @@ -273,7 +208,7 @@ void nucsyn_WR_table(struct star_t *star, Exit_binary_c(OUT_OF_RANGE, "Abundance is nan (C=%g N=%g O=%g) in nucsyn_WR_table accretion\n",c12,n14,o16); } -#endif +#endif //NANCHECKS /* * close to the helium core we should allow the total * CNO to increase: this is based on the tabular abundances @@ -306,7 +241,7 @@ void nucsyn_WR_table(struct star_t *star, r[R_C]+r[R_N]+r[R_O], nCNO_table/(r_PMS[R_C]/12.0+r_PMS[R_N]/14.0+r_PMS[R_O]/16.0) ); -#endif +#endif // DEBUG==1 #ifdef NANCHECKS if((isnan(c12)!=0)||(isnan(n14)!=0)||(isnan(o16)!=0)) @@ -314,77 +249,7 @@ void nucsyn_WR_table(struct star_t *star, Exit_binary_c(OUT_OF_RANGE, "Abundance is nan (C=%g N=%g O=%g) in nucsyn_WR_table accretion (2)\n",c12,n14,o16); } -#endif - -#else //NUCSYN_WR_ACCRETION - - /* use old (buggy) method */ - double star_CNO=X[XC12]/12.0+X[XN14]/14.0+X[XO16]/16.0; - double f=star_CNO/lynnette_CNO; - - Dprint("Helium star when Lynnette's star is not a helium star\nCNO = %g\n",star_CNO); - - /* - * Calculate C12,N14 and O16 from shifts relative to ZAMS. - * Xinit will then give you the accreted amount. - */ - c12=star->Xinit[XC12]+f*r[R_C]-stardata->common.XZAMS[XC12]; - n14=star->Xinit[XN14]+f*r[R_N]-stardata->common.XZAMS[XN14]; - o16=star->Xinit[XO16]+f*r[R_O]-stardata->common.XZAMS[XO16]; - - - Dprint("N14= %g from Lynnette's models\n",r[2]); - Dprint("CNO factor f=%g\n",f); - Dprint("New N14 = %g + %g *%g - %g\n", - star->Xinit[XN14],f,r[2],stardata->common.XZAMS[XN14]); - - - /* - * Maintain overall CNO abundances to avoid - * feedback problems - */ - double newCNO=c12/12.0+n14/14.0+o16/16.0; - double newf=star_CNO/newCNO; - - Dprint("Renorm CNO\n"); - - c12*=newf; - n14*=newf; - o16*=newf; - - Dprint("CNO now %g\n",c12+n14+o16); - - - /* - * Alternative : scale CNO to total CNO - * this assumes that CNO mixes into the star and is converted - * to the appropriate mixture by nuclear burning... (bit dodgy!) - */ - - /* - c12=f*r[R_C]; - n14=f*r[R_N]; - o16=f*r[R_O]; - */ - - /* - * C13 depends on C12/N14 : when N14 is high, we are - * in equilibrium, so set C13 to 25% of the C12, otherwise - * assume it doesn't change - */ -#ifndef NUCSYN_WR_RS_TABLE - if(r[2]/lynnette_CNO>0.95) - { - c13=0.25*c12; - } - else - { - c13=star->Xinit[XC13]; - } -#endif //nNUCSYN_WR_RS_TABLE - -#endif // NUCSYN_WR_ACCRETION - +#endif // NANCHECKS } else { @@ -444,25 +309,22 @@ void nucsyn_WR_table(struct star_t *star, if(r[R_Ne]>ne20+ne22) ne20 = r[R_Ne]-ne22; /* finally set the abundances */ - X[XHe4]=MAX(he4,X[XHe4]); - X[XC12]=c12; - X[XC13]=c13; - X[XN14]=n14; - X[XO16]=o16; - X[XNe20]=ne20; - X[XNe22]=ne22; + X[XHe4] = MAX(he4,X[XHe4]); + X[XC12] = c12; + X[XC13] = c13; + X[XN14] = n14; + X[XO16] = o16; + X[XNe20] = ne20; + X[XNe22] = ne22; #ifdef NUCSYN_WR_RS_TABLE - /* Use Richard Stancliffe's surface abundance data for minor isotopes */ - /* - * Note that x[2] = f = M/Minit is only - * tabulated to 2 decimal places, so - * allow cacheing + * Use Richard Stancliffe's surface abundance data for + * minor isotopes */ - x[2]=((int)(100.0*x[2]))/100.0; + - double rr[50]; // result of interpolation + Abundance * rr = MALLOC(50*sizeof(double)); // result of interpolation /* do the interpolation */ nucsyn_WR_RS_table_lookup(stardata,x,rr); @@ -470,13 +332,7 @@ void nucsyn_WR_table(struct star_t *star, /* * But scale to initial abundances... */ -#ifdef NUCSYN_WR_RS_TABLE_NeNa_ONLY - X[XNe22]=rr[0]; - X[XNa23]=rr[1]; -#else - /* - * Use all isotopes which are not in Lynnette's tables - */ + X[XH2]=rr[0]; X[XHe3]=rr[1]; X[XLi7]=rr[2]; X[XBe7]=rr[3]; X[XB11]=rr[4]; /* we should merge the following into the CNO treatment above */ @@ -522,11 +378,11 @@ void nucsyn_WR_table(struct star_t *star, X[XNe22]*=fm; X[XNa23]*=fm; -#endif //NUCSYN_WR_RS_TABLE_NeNa_ONLY - Dprint("RSgives m=%g f=%g Ne22=%g Na23=%g Mg: 24=%g 25=%g 26=%g\n",star->mass,x[2], X[XNe22],X[XNa23],X[XMg24],X[XMg25],X[XMg26]); + Safe_free(rr); + #endif // NUCSYN_WR_RS_TABLE /* hydrogen is everything else */ @@ -534,14 +390,6 @@ void nucsyn_WR_table(struct star_t *star, X[XH1]=MAX(0.0,1.0-XXsum(stardata,X)); /* .. but may still be zero! */ -#ifdef WRDEBUG2 - fprintf(stderr,"He %g vs in %g\n",X[XHe4],Hein); - if(X[XHe4]<Hein) - { - Exit_binary_c(OUT_OF_RANGE,"He drop\n"); - } -#endif - if(X[XHe4]>0.5) { /* @@ -576,10 +424,6 @@ void nucsyn_WR_table(struct star_t *star, Boolean is_He_star= (star->stellar_type>=HeMS) && (X[XO16]+X[XC12]<0.05); - - // rotationally induced complete mixing - //is_He_star = is_He_star|| ((star->v_eq > 300.0)&&(star->stellar_type<5)); - if(is_He_star) { /* @@ -638,89 +482,86 @@ void nucsyn_WR_table(struct star_t *star, X[XC12],X[XC13],X[XN14],X[XN15],X[XO16],X[XO17],X[XO18]); } -#ifdef WRPLOT - printf("WRPLOT%d %g %g %g %g %g %g %g %g\n", - star->starnum, - stardata->model.time, - c12,n14,o16,r[R_C],r[R_N],r[R_O], - star->mass); -#endif #ifdef WRDEBUG2 if(star->starnum==0)fprintf(stderr,"CNO out n=%g N14=%g\n",CNOsum(X),X[XN14]); -#endif +#endif // WRDEBUG2 - // no more changes if we're below the mass break - if(star->effective_zams_mass < NUCSYN_WR_MASS_BREAK) return; - - if((star->stellar_type==CHeB)&& - (X[XF19]<10.0*star->Xinit[XF19])) + /* + * no more changes if we're below the mass break + */ + if(star->effective_zams_mass > NUCSYN_WR_MASS_BREAK) { - /* - * if surface F19 is the same as ZAMS then increase it - note there - * must be a better way to do this! - */ - X[XF19]=star->Xinit[XF19]*50.0; - } + if((star->stellar_type==CHeB)&& + (X[XF19]<10.0*star->Xinit[XF19])) + { + /* + * if surface F19 is the same as ZAMS then increase it - note there + * must be a better way to do this! + */ + X[XF19]=star->Xinit[XF19]*50.0; + } - if(X[XH1]>0.01) - { - // O18,O17 ~ O16 if X>0 (again from MM94) - X[XO18]=2e-3*X[XO16]; - X[XO17]=6e-4*X[XO16]; - } - else - { - X[XO18]=0.0; - X[XO17]=0.0; - } - // Al26 is destroyed during and after CHeB, assuming it exists at all! - if(star->stellar_type>=4)X[XAl26]=0.0; + if(X[XH1]>0.01) + { + // O18,O17 ~ O16 if X>0 (again from MM94) + X[XO18]=2e-3*X[XO16]; + X[XO17]=6e-4*X[XO16]; + } + else + { + X[XO18]=0.0; + X[XO17]=0.0; + } + // Al26 is destroyed during and after CHeB, assuming it exists at all! + if(star->stellar_type>=4)X[XAl26]=0.0; - /* Final normalization */ - X[XHe4]=0.0; - X[XHe4]=1.0-XXsum(stardata,X); - - Dprint("WRtable XH=%g rHe=%g (XHe=%g) rC=%g (XC12=%g XC13=%g) rN=%g (XN=%g) O=%g (%g) Ne=%g (%g %g) Mg=%g (%g)\n", - X[XH1], - r[R_He], - X[XHe4], - r[R_C],X[XC12],X[XC13], - r[R_N],X[XN14], - r[R_O],X[XO16], - r[R_Ne],X[XNe20],X[XNe22], - r[R_Mg],X[XMg24] - ); - - - Dprint("nucsyn_WR_table: out H1=%g He4=%g XC12=%g XN14=%g XO16=%g tot=%g\n\n", - X[XH1],X[XHe4],X[XC12],X[XN14],X[XO16],XXsum(stardata,X)); - - /* final checks! */ + /* Final normalization */ + X[XHe4]=0.0; + X[XHe4]=1.0-XXsum(stardata,X); + + Dprint("WRtable XH=%g rHe=%g (XHe=%g) rC=%g (XC12=%g XC13=%g) rN=%g (XN=%g) O=%g (%g) Ne=%g (%g %g) Mg=%g (%g)\n", + X[XH1], + r[R_He], + X[XHe4], + r[R_C],X[XC12],X[XC13], + r[R_N],X[XN14], + r[R_O],X[XO16], + r[R_Ne],X[XNe20],X[XNe22], + r[R_Mg],X[XMg24] + ); + + Dprint("nucsyn_WR_table: out H1=%g He4=%g XC12=%g XN14=%g XO16=%g tot=%g\n\n", + X[XH1],X[XHe4],X[XC12],X[XN14],X[XO16],XXsum(stardata,X)); + + /* final checks! */ #define XCHECK(A) ((X[(A)]<0.0)||(X[(A)]>1.0)) - if(XCHECK(XH1)||XCHECK(XHe4)||XCHECK(XC12)||XCHECK(XC13)||XCHECK(XN14)) - { - Exit_binary_c(OUT_OF_RANGE, - "nucsyn_WR_table error star %d: H1=%g He4=%g XC12=%g XC13=%g XN14=%g XO16=%g XNe20=%g XNe22=%g tot=%g kw=%d : Input x 0=%g 1=%g 2=%g; Xinit %g %g %g %g %g\n", - star->starnum, - X[XH1],X[XHe4],X[XC12],X[XC13], - X[XN14],X[XO16],X[XNe20],X[XNe22], - XXsum(stardata,X), - star->stellar_type, - x[0], - x[1], - x[2], - star->Xinit[XH1], - star->Xinit[XHe4], - star->Xinit[XC12], - star->Xinit[XN14], - star->Xinit[XO16] + if(XCHECK(XH1)||XCHECK(XHe4)||XCHECK(XC12)||XCHECK(XC13)||XCHECK(XN14)) + { + Exit_binary_c(OUT_OF_RANGE, + "nucsyn_WR_table error star %d: H1=%g He4=%g XC12=%g XC13=%g XN14=%g XO16=%g XNe20=%g XNe22=%g tot=%g kw=%d : Input x 0=%g 1=%g 2=%g; Xinit %g %g %g %g %g\n", + star->starnum, + X[XH1],X[XHe4],X[XC12],X[XC13], + X[XN14],X[XO16],X[XNe20],X[XNe22], + XXsum(stardata,X), + star->stellar_type, + x[0], + x[1], + x[2], + star->Xinit[XH1], + star->Xinit[XHe4], + star->Xinit[XC12], + star->Xinit[XN14], + star->Xinit[XO16] - ); + ); + } } + Safe_free(r); + Safe_free(x); #endif//NUCSYN_WR } -#if defined(NUCSYN_WR_TABLES) && defined(WRDEBUG2) +#if defined NUCSYN_WR_TABLES && defined WRDEBUG2 static double CNOsum(double *X) { // CNO by number diff --git a/src/nucsyn/nucsyn_WR_table_lookup.c b/src/nucsyn/nucsyn_WR_table_lookup.c index c8fc090a5e78c1a784e253ef4da8040ec3eea7a6..adc64fa090c2a8aa21d0bbfc0640fca6ea2ef9d8 100644 --- a/src/nucsyn/nucsyn_WR_table_lookup.c +++ b/src/nucsyn/nucsyn_WR_table_lookup.c @@ -7,7 +7,7 @@ /* * The part of the WR code which does the lookups : separately - * to speed up compilation + * to speed up compilation. */ void nucsyn_WR_table_lookup(struct stardata_t * stardata, @@ -19,6 +19,9 @@ void nucsyn_WR_table_lookup(struct stardata_t * stardata, /* * We have two data tables: one for MM and one for NL mass loss, so choose * which to use and set it in the *data pointer + * + * For other mass-loss rates, default to NL (this is closest to the + * Hurley et al. 2002 prescription). */ Const_data_table data_mm[]={NUCSYN_WR_MM_TABLE}; Const_data_table data_nl[]={NUCSYN_WR_NL_TABLE}; @@ -48,10 +51,6 @@ void nucsyn_WR_table_lookup(struct stardata_t * stardata, r, (Boolean)FALSE); - /* _printf("Interpolate %g,%g,%g -> %g,%g,%g,%g,%g,%g,%g\n", - x[0],x[1],x[2], - r[0],r[1],r[2],r[3],r[4],r[5],r[6]); - */ } #endif//NUCSYN_WR_TABLES diff --git a/src/nucsyn/nucsyn_Xfuncs.c b/src/nucsyn/nucsyn_Xfuncs.c index 417d36e0fe7bec1dc4174fd763532e13165402ec..742c91bdac0423fbbef717759139f7c81753e40f 100644 --- a/src/nucsyn/nucsyn_Xfuncs.c +++ b/src/nucsyn/nucsyn_Xfuncs.c @@ -13,6 +13,7 @@ void Xmult(Abundance * RESTRICT X, Isotope i; Isotope_loop(i) { + prefetch(X+i+Isotope_loop_sign); X[i] *= f; } } @@ -34,6 +35,8 @@ void X_to_N(const Nuclear_mass * RESTRICT imnuc, /* NB inuc=1.0/mnuc */ Isotope i; for(i=0;i<num_species;i++) { + prefetch(imnuc+i); + prefetch(X+i); N[i]=imnuc[i]*X[i]*dens; } } @@ -48,6 +51,8 @@ void N_to_X(const Nuclear_mass * RESTRICT mnuc, Isotope i; for(i=0;i<num_species;i++) { + prefetch(mnuc+i); + prefetch(N+i); X[i]=mnuc[i]*N[i]*idens; } } diff --git a/src/nucsyn/nucsyn_angelou.h b/src/nucsyn/nucsyn_angelou.h index 53292963211f564d3153e296feda46d3ae89b16a..596b30aa6741ca299b6ffeb4f7c0d1fed3fc72cb 100644 --- a/src/nucsyn/nucsyn_angelou.h +++ b/src/nucsyn/nucsyn_angelou.h @@ -1,4 +1,4 @@ - +#pragma once #ifndef NUCSYN_ANGELOU_H #define NUCSYN_ANGELOU_H diff --git a/src/nucsyn/nucsyn_binary_yield.c b/src/nucsyn/nucsyn_binary_yield.c index 82b6787ccda362d714bd08634240a291ed888fc0..727fb04521cc2fe48b72d06ac4087b1d7d853fd5 100644 --- a/src/nucsyn/nucsyn_binary_yield.c +++ b/src/nucsyn/nucsyn_binary_yield.c @@ -25,6 +25,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, * enough to resolve yield timesteps (this is done in the * timestepping code automatically). */ +#ifdef NUCSYN_YIELDS double apparent_time = Yields_time(stardata->model.time); double m; /* (usually?) total mass - reused in many places */ Star_number MAYBE_UNUSED k; @@ -35,7 +36,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, /* * First timestep setup */ - if(IS_ZERO(stardata->model.time)) + if(unlikely(IS_ZERO(stardata->model.time))) { if(stardata->preferences->yields_logtimes == TRUE) { @@ -49,7 +50,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, } } -#ifdef NUCSYN_YIELDS + // counters Isotope i; Yield_source MAYBE_UNUSED j; @@ -58,7 +59,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, /* * First timestep setup */ - if(IS_ZERO(stardata->model.time)) + if(unlikely(IS_ZERO(stardata->model.time))) { memset(stardata->model.oldyields,0,ISOTOPE_MEMSIZE); #ifdef NUCSYN_ID_SOURCES @@ -74,7 +75,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, * and cannot output until then. */ if(stardata->preferences->yields_logtimes == TRUE && - stardata->model.time < stardata->preferences->yields_startlogtime) + unlikely(stardata->model.time < stardata->preferences->yields_startlogtime)) { return; } @@ -86,7 +87,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, if(final==TRUE) nucsyn_gce_log(stardata,final); #endif - if( + if(unlikely( #ifndef NUCSYN_LOG_YIELDS_EVERY_TIMESTEP /* We only want to output the yields if "final" is set to TRUE */ final == FALSE || @@ -98,7 +99,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, * for the next positive timestep. */ stardata->model.dt < TINY - ) + )) { return; } @@ -126,7 +127,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, ); - if(final==FALSE && fail) + if(unlikely(final==FALSE && fail)) { Dprint("Time (t=%g) < next yield time (%30.12e) : no output yet\n", stardata->model.time, @@ -215,6 +216,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, double m=0.0; Isotope_loop(i) { + prefetch(stardata->star[k].Xenv + Isotope_loop_sign); m += stardata->star[k].Xenv[i]; } if(m>TINY) @@ -291,7 +293,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, #endif // NUCSYN_ID_SOURCES_GCE #else - if(final==TRUE) + if(unlikely(final==TRUE)) { #ifdef NUCSYN_ID_SOURCES_GCE PRINTF("XYIELDbin%d__ %0.4e ",j,apparent_time); @@ -420,7 +422,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, #endif #else - if(final==TRUE) + if(unlikely(final==TRUE)) { #ifdef COMPRESS_YIELD_AND_ENSEMBLE_OUTPUT @@ -520,7 +522,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, #if (defined NUCSYN_LOG_BINARY_X_YIELDS && !defined NUCSYN_ID_SOURCES_GCE) PRINTF("\n"); #else - if(final==TRUE) + if(unlikely(final==TRUE)) { PRINTF("\n"); } @@ -559,6 +561,7 @@ void nucsyn_binary_yield(struct stardata_t * RESTRICT stardata, stardata->model.oldyields[i] = 0.0; STARLOOP(k) { + prefetch(stardata->star[k].Xyield + Isotope_loop_sign); stardata->model.oldyields[i] += stardata->star[k].Xyield[i]; } diff --git a/src/nucsyn/nucsyn_build_store_contents.c b/src/nucsyn/nucsyn_build_store_contents.c index 38db2a0f4a517fc3766a54a36a1e9c8e2793f984..bb8ce7188bf960ad727718edb9172d4e34754b7f 100644 --- a/src/nucsyn/nucsyn_build_store_contents.c +++ b/src/nucsyn/nucsyn_build_store_contents.c @@ -19,14 +19,18 @@ void nucsyn_build_store_contents(struct store_t * RESTRICT store) store->mnuc = CALLOC(ISOTOPE_ARRAY_SIZE,sizeof(Nuclear_mass)); store->imnuc=CALLOC(ISOTOPE_ARRAY_SIZE,sizeof(Nuclear_mass)); store->mnuc_amu=CALLOC(ISOTOPE_ARRAY_SIZE,sizeof(Nuclear_mass)); + store->imnuc_amu=CALLOC(ISOTOPE_ARRAY_SIZE,sizeof(Nuclear_mass)); store->molweight=CALLOC(ISOTOPE_ARRAY_SIZE,sizeof(double)); + store->ZonA=CALLOC(ISOTOPE_ARRAY_SIZE,sizeof(double)); store->atomic_number=CALLOC(ISOTOPE_ARRAY_SIZE,sizeof(Atomic_number)); store->nucleon_number=CALLOC(ISOTOPE_ARRAY_SIZE,sizeof(int)); nucsyn_set_nuc_masses(store->mnuc, store->imnuc, store->mnuc_amu, + store->imnuc_amu, store->molweight, + store->ZonA, store->atomic_number, store->nucleon_number); diff --git a/src/nucsyn/nucsyn_calc_yields.c b/src/nucsyn/nucsyn_calc_yields.c index a591aac26abcfe3244ae40848152c842fe6eaa48..6420755507749b3ea80e84e0275f8b75f6dfb14c 100644 --- a/src/nucsyn/nucsyn_calc_yields.c +++ b/src/nucsyn/nucsyn_calc_yields.c @@ -134,6 +134,7 @@ void nucsyn_calc_yields(struct stardata_t * RESTRICT stardata, double dmlp = dmlose * stardata->model.probability; Isotope_loop(i) { + prefetch(Xlose+i+Isotope_loop_sign); #if defined NUCSYN_ID_SOURCES || defined NUCSYN_LOG_MPYIELDS double dy = dmlp * Xlose[i]; #else @@ -175,7 +176,7 @@ void nucsyn_calc_yields(struct stardata_t * RESTRICT stardata, double dmap = - dmacc * stardata->model.probability; Isotope_loop(i) { - + prefetch(Xacc+i+Isotope_loop_sign); #if defined NUCSYN_ID_SOURCES || defined NUCSYN_LOG_MPYIELDS double dy = dmap * Xacc[i]; #else diff --git a/src/nucsyn/nucsyn_dilute_shell.c b/src/nucsyn/nucsyn_dilute_shell.c index fd56a788e8f528ce934b73bcbb46050680101ce3..26060e39cfb2f83719157b22c70f6714a8ead1f1 100644 --- a/src/nucsyn/nucsyn_dilute_shell.c +++ b/src/nucsyn/nucsyn_dilute_shell.c @@ -15,12 +15,16 @@ void nucsyn_dilute_shell(const double m1, const Abundance * RESTRICT max = &X1[ISOTOPE_ARRAY_SIZE]; for(p=X1; p < max; ++p, ++q) { + prefetch(p+1); + prefetch(q+1); *p = f1 * *p + f2 * *q; } #else Isotope i; Isotope_loop(i) { + prefetch(X1+Isotope_loop_sign); + prefetch(X2+Isotope_loop_sign); X1[i]= f1*X1[i]+f2*X2[i]; } #endif diff --git a/src/nucsyn/nucsyn_dilute_shell_to.c b/src/nucsyn/nucsyn_dilute_shell_to.c index 164555403a0c06bda7e6f8dcb257739ce220add0..fedae660082a46f1e8e2e57bb7474d43b4bd917f 100644 --- a/src/nucsyn/nucsyn_dilute_shell_to.c +++ b/src/nucsyn/nucsyn_dilute_shell_to.c @@ -1,17 +1,28 @@ #include <string.h> #include "../binary_c.h" #ifdef NUCSYN -void nucsyn_dilute_shell_to(const double m1, Abundance *X1, - const double m2, Abundance *X2, - Abundance *X3_to_be) + +void nucsyn_dilute_shell_to(const double m1, const Abundance * X1, + const double m2, const Abundance * X2, + Abundance * X3_to_be) { /* * Mix shell 2 into shell 1 without changing shells 1 or 2, but put the * result in shell 3 * + * X1, X2 and X3_to_be could all be declared using RESTRICT, but this + * is slower (with gcc 7.3). + * * Note: X3_to_be will be set at the end to avoid overwriting problems: * this is a little slower, but safer because memcpy is undefined - * in cases of self-overwriting + * in cases of self-overwriting. + * + * If m1 is zero (< TINY) just set the abundances to X2. + * If m1 > zero and m2 < zero just set the abundances to X1. + * + * We assume X1!=X2!=X3, because this is very unlikely, but if this + * happens then things should still work (it's just very inefficient + * to call this function to do it). */ double * RESTRICT X3 = New_isotope_array; @@ -30,10 +41,10 @@ void nucsyn_dilute_shell_to(const double m1, Abundance *X1, // both m2 and m1 are >0 const double f1=m1/(m1+m2),f2=m2/(m1+m2); #ifdef USE_POINTER_LOOPS - Abundance * RESTRICT p = X1; - Abundance * RESTRICT q = X2; + Abundance * RESTRICT p = (Abundance*) X1; + Abundance * RESTRICT q = (Abundance*) X2; const Abundance * RESTRICT max = &X1[ISOTOPE_ARRAY_SIZE]; - for(p=X1; p < max; ++p, ++q, ++X3) + for( ; p < max; ++p, ++q, ++X3) { *X3 = f1 * *p + f2 * *q; } diff --git a/src/nucsyn/nucsyn_effective_molecular_weight.c b/src/nucsyn/nucsyn_effective_molecular_weight.c new file mode 100644 index 0000000000000000000000000000000000000000..f388c0126cb975660000470de755773c40271d9f --- /dev/null +++ b/src/nucsyn/nucsyn_effective_molecular_weight.c @@ -0,0 +1,76 @@ +#include "nucsyn.h" +#ifdef NUCSYN +#include "../binary_c_stellar_types.h" + + +#ifdef UNROLL_NUCSYN_LOOPS +#include "../nucsyn/nucsyn_unrolled_functions.h" +#endif + +double nucsyn_effective_molecular_weight(const Abundance * RESTRICT X, + const Stellar_type stellar_type, + const struct stardata_t * RESTRICT stardata) +{ + /* + * Function to obtain the (mean) molecular weight of an abundance array (X) + * - requires stardata for atomic numbers and weights. + * + * Note that this returns an "effective" mean moleuclar weight + * which is useful for sorting a star for thermohaline mixing: + * + * Compact objects return an anomalously high weight (=10*stellar-type) + * to force them to sink. + * + * The definition of the molecular weight, mu, is, + * + * 1/mu = 1/mu_e + 1/mu_I + * + * which includes terms due to electrons and ions, + * + * mu_e = sum of X_i * Z_i / A_i, + * + * and + * + * mu_I = sum of X_i / A_i. + * + * We assume full ionisation. + */ + double mu; + + /* + * Check if star is degenerate using the stellar type. If it is, then mu + * has to be altered to the value appropriate for degenerate material. + */ + if(COMPACT_OBJECT(stellar_type)) + { + /* + * Set to something very high! + * Assume black holes are denser than neutron stars, which are denser + * than ONeWDs, then COWDs, then HeWDs - seems reasonable! + */ + mu = fabs( (double) stellar_type ) * 10.0; + } + else + { + /* non-degenerate star */ + const double * RESTRICT Y = stardata->store->molweight; + +#ifdef UNROLL_NUCSYN_LOOPS + mu = NUCSYN_UNROLLED_MOLECULAR_WEIGHT; +#else + Isotope i; + + mu=0.0; + Isotope_loop(i) + { + mu += X[i] * Y[i]; + } +#endif //UNROLL_NUCSYN_LOOPS + + mu = 1.0 / (AMU_GRAMS * mu); + } + + return mu; +} + +#endif diff --git a/src/nucsyn/nucsyn_ensemble.h b/src/nucsyn/nucsyn_ensemble.h index bb616df1d5321b8bca290f6e6a151e3bb92c4ed9..af84b0e3277b97fa3a2e9971863e2ee1d82e7c34 100644 --- a/src/nucsyn/nucsyn_ensemble.h +++ b/src/nucsyn/nucsyn_ensemble.h @@ -389,6 +389,32 @@ #define NUCSYN_ENSEMBLE_SN_BH_BH 338 #define NUCSYN_ENSEMBLE_TEST_COUNT 339 #define NUCSYN_ENSEMBLE_TEST_RATE 340 +#define NUCSYN_ENSEMBLE_WIND_KINETIC_POWER 341 +#define NUCSYN_ENSEMBLE_WIND_RSG_KINETIC_POWER 342 +#define NUCSYN_ENSEMBLE_WIND_ISG_KINETIC_POWER 343 +#define NUCSYN_ENSEMBLE_WIND_BSG_KINETIC_POWER 344 +#define NUCSYN_ENSEMBLE_WIND_WOLF_RAYET_KINETIC_POWER 345 +#define NUCSYN_ENSEMBLE_WIND_AGB_KINETIC_POWER 346 +#define NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER 347 +#define NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_KINETIC_POWER 348 +#define NUCSYN_ENSEMBLE_SUPERNOVA_IA_KINETIC_POWER 349 +#define NUCSYN_ENSEMBLE_NOVA_KINETIC_POWER 350 +#define NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY 351 +#define NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_LUMINOSITY 352 +#define NUCSYN_ENSEMBLE_SUPERNOVA_IA_LUMINOSITY 353 +#define NUCSYN_ENSEMBLE_NOVA_LUMINOSITY 354 +#define NUCSYN_ENSEMBLE_WIND_MOMENTUM 355 +#define NUCSYN_ENSEMBLE_WIND_RSG_MOMENTUM 356 +#define NUCSYN_ENSEMBLE_WIND_ISG_MOMENTUM 357 +#define NUCSYN_ENSEMBLE_WIND_BSG_MOMENTUM 358 +#define NUCSYN_ENSEMBLE_WIND_WOLF_RAYET_MOMENTUM 359 +#define NUCSYN_ENSEMBLE_WIND_AGB_MOMENTUM 360 +#define NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM 361 +#define NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_MOMENTUM 362 +#define NUCSYN_ENSEMBLE_SUPERNOVA_IA_MOMENTUM 363 +#define NUCSYN_ENSEMBLE_NOVA_MOMENTUM 364 + + #define NUCSYN_ENSEMBLE_MERGER_MATRIX { \ {196,197,198,199,200,201,202,203,204,205,206,207,208,209,210}, \ @@ -750,10 +776,35 @@ "NUCSYN_ENSEMBLE_SN_BH_NS", /* 337 */ \ "NUCSYN_ENSEMBLE_SN_BH_BH", /* 338 */ \ "NUCSYN_ENSEMBLE_TEST_COUNT", /* 339 */ \ - "NUCSYN_ENSEMBLE_TEST_RATE" /* 340 */ + "NUCSYN_ENSEMBLE_TEST_RATE", /* 340 */ \ + "NUCSYN_ENSEMBLE_WIND_KINETIC_POWER", /* 341 */ \ + "NUCSYN_ENSEMBLE_WIND_RSG_KINETIC_POWER", /* 342 */ \ + "NUCSYN_ENSEMBLE_WIND_ISG_KINETIC_POWER", /* 343 */ \ + "NUCSYN_ENSEMBLE_WIND_BSG_KINETIC_POWER", /* 344 */ \ + "NUCSYN_ENSEMBLE_WIND_WOLF_RAYET_KINETIC_POWER", /* 345 */ \ + "NUCSYN_ENSEMBLE_WIND_AGB_KINETIC_POWER", /* 346 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER", /* 347 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_KINETIC_POWER", /* 348 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_IA_KINETIC_POWER", /* 349 */ \ + "NUCSYN_ENSEMBLE_NOVA_KINETIC_POWER", /* 350 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY", /* 351 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_LUMINOSITY", /* 352 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_IA_LUMINOSITY", /* 353 */ \ + "NUCSYN_ENSEMBLE_NOVA_LUMINOSITY", /* 354 */ \ + "NUCSYN_ENSEMBLE_WIND_MOMENTUM", /* 355 */ \ + "NUCSYN_ENSEMBLE_WIND_RSG_MOMENTUM", /* 356 */ \ + "NUCSYN_ENSEMBLE_WIND_ISG_MOMENTUM", /* 357 */ \ + "NUCSYN_ENSEMBLE_WIND_BSG_MOMENTUM", /* 358 */ \ + "NUCSYN_ENSEMBLE_WIND_WOLF_RAYET_MOMENTUM", /* 359 */ \ + "NUCSYN_ENSEMBLE_WIND_AGB_MOMENTUM", /* 360 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM", /* 361 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_MOMENTUM", /* 362 */ \ + "NUCSYN_ENSEMBLE_SUPERNOVA_IA_MOMENTUM", /* 363 */ \ + "NUCSYN_ENSEMBLE_NOVA_MOMENTUM" /* 364 */ \ + // number of observables -#define NUCSYN_ENSEMBLE_N 341 +#define NUCSYN_ENSEMBLE_N 365 #endif // NUCSYN_ENSEMBLE_H diff --git a/src/nucsyn/nucsyn_free_store_contents.c b/src/nucsyn/nucsyn_free_store_contents.c index 6fb1e3c7baa1275a6833de81e6705e6c0bb99787..154bc5732d29a57278258f5ecf2ad0ca182820de 100644 --- a/src/nucsyn/nucsyn_free_store_contents.c +++ b/src/nucsyn/nucsyn_free_store_contents.c @@ -23,6 +23,8 @@ void nucsyn_free_store_contents(struct store_t * RESTRICT store) Safe_free(store->mnuc); Safe_free(store->mnuc_amu); Safe_free(store->imnuc); + Safe_free(store->imnuc_amu); + Safe_free(store->ZonA); #ifdef FIRST_DREDGE_UP_HOLLY Delete_data_table(store->Holly_1DUP_table); diff --git a/src/nucsyn/nucsyn_gce_log.c b/src/nucsyn/nucsyn_gce_log.c index c41df412ab0ab951e25ee7cfa0fbb624a9e7f8bb..b41d8e707ffc983130efa736054c9a1c562ad499 100644 --- a/src/nucsyn/nucsyn_gce_log.c +++ b/src/nucsyn/nucsyn_gce_log.c @@ -99,7 +99,7 @@ void nucsyn_gce_log(struct stardata_t * RESTRICT stardata, ensemble_type[NUCSYN_ENSEMBLE_SN_BH_NS] = ENSEMBLE_TYPE_RATE; ensemble_type[NUCSYN_ENSEMBLE_SN_BH_BH] = ENSEMBLE_TYPE_RATE; ensemble_type[NUCSYN_ENSEMBLE_TEST_RATE] = ENSEMBLE_TYPE_RATE; - + for(i=NUCSYN_ENSEMBLE_COMENV_HG_MERGER; i<NUCSYN_ENSEMBLE_COMENV_DETACHED+1; i++) @@ -119,7 +119,36 @@ void nucsyn_gce_log(struct stardata_t * RESTRICT stardata, { ensemble_type[i] = ENSEMBLE_TYPE_RATE; } - + + /* + * Various luminosities and momentum fluxes should + * be considered as rates + */ + ensemble_type[NUCSYN_ENSEMBLE_WIND_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_RSG_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_ISG_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_BSG_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_WOLF_RAYET_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_AGB_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_IA_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_NOVA_KINETIC_POWER] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_LUMINOSITY] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_IA_LUMINOSITY] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_NOVA_LUMINOSITY] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_RSG_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_ISG_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_BSG_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_WOLF_RAYET_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_WIND_AGB_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_SUPERNOVA_IA_MOMENTUM] = ENSEMBLE_TYPE_RATE; + ensemble_type[NUCSYN_ENSEMBLE_NOVA_MOMENTUM] = ENSEMBLE_TYPE_RATE; + int m; for(m=0; m<NUMBER_OF_STELLAR_MAGNITUDES; m++) { @@ -445,31 +474,95 @@ void nucsyn_gce_log(struct stardata_t * RESTRICT stardata, if(star->SN_type!=-1) { + switch(star->SN_type) { case SN_IA_He: ensemble_weight[NUCSYN_ENSEMBLE_SN_IA_He]=1.0; + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_KINETIC_POWER]= + supernova_kinetic_energy(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_MOMENTUM]= + supernova_momentum(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_LUMINOSITY]= + supernova_luminous_energy(star); break; case SN_IA_ELD: ensemble_weight[NUCSYN_ENSEMBLE_SN_IA_ELD]=1.0; + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_KINETIC_POWER]= + supernova_kinetic_energy(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_MOMENTUM]= + supernova_momentum(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_LUMINOSITY]= + supernova_luminous_energy(star); break; case SN_IA_CHAND: ensemble_weight[NUCSYN_ENSEMBLE_SN_IA_CHAND]=1.0; + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_KINETIC_POWER]= + supernova_kinetic_energy(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_MOMENTUM]= + supernova_momentum(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_LUMINOSITY]= + supernova_luminous_energy(star); break; case SN_AIC: ensemble_weight[NUCSYN_ENSEMBLE_SN_AIC]=1.0; break; case SN_IA_He_Coal: ensemble_weight[NUCSYN_ENSEMBLE_SN_IA_He_Coel]=1.0; + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_KINETIC_POWER]= + supernova_kinetic_energy(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_MOMENTUM]= + supernova_momentum(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_LUMINOSITY]= + supernova_luminous_energy(star); break; case SN_IA_CHAND_Coel: ensemble_weight[NUCSYN_ENSEMBLE_SN_IA_CHAND_Coel]=1.0; + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_KINETIC_POWER]= + supernova_kinetic_energy(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_MOMENTUM]= + supernova_momentum(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_IA_LUMINOSITY]= + supernova_luminous_energy(star); break; case SN_IBC: ensemble_weight[NUCSYN_ENSEMBLE_SN_IBC]=1.0; + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_KINETIC_POWER]= + supernova_kinetic_energy(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_MOMENTUM]= + supernova_momentum(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_LUMINOSITY]= + supernova_luminous_energy(star); break; case SN_II: ensemble_weight[NUCSYN_ENSEMBLE_SN_II]=1.0; + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_KINETIC_POWER]= + supernova_kinetic_energy(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_MOMENTUM]= + supernova_momentum(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_LUMINOSITY]= + supernova_luminous_energy(star); break; case SN_IIa: ensemble_weight[NUCSYN_ENSEMBLE_SN_IIa]=1.0; @@ -483,6 +576,15 @@ void nucsyn_gce_log(struct stardata_t * RESTRICT stardata, */ ensemble_weight[NUCSYN_ENSEMBLE_GRB_COLLAPSAR]=1.0; ensemble_weight[NUCSYN_ENSEMBLE_SN_IBC]=1.0; + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_KINETIC_POWER]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_KINETIC_POWER]= + supernova_kinetic_energy(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_MOMENTUM]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_MOMENTUM]= + supernova_momentum(star); + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_LUMINOSITY]= + ensemble_weight[NUCSYN_ENSEMBLE_SUPERNOVA_CORE_COLLAPSE_LUMINOSITY]= + supernova_luminous_energy(star); break; case SN_TZ: ensemble_weight[NUCSYN_ENSEMBLE_SN_TZ]=1.0; @@ -497,6 +599,10 @@ void nucsyn_gce_log(struct stardata_t * RESTRICT stardata, ensemble_weight[NUCSYN_ENSEMBLE_SN_BH_BH]=1.0; break; } + + + + // reset sn_last_time star->sn_last_time=-1; } diff --git a/src/nucsyn/nucsyn_init.c b/src/nucsyn/nucsyn_init.c deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/src/nucsyn/nucsyn_isotopes.h b/src/nucsyn/nucsyn_isotopes.h index af7a77c7bbc32ebf5cb6bacc3eb47c7cafc2c8b1..c2c318e4fce647c9981369029133999843bb3244 100644 --- a/src/nucsyn/nucsyn_isotopes.h +++ b/src/nucsyn/nucsyn_isotopes.h @@ -1,9 +1,11 @@ +#pragma once +#ifndef NUCSYN_ISOTOPES_H +#define NUCSYN_ISOTOPES_H + #include "../binary_c_parameters.h" #ifdef NUCSYN -#ifndef NUCSYN_ISOTOPES_H -#define NUCSYN_ISOTOPES_H /* * The isotopes used in binary_c are stored in an array @@ -89,7 +91,7 @@ /* * Macro to check if an isotope number A is valid */ -#define OK_ISOTOPE(A) ((A)<(ISOTOPE_ARRAY_SIZE)) +#define OK_ISOTOPE(A) (likely((A)<(ISOTOPE_ARRAY_SIZE))) /* * Safe macros to set/increment abundances, nuclear masses etc. @@ -102,12 +104,14 @@ /* * Unordered isotope loop */ -#define Isotope_loop(I) for((I)=(ISOTOPE_ARRAY_SIZE);(I)--;) +#define Isotope_loop_sign -1 +#define Isotope_loop(I) for((I)=(ISOTOPE_ARRAY_SIZE);likely((I)=(I)+Isotope_loop_sign);) + /* * Ordered isotope loop (probably slower) */ -#define Ordered_isotope_loop(I) for((I)=0; (I)<(ISOTOPE_ARRAY_SIZE); (I)++) +#define Ordered_isotope_loop(I) for((I)=0; likely((I)<(ISOTOPE_ARRAY_SIZE)); (I)++) /* * Make a new isotope array @@ -122,12 +126,12 @@ #define Clear_isotope_array(X) memset((X),0,(ISOTOPE_MEMSIZE)) /* - * Copy abundances + * Copy abundances : the use of memcpy, which should be fastest, + * relies on the regions NOT overlapping. */ #define Copy_abundances(FROM,TO) memcpy((TO),(FROM),(ISOTOPE_MEMSIZE)) #define New_isotope_array_from(X) Copy_abundances((X),(New_isotope_array)) -#endif /* NUCSYN_ISOTOPES_H */ - #endif /* NUCSYN */ +#endif /* NUCSYN_ISOTOPES_H */ diff --git a/src/nucsyn/nucsyn_macros.h b/src/nucsyn/nucsyn_macros.h index 3660b7659f65c94d8ee7602c0354a7907f574aa2..3c0fb646d0c7c8dd45538cf390446570d5242896 100644 --- a/src/nucsyn/nucsyn_macros.h +++ b/src/nucsyn/nucsyn_macros.h @@ -1,3 +1,4 @@ +#pragma once #include "../binary_c_parameters.h" #ifdef NUCSYN @@ -158,6 +159,24 @@ #define ANGELOU_LITHIUM_DECAY_FUNCTION_EXPONENTIAL 0 +/* + * Ionisation fractions + */ +#define GAS_ATOMIC (0.0) +#define GAS_FULLY_IONISED_PLASMA (1.0) + +/* + * Type Ia Mch algorithms + */ +#define TYPE_IA_MCH_SUPERNOVA_ALGORITHM_DD2 0 +#define TYPE_IA_MCH_SUPERNOVA_ALGORITHM_SEITENZAHL2013 1 +#define TYPE_IA_MCH_SUPERNOVA_ALGORITHM_SEITENZAHL2013_AUTOMATIC 2 + +/* + * Type Ia sub-Mch algorithms + */ +#define TYPE_IA_SUB_MCH_SUPERNOVA_ALGORITHM_LIVNE_ARNETT_1995 0 + #endif /* NUCSYN_MACROS */ #endif /* NUCSYN */ diff --git a/src/nucsyn/nucsyn_molecular_weight.c b/src/nucsyn/nucsyn_molecular_weight.c index 5e9404ed3d680d73162cdca517a2d5a975a5b314..d7d02005061b2a442b22a5e251b588123eec13af 100644 --- a/src/nucsyn/nucsyn_molecular_weight.c +++ b/src/nucsyn/nucsyn_molecular_weight.c @@ -8,56 +8,67 @@ #endif double nucsyn_molecular_weight(const Abundance * RESTRICT X, - const Stellar_type stellar_type, - const struct stardata_t * RESTRICT stardata) + const struct stardata_t * RESTRICT stardata, + const double ionisation_fraction) { /* * Function to obtain the (mean) molecular weight of an abundance array (X) - * - requires stardata for atomic numbers and weights + * - requires stardata for atomic numbers and weights. + * + * The definition of the molecular weight, mu, is, + * + * mu = rho / (n * m_proton) + * + * where rho is the density, n the particle density, then given, + * + * n = n_e + n_I, + * + * where n_e is the number density of electrons and n_I + * the number density of ions, we have, + * + * 1/mu = 1/mu_e + 1/mu_I , + * + * where, + * + * mu_e = sum of X_i * Z_i / A_i, + * + * and + * + * mu_I = sum of X_i / A_i. + * + * Here we use + * + * 1/mu = f_ion / mu_e + 1 / mu_I + * + * to allow an ionisation fraction less than 1.0. + * + * We neglect the contribution of electrons to mu_I if the ionisation + * fraction is less than 1.0. */ - - /* Assume it is totally ionised */ - double mu; - - /* The definition of mu : 1/mu=1/mu_e + 1/mu_I i.e. with terms due to ions and electrons */ - - /* mu_e = sum of X_i * Z_i / A_i */ - /* mu_I = sum of X_i / A_i */ - - /* - * Check if star is degenerate using the stellar type. If it is, then mu - * has to be altered to the value appropriate for degenerate material. - */ - if(COMPACT_OBJECT(stellar_type)) + double mu = 0.0; + Isotope i; + if(IS_ZERO(ionisation_fraction)) { - /* - * Set to something very high! - * Assume black holes are denser than neutron stars, which are denser - * than ONeWDs, then COWDs, then HeWDs - seems reasonable! + /* + * Atomic ("recombined") material. Usually this applies + * if temperatures are sufficiently cool (<1000K or so). */ - mu = fabs( (double) stellar_type ) * 10.0; + Isotope_loop(i) + { + /* "unionised ion" == atom term = X / A */ + mu += X[i] * stardata->store->imnuc_amu[i]; + } } else { - /* non-degenerate star */ - const double * RESTRICT Y = stardata->store->molweight; - -#ifdef UNROLL_NUCSYN_LOOPS - mu = NUCSYN_UNROLLED_MOLECULAR_WEIGHT; -#else - Isotope i; - - mu=0.0; Isotope_loop(i) { - mu += X[i] * Y[i]; + mu += X[i] * stardata->store->imnuc_amu[i] * + (1.0 + + ionisation_fraction * (double)stardata->store->atomic_number[i]); } -#endif //UNROLL_NUCSYN_LOOPS - - mu = 1.0 / (AMU_GRAMS * mu); } - - return mu; + return 1.0/mu; } #endif diff --git a/src/nucsyn/nucsyn_parameters.h b/src/nucsyn/nucsyn_parameters.h index 4c10df96f724a1e91cf2da76ea702eac97ea65a4..a41ca5477e2e751374cd401a731270aa189c1553 100644 --- a/src/nucsyn/nucsyn_parameters.h +++ b/src/nucsyn/nucsyn_parameters.h @@ -509,13 +509,6 @@ undances with s-process /* Perhaps use Richard Stancliffe's surface abundances */ #define NUCSYN_WR_RS_TABLE -/* - * We used to use Richard's table for neon and sodium only, enable this - * to make that happen. Really, you want all the isotopes - */ -//#define NUCSYN_WR_RS_TABLE_NeNa_ONLY - - // enable this to allow use of the WR code at non-solar metallicity // you probably want this option! #define NUCSYN_WR_METALLICITY_CORRECTIONS diff --git a/src/nucsyn/nucsyn_prototypes.h b/src/nucsyn/nucsyn_prototypes.h index 6d20d6b89e17331e9c99166fda1c5fa46c9c5999..cf770b161054258be6412f83b31698c6a744fa0a 100644 --- a/src/nucsyn/nucsyn_prototypes.h +++ b/src/nucsyn/nucsyn_prototypes.h @@ -1,10 +1,11 @@ -#include "nucsyn.h" -#include "../binary_c_structures.h" +#pragma once /* Prototypes for the nucsyn library */ #ifndef NUCSYN_PROTOTYPES_H #define NUCSYN_PROTOTYPES_H +#include "nucsyn.h" +#include "../binary_c_structures.h" /* * nucsyn_sn_yield is called even if NUCSYN is not defined, it is @@ -44,11 +45,16 @@ void nucsyn_hbb(const double temp, void nucsyn_set_nuc_masses(Nuclear_mass * RESTRICT mnuc, Nuclear_mass * RESTRICT imnuc, Nuclear_mass * RESTRICT mnuc_anu, + Nuclear_mass * RESTRICT imnuc_anu, double * RESTRICT molweight, - Atomic_number * RESTRICT atomic_number, + double * RESTRICT ZonA, + Atomic_number * RESTRICT atomic_number, int * RESTRICT nucleon_number); double nucsyn_molecular_weight(const Abundance * RESTRICT X, + const struct stardata_t * RESTRICT stardata, + const double ionisation_fraction); +double nucsyn_effective_molecular_weight(const Abundance * RESTRICT X, const Stellar_type stellar_type, const struct stardata_t * RESTRICT stardata); @@ -142,8 +148,9 @@ void nucsyn_set_post_2nd_dup_abunds(Abundance * RESTRICT X, CONST_FUNC double nucsyn_mhbbmin(const Abundance z); void nucsyn_dilute_shell( const double m1, Abundance * RESTRICT X1, const double m2, Abundance * RESTRICT X2); -void nucsyn_dilute_shell_to(const double m1, Abundance * X1, - const double m2, Abundance * X2, + +void nucsyn_dilute_shell_to(const double m1, const Abundance * X1, + const double m2, const Abundance * X2, Abundance * X3); CONST_FUNC double nucsyn_wgcoremasslum(const double mc, const double mass, @@ -619,6 +626,15 @@ void nucsyn_renormalize_abundance(struct stardata_t * stardata, +void nucsyn_sn_Seitenzahl2013(struct stardata_t * stardata, + double * X); +void nucsyn_sn_Seitenzahl2013_automatic(struct stardata_t * stardata, + double * X); + +void nucsyn_angelou_lithium(struct stardata_t * stardata, + struct star_t * star); + +Yield_source nucsyn_sn_source(struct star_t * exploder); #endif /* NUCSYN */ #endif /* NUCSYN_PROTOYPES */ diff --git a/src/nucsyn/nucsyn_set_nuc_masses.c b/src/nucsyn/nucsyn_set_nuc_masses.c index 1b1a6e6f34e231993d1099eb5cef37b9298a60f8..0a7f6063687605e7091e0792b78f28355e216669 100644 --- a/src/nucsyn/nucsyn_set_nuc_masses.c +++ b/src/nucsyn/nucsyn_set_nuc_masses.c @@ -6,7 +6,9 @@ void nucsyn_set_nuc_masses(Nuclear_mass * RESTRICT mnuc, Nuclear_mass * RESTRICT imnuc, Nuclear_mass * RESTRICT mnuc_amu, // (as mnuc /= AMU_GRAMS) + Nuclear_mass * RESTRICT imnuc_amu, double * RESTRICT molweight, + double * RESTRICT ZonA, Atomic_number * RESTRICT atomic_number, int * RESTRICT nucleon_number) { @@ -17,8 +19,6 @@ void nucsyn_set_nuc_masses(Nuclear_mass * RESTRICT mnuc, /* * Nuclear masses from http://wwwndc.jaea.go.jp/NuC/ */ - - #include "nucsyn_nuc_masses.h" Ordered_isotope_loop(i) @@ -34,13 +34,18 @@ void nucsyn_set_nuc_masses(Nuclear_mass * RESTRICT mnuc, "Nuclear mass of isotope %d is zero : everything will fail :( ... previous isotope is %d which is %s%d\n", i,j,s[atomic_number[j]],nucleon_number[j]); } - double temp=1.0/mnuc[i]; - - imnuc[i]=temp; - mnuc_amu[i]=mnuc[i]/AMU_GRAMS; - molweight[i]=((double)atomic_number[i]+1.0)*temp; - nucleon_number[i]=(int)(0.5+mnuc_amu[i]); + const double temp = 1.0 / mnuc[i]; + const double Z = (double) atomic_number[i]; + + imnuc[i] = temp; + ZonA[i] = Z * temp; + + mnuc_amu[i] = mnuc[i] / AMU_GRAMS; + imnuc_amu[i] = imnuc[i] * AMU_GRAMS; + molweight[i] = (Z + 1.0) * temp; + nucleon_number[i] = (int)(0.5 + mnuc_amu[i]); /* approximately! */ + #ifdef NUC_MASSES_DEBUG _printf( "Isotope %d , mnuc=%g (/anu=%g) Z=%d is %s i.e. %s%d\n", diff --git a/src/nucsyn/nucsyn_sn_Seitenzahl2013.c b/src/nucsyn/nucsyn_sn_Seitenzahl2013.c new file mode 100644 index 0000000000000000000000000000000000000000..b288e573fc4ec1eccea549d0ec69c400adc1948d --- /dev/null +++ b/src/nucsyn/nucsyn_sn_Seitenzahl2013.c @@ -0,0 +1,145 @@ +#include "../binary_c.h" + +#if defined NUCSYN && defined NUCSYN_SUPERNOVAE + +#include "nucsyn_sn_Seitenzahl2013.h" + +void nucsyn_sn_Seitenzahl2013(struct stardata_t * stardata, + double * X) +{ + /* + * type Ia MCh supernovae yields from + * Seitenzahl et al. (2013) MNRAS 429,1156 + */ + static const double data[SEITENZAHL2013_N_MODELS][SEITENZAHL2013_N_ISOTOPES] = + SEITENZAHL2013_DATA; + + static const char * model_map[SEITENZAHL2013_N_MODELS*2] = + SEITENZAHL2013_MODEL_MAP; + + int i,nmodel=-1; + for(i=0;i<SEITENZAHL2013_N_MODELS;i++) + { + Dprint("Try to match \"%s\" to pref \"%s\"\n", + model_map[i*2+1], + stardata->preferences->Seitenzahl2013_model); + if(strcmp(model_map[i*2+1], + stardata->preferences->Seitenzahl2013_model)==0) + { + /* + * Matched a model set + */ + nmodel = atoi(model_map[i*2]); + i = SEITENZAHL2013_N_MODELS+1; + } + } + + if(nmodel == -1) + { + /* + * Failed to match any model set + */ + Exit_binary_c(ALGORITHM_OUT_OF_RANGE, + "Failed to match one of Seitenzahl et al. 2013's models to string \"%s\n", + stardata->preferences->Seitenzahl2013_model); + } + + Dprint("Want Seitenzahl model set %s which is %d\n", + stardata->preferences->Seitenzahl2013_model, + nmodel); + + /* + * Select appropriate line of the data + */ + const double * Y = data[nmodel]; + + /* + * Hence set the isotope abundances + */ + INCREMENT_ISOTOPIC_PROPERTY(X,XC12,Y[0]); + INCREMENT_ISOTOPIC_PROPERTY(X,XC13,Y[1]); + INCREMENT_ISOTOPIC_PROPERTY(X,XN14,Y[2]); + INCREMENT_ISOTOPIC_PROPERTY(X,XN15,Y[3]); + INCREMENT_ISOTOPIC_PROPERTY(X,XO16,Y[4]); + INCREMENT_ISOTOPIC_PROPERTY(X,XO17,Y[5]); + INCREMENT_ISOTOPIC_PROPERTY(X,XO18,Y[6]); + INCREMENT_ISOTOPIC_PROPERTY(X,XF19,Y[7]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNe20,Y[8]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNe21,Y[9]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNe22,Y[10]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNa23,Y[11]); + INCREMENT_ISOTOPIC_PROPERTY(X,XMg24,Y[12]); + INCREMENT_ISOTOPIC_PROPERTY(X,XMg25,Y[13]); + INCREMENT_ISOTOPIC_PROPERTY(X,XMg26,Y[14]); + INCREMENT_ISOTOPIC_PROPERTY(X,XAl27,Y[15]); + INCREMENT_ISOTOPIC_PROPERTY(X,XSi28,Y[16]); + INCREMENT_ISOTOPIC_PROPERTY(X,XSi29,Y[17]); + INCREMENT_ISOTOPIC_PROPERTY(X,XSi30,Y[18]); + INCREMENT_ISOTOPIC_PROPERTY(X,XP31,Y[19]); + INCREMENT_ISOTOPIC_PROPERTY(X,XS32,Y[20]); + INCREMENT_ISOTOPIC_PROPERTY(X,XS33,Y[21]); + INCREMENT_ISOTOPIC_PROPERTY(X,XS34,Y[22]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCl35,Y[23]); + INCREMENT_ISOTOPIC_PROPERTY(X,XAr36,Y[24]); + INCREMENT_ISOTOPIC_PROPERTY(X,XS36,Y[25]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCl37,Y[26]); + INCREMENT_ISOTOPIC_PROPERTY(X,XAr38,Y[27]); + INCREMENT_ISOTOPIC_PROPERTY(X,XK39,Y[28]); + INCREMENT_ISOTOPIC_PROPERTY(X,XAr40,Y[29]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCa40,Y[30]); + INCREMENT_ISOTOPIC_PROPERTY(X,XK41,Y[31]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCa42,Y[32]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCa43,Y[33]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCa44,Y[34]); + INCREMENT_ISOTOPIC_PROPERTY(X,XSc45,Y[35]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCa46,Y[36]); + INCREMENT_ISOTOPIC_PROPERTY(X,XTi46,Y[37]); + INCREMENT_ISOTOPIC_PROPERTY(X,XTi47,Y[38]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCa48,Y[39]); + INCREMENT_ISOTOPIC_PROPERTY(X,XTi48,Y[40]); + INCREMENT_ISOTOPIC_PROPERTY(X,XTi49,Y[41]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCr50,Y[42]); + INCREMENT_ISOTOPIC_PROPERTY(X,XTi50,Y[43]); + INCREMENT_ISOTOPIC_PROPERTY(X,XV50,Y[44]); + INCREMENT_ISOTOPIC_PROPERTY(X,XV51,Y[45]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCr52,Y[46]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCr53,Y[47]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCr54,Y[48]); + INCREMENT_ISOTOPIC_PROPERTY(X,XFe54,Y[49]); + INCREMENT_ISOTOPIC_PROPERTY(X,XMn55,Y[50]); + INCREMENT_ISOTOPIC_PROPERTY(X,XFe56,Y[51]); + INCREMENT_ISOTOPIC_PROPERTY(X,XFe57,Y[52]); + INCREMENT_ISOTOPIC_PROPERTY(X,XFe58,Y[53]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNi58,Y[54]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCo59,Y[55]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNi60,Y[56]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNi61,Y[57]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNi62,Y[58]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCu63,Y[59]); + INCREMENT_ISOTOPIC_PROPERTY(X,XNi64,Y[60]); + INCREMENT_ISOTOPIC_PROPERTY(X,XZn64,Y[61]); + INCREMENT_ISOTOPIC_PROPERTY(X,XCu65,Y[62]); + INCREMENT_ISOTOPIC_PROPERTY(X,XZn66,Y[63]); + INCREMENT_ISOTOPIC_PROPERTY(X,XZn67,Y[64]); + INCREMENT_ISOTOPIC_PROPERTY(X,XZn68,Y[65]); + INCREMENT_ISOTOPIC_PROPERTY(X,XGa69,Y[66]); + INCREMENT_ISOTOPIC_PROPERTY(X,XZn70,Y[67]); + INCREMENT_ISOTOPIC_PROPERTY(X,XGa71,Y[68]); + + Dprint("Seitenzahl model %s (%d) yields C12=%g O16=%g Fe56=%g Msun : sum=%g (should be ~Mch)\n", + stardata->preferences->Seitenzahl2013_model, + nmodel, + X[XC12], + X[XO16], + X[XFe56], + XXsum(stardata,X) + ); + + /* + * We want to return the mass fractions, + * so normalize to the total mass ejected + * which is ~Mch which is ~1.4Msun + */ + nucsyn_renormalize_abundance(stardata,X); +} +#endif // NUCSYN && NUCSYN_SUPERNOVAE diff --git a/src/nucsyn/nucsyn_sn_Seitenzahl2013.h b/src/nucsyn/nucsyn_sn_Seitenzahl2013.h new file mode 100644 index 0000000000000000000000000000000000000000..2d3959f4931df6d42d6ba915ba6b299f0f1724e9 --- /dev/null +++ b/src/nucsyn/nucsyn_sn_Seitenzahl2013.h @@ -0,0 +1,160 @@ +#pragma once +#ifndef NUCSYN_SEITENZAHL2013_H +#define NUCSYN_SEITENZAHL2013_H + +/* + * Seitenzahl et al. 2013 3D MCh SNIa yields + */ + +#define SEITENZAHL2013_N_MODELS 17 +#define SEITENZAHL2013_N_ISOTOPES 69 + +/* + * Model map + */ +#define SEITENZAHL2013_MODEL_MAP { \ + "0","N1", \ + "1","N3", \ + "2","N5", \ + "3","N10", \ + "4","N20", \ + "5","N40", \ + "6","N100L", \ + "7","N100", \ + "8","N100H", \ + "9","N150", \ + "10","N200", \ + "11","N300C", \ + "12","N1600", \ + "13","N1600C", \ + "14","N100_Z0.5", \ + "15","N100_Z0.1", \ + "16","N100_Z0.01" \ + } + +/* + * Yield tables + */ +#define SEITENZAHL2013_DATA { \ + \ + { \ + \ + /* Model N1 */ \ + \ + 0.00261,1.84e-08,2.92e-06,3.36e-09,0.0263,3.96e-07,3.32e-09,3.73e-11,0.00147,3.08e-07,6.4e-05,2.2e-05,0.00393,3.35e-05,5.15e-05,0.000198,0.0632,0.000269,0.000596,0.00014,0.0262,7.51e-05,0.000826,4.29e-05,0.00452,8.12e-08,7.32e-06,0.000377,2.26e-05,1.68e-09,0.00405,1.29e-06,8.32e-06,1.63e-08,3.25e-06,5.12e-08,1.58e-11,4.33e-06,1.8e-07,1.97e-15,0.000102,8.06e-06,0.000101,2.48e-08,8.95e-10,3.41e-05,0.00355,0.000525,9.85e-07,0.0302,0.00874,1.11,0.0337,7.14e-06,0.0726,0.000418,0.00201,8.45e-05,0.000655,4.44e-07,4.24e-09,1.72e-06,1.09e-07,2.55e-06,1.48e-09,9.01e-10,5.66e-14,3.39e-16,2.06e-15 \ + }, \ + \ + { \ + \ + /* Model N3 */ \ + \ + 0.0099,6.15e-08,9.93e-06,1.22e-08,0.0474,1.37e-06,1.33e-08,1.35e-10,0.00337,9.79e-07,0.000326,6.41e-05,0.00713,9.26e-05,0.000136,0.000395,0.0899,0.000464,0.001,0.000228,0.037,0.000106,0.00116,6.2e-05,0.00636,1.35e-07,9.62e-06,0.000515,2.98e-05,2.45e-09,0.00574,1.65e-06,1.11e-05,1.93e-08,4.4e-06,6.53e-08,1.99e-11,5.72e-06,2.28e-07,3.88e-15,0.000141,1.07e-05,0.000139,5.52e-08,1.21e-09,4.14e-05,0.00406,0.000527,2.06e-06,0.0307,0.00693,1.04,0.0305,1.41e-05,0.0678,0.000497,0.00263,9.36e-05,0.000731,4.94e-07,8.11e-09,1.83e-06,1.15e-07,2.7e-06,1.53e-09,9.38e-10,8.72e-14,6.43e-16,2.25e-15 \ + }, \ + \ + { \ + \ + /* Model N5 */ \ + \ + 0.00905,5.05e-08,8.46e-06,1.03e-08,0.0563,1.16e-06,1.11e-08,1.17e-10,0.00375,8.81e-07,0.000287,6.09e-05,0.00853,8.92e-05,0.000134,0.000456,0.119,0.000568,0.00123,0.000287,0.0479,0.000142,0.00157,8.27e-05,0.00803,1.65e-07,1.34e-05,0.000718,4.12e-05,3.13e-09,0.00709,2.3e-06,1.55e-05,2.63e-08,5.24e-06,8.56e-08,2.66e-11,8.01e-06,3.01e-07,7.61e-15,0.000167,1.29e-05,0.000184,1.33e-07,1.94e-09,5.01e-05,0.00456,0.000591,4.54e-06,0.0384,0.0068,0.98,0.0291,3.21e-05,0.0698,0.000562,0.00322,0.000102,0.00081,5.59e-07,1.94e-08,2.09e-06,1.32e-07,3.11e-06,1.77e-09,1.1e-09,1.77e-13,1.52e-15,3.31e-15 \ + }, \ + \ + { \ + \ + /* Model N10 */ \ + \ + 0.00443,2.57e-08,3.85e-06,4.47e-09,0.0516,5.34e-07,4.54e-09,5.05e-11,0.0024,4.16e-07,0.000131,3.22e-05,0.00777,5.07e-05,7.55e-05,0.000371,0.138,0.000517,0.00118,0.000278,0.0574,0.000153,0.00175,8.37e-05,0.00989,1.41e-07,1.53e-05,0.000801,4.65e-05,2.9e-09,0.00882,2.66e-06,1.74e-05,2.92e-08,6.49e-06,1.03e-07,2.64e-11,9.13e-06,3.58e-07,7.56e-15,0.000207,1.61e-05,0.000227,1.44e-07,2.34e-09,6.18e-05,0.00545,0.000709,5.18e-06,0.0477,0.00761,0.946,0.0282,3.63e-05,0.0713,0.000598,0.00358,0.000101,0.000806,5.71e-07,2.15e-08,2.11e-06,1.32e-07,3.13e-06,1.79e-09,1.12e-09,2e-13,1.63e-15,3.49e-15 \ + }, \ + \ + { \ + \ + /* Model N20 */ \ + \ + 0.0092,4.52e-08,8.34e-06,1.03e-08,0.0904,1.12e-06,1.12e-08,1.22e-10,0.00541,9.63e-07,0.000258,7.3e-05,0.0146,0.000111,0.000171,0.000732,0.198,0.000949,0.00212,0.000487,0.0774,0.000243,0.00284,0.000135,0.0128,2.54e-07,2.26e-05,0.00125,6.8e-05,4.79e-09,0.0113,3.8e-06,2.65e-05,4.29e-08,8.14e-06,1.36e-07,4.01e-11,1.33e-05,4.84e-07,1.86e-14,0.000267,2.07e-05,0.000308,3.43e-07,3.7e-09,8.06e-05,0.00723,0.000948,1.08e-05,0.0671,0.0097,0.79,0.0231,7.37e-05,0.0663,0.000612,0.00431,9.18e-05,0.000749,5.62e-07,4.72e-08,2.09e-06,1.31e-07,3.04e-06,1.75e-09,1.13e-09,3.3e-13,3.67e-15,4.73e-15 \ + }, \ + \ + { \ + \ + /* Model N40 */ \ + \ + 0.0039,2.18e-08,4.3e-06,5.16e-09,0.0989,5.54e-07,5.29e-09,6.22e-11,0.00415,5.43e-07,5.77e-05,4.66e-05,0.0154,7.7e-05,0.000117,0.000705,0.259,0.00103,0.00235,0.00056,0.101,0.000314,0.00373,0.000167,0.0161,2.57e-07,3.14e-05,0.00172,9.52e-05,5.27e-09,0.0135,5.38e-06,3.69e-05,5.62e-08,9.14e-06,1.83e-07,4.76e-11,1.87e-05,6.33e-07,5.84e-15,0.000285,2.35e-05,0.000406,1.62e-07,4.68e-09,9.51e-05,0.0077,0.00112,7.59e-06,0.09,0.0121,0.67,0.0203,5.33e-05,0.0689,0.000559,0.0044,6.57e-05,0.000527,4.43e-07,2.4e-08,1.71e-06,1.05e-07,2.41e-06,1.42e-09,8.87e-10,2.72e-13,1.36e-15,3.43e-15 \ + }, \ + \ + { \ + \ + /* Model N100L */ \ + \ + 0.00385,2.17e-08,3.98e-06,4.66e-09,0.124,5.14e-07,4.61e-09,5.68e-11,0.00433,5.17e-07,5.51e-05,4.68e-05,0.0183,8.02e-05,0.000119,0.000832,0.355,0.00125,0.00286,0.000709,0.138,0.000421,0.00502,0.000227,0.0217,3.05e-07,4.49e-05,0.00248,0.000139,6.6e-09,0.0175,7.87e-06,5.44e-05,7.44e-08,1.11e-05,2.51e-07,6.06e-11,2.75e-05,8.51e-07,3.04e-15,0.000336,2.76e-05,0.000463,6.88e-10,3.84e-09,0.000101,0.00802,0.000998,1.11e-05,0.057,0.0133,0.533,0.0143,1.27e-07,0.0381,0.000148,0.000764,3.09e-05,0.000246,1.72e-07,5.26e-14,9.19e-07,6.04e-08,1.44e-06,8.79e-10,5.26e-10,6.71e-15,5.97e-24,1.22e-15 \ + }, \ + \ + { \ + \ + /* Model N100 */ \ + \ + 0.00304,1.74e-08,3.21e-06,3.67e-09,0.101,4.13e-07,3.53e-09,4.39e-11,0.00353,4.11e-07,4.07e-05,3.74e-05,0.0152,6.49e-05,9.66e-05,0.000674,0.284,0.00103,0.00236,0.000577,0.111,0.000339,0.00404,0.000178,0.0177,2.47e-07,3.51e-05,0.00191,0.000107,5.21e-09,0.0147,6.08e-06,4.15e-05,6.12e-08,1e-05,2.05e-07,4.85e-11,2.11e-05,7.05e-07,7.85e-15,0.000314,2.59e-05,0.000451,2.6e-07,5.56e-09,0.000105,0.00857,0.00124,2.61e-07,0.0994,0.00929,0.622,0.0188,8.02e-05,0.069,0.000534,0.00454,4.76e-05,0.0004,3.78e-07,3.83e-08,1.32e-06,8.02e-08,1.79e-06,1.09e-09,7.24e-10,3.93e-13,2.23e-15,4.03e-15 \ + }, \ + \ + { \ + \ + /* Model N100H */ \ + \ + 0.00387,2.28e-08,4.25e-06,5.24e-09,0.073,5.61e-07,5.59e-09,6.32e-11,0.00366,5.2e-07,7.62e-05,4.25e-05,0.0115,6.86e-05,0.000104,0.000547,0.212,0.000773,0.00172,0.00042,0.0855,0.000237,0.00274,0.000127,0.0143,1.89e-07,2.44e-05,0.00129,7.4e-05,3.81e-09,0.0124,4.22e-06,2.8e-05,4.37e-08,8.92e-06,1.56e-07,7.13e-10,1.46e-05,5.44e-07,9.97e-11,0.000287,2.35e-05,0.000395,0.000102,3.2e-08,0.000151,0.0116,0.00146,0.00125,0.098,0.0139,0.747,0.0225,0.00509,0.0754,0.000996,0.00879,0.00012,0.00285,2.32e-06,9.61e-06,1.94e-06,3.23e-07,2.74e-06,2.26e-09,1.07e-08,1.04e-11,2.23e-12,3.47e-13 \ + }, \ + \ + { \ + \ + /* Model N150 */ \ + \ + 0.0172,1e-07,1.84e-05,2.29e-08,0.124,2.48e-06,2.52e-08,2.64e-10,0.00872,1.98e-06,0.000483,0.000138,0.0193,0.000202,0.000307,0.00104,0.271,0.0013,0.00277,0.000659,0.107,0.000327,0.00368,0.000189,0.0176,3.59e-07,3.14e-05,0.00169,9.53e-05,6.64e-09,0.015,5.36e-06,3.63e-05,5.57e-08,1.04e-05,1.92e-07,5.5e-11,1.86e-05,6.53e-07,6.17e-15,0.000331,2.69e-05,0.000447,1.61e-07,5.07e-09,0.000109,0.0089,0.00129,8.55e-06,0.104,0.0139,0.584,0.0179,6.05e-05,0.0701,0.000523,0.00456,3.51e-05,0.000294,3.2e-07,2.44e-08,1.06e-06,6.14e-08,1.39e-06,8.61e-10,5.68e-10,3.27e-13,1.25e-15,3.15e-15 \ + }, \ + \ + { \ + \ + /* Model N200 */ \ + \ + 0.0121,6.57e-08,1.33e-05,1.71e-08,0.196,1.74e-06,1.98e-08,2.13e-10,0.0115,1.68e-06,0.000234,0.000138,0.0332,0.000214,0.000327,0.00164,0.328,0.00208,0.00476,0.00108,0.11,0.000523,0.00622,0.000289,0.015,5.42e-07,4.66e-05,0.00269,0.000142,1.04e-08,0.0107,7.81e-06,5.71e-05,8.61e-08,6.45e-06,2.2e-07,8.6e-11,2.72e-05,7.66e-07,5.21e-15,0.00018,1.72e-05,0.000448,4.58e-08,6.16e-09,8.19e-05,0.00562,0.00106,4.94e-06,0.113,0.0131,0.436,0.0153,2.83e-05,0.0729,0.000528,0.00467,1.69e-05,0.000131,2.1e-07,5.97e-09,5.45e-07,2.58e-08,5.97e-07,3.91e-10,2.58e-10,1.39e-13,1.76e-16,1.24e-15 \ + }, \ + \ + { \ + \ + /* Model N300C */ \ + \ + 0.00886,4.95e-08,9.16e-06,1.14e-08,0.121,1.22e-06,1.25e-08,1.36e-10,0.00676,1.08e-06,0.000211,8.53e-05,0.0197,0.000133,0.000201,0.000968,0.319,0.00129,0.00287,0.000685,0.127,0.000365,0.00422,0.0002,0.0208,3.23e-07,3.63e-05,0.00196,0.00011,6.29e-09,0.0178,6.21e-06,4.22e-05,6.03e-08,1.19e-05,2.2e-07,5.65e-11,2.17e-05,7.44e-07,8.89e-14,0.000378,3.05e-05,0.000505,1.25e-06,6.72e-09,0.00012,0.00985,0.00136,3.24e-05,0.103,0.0135,0.533,0.0156,0.000213,0.0626,0.000503,0.00457,2.56e-05,0.000301,3.23e-07,1.63e-07,6.42e-07,4.13e-08,7.64e-07,4.91e-10,5.91e-10,8.44e-13,1.48e-14,9.47e-15 \ + }, \ + \ + { \ + \ + /* Model N1600 */ \ + \ + 0.0106,5.57e-08,1.04e-05,1.29e-08,0.191,1.36e-06,1.44e-08,1.58e-10,0.0094,1.29e-06,0.000232,0.000109,0.0308,0.000175,0.000263,0.00148,0.361,0.00197,0.00453,0.00105,0.122,0.000547,0.00656,0.000298,0.0164,4.97e-07,5.22e-05,0.00298,0.00016,9.87e-09,0.011,8.93e-06,6.44e-05,9.21e-08,6.08e-06,2.48e-07,8.43e-11,3.11e-05,8.46e-07,4.52e-15,0.00015,1.62e-05,0.000508,1.19e-09,6.11e-09,8.09e-05,0.00478,0.00106,3.17e-06,0.122,0.0131,0.39,0.0145,7.02e-06,0.0748,0.000623,0.00579,1.48e-05,9.83e-05,1.91e-07,1.78e-11,5.66e-07,2.41e-08,5.74e-07,3.76e-10,2.29e-10,9.1e-15,7.4e-22,6.14e-16 \ + }, \ + \ + { \ + \ + /* Model N1600C */ \ + \ + 0.0168,8.44e-08,1.88e-05,2.41e-08,0.272,2.42e-06,2.73e-08,2.97e-10,0.0173,2.39e-06,0.000297,0.000202,0.0464,0.000312,0.000482,0.00237,0.344,0.00286,0.00655,0.00147,0.103,0.000679,0.00806,0.000384,0.0123,7.68e-07,5.75e-05,0.00342,0.000175,1.48e-08,0.0075,9.65e-06,7.3e-05,1.14e-07,4.06e-06,2.45e-07,1.24e-10,3.34e-05,8.59e-07,6.99e-15,9.3e-05,1.03e-05,0.000401,1.72e-09,7.52e-09,6.01e-05,0.00394,0.00092,4.06e-06,0.1,0.0113,0.354,0.0126,8.7e-06,0.0616,0.00062,0.00675,1.61e-05,0.000105,2.29e-07,2.55e-11,6.38e-07,2.77e-08,6.45e-07,4.24e-10,2.53e-10,1.15e-14,1.25e-21,7.02e-16 \ + }, \ + \ + { \ + \ + /* Model N100_Z0.5 */ \ + \ + 0.0031,8.47e-09,1.8e-06,2.07e-09,0.0987,2.84e-07,2.23e-09,2.2e-11,0.0036,1.97e-07,1.65e-05,2.63e-05,0.0202,3.09e-05,4.44e-05,0.000588,0.29,0.000728,0.00119,0.000358,0.112,0.000239,0.00186,9.91e-05,0.0185,3.86e-08,2.27e-05,0.000831,6.25e-05,4.66e-10,0.0157,3.85e-06,1.67e-05,2.35e-08,1.08e-05,1.43e-07,2.24e-12,9.34e-06,3.37e-07,5.04e-15,0.000343,2.06e-05,0.000253,2.52e-07,3.01e-09,7.65e-05,0.00897,0.00102,1.07e-05,0.0819,0.0111,0.646,0.0166,7.85e-05,0.059,0.000509,0.00487,5.04e-05,0.000301,3.17e-07,3.72e-08,2.22e-06,9.98e-08,1.43e-06,7.08e-10,3.7e-10,3.81e-13,2.16e-15,3.06e-15 \ + }, \ + \ + { \ + \ + /* Model N100_Z0.1 */ \ + \ + 0.00315,1.91e-09,4.71e-07,2.98e-09,0.0964,9.32e-08,1.21e-09,1.48e-11,0.00369,4.47e-08,2.3e-06,1.96e-05,0.0269,1.06e-05,7.36e-06,0.000268,0.294,0.00043,0.000144,0.000105,0.112,0.000104,0.00026,2.64e-05,0.0192,1.64e-09,9.14e-06,0.000119,1.89e-05,9.87e-12,0.0166,1.42e-06,2.08e-06,6.22e-09,1.18e-05,7.69e-08,5.88e-13,1.37e-06,9.3e-08,4.85e-15,0.000373,1.27e-05,0.000111,2.47e-07,2.3e-09,3.99e-05,0.00944,0.000761,1.05e-05,0.0687,0.00873,0.666,0.0141,7.72e-05,0.0509,0.00044,0.00539,4.62e-05,0.000154,3.27e-06,3.65e-08,1.73e-05,1.26e-07,6.29e-07,2.47e-10,1.71e-10,3.73e-13,2.1e-15,2.69e-15 \ + }, \ + \ + { \ + \ + /* Model N100_Z0.01 */ \ + \ + 0.00316,2.72e-10,7.22e-08,8.73e-08,0.0947,5.43e-09,9.93e-10,4.79e-11,0.00374,6.93e-09,1.71e-07,1.72e-05,0.029,8.99e-07,1.04e-06,8.71e-05,0.289,0.000135,1.84e-05,3.54e-05,0.115,4.57e-05,7.14e-06,5.65e-06,0.0204,1.73e-11,3.52e-06,5.4e-06,3.57e-06,5.11e-14,0.0177,4.92e-07,8.87e-08,6.23e-09,1.27e-05,3.94e-08,5.82e-13,2.19e-07,9.9e-08,4.82e-15,0.000387,6.83e-06,8.59e-05,2.46e-07,2.28e-09,2.62e-05,0.00964,0.000627,1.05e-05,0.0662,0.00784,0.672,0.0128,7.7e-05,0.0501,0.000753,0.00536,2.71e-05,0.000125,1.29e-05,3.63e-08,2.64e-05,1.45e-07,4.37e-07,1.73e-10,1.51e-10,3.72e-13,2.09e-15,2.66e-15 \ + } \ + } + +#endif // NUCSYN_SEITENZAHL2013_H diff --git a/src/nucsyn/nucsyn_sn_Seitenzahl2013_automatic.c b/src/nucsyn/nucsyn_sn_Seitenzahl2013_automatic.c new file mode 100644 index 0000000000000000000000000000000000000000..19e8cbf3fda7d700358e43e21d8f5531a35d2110 --- /dev/null +++ b/src/nucsyn/nucsyn_sn_Seitenzahl2013_automatic.c @@ -0,0 +1,126 @@ +#include "../binary_c.h" + +/* + * Wrapper for the nucsyn_sn_Seitenzahl2013 function to + * automatically select one of the N100 models and interpolate + * the metallicity + */ + +#if defined NUCSYN && defined NUCSYN_SUPERNOVAE + +void nucsyn_sn_Seitenzahl2013_automatic(struct stardata_t * stardata, + double * X) +{ + /* + * type Ia MCh supernovae yields from + * Seitenzahl et al. (2013) MNRAS 429,1156 + * + * This function interpolates based on the metallicity + * and the N100 models. + * + * Note that Zsolar is from Lodders 2010 + */ + +#define Z (stardata->common.nucsyn_metallicity) +#define Zsolar (0.0153293) + + char was[12]; + strlcpy(was,stardata->preferences->Seitenzahl2013_model,12); + + if(Z>Zsolar) + { + strlcpy(stardata->preferences->Seitenzahl2013_model, + "N100", + 5); + nucsyn_sn_Seitenzahl2013(stardata,X); + Dprint("use solar yields\n"); + } + else if(Z<0.01*Zsolar) + { + strlcpy(stardata->preferences->Seitenzahl2013_model, + "N100_Z0.01", + 11); + nucsyn_sn_Seitenzahl2013(stardata,X); + Dprint("use 0.01 Z yields\n"); + } + else + { + /* + * Interpolate + */ + double * Xlow = New_clear_isotope_array; + double * Xhigh = New_clear_isotope_array; + double Zlow,Zhigh; + + Dprint("compare Z = %g to Zsolar = %g\n",Z,Zsolar); + if(Z>0.5*Zsolar) + { + /* + * Interpolate between Zsolar and 0.5 * Zsolar + */ + strlcpy(stardata->preferences->Seitenzahl2013_model, + "N100", + 5); + nucsyn_sn_Seitenzahl2013(stardata,Xhigh); + Zhigh = Zsolar; + strlcpy(stardata->preferences->Seitenzahl2013_model, + "N100_Z0.5", + 11); + nucsyn_sn_Seitenzahl2013(stardata,Xlow); + Zlow = 0.5 * Zsolar; + } + else if(Z>0.1*Zsolar) + { + /* + * Interpolate between 0.5 * Zsolar and 0.1 * Zsolar + */ + strlcpy(stardata->preferences->Seitenzahl2013_model, + "N100_Z0.5", + 11); + nucsyn_sn_Seitenzahl2013(stardata,Xhigh); + Zhigh = 0.5 * Zsolar; + strlcpy(stardata->preferences->Seitenzahl2013_model, + "N100_Z0.1", + 11); + nucsyn_sn_Seitenzahl2013(stardata,Xlow); + Zlow = 0.1 * Zsolar; + } + else + { + /* + * Interpolate between 0.01 * Zsolar and 0.1 * Zsolar + */ + strlcpy(stardata->preferences->Seitenzahl2013_model, + "N100_Z0.1", + 11); + nucsyn_sn_Seitenzahl2013(stardata,Xhigh); + Zhigh = 0.1 * Zsolar; + strlcpy(stardata->preferences->Seitenzahl2013_model, + "N100_Z0.01", + 11); + nucsyn_sn_Seitenzahl2013(stardata,Xlow); + Zlow = 0.01 * Zsolar; + } + + + + /* + * Do the interpolation + */ + double f = (Z-Zlow)/(Zhigh-Zlow); + double f1 = 1.0 - f; + Dprint("interpolate %g to %g : f = %g\n",Zlow,Zhigh,f); + Isotope i; + Isotope_loop(i) + { + X[i] = f1 * Xlow[i] + f * Xhigh[i]; + } + Safe_free(Xlow); + Safe_free(Xhigh); + } + + /* restore preference */ + strlcpy(stardata->preferences->Seitenzahl2013_model,was,12); +} + +#endif // NUCSYN && NUCSYN_SUPERNOVAE diff --git a/src/nucsyn/nucsyn_sn_source.c b/src/nucsyn/nucsyn_sn_source.c new file mode 100644 index 0000000000000000000000000000000000000000..68a8391bcc09ecf50a46a6107d8dd4d1b6243e34 --- /dev/null +++ b/src/nucsyn/nucsyn_sn_source.c @@ -0,0 +1,38 @@ +#include "../binary_c.h" +#ifdef NUCSYN +Yield_source nucsyn_sn_source(struct star_t * exploder) +{ + /* + * Given a supernova type, return the nucsyn source ID + */ + Yield_source src_id; + switch(exploder->SN_type) + { + case SN_IA_He_Coal: + case SN_IA_He: + src_id = NUCSYN_SOURCE_SNIa_He; + break; + case SN_IA_ELD: + src_id = NUCSYN_SOURCE_SNIa_ELD; + break; + case SN_IA_CHAND_Coel: + case SN_IA_CHAND: + src_id = NUCSYN_SOURCE_SNIa_CHAND; + break; + case SN_AIC: + src_id = NUCSYN_SOURCE_SNAIC; + break; + case SN_GRB_COLLAPSAR: + case SN_IBC: + src_id = NUCSYN_SOURCE_SNIbc; + break; + case SN_II: + src_id = NUCSYN_SOURCE_SNII; + break; + default: + src_id = -1; + break; + } + return src_id; +} +#endif //NUCSYN diff --git a/src/nucsyn/nucsyn_sn_yield.c b/src/nucsyn/nucsyn_sn_yield.c index d31912e3c94bf753e329c649d1c0c3985ae2f5ba..8b74e8293655ba676f6840d177b1d391f47f0d51 100644 --- a/src/nucsyn/nucsyn_sn_yield.c +++ b/src/nucsyn/nucsyn_sn_yield.c @@ -224,7 +224,21 @@ void nucsyn_sn_yield(struct stardata_t *stardata, if(pre_explosion_star->stellar_type == COWD || pre_explosion_star->stellar_type == HeWD) { - nucsyn_sn_iwamoto_1999_DD2(X); + if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_DD2) + { + nucsyn_sn_iwamoto_1999_DD2(X); + } + else if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_SEITENZAHL2013) + { + nucsyn_sn_Seitenzahl2013(stardata,X); + } + else if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_SEITENZAHL2013_AUTOMATIC) + { + nucsyn_sn_Seitenzahl2013_automatic(stardata,X); + } src_id = NUCSYN_SOURCE_SNIa_CHAND; } else @@ -249,11 +263,25 @@ void nucsyn_sn_yield(struct stardata_t *stardata, else if(pre_explosion_star->stellar_type == COWD && pre_explosion_companion_stellar_type == COWD) { - /* - * Use Iwamoto results for single COWD (M=MCh) - * for dm ~= MCh of the material - */ - nucsyn_sn_iwamoto_1999_DD2(X); + if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_DD2) + { + /* + * Use Iwamoto results for single COWD (M=MCh) + * for dm ~= MCh of the material + */ + nucsyn_sn_iwamoto_1999_DD2(X); + } + else if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_SEITENZAHL2013) + { + nucsyn_sn_Seitenzahl2013(stardata,X); + } + else if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_SEITENZAHL2013_AUTOMATIC) + { + nucsyn_sn_Seitenzahl2013_automatic(stardata,X); + } } else { @@ -277,7 +305,21 @@ void nucsyn_sn_yield(struct stardata_t *stardata, Abundance * Xenv = New_isotope_array_from(exploder->Xenv); if(dmCO > TINY) { - nucsyn_sn_iwamoto_1999_DD2(XSN); + if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_DD2) + { + nucsyn_sn_iwamoto_1999_DD2(X); + } + else if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_SEITENZAHL2013) + { + nucsyn_sn_Seitenzahl2013(stardata,X); + } + else if(stardata->preferences->type_Ia_MCh_supernova_algorithm == + TYPE_IA_MCH_SUPERNOVA_ALGORITHM_SEITENZAHL2013_AUTOMATIC) + { + nucsyn_sn_Seitenzahl2013_automatic(stardata,X); + } } src_id = NUCSYN_SOURCE_SNIIa; nucsyn_mix_shells(dmCO,XSN, diff --git a/src/nucsyn/nucsyn_sources.h b/src/nucsyn/nucsyn_sources.h index af2c675e35b23f1f2d01e949169f9704c210c384..848c4e975fec042011a36260de329355d5ec3a1f 100644 --- a/src/nucsyn/nucsyn_sources.h +++ b/src/nucsyn/nucsyn_sources.h @@ -1,3 +1,4 @@ +#pragma once #ifndef NUCSYN_SOURCES_H #define NUCSYN_SOURCES_H diff --git a/src/nucsyn/nucsyn_strip_and_mix.c b/src/nucsyn/nucsyn_strip_and_mix.c index a9e8fe70f8388d5c7d13633895aa63a44ca20aac..ad95a7b502d3026cc1827bbd932f517b9d253de7 100644 --- a/src/nucsyn/nucsyn_strip_and_mix.c +++ b/src/nucsyn/nucsyn_strip_and_mix.c @@ -246,17 +246,20 @@ void sort_by_molecular_weight(struct star_t * RESTRICT star, for(i=0;i<=star->topshell;i++) { layerinfo[i].orig_sh = i; - layerinfo[i].mu = nucsyn_molecular_weight(star->X[i], + layerinfo[i].mu = nucsyn_effective_molecular_weight(star->X[i], star->stellar_type, stardata); Copy_abundances(star->X[i],layerinfo[i].X); } - qsort((void *)layerinfo, - star->topshell+1, - sizeof(struct layerinfo_t), - (comparison_fn_t)compare_layerinfo_by_mu); - + void * arg = NULL; + qsort_r((void *)layerinfo, + star->topshell+1, + sizeof(struct layerinfo_t), + (comparison_fn_r)compare_layerinfo_by_mu, + arg); + Safe_free(arg); + for(i=0;i<=star->topshell;i++) { Copy_abundances(layerinfo[i].X,star->X[i]); @@ -266,7 +269,8 @@ void sort_by_molecular_weight(struct star_t * RESTRICT star, } static int compare_layerinfo_by_mu(const void * RESTRICT a, - const void * RESTRICT b) + const void * RESTRICT b, + void * arg) { /* * Compare the molecular weight in two layers, for @@ -851,7 +855,7 @@ static void mass_changes(struct star_t * RESTRICT star, dmRLOF, star->dmacc, star->Xacc[XC12], - nucsyn_molecular_weight(star->Xacc,star->stellar_type,stardata), + nucsyn_effective_molecular_weight(star->Xacc,star->stellar_type,stardata), star->derivative[DERIVATIVE_STELLAR_MASS_WIND_LOSS], star->derivative[DERIVATIVE_STELLAR_MASS_WIND_GAIN], star->derivative[DERIVATIVE_STELLAR_MASS_RLOF_LOSS], @@ -957,7 +961,7 @@ static void mass_changes(struct star_t * RESTRICT star, StripDebug("made new top shell %d, dm = %15.10g, with mu = %15.10g\n", star->topshell, star->mshell[star->topshell], - nucsyn_molecular_weight(star->X[star->topshell], + nucsyn_effective_molecular_weight(star->X[star->topshell], star->stellar_type, stardata) @@ -1100,7 +1104,7 @@ static void mixing(struct star_t * RESTRICT star, StripDebug("Above starts at mmixed=%g Xmixed[XC12]=%g muabove=%15.10g\n", mmixed, Xmixed[XC12], - nucsyn_molecular_weight(Xmixed,star->stellar_type,stardata) + nucsyn_effective_molecular_weight(Xmixed,star->stellar_type,stardata) ); /* @@ -1154,12 +1158,12 @@ static void mixing(struct star_t * RESTRICT star, */ /* determine already-mixed region molecular weight */ - const double mu_above = nucsyn_molecular_weight(Xmixed, + const double mu_above = nucsyn_effective_molecular_weight(Xmixed, star->stellar_type, stardata); /* determine molecular weight of this shell */ - const double mu_this = nucsyn_molecular_weight(star->X[nsh], + const double mu_this = nucsyn_effective_molecular_weight(star->X[nsh], star->stellar_type, stardata); @@ -1197,7 +1201,7 @@ static void mixing(struct star_t * RESTRICT star, if(MIXDEBUG) StripDebug(": post-mix mu = %15.10g\n", - nucsyn_molecular_weight(star->X[nsh], + nucsyn_effective_molecular_weight(star->X[nsh], star->stellar_type, stardata)); } @@ -1278,7 +1282,7 @@ static void mixing(struct star_t * RESTRICT star, XX[XC12], XX[XN14], XX[XO16], - nucsyn_molecular_weight(XX,star->stellar_type,stardata) + nucsyn_effective_molecular_weight(XX,star->stellar_type,stardata) ); m -= 0.5* star->mshell[n]; @@ -1305,9 +1309,9 @@ static void mixing(struct star_t * RESTRICT star, star->Xenv[XC12], stardata->star[Other_star(star->starnum)].Xenv[XHe4], stardata->star[Other_star(star->starnum)].Xenv[XC12], - nucsyn_molecular_weight(stardata->star[Other_star(star->starnum)].Xenv,star->stellar_type,stardata), - nucsyn_molecular_weight(star->X[star->topshell],star->stellar_type,stardata), - nucsyn_molecular_weight(star->X[star->topshell-1],star->stellar_type,stardata), + nucsyn_effective_molecular_weight(stardata->star[Other_star(star->starnum)].Xenv,star->stellar_type,stardata), + nucsyn_effective_molecular_weight(star->X[star->topshell],star->stellar_type,stardata), + nucsyn_effective_molecular_weight(star->X[star->topshell-1],star->stellar_type,stardata), mixdepth ); } diff --git a/src/nucsyn/nucsyn_strip_and_mix.h b/src/nucsyn/nucsyn_strip_and_mix.h index f52284256001684aec322df50a43acec7bbd143c..d898c8481e4e115b2722c3087bd59f5ea38887ce 100644 --- a/src/nucsyn/nucsyn_strip_and_mix.h +++ b/src/nucsyn/nucsyn_strip_and_mix.h @@ -41,5 +41,6 @@ static void mixing(struct star_t * RESTRICT star, const double mshellmax); static int compare_layerinfo_by_mu(const void * RESTRICT a, - const void * RESTRICT b); + const void * RESTRICT b, + void * arg); #endif // NUCSYN_STRIP_AND_MIX_H diff --git a/src/nucsyn/nucsyn_totalX.c b/src/nucsyn/nucsyn_totalX.c index d479216bc1a73925e16ecda93a5e297caa1685fc..7a57e45a9b2d229b2c3fede0d80a0986da56cce5 100644 --- a/src/nucsyn/nucsyn_totalX.c +++ b/src/nucsyn/nucsyn_totalX.c @@ -54,6 +54,7 @@ double XXsum(struct stardata_t * stardata, s=0.0; Isotope_loop(i) { + prefetch(X+i+Isotope_loop_sign); s += X[i]; } diff --git a/src/nucsyn/nucsyn_update_abundances.c b/src/nucsyn/nucsyn_update_abundances.c index ef5e291bfa5286db21e57c0af016171a2f4d47cb..842c11c4e9cffbdf70edb0555451c30b74dcb376 100644 --- a/src/nucsyn/nucsyn_update_abundances.c +++ b/src/nucsyn/nucsyn_update_abundances.c @@ -87,7 +87,11 @@ void nucsyn_update_abundances(struct stardata_t * RESTRICT stardata) } MIXDEBUG_START; + +#ifdef __LOGGING Boolean dolog = FALSE; +#endif + Evolving_STARLOOP(k) { SETstars(k); @@ -167,6 +171,7 @@ void nucsyn_update_abundances(struct stardata_t * RESTRICT stardata) dm_excretion_loss,dm_nonconservative_loss ); +#ifdef __LOGGING /* if(1 && (IS_NOT_ZERO(dm_RLOF_gain) || @@ -192,12 +197,14 @@ void nucsyn_update_abundances(struct stardata_t * RESTRICT stardata) dm_excretion_loss,dm_nonconservative_loss ); } - -/* +#endif // __LOGGING + + /* * Wind accretion, abundance calculated above */ add_material(k,dm_wind_gain,Xwind_gain,ndmacc,Xacc,nXacc); +#ifdef __LOGGING if(dolog == TRUE && k==1 && stardata->star[0].stellar_type == TPAGB) @@ -213,7 +220,8 @@ void nucsyn_update_abundances(struct stardata_t * RESTRICT stardata) stardata->star[k].Xacc[XC12] ); } - +#endif // __LOGGING + /* * RLOF accretion and non-conservative loss: * take abundances from the companion @@ -449,12 +457,12 @@ void nucsyn_update_abundances(struct stardata_t * RESTRICT stardata) * most likely it is NOT degenerate EVER! */ - double mu_acc = nucsyn_molecular_weight(nXacc[k], - companion->stellar_type, - stardata); - double mu_env = nucsyn_molecular_weight(nXenv[k], - star->stellar_type, - stardata); + double mu_acc = nucsyn_effective_molecular_weight(nXacc[k], + companion->stellar_type, + stardata); + double mu_env = nucsyn_effective_molecular_weight(nXenv[k], + star->stellar_type, + stardata); MDEBUG("MIXING Seeing if the accretion layer will sink or swim : mu_acc=%g c.f. mu_env=%g, DELTAmu=%g\n", mu_acc,mu_env,mu_acc-mu_env); @@ -524,10 +532,12 @@ void nucsyn_update_abundances(struct stardata_t * RESTRICT stardata) MDEBUG("MIXING update accretion layer for star %d\n",k); SETstar(k); +#ifdef __LOGGING if(dolog) printf("NUA copy abunds nXC12=%g to Xacc12=%g\n", nXacc[k][XC12], Xacc[k][XC12]); +#endif // __LOGGING /* Update the accretion layer and envelope for the next timestep */ Copy_abundances(nXacc[k],Xacc[k]); diff --git a/src/nucsyn/nucsyn_update_abundances.h b/src/nucsyn/nucsyn_update_abundances.h index 4ed14f3393cd75a2e6fe54eaf26404508dd75e18..1efbecf46926ada7ae8e92c1755f8e38634d24e3 100644 --- a/src/nucsyn/nucsyn_update_abundances.h +++ b/src/nucsyn/nucsyn_update_abundances.h @@ -34,7 +34,7 @@ static int id_source(struct star_t * star,struct stardata_t * stardata); printf("MIXING Star %d : Type %2d Mu : %12s %12s %12s %12s %12s %12s %12s\n",k,star->stellar_type,"H1","He4","C12","N14","O16","Ba","NC/NO"); \ if(star->dmacc>VERY_TINY) \ { \ - double mu_acc=nucsyn_molecular_weight(Xacc[k],star->stellar_type,stardata); \ + double mu_acc=nucsyn_effective_molecular_weight(Xacc[k],star->stellar_type,stardata); \ printf("MIXING : Acc. Layer (mu=%2.2e) : %8e %8e %8e %8e %8e %8e\n",mu_acc,Xacc[k][XH1],Xacc[k][XHe4],Xacc[k][XC12],Xacc[k][XN14],Xacc[k][XO16],coratio(Xacc[k][XC12],Xacc[k][XO16])); \ } \ else \ @@ -50,7 +50,7 @@ static int id_source(struct star_t * star,struct stardata_t * stardata); } \ printf("\n"); \ } \ - double mu_env=nucsyn_molecular_weight(Xenv[k],star->stellar_type,stardata); \ + double mu_env=nucsyn_effective_molecular_weight(Xenv[k],star->stellar_type,stardata); \ \ printf("MIXING : Env. Layer (mu=%2.2e) : %8e %8e %8e %8e %8e %8e\n",mu_env,Xenv[k][XH1],Xenv[k][XHe4],Xenv[k][XC12],Xenv[k][XN14],Xenv[k][XO16],coratio(Xenv[k][XC12],Xenv[k][XO16])); \ \ @@ -78,7 +78,7 @@ printf("MIXING New (postmix) abundances : \n************************************ printf("MIXING Star %d : Type %2d Mu : %12s %12s %12s %12s %12s %12s %12s\n",k,stardata->star[k].stellar_type,"H1","He4","C12","N14","O16","Ba","NC/NO"); \ if(fabs(stardata->star[k].dmacc)>VERY_TINY) \ { \ - double mu_acc=nucsyn_molecular_weight(Xacc[k],stardata->star[k].stellar_type,stardata); \ + double mu_acc=nucsyn_effective_molecular_weight(Xacc[k],stardata->star[k].stellar_type,stardata); \ printf("MIXING : Acc. Layer (mu=%2.2e) : %8e %8e %8e %8e %8e %8e\n",mu_acc,Xacc[k][XH1],Xacc[k][XHe4],Xacc[k][XC12],Xacc[k][XN14],Xacc[k][XO16],Xacc[k][XC12]/Xacc[k][XO16]*16.0/12.0); \ } \ else \ @@ -94,7 +94,7 @@ printf("MIXING New (postmix) abundances : \n************************************ } \ printf("\n"); \ } \ - double mu_env=nucsyn_molecular_weight(Xenv[k],stardata->star[k].stellar_type,stardata); \ + double mu_env=nucsyn_effective_molecular_weight(Xenv[k],stardata->star[k].stellar_type,stardata); \ printf("MIXING : Env. Layer (mu=%2.2e) : %8e %8e %8e %8e %8e %8e\n",mu_env,Xenv[k][XH1],Xenv[k][XHe4],Xenv[k][XC12],Xenv[k][XN14],Xenv[k][XO16],coratio(Xenv[k][XC12],Xenv[k][XO16])); \ \ if(fabs(ndmacc[k])>VERY_TINY) \ diff --git a/src/opacity/opacity.h b/src/opacity/opacity.h index 27e6a8e910613d1f8cdb5df75479c261bae6d13a..ef77c0b0ed4ca718545a3ee6656fd8d09450e595 100644 --- a/src/opacity/opacity.h +++ b/src/opacity/opacity.h @@ -1,3 +1,4 @@ +#pragma once #ifndef OPACITY_H #define OPACITY_H diff --git a/src/opacity/opacity_prototypes.h b/src/opacity/opacity_prototypes.h index ccc07ad4639183f2b3d47c4da57543d28a42941d..df33c5dcf101bcc52072795c1df51f9037bc9a09 100644 --- a/src/opacity/opacity_prototypes.h +++ b/src/opacity/opacity_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef OPACITY_PROTOTYPES_H #define OPACITY_PROTOTYPES_H diff --git a/src/perl/install_modules.pl b/src/perl/install_modules.pl index 013f6d138c0ed4e328e862144a553789a52b0c06..20df0e9141fe38b510ca1082a5823e60dba482b0 100755 --- a/src/perl/install_modules.pl +++ b/src/perl/install_modules.pl @@ -49,6 +49,7 @@ foreach my $mod ( 'Memoize', 'Inline::C', 'Sub::Identify', + 'Cpanel::JSON::XS' ) { install($mod); @@ -56,7 +57,7 @@ foreach my $mod ( my $pwd=$ENV{PWD}; say "\nAll CPAN modules installed with (apparently) no failures.\n"; - +exit; say "Now installing Rob's modules (binary_grid and friends)\n"; open(my $c,'-|',"cd modules_targz ; ./install_all.pl 2>\&1")|| die("cannot open perl installation dir and/or script"); diff --git a/src/perl/modules_targz/Binning-0.03.tar.gz b/src/perl/modules_targz/Binning-0.03.tar.gz index 978846e53a0657e992b7be20fd695e01be2a7337..a1ef5c4973e6926fd5a4496383e84e5ed0261f91 100644 Binary files a/src/perl/modules_targz/Binning-0.03.tar.gz and b/src/perl/modules_targz/Binning-0.03.tar.gz differ diff --git a/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz b/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz index c2cf852f0489e53f391e3ed5fda2f10d5d4e2d40..d413ab7edb4a028f7fb82e347694a648b4878abe 100644 Binary files a/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz and b/src/perl/modules_targz/Data-Serializer-RobJSON-0.05.tar.gz differ diff --git a/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz b/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz index 34712ba568b70bccf47c60fac7da1472a9a12392..9a1ed10795bcf43b35d9a0c2c084278c53607f8f 100644 Binary files a/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz and b/src/perl/modules_targz/Hash-RobMerge-0.14.tar.gz differ diff --git a/src/perl/modules_targz/Histogram-0.01.tar.gz b/src/perl/modules_targz/Histogram-0.01.tar.gz index 31dd50c08cbd9722d222dfd6acf14b8c88f96b3e..62e1162498edbec879e684d760699e021311f7e4 100644 Binary files a/src/perl/modules_targz/Histogram-0.01.tar.gz and b/src/perl/modules_targz/Histogram-0.01.tar.gz differ diff --git a/src/perl/modules_targz/IMF-0.05.tar.gz b/src/perl/modules_targz/IMF-0.05.tar.gz index a812fa3ae48ef591fc30da10a6b9f79a3d534716..1d9ae474606671b21ba4515bbf2cb8da1bd5051f 100644 Binary files a/src/perl/modules_targz/IMF-0.05.tar.gz and b/src/perl/modules_targz/IMF-0.05.tar.gz differ diff --git a/src/perl/modules_targz/Maths_Double-0.01.tar.gz b/src/perl/modules_targz/Maths_Double-0.01.tar.gz index 5521bc9da82087ec9d91cd4c53029c326c08ac89..293ae3c50ab3beb9525cd6b377f2a322caa7e6e7 100644 Binary files a/src/perl/modules_targz/Maths_Double-0.01.tar.gz and b/src/perl/modules_targz/Maths_Double-0.01.tar.gz differ diff --git a/src/perl/modules_targz/RobInterpolation-0.04.tar.gz b/src/perl/modules_targz/RobInterpolation-0.04.tar.gz index 56c588405d8fd31747e98f500e7d191091528288..00a48070ab233d675f1d017a5f3bdf6679d84507 100644 Binary files a/src/perl/modules_targz/RobInterpolation-0.04.tar.gz and b/src/perl/modules_targz/RobInterpolation-0.04.tar.gz differ diff --git a/src/perl/modules_targz/binary_grid-2.01.tar.gz b/src/perl/modules_targz/binary_grid-2.01.tar.gz index 6aaba7ced8a31256dc25c8649870451bd98dbded..11fa8b0eeef2013b56491a87dcf80bfe4386866c 100644 Binary files a/src/perl/modules_targz/binary_grid-2.01.tar.gz and b/src/perl/modules_targz/binary_grid-2.01.tar.gz differ diff --git a/src/perl/modules_targz/binary_stars-0.04.tar.gz b/src/perl/modules_targz/binary_stars-0.04.tar.gz index 4508ab8591fcc4d68fd33785087c2e136919525c..235612c9c8e24b37498ca331d6ad4b7b6473f9a2 100644 Binary files a/src/perl/modules_targz/binary_stars-0.04.tar.gz and b/src/perl/modules_targz/binary_stars-0.04.tar.gz differ diff --git a/src/perl/modules_targz/cosmology-0.01.tar.gz b/src/perl/modules_targz/cosmology-0.01.tar.gz index 1048bb4b98ecb490f260b6a5f8835d0f8d30d908..04ccf4df51ffeee72e1a500e35fb936f18ec6f21 100644 Binary files a/src/perl/modules_targz/cosmology-0.01.tar.gz and b/src/perl/modules_targz/cosmology-0.01.tar.gz differ diff --git a/src/perl/modules_targz/distribution_functions-0.05.tar.gz b/src/perl/modules_targz/distribution_functions-0.05.tar.gz index 9e529893e72a846afed1a3f978897b54ddded85b..86a57d54b524e71df56e3744d079afabbd89442c 100644 Binary files a/src/perl/modules_targz/distribution_functions-0.05.tar.gz and b/src/perl/modules_targz/distribution_functions-0.05.tar.gz differ diff --git a/src/perl/modules_targz/rob_misc-0.14.tar.gz b/src/perl/modules_targz/rob_misc-0.14.tar.gz index 12c105bf6e5ba851fa2476b591a14a6c1a19f287..fe1d9883d4313abb8301e3d15f5680539c2d7f20 100644 Binary files a/src/perl/modules_targz/rob_misc-0.14.tar.gz and b/src/perl/modules_targz/rob_misc-0.14.tar.gz differ diff --git a/src/perl/modules_targz/robqueue-0.05.tar.gz b/src/perl/modules_targz/robqueue-0.05.tar.gz index 7d7f366de035c67ae246ae56d1c36d33fee8a267..4e0a9fd9683db2fcc74d0751a0b8b01a513bbc32 100644 Binary files a/src/perl/modules_targz/robqueue-0.05.tar.gz and b/src/perl/modules_targz/robqueue-0.05.tar.gz differ diff --git a/src/perl/modules_targz/spacing_functions-0.02.tar.gz b/src/perl/modules_targz/spacing_functions-0.02.tar.gz index 1a0eba59bd7bfa057a8fe8e7ed4b88c5498aa544..db316f5d43f20aee177b75954aeda7dc776ef684 100644 Binary files a/src/perl/modules_targz/spacing_functions-0.02.tar.gz and b/src/perl/modules_targz/spacing_functions-0.02.tar.gz differ diff --git a/src/perl/scripts-flexigrid/compare_tree.pl b/src/perl/scripts-flexigrid/compare_tree.pl index 0d313ce61202159d2f65f3a69cf0fd264db1634a..bd4d2db2f33cbd48d5c071b3d5b7e628fd263f6f 100755 --- a/src/perl/scripts-flexigrid/compare_tree.pl +++ b/src/perl/scripts-flexigrid/compare_tree.pl @@ -101,8 +101,8 @@ sub skipfile # . and .. ||($f eq '.')||($f eq '..') - # object files, shared libraries - ||($f =~/\.s?o$/) + # object files, shared libraries, etc. + ||($f =~/\.s?o$/) || ($f=~/\.d$/) # special binary_c files ||($f eq '(')||($f eq 'AS_NEEDED')||($f eq '.lread') diff --git a/src/perl/scripts/make_showstruct.pl b/src/perl/scripts/make_showstruct.pl index 4ff64438e68e8e0e5ab63425b4806a1e0f2e7b31..6e98ba21b4565a6abf849a8e6905a0fc7c6dcc50 100755 --- a/src/perl/scripts/make_showstruct.pl +++ b/src/perl/scripts/make_showstruct.pl @@ -44,8 +44,7 @@ my $opts = { # command to extract the header file and replace all macros 'header_extract' => ($ENV{SHOWSTRUCT_CC}//'gcc') .' '. ($ENV{SHOWSTRUCT_INC} // '') . - ' -E', - + ' -E 2>/dev/null ', # Recursion depth. # 0 = infinite 'depth' => '0', diff --git a/src/perl/scripts2/cbdisc_parameter_space.pl b/src/perl/scripts2/cbdisc_parameter_space.pl index 50d0984d309431c0e105e84e8e4a30fdc784c173..600c92883c74bbb4dabe4db1f16f1f7972dcc3ba 100755 --- a/src/perl/scripts2/cbdisc_parameter_space.pl +++ b/src/perl/scripts2/cbdisc_parameter_space.pl @@ -22,7 +22,7 @@ use rob_misc qw/MIN MAX log10 mkdirhier/; my $vb = 0; my $options = { - outdir => $ENV{HOME}.'/data/cbdiscpops', + outdir => $ENV{HOME}.'/data/cbdiscpops4-n10', gridscript => $ENV{HOME}.'/progs/stars/binary_c/src/perl/scripts2/cbdiscs.pl', }; diff --git a/src/perl/scripts2/cbdiscs-SNe.pl b/src/perl/scripts2/cbdiscs-SNe.pl new file mode 100755 index 0000000000000000000000000000000000000000..e532c53258264df9c54cc2d2002d694e8e9259b4 --- /dev/null +++ b/src/perl/scripts2/cbdiscs-SNe.pl @@ -0,0 +1,717 @@ +#!/usr/bin/env perl + +use strict; # recommended +use 5.16.0; # recommended +$|=1; +use IO::Handle; + + +############################################################ +# +# Circumbinary discs with binary_grid2 +# +# This version models discs around massive stars +# +############################################################ + + +# before loading threads, open output file(s) +my $outdir = ("@ARGV"=~/outdir=(\S+)/)[0]; +if(!$outdir) +{ + print STDERR "No outdir given : it is required\n"; + exit; +} +print "Output to $outdir\n"; +mkdirhier($outdir); + +# grid resolution (when used) +my $n = ("@ARGV"=~/\bn=(\d+)/)[0] // 40; + +my $initparamspace_outfile = $outdir.'/paramspace.dat'; +open(my $initparamspace_fp,'>',$initparamspace_outfile)|| + die("cannot open $initparamspace_outfile for writing"); +binmode $initparamspace_fp; +$initparamspace_fp->autoflush; + + +# load binary grid and rob's modules +use binary_grid2; # required +use binary_grid::C; # backend : C or Perl +use rob_misc qw/ncpus log10 mkdirhier MAX MIN/; + +# make lock var for atomic output +use threads::shared; +my $lockvar : shared; + +# number of computational threads to launch +my $nthreads = rob_misc::ncpus(); + +# make a new stellar population +my $population = binary_grid2->new( + # options can be given now ... + metallicity => 0.02, # mass fraction of "metals" + max_evolution_time => 15000, # Myr + nthreads=>$nthreads, # number of threads + ); + +# ... or options can be set manually later. +$population->set( + vb=>1, # turn on verbose logging (can be 0,1,2...) + return_array_refs=>1, # quicker data parsing mode + log_args=>0, + sort_args=>0, + save_args=>0, + log_args_dir=>'/tmp', + ); + + +$population->set( + { + default_to => 'bse' + }, + + # comenv options + minimum_donor_menv_for_comenv => 0.1, + alpha_ce=>1.0, + lambda_ce=>-1.0, + lambda_ionisation=>0.1, + lambda_enthalpy=>0.0, + + # AGB Mc,R,L evolution algorithm + # 0 : compatibility mode : Hurley (if no NUCSYN), Karakas (if NUCSYN) + # 1 : Hurley 2002 (overshooting) + # 2 : Karakas 2002 (non-overshooting) + # + # Third dredge up has the extra choice: + # 3 : Stancliffe (LMC/SMC metallicity only) + AGB_core_algorithm=>2, + AGB_radius_algorithm=>2, + AGB_luminosity_algorithm=>2, + AGB_3dup_algorithm=>2, + + # CB disc options + comenv_disc_mass_fraction => 1e-1, + comenv_disc_angmom_fraction => -3, + wind_disc_mass_fraction => 0.0, + wind_disc_angmom_fraction => 0.0, + cbdisc_gamma => 1.6666666666, + cbdisc_alpha => 1e-3, + cbdisc_kappa => 1e-2, + cbdisc_torquef => 1e-4, + cbdisc_mass_loss_constant_rate => 0.0, + cbdisc_mass_loss_inner_viscous_accretion_method => 1, + cbdisc_mass_loss_inner_viscous_multiplier => 1.0, + cbdisc_mass_loss_inner_L2_cross_multiplier => 0.0, + cbdisc_mass_loss_ISM_ram_pressure_multiplier => 1.0, + cbdisc_mass_loss_ISM_pressure => 3000.0, + cbdisc_mass_loss_FUV_multiplier => 0.0, + cbdisc_mass_loss_Xray_multiplier => 1.0, + cbdisc_viscous_photoevaporation_coupling => 1, + cbdisc_minimum_luminosity => 1e-4, + cbdisc_minimum_mass => 1e-6, + cbdisc_minimum_fRing => 0.2, + cbdisc_eccentricity_pumping_method => 1, + cbdisc_resonance_multiplier => 1.0, + cbdisc_resonance_damping => 1, + comenv_post_eccentricity => 1e-5, + minimum_timestep=>1e-8 + ); + +$population->set( + # slurm + slurm=>0, # use slurm if 1 (please set on command line) + slurm_njobs=>40, # number of jobs + slurm_dir=>'/users/ri0005/data/slurm', # working directory for scripts etc. + slurm_memory=>512, # RAM (MB) per job + slurm_postpone_join=>0, # if 1 do not join on slurm, join elsewhere + slurm_partition=>'all', # MUST be defined + slurm_jobname=>'binary_cbd', # not required but useful + ); + +# scan command line arguments for extra options +$population->parse_args(); + +# duplicity is 0 for single stars, 1 for binary stars +# and 2 for a mixed population sampled at equal times +my $duplicity = 1; + +if($duplicity == 0) +{ + # make a grid of $n single stars, log-spaced, + # with masses between $mmin and $mmax + my $mmin = 0.1; + my $mmax = 80.0; + $population->add_grid_variable( + 'name' => 'lnm1', + 'longname' =>'Primary mass', + 'range' =>[log($mmin),log($mmax)], + 'resolution' => $n, # just a counter for the grid + 'spacingfunc'=>"const(log($mmin),log($mmax),$n)", + 'precode' =>'$m1=exp($lnm1);', + 'probdist' =>'Kroupa2001($m1)*$m1', + 'dphasevol' =>'$dlnm1', + ); +} +elsif($duplicity == 1) +{ + # make a population of binary stars + my $resolution = { + m1 => $n, + q => $n, + P => $n + }; + my $mmin = 8; + my $mmax = 20; + $population->{_grid_options}{binary} = 1; + + $population->add_grid_variable + ( + 'name' => 'lnm1', + 'longname' =>'Primary mass', + 'range' =>[log($mmin),log($mmax)], + 'resolution' => $resolution->{m1}, + 'spacingfunc'=>"const(log($mmin),log($mmax),$resolution->{m1})", + 'precode' =>'$m1=exp($lnm1);', + 'probdist' =>'Kroupa2001($m1)*$m1', + 'dphasevol' =>'$dlnm1', + ); + # q=M1/M2 distribution flat in q between 0.1/M1 and 1.0 + $population->add_grid_variable + ( + 'condition' =>'$self->{_grid_options}{binary}==1', + 'name' =>'q', + 'longname' =>'Mass ratio', + 'range' =>['0.1/$m1',1.0], + 'resolution'=>$resolution->{q}, + 'spacingfunc'=>"const(0.1/\$m1,1.0,$resolution->{q})", + 'probdist' =>"flatsections\(\$q,\[ +\{min=>0.1/\$m1,max=>0.8,height=>1.0\}, +\{min=>0.8,max=>1.0,height=>1.0\}, +\]\)", + precode =>'$m2=$q*$m1;', + dphasevol =>'$dq', + ); + # orbital period Duquennoy and Mayor 1991 distribution + $population->add_grid_variable + ( + 'name' =>'logper', + 'longname' =>'log(Orbital_Period)', + 'range' =>[-2.0,12.0], + 'resolution' =>$resolution->{P}, + 'spacingfunc'=>"const(-1.0,10.0,$resolution->{P})", + 'precode'=>" + + +\$per = 10.0 ** \$logper; +my \$eccentricity = 0.0; +\$sep=calc_sep_from_period(\$m1,\$m2,\$per) if(defined \$m1 && defined \$m2); + +", + + 'postcode' => " + +", + + 'probdist'=>"gaussian(\$logper,4.8,2.3,-2.0,12.0)", + 'dphasevol'=>'$dln10per' + ); +} +else +{ + # Make a mixed population of single and binary stars + # with equal sampling in equal times. + my $dt = 100.0; + $population->set( + time_adaptive_mass_grid_step => $dt, + ); + my $sampling_factor = 0.5; # deliberate oversampling (<0.5) + my $time_adaptive_options = { + max_evolution_time => + $population->{_bse_options}{max_evolution_time}, + stellar_lifetime_table_nm=>1000, + time_adaptive_mass_grid_log10_time=>0, + time_adaptive_mass_grid_step=>$dt, + time_adaptive_mass_grid_nlow_mass_stars=>10, + nthreads =>$nthreads, + thread_sleep =>1, + mmin =>0.1, + mmax =>80.0, + mass_grid_log10_time=>0, + mass_grid_step =>$dt*$sampling_factor, + extra_flash_resolution=>0, # 1 = broken? + mass_grid_nlow_mass_stars=>10, + debugging_output_directory=>'/tmp', + max_delta_m =>1.0, + savegrid =>1, + vb =>0, + metallicity=>$population->{_bse_options}{metallicity}, + agbzoom =>0, + }; + distribution_functions::bastard_distribution( + $population, { + mmin =>0.1, + mmax =>80.0, + m2min =>0.1, + nm2 =>10, + nper =>10, + qmin =>0.0, + qmax =>1.0, + necc =>undef, + useecc =>undef, + agbzoom =>0, + time_adaptive=>$time_adaptive_options, + }); +} + +# link population to custom data parser function +$population->set( + parse_bse_function_pointer => \&main::parse_data + ); + +my %init = $population->initial_abundance_hash( + 'Karakas2002', + $population->{_bse_options}{metallicity}); +my %isotope_hash = $population->isotope_hash(); +my @isotope_list = $population->isotope_list(); +my %nuclear_mass_hash = $population->nuclear_mass_hash(); +my @nuclear_mass_list = $population->nuclear_mass_list(); +my @sources = $population->source_list(); +my @ensemble = $population->ensemble_list(); + +# check code features +$population->require_not( + 'DISC_LOG is on', + 'DISC_LOG_2D is on' + ); +$population->require( + 'DISC_DEBUG is 0' + ); + +# evolution the stellar population (this takes some time) +$population->evolve(); + +# output the data +output($population); + +# done : exit +exit; + +############################################################ +# subroutines +############################################################ + +sub parse_data +{ + my ($population, $results) = @_; + + my $progenitor_stellar_type; + my $disc_donor_stellar_type; + + while(1) + { + # subsequent calls to tbse_line contain + # (references to) arrays of data + my $la = $population->tbse_line(); + + # first element is the "header" line + my $header = shift @$la; + + # break out of the look if this is 'fin' + last if ($header eq 'fin'); + + # check if $header matches one of your + # expected data lines, if so, act + if($header=~/DISC/) + { + #print "$header @$la\n", $population->{_grid_options}->{args},"\n"; + + if($header eq 'DISC_EV') + { + my ($dtp, + $t, + $stellar_type0, + $stellar_type1, + $nzones, + $zone1_type, + $zone2_type, + $zone3_type, + $Rin, + $Rout, + $separation, # Rsun + $orbital_period, # years + $Rism, + $Xray_domination, + $R0, + $R1, + $RL0, + $RL1, + $Ldisc, + $Idisc, + $Jdisc, + $Jbinary, + $Mdisc, + $Mbinary, + $Mdot_viscous, + $Mdot_global, + $Mdot_inner_L2, + $Mdot_ISM, + $Mdot_FUV, + $Mdot_Xray, + $eccentricity, + $edot_resonance, + $Tin, + $Tout, + $density_in, + $density_out, + $Pgrav_in, + $Pgrav_out, + $PISM, + $HRin, + $HRout, + $Teffmax, + $Tin_over_Tstar, + $Lstar, + $LXstar, + $Ldisc_over_Lstar, + $tvisc_in, + $tvisc_out, + $PE, + $KE, + $sigma0, + $Tvisc0) = @$la; + + my $r; + foreach my $set ('all', + $progenitor_stellar_type) + { + $r = $results->{$set}; + + # prebin some quantities + + # we want orbital period in days + my $orbital_period_binned = $population->rebin(safelog10($orbital_period*365.25),0.1); + my $eccentricity_binned = $population->rebin($eccentricity,0.025); + my $logLstar_binned = $population->rebin(safelog10($Lstar),0.1); + + # 1D distributions + $r->{Mdot_viscous}->{$population->rebin(safelog10($Mdot_viscous),0.1)} += $dtp; + $r->{Mdot_global}->{$population->rebin(safelog10($Mdot_global),0.1)} += $dtp; + $r->{Mdot_inner_L2}->{$population->rebin(safelog10($Mdot_inner_L2),0.1)} += $dtp; + $r->{Mdot_ISM}->{$population->rebin(safelog10($Mdot_ISM),0.1)} += $dtp; + $r->{Mdot_FUV}->{$population->rebin(safelog10($Mdot_FUV),0.1)} += $dtp; + $r->{Mdot_Xray}->{$population->rebin(safelog10($Mdot_Xray),0.1)} += $dtp; + $r->{logMdisc}->{$population->rebin(safelog10($Mdisc),0.1)} += $dtp; + $r->{logMbinary}->{$population->rebin(safelog10($Mbinary),0.1)} += $dtp; + $r->{logLdisc}->{$population->rebin(safelog10($Ldisc),0.1)} += $dtp; + $r->{logJdisc}->{$population->rebin(safelog10($Jdisc),0.1)} += $dtp; + $r->{logJbinary}->{$population->rebin(safelog10($Jbinary),0.1)} += $dtp; + $r->{age}->{$population->rebin(safelog10($t),0.1)} += $dtp; + $r->{separation}->{$population->rebin(safelog10($separation),0.1)} += $dtp; + $r->{orbital_period}->{$orbital_period_binned} += $dtp; + $r->{eccentricity}->{$eccentricity_binned} += $dtp; + $r->{edot_resonance}->{$population->rebin($edot_resonance,0.1)} += $dtp; + $r->{stellar_type0}->{$stellar_type0} += $dtp; + $r->{stellar_type1}->{$stellar_type1} += $dtp; + $r->{logRin}->{$population->rebin(safelog10($Rin),0.1)} += $dtp; + $r->{logRout}->{$population->rebin(safelog10($Rout),0.1)} += $dtp; + $r->{logRout_over_Rin}->{$population->rebin(safelog10($Rout/MAX(1e-50,$Rin)),0.1)} += $dtp; + $r->{logRin_over_separation}->{$population->rebin(safelog10($Rin/MAX(1e-50,$separation)),0.1)} += $dtp; + $r->{logRout_over_separation}->{$population->rebin(safelog10($Rout/MAX(1e-50,$separation)),0.1)} += $dtp; + $r->{logHRin}->{$population->rebin(safelog10($HRin),0.1)} += $dtp; + $r->{logHRout}->{$population->rebin(safelog10($HRout),0.1)} += $dtp; + $r->{logLdisc}->{$population->rebin(safelog10($Ldisc),0.1)} += $dtp; + $r->{logLstar}->{$logLstar_binned} += $dtp; + $r->{logLXstar}->{$population->rebin(safelog10($LXstar),0.1)} += $dtp; + $r->{logdensityin}->{$population->rebin(safelog10($density_in),0.1)} += $dtp; + $r->{logdensityout}->{$population->rebin(safelog10($density_out),0.1)} += $dtp; + $r->{logTin}->{$population->rebin(safelog10($Tin),0.1)} += $dtp; + $r->{logTout}->{$population->rebin(safelog10($Tout),0.1)} += $dtp; + $r->{logPgrav_in}->{$population->rebin(safelog10($Pgrav_in),0.1)} += $dtp; + $r->{logPgrav_out}->{$population->rebin(safelog10($Pgrav_out),0.1)} += $dtp; + $r->{logTeffmax}->{$population->rebin(safelog10($Teffmax),0.1)} += $dtp; + $r->{logtvisc_in}->{$population->rebin(safelog10($tvisc_in),0.1)} += $dtp; + + # 2D plots + $r->{'2D_period_eccentricity'}->{$orbital_period_binned}->{$eccentricity_binned} += $dtp; + $r->{'2D_period_luminosity'}->{$orbital_period_binned}->{$logLstar_binned} += $dtp; + + #print "2D $orbital_period_binned $eccentricity_binned $dtp\n"; + } + } + elsif($header eq 'DISC_END') + { + my ($endtime, + $p, + $lifetime, + $final_eccentricity, + $final_stellar_type0, + $final_stellar_type1, + $init_M0, + $init_M1, + $init_period, + $init_a, + $init_eccentricity + ) = @$la; + foreach my $set ('all', + $progenitor_stellar_type) + { + my $r = $results->{$set}; + $r->{logendtime}->{$population->rebin(safelog10($endtime),0.1)} += $p; + $r->{loglifetime}->{$population->rebin(safelog10($lifetime),0.1)} += $p; + $r->{final_eccentricity}->{$population->rebin($final_eccentricity,0.025)} += $p; + } + + { + # output init param space + lock $lockvar; + + my $s = sprintf "%g %g %g %g %d %g %g %g\n", + $init_M0, + $init_M1, + $init_a, + $init_period, + $disc_donor_stellar_type, + $lifetime, + $final_eccentricity, + $p; + + + print {$initparamspace_fp} $s; + #print $s; + } + } + elsif($header eq 'DISC_START') + { + my ($starttime, + $p, + $initial_stellar_type0, + $initial_stellar_type1, + $overflower, # the star number that gave the comenv + $donor_stellar_type, + $mdisc_msun, + $jdisc, + $init_M0, + $init_M1, + $init_P, + $init_a, + $init_e + ) = @$la; + + foreach my $set ('all', + $progenitor_stellar_type) + { + my $r = $results->{$set}; + $r->{logstarttime}->{$population->rebin(safelog10($starttime),0.1)} += $p; + $r->{initial_stellar_type0}->{$initial_stellar_type0} += $p; + $r->{initial_stellar_type1}->{$initial_stellar_type1} += $p; + $r->{overflower_stellar_type}->{$donor_stellar_type} += $p; + } + + # save for initial parameter space logging + $disc_donor_stellar_type = $donor_stellar_type; + #print "Donor type $disc_donor_stellar_type, prob $p\n"; + } + elsif($header eq 'DISC_COMENV') + { + ($progenitor_stellar_type) = @$la; + foreach my $set ('all', + $progenitor_stellar_type) + { + $results->{$set} //= {}; + } + } + } + elsif($header eq 'POSTAGB') + { + # count the number of post-AGB stars with and without discs + my ($t, + $dtp, + $stellar_type, + $has_disc, + $Teff, # K + $orbital_period, # years + $eccentricity) = @$la; + + + # save results based on whether there + # is a disc or not + $has_disc = $has_disc ? 'has_disc' : 'no_disc'; + + $results->{numbers}->{$stellar_type} //= {}; + $results->{numbers}->{'all'} //= {}; + + + my $r = $results->{numbers}->{$stellar_type}; + my $rall = $results->{numbers}->{'all'}; + + foreach my $x ($r,$rall) + { + # save the raw numbers + $x->{$has_disc}->{number} += $dtp; + + # save the period distribution + my $orbital_period_binned = $population->rebin(safelog10($orbital_period*365.25),0.1); + $x->{$has_disc}->{period}->{$orbital_period_binned} += $dtp; + + # save the eccentricity distribution + my $eccentricity_binned = $population->rebin($eccentricity,0.025); + $x->{$has_disc}->{eccentricity}->{$eccentricity_binned} += $dtp; + } + } + } +} + +############################################################ + + + +sub output +{ + + my $population = shift; + + # $results is a hash reference containing + # the results that were added up in parse_data() + my $results = $population->results; + printf "OUTPUT : hash size %d\n",rob_misc::hashcount($population->results); + + { + # Output grid information + my $outfile = $outdir.'/gridinfo'; + open(my $fp,'>',$outfile); + print {$fp} $population->infostring(); + close $fp; + } + + { + # Output grid information + my $outfile = $outdir.'/version'; + open(my $fp,'>',$outfile); + print {$fp} $population->evcode_version_string(); + close $fp; + } + + { + # close initial parameter space + close $initparamspace_fp; + } + + + # all other types of CB discs + foreach my $progenitor_type (sort grep + { + /^\d+$/ || $_ eq 'all' + } keys %$results) + { + print "Progenitor type $progenitor_type\n"; + + my $r = $results->{$progenitor_type}; + print "Found results for progenitor type $progenitor_type\n"; + + foreach my $o (keys %$r) + { + my $outfile = $outdir.'/st_'.$progenitor_type.'_'.$o.'.dat'; + print "OUTPUT $progenitor_type,$o to $outfile\n"; + open(my $fp, '>', $outfile); + + my @k = sort {$a<=>$b} keys %{$r->{$o}}; + + if($o =~ /^2D/) + { + # 2D surface plot + foreach my $x (@k) + { + foreach my $y (sort {$a<=>$b} keys %{$r->{$o}->{$x}}) + { + printf {$fp} "%g %g %g\n",$x,$y,$r->{$o}->{$x}->{$y}; + } + print {$fp} "\n"; + } + } + else + { + # 1D distribution + foreach my $x (@k) + { + printf {$fp} "%g %g\n",$x,$r->{$o}->{$x}; + } + } + close $fp; + } + } + + + # post-AGB distributions + my $r = $results->{numbers}; + open(my $fp, '>', $outdir.'/postAGB_numbers.dat'); + + # fractions of each type with / without discs + print {$fp} "\# fractions of each type with/without discs\n"; + printf {$fp} "\#% 20s : % 20s : % 20s\n", + '#Type','% With disc','% Without disc'; + foreach my $stellar_type (sort {$a<=>$b} keys %$r) + { + my $norm = $r->{$stellar_type}->{'has_disc'}->{number} + + $r->{$stellar_type}->{'no_disc'}->{number}; + + $norm = MAX(1e-100,$norm); + + printf {$fp} "% 20s : % 20g : % 20g\n", + ($stellar_type eq 'all' ? $stellar_type : $stellar_type), + $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, + $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; + } + + # normalize to all post-TPAGB + print {$fp} "\n\n\# number of each type normalized to all post-TPAGB\n"; + my $norm = $r->{6}->{'has_disc'}->{number} + + $r->{6}->{'no_disc'}->{number}; + $norm = MAX(1e-100,$norm); + foreach my $stellar_type (sort {$a<=>$b} keys %$r) + { + printf {$fp} "% 20s : % 20g : % 20g\n", + ($stellar_type eq 'all' ? $stellar_type : $stellar_type), + $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, + $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; + } + + print {$fp} "\n\n"; + print {$fp} "\n\n\# number of each type normalized to post-TPAGBs with discs\n"; + my $norm = $r->{6}->{'has_disc'}->{number}; + $norm = MAX(1e-100,$norm); + foreach my $stellar_type (sort {$a<=>$b} keys %$r) + { + printf {$fp} "% 20s : % 20g : % 20g\n", + ($stellar_type eq 'all' ? $stellar_type : $stellar_type), + $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, + $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; + } + print {$fp} "\n\n"; + close $fp; + + # period and eccentricity distributions + foreach my $stellar_type (sort {$a<=>$b} keys %$r) + { + foreach my $has_disc ('has_disc', + 'no_disc') + { + foreach my $dist ('period','eccentricity') + { + my $h = $r->{$stellar_type}->{$has_disc}->{$dist}; + open(my $fp, '>', $outdir.'/dist_st_'.$stellar_type.'_'.$has_disc.'_'.$dist); + foreach my $x (sort {$a<=>$b} keys %$h) + { + printf {$fp} "%g %g\n",$x,$h->{$x}; + } + close $fp; + } + } + } +} + +sub safelog10 +{ + # safe log10 function (prevents log(0)) + return log10(MAX(1e-30,$_[0])); +} diff --git a/src/perl/scripts2/cbdiscs.pl b/src/perl/scripts2/cbdiscs.pl index b986aa5d5a709011da5c70d5f623303628e30b5d..3c6ee51d07a4136178b339a7459ee33934825abd 100755 --- a/src/perl/scripts2/cbdiscs.pl +++ b/src/perl/scripts2/cbdiscs.pl @@ -1,10 +1,11 @@ #!/usr/bin/env perl - +$|=1; use strict; # recommended use 5.16.0; # recommended -$|=1; use IO::Handle; - +use threads; +use threads::shared; +my %systems :shared; ############################################################ # @@ -14,20 +15,28 @@ use IO::Handle; # before loading threads, open output file(s) -my $outdir = "$ENV{HOME}/data/cbdiscs2"; +my $outdir = ("@ARGV"=~/outdir=(\S+)/)[0]; +if(!$outdir) +{ + print STDERR "No outdir given : it is required\n"; + exit; +} +print "Output to $outdir\n"; mkdirhier($outdir); +my $log_args_dir = $outdir.'/args'; +mkdirhier($log_args_dir); -my $initparamspace_outfile = $outdir.'/paramspace.dat'; -open(my $initparamspace_fp,'>',$initparamspace_outfile)|| - die("cannot open $initparamspace_outfile for writing"); -binmode $initparamspace_fp; -$initparamspace_fp->autoflush; +# grid resolution (when used) +my $n = ("@ARGV"=~/\bn=(\d+)/)[0] // 10; +my $double_end_checks = 0; # load binary grid and rob's modules use binary_grid2; # required use binary_grid::C; # backend : C or Perl +use binary_grid::slurm; use rob_misc qw/ncpus log10 mkdirhier MAX MIN/; +use Data::Dumper; # make lock var for atomic output use threads::shared; @@ -48,27 +57,27 @@ my $population = binary_grid2->new( $population->set( vb=>1, # turn on verbose logging (can be 0,1,2...) return_array_refs=>1, # quicker data parsing mode - log_args=>1, - sort_args=>1, - save_args=>1, - log_args_dir=>'/tmp', + log_args=>0, + sort_args=>0, + save_args=>0, + log_fins=>0, + log_args_dir=>$log_args_dir, ); - - $population->set( { default_to => 'bse' }, - mass_accretion_for_eld => 1e6, - + minimum_timestep=>1e-8, + # comenv options minimum_donor_menv_for_comenv => 0.1, alpha_ce=>1.0, lambda_ce=>-1.0, lambda_ionisation=>0.1, lambda_enthalpy=>0.0, + comenv_post_eccentricity => 1e-5, # AGB Mc,R,L evolution algorithm # 0 : compatibility mode : Hurley (if no NUCSYN), Karakas (if NUCSYN) @@ -83,52 +92,99 @@ $population->set( AGB_3dup_algorithm=>2, # CB disc options - comenv_disc_mass_fraction => 1e-1, - comenv_disc_angmom_fraction => -3, + comenv_disc_mass_fraction => 0.01, + comenv_disc_angmom_fraction => 0.01, wind_disc_mass_fraction => 0.0, wind_disc_angmom_fraction => 0.0, + + disc_timestep_factor=>0.01, + disc_log => 0, + disc_n_monte_carlo_guesses => 0, + cbdisc_gamma => 1.6666666666, cbdisc_alpha => 1e-3, cbdisc_kappa => 1e-2, - cbdisc_torquef => 1e-4, + cbdisc_torquef => 1e-4, # 1e-4 + + cbdisc_init_dM => 0.0, # 0 means do not adapt initial masses + cbdisc_init_dJdM => 0.5, + + cbdisc_minimum_luminosity => 1e-4, + cbdisc_minimum_mass => 1e-6, + cbdisc_minimum_fRing => 0.2, + cbdisc_fail_ring_inside_separation=>0, + cbdisc_max_lifetime => 1e6, # y + + cbdisc_minimum_evaporation_timescale => 1.0, # y cbdisc_mass_loss_constant_rate => 0.0, - cbdisc_mass_loss_inner_viscous_accretion_method => 1, + cbdisc_mass_loss_inner_viscous_multiplier => 1.0, - cbdisc_mass_loss_inner_L2_cross_multiplier => 0.0, - cbdisc_mass_loss_ISM_ram_pressure_multiplier => 1.0, + cbdisc_mass_loss_inner_viscous_accretion_method => 1, + cbdisc_mass_loss_inner_L2_cross_multiplier => 1.0, + cbdisc_viscous_L2_coupling => 1, cbdisc_mass_loss_ISM_pressure => 3000.0, + cbdisc_mass_loss_ISM_ram_pressure_multiplier => 1.0, cbdisc_mass_loss_FUV_multiplier => 0.0, cbdisc_mass_loss_Xray_multiplier => 1.0, cbdisc_viscous_photoevaporation_coupling => 1, - cbdisc_minimum_luminosity => 1e-4, - cbdisc_minimum_mass => 1e-6, - cbdisc_minimum_fRing => 0.2, + cbdisc_inner_edge_stripping => 1, + cbdisc_outer_edge_stripping => 1, + cbdisc_inner_edge_stripping_timescale => 2, # 0=instant, 1=slow, + cbdisc_outer_edge_stripping_timescale => 2, # 2=viscous, 3=orbital cbdisc_eccentricity_pumping_method => 1, cbdisc_resonance_multiplier => 1.0, cbdisc_resonance_damping => 1, - comenv_post_eccentricity => 1e-5, - minimum_timestep=>1e-8 ); + +if($ARGV[0] eq 'show_opts') +{ + print "\nBSE_OPTIONS "; + foreach my $opt (sort keys %{$population->{_bse_options}}) + { + print '--'.$opt.' '.$population->{_bse_options}->{$opt},' '; + } + print "\n"; + exit; +} + +$population->set( + # slurm + slurm=>0, # use slurm if 1 (please set on command line) + slurm_njobs=>4, # number of jobs + slurm_dir=>'/users/ri0005/data/slurm', # working directory for scripts etc. + slurm_memory=>512, # RAM (MB) per job + slurm_postpone_join=>0, # if 1 do not join on slurm, join elsewhere + slurm_partition=>'all', # MUST be defined + slurm_jobname=>'binary_cbd', # not required but useful + slurm_use_all_node_CPUs=>1, # required on eureka + ); + # scan command line arguments for extra options $population->parse_args(); +# detect slurm usage +my $slurm = defined $population->{_grid_options}{slurm_jobid} ? 1 : 0; + +# make the parameter space output file(s), returns the +# file pointer which will be undef if no output is to be written +my $initparamspace_fp = make_paramspace_output(); + # duplicity is 0 for single stars, 1 for binary stars # and 2 for a mixed population sampled at equal times my $duplicity = 1; if($duplicity == 0) { - # make a grid of $nstars single binary stars, log-spaced, + # make a grid of $n single stars, log-spaced, # with masses between $mmin and $mmax - my $nstars = 40; my $mmin = 0.1; my $mmax = 80.0; $population->add_grid_variable( 'name' => 'lnm1', 'longname' =>'Primary mass', 'range' =>[log($mmin),log($mmax)], - 'resolution' => $nstars, # just a counter for the grid - 'spacingfunc'=>"const(log($mmin),log($mmax),$nstars)", + 'resolution' => $n, # just a counter for the grid + 'spacingfunc'=>"const(log($mmin),log($mmax),$n)", 'precode' =>'$m1=exp($lnm1);', 'probdist' =>'Kroupa2001($m1)*$m1', 'dphasevol' =>'$dlnm1', @@ -137,7 +193,6 @@ if($duplicity == 0) elsif($duplicity == 1) { # make a population of binary stars - my $n = 40; # n>4 gives you discs my $resolution = { m1 => $n, q => $n, @@ -179,13 +234,23 @@ elsif($duplicity == 1) ( 'name' =>'logper', 'longname' =>'log(Orbital_Period)', - 'range' =>[-2.0,12.0], +# 'range' =>[-2.0,12.0], + 'range' =>[1.0,4.0], 'resolution' =>$resolution->{P}, 'spacingfunc'=>"const(-1.0,10.0,$resolution->{P})", - 'precode'=>"\$per = 10.0 ** \$logper; + 'precode'=>" + + +\$per = 10.0 ** \$logper; my \$eccentricity = 0.0; \$sep=calc_sep_from_period(\$m1,\$m2,\$per) if(defined \$m1 && defined \$m2); + +", + + 'postcode' => " + ", + 'probdist'=>"gaussian(\$logper,4.8,2.3,-2.0,12.0)", 'dphasevol'=>'$dln10per' ); @@ -242,7 +307,9 @@ $population->set( parse_bse_function_pointer => \&main::parse_data ); -my %init = $population->initial_abundance_hash('Karakas2002',0.02); +my %init = $population->initial_abundance_hash( + 'Karakas2002', + $population->{_bse_options}{metallicity}); my %isotope_hash = $population->isotope_hash(); my @isotope_list = $population->isotope_list(); my %nuclear_mass_hash = $population->nuclear_mass_hash(); @@ -250,26 +317,14 @@ my @nuclear_mass_list = $population->nuclear_mass_list(); my @sources = $population->source_list(); my @ensemble = $population->ensemble_list(); -if(0){ -print Data::Dumper->Dump([ - #\%init, - #\%isotope_hash, - #\@isotope_list, - #\%nuclear_mass_hash, - \@nuclear_mass_list, - #\@sources, - #\@ensemble - ]); -} -#exit; - # check code features $population->require_not( - 'DISC_LOG is on', - 'DISC_LOG_2D is on' + #'DISC_LOG is on', # can be used now, with soft switch off + 'DISC_LOG_2D is on', ); $population->require( - 'DISC_DEBUG is 0' + 'DISC_DEBUG is 0', + 'BISECT_FAIL_EXIT is off', ); # evolution the stellar population (this takes some time) @@ -291,8 +346,7 @@ sub parse_data my $progenitor_stellar_type; my $disc_donor_stellar_type; - - + while(1) { # subsequent calls to tbse_line contain @@ -309,10 +363,10 @@ sub parse_data # expected data lines, if so, act if($header=~/DISC/) { - print "$header @$la\n", $population->{_grid_options}->{args},"\n"; - + #print "$header\n";# @$la\n", $population->{_grid_options}->{args},"\n"; if($header eq 'DISC_EV') { + #print "DISC_EV @$la\n"; my ($dtp, $t, $stellar_type0, @@ -365,7 +419,7 @@ sub parse_data $KE, $sigma0, $Tvisc0) = @$la; - + my $r; foreach my $set ('all', $progenitor_stellar_type) @@ -438,6 +492,19 @@ sub parse_data $init_a, $init_eccentricity ) = @$la; + + if($double_end_checks) + { + my $x = "$init_M0 $init_M1 $init_period $endtime"; + if(defined $systems{$x}) + { + print "ERROR : double disc end ($systems{$x})\n$population->{_grid_options}->{args}\n"; + + } + $systems{$x}++; + } + + foreach my $set ('all', $progenitor_stellar_type) { @@ -452,14 +519,15 @@ sub parse_data lock $lockvar; my $s = sprintf "%g %g %g %g %d %g %g %g\n", - $init_M0, - $init_M1, - $init_a, - $init_period, - $disc_donor_stellar_type, - $lifetime, - $final_eccentricity, - $p; + $init_M0, + $init_M1, + $init_a, + $init_period, + $disc_donor_stellar_type, + $lifetime, + $final_eccentricity, + $p; + print {$initparamspace_fp} $s; #print $s; @@ -525,7 +593,6 @@ sub parse_data $results->{numbers}->{$stellar_type} //= {}; $results->{numbers}->{'all'} //= {}; - my $r = $results->{numbers}->{$stellar_type}; my $rall = $results->{numbers}->{'all'}; @@ -544,8 +611,6 @@ sub parse_data } } } - - } ############################################################ @@ -554,145 +619,159 @@ sub parse_data sub output { - my $population = shift; - # $results is a hash reference containing # the results that were added up in parse_data() my $results = $population->results; - printf "OUTPUT : hash size %d\n",rob_misc::hashcount($population->results); - + my $nhash = rob_misc::hashcount($population->results); + + if(($population->{_grid_options}{slurm_command} eq 'join' || + !defined $population->{_grid_options}{slurm_command})&& + $nhash) { - # Output grid information - my $outfile = $outdir.'/gridinfo'; - open(my $fp,'>',$outfile); - print {$fp} $population->infostring(); - close $fp; - } + printf "OUTPUT_ALL : hash size %d\n",$nhash; - { - # Output grid information - my $outfile = $outdir.'/version'; - open(my $fp,'>',$outfile); - print {$fp} $population->evcode_version_string(); + + print "Dump to $outdir/dump\n"; + open(my $fp,'>',$outdir.'/dump'); + print Data::Dumper::Dumper($results); close $fp; - } + + { + # Output grid information + my $outfile = $outdir.'/gridinfo'; + open(my $fp,'>',$outfile); + print {$fp} $population->infostring(); + close $fp; + } - { - # close initial parameter space - close $initparamspace_fp; - } + { + # Output grid information + my $outfile = $outdir.'/version'; + open(my $fp,'>',$outfile); + print {$fp} $population->evcode_version_string(); + close $fp; + } + if(defined $initparamspace_fp) + { + # close initial parameter space + close $initparamspace_fp; + } - # all other types of CB discs - foreach my $progenitor_type (sort grep - { - /^\d+$/ || $_ eq 'all' - } keys %$results) - { - print "Progenitor type $progenitor_type\n"; - - my $r = $results->{$progenitor_type}; - print "Found results for progenitor type $progenitor_type\n"; - - foreach my $o (keys %$r) + # all other types of CB discs + foreach my $progenitor_type ( + sort grep + { + /^\d+$/ || $_ eq 'all' + } keys %$results) { - my $outfile = $outdir.'/st_'.$progenitor_type.'_'.$o.'.dat'; - print "OUTPUT $progenitor_type,$o to $outfile\n"; - open(my $fp, '>', $outfile); + print "Progenitor type $progenitor_type\n"; + + my $r = $results->{$progenitor_type}; + print "Found results for progenitor type $progenitor_type\n"; + + foreach my $o (keys %$r) + { + my $outfile = $outdir.'/st_'.$progenitor_type.'_'.$o.'.dat'; + print "OUTPUT $progenitor_type,$o to $outfile\n"; + open(my $fp, '>', $outfile); - my @k = sort {$a<=>$b} keys %{$r->{$o}}; + my @k = sort {$a<=>$b} keys %{$r->{$o}}; - if($o =~ /^2D/) - { - # 2D surface plot - foreach my $x (@k) + if($o =~ /^2D/) { - foreach my $y (sort {$a<=>$b} keys %{$r->{$o}->{$x}}) + # 2D surface plot + foreach my $x (@k) { - printf {$fp} "%g %g %g\n",$x,$y,$r->{$o}->{$x}->{$y}; + foreach my $y (sort {$a<=>$b} keys %{$r->{$o}->{$x}}) + { + printf {$fp} "%g %g %g\n",$x,$y,$r->{$o}->{$x}->{$y}; + } + print {$fp} "\n"; } - print {$fp} "\n"; } - } - else - { - # 1D distribution - foreach my $x (@k) + else { - printf {$fp} "%g %g\n",$x,$r->{$o}->{$x}; + # 1D distribution + foreach my $x (@k) + { + printf {$fp} "%g %g\n",$x,$r->{$o}->{$x}; + } } + close $fp; } - close $fp; } - } - # post-AGB distributions - my $r = $results->{numbers}; - open(my $fp, '>', $outdir.'/postAGB_numbers.dat'); + # post-AGB distributions + my $r = $results->{numbers}; + open(my $fp, '>', $outdir.'/postAGB_numbers.dat'); - # fractions of each type with / without discs - print {$fp} "\# fractions of each type with/without discs\n"; - printf {$fp} "\#% 20s : % 20s : % 20s\n", - '#Type','% With disc','% Without disc'; - foreach my $stellar_type (sort {$a<=>$b} keys %$r) - { - my $norm = $r->{$stellar_type}->{'has_disc'}->{number} + - $r->{$stellar_type}->{'no_disc'}->{number}; - - $norm = MAX(1e-100,$norm); - - printf {$fp} "% 20s : % 20g : % 20g\n", - ($stellar_type eq 'all' ? $stellar_type : $stellar_type), - $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, - $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; - } + # fractions of each type with / without discs + print {$fp} "\# fractions of each type with/without discs\n"; + printf {$fp} "\#% 20s : % 20s : % 20s\n", + '#Type','% With disc','% Without disc'; + foreach my $stellar_type (sort {$a<=>$b} keys %$r) + { + my $norm = + $r->{$stellar_type}->{'has_disc'}->{number} + + $r->{$stellar_type}->{'no_disc'}->{number}; + + $norm = MAX(1e-100,$norm); + + printf {$fp} "% 20s : % 20g : % 20g\n", + ($stellar_type eq 'all' ? $stellar_type : $stellar_type), + $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, + $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; + } - # normalize to all post-TPAGB - print {$fp} "\n\n\# number of each type normalized to all post-TPAGB\n"; - my $norm = $r->{6}->{'has_disc'}->{number} + - $r->{6}->{'no_disc'}->{number}; - $norm = MAX(1e-100,$norm); - foreach my $stellar_type (sort {$a<=>$b} keys %$r) - { - printf {$fp} "% 20s : % 20g : % 20g\n", - ($stellar_type eq 'all' ? $stellar_type : $stellar_type), - $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, - $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; - } + # normalize to all post-TPAGB + print {$fp} "\n\n\# number of each type normalized to all post-TPAGB\n"; + my $norm = $r->{6}->{'has_disc'}->{number} + + $r->{6}->{'no_disc'}->{number}; + $norm = MAX(1e-100,$norm); + foreach my $stellar_type (sort {$a<=>$b} keys %$r) + { + printf {$fp} "% 20s : % 20g : % 20g\n", + ($stellar_type eq 'all' ? $stellar_type : $stellar_type), + $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, + $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; + } - print {$fp} "\n\n"; - print {$fp} "\n\n\# number of each type normalized to post-TPAGBs with discs\n"; - my $norm = $r->{6}->{'has_disc'}->{number}; - $norm = MAX(1e-100,$norm); - foreach my $stellar_type (sort {$a<=>$b} keys %$r) - { - printf {$fp} "% 20s : % 20g : % 20g\n", - ($stellar_type eq 'all' ? $stellar_type : $stellar_type), - $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, - $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; - } - print {$fp} "\n\n"; - close $fp; + print {$fp} "\n\n"; + print {$fp} "\n\n\# number of each type normalized to post-TPAGBs with discs\n"; + my $norm = $r->{6}->{'has_disc'}->{number}; + $norm = MAX(1e-100,$norm); + foreach my $stellar_type (sort {$a<=>$b} keys %$r) + { + printf {$fp} "% 20s : % 20g : % 20g\n", + ($stellar_type eq 'all' ? $stellar_type : $stellar_type), + $r->{$stellar_type}->{'has_disc'}->{number} / $norm * 100.0, + $r->{$stellar_type}->{'no_disc'}->{number} / $norm * 100.0; + } + print {$fp} "\n\n"; + close $fp; - # period and eccentricity distributions - foreach my $stellar_type (sort {$a<=>$b} keys %$r) - { - foreach my $has_disc ('has_disc', - 'no_disc') + # period and eccentricity distributions + foreach my $stellar_type (sort {$a<=>$b} keys %$r) { - foreach my $dist ('period','eccentricity') + foreach my $has_disc ('has_disc', + 'no_disc') { - my $h = $r->{$stellar_type}->{$has_disc}->{$dist}; - open(my $fp, '>', $outdir.'/dist_st_'.$stellar_type.'_'.$has_disc.'_'.$dist); - foreach my $x (sort {$a<=>$b} keys %$h) - { - printf {$fp} "%g %g\n",$x,$h->{$x}; - } - close $fp; + foreach my $dist ('period','eccentricity') + { + my $h = $r->{$stellar_type}->{$has_disc}->{$dist}; + open(my $fp, '>', $outdir.'/dist_st_'.$stellar_type.'_'.$has_disc.'_'.$dist); + foreach my $x (sort {$a<=>$b} keys %$h) + { + printf {$fp} "%g %g\n",$x,$h->{$x}; + } + close $fp; + } } } + } } @@ -701,3 +780,32 @@ sub safelog10 # safe log10 function (prevents log(0)) return log10(MAX(1e-30,$_[0])); } + +sub make_paramspace_output +{ + if($population->{_grid_options}{slurm_command} ne 'join' && + $population->{_grid_options}{slurm_jobname} ne 'binary_cbd') + { + # open output parameter space file + # and return the file pointer + my $initparamspace_outfile = + $slurm ? + $outdir.'/paramspace/'.$population->{_grid_options}{slurm_jobname}.'.dat' : + $outdir.'/paramspace.dat'; + mkdir $outdir.'/paramspace' if($slurm); + + my $fp; + if($outdir ne '/dev/null') + { + open($fp,'>',$initparamspace_outfile)|| + die("cannot open $initparamspace_outfile for writing"); + binmode $fp; + $fp->autoflush; + } + return $fp; + } + else + { + return undef; + } +} diff --git a/src/perl/scripts2/disc_runs.pl b/src/perl/scripts2/disc_runs.pl new file mode 100755 index 0000000000000000000000000000000000000000..0844b28a45ab58b7a78c6a3b091c259865b54517 --- /dev/null +++ b/src/perl/scripts2/disc_runs.pl @@ -0,0 +1,309 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use Sys::Hostname qw/hostname/; +use 5.16.0; +use rob_misc; + +############################################################# +# +# wrapper script for cbdiscs from comenv +# +# call with args: +# +# launch +# launches the scripts +# +# slurm=n +# set to 1 to launch on slurm +# +# slurm_njobs=n +# set the number of slurm jobs +# +# force +# force overwrite of jobs, even if they already have been done +# +############################################################# + +my $script = "$ENV{HOME}/progs/stars/binary_c/src/perl/scripts2/cbdiscs.pl vb=1 "; +my $hostname = hostname() // `hostname` // $ENV{HOSTNAME} // $ENV{HOST}; +my $launch = "@ARGV"=~/launch/ ? 1 : 0; +my $slurm = ("@ARGV"=~/slurm=(\d+)/)[0] // ($hostname=~/eureka/ ? 1 : 0); +my $force = "@ARGV"=~/force/ ? 1 : 0; +my $offset = ("@ARGV"=~/offset=(\d+)/)[0] // 0; +my $modulo = ("@ARGV"=~/modulo=(\d+)/)[0] // 1; +my $njob = 0; +my $slurm_njobs = ("@ARGV"=~/slurm_njobs=(\d+)/)[0] // 40; + +print "Disc run wrapper running on $hostname + +Launch jobs? $launch +On slurm? $slurm (slurm_njobs=$slurm_njobs); +\n"; + +# wrapper script to run many disc populations +my $n = ("@ARGV"=~/\bn=(\d+)/)[0] // 100; # grid resolution +my $outdir=$ENV{HOME}.'/data/cbdiscpop5-'.$n; + +# default options +my $defaults = { + # stellar physics + minimum_donor_menv_for_comenv => 0.1, + metallicity=>0.02, + max_evolution_time=>13700, + + minimum_timestep=>1e-8, + + # comenv options + minimum_donor_menv_for_comenv => 0.1, + alpha_ce=>1.0, + lambda_ce=>-1.0, + lambda_ionisation=>0.1, + lambda_enthalpy=>0.0, + comenv_post_eccentricity => 1e-5, + + # AGB Mc,R,L evolution algorithm + # 0 : compatibility mode : Hurley (if no NUCSYN), Karakas (if NUCSYN) + # 1 : Hurley 2002 (overshooting) + # 2 : Karakas 2002 (non-overshooting) + # + # Third dredge up has the extra choice: + # 3 : Stancliffe (LMC/SMC metallicity only) + AGB_core_algorithm=>2, + AGB_radius_algorithm=>2, + AGB_luminosity_algorithm=>2, + AGB_3dup_algorithm=>2, + + # CB disc options + comenv_disc_mass_fraction => 0.01, + comenv_disc_angmom_fraction => 0.01, + wind_disc_mass_fraction => 0.0, + wind_disc_angmom_fraction => 0.0, + + disc_timestep_factor=>0.01, + disc_log => 0, + disc_n_monte_carlo_guesses => 0, + + cbdisc_gamma => 1.6666666666, + cbdisc_alpha => 1e-3, + cbdisc_kappa => 1e-2, + cbdisc_torquef => 1e-4, # 1e-4 + + cbdisc_init_dM => 0.0, # 0 means do not adapt initial masses + cbdisc_init_dJdM => 0.5, + + cbdisc_minimum_luminosity => 1e-4, + cbdisc_minimum_mass => 1e-6, + cbdisc_minimum_fRing => 0.2, + cbdisc_fail_ring_inside_separation=>0, + cbdisc_max_lifetime => 1e6, # y + + cbdisc_mass_loss_constant_rate => 0.0, + + cbdisc_mass_loss_inner_viscous_multiplier => 1.0, + cbdisc_mass_loss_inner_viscous_accretion_method => 1, + cbdisc_mass_loss_inner_L2_cross_multiplier => 1.0, + cbdisc_viscous_L2_coupling => 1, + cbdisc_mass_loss_ISM_pressure => 3000.0, + cbdisc_mass_loss_ISM_ram_pressure_multiplier => 1.0, + cbdisc_mass_loss_FUV_multiplier => 0.0, + cbdisc_mass_loss_Xray_multiplier => 1.0, + cbdisc_viscous_photoevaporation_coupling => 1, + cbdisc_inner_edge_stripping => 1, + cbdisc_outer_edge_stripping => 1, + cbdisc_inner_edge_stripping_timescale => 2, # 0=instant, 1=slow, + cbdisc_outer_edge_stripping_timescale => 2, # 2=viscous, 3=orbital + cbdisc_eccentricity_pumping_method => 1, + cbdisc_resonance_multiplier => 1.0, + cbdisc_resonance_damping => 1, + +}; + +my %runs; + +makerun({}); # defaults + +# now vary the parameters +foreach my $comenv_disc_mass_fraction (1e-4,1e-3,0.01,0.1,0.2) +{ + makerun({ + comenv_disc_mass_fraction => $comenv_disc_mass_fraction + }); +} + +foreach my $comenv_disc_angmom_fraction (1e-4,1e-3,0.01,0.1, + -1,-2,-3) +{ + makerun({ + comenv_disc_angmom_fraction => $comenv_disc_angmom_fraction + }); +} + + +foreach my $torquef (1e-4,1e-3,1e-2) +{ + makerun({ + cbdisc_torquef=>$torquef + }); +} + +foreach my $kappa (0.5e-2,5e-2) +{ + makerun({ + cbdisc_kappa=>$kappa + }); +} + +foreach my $alpha (1e-5,1e-4,1e-3,1e-2) +{ + makerun({ + cbdisc_alpha=>$alpha + }); +} + +foreach my $mass_loss_inner_viscous_multiplier (1.0,0.1,1e-2,1e-3,0.0) +{ + makerun({ + cbdisc_mass_loss_inner_viscous_multiplier=>$mass_loss_inner_viscous_multiplier + }); +} + + +foreach my $mass_loss_inner_viscous_accretion_method (0,1,2) +{ + makerun({ + cbdisc_mass_loss_inner_viscous_accretion_method=>$mass_loss_inner_viscous_accretion_method + }); +} + + +foreach my $mass_loss_Xray_multiplier (1.0,0.1) +{ + makerun({ + cbdisc_mass_loss_Xray_multiplier=>$mass_loss_Xray_multiplier + }); +} + +foreach my $P (1e4) +{ + makerun({ + cbdisc_mass_loss_ISM_pressure=>$P + }); +} + +foreach my $coupling (0,1) +{ + makerun({ + cbdisc_viscous_photoevaporation_coupling=>$coupling + }); +} + +foreach my $resonance_multiplier (0,0.1,1) +{ + makerun({ + cbdisc_resonance_multiplier=>$resonance_multiplier + }); +} + +foreach my $cbdisc_resonance_damping (0,1) +{ + makerun({ + cbdisc_resonance_damping=>$cbdisc_resonance_damping + }); +} + + +foreach my $cbdisc_minimum_fRing (0.2,0.1,1.0) +{ + makerun({ + cbdisc_minimum_fRing=> $cbdisc_minimum_fRing + }); +} +foreach my $comenv_post_eccentricity (1e-3,1e-5,1e-7) +{ + makerun({ + comenv_post_eccentricity => $comenv_post_eccentricity + }); +} + +foreach my $metallicity (0.02,0.004,0.0001) +{ + makerun({ + metallicity => $metallicity + }); +} +exit; + +sub makerun +{ + my $opts = shift; # hash ref + my %params = %$defaults; + my $dir = $outdir.'/'; + my $args; + my %o = %$opts; + + # loop over opts, make arg string and outdir + if(defined $opts && ref $opts eq 'HASH') + { + foreach my $k (sort keys %o) + { + my $v = $o{$k}; + + if(!defined $defaults->{$k} || + $defaults->{$k} != $v || + $defaults->{$k} ne $v) + { + $args .= " $k=$v "; + $dir .= $k.'='.$v.'_'; + } + } + } + else + { + print "Bad opts given (not {})\n"; + } + $dir=~s/_$//; # remove trailing _ + $dir=~s/cbdisc_//g; # remove cbdisc_ + + # if no extra args, just use defaults + if(!$args || $args eq '') + { + $dir = $outdir.'/defaults'; + } + + $args .= " outdir=$dir n=$n "; + + if(!$runs{$args}) + { + $runs{$args}=1; + print "Args : $args\n"; + my $cmd = $script.' '.( + $slurm ? + ('slurm=1 slurm_njobs='.$slurm_njobs) : + '').' '.$args; + print " ... CMD: $cmd\n"; + if($launch) + { + #print "CF njob $njob offset $offset modulo $modulo\n"; + my $boolean = + ($njob+$offset) % $modulo == 0 ? 1 : 0; + #print "Boolean $boolean\n"; + + if(!-d $dir || $force) + { + if($boolean) + { + print " ... Launch! ".(($force && -d $dir) ? '(forced)' : '')."\n"; + runcmd($cmd,'screen'); + } + $njob++; + } + elsif(-d $dir) + { + print " ... skipped launch : already run\n"; + } + } + } +} + diff --git a/src/perl/scripts2/disc_tester.pl b/src/perl/scripts2/disc_tester.pl new file mode 100755 index 0000000000000000000000000000000000000000..3123bad58c7bca514b7563111ce614736aea4148 --- /dev/null +++ b/src/perl/scripts2/disc_tester.pl @@ -0,0 +1,156 @@ +#!/usr/bin/env perl +use strict; +use rob_misc; +use Hash::Ordered; +use binary_grid::C; + + +# +# script to test discs' parameter space +# + + +my $opts = { + nice => '/usr/bin/ionice -c 3 /usr/bin/nice -n +19', + timeout => '/usr/bin/timeout 300', + #timeout => '', + grepv => '^DISC | grep -v ^XYIELD', +}; + +# binary_c_opts are either: +# +# scalar : fixed +# array of two elements : linear-spaced in range e.g. [MIN, MAX] +# array of two elements in double brackets : log-spaced in range [MIN, MAX] +# other array : choose one from the array (but ignore undefs) +# i.e. to choose one of 0 or 1, set the array to [undef,0,1] + +my $binary_c_opts = Hash::Ordered->new( + # stellar system + M_1 => [[1.0,6.0]], + M_2 => [[1.0,6.0]], + orbital_period => 0, + separation => [[10.0, 1e4]], + metallicity => 0.02, + max_evolution_time => 15e3, + minimum_timestep => 1e-6, + + # comenv -> disc initialisation + comenv_disc_mass_fraction => 0.01, + comenv_disc_angmom_fraction => 0.5, + + # disc physics + cbdisc_gamma => 5.0/3.0, + cbdisc_alpha => [[1e-6,0.1]], + cbdisc_kappa => [[1e-4,1.0]], + cbdisc_torquef => [[1e-10,1e-2]], + cbdisc_mass_loss_constant_rate => 0.0, + cbdisc_mass_loss_inner_viscous_multiplier => [0.0,1e2], + cbdisc_mass_loss_inner_viscous_accretion_method => [0,1,2], + cbdisc_mass_loss_inner_L2_cross_multiplier => [0.0,1.0], + cbdisc_mass_loss_ISM_pressure => [[1e2,1e5]], + cbdisc_mass_loss_ISM_ram_pressure_multiplier => [0.0,1e2], + cbdisc_mass_loss_FUV_multiplier => 0.0, + cbdisc_mass_loss_Xray_multiplier => [0.0,1e2], + cbdisc_viscous_photoevaporation_coupling => [undef,0,1], + cbdisc_inner_edge_stripping => [undef,0,1], + cbdisc_outer_edge_stripping => [undef,0,1], + cbdisc_eccentricity_pumping_method => [undef,0,1], + cbdisc_resonance_multiplier => [0.0,1e2], + cbdisc_resonance_damping => [undef,0,1], + + # output + disc_log => 0, + + # timestepping + disc_timestep_factor => 0.01, # fixed at the moment + + # stop conditions + cbdisc_minimum_luminosity => 1e-4, + cbdisc_minimum_mass => 1e-6, + cbdisc_minimum_fRing => 0.2, #[0.0,0.5], + cbdisc_fail_ring_inside_separation => 0, + cbdisc_max_lifetime => 1e6, # years + ); + +$opts->{timeout}//=''; + +print "\n"; + +my @optkeys = $binary_c_opts->keys; + +while(1) +{ + my $theseopts = {}; + foreach my $opt (@optkeys) + { + $theseopts->{$opt} = choose($binary_c_opts->get($opt)); + } + + my $args; + foreach my $opt (@optkeys) + { + + $args .= '--'.$opt .' '.$theseopts->{$opt}.' '; + } + + my $cmd = "$opts->{timeout} $opts->{nice} binary_c $args | grep -v $opts->{grepv}"; + + print "At ",scalar (localtime)," launch:\n\n"; + print $cmd,"\n\n"; + my $r = `$cmd`; + + if($r=~/Tick count/) + { + if($r=~/Error/i || $r=~/exit/i || $r=~/failed/) + { + print "Error detected\n"; + exit; + } + else + { + print "$r\nok\n"; + } + } + else + { + print "No tick count : failed?\n"; + exit; + } +} + + + +sub choose +{ + my $x = $_[0]; # input + my $y; # output + + if(ref $x eq 'ARRAY') + { + if(scalar @$x == 2) + { + # 2 elements : linear spacedrange + $y = $x->[0] + ($x->[1] - $x->[0]) * rand(); + } + elsif(scalar @$x == 1 && ref $x->[0] eq 'ARRAY') + { + # 1 element that's an array : log10 spaced range + my $min = log10($x->[0]->[0]); + $y = 10.0**($min + (log10($x->[0]->[1]) - $min) * rand()); + } + else + { + # !2 elements : choose one + my @y = grep {defined $_} @$x; + $y = $y[rand @y]; + } + } + else + { + # scalar : just return + $y = $x; + } + + return $y; +} diff --git a/src/perl/scripts2/fabian_cosmology.pl b/src/perl/scripts2/fabian_cosmology.pl new file mode 100755 index 0000000000000000000000000000000000000000..82704e9d76432a865dd8cc0e63acb105a5c509ef --- /dev/null +++ b/src/perl/scripts2/fabian_cosmology.pl @@ -0,0 +1,183 @@ +#!/usr/bin/env perl +use strict; # recommended +use 5.16.0; # recommended +use binary_grid2; # required +use binary_grid::C; # backend : C or Perl +use rob_misc qw/ncpus/; +use POSIX qw/log10/; +use Sort::Key qw/nsort/; + +############################################################ +# +# Example script to demonstrate how to use the +# binary_grid2 module. +# +# For full documentation, please see binary_grid2.pdf +# in the doc/ directory of binary_c +# +############################################################ + +# number of computational threads to launch +my $nthreads = rob_misc::ncpus(); + +my $Zrange = [1e-4,0.03]; +my $nZ = 20; +my $nM = 2000; +my $outfile = '/tmp/fabian_table.dat'; +open(OUT,'>',$outfile)||die("cannot open output\n"); + +for(my $logZ = log10($Zrange->[0]); + $logZ <= log10($Zrange->[1]*(1.0+1e-3)); + $logZ += (log10($Zrange->[1]) - log10($Zrange->[0]))/(1.0*$nZ)) +{ + my $Z = 10.0 ** $logZ; + + # make a new stellar population + my $population = binary_grid2->new( + # options can be given now ... + metallicity => $Z, # mass fraction of "metals" + max_evolution_time => 14000, # Myr + nthreads=>$nthreads, # number of threads + + ); + + # ... or options can be set manually later. + $population->set( + vb=>1, # turn on verbose logging (can be 0,1,2...) + return_array_refs=>1, # quicker data parsing mode + log_args=>0, + sort_args=>0, + save_args=>0, + log_args_dir=>'/tmp', + ); + + $population->set( + # physics + BH_prescription => 2, # 2 = Spera, 1 = Belczynski + ); + + # scan command line arguments for extra options + $population->parse_args(); + + # save version and info strings + state $vdone = 0; + if($vdone == 0) + { + $vdone = 1; + my $version_string = $population->evcode_version_string(); + print OUT " +############################################################ +# Version information +############################################################ +"; + $version_string=~s/^/\#/g; + $version_string=~s/\n/\n#/g; + print OUT $version_string; + } + + print OUT " +############################################################ +# Population information +############################################################ +"; + my $info_string = $population->infostring(); + $info_string=~s/^/\#/g; + $info_string=~s/\n/\n#/g; + print OUT $info_string; + print OUT " +############################################################ +"; + # make a grid of $nstars single binary stars, log-spaced, + # with masses between $mmin and $mmax + my $nstars = $nM; + my $mmin = 0.1; + my $mmax = 100.0; + $population->add_grid_variable( + 'name' => 'lnm1', + 'longname' =>'Primary mass', + 'range' =>[log($mmin),log($mmax)], + 'resolution' => $nstars, # just a counter for the grid + 'spacingfunc'=>"const(log($mmin),log($mmax),$nstars)", + 'precode' =>'$m1=exp($lnm1);', + 'probdist' =>'Kroupa2001($m1)*$m1', + 'dphasevol' =>'$dlnm1', + ); + + + # link population to custom data parser function + $population->set( + parse_bse_function_pointer => \&main::parse_data + ); + + # evolution the stellar population (this takes some time) + $population->evolve(); + + # output the data + output($population); +} + +# done : exit +exit; + +############################################################ +# subroutines +############################################################ + +sub parse_data +{ + my ($population, $results) = @_; + + my $Z = $population->{_bse_options}->{metallicity}; + my $M = $population->{_grid_options}{progenitor_hash}{m}; + $results->{$Z}//={}; + + while(1) + { + # subsequent calls to tbse_line contain + # (references to) arrays of data + my $la = $population->tbse_line(); + + # first element is the "header" line + my $header = shift @$la; + + # break out of the look if this is 'fin' + last if ($header eq 'fin'); + + # check if $header matches one of your + # expected data lines, if so, act + if($header eq 'FABIAN_COSMOLOGY') + { + # matched MY_STELLAR_DATA header + # + # ... so do stuff with $la.You have to + # enable a line in binary_c which outputs + # the mass, the probability and the timestep + # (see log_every_timestep.c for examples) + # and starts with MY_STELLAR_DATA. + # + $results->{$Z}->{$M} = [@$la]; + } + } +} + +############################################################ + +sub output +{ + my $population = shift; + + # $results is a hash reference containing + # the results that were added up in parse_data() + my $results = $population->results; + + # output the mass distribution + + print OUT "# Z Minit McHe_final McCO_final Mcnuc_final M_final t_burn stellar_type\n"; + foreach my $Z (nsort grep {$_ != 'thread_number'} keys %{$results}) + { + foreach my $M (nsort keys %{$results->{$Z}}) + { + print OUT join(' ',@{$results->{$Z}->{$M}},"\n"); + } + } +} diff --git a/src/perl/scripts2/slurmtest.pl b/src/perl/scripts2/slurmtest.pl index 0ea972f713aac505917fe77cc8784fbd956432a1..9e019aa34625367457e0f570160ab0fd6f640c18 100755 --- a/src/perl/scripts2/slurmtest.pl +++ b/src/perl/scripts2/slurmtest.pl @@ -185,9 +185,13 @@ $population->set( slurm_njobs=>40, # number of jobs slurm_dir=>'/users/ri0005/data/slurm', # working directory for scripts etc. slurm_memory=>256, # RAM (MB) per job + slurm_warn_max_memory=>1024, # warn at 1GB + slurm_ntasks=>1, # 1 CPU required per job slurm_postpone_join=>0, # if 1 do not join on slurm, join elsewhere slurm_partition=>'all', # MUST be defined slurm_jobname=>'binary_grid', # not required but useful + slurm_use_all_node_CPUs=>0, # if given nodes, set to 1 + # if given CPUs, set to 0 ); # evolution the stellar population (this takes some time) diff --git a/src/perl/scripts2/yield_vs_time.pl b/src/perl/scripts2/yield_vs_time.pl index 5f4f145fef6fe4c8d3db51b0340b6de95f4c30dd..4b6afb82c78f5601df53b3b14aa266c3490d9489 100755 --- a/src/perl/scripts2/yield_vs_time.pl +++ b/src/perl/scripts2/yield_vs_time.pl @@ -34,6 +34,8 @@ my $nthreads = MAX(1,ncpus()); # population object my $population = binary_grid2->new(defaults(),nthreads=>$nthreads); +#print $population->evcode_version_string(); + # set up the population local_setup($population); diff --git a/src/reset_timeout.c b/src/reset_timeout.c index d25142c109738386315f7fc1d50f9301ad4abf96..d738c21d99303d87f7fce65f1f17ffb7f1b0166a 100644 --- a/src/reset_timeout.c +++ b/src/reset_timeout.c @@ -38,7 +38,7 @@ void reset_binary_c_timeout(void) tv.tv_usec=0; value.it_value=tv; value.it_interval=tv; - if(setitimer(ITIMER_VIRTUAL,&value,0) == -1) + if(unlikely(setitimer(ITIMER_VIRTUAL,&value,0) == -1)) { Exit_binary_c_no_stardata(TIMED_OUT, "Failed to allocate virtual timer"); diff --git a/src/setup/argument_setting_functions.c b/src/setup/argument_setting_functions.c index 76c05e461ae064ec42707ef68b22bbb81e3d49d1..b7f50de5453e9150950a9f7813912263d4521812 100644 --- a/src/setup/argument_setting_functions.c +++ b/src/setup/argument_setting_functions.c @@ -315,10 +315,19 @@ double set_metallicity(ARG_SUBROUTINE_DECLARATION) (*c)++; stardata->common.metallicity = atof(argv[*c]); } + /* + * Set other metallicities if they haven't been set manually + */ #ifdef NUCSYN if(stardata->common.nucsyn_metallicity<-0.5) + { stardata->common.nucsyn_metallicity=stardata->common.metallicity; -#endif + } +#endif//NUCSYN + if(stardata->common.effective_metallicity<-0.5) + { + stardata->common.effective_metallicity = stardata->common.metallicity; + } Clamp(stardata->common.metallicity,1e-4,0.03); return stardata->common.metallicity; } diff --git a/src/setup/cmd_line_args.h b/src/setup/cmd_line_args.h index f0d54686d9897e05f34d87a581ab729bbc5bc74f..a20de4900a19cca92785c0b05e45386aec9416f7 100644 --- a/src/setup/cmd_line_args.h +++ b/src/setup/cmd_line_args.h @@ -1,3 +1,4 @@ +#pragma once #ifndef BINARY_C_CMD_LINE_ARGS_H #define BINARY_C_CMD_LINE_ARGS_H @@ -329,6 +330,16 @@ struct cmd_line_arg_t &set_metallicity, \ 1.0 \ } , \ +BATCHMODE_ARGS \ +{ \ + ARG_SECTION_STARS, \ + "effective_metallicity", \ + "This sets effective metallicity of stars. If not set, is just the same as metallicity. This \"effective\" metallicity is used in, say, mass-loss routines.", \ + ARG_FLOAT, \ + "0.02", \ + EFFECTIVE_METALLICITY_VAR, \ + 1.0 \ + }, \ { \ ARG_SECTION_STARS, \ "M_1", \ @@ -420,6 +431,16 @@ struct cmd_line_arg_t 1.0 \ }, \ \ +{ \ + ARG_SECTION_BINARY, \ + "disc_timestep_factor", \ + "Factor that multiplies the natural timestep of a disc.", \ + ARG_FLOAT, \ + "0", \ + DISC_TIMESTEP_FACTOR_VAR, \ + 1.0 \ + }, \ + \ { \ ARG_SECTION_BINARY, \ "cbdisc_mass_loss_inner_viscous_accretion_method", \ @@ -430,6 +451,66 @@ struct cmd_line_arg_t 1.0 \ }, \ \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_inner_edge_stripping", \ + "If 1, allow inner edge mass stripping.", \ + ARG_INTEGER , \ + "0", \ + CBDISC_INNER_EDGE_STRIPPING_VAR, \ + 1.0 \ + }, \ + \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_outer_edge_stripping", \ + "If 1, allow outer edge mass stripping.", \ + ARG_INTEGER , \ + "0", \ + CBDISC_OUTER_EDGE_STRIPPING_VAR, \ + 1.0 \ + }, \ + \ +{ \ + ARG_SECTION_BINARY, \ + "disc_n_monte_carlo_guesses", \ + "Number of monte carlo guesses to try in the disc solver if the normal list of guesses fails (0).", \ + ARG_INTEGER , \ + "0", \ + DISC_N_MONTE_CARLO_GUESSES_VAR, \ + 1.0 \ + }, \ + \ +{ \ + ARG_SECTION_BINARY, \ + "disc_log", \ + "If 1, turn on the disc log. Requires DISC_LOG to be defined on build.", \ + ARG_INTEGER , \ + "0", \ + DISC_LOG_VAR, \ + 1.0 \ + }, \ + \ +{ \ + ARG_SECTION_BINARY, \ + "disc_log2d", \ + "If 1, turn on the 2d disc log. Requires DISC_LOG to be defined on build.", \ + ARG_INTEGER , \ + "0", \ + DISC_LOG2D_VAR, \ + 1.0 \ + }, \ + \ +{ \ + ARG_SECTION_BINARY, \ + "disc_log_dt", \ + "If non-zero, only allows disc log output every disc_log_dt Myr.", \ + ARG_FLOAT , \ + "0", \ + DISC_LOG_DT_VAR, \ + 1.0 \ + }, \ + \ { \ ARG_SECTION_BINARY, \ "cbdisc_eccentricity_pumping_method", \ @@ -450,6 +531,36 @@ struct cmd_line_arg_t 1.0 \ }, \ \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_inner_edge_stripping_timescale", \ + "Defines the timescale for mass loss from by inner edge stripping. 0 = instant, 1 = very long, 2 = viscous at Revap_in, 3 = orbital at Revap_in.", \ + ARG_INTEGER , \ + "0", \ + CBDISC_INNER_EDGE_TIMESCALE_VAR, \ + 1.0 \ + }, \ + \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_outer_edge_stripping_timescale", \ + "Defines the timescale for mass loss from by outer edge stripping. 0 = instant, 1 = very long, 2 = viscous at Revap_in, 3 = orbital at Revap_out.", \ + ARG_INTEGER , \ + "0", \ + CBDISC_OUTER_EDGE_TIMESCALE_VAR, \ + 1.0 \ + }, \ + \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_viscous_L2_coupling", \ + "Set to 1 to turn on viscous-L2-loss coupling in circumbinary discs. Requires DISCS. 0 = off.", \ + ARG_INTEGER , \ + "0", \ + CBDISC_VISCOUS_L2_COUPLING_VAR, \ + 1.0 \ + }, \ + \ { \ ARG_SECTION_BINARY, \ "gravitational_radiation_model", \ @@ -530,11 +641,20 @@ struct cmd_line_arg_t }, \ { \ ARG_SECTION_MISC, \ - "random_seed", \ + "random_seed", \ "Random number seed, usually a (possibly negative) integer. Useful for exactly reproducing the evolution of a system which involves a kick (which is a Monte-Carlo, i.e. pseudorandom, process)." , \ ARG_LONG_INTEGER, \ "1", \ - &(stardata->preferences->cmd_line_random_seed), \ + &(stardata->preferences->cmd_line_random_seed), \ + 1.0 \ + } , \ +{ \ + ARG_SECTION_MISC, \ + "idum", \ + "[NB: deprecated, please use 'random_seed' instead.] Random number seed, usually a (possibly negative) integer. Useful for exactly reproducing the evolution of a system which involves a kick (which is a Monte-Carlo, i.e. pseudorandom, process)." , \ + ARG_LONG_INTEGER, \ + "1", \ + &(stardata->preferences->cmd_line_random_seed), \ 1.0 \ } , \ { \ @@ -585,7 +705,7 @@ struct cmd_line_arg_t { \ ARG_SECTION_STARS, \ "wind_mass_loss", \ - "A parameter to activate (1) or deactivate (0) stellar winds.", \ + "Defines the algorithm used for stellar winds. 0 = none, 1 = Hurley et al. (2002), 2 = Schneider (2018).", \ ARG_INTEGER , \ "0", \ &(stardata->preferences->wind_mass_loss), \ @@ -619,6 +739,24 @@ struct cmd_line_arg_t &(stardata->preferences->magnetic_braking_factor), \ 1.0 \ }, \ +{ \ + ARG_SECTION_STARS, \ + "magnetic_braking_gamma", \ + "gamma factor in Rappaport style magnetic braking expression.", \ + ARG_FLOAT , \ + "3.0", \ + &(stardata->preferences->magnetic_braking_gamma), \ + 1.0 \ + }, \ +{ \ + ARG_SECTION_STARS, \ + "magnetic_braking_algorithm", \ + "Algorithm for the magnetic braking angular momentum loss rate. 0 = Hurley et al. 2002, 1 = Andronov, Pinnsonneault and Sills 2003, 2 = Barnes and Kim 2010 ", \ + ARG_INTEGER, \ + "1", \ + &(stardata->preferences->magnetic_braking_algorithm), \ + 1.0 \ + }, \ { \ ARG_SECTION_STARS, \ "gb_reimers_eta", \ @@ -1232,6 +1370,15 @@ struct cmd_line_arg_t &(stardata->preferences->max_tpagb_core_mass), \ 1.0 \ }, \ +{ \ + ARG_SECTION_STARS, \ + "minimum_helium_ignition_core_mass", \ + "Minimum helium core mass required to ignite helium in the case that the hydrogen envelope is stripped on the giant branch, e.g. to make an sdB or sdO star. Typically 0.4, if 0.0 then the BSE algorithm (based on the total mass) is used.", \ + ARG_FLOAT , \ + "0.4", \ + &(stardata->preferences->minimum_helium_ignition_core_mass), \ + 1.0 \ + }, \ { \ ARG_SECTION_STARS, \ "minimum_mass_for_carbon_ignition", \ @@ -1262,7 +1409,7 @@ struct cmd_line_arg_t { \ ARG_SECTION_STARS, \ "chandrasekhar_mass", \ - "The Chandrasekahr mass, usually 1.44Msun", \ + "The Chandrasekhar mass, usually 1.44Msun", \ ARG_FLOAT , \ "1.44", \ &(stardata->preferences->chandrasekhar_mass), \ @@ -1403,6 +1550,33 @@ struct cmd_line_arg_t &(stardata->preferences->mass_accretion_for_eld), \ 1.0, \ }, \ +{ \ + ARG_SECTION_BINARY, \ + "type_Ia_MCh_supernova_algorithm", \ + "Algorithm to be used when calculating type Ia yields from Chandrasekhar-mass exploders. 0 = DD7 (Iwamoto 1999), 1 = Seitenzahl 2013 3D hydro yields (you must also set Seitenzahl2013_model) ", \ + ARG_INTEGER , \ + "0", \ + NUCSYN_TYPE_IA_MCH_SUPERNOVA_ALGORITHM_VAR, \ + 1.0, \ + }, \ +{ \ + ARG_SECTION_BINARY, \ + "Seitenzahl2013_model", \ + "Which of Seitenzahl et al. 2013's models to use? One of N1,N3,N5,N10,N20,N40,N100L,N100,N100H,N150,N200,N300C,N1600,N1600C,N100_Z0.5,N100_Z0.1,N100_Z0.01 (defaults to N100).", \ + ARG_STRING , \ + "N1", \ + NUCSYN_SEITENZAHL2013_VAR, \ + 1.0, \ + }, \ +{ \ + ARG_SECTION_BINARY, \ + "type_Ia_sub_MCh_supernova_algorithm", \ + "Algorithm to be used when calculating type Ia yields from sub-Chandrasekhar-mass exploders. (Currently unused.)", \ + ARG_INTEGER , \ + "0", \ + NUCSYN_TYPE_IA_SUB_MCH_SUPERNOVA_ALGORITHM_VAR, \ + 1.0, \ + }, \ { \ ARG_SECTION_BINARY, \ "max_HeWD_mass", \ @@ -1484,6 +1658,24 @@ struct cmd_line_arg_t NUCSYN_YIELDS_LOGTIMES_VAR, \ 1.0, \ }, \ +{ \ + ARG_SECTION_MISC, \ + "reverse_time", \ + "Make time go backwards. To be considered very experimental!", \ + ARG_BOOLEAN , \ + "0", \ + REVERSE_TIME_VAR, \ + 1.0, \ + }, \ +{ \ + ARG_SECTION_MISC, \ + "start_time", \ + "Start time for the simulation.", \ + ARG_FLOAT , \ + "0", \ + &(stardata->preferences->start_time), \ + 1.0, \ + }, \ { \ ARG_SECTION_OUTPUT, \ "CEMP_logg_maximum", \ @@ -2088,6 +2280,15 @@ struct cmd_line_arg_t CBDISC_KAPPA_VAR, \ 1.0, \ }, \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_minimum_evaporation_timescale", \ + "Circumbinary disc minimum evaporation timescale (years). If (slow, not edge stripped) mass loss would evaporate the disc on a timescale less than this, simply evaporate the disc immediated. Usually set to 1y, ignore if zero. Requires DISCS.", \ + ARG_FLOAT , \ + "0", \ + CBDISC_MINIMUM_EVAPORATION_TIMESCALE_VAR, \ + 1.0, \ + }, \ { \ ARG_SECTION_BINARY, \ "cbdisc_torquef", \ @@ -2097,6 +2298,33 @@ struct cmd_line_arg_t CBDISC_TORQUEF_VAR, \ 1.0, \ }, \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_max_lifetime", \ + "Circumbinary disc maximum lifetime (years, ignored if 0). Requires DISCS.", \ + ARG_FLOAT , \ + "0", \ + CBDISC_MAX_LIFETIME_VAR, \ + 1.0, \ + }, \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_init_dM", \ + "On cbdisc start, reduce mass by a fraction dM if it won't converge. Requires DISCS.", \ + ARG_FLOAT , \ + "0.1", \ + CBDISC_START_DM_VAR, \ + 1.0, \ + }, \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_init_dJdM", \ + "On cbdisc start, reduce angular momentum by a fraction dJ/dM*dM if it won't converge. Requires DISCS.", \ + ARG_FLOAT , \ + "0.1", \ + CBDISC_START_DJDM_VAR, \ + 1.0, \ + }, \ { \ ARG_SECTION_BINARY, \ "cbdisc_mass_loss_constant_rate", \ @@ -2151,6 +2379,15 @@ struct cmd_line_arg_t CBDISC_MASS_LOSS_INNER_VISCOUS_MULTIPLIER_VAR, \ 1.0, \ }, \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier", \ + "Circumbinary disc inner edge viscous angular momentum multiplier (no units). The inner edge angular momentum Requires DISCS.", \ + ARG_FLOAT , \ + "1", \ + CBDISC_MASS_LOSS_INNER_VISCOUS_ANGULAR_MOMENTUM_MULTIPLIER_VAR, \ + 1.0, \ + }, \ { \ ARG_SECTION_BINARY, \ "cbdisc_resonance_multiplier", \ @@ -2169,6 +2406,15 @@ struct cmd_line_arg_t CBDISC_RESONANCE_DAMPING_VAR, \ 1.0, \ }, \ +{ \ + ARG_SECTION_BINARY, \ + "cbdisc_fail_ring_inside_separation", \ + "While converging on a structure, circumbinary discs with Rring < the binary separation are immediately failed.", \ + ARG_INTEGER, \ + "0", \ + CBDISC_FAIL_RING_INSIDE_SEPARATION, \ + 1.0, \ + }, \ { \ ARG_SECTION_BINARY, \ "cbdisc_mass_loss_inner_L2_cross_multiplier", \ @@ -2323,6 +2569,15 @@ struct cmd_line_arg_t &(stardata->preferences->RLOF_method), \ 1.0 \ }, \ +{ \ + ARG_SECTION_STARS, \ + "small_envelope_method", \ + "Choose the method used to determine the stellar radius when the envelope mass is very thin. 0 = Hurley et al. (2002), 1 = Miller Bertolami et al. (2016+) for GB and AGB stars only.", \ + ARG_INTEGER , \ + "0", \ + &(stardata->preferences->small_envelope_method), \ + 1.0 \ + }, \ { \ ARG_SECTION_BINARY, \ "RLOF_interpolation_method", \ @@ -3019,7 +3274,7 @@ struct cmd_line_arg_t { \ ARG_SECTION_OUTPUT, \ "version", \ - "Display binary_c version number.", \ + "Display binary_c version and build information. Also performs timing tests.", \ ARG_SUBROUTINE, \ "Ignore", \ &binary_c_version_internal, \ @@ -3037,7 +3292,7 @@ struct cmd_line_arg_t { \ ARG_SECTION_OUTPUT, \ "version_only", \ - "Display binary_c version number.", \ + "Display binary_c version number and build information, but do not perform timing tests or anything that requires stardata to be non-NULL.", \ ARG_SUBROUTINE, \ "Ignore", \ &version_only, \ @@ -3071,6 +3326,34 @@ struct cmd_line_arg_t 1.0 \ }, \ \ +{ \ + ARG_SECTION_STARS, \ + "speedtests", \ + "Turns on speedtests during version information (off by default).", \ + ARG_INTEGER , \ + "0", \ + &(stardata->preferences->speedtests), \ + 1.0 \ + }, \ + \ +{ \ + ARG_SECTION_STARS, \ + "carbon_burning", \ + "Set to 1 to simulate carbon burning.\n", \ + ARG_BOOLEAN, \ + "0", \ + CARBON_BURNING_VAR, \ + 1.0 \ + }, \ +{ \ + ARG_SECTION_STARS, \ + "carbon_burning_lifetime", \ + "Carbon burning lifetime.\n", \ + ARG_FLOAT, \ + "0", \ + CARBON_BURNING_LIFETIME_VAR, \ + 1.0 \ + }, \ { /* this must come last! */ \ 0, \ NULL, \ diff --git a/src/setup/cmd_line_function_macros.h b/src/setup/cmd_line_function_macros.h index ee3b5062a06c664f6a9621a78deaa2118203a6a6..4dcbe27efff6c4e3c972183f4be7b069ea1c34cf 100644 --- a/src/setup/cmd_line_function_macros.h +++ b/src/setup/cmd_line_function_macros.h @@ -1,3 +1,4 @@ +#pragma once #ifndef CMD_LINE_FUNCTION_MACROS_H #define CMD_LINE_FUNCTION_MACROS_H @@ -108,14 +109,16 @@ #define Arg_set_boolean_true Arg_set_boolean(TRUE) #define Arg_set_boolean_false Arg_set_boolean(FALSE) -#define Arg_set_string \ - { \ - strlcpy(cmd_line_args[i].pointer, \ - argv[++c], \ - (size_t)STRING_LENGTH); \ - Cprint("Set %s to %s\n", \ - cmd_line_args[i].name, \ - cmd_line_args[i].pointer); \ +#define Arg_set_string \ + { \ + strlcpy(cmd_line_args[i].pointer, \ + argv[++c], \ + (size_t)STRING_LENGTH); \ + Cprint("Set \"%s\" from \"%s\" to \"%s\" or \"%s\"\n", \ + (char*)cmd_line_args[i].name, \ + (char*)argv[c], \ + (char*)cmd_line_args[i].pointer, \ + stardata->preferences->Seitenzahl2013_model); \ } #define Arg_call_subroutine \ diff --git a/src/setup/cmd_line_macros.h b/src/setup/cmd_line_macros.h index cc0e3b9c192d5497c8b50da740d61a2c028be0ab..22cc6fc49823620ebc7227994e36f02abe69452c 100644 --- a/src/setup/cmd_line_macros.h +++ b/src/setup/cmd_line_macros.h @@ -1,4 +1,6 @@ - +#pragma once +#ifndef CMD_LINE_MACROS_H +#define CMD_LINE_MACROS_H /* * Define macros that depend on code build options @@ -124,6 +126,8 @@ #define VROT_2_VAR NULL #endif +#define EFFECTIVE_METALLICITY_VAR &(stardata->common.effective_metallicity) + #ifdef WD_KICKS #define WD_SIGMA_VAR &(stardata->preferences->sn_kick_dispersion[SN_WDKICK]) #define WD_KICK_DIRECTION_VAR &(stardata->preferences->wd_kick_direction) @@ -164,6 +168,10 @@ #define NUCSYN_HBBTFAC_VAR &(stardata->preferences->hbbtfac) #define NUCSYN_DELTA_MCMIN_VAR &(stardata->preferences->delta_mcmin) #define INITIAL_ABUNDANCE_MIX_VAR &(stardata->preferences->initial_abundance_mix) +#define NUCSYN_TYPE_IA_MCH_SUPERNOVA_ALGORITHM_VAR &(stardata->preferences->type_Ia_MCh_supernova_algorithm) +#define NUCSYN_TYPE_IA_SUB_MCH_SUPERNOVA_ALGORITHM_VAR &(stardata->preferences->type_Ia_sub_MCh_supernova_algorithm) +#define NUCSYN_SEITENZAHL2013_VAR &(stardata->preferences->Seitenzahl2013_model) + #else #define NUCSYN_METALLICITY_VAR NULL @@ -177,7 +185,9 @@ #define NUCSYN_HBBTFAC_VAR NULL #define NUCSYN_DELTA_MCMIN_VAR NULL #define INITIAL_ABUNDANCE_MIX_VAR NULL - +#define NUCSYN_TYPE_IA_MCH_SUPERNOVA_ALGORITHM_VAR NULL +#define NUCSYN_TYPE_IA_SUB_MCH_SUPERNOVA_ALGORITHM_VAR NULL +#define NUCSYN_SEITENZAHL2013_VAR NULL #endif #if (defined NUCSYN) && (defined LITHIUM_TABLES) @@ -280,12 +290,33 @@ #endif #ifdef DISCS +#ifdef DISC_LOG +#define DISC_LOG_VAR &(stardata->preferences->disc_log) +#define DISC_LOG2D_VAR &(stardata->preferences->disc_log2d) +#define DISC_LOG_DT_VAR &(stardata->preferences->disc_log_dt) +#else +#define DISC_LOG_VAR NULL +#define DISC_LOG2D_VAR NULL +#define DISC_LOG_DT_VAR NULL +#endif//DISC_LOG + +#define DISC_TIMESTEP_FACTOR_VAR &(stardata->preferences->disc_timestep_factor) +#define DISC_N_MONTE_CARLO_GUESSES_VAR &(stardata->preferences->disc_n_monte_carlo_guesses) #define CBDISC_GAMMA_VAR &(stardata->preferences->cbdisc_gamma) +#define CBDISC_MAX_LIFETIME_VAR &(stardata->preferences->cbdisc_max_lifetime) #define CBDISC_ALPHA_VAR &(stardata->preferences->cbdisc_alpha) #define CBDISC_KAPPA_VAR &(stardata->preferences->cbdisc_kappa) #define CBDISC_TORQUEF_VAR &(stardata->preferences->cbdisc_torqueF) +#define CBDISC_START_DM_VAR &(stardata->preferences->cbdisc_init_dM) +#define CBDISC_START_DJDM_VAR &(stardata->preferences->cbdisc_init_dJdM) +#define CBDISC_OUTER_EDGE_STRIPPING_VAR &(stardata->preferences->cbdisc_outer_edge_stripping) +#define CBDISC_INNER_EDGE_STRIPPING_VAR &(stardata->preferences->cbdisc_inner_edge_stripping) +#define CBDISC_OUTER_EDGE_TIMESCALE_VAR &(stardata->preferences->cbdisc_outer_edge_stripping_timescale) +#define CBDISC_INNER_EDGE_TIMESCALE_VAR &(stardata->preferences->cbdisc_inner_edge_stripping_timescale) + #define CBDISC_MASS_LOSS_RATE_VAR &(stardata->preferences->cbdisc_mass_loss_constant_rate) #define CBDISC_MASS_LOSS_INNER_VISCOUS_MULTIPLIER_VAR &(stardata->preferences->cbdisc_mass_loss_inner_viscous_multiplier) +#define CBDISC_MASS_LOSS_INNER_VISCOUS_ANGULAR_MOMENTUM_MULTIPLIER_VAR &(stardata->preferences->cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier) #define CBDISC_MASS_LOSS_INNER_L2_CROSS_MULTIPLIER_VAR &(stardata->preferences->cbdisc_mass_loss_inner_L2_cross_multiplier) #define CBDISC_MASS_LOSS_ISM_RAM_PRESSURE_MULTIPLIER_VAR &(stardata->preferences->cbdisc_mass_loss_ISM_ram_pressure_multiplier) #define CBDISC_MASS_LOSS_ISM_PRESSURE_VAR &(stardata->preferences->cbdisc_mass_loss_ISM_pressure) @@ -295,9 +326,11 @@ #define CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD_VAR &(stardata->preferences->cbdisc_mass_loss_inner_viscous_accretion_method) #define CBDISC_RESONANCE_MULTIPLIER_VAR &(stardata->preferences->cbdisc_resonance_multiplier) #define CBDISC_RESONANCE_DAMPING_VAR &(stardata->preferences->cbdisc_resonance_damping) +#define CBDISC_FAIL_RING_INSIDE_SEPARATION &(stardata->preferences->cbdisc_fail_ring_inside_separation) #define CBDISC_MASS_LOSS_FUV_MULTIPLIER_VAR &(stardata->preferences->cbdisc_mass_loss_FUV_multiplier) #define CBDISC_MASS_LOSS_XRAY_MULTIPLIER_VAR &(stardata->preferences->cbdisc_mass_loss_Xray_multiplier) #define CBDISC_VISCOUS_PHOTOEVAPORATION_COUPLING_VAR &(stardata->preferences->cbdisc_viscous_photoevaporation_coupling) +#define CBDISC_VISCOUS_L2_COUPLING_VAR &(stardata->preferences->cbdisc_viscous_L2_coupling) #ifdef DISCS_CIRCUMBINARY_FROM_COMENV #define COMENV_DISC_ANGMOM_FRACTION_VAR &(stardata->preferences->comenv_disc_angmom_fraction) @@ -315,13 +348,23 @@ #define WIND_DISC_MASS_FRACTION_VAR NULL #endif // DISCS_CIRCUMBINARY_FROM_WIND +#define CBDISC_MINIMUM_EVAPORATION_TIMESCALE_VAR &(stardata->preferences->cbdisc_minimum_evaporation_timescale) + #else // DISCS +#define DISC_LOG_VAR NULL +#define DISC_LOG_DT_VAR NULL +#define DISC_TIMESTEP_FACTOR_VAR NULL +#define DISC_N_MONTE_CARLO_GUESSES_VAR NULL #define CBDISC_GAMMA_VAR NULL +#define CBDISC_MAX_LIFETIME_VAR NULL #define CBDISC_ALPHA_VAR NULL #define CBDISC_KAPPA_VAR NULL #define CBDISC_TORQUEF_VAR NULL +#define CBDISC_START_DM_VAR NULL +#define CBDISC_START_DJDM_VAR NULL #define CBDISC_MASS_LOSS_RATE_VAR NULL #define CBDISC_MASS_LOSS_INNER_VISCOUS_MULTIPLIER_VAR NULL +#define CBDISC_MASS_LOSS_INNER_VISCOUS_ANGULAR_MOMENTUM_MULTIPLIER_VAR NULL #define CBDISC_MASS_LOSS_INNER_L2_CROSS_MULTIPLIER_VAR NULL #define CBDISC_MASS_LOSS_ISM_RAM_PRESSURE_MULTIPLIER_VAR NULL #define CBDISC_MASS_LOSS_ISM_PRESSURE_VAR NULL @@ -338,6 +381,17 @@ #define CBDISC_RESONANCE_MULTIPLIER_VAR NULL #define CBDISC_RESONANCE_DAMPING_VAR NULL #define CBDISC_VISCOUS_PHOTOEVAPORATION_COUPLING_VAR NULL +#define CBDISC_VISCOUS_L2_COUPLING_VAR NULL +#define CBDISC_FAIL_RING_INSIDE_SEPARATION NULL +#define CBDISC_OUTER_EDGE_STRIPPING_VAR NULL +#define CBDISC_INNER_EDGE_STRIPPING_VAR NULL +#define CBDISC_OUTER_EDGE_TIMESCALE_VAR NULL +#define CBDISC_INNER_EDGE_TIMESCALE_VAR NULL +#define CBDISC_MINIMUM_EVAPORATION_TIMESCALE_VAR NULL +#define DISC_LOG_VAR NULL +#define DISC_LOG2D_VAR NULL +#define DISC_LOG_DT_VAR NULL + #endif // DISCS @@ -428,3 +482,20 @@ #define ANGELOU_LITHIUM_VROTFRAC_TRIGGER_VAR NULL #endif + +#ifdef CARBON_BURNING +#define CARBON_BURNING_VAR &(stardata->preferences->carbon_burning) +#define CARBON_BURNING_LIFETIME_VAR &(stardata->preferences->carbon_burning_lifetime) +#else +#define CARBON_BURNING_VAR NULL +#define CARBON_BURNING_LIFETIME_VAR NULL +#endif // CARBON_BURNING + +#ifdef REVERSE_TIME +#define REVERSE_TIME_VAR &(stardata->preferences->reverse_time) +#else +#define REVERSE_TIME_VAR NULL +#endif + + +#endif// CMD_LINE_MACROS_H diff --git a/src/setup/metallicity_data.h b/src/setup/metallicity_data.h index 9b3ffb9c522da22feb9aa82c82cdcd4e89c1db2c..4adcc400b7417a5aada74b7a96f9a6a7d7795a14 100644 --- a/src/setup/metallicity_data.h +++ b/src/setup/metallicity_data.h @@ -1,3 +1,8 @@ +#pragma once +#ifndef METALLICITY_DATA_H +#define METALLICITY_DATA_H + + /** Metallicity data originally taken from zdata.f **/ /* data for Lzams(1->35) and Rzams(36->76) */ @@ -50,3 +55,4 @@ */ #define R_AGB_DATA {0.03, 0.166228178401863, 0.464172670346712, 0.827105426484826, 0.955222187633753, 1.48198352252597, 0.340585629839457, 2.30595357804208, 0.543838869374733, 1.37937761917988, -0.204979382507066, 1.00186288378754, 1.16215242264799, 1.22670618958354, 0.266542676922744, 1.56691223551733, 0.491362686510494}, {0.02, 0.382721503094856, 0.397, 0.755037258540173, 0.980079527342624, 1.125124, 0.3349489, 1.467794, 0.4658512, 1.110866, -0.1584333, 0.8264782265, 0.892760248256232, 0.9960283, 0.2561062, 1.157338, 0.4022765}, {0.01, 0.464801706052092, 0.35818976100251, 0.733013528321984, 0.990014224018726, 0.991929250383952, 0.3381932323582, 1.26412906577502, 0.450802083053889, 1.00929880460779, -0.137126252077866, 0.772395876985914, 0.794489013495642, 0.91241179272028, 0.231352469618528, 1.02539654487701, 0.38056822011598}, {0.004, 0.18101, 0.454109220692818, 0.792399926752767, 0.972228664242821, 1.18789479280797, 0.32674745038804, 1.79381896456655, 0.512200257343766, 1.13114460906483, -0.149793382601247, 0.88207384399123, 0.969403841301502, 1.01636241173003, 0.196650275278848, 1.32709823458959, 0.44679074372037}, {0.001, 0.014, 0.54, 0.970733461153508, 0.94720705100323, 1.1961285228005, 0.23277396568705, 2.01067271024292, 0.491502011307212, 1.20719289850457, -0.14111695037313, 0.979006002544324, 1.04089389501598, 1.08823809352717, 0.160963435616414, 1.57364028915114, 0.444000019097996}, {0.0003, 0.043200850143187, 0.54, 0.820837395811517, 0.951945505329554, 1.07198109475085, 0.152255145097621, 1.45484736860748, 0.293992104075501, 1.08330122587662, -0.0937729276746248, 0.930597567886531, 0.97787639225902, 1.01995033949076, 0.148486622527464, 1.19586349883338, 0.270576743662738}, {0.0001, 0.121255096057148, 0.54, 0.715978531081962, 0.977739750612989, 2.76398339541116, 0.261199534900665, 0.953069432918553, 0.155321605757471, 0.973679226231027, -0.0740566653969604, 0.8492355315336, 0.864028560375738, 0.921960958280271, 0.133278165602687, 0.948701334996086, 0.177744654190284} +#endif // METALLICITY_DATA_H diff --git a/src/setup/new_system.c b/src/setup/new_system.c index deea65ff1bfe612dba53e39474b075efcd3893ee..4bc3d8d3f06dd11b8e9342160e4eeb8a420a130a 100644 --- a/src/setup/new_system.c +++ b/src/setup/new_system.c @@ -36,6 +36,7 @@ void new_system(struct stardata_t ** new_stardata, * Do main allocations of new_stardata, previous_stardata * and set up pointers. Also reset the preferences struct. */ + check_nans_are_signalled(); struct stardata_t * MAYBE_UNUSED stardata = *new_stardata; dprint(*new_stardata, "call main_allocations : new_stardata=%p *new_stardata=%p\n", @@ -46,7 +47,6 @@ void new_system(struct stardata_t ** new_stardata, preferences, store); - Star_number k; STARLOOP(k) { diff --git a/src/setup/idum.c b/src/setup/random_seed.c similarity index 99% rename from src/setup/idum.c rename to src/setup/random_seed.c index 3b63639bd4f87e6307ebf7191c603bf9fb2d29b9..59549b0d682416ae479cd560276bd01fa03e45b4 100644 --- a/src/setup/idum.c +++ b/src/setup/random_seed.c @@ -3,7 +3,6 @@ * Return a new random seed. */ - Random_seed random_seed(void) { Random_seed ret; diff --git a/src/setup/reset_preferences.c b/src/setup/reset_preferences.c index 9729dc1cdd571eaa85358239cd02a134efc0d619..18734f715a6a4ecd3c83705554e85689135b7682 100644 --- a/src/setup/reset_preferences.c +++ b/src/setup/reset_preferences.c @@ -43,7 +43,7 @@ void reset_preferences(struct preferences_t * RESTRICT preferences) preferences->lithium_hbb_multiplier=1.0; preferences->lithium_GB_post_1DUP=0.0; #endif - + strlcpy(preferences->Seitenzahl2013_model,"N100",4); #ifdef PRE_MAIN_SEQUENCE preferences->pre_main_sequence=FALSE; #endif @@ -80,6 +80,9 @@ void reset_preferences(struct preferences_t * RESTRICT preferences) preferences->wind_djorb_fac=1.0; preferences->gb_reimers_eta=REIMERS_ETA_DEFAULT; preferences->magnetic_braking_factor=1.0; + preferences->magnetic_braking_gamma=MAGNETIC_BRAKING_GAMMA_DEFAULT; + preferences->magnetic_braking_factor=1.0; + preferences->CRAP_parameter=CRAP_PARAMETER_DEFAULT; preferences->Bondi_Hoyle_accretion_factor = BONDI_HOYLE_ACCRETION_FACTOR_DEFAULT; preferences->vwind_multiplier=1.0/8.0; @@ -271,7 +274,9 @@ void reset_preferences(struct preferences_t * RESTRICT preferences) #ifdef RANDOM_SYSTEMS preferences->random_systems=FALSE; #endif - preferences->wind_mass_loss=TRUE; + + /* default to Hurley et al. (2002) mass loss prescription */ + preferences->wind_mass_loss=WIND_ALGORITHM_HURLEY2002; #ifdef FILE_LOG /* @@ -329,13 +334,20 @@ void reset_preferences(struct preferences_t * RESTRICT preferences) preferences->evolution_splitting_maxdepth = EVOLUTION_SPLITTING_MAX_SPLITDEPTH_DEFAULT; #endif #ifdef DISCS + preferences->disc_timestep_factor = 0.01; preferences->cbdisc_gamma = 5.0/3.0; + preferences->cbdisc_max_lifetime = 0.0; preferences->cbdisc_alpha = 0.01; preferences->cbdisc_kappa = 0.01; preferences->cbdisc_torqueF = 1.0; - + preferences->cbdisc_init_dM = 0.1; + preferences->cbdisc_init_dJdM = 0.5; + preferences->cbdisc_inner_edge_stripping = TRUE; + preferences->cbdisc_outer_edge_stripping = TRUE; + preferences->cbdisc_minimum_evaporation_timescale = YEAR_LENGTH_IN_SECONDS; preferences->cbdisc_mass_loss_constant_rate=0.0; preferences->cbdisc_mass_loss_inner_viscous_multiplier=0.0; + preferences->cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier=1.0; preferences->cbdisc_mass_loss_inner_L2_cross_multiplier=0.0; preferences->cbdisc_mass_loss_ISM_ram_pressure_multiplier=1.0; preferences->cbdisc_mass_loss_ISM_pressure=3000.0; @@ -350,4 +362,5 @@ void reset_preferences(struct preferences_t * RESTRICT preferences) #endif preferences->accretion_start_time=-1.0; preferences->accretion_end_time=-1.0; + } diff --git a/src/setup/setup_prototypes.h b/src/setup/setup_prototypes.h index 9240d008a3d500b0c92bdb682f5cce52acdc38f4..6666eae6133810606cd12425adcbcba3030d5f6a 100644 --- a/src/setup/setup_prototypes.h +++ b/src/setup/setup_prototypes.h @@ -1,11 +1,11 @@ +#pragma once +#ifndef SETUP_PROTOTYPES_H +#define SETUP_PROTOTYPES_H #include "../binary_c_macros.h" #include "../binary_c_parameters.h" #include "../binary_c_structures.h" #include "cmd_line_args.h" -#ifndef SETUP_PROTOTYPES_H -#define SETUP_PROTOTYPES_H - void set_up_variables(int argc, char **argv, struct preferences_t *preferences, @@ -51,6 +51,7 @@ void version_only(ARG_SUBROUTINE_DECLARATION); void dumpversion(ARG_SUBROUTINE_DECLARATION); void nucreacmult(ARG_SUBROUTINE_DECLARATION); double set_metallicity(ARG_SUBROUTINE_DECLARATION); +double set_effective_metallicity(ARG_SUBROUTINE_DECLARATION); void set_init_abund(ARG_SUBROUTINE_DECLARATION); void set_init_abund_mult(ARG_SUBROUTINE_DECLARATION); void set_init_abund_dex(ARG_SUBROUTINE_DECLARATION); diff --git a/src/setup/version.c b/src/setup/version.c index fdf0922991f62fc559d31835bfa949ab4571e56d..fadf80faa10f080904154000edd153b7931aa6f0 100644 --- a/src/setup/version.c +++ b/src/setup/version.c @@ -6,7 +6,7 @@ void version(struct stardata_t * RESTRICT stardata) { /***********************/ /* Version information */ - /***********************/ + /***********************/ PRINTF("\nBinary_c/nucsyn by Robert Izzard, originally based on BSE of Hurley, Pols, Tout, Aarseth.\nEmail izzard@astro.uni-bonn.de, rob.izzard@gmail.com\nVersion %s\nBuild: %s %s\n", BINARY_C_VERSION, __DATE__, @@ -75,6 +75,7 @@ void version(struct stardata_t * RESTRICT stardata) Macrotest(__clang__); Macrotest(__SUNPRO_C); Macrotest(__INTEL_COMPILER); + Macrotest(__STDC__); Macrotest(__STDC_VERSION__); #ifdef __STDC_VERSION__ Show_long_int_macro(__STDC_VERSION__); @@ -92,6 +93,10 @@ void version(struct stardata_t * RESTRICT stardata) Macrotest(_ISOC11_SOURCE); #ifdef _ISOC11_SOURCE Show_long_int_macro(_ISOC11_SOURCE); +#endif + Macrotest(_ISOC99_SOURCE); +#ifdef _ISOC11_SOURCE + Show_long_int_macro(_ISOC99_SOURCE); #endif #ifdef __BYTE_ORDER__ PRINTF("Byte order is %s endian\n", @@ -133,6 +138,7 @@ void version(struct stardata_t * RESTRICT stardata) Macrotest(FPU_CAPTURE_OVERFLOWS); Macrotest(FPU_CAPTURE_DIVIDE_BY_ZERO); Macrotest(NO_FPU_CONTROL); + Macrotest(CHECK_ISNAN_WORKS); Show_float_macro(ZERO); Show_float_macro(TINY); @@ -160,7 +166,7 @@ void version(struct stardata_t * RESTRICT stardata) Show_string_macro(GSL_ROOT_FSOLVER); Show_int_macro(GSL_INTEGRATOR_WORKSPACE_SIZE); - PRINTF("Size of : unsigned int %ld, short int %ld, int %ld, long int %ld, long long int %ld, float %ld, double %ld, long double %ld, char %ld, stardata_t %ld, preferences_t %ld, star_t %ld, common_t %ld, model_t %ld, diffstats_t %ld, probability_distribution_t %ld, RLOF_orbit_t %ld, store_t %ld, tmpstore_t %ld, data_table_t %ld, Random_seed %ld", + PRINTF("Size of : unsigned int %ld, short int %ld, int %ld, long int %ld, long long int %ld, float %ld, double %ld, long double %ld, char %ld, stardata_t %ld, preferences_t %ld, star_t %ld, common_t %ld, model_t %ld, diffstats_t %ld, probability_distribution_t %ld, RLOF_orbit_t %ld, store_t %ld, tmpstore_t %ld, data_table_t %ld, Random_seed %ld\n", (long int)sizeof(unsigned int), (long int)sizeof(int), (long int)sizeof(short int), @@ -212,8 +218,8 @@ void version(struct stardata_t * RESTRICT stardata) /* * Speed tests */ - #if defined TIMER && defined CPUFREQ && defined millisecond + if(stardata!=NULL && stardata->preferences->speedtests==1) { double * p = New_stardata; double * q = New_stardata; @@ -234,36 +240,149 @@ void version(struct stardata_t * RESTRICT stardata) Move_stardata(_s,(STARDATA1)); \ Safe_free(_s); \ } - + + /* + * nms is the number of milliseconds for which + * each speed test is carried out. + * + * This defaults to 100ms, but can be set using the + * NMS environment variable. + */ + int nms; + char * nmsstring = getenv("NMS"); + nms = nmsstring==NULL ? 100 : atoi(nmsstring); + PRINTF("Speed tests for %d milliseconds\n",nms); + fflush(stdout); + + /* + * Time function call using counter. + * Usage: + * Timeme(n,{...code block...}); + */ +#define Timeme(counter,...) \ + { \ + ticks t1 = getticks(); \ + if(t1!=0) \ + { \ + t1 += nms * millisecond; \ + while(getticks()<t1) \ + { \ + {__VA_ARGS__;} \ + (counter)++; \ + } \ + } \ + } +#define Speed_increase_pc(n1,n2) \ + 100.0*(1.0/n1 - 1.0/n2)/(1.0/MAX(n1,n2)) + /* * compare speed of memcpy to memmove */ -#define runtime(T0,T1) ((double)((T0)-(T1))/(1e6*((double)CPUFREQ)) + { + long int copy = 0, move = 0; + Timeme(copy,{Swap_stardatas_with_copy(p,q)}); + Timeme(move,{Swap_stardatas_with_move(p,q)}); + PRINTF("Speed of memcpy/speed of memmove = %g\n", + (double)move/(double)copy); + } + + /* + * Compare pow to fastPow + */ + { + int n=1000; + double lnx,dlnx = (log(DBL_MAX)-log(DBL_MIN))/(n-1); + for(lnx=log(DBL_MIN); + lnx<log(DBL_MAX); + lnx += dlnx) + { + double y = 10 * random_number(stardata,NULL); + double x = exp(lnx); + double _pow = pow(x,y); + double _fastpow = fastPow(x,y); + PRINTF("POWCHECK %g %g %g %g %g \n", + x, + y, + _pow, + _fastpow, + IS_REALLY_NOT_ZERO(_fastpow) ? (_pow / _fastpow) : 1.0); + } + } + + /* + * compare multiplication to division + */ + { + double x; + const double y=3.346182736,iy=1.0/y; + long int mult = 0, div = 0; + Timeme(mult,{x=random_number(stardata,NULL);x*=iy;}); + Timeme(div, {x=random_number(stardata,NULL);x/=y;}); + PRINTF("Speed of mult/div = %g\n",(double)mult/(double)div); + } + - int nms = 100; // test for 100ms - long int copy = 0, move = 0; - ticks t1 = getticks(); - if(t1!=0) - { - t1 += nms * millisecond; - while(getticks() < t1) - { - Swap_stardatas_with_copy(p,q); - copy++; - } - t1 = getticks() + nms * millisecond; - while(getticks() < t1) - { - Swap_stardatas_with_move(p,q); - move++; - } - - PRINTF("Speed of memcpy/speed of memmove = %g\n", - (double)move/(double)copy); - } + { + /* + * Compare log vs log10 operations + */ + long int __log = 0, __log10 = 0; + Timeme(__log,log(random_number(stardata,NULL))); + Timeme(__log10,log10(random_number(stardata,NULL))); + PRINTF("Speed of log/speed of log10 = %g\n", + (double)__log/(double)__log10); + } + + + { + /* + * Compare POW2,POW3,... to pow(x,2), pow(x,3), ... + */ + + + +#define powtest(n,...) \ + { \ + nPOW=npow=0; \ + Timeme(npow, \ + { \ + double __y = random_number(stardata,NULL); \ + double __x MAYBE_UNUSED = \ + pow(__y,(double)n); \ + } \ + ); \ + \ + Timeme(nPOW, \ + { \ + double __y = random_number(stardata,NULL); \ + double __x MAYBE_UNUSED = \ + POW##n(__y); \ + } \ + ); \ + printf("Speed of POW%d %ld vs pow(x,%d) %ld : speed increase %5.2f %%\n", \ + n, \ + nPOW, \ + n, \ + npow, \ + Speed_increase_pc(npow,nPOW) \ + ); \ + } + + long int nPOW=0,npow=0; + powtest(2); + powtest(3); + powtest(4); + powtest(5); + powtest(6); + powtest(7); + powtest(8); + powtest(9); + } + } -#endif +#endif // TIMER && CPUFREQ && millisecond + { struct rlimit limit; getrlimit (RLIMIT_STACK, &limit); @@ -290,12 +409,19 @@ void version(struct stardata_t * RESTRICT stardata) Macrotest(HAVE_MALLOC_USABLE_SIZE); Macrotest(CHECK_MEMCPY_ALIGNMENT); Show_string_macro(Malloc_usable_size); + Macrotest(TARGET_STACK_PROTECT_RUNTIME_ENABLED_P); Show_string_macro(STACK_SIZE); Macrotest(STACK_ACTION); Show_string_macro(STACK_ACTION); + Macrotest(STACK_CHECK_BUILTIN); + Macrotest(STACK_CHECK_STATIC_BUILTIN); Macrotest(STACK_CHECKS); Macrotest(BAN_UNSAFE_FUNCTIONS); - + Macrotest(MEMOIZE); + Macrotest(__HAVE_LIBMEMOIZE__); + Show_string_macro(MEMOIZE_VERSION); + Show_string_macro(MEMOIZE_HEADER_FILE); + if((int)sizeof(long int)==4) { PRINTF("Compiled for 32 bit architecture\n"); @@ -309,10 +435,19 @@ void version(struct stardata_t * RESTRICT stardata) PRINTF("Compiled for an architecture with an unknown number of bits\n"); } Macrotest(TIMER); + Macrotest(TIMER_USE_ASM); Macrotest(TIMER_PER_SYSTEM); Show_int_macro(TIMEOUT_SECONDS); Show_int_macro(TIMEOUT_SECONDS_WITH_VALGRIND); - + Macrotest(CPUFREQ); + Show_int_macro(CPUFREQ); + Macrotest(CLOCKS_PER_SEC); + Show_int_macro(CLOCKS_PER_SEC); + PRINTF("_SC_CLK_TCK = %g\n",(double)sysconf (_SC_CLK_TCK)); + + Macrotest(millisecond); + Show_float_macro(millisecond); + /* end of compiler/environment macros */ /************************************************************/ /* now come binary_c macros */ @@ -371,12 +506,14 @@ void version(struct stardata_t * RESTRICT stardata) "We use values to compare to Amanda's models\n"); Macrotest(BATCHMODE); Macrotest(NANCHECKS); + Macrotest(USE_NATIVE_ISNAN); Macrotest(UNROLL_NUCSYN_LOOPS); Macrotest(ROTATIONALLY_ENHANCED_MASS_LOSS); Macrotest(USE_2011_MASS_LOSS); Macrotest(USE_2012_MAIN_SEQUENCE_LIFETIMES_TABLE); Macrotest(MODULATE_TIMESTEP_TO_RESOLVE_ROTATION_MASS_LOSS); Show_float_macro(TIDAL_STRENGTH_FACTOR_DEFAULT); + Show_float_macro(MAGNETIC_BRAKING_GAMMA_DEFAULT); Show_float_macro(BETA); Show_float_macro(SPHERICAL_ANGMOM_ACCRETION_FACTOR); Show_float_macro(MINIMUM_STELLAR_ANGMOM); @@ -386,8 +523,9 @@ void version(struct stardata_t * RESTRICT stardata) Show_float_macro(UNDEFINED_ORBITAL_ANGULAR_FREQUENCY); Show_string_macro(ANGULAR_MOMENTUM_CGS); Show_float_macro(ANGULAR_MOMENTUM_CGS); - + Show_int_macro(BURN_IN_TIMESTEPS); Macrotest(TRIPLE); + Macrotest(REVERSE_TIME); Show_float_macro(NGTV); Show_float_macro(NGTV2); @@ -487,21 +625,69 @@ void version(struct stardata_t * RESTRICT stardata) Show_int_macro(DISCS_NUMBER_OF_POWER_LAWS); Show_int_macro(NDISCS); Show_int_macro(DISC_DEBUG); - Show_float_macro(DISC_MAX_AGE); - Show_float_macro(DISC_TIMESTEP_FACTOR); + Show_float_macro(DISC_MAX_LIFETIME); Show_float_macro(DISC_MIN_TIMESTEP); Show_float_macro(DISC_MAX_TIMESTEP); - Show_float_macro(DISC_MINIMUM_TIMESTEP); + Show_float_macro(DISC_STRIP_FRAC_M_INNER); + Show_float_macro(DISC_STRIP_FRAC_J_INNER); + Show_float_macro(DISC_STRIP_FRAC_M_OUTER); + Show_float_macro(DISC_STRIP_FRAC_J_OUTER); + Show_int_macro(DISC_LOSS_ISM_ALGORITHM); + Show_float_macro(DISC_MINIMUM_TORQUE); + Show_float_macro(DISC_MAXIMUM_TORQUE); + Show_int_macro(DISC_ADAM_RESOLUTION); + Show_int_macro(DISC_ROOT_FINDER_MAX_ATTEMPTS); + Show_float_macro(DISC_MINIMUM_DISC_F); + Show_float_macro(DISC_MINIMUM_DISC_MASS_MSUN); + Show_float_macro(DISC_RIN_MIN); + Show_float_macro(DISC_ROUT_MAX); + Show_float_macro(DISC_TVISC0_MIN); + Show_float_macro(DISC_TVISC0_MAX); + Show_float_macro(DISC_LARGE_RADIUS); + Show_float_macro(DISC_LONG_TIME); + Show_float_macro(DISC_LARGE_MASS); + Show_float_macro(DISC_MINIMUM_WIDTH); + Show_float_macro(DISC_BISECT_RM_TOLERANCE); + Show_int_macro(DISC_BISECT_RM_ATTEMPTS); + Show_float_macro(DISC_BISECT_RJ_TOLERANCE); + Show_int_macro(DISC_BISECT_RJ_ATTEMPTS); + Show_float_macro(DISC_PRESSURE_RADIUS_TOLERANCE); + Show_float_macro(DISC_EDGE_EPS); + Show_float_macro(DISC_TOLERANCE); + Show_float_macro(DISC_MASS_TOLERANCE); + Show_int_macro(DISC_BISECTION_MASS_MAX_ITERATIONS); + Show_float_macro(DISC_ANGMOM_TOLERANCE); + Show_int_macro(DISC_BISECTION_ANGMOM_MAX_ITERATIONS); + Show_float_macro(DISC_ANGMOM_FLUX_TOLERANCE); + Show_int_macro(DISC_BISECTION_ANGMOM_FLUX_MAX_ITERATIONS); + Show_float_macro(DISC_TORQUEF_TOLERANCE); + Show_int_macro(DISC_BISECTION_TORQUEF_MAX_ITERATIONS); + Show_float_macro(DISC_TIMESTEP_LOW_FACTOR); + Show_float_macro(DISC_TIMESTEP_HIGH_FACTOR); + Show_float_macro(DISC_MINIMUM_EVAPORATION_TIMESCALE); + Macrotest(DISC_MONTE_CARLO_GUESSES_USE_LOG); + Show_int_macro(DISC_BISECT_USELOG); + Show_int_macro(DISC_BISECT_OWEN_RADIUS_USELOG); + Show_int_macro(DISC_BISECT_RJ_USELOG); + Show_int_macro(DISC_BISECT_RM_USELOG); + Show_int_macro(DISC_BISECT_PRESSURE_RADIUS_USELOG); + Show_int_macro(DISC_BISECT_VISCOUS_USELOG); + #endif Macrotest(DISCS_CIRCUMBINARY_FROM_COMENV); Macrotest(DISCS_COMENV_APPEND); - Macrotest(DISCS_JERMYN); Macrotest(CBDISC_ECCENTRICITY_PUMPING); Macrotest(DISC_EVAPORATE_ON_FAILURE); + Macrotest(RESOLVE_POSTAGB); Macrotest(DISC_LOG_POPSYN); Macrotest(DISC_LOG); Macrotest(DISC_LOG_2D); + Macrotest(DISC_SAVE_EPSILONS); + Macrotest(DISC_RESIDUAL_WARNING); +#ifdef DISC_RESIDUAL_WARNING + Show_float_macro(DISC_RESIDUAL_WARNING_THRESHOLD); +#endif Show_float_macro(SN_SIGMA_DEFAULT); Macrotest(EVOLUTION_SPLITTING); Show_float_macro(WD_SIGMA_DEFAULT); @@ -784,8 +970,6 @@ void version(struct stardata_t * RESTRICT stardata) "interpolate from Lynnette's tables"); Macrotest(NUCSYN_WR_RS_TABLE "interpolate from Richard's tables "); - Macrotest(NUCSYN_WR_RS_TABLE_NeNa_ONLY, - " (NeNa only from Richard's table) "); Macrotest(NUCSYN_WR_METALLICITIY_CORRECTIONS, "with metallicity corrections (if non-tabular) "); Macrotest(NUCSYN_WR_ACCRETION, @@ -939,6 +1123,15 @@ void version(struct stardata_t * RESTRICT stardata) Macrotest(__SHOW_STARDATA__); Macrotest(SHOW_STARDATA); + Macrotest(CARBON_BURNING); + + Show_float_macro(FUV_eV_MIN); + Show_float_macro(FUV_eV_MAX); + Show_float_macro(EUV_eV_MIN); + Show_float_macro(EUV_eV_MAX); + Show_float_macro(XRAY_eV_MIN); + Show_float_macro(XRAY_eV_MAX); + Macrotest(SHORT_SUPERNOVA_LOG); Macrotest(BINARY_STARS_ONLY); Macrotestif(LOG_SUPERNOVAE, @@ -1086,10 +1279,20 @@ void version(struct stardata_t * RESTRICT stardata) Macrotest(MAKE_BSE_TABLES); Macrotest(UNIT_TESTS); Macrotest(REJUVENATE_HERZTSPRUNG_GAP_STARS); - Macrotest(BISECT_FAIL_EXIT); Macrotest(UNIT_TESTS); + /* mathematics */ + Macrotest(BISECT_FAIL_EXIT); + Macrotest(BISECT_DO_MONOCHECKS); + Macrotest(MIN_MAX_ARE_FUNCTIONS); + Macrotest(MIN_MAX_ARE_MACROS); + Macrotest(USE_FABS); + Macrotest(ZERO_CHECKS_ARE_FUNCTIONS); + Macrotest(POWER_OPERATIONS_ARE_FUNCTIONS); + Show_string_macro(Stringify_macro(Autotype)); + Show_string_macro(Stringify(Autotype)); + /* constants */ Show_float_macro(SPEED_OF_LIGHT); Show_float_macro(GRAVITATIONAL_CONSTANT); @@ -1110,6 +1313,9 @@ void version(struct stardata_t * RESTRICT stardata) Show_float_macro(M_NEUTRON); Show_float_macro(SOLAR_APPARENT_MAGNITUDE); Show_float_macro(CMB_TEMPERATURE); + Show_float_macro(PARSEC); + Show_float_macro(KILOPARSEC); + Show_float_macro(MEGAPARSEC); Macrotest(LIKE_ASTROPY); /* derived constants */ @@ -1131,6 +1337,15 @@ void version(struct stardata_t * RESTRICT stardata) Show_float_macro(FINE_STRUCTURE_CONSTANT); Show_float_macro(SIGMA_THOMPSON); Show_float_macro(STEFAN_BOLTZMANN_CONSTANT); + + /* + * Symbols + */ + Show_string_macro(SOLAR_SYMBOL); + Show_string_macro(L_SOLAR); + Show_string_macro(M_SOLAR); + Show_string_macro(R_SOLAR); + Exit_or_return_void(SPECIAL_EXIT,""); } diff --git a/src/signals/signals_prototypes.h b/src/signals/signals_prototypes.h index 5e5da95307b49dca6e2ebc1d2202b137df4e957c..158df710aeb17b07efe386da05a696d85ef091b6 100644 --- a/src/signals/signals_prototypes.h +++ b/src/signals/signals_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef SIGNALS_PROTOTYPES_H #define SIGNALS_PROTOTYPES_H diff --git a/src/single_star_functions/giant_age.c b/src/single_star_functions/giant_age.c index d548f5244b6dcb7f109598a9b12f9078589da05e..9ffcefcb115cfb88f146ab8dda076642881403fd 100644 --- a/src/single_star_functions/giant_age.c +++ b/src/single_star_functions/giant_age.c @@ -323,7 +323,7 @@ void giant_age(double *mc, /** core mass in/out **/ Exit_binary_c(GIANT_AGE_STAR_TOO_BIG_FOR_GB,"giant_age3: star too big for GB\n"); #endif /* 2007 change */ - *mc = 0.99*mcy; + *mc = MIN(mt,0.99*mcy); } /* Next we find an m0 so as to place the star at the BGB */ @@ -572,7 +572,8 @@ void giant_age(double *mc, /** core mass in/out **/ metallicity_parameters[10], giant_branch_parameters); } - *mc = mcx + (mcy - mcx)* *age; + *mc = MIN(mt, mcx + (mcy - mcx)* *age); + *age = timescales[T_HE_IGNITION] + *age * timescales[T_HE_BURNING]; } diff --git a/src/single_star_functions/magnetic_braking.c b/src/single_star_functions/magnetic_braking.c index ccb37e89e6f4ced2e5ff4bd44790baa64def9103..02cea4098172d18bbe3b8f6dca62c00f563d2b0a 100644 --- a/src/single_star_functions/magnetic_braking.c +++ b/src/single_star_functions/magnetic_braking.c @@ -4,35 +4,206 @@ void magnetic_braking(struct stardata_t * stardata, struct star_t * star, Boolean RLOF_boolean) { - if(star->mass>0.35 && star->stellar_type<HeWD) + + if(stardata->preferences->magnetic_braking_algorithm == + MAGNETIC_BRAKING_ALGORITHM_HURLEY_2002) { + if(star->mass>0.35 && star->stellar_type<HeWD) + { + /* + * We include magnetic braking for stars that have appreciable + * convective envelopes. This includes MS stars with M < 1.25, + * HG stars near the GB and Giants. + * + * This is Eq. 50 in Hurley et al. (2002) based on + * the mass-transfer rates of Rappaport, Verbunt and Joss (1983) + * and the Skumanich (1972) braking law. + * + * We do not allow MB for fully convective MS stars. + * NB this derivative is negative, because it is mass loss. + * + * Please note: I (RGI) cannot rederive this expression, + * and having asked Chris Tout, he cannot either. So please + * use with caution. It's clearly based on the Rappaport paper, + * but beyond that ... I have no idea. + * + */ + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] = + -5.83E-16 * star->menv/star->mass * POW3(star->radius*star->omega); + + /* + * The expression is -3.8e-30 M R_sun^4 (R/Rsun)^gamma omega^3 + * dyne cm (Eq. 36, p719) = g cm^2 s^-2 + * + * we choose gamma = 3 + * + * dyne is 1 g cm s^-2 + */ +/* + printf("MBdot %g ", + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING]); + const double gamma=3.0; + + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] = + -3.8e-30 * + (star->mass * M_SUN) * + POW4(R_SUN)* + pow(star->radius,gamma) * + POW3(star->omega / YEAR_LENGTH_IN_SECONDS) // s^-1 + + // convert to code units + / ANGULAR_MOMENTUM_CGS + ; + + + printf("%g convfac %g\n", + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING], + ANGULAR_MOMENTUM_CGS + ); + Exit_binary_c_no_stardata(0, + "Magnetic braking check"); +*/ + } + else + { + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] = 0.0; + } + } + else if(stardata->preferences->magnetic_braking_algorithm == + MAGNETIC_BRAKING_ALGORITHM_ANDRONOV_2003) + { + /* + * Algorithm of Andronov, Pinsonneault and Sills 2003 + * ApJ 582 358 + * based on + * Sills, Pinsonneault and Terndrup 2000 + * ApJ 534 335 + * which is based on a modified Kawaler angular momentum + * loss rate with an N=1.5 wind law (Chaboyer, Demarque & + * Pinsonneault 1995). + */ + + /* + * Kw is calibrated to reproduce the solar rotation period + * (2 km/s) at the age of the Sun (4.57Gyr, see also + * Kawaler 1988) + */ + const double Kw = 2.7e47; // g cm s + /* - * We include magnetic braking for stars that have appreciable - * convective envelopes. This includes MS stars with M < 1.25, - * HG stars near the GB and Giants. + * omega in s^-1 + */ + double omega = star->omega / YEAR_LENGTH_IN_SECONDS; + + /* + * omega_crit is from Sills+2000 Eq.9 + * + * it is the critical angular frequency at which + * the angular momentum loss rate enters the saturated + * regime. * - * This is Eq. 50 in Hurley et al. (2002) based on - * the mass-transfer rates of Rappaport, Verbunt and Joss (1983) - * and the Skumanich (1972) braking law. + * Table 1 of Andronov et al. 2003 gives omega_crit and + * can be fitted to * - * We do not allow MB for fully convective MS stars. - * NB this derivative is negative, because it is mass loss. - */ - star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] = - -5.83E-16* star->menv/star->mass * POW3(star->radius*star->omega); + * log10(omega_crit) = -5.97780 + 1.54640 * (M/M_sun) + * [RMS error 0.0868] + * + * in the range 0.1 to 1.2 Msun + * (so we limit M to this range) + */ + double M = MAX(0.1, MIN(1.2, star->mass)); + double omega_crit = pow(10.0, + -5.97780 + 1.54640 * M); + omega_crit = MAX(0.0, omega_crit); + + /* + * hence dJ/dt, in cgs + */ + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] + = - Kw * sqrt(star->radius/star->mass) * + (omega<omega_crit ? POW3(omega) : (POW2(omega)*omega_crit)); + + /* + * Data to compare to the Andronov paper + * + + printf("%g : Jdot MB starJ %g omega = %g, omega_crit = %g, Jdot = %g cgs\n", + stardata->model.time, + star->angular_momentum, + omega, + omega_crit, + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING]); + */ + + /* + * convert to code units + */ + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] + *= YEAR_LENGTH_IN_SECONDS/ANGULAR_MOMENTUM_CGS; } - else + else if(stardata->preferences->magnetic_braking_algorithm == + MAGNETIC_BRAKING_ALGORITHM_BARNES_2010) { - star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] = 0.0; + /* + * Algorithm of Barnes and Kim 2010 + * ApJ 721 675 + */ + + /* TODO */ + Exit_binary_c(ALGORITHM_OUT_OF_RANGE, + "Barnes and Kim 2010 algorithm : TODO\n"); + } + else if(stardata->preferences->magnetic_braking_algorithm == + MAGNETIC_BRAKING_ALGORITHM_RAPPAPORT_1983) + { + /* + * Algorithm of Rappaport et al. 1983 + */ + /* + * omega in s^-1 + */ + double omega = star->omega / YEAR_LENGTH_IN_SECONDS; + + /* + * Magnetic braking rate + */ + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] = + -3.8e-30 * M_SUN * POW4(R_SUN) * + star->mass * pow(star->radius, + stardata->preferences->magnetic_braking_gamma) + * + POW3(omega); + + /* + * convert to code units + */ + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] + *= YEAR_LENGTH_IN_SECONDS/ANGULAR_MOMENTUM_CGS; + } + else + { + Exit_binary_c(ALGORITHM_OUT_OF_RANGE, + "Magnetic braking algorithm is unknown.\n"); + } + + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING] *= stardata->preferences->magnetic_braking_factor; - - Dprint("djMB star %d = %30.20e from R=%g omega=%g mass=%g\n", - star->starnum, - star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING], - star->radius, - star->omega, - star->mass); + + if(0) + { + double tmb = fabs(star->angular_momentum / + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING]); + fprintf(stderr, + "djMB star %d = %30.20e from R=%g omega=%g mass=%g tmb=%g y\n", + star->starnum, + star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING], + star->radius, + star->omega, + star->mass, + tmb + ); + } } diff --git a/src/spectra/blackbody.c b/src/spectra/blackbody.c index eac29d01b40b7c704090a65e652006a87c5f3a03..69464398207f5ae3b2c68fe8772a125037ae84e6 100644 --- a/src/spectra/blackbody.c +++ b/src/spectra/blackbody.c @@ -94,16 +94,41 @@ double blackbody_fraction(const double minfreq, int n; double dF; #define THRESH 1e-8 - double ez = exp(-z); // do exp only once! +#define NZERO_TERMS 10 + const double ez = exp(-z); // do exp only once! double zz = ez; + const double a3 = POW3(z); + const double a2 = 3.0*POW2(z); + const double a1 = 6.0*z; for(n=1;n<100;n++) // usually <~10 are required for 1e-8 accuracy { - dF = zz/(double)n * ((double)POW3(z) + - 3*(double)POW2(z)/n + - 6.0*z/(double)POW2(n) + - 6.0/(double)POW3(n)); + /* add dF t o F */ + const double nn = (double)n; + const double inn = 1.0/nn; + dF = zz*inn * ( + a3 + + inn*( + a2 + + inn* ( + a1 + + 6.0 * inn + ) + ) + ); F += dF; - if(fabs(F)>DBL_EPSILON && fabs(dF/F)<THRESH) break; + /* check for convergence */ + if(NONZERO(F)) + { + if(ABS_LESS_THAN(dF/F,THRESH)) break; + } + else + { + /* + * F = 0 : don't allow after NZERO_TERMS terms + * will just be zero forever + */ + if(n>NZERO_TERMS) break; + } zz *= ez; } F *= 15.0/POW4(PI); diff --git a/src/spectra/spectra_prototypes.h b/src/spectra/spectra_prototypes.h index 7c1dcadabc4707499bbc32a1280d8d9a7890eca9..507b30b9c822dbfea3de3da0d8b8644610470e59 100644 --- a/src/spectra/spectra_prototypes.h +++ b/src/spectra/spectra_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef SPECTRA_PROTOTYPES_H #define SPECTRA_PROTOTYPES_H diff --git a/src/stellar_colours/stellar_colour_macros.h b/src/stellar_colours/stellar_colour_macros.h index 0683633af52f90acd4e362a378a8cd96a3d1a2a0..9f0a9788bea1d26ea79d75cab2234c45a8f000f2 100644 --- a/src/stellar_colours/stellar_colour_macros.h +++ b/src/stellar_colours/stellar_colour_macros.h @@ -1,3 +1,4 @@ +#pragma once #ifndef STELLAR_COLOUR_MACROS_H #define STELLAR_COLOUR_MACROS_H diff --git a/src/stellar_colours/stellar_colours_prototypes.h b/src/stellar_colours/stellar_colours_prototypes.h index 83a9fa6a7f624395d0e444e98be4441ebee8323c..0317d90e4230ec02b8ca490211b933b35cf9bbc3 100644 --- a/src/stellar_colours/stellar_colours_prototypes.h +++ b/src/stellar_colours/stellar_colours_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef COLOURS_PROTOTYPES_H #define COLOURS_PROTOTYPES_H #ifdef STELLAR_COLOURS diff --git a/src/stellar_structure/make_data_objects.sh b/src/stellar_structure/make_data_objects.sh new file mode 100755 index 0000000000000000000000000000000000000000..441ecf29d6b437a03a6662b3410ce56d8a9296d8 --- /dev/null +++ b/src/stellar_structure/make_data_objects.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# make data objects for common envelope evolution with binary_c +# http://gareus.org/wiki/embedding_resources_in_executables + +: ${CC:="gcc"} +: ${OBJCOPY_OPTS:="-I binary -B i386:x86-64 -O elf64-x86-64"} + +# Miller Bertolami's post-AGB tables +HFILE=miller_bertolami_postagb.h +TMPFILE=miller_bertolami_postagb.dat +OBJFILE=miller_bertolami_postagb.o + +if [ $HFILE -nt $OBJFILE ] ; then + + $CC ../../double2bin.c -o ./double2bin + + cat $HFILE | tr , ' ' | sed s/\\\\// | grep -v define |grep -v \* | ./double2bin > $TMPFILE + + # The Miller Bertolami table can be read-only + OPTS="--rename-section .data=.rodata,alloc,load,readonly,data,contents " + + objcopy $OBJCOPY_OPTS $OPTS $TMPFILE $OBJFILE + # ld -r -b binary -o $OBJFILE $TMPFILE + + rm $TMPFILE + rm ./double2bin +fi + +echo $OBJFILE + +HFILE=miller_bertolami_postagb_coeffs_L.h +TMPFILE=miller_bertolami_postagb_coeffs_L.dat +OBJFILE=miller_bertolami_postagb_coeffs_L.o + +if [ $HFILE -nt $OBJFILE ] ; then + + $CC ../../double2bin.c -o ./double2bin + + cat $HFILE | tr , ' ' | sed s/\\\\// | grep -v define |grep -v \* | ./double2bin > $TMPFILE + + # The Miller Bertolami table can be read-only + OPTS="--rename-section .data=.rodata,alloc,load,readonly,data,contents " + + objcopy $OBJCOPY_OPTS $OPTS $TMPFILE $OBJFILE + # ld -r -b binary -o $OBJFILE $TMPFILE + + rm $TMPFILE + rm ./double2bin +fi + +echo $OBJFILE + +HFILE=miller_bertolami_postagb_coeffs_R.h +TMPFILE=miller_bertolami_postagb_coeffs_R.dat +OBJFILE=miller_bertolami_postagb_coeffs_R.o + +if [ $HFILE -nt $OBJFILE ] ; then + + $CC ../../double2bin.c -o ./double2bin + + cat $HFILE | tr , ' ' | sed s/\\\\// | grep -v define |grep -v \* | ./double2bin > $TMPFILE + + # The Miller Bertolami table can be read-only + OPTS="--rename-section .data=.rodata,alloc,load,readonly,data,contents " + + objcopy $OBJCOPY_OPTS $OPTS $TMPFILE $OBJFILE + # ld -r -b binary -o $OBJFILE $TMPFILE + + rm $TMPFILE + rm ./double2bin +fi + +echo $OBJFILE diff --git a/src/stellar_structure/miller_bertolami_postagb.h b/src/stellar_structure/miller_bertolami_postagb.h new file mode 100644 index 0000000000000000000000000000000000000000..0c519ae6a987dae8db002835e93257d0bd6869b3 --- /dev/null +++ b/src/stellar_structure/miller_bertolami_postagb.h @@ -0,0 +1,10803 @@ +#define TABLE_MILLER_BERTOLAMI_DATA \ +-4,-0.274457,-4.72555,3.14759536015708,-0.679038569636022,-0.042070485895822,-2.24159581960618,\ +-4,-0.274457,-4.69801919191919,3.14759523675847,-0.679038847166164,-0.0420712107745408,-2.24159652773931,\ +-4,-0.274457,-4.67048838383838,3.1475951111354,-0.679039129699232,-0.0420719487203609,-2.24159724863766,\ +-4,-0.274457,-4.64295757575758,3.14759498322718,-0.679039417371733,-0.042072700089829,-2.24159798264957,\ +-4,-0.274457,-4.61542676767677,3.14759485297088,-0.679039710325194,-0.0420734652525827,-2.24159873013612,\ +-4,-0.274457,-4.58789595959596,3.14759472030124,-0.679040008706372,-0.0420742445919565,-2.24159949147179,\ +-4,-0.274457,-4.56036515151515,3.14759458515058,-0.679040312667528,-0.042075038505622,-2.24160026704507,\ +-4,-0.274457,-4.53283434343434,3.14759444744863,-0.679040622366659,-0.0420758474062653,-2.2416010572591,\ +-4,-0.274457,-4.50530353535354,3.14759430712246,-0.679040937967795,-0.042076671722301,-2.24160186253242,\ +-4,-0.274457,-4.47777272727273,3.14759416409634,-0.679041259641268,-0.0420775118986304,-2.24160268329964,\ +-4,-0.274457,-4.45024191919192,3.14759401829158,-0.679041587564037,-0.0420783683974413,-2.24160352001226,\ +-4,-0.274457,-4.42271111111111,3.14759386962644,-0.679041921919999,-0.0420792416990551,-2.24160437313953,\ +-4,-0.274457,-4.3951803030303,3.14759371801587,-0.679042262900337,-0.0420801323028266,-2.24160524316926,\ +-4,-0.274457,-4.36764949494949,3.14759356337151,-0.67904261070389,-0.0420810407280947,-2.24160613060877,\ +-4,-0.274457,-4.34011868686869,3.14759340560134,-0.679042965537531,-0.0420819675151938,-2.24160703598594,\ +-4,-0.274457,-4.31258787878788,3.14759324460964,-0.679043327616583,-0.0420829132265238,-2.24160795985017,\ +-4,-0.274457,-4.28505707070707,3.14759308029669,-0.679043697165254,-0.0420838784476898,-2.24160890277353,\ +-4,-0.274457,-4.25752626262626,3.14759291255869,-0.679044074417097,-0.0420848637887096,-2.24160986535196,\ +-4,-0.274457,-4.22999545454545,3.14759274128739,-0.679044459615508,-0.0420858698853009,-2.24161084820647,\ +-4,-0.274457,-4.20246464646465,3.14759256636997,-0.679044853014239,-0.0420868974002483,-2.24161185198455,\ +-4,-0.274457,-4.17493383838384,3.14759238768875,-0.679045254877972,-0.0420879470248596,-2.24161287736154,\ +-4,-0.274457,-4.14740303030303,3.14759220512092,-0.679045665482895,-0.0420890194805167,-2.24161392504214,\ +-4,-0.274457,-4.11987222222222,3.14759201853828,-0.679046085117348,-0.0420901155203288,-2.24161499576208,\ +-4,-0.274457,-4.09234141414141,3.14759182780691,-0.679046514082491,-0.0420912359308963,-2.24161609028977,\ +-4,-0.274457,-4.06481060606061,3.1475916327869,-0.67904695269303,-0.0420923815341938,-2.24161720942821,\ +-4,-0.274457,-4.0372797979798,3.14759143333195,-0.679047401277983,-0.0420935531895807,-2.24161835401691,\ +-4,-0.274457,-4.00974898989899,3.14759122928905,-0.679047860181504,-0.042094751795951,-2.241619524934,\ +-4,-0.274457,-3.98221818181818,3.14759102049804,-0.679048329763765,-0.0420959782940335,-2.24162072309846,\ +-4,-0.274457,-3.95468737373737,3.14759080679125,-0.679048810401894,-0.0420972336688543,-2.24162194947256,\ +-4,-0.274457,-3.92715656565657,3.147590587993,-0.679049302490997,-0.0420985189523752,-2.24162320506445,\ +-4,-0.274457,-3.89962575757576,3.14759036391914,-0.679049806445227,-0.0420998352263221,-2.24162449093083,\ +-4,-0.274457,-3.87209494949495,3.14759013437653,-0.67905032269895,-0.0421011836252225,-2.24162580818005,\ +-4,-0.274457,-3.84456414141414,3.14758989916251,-0.679050851708004,-0.0421025653396668,-2.24162715797518,\ +-4,-0.274457,-3.81703333333333,3.14758965806424,-0.679051393951029,-0.0421039816198142,-2.2416285415375,\ +-4,-0.274457,-3.78950252525252,3.14758941085814,-0.67905194993092,-0.0421054337791649,-2.24162996015018,\ +-4,-0.274457,-3.76197171717172,3.14758915730912,-0.679052520176374,-0.0421069231986245,-2.2416314151622,\ +-4,-0.274457,-3.73444090909091,3.14758889716989,-0.679053105243573,-0.0421084513308829,-2.24163290799271,\ +-4,-0.274457,-3.7069101010101,3.14758863018012,-0.679053705717996,-0.0421100197051401,-2.24163444013559,\ +-4,-0.274457,-3.67937929292929,3.1475883560656,-0.679054322216365,-0.0421116299322123,-2.24163601316443,\ +-4,-0.274457,-3.65184848484848,3.14758807453728,-0.679054955388764,-0.0421132837100477,-2.24163762873794,\ +-4,-0.274457,-3.62431767676768,3.14758778529027,-0.679055605920924,-0.0421149828297007,-2.24163928860583,\ +-4,-0.274457,-3.59678686868687,3.14758748800272,-0.6790562745367,-0.0421167291818023,-2.24164099461504,\ +-4,-0.274457,-3.56925606060606,3.14758718233463,-0.679056962000755,-0.0421185247635765,-2.24164274871665,\ +-4,-0.274457,-3.54172525252525,3.14758686792657,-0.679057669121488,-0.0421203716864613,-2.24164455297333,\ +-4,-0.274457,-3.51419444444444,3.14758654439824,-0.679058396754189,-0.0421222721843904,-2.24164640956741,\ +-4,-0.274457,-3.48666363636364,3.14758621134696,-0.679059145804501,-0.0421242286228072,-2.24164832080968,\ +-4,-0.274457,-3.45913282828283,3.147585868346,-0.679059917232184,-0.0421262435084886,-2.241650289149,\ +-4,-0.274457,-3.43160202020202,3.14758551494276,-0.6790607120552,-0.0421283195002573,-2.24165231718279,\ +-4,-0.274457,-3.40407121212121,3.14758515065671,-0.679061531354218,-0.0421304594206903,-2.24165440766841,\ +-4,-0.274457,-3.3765404040404,3.14758477497731,-0.679062376277494,-0.0421326662689209,-2.24165656353572,\ +-4,-0.274457,-3.3490095959596,3.14758438736157,-0.679063248046258,-0.042134943234664,-2.24165878790073,\ +-4,-0.274457,-3.32147878787879,3.14758398723141,-0.679064147960597,-0.0421372937135974,-2.2416610840807,\ +-4,-0.274457,-3.29394797979798,3.14758357397086,-0.679065077405914,-0.0421397213242601,-2.24166345561055,\ +-4,-0.274457,-3.26641717171717,3.14758314692282,-0.679066037860066,-0.0421422299266402,-2.24166590626111,\ +-4,-0.274457,-3.23888636363636,3.14758270538558,-0.679067030901183,-0.0421448236426527,-2.24166844005907,\ +-4,-0.274457,-3.21135555555555,3.14758224860902,-0.679068058216338,-0.0421475068787444,-2.24167106130909,\ +-4,-0.274457,-3.18382474747475,3.14758177579034,-0.679069121611102,-0.0421502843508718,-2.24167377461818,\ +-4,-0.274457,-3.15629393939394,3.14758128606933,-0.679070223020135,-0.0421531611121641,-2.24167658492272,\ +-4,-0.274457,-3.12876313131313,3.14758077852315,-0.67907136451894,-0.0421561425836051,-2.24167949751848,\ +-4,-0.274457,-3.10123232323232,3.14758025216053,-0.67907254833691,-0.0421592345881254,-2.24168251809387,\ +-4,-0.274457,-3.07370151515151,3.14757970591535,-0.67907377687186,-0.0421624433885619,-2.24168565276705,\ +-4,-0.274457,-3.04617070707071,3.14757913863935,-0.679075052706241,-0.0421657757299973,-2.24168890812728,\ +-4,-0.274457,-3.0186398989899,3.14757854909415,-0.679076378625259,-0.0421692388870904,-2.24169229128116,\ +-4,-0.274457,-2.99110909090909,3.14757793594218,-0.679077757637175,-0.0421728407170879,-2.24169580990442,\ +-4,-0.274457,-2.96357828282828,3.14757729773658,-0.679079192996083,-0.0421765897193381,-2.24169947230008,\ +-4,-0.274457,-2.93604747474747,3.14757663290976,-0.679080688227554,-0.042180495102248,-2.24170328746381,\ +-4,-0.274457,-2.90851666666667,3.14757593976056,-0.679082247157545,-0.0421845668588023,-2.24170726515775,\ +-4,-0.274457,-2.88098585858586,3.14757521643978,-0.679083873945085,-0.04218881585194,-2.24171141599389,\ +-4,-0.274457,-2.85345505050505,3.1475744609336,-0.679085573119333,-0.0421932539113312,-2.24171575152862,\ +-4,-0.274457,-2.82592424242424,3.1475736710449,-0.679087349621684,-0.0421978939433637,-2.24172028437017,\ +-4,-0.274457,-2.79839343434343,3.14757284437199,-0.679089208853764,-0.0422027500564972,-2.24172502830108,\ +-4,-0.274457,-2.77086262626263,3.14757197828408,-0.679091156732283,-0.042207837704548,-2.24172999841816,\ +-4,-0.274457,-2.74333181818182,3.14757106989344,-0.679093199751942,-0.0422131738509682,-2.241735211293,\ +-4,-0.274457,-2.71580101010101,3.14757011602315,-0.679095345057771,-0.0422187771578003,-2.24174068515651,\ +-4,-0.274457,-2.6882702020202,3.14756911317005,-0.679097600528615,-0.0422246682037401,-2.241746440112,\ +-4,-0.274457,-2.66073939393939,3.14756805746167,-0.679099974873829,-0.04223086973668,-2.24175249838185,\ +-4,-0.274457,-2.63320858585858,3.14756694460632,-0.679102477745667,-0.0422374069672622,-2.24175888459433,\ +-4,-0.274457,-2.60567777777778,3.14756576983475,-0.679105119870431,-0.0422443079114321,-2.24176562611814,\ +-4,-0.274457,-2.57814696969697,3.14756452783182,-0.679107913202142,-0.0422516037917997,-2.24177275345464,\ +-4,-0.274457,-2.55061616161616,3.14756321265612,-0.679110871103373,-0.0422593295099447,-2.24178030069914,\ +-4,-0.274457,-2.52308535353535,3.14756181764492,-0.679114008558986,-0.0422675242047283,-2.24178830608634,\ +-4,-0.274457,-2.49555454545454,3.14756033530124,-0.679117342430067,-0.0422762319154657,-2.24179681263818,\ +-4,-0.274457,-2.46802373737374,3.1475587571591,-0.679120891757028,-0.0422855023736721,-2.24180586893732,\ +-4,-0.274457,-2.44049292929293,3.14755707362177,-0.679124678123497,-0.0422953919534357,-2.24181553005556,\ +-4,-0.274457,-2.41296212121212,3.14755527376637,-0.679128726095584,-0.0423059648187826,-2.24182585867463,\ +-4,-0.274457,-2.38543131313131,3.14755334510668,-0.679133063755483,-0.0423172943173671,-2.24183692644778,\ +-4,-0.274457,-2.3579005050505,3.14755127330303,-0.679137723353874,-0.0423294646844812,-2.24184881566436,\ +-4,-0.274457,-2.3303696969697,3.14754904180517,-0.67914274211319,-0.0423425731410955,-2.2418616212994,\ +-4,-0.274457,-2.30283888888889,3.14754663140917,-0.679148163224077,-0.0423567324965,-2.24187545355618,\ +-4,-0.274457,-2.27530808080808,3.14754401970341,-0.679154037091508,-0.0423720744030391,-2.24189044104569,\ +-4,-0.274457,-2.24777727272727,3.14754118036958,-0.67916042290674,-0.0423887534618654,-2.24190673479761,\ +-4,-0.274457,-2.22024646464646,3.14753808229276,-0.67916739064899,-0.0424069524511404,-2.24192451336772,\ +-4,-0.274457,-2.19271565656565,3.14753468841635,-0.679175023660499,-0.0424268890517789,-2.24194398940821,\ +-4,-0.274457,-2.16518484848485,3.14753095425282,-0.679183421996131,-0.042448824596262,-2.24196541821447,\ +-4,-0.274457,-2.13765404040404,3.14752682592271,-0.6791927068337,-0.0424730755879431,-2.24198910897824,\ +-4,-0.274457,-2.11012323232323,3.14752223753809,-0.679203026358752,-0.0425000290714322,-2.24201543980291,\ +-4,-0.274457,-2.08259242424242,3.14751710765959,-0.679214563732774,-0.0425301634447463,-2.2420448780349,\ +-4,-0.274457,-2.05506161616161,3.14751133442055,-0.679227548059439,-0.0425640771018857,-2.2420780082446,\ +-4,-0.274457,-2.02753080808081,3.14750478869377,-0.679242269752803,-0.0426025285729649,-2.24211557143911,\ +-4,-0.274457,-2,3.14749730431871,-0.679259102516882,-0.0426464939324628,-2.2421585211444,\ +-4,-0.271559,-4.72555,3.14759534727065,-0.679038598618283,-0.0420705615943575,-2.24159589355599,\ +-4,-0.271559,-4.69801919191919,3.14759522364068,-0.679038876668772,-0.0420712878321564,-2.2415966030168,\ +-4,-0.271559,-4.67048838383838,3.14759509777997,-0.679039159736322,-0.0420720271739892,-2.24159732527892,\ +-4,-0.271559,-4.64295757575758,3.14759496962758,-0.679039447957963,-0.042072779977753,-2.24159806069199,\ +-4,-0.271559,-4.61542676767677,3.14759483912036,-0.679039741475762,-0.0420735466144975,-2.24159880961847,\ +-4,-0.271559,-4.58789595959596,3.14759470619279,-0.679040040437043,-0.0420743274690361,-2.2415995724343,\ +-4,-0.271559,-4.56036515151515,3.14759457077692,-0.679040344994657,-0.0420751229405882,-2.24160034952948,\ +-4,-0.271559,-4.53283434343434,3.14759443280222,-0.679040655307226,-0.0420759334434616,-2.24160114130873,\ +-4,-0.271559,-4.50530353535354,3.14759429219546,-0.679040971539424,-0.0420767594077693,-2.24160194819224,\ +-4,-0.271559,-4.47777272727273,3.14759414888061,-0.679041293862275,-0.0420776012801938,-2.24160277061637,\ +-4,-0.271559,-4.45024191919192,3.14759400277867,-0.679041622453441,-0.0420784595247911,-2.24160360903445,\ +-4,-0.271559,-4.42271111111111,3.14759385380753,-0.679041957497578,-0.0420793346238433,-2.24160446391764,\ +-4,-0.271559,-4.3951803030303,3.14759370188185,-0.679042299186654,-0.0420802270787624,-2.24160533575574,\ +-4,-0.271559,-4.36764949494949,3.14759354691283,-0.679042647720336,-0.0420811374110495,-2.24160622505823,\ +-4,-0.271559,-4.34011868686869,3.14759338880812,-0.679043003306366,-0.0420820661633094,-2.24160713235517,\ +-4,-0.271559,-4.31258787878788,3.14759322747158,-0.679043366160984,-0.04208301390033,-2.24160805819829,\ +-4,-0.271559,-4.28505707070707,3.14759306280308,-0.679043736509356,-0.0420839812102282,-2.24160900316213,\ +-4,-0.271559,-4.25752626262626,3.14759289469832,-0.679044114586049,-0.0420849687056652,-2.2416099678452,\ +-4,-0.271559,-4.22999545454545,3.14759272304861,-0.679044500635521,-0.0420859770251419,-2.24161095287125,\ +-4,-0.271559,-4.20246464646465,3.14759254774062,-0.679044894912654,-0.0420870068343749,-2.24161195889062,\ +-4,-0.271559,-4.17493383838384,3.14759236865615,-0.679045297683306,-0.0420880588277635,-2.24161298658165,\ +-4,-0.271559,-4.14740303030303,3.14759218567184,-0.679045709224917,-0.042089133729949,-2.24161403665227,\ +-4,-0.271559,-4.11987222222222,3.14759199865889,-0.679046129827143,-0.0420902322974813,-2.24161510984153,\ +-4,-0.271559,-4.09234141414141,3.1475918074828,-0.679046559792539,-0.042091355320594,-2.24161620692142,\ +-4,-0.271559,-4.06481060606061,3.14759161200295,-0.679046999437273,-0.0420925036250996,-2.24161732869868,\ +-4,-0.271559,-4.0372797979798,3.14759141207238,-0.679047449091923,-0.0420936780744148,-2.24161847601676,\ +-4,-0.271559,-4.00974898989899,3.14759120753734,-0.67904790910228,-0.0420948795717271,-2.24161964975799,\ +-4,-0.271559,-3.98221818181818,3.14759099823691,-0.679048379830261,-0.0420961090623092,-2.24162085084583,\ +-4,-0.271559,-3.95468737373737,3.14759078400258,-0.679048861654838,-0.0420973675359997,-2.24162208024721,\ +-4,-0.271559,-3.92715656565657,3.14759056465783,-0.679049354973066,-0.0420986560298626,-2.24162333897527,\ +-4,-0.271559,-3.89962575757576,3.14759034001756,-0.679049860201169,-0.0420999756310355,-2.24162462809202,\ +-4,-0.271559,-3.87209494949495,3.14759010988767,-0.679050377775718,-0.042101327479789,-2.2416259487114,\ +-4,-0.271559,-3.84456414141414,3.14758987406446,-0.679050908154886,-0.0421027127728147,-2.24162730200244,\ +-4,-0.271559,-3.81703333333333,3.14758963233398,-0.67905145181979,-0.0421041327667563,-2.24162868919277,\ +-4,-0.271559,-3.78950252525252,3.14758938447147,-0.679052009275968,-0.042105588782014,-2.24163011157227,\ +-4,-0.271559,-3.76197171717172,3.1475891302406,-0.679052581054933,-0.0421070822068363,-2.24163157049713,\ +-4,-0.271559,-3.73444090909091,3.14758886939275,-0.67905316771586,-0.0421086145017387,-2.24163306739413,\ +-4,-0.271559,-3.7069101010101,3.14758860166616,-0.679053769847422,-0.0421101872042652,-2.24163460376527,\ +-4,-0.271559,-3.67937929292929,3.14758832678511,-0.679054388069751,-0.0421118019341361,-2.24163618119289,\ +-4,-0.271559,-3.65184848484848,3.14758804445894,-0.679055023036574,-0.0421134603988113,-2.24163780134498,\ +-4,-0.271559,-3.62431767676768,3.14758775438102,-0.679055675437513,-0.042115164399513,-2.24163946598115,\ +-4,-0.271559,-3.59678686868687,3.14758745622763,-0.679056346000589,-0.0421169158377521,-2.241641176959,\ +-4,-0.271559,-3.56925606060606,3.14758714965682,-0.679057035494927,-0.0421187167224055,-2.24164293624099,\ +-4,-0.271559,-3.54172525252525,3.147586834307,-0.679057744733708,-0.0421205691774032,-2.24164474590199,\ +-4,-0.271559,-3.51419444444444,3.14758650979562,-0.679058474577355,-0.0421224754500848,-2.24164660813741,\ +-4,-0.271559,-3.48666363636364,3.14758617571753,-0.679059225937025,-0.0421244379202931,-2.24164852527213,\ +-4,-0.271559,-3.45913282828283,3.14758583164337,-0.679059999778403,-0.0421264591102891,-2.24165049977014,\ +-4,-0.271559,-3.43160202020202,3.14758547711769,-0.679060797125839,-0.0421285416955641,-2.24165253424512,\ +-4,-0.271559,-3.40407121212121,3.14758511165692,-0.67906161906687,-0.0421306885166563,-2.24165463147198,\ +-4,-0.271559,-3.3765404040404,3.1475847347472,-0.679062466757181,-0.0421329025920781,-2.24165679439952,\ +-4,-0.271559,-3.3490095959596,3.147584345842,-0.67906334142601,-0.0421351871324752,-2.24165902616421,\ +-4,-0.271559,-3.32147878787879,3.14758394435939,-0.679064244382108,-0.0421375455561615,-2.24166133010539,\ +-4,-0.271559,-3.29394797979798,3.14758352967919,-0.67906517702027,-0.0421399815061851,-2.24166370978195,\ +-4,-0.271559,-3.26641717171717,3.14758310113981,-0.679066140828518,-0.0421424988691062,-2.24166616899067,\ +-4,-0.271559,-3.23888636363636,3.14758265803462,-0.679067137396034,-0.0421451017956878,-2.24166871178644,\ +-4,-0.271559,-3.21135555555555,3.14758219960817,-0.679068168421892,-0.0421477947237362,-2.24167134250451,\ +-4,-0.271559,-3.18382474747475,3.14758172505183,-0.679069235724738,-0.0421505824033484,-2.24167406578527,\ +-4,-0.271559,-3.15629393939394,3.14758123349907,-0.679070341253479,-0.0421534699248744,-2.24167688660148,\ +-4,-0.271559,-3.12876313131313,3.14758072402012,-0.679071487099183,-0.0421564627499396,-2.24167981028859,\ +-4,-0.271559,-3.10123232323232,3.14758019561616,-0.679072675508254,-0.0421595667459225,-2.24168284257842,\ +-4,-0.271559,-3.07370151515151,3.14757964721276,-0.679073908897152,-0.042162788224347,-2.2416859896367,\ +-4,-0.271559,-3.04617070707071,3.14757907765257,-0.679075189868781,-0.0421661339837209,-2.2416892581049,\ +-4,-0.271559,-3.0186398989899,3.14757848568724,-0.679076521230833,-0.0421696113574254,-2.24169265514696,\ +-4,-0.271559,-2.99110909090909,3.14757786996816,-0.679077906016324,-0.0421732282673742,-2.24169618850182,\ +-4,-0.271559,-2.96357828282828,3.14757722903633,-0.679079347506662,-0.0421769932842618,-2.24169986654215,\ +-4,-0.271559,-2.93604747474747,3.14757656131073,-0.679080849257621,-0.0421809156953672,-2.24170369834071,\ +-4,-0.271559,-2.90851666666667,3.14757586507535,-0.679082415128606,-0.0421850055810449,-2.24170769374497,\ +-4,-0.271559,-2.88098585858586,3.14757513846446,-0.679084049315778,-0.042189273901226,-2.24171186346167,\ +-4,-0.271559,-2.85345505050505,3.14757437944588,-0.679085756389618,-0.0421937325934917,-2.24171621915263,\ +-4,-0.271559,-2.82592424242424,3.147573585802,-0.679087541337589,-0.0421983946845737,-2.24172077354363,\ +-4,-0.271559,-2.79839343434343,3.14757275510822,-0.67908940961283,-0.0422032744174642,-2.24172554054866,\ +-4,-0.271559,-2.77086262626263,3.14757188470807,-0.679091367189776,-0.0422083873967586,-2.24173053541181,\ +-4,-0.271559,-2.74333181818182,3.14757097168502,-0.679093420627998,-0.0422137507553447,-2.24173577487017,\ +-4,-0.271559,-2.71580101010101,3.14757001282961,-0.679095577145632,-0.0422193833462,-2.24174127734121,\ +-4,-0.271559,-2.6882702020202,3.14756900460195,-0.679097844704142,-0.0422253059638126,-2.24174706313903,\ +-4,-0.271559,-2.66073939393939,3.14756794308794,-0.67910023210654,-0.0422315416007102,-2.241753154725,\ +-4,-0.271559,-2.63320858585858,3.14756682394851,-0.679102749111613,-0.0422381157457696,-2.24175957699917,\ +-4,-0.271559,-2.60567777777778,3.14756564236035,-0.679105406567226,-0.0422450567324575,-2.24176635764047,\ +-4,-0.271559,-2.57814696969697,3.14756439294645,-0.679108216566637,-0.042252396147049,-2.24177352750551,\ +-4,-0.271559,-2.55061616161616,3.14756306969419,-0.679111192632482,-0.0422601693092151,-2.24178112109801,\ +-4,-0.271559,-2.52308535353535,3.1475616658587,-0.679114349934407,-0.0422684158404108,-2.24178917712413,\ +-4,-0.271559,-2.49555454545454,3.14756017384776,-0.679117705547665,-0.0422771803393703,-2.24179773915231,\ +-4,-0.271559,-2.46802373737374,3.14755858508451,-0.679121278762077,-0.0422865131890072,-2.24180685640158,\ +-4,-0.271559,-2.44049292929293,3.14755688984248,-0.679125091453059,-0.042296471525553,-2.24181658468822,\ +-4,-0.271559,-2.41296212121212,3.1475550770462,-0.679129168529876,-0.042307120409308,-2.24182698756959,\ +-4,-0.271559,-2.38543131313131,3.14755313402904,-0.679133538480467,-0.0423185342476874,-2.24183813773418,\ +-4,-0.271559,-2.3579005050505,3.14755104623681,-0.679138234038067,-0.0423307985363683,-2.24185011870262,\ +-4,-0.271559,-2.3303696969697,3.14754879686245,-0.679143293002613,-0.0423440120046947,-2.24186302692347,\ +-4,-0.271559,-2.30283888888889,3.14754636639266,-0.679148759260529,-0.0423582892792576,-2.24187697437532,\ +-4,-0.271559,-2.27530808080808,3.1475437320404,-0.679154684061155,-0.0423737642177902,-2.24189209182363,\ +-4,-0.271559,-2.24777727272727,3.14754086702821,-0.679161127628461,-0.0423905941187908,-2.24190853293309,\ +-4,-0.271559,-2.22024646464646,3.14753773967472,-0.679168161215502,-0.042408965087539,-2.24192647950973,\ +-4,-0.271559,-2.19271565656565,3.14753431221827,-0.679175869750317,-0.0424290989468926,-2.24194614825202,\ +-4,-0.271559,-2.16518484848485,3.14753053928467,-0.679184355281929,-0.0424512622378434,-2.24196779954352,\ +-4,-0.271559,-2.13765404040404,3.1475263658671,-0.679193741523654,-0.04247577808621,-2.24199174904545,\ +-4,-0.271559,-2.11012323232323,3.14752172462663,-0.679204179924318,-0.0425030420599512,-2.24201838318766,\ +-4,-0.271559,-2.08259242424242,3.1475165322312,-0.679215857902351,-0.0425335436757263,-2.24204818017837,\ +-4,-0.271559,-2.05506161616161,3.14751068430766,-0.679229010198471,-0.0425678960509175,-2.24208173897118,\ +-4,-0.271559,-2.02753080808081,3.1475040483536,-0.679243934817859,-0.0426068775428307,-2.2421198199424,\ +-4,-0.271559,-2,3.14749645357622,-0.679261015882724,-0.0426514914371331,-2.24216340320053,\ +-4,-0.271258,-4.72555,3.14759534593083,-0.679038601631621,-0.0420705694648627,-2.24159590124468,\ +-4,-0.271258,-4.69801919191919,3.1475952222768,-0.679038879736234,-0.0420712958440414,-2.2415966108436,\ +-4,-0.271258,-4.67048838383838,3.14759509639136,-0.679039162859386,-0.0420720353310976,-2.24159733324759,\ +-4,-0.271258,-4.64295757575758,3.14759496821357,-0.679039451138156,-0.0420727882840693,-2.24159806880642,\ +-4,-0.271258,-4.61542676767677,3.14759483768025,-0.679039744714662,-0.0420735550741539,-2.2415988178827,\ +-4,-0.271258,-4.58789595959596,3.14759470472585,-0.679040043736292,-0.0420743360863178,-2.24159958085252,\ +-4,-0.271258,-4.56036515151515,3.14759456928239,-0.679040348355957,-0.0420751317199424,-2.24160035810602,\ +-4,-0.271258,-4.53283434343434,3.1475944312793,-0.679040658732346,-0.0420759423895034,-2.24160115004811,\ +-4,-0.271258,-4.50530353535354,3.14759429064336,-0.679040975030198,-0.0420767685252921,-2.24160195709914,\ +-4,-0.271258,-4.47777272727273,3.14759414729846,-0.679041297420606,-0.0420776105741756,-2.24160277969565,\ +-4,-0.271258,-4.45024191919192,3.1475940011656,-0.679041626081314,-0.0420784690004045,-2.24160361829117,\ +-4,-0.271258,-4.42271111111111,3.14759385216263,-0.679041961197051,-0.0420793442864648,-2.24160447335705,\ +-4,-0.271258,-4.3951803030303,3.14759370020416,-0.679042302959867,-0.042080236933984,-2.2416053453833,\ +-4,-0.271258,-4.36764949494949,3.14759354520138,-0.679042651569514,-0.042081147464687,-2.24160623487961,\ +-4,-0.271258,-4.34011868686869,3.14759338706185,-0.679043007233829,-0.0420820764214162,-2.2416071423763,\ +-4,-0.271258,-4.31258787878788,3.14759322568943,-0.679043370169141,-0.0420830243692078,-2.24160806842532,\ +-4,-0.271258,-4.28505707070707,3.14759306098392,-0.679043740600727,-0.0420839918964401,-2.24160901360148,\ +-4,-0.271258,-4.25752626262626,3.14759289284101,-0.679044118763245,-0.0420849796160499,-2.24160997850354,\ +-4,-0.271258,-4.22999545454545,3.14759272115192,-0.679044504901273,-0.0420859881668281,-2.24161096375554,\ +-4,-0.271258,-4.20246464646465,3.14759254580329,-0.679044899269811,-0.042087018214797,-2.24161197000814,\ +-4,-0.271258,-4.17493383838384,3.14759236667686,-0.679045302134835,-0.0420880704546775,-2.24161299793997,\ +-4,-0.271258,-4.14740303030303,3.14759218364921,-0.67904571377392,-0.0420891456114511,-2.2416140482593,\ +-4,-0.271258,-4.11987222222222,3.14759199659149,-0.679046134476855,-0.0420902444420255,-2.24161512170552,\ +-4,-0.271258,-4.09234141414141,3.1475918053691,-0.679046564546342,-0.0420913677370132,-2.24161621905101,\ +-4,-0.271258,-4.06481060606061,3.1475916098414,-0.679047004298702,-0.0420925163226265,-2.24161734110286,\ +-4,-0.271258,-4.0372797979798,3.14759140986134,-0.679047454064674,-0.0420936910627054,-2.241618488705,\ +-4,-0.271258,-4.00974898989899,3.14759120527508,-0.679047914190223,-0.0420948928608839,-2.24161966274015,\ +-4,-0.271258,-3.98221818181818,3.14759099592163,-0.679048385037444,-0.0420961226629086,-2.24162086413222,\ +-4,-0.271258,-3.95468737373737,3.14759078163241,-0.679048866985503,-0.0420973814591204,-2.24162209384869,\ +-4,-0.271258,-3.92715656565657,3.14759056223076,-0.679049360431657,-0.0420986702871139,-2.24162335290317,\ +-4,-0.271258,-3.89962575757576,3.14759033753155,-0.679049865792349,-0.0420999902345909,-2.24162464235823,\ +-4,-0.271258,-3.87209494949495,3.14759010734053,-0.679050383504375,-0.0421013424424215,-2.24162596332837,\ +-4,-0.271258,-3.84456414141414,3.1475898714539,-0.679050914026154,-0.0421027281079325,-2.2416273169833,\ +-4,-0.271258,-3.81703333333333,3.14758962965762,-0.67905145783906,-0.042104148488444,-2.24162870455127,\ +-4,-0.271258,-3.78950252525252,3.14758938172678,-0.679052015448912,-0.042105604905074,-2.24163012732287,\ +-4,-0.271258,-3.76197171717172,3.14758912742494,-0.679052587387508,-0.0421070987468383,-2.24163158665504,\ +-4,-0.271258,-3.73444090909091,3.14758886650332,-0.679053174214341,-0.0421086314750674,-2.24163308397534,\ +-4,-0.271258,-3.7069101010101,3.14758859870003,-0.679053776518414,-0.0421102046281755,-2.24163462078667,\ +-4,-0.271258,-3.67937929292929,3.14758832373918,-0.679054394920216,-0.0421118198268108,-2.24163619867222,\ +-4,-0.271258,-3.65184848484848,3.14758804132994,-0.679055030073854,-0.0421134787794252,-2.24163781930098,\ +-4,-0.271258,-3.62431767676768,3.14758775116551,-0.679055682669353,-0.0421151832883014,-2.24163948443358,\ +-4,-0.271258,-3.59678686868687,3.14758745292198,-0.679056353435173,-0.0421169352560841,-2.24164119592875,\ +-4,-0.271258,-3.56925606060606,3.14758714625717,-0.679057043140902,-0.0421187366928659,-2.24164295575011,\ +-4,-0.271258,-3.54172525252525,3.1475868308093,-0.67905775260022,-0.0421205897238797,-2.24164476597381,\ +-4,-0.271258,-3.51419444444444,3.14758650619555,-0.679058482674082,-0.0421224965978624,-2.24164662879665,\ +-4,-0.271258,-3.48666363636364,3.14758617201055,-0.679059234274228,-0.0421244596961601,-2.24164854654495,\ +-4,-0.271258,-3.45913282828283,3.14758582782463,-0.67906000836695,-0.0421264815426478,-2.24165052168428,\ +-4,-0.271258,-3.43160202020202,3.14758547318206,-0.679060805977272,-0.0421285648145555,-2.24165255683003,\ +-4,-0.271258,-3.40407121212121,3.14758510759895,-0.679061628193449,-0.042130712354296,-2.24165465475894,\ +-4,-0.271258,-3.3765404040404,3.1475847305611,-0.679062476171936,-0.0421329271824026,-2.24165681842178,\ +-4,-0.271258,-3.3490095959596,3.14758434152161,-0.67906335114281,-0.0421352125117053,-2.24165905095715,\ +-4,-0.271258,-3.32147878787879,3.14758393989812,-0.679064254415724,-0.0421375717628795,-2.2416613557067,\ +-4,-0.271258,-3.29394797979798,3.14758352507007,-0.67906518738645,-0.0421400085815314,-2.24166373623183,\ +-4,-0.271258,-3.26641717171717,3.14758309637533,-0.679066151544079,-0.0421425268569934,-2.24166619633201,\ +-4,-0.271258,-3.23888636363636,3.1475826531068,-0.67906714847894,-0.0421451307430403,-2.24166874006507,\ +-4,-0.271258,-3.21135555555555,3.14758219450849,-0.679068179891364,-0.0421478246807505,-2.24167137176948,\ +-4,-0.271258,-3.18382474747475,3.14758171977112,-0.679069247601353,-0.0421506134237849,-2.24167409608909,\ +-4,-0.271258,-3.15629393939394,3.14758122802752,-0.679070353559313,-0.0421535020663793,-2.24167691800047,\ +-4,-0.271258,-3.12876313131313,3.14758071834718,-0.679071499857926,-0.0421564960744023,-2.2416798428432,\ +-4,-0.271258,-3.10123232323232,3.14758018973052,-0.679072688745385,-0.0421596013198729,-2.24168287635367,\ +-4,-0.271258,-3.07370151515151,3.14757964110222,-0.679073922640084,-0.0421628241193992,-2.24168602470253,\ +-4,-0.271258,-3.04617070707071,3.147579071304,-0.679075204147073,-0.0421661712770676,-2.24168929453672,\ +-4,-0.271258,-3.0186398989899,3.14757847908644,-0.679076536076383,-0.0421696501323933,-2.24169269302618,\ +-4,-0.271258,-2.99110909090909,3.1475778630998,-0.679077921463621,-0.0421732686140442,-2.24169622791643,\ +-4,-0.271258,-2.96357828282828,3.14757722188381,-0.67907936359305,-0.0421770353001682,-2.24169990758745,\ +-4,-0.271258,-2.93604747474747,3.14757655385605,-0.679080866023595,-0.0421809594862847,-2.24170374112001,\ +-4,-0.271258,-2.90851666666667,3.14757585729896,-0.679082432618163,-0.0421850512618772,-2.24170773837051,\ +-4,-0.271258,-2.88098585858586,3.14757513034505,-0.679084067576792,-0.0421893215970125,-2.24171191005563,\ +-4,-0.271258,-2.85345505050505,3.14757437096024,-0.679085775474275,-0.0421937824405516,-2.24171626784816,\ +-4,-0.271258,-2.82592424242424,3.1475735769248,-0.6790875613029,-0.0421984468318049,-2.24172082448621,\ +-4,-0.271258,-2.79839343434343,3.1475727458117,-0.679089430521185,-0.0422033290278298,-2.24172559389746,\ +-4,-0.271258,-2.77086262626263,3.14757187496184,-0.679091389109607,-0.0422084446489874,-2.24173059134143,\ +-4,-0.271258,-2.74333181818182,3.14757096145559,-0.679093443634517,-0.0422138108458855,-2.24173583357255,\ +-4,-0.271258,-2.71580101010101,3.14757000208017,-0.679095601321701,-0.0422194464914722,-2.24174133902774,\ +-4,-0.271258,-2.6882702020202,3.1475689932918,-0.679097870141258,-0.0422253724028109,-2.2417471280432,\ +-4,-0.271258,-2.66073939393939,3.14756793117205,-0.679100258906012,-0.0422316115980269,-2.24175322310528,\ +-4,-0.271258,-2.63320858585858,3.14756681137687,-0.679102777385885,-0.0422381895951139,-2.2417596491425,\ +-4,-0.271258,-2.60567777777778,3.14756562907733,-0.679105436441477,-0.0422451347607764,-2.24176643386624,\ +-4,-0.271258,-2.57814696969697,3.14756437888988,-0.679108248180624,-0.0422524787193647,-2.2417736081703,\ +-4,-0.271258,-2.55061616161616,3.1475630547945,-0.679111226142721,-0.0422602568343313,-2.24178120660119,\ +-4,-0.271258,-2.52308535353535,3.14756165003767,-0.679114385516766,-0.0422685087776831,-2.24178926791444,\ +-4,-0.271258,-2.49555454545454,3.14756015701722,-0.679117743400455,-0.0422772792067646,-2.24179783573575,\ +-4,-0.271258,-2.46802373737374,3.14755856714468,-0.679121319109746,-0.0422866185727573,-2.24180695935083,\ +-4,-0.271258,-2.44049292929293,3.14755687067993,-0.679125134550646,-0.0422965840917894,-2.24181669465404,\ +-4,-0.271258,-2.41296212121212,3.14755505653156,-0.6791292146684,-0.0423072409181471,-2.24182710529453,\ +-4,-0.271258,-2.38543131313131,3.147553112014,-0.679133587993511,-0.0423186635704121,-2.24183826406939,\ +-4,-0.271258,-2.3579005050505,3.1475510225505,-0.679138287309853,-0.042330937676518,-2.24185025462846,\ +-4,-0.271258,-2.3303696969697,3.14754877130709,-0.679143350477984,-0.0423441621241486,-2.24186317357498,\ +-4,-0.271258,-2.30283888888889,3.14754633873799,-0.679148821457393,-0.0423584517307409,-2.24187713307398,\ +-4,-0.271258,-2.27530808080808,3.14754370201668,-0.679154751586131,-0.042373940585729,-2.24189226411724,\ +-4,-0.271258,-2.24777727272727,3.14754083431745,-0.67916120119672,-0.0423907862711326,-2.24190872064647,\ +-4,-0.271258,-2.22024646464646,3.14753770389937,-0.67916824167618,-0.0424091752421281,-2.24192668480949,\ +-4,-0.271258,-2.19271565656565,3.1475342729266,-0.679175958119411,-0.0424293297574039,-2.24194637373052,\ +-4,-0.271258,-2.16518484848485,3.14753049593157,-0.679184452785393,-0.0424515169063468,-2.24196804832886,\ +-4,-0.271258,-2.13765404040404,3.14752631778869,-0.679193849654585,-0.0424760605125103,-2.24199202494736,\ +-4,-0.271258,-2.11012323232323,3.14752167100607,-0.679204300519884,-0.0425033570425293,-2.24201869089375,\ +-4,-0.271258,-2.08259242424242,3.14751647205186,-0.679215993248926,-0.0425338971863451,-2.24204852552245,\ +-4,-0.271258,-2.05506161616161,3.14751061628825,-0.679229163177819,-0.0425682956164356,-2.24208212930624,\ +-4,-0.271258,-2.02753080808081,3.14750397085591,-0.679244109114357,-0.0426073327864355,-2.24212026466931,\ +-4,-0.271258,-2,3.14749636447172,-0.679261216283549,-0.0426520148624161,-2.24216391453405,\ +-4,-0.270763,-4.72555,3.1475953437269,-0.679038606588374,-0.0420705824113695,-2.2415959138921,\ +-4,-0.270763,-4.69801919191919,3.14759522003327,-0.679038884782042,-0.0420713090231393,-2.24159662371824,\ +-4,-0.270763,-4.67048838383838,3.14759509410717,-0.679039167996666,-0.0420720487491116,-2.24159734635563,\ +-4,-0.270763,-4.64295757575758,3.14759496588759,-0.679039456369417,-0.0420728019475553,-2.24159808215426,\ +-4,-0.270763,-4.61542676767677,3.14759483531131,-0.679039750042507,-0.0420735689899098,-2.24159883147699,\ +-4,-0.270763,-4.58789595959596,3.14759470231278,-0.679040049163423,-0.0420743502613956,-2.24159959470013,\ +-4,-0.270763,-4.56036515151515,3.14759456682392,-0.679040353885173,-0.0420751461616588,-2.24160037221411,\ +-4,-0.270763,-4.53283434343434,3.14759442877416,-0.679040664366556,-0.0420759571054531,-2.24160116442411,\ +-4,-0.270763,-4.50530353535354,3.14759428809017,-0.679040980772424,-0.0420767835233607,-2.24160197175074,\ +-4,-0.270763,-4.47777272727273,3.14759414469587,-0.679041303273979,-0.0420776258625548,-2.24160279463086,\ +-4,-0.270763,-4.45024191919192,3.14759399851214,-0.679041632049097,-0.0420784845876055,-2.24160363351829,\ +-4,-0.270763,-4.42271111111111,3.14759384945679,-0.679041967282627,-0.0420793601813353,-2.24160448888472,\ +-4,-0.270763,-4.3951803030303,3.14759369744437,-0.679042309166761,-0.0420802531457238,-2.24160536122053,\ +-4,-0.270763,-4.36764949494949,3.14759354238602,-0.679042657901393,-0.0420811640028671,-2.24160625103574,\ +-4,-0.270763,-4.34011868686869,3.14759338418924,-0.679043013694503,-0.0420820932959963,-2.24160715886105,\ +-4,-0.270763,-4.31258787878788,3.14759322275778,-0.679043376762582,-0.0420830415905572,-2.24160808524884,\ +-4,-0.270763,-4.28505707070707,3.1475930579914,-0.679043747331064,-0.0420840094753591,-2.2416090307743,\ +-4,-0.270763,-4.25752626262626,3.1475928897857,-0.679044125634794,-0.0420849975637916,-2.24160999603667,\ +-4,-0.270763,-4.22999545454545,3.14759271803183,-0.679044511918524,-0.0420860064951226,-2.24161098166043,\ +-4,-0.270763,-4.20246464646465,3.14759254261634,-0.679044906437443,-0.0420870369358772,-2.24161198829674,\ +-4,-0.270763,-4.17493383838384,3.14759236342087,-0.679045309457739,-0.042088089581307,-2.24161301662475,\ +-4,-0.270763,-4.14740303030303,3.14759218032191,-0.679045721257194,-0.0420891651569515,-2.24161406735327,\ +-4,-0.270763,-4.11987222222222,3.14759199319051,-0.679046142125828,-0.0420902644203092,-2.24161514122228,\ +-4,-0.270763,-4.09234141414141,3.14759180189198,-0.679046572366573,-0.0420913881626149,-2.24161623900475,\ +-4,-0.270763,-4.06481060606061,3.14759160628554,-0.679047012296015,-0.0420925372107398,-2.24161736150844,\ +-4,-0.270763,-4.0372797979798,3.14759140622404,-0.679047462245148,-0.0420937124292193,-2.24161850957793,\ +-4,-0.270763,-4.00974898989899,3.14759120155351,-0.679047922560225,-0.0420949147224236,-2.24161968409667,\ +-4,-0.270763,-3.98221818181818,3.14759099211284,-0.679048393603638,-0.0420961450368792,-2.24162088598933,\ +-4,-0.270763,-3.95468737373737,3.14759077773326,-0.679048875754866,-0.0420974043637521,-2.24162211622419,\ +-4,-0.270763,-3.92715656565657,3.14759055823803,-0.679049369411508,-0.0420986937415124,-2.24162337581574,\ +-4,-0.270763,-3.89962575757576,3.14759033344181,-0.679049874990355,-0.0421000142587901,-2.24162466582743,\ +-4,-0.270763,-3.87209494949495,3.14759010315023,-0.679050392928587,-0.0421013670574402,-2.24162598737476,\ +-4,-0.270763,-3.84456414141414,3.14758986715927,-0.679050923685014,-0.0421027533358364,-2.24162734162841,\ +-4,-0.270763,-3.81703333333333,3.14758962525471,-0.679051467741451,-0.0421041743524118,-2.24162872981774,\ +-4,-0.270763,-3.78950252525252,3.14758937721144,-0.679052025604155,-0.0421056314294683,-2.24163015323452,\ +-4,-0.270763,-3.76197171717172,3.14758912279281,-0.679052597805414,-0.0421071259572811,-2.24163161323689,\ +-4,-0.270763,-3.73444090909091,3.14758886174981,-0.679053184905234,-0.0421086593985235,-2.24163311125373,\ +-4,-0.270763,-3.7069101010101,3.1475885938203,-0.679053787493167,-0.0421102332930423,-2.24163464878934,\ +-4,-0.270763,-3.67937929292929,3.14758831872815,-0.679054406190287,-0.0421118492630135,-2.24163622742841,\ +-4,-0.270763,-3.65184848484848,3.14758803618223,-0.679055041651322,-0.0421135090185211,-2.24163784884152,\ +-4,-0.270763,-3.62431767676768,3.14758774587546,-0.679055694566973,-0.0421152143635933,-2.241639514791,\ +-4,-0.270763,-3.59678686868687,3.1475874474836,-0.679056365666407,-0.0421169672027428,-2.2416412271374,\ +-4,-0.270763,-3.56925606060606,3.14758714066412,-0.679057055719983,-0.0421187695480623,-2.24164298784631,\ +-4,-0.270763,-3.54172525252525,3.1475868250549,-0.679057765542199,-0.0421206235269291,-2.24164479899597,\ +-4,-0.270763,-3.51419444444444,3.14758650027271,-0.679058495994895,-0.042122531390382,-2.24164666278542,\ +-4,-0.270763,-3.48666363636364,3.14758616591176,-0.679059247990751,-0.0421244955222395,-2.2416485815434,\ +-4,-0.270763,-3.45913282828283,3.14758582154192,-0.679060022497089,-0.0421265184490356,-2.24165055773808,\ +-4,-0.270763,-3.43160202020202,3.14758546670701,-0.679060820540013,-0.0421286028508626,-2.24165259398765,\ +-4,-0.270763,-3.40407121212121,3.14758510092258,-0.679061643208971,-0.0421307515732177,-2.24165469307186,\ +-4,-0.270763,-3.3765404040404,3.14758472367387,-0.679062491661689,-0.0421329676399632,-2.24165685794472,\ +-4,-0.270763,-3.3490095959596,3.14758433441336,-0.67906336712962,-0.0421352542675244,-2.24165909174835,\ +-4,-0.270763,-3.32147878787879,3.14758393255807,-0.679064270923905,-0.0421376148804653,-2.24166139782821,\ +-4,-0.270763,-3.29394797979798,3.14758351748667,-0.679065204441931,-0.0421400531286026,-2.2416637797498,\ +-4,-0.270763,-3.26641717171717,3.14758308853628,-0.679066169174535,-0.0421425729058345,-2.24166624131706,\ +-4,-0.270763,-3.23888636363636,3.14758264499896,-0.679067166713943,-0.0421451783708929,-2.24166878659265,\ +-4,-0.270763,-3.21135555555555,3.14758218611777,-0.679068198762546,-0.0421478739702457,-2.24167141992032,\ +-4,-0.270763,-3.18382474747475,3.14758171108246,-0.679069267142604,-0.0421506644634214,-2.24167414594966,\ +-4,-0.270763,-3.15629393939394,3.14758121902478,-0.679070373806964,-0.0421535549510538,-2.24167696966345,\ +-4,-0.270763,-3.12876313131313,3.14758070901301,-0.679071520850984,-0.0421565509059979,-2.24167989640813,\ +-4,-0.270763,-3.10123232323232,3.14758018004627,-0.679072710525781,-0.042159658207915,-2.24168293192752,\ +-4,-0.270763,-3.07370151515151,3.14757963104783,-0.67907394525296,-0.0421628831817847,-2.24168608240051,\ +-4,-0.270763,-3.04617070707071,3.14757906085783,-0.679075227641082,-0.0421662326408816,-2.24168935448295,\ +-4,-0.270763,-3.0186398989899,3.14757846822513,-0.67907656050405,-0.0421697139348198,-2.2416927553547,\ +-4,-0.270763,-2.99110909090909,3.14757785179811,-0.679077946881727,-0.0421733350033926,-2.2416962927721,\ +-4,-0.270763,-2.96357828282828,3.14757721011441,-0.67907939006308,-0.0421771044370212,-2.24169997512715,\ +-4,-0.270763,-2.93604747474747,3.14757654158928,-0.679080893612226,-0.0421810315447968,-2.24170381151388,\ +-4,-0.270763,-2.90851666666667,3.14757584450261,-0.679082461397821,-0.0421851264312385,-2.24170781180337,\ +-4,-0.270763,-2.88098585858586,3.14757511698409,-0.67908409762631,-0.0421894000831076,-2.2417119867286,\ +-4,-0.270763,-2.85345505050505,3.14757435699644,-0.679085806879591,-0.0421938644678415,-2.24171634798052,\ +-4,-0.270763,-2.82592424242424,3.14757356231645,-0.679087594157884,-0.0421985326454718,-2.24172090831747,\ +-4,-0.270763,-2.79839343434343,3.14757273051309,-0.67908946492858,-0.0422034188962241,-2.24172568168978,\ +-4,-0.270763,-2.77086262626263,3.14757185892287,-0.679091425182096,-0.042208538866429,-2.24173068338234,\ +-4,-0.270763,-2.74333181818182,3.14757094462121,-0.679093481495964,-0.0422139097358847,-2.24173593017807,\ +-4,-0.270763,-2.71580101010101,3.14756998438969,-0.679095641108556,-0.04221955041044,-2.24174144054606,\ +-4,-0.270763,-2.6882702020202,3.14756897467822,-0.679097912004225,-0.0422254817443493,-2.24174723485882,\ +-4,-0.270763,-2.66073939393939,3.14756791156118,-0.679100303011928,-0.0422317267979109,-2.24175333564391,\ +-4,-0.270763,-2.63320858585858,3.14756679068636,-0.679102823919964,-0.0422383111370945,-2.24175976787671,\ +-4,-0.270763,-2.60567777777778,3.14756560721551,-0.679105485609898,-0.0422452631833694,-2.24176655932211,\ +-4,-0.270763,-2.57814696969697,3.1475643557544,-0.679108300213584,-0.0422526146238247,-2.2417737409352,\ +-4,-0.270763,-2.55061616161616,3.14756303027071,-0.679111281298041,-0.042260400894063,-2.24178134733297,\ +-4,-0.270763,-2.52308535353535,3.14756162399676,-0.679114444084165,-0.0422686617493972,-2.24178941735231,\ +-4,-0.270763,-2.49555454545454,3.14756012931393,-0.679117805706637,-0.0422774419437694,-2.24179799471334,\ +-4,-0.270763,-2.46802373737374,3.1475585376146,-0.679121385524486,-0.0422867920408798,-2.24180712881163,\ +-4,-0.270763,-2.44049292929293,3.14755683913623,-0.679125205494151,-0.042296769388552,-2.24181687567022,\ +-4,-0.270763,-2.41296212121212,3.14755502276101,-0.679129290620188,-0.0423074392960024,-2.24182729908961,\ +-4,-0.270763,-2.38543131313131,3.1475530757722,-0.679133669503267,-0.0423188764650806,-2.24183847204592,\ +-4,-0.270763,-2.3579005050505,3.14755098355594,-0.679138375010751,-0.0423311667417771,-2.24185047840203,\ +-4,-0.270763,-2.3303696969697,3.14754872923377,-0.679143445103154,-0.0423444092748573,-2.2418634150162,\ +-4,-0.270763,-2.30283888888889,3.14754629320637,-0.679148923860458,-0.0423587191964723,-2.24187739436092,\ +-4,-0.270763,-2.27530808080808,3.14754365258217,-0.67915486276702,-0.042374230978186,-2.24189254780128,\ +-4,-0.270763,-2.24777727272727,3.14754078045583,-0.679161322334405,-0.0423911026696644,-2.24190902973581,\ +-4,-0.270763,-2.22024646464646,3.14753764498818,-0.67916837417062,-0.0424095213032865,-2.24192702287621,\ +-4,-0.270763,-2.19271565656565,3.14753420822096,-0.679176103645879,-0.0424297098568038,-2.24194674504915,\ +-4,-0.270763,-2.16518484848485,3.14753042453256,-0.679184613365613,-0.0424519363245198,-2.24196845805796,\ +-4,-0.270763,-2.13765404040404,3.14752623860135,-0.679194027751169,-0.0424765256815289,-2.24199247937039,\ +-4,-0.270763,-2.11012323232323,3.14752158268293,-0.679204499163402,-0.0425038758779167,-2.2420191977434,\ +-4,-0.270763,-2.08259242424242,3.14751637291565,-0.679216216211611,-0.0425344795407665,-2.24204909442377,\ +-4,-0.270763,-2.05506161616161,3.14751050422454,-0.679229415215148,-0.0425689539106868,-2.24208277239309,\ +-4,-0.270763,-2.02753080808081,3.14750384316078,-0.679244396307606,-0.0426080829041466,-2.24212099745837,\ +-4,-0.270763,-2,3.14749621763104,-0.679261546536203,-0.0426528774466345,-2.2421647571915,\ +-4,-0.257969,-4.72555,3.14759528651839,-0.679038735253391,-0.0420709184704777,-2.24159624218784,\ +-4,-0.257969,-4.69801919191919,3.14759516179475,-0.679039015763625,-0.0420716511328779,-2.24159695792482,\ +-4,-0.257969,-4.67048838383838,3.14759503481055,-0.679039301357952,-0.0420723970743731,-2.24159768663415,\ +-4,-0.257969,-4.64295757575758,3.14759490550379,-0.679039592175852,-0.0420731566592793,-2.24159842867169,\ +-4,-0.257969,-4.61542676767677,3.14759477381014,-0.679039888361959,-0.0420739302653617,-2.24159918440653,\ +-4,-0.257969,-4.58789595959596,3.14759463966293,-0.679040190066296,-0.0420747182844626,-2.24159995422141,\ +-4,-0.257969,-4.56036515151515,3.14759450299293,-0.679040497444525,-0.0420755211231617,-2.24160073851354,\ +-4,-0.257969,-4.53283434343434,3.14759436372829,-0.679040810658228,-0.0420763392034763,-2.24160153769519,\ +-4,-0.257969,-4.50530353535354,3.14759422179443,-0.679041129875165,-0.0420771729636008,-2.24160235219442,\ +-4,-0.257969,-4.47777272727273,3.14759407711385,-0.679041455269607,-0.0420780228586906,-2.24160318245589,\ +-4,-0.257969,-4.45024191919192,3.14759392960605,-0.67904178702262,-0.0420788893616884,-2.24160402894159,\ +-4,-0.257969,-4.42271111111111,3.14759377918734,-0.679042125322428,-0.042079772964203,-2.24160489213179,\ +-4,-0.257969,-4.3951803030303,3.14759362577069,-0.679042470364751,-0.0420806741774406,-2.24160577252589,\ +-4,-0.257969,-4.36764949494949,3.14759346926559,-0.679042822353194,-0.0420815935331876,-2.24160667064338,\ +-4,-0.257969,-4.34011868686869,3.14759330957782,-0.679043181499638,-0.0420825315848616,-2.2416075870249,\ +-4,-0.257969,-4.31258787878788,3.14759314660928,-0.679043548024672,-0.0420834889086178,-2.2416085222333,\ +-4,-0.257969,-4.28505707070707,3.14759298025784,-0.679043922158045,-0.0420844661045327,-2.24160947685477,\ +-4,-0.257969,-4.25752626262626,3.14759281041706,-0.679044304139145,-0.0420854637978555,-2.24161045150015,\ +-4,-0.257969,-4.22999545454545,3.14759263697598,-0.679044694217503,-0.0420864826403448,-2.24161144680611,\ +-4,-0.257969,-4.20246464646465,3.1475924598189,-0.679045092653348,-0.0420875233116863,-2.24161246343666,\ +-4,-0.257969,-4.17493383838384,3.14759227882511,-0.679045499718181,-0.0420885865210062,-2.24161350208453,\ +-4,-0.257969,-4.14740303030303,3.14759209386859,-0.679045915695384,-0.0420896730084824,-2.2416145634728,\ +-4,-0.257969,-4.11987222222222,3.14759190481778,-0.679046340880898,-0.0420907835470626,-2.24161564835657,\ +-4,-0.257969,-4.09234141414141,3.14759171153517,-0.679046775583899,-0.0420919189442982,-2.24161675752472,\ +-4,-0.257969,-4.06481060606061,3.14759151387711,-0.679047220127575,-0.0420930800443034,-2.24161789180188,\ +-4,-0.257969,-4.0372797979798,3.1475913116933,-0.679047674849903,-0.0420942677298468,-2.24161905205042,\ +-4,-0.257969,-4.00974898989899,3.1475911048265,-0.679048140104517,-0.0420954829245904,-2.24162023917266,\ +-4,-0.257969,-3.98221818181818,3.14759089311211,-0.679048616261634,-0.0420967265954859,-2.24162145411321,\ +-4,-0.257969,-3.95468737373737,3.1475906763777,-0.679049103709015,-0.0420979997553398,-2.2416226978615,\ +-4,-0.257969,-3.92715656565657,3.1475904544426,-0.679049602853045,-0.042099303465565,-2.24162397145441,\ +-4,-0.257969,-3.89962575757576,3.14759022711735,-0.679050114119833,-0.0421006388391309,-2.24162527597919,\ +-4,-0.257969,-3.87209494949495,3.14758999420315,-0.679050637956454,-0.0421020070437339,-2.24162661257658,\ +-4,-0.257969,-3.84456414141414,3.14758975549134,-0.679051174832231,-0.0421034093052016,-2.24162798244407,\ +-4,-0.257969,-3.81703333333333,3.14758951076271,-0.679051725240143,-0.0421048469111571,-2.24162938683954,\ +-4,-0.257969,-3.78950252525252,3.14758925978687,-0.679052289698355,-0.0421063212149613,-2.24163082708511,\ +-4,-0.257969,-3.76197171717172,3.14758900232154,-0.679052868751809,-0.0421078336399631,-2.24163230457122,\ +-4,-0.257969,-3.73444090909091,3.14758873811171,-0.679053462974004,-0.0421093856840831,-2.2416338207612,\ +-4,-0.257969,-3.7069101010101,3.14758846688884,-0.679054072968891,-0.0421109789247615,-2.24163537719604,\ +-4,-0.257969,-3.67937929292929,3.14758818836997,-0.679054699372904,-0.0421126150243065,-2.24163697549966,\ +-4,-0.257969,-3.65184848484848,3.14758790225666,-0.67905534285719,-0.0421142957356785,-2.24163861738453,\ +-4,-0.257969,-3.62431767676768,3.14758760823402,-0.679056004130005,-0.042116022908757,-2.24164030465777,\ +-4,-0.257969,-3.59678686868687,3.14758730596948,-0.679056683939303,-0.0421177984971303,-2.24164203922786,\ +-4,-0.257969,-3.56925606060606,3.14758699511156,-0.679057383075574,-0.0421196245654683,-2.24164382311176,\ +-4,-0.257969,-3.54172525252525,3.1475866752885,-0.679058102374901,-0.0421215032975305,-2.24164565844279,\ +-4,-0.257969,-3.51419444444444,3.14758634610682,-0.679058842722303,-0.0421234370048786,-2.2416475474791,\ +-4,-0.257969,-3.48666363636364,3.14758600714963,-0.679059605055351,-0.0421254281363646,-2.24164949261299,\ +-4,-0.257969,-3.45913282828283,3.14758565797492,-0.679060390368152,-0.0421274792884761,-2.24165149638094,\ +-4,-0.257969,-3.43160202020202,3.14758529811362,-0.679061199715656,-0.0421295932166337,-2.24165356147474,\ +-4,-0.257969,-3.40407121212121,3.14758492706752,-0.679062034218393,-0.0421317728475397,-2.24165569075348,\ +-4,-0.257969,-3.3765404040404,3.14758454430694,-0.679062895067647,-0.0421340212926967,-2.24165788725677,\ +-4,-0.257969,-3.3490095959596,3.14758414926819,-0.679063783531126,-0.042136341863229,-2.24166015421925,\ +-4,-0.257969,-3.32147878787879,3.14758374135088,-0.6790647009592,-0.0421387380861506,-2.24166249508646,\ +-4,-0.257969,-3.29394797979798,3.14758331991481,-0.679065648791742,-0.0421412137222535,-2.24166491353231,\ +-4,-0.257969,-3.26641717171717,3.14758288427657,-0.67906662856567,-0.0421437727858023,-2.24166741347833,\ +-4,-0.257969,-3.23888636363636,3.14758243370599,-0.679067641923264,-0.0421464195662548,-2.24166999911487,\ +-4,-0.257969,-3.21135555555555,3.14758196742191,-0.679068690621355,-0.0421491586522561,-2.24167267492459,\ +-4,-0.257969,-3.18382474747475,3.14758148458775,-0.679069776541475,-0.0421519949581856,-2.24167544570835,\ +-4,-0.257969,-3.15629393939394,3.14758098430645,-0.679070901701151,-0.0421549337535835,-2.24167831661393,\ +-4,-0.257969,-3.12876313131313,3.14758046561495,-0.679072068266386,-0.0421579806958253,-2.24168129316803,\ +-4,-0.257969,-3.10123232323232,3.14757992747794,-0.67907327856559,-0.0421611418664711,-2.24168438131173,\ +-4,-0.257969,-3.07370151515151,3.14757936878106,-0.679074535105098,-0.0421644238117807,-2.24168758744004,\ +-4,-0.257969,-3.04617070707071,3.14757878832308,-0.679075840586475,-0.0421678335879649,-2.24169091844618,\ +-4,-0.257969,-3.0186398989899,3.14757818480737,-0.679077197925926,-0.0421713788118262,-2.24169438177099,\ +-4,-0.257969,-2.99110909090909,3.1475775568322,-0.679078610276024,-0.0421750677175592,-2.24169798545843,\ +-4,-0.257969,-2.96357828282828,3.14757690287986,-0.679080081050179,-0.0421789092205994,-2.24170173821799,\ +-4,-0.257969,-2.93604747474747,3.14757622130444,-0.67908161395015,-0.0421829129895619,-2.24170564949494,\ +-4,-0.257969,-2.90851666666667,3.14757551031795,-0.679083212997183,-0.0421870895274936,-2.24170972954968,\ +-4,-0.257969,-2.88098585858586,3.14757476797472,-0.679084882567217,-0.042191450263876,-2.24171398954765,\ +-4,-0.257969,-2.85345505050505,3.1475739921536,-0.679086627430881,-0.0421960076590769,-2.24171844166138,\ +-4,-0.257969,-2.82592424242424,3.14757318053765,-0.679088452799017,-0.0422007753232545,-2.24172309918662,\ +-4,-0.257969,-2.79839343434343,3.14757233059115,-0.679090364374658,-0.0422057681521143,-2.24172797667495,\ +-4,-0.257969,-2.77086262626263,3.14757143953303,-0.679092368412545,-0.0422110024823617,-2.24173309008569,\ +-4,-0.257969,-2.74333181818182,3.14757050430653,-0.679094471787493,-0.0422164962702725,-2.24173845696031,\ +-4,-0.257969,-2.71580101010101,3.14756952154414,-0.67909668207319,-0.0422222692974938,-2.24174409662345,\ +-4,-0.257969,-2.6882702020202,3.14756848752714,-0.679099007633307,-0.04222834340904,-2.24175003041551,\ +-4,-0.257969,-2.66073939393939,3.14756739813849,-0.679101457727276,-0.0422347427895305,-2.24175628196239,\ +-4,-0.257969,-2.63320858585858,3.14756624880809,-0.679104042633484,-0.0422414942850179,-2.24176287748997,\ +-4,-0.257969,-2.60567777777778,3.14756503444869,-0.67910677379343,-0.0422486277794498,-2.24176984619186,\ +-4,-0.257969,-2.57814696969697,3.14756374938061,-0.679109663981014,-0.0422561766368875,-2.24177722066135,\ +-4,-0.257969,-2.55061616161616,3.1475623872429,-0.679112727502336,-0.0422641782232897,-2.2417850374012,\ +-4,-0.257969,-2.52308535353535,3.14756094088809,-0.679115980432487,-0.0422726745250777,-2.24179333742791,\ +-4,-0.257969,-2.49555454545454,3.14755940225667,-0.679119440897737,-0.0422817128860918,-2.2418021669916,\ +-4,-0.257969,-2.46802373737374,3.14755776222685,-0.679123129413443,-0.04229134689025,-2.24181157843834,\ +-4,-0.257969,-2.44049292929293,3.14755601043362,-0.679127069291107,-0.0423016374246563,-2.24182163124866,\ +-4,-0.257969,-2.41296212121212,3.14755413504943,-0.679131287131527,-0.0423126539677198,-2.24183239329595,\ +-4,-0.257969,-2.38543131313131,3.14755212251681,-0.679135813426179,-0.0423244761598807,-2.24184394238085,\ +-4,-0.257969,-2.3579005050505,3.14754995722009,-0.679140683295532,-0.0423371957320146,-2.24185636811513,\ +-4,-0.257969,-2.3303696969697,3.14754762107945,-0.679145937402144,-0.0423509188903025,-2.24186977425148,\ +-4,-0.257969,-2.30283888888889,3.1475450930448,-0.679151623088713,-0.0423657692887849,-2.24188428158737,\ +-4,-0.257969,-2.27530808080808,3.14754234845982,-0.679157795808672,-0.0423818917658036,-2.24190003161522,\ +-4,-0.257969,-2.24777727272727,3.14753935825508,-0.679164520940766,-0.0423994570835904,-2.24191719115244,\ +-4,-0.257969,-2.22024646464646,3.14753608791441,-0.679171876113711,-0.0424186679999361,-2.24193595827284,\ +-4,-0.257969,-2.19271565656565,3.14753249613656,-0.679179954216239,-0.0424397671301872,-2.24195656998708,\ +-4,-0.257969,-2.16518484848485,3.14752853308179,-0.679188867340648,-0.042463047247291,-2.24197931230466,\ +-4,-0.257969,-2.13765404040404,3.14752413804504,-0.679198752015861,-0.0424888649500276,-2.24200453358652,\ +-4,-0.257969,-2.11012323232323,3.14751923632447,-0.679209776250396,-0.042517659058485,-2.24203266251544,\ +-4,-0.257969,-2.08259242424242,3.14751373494055,-0.679222149160198,-0.0425499757608957,-2.24206423266204,\ +-4,-0.257969,-2.05506161616161,3.14750751668183,-0.679236134360206,-0.0425865035909786,-2.24209991665404,\ +-4,-0.257969,-2.02753080808081,3.14750043166061,-0.67925206895589,-0.04262812303175,-2.24214057463424,\ +-4,-0.257969,-2,3.14749228507318,-0.679270391071391,-0.0426759784161155,-2.2421873245,\ +-4,-0.254961,-4.72555,3.14759527299931,-0.679038765658546,-0.0420709978854557,-2.24159631976822,\ +-4,-0.254961,-4.69801919191919,3.14759514803162,-0.679039046717633,-0.0420717319813933,-2.24159703690564,\ +-4,-0.254961,-4.67048838383838,3.14759502079672,-0.679039332875804,-0.0420724793955951,-2.24159776705365,\ +-4,-0.254961,-4.64295757575758,3.14759489123235,-0.679039624273099,-0.0420732404938165,-2.24159851056955,\ +-4,-0.254961,-4.61542676767677,3.14759475927391,-0.679039921054724,-0.0420740156553301,-2.24159926782388,\ +-4,-0.254961,-4.58789595959596,3.14759462485448,-0.679040223371309,-0.0420748052735553,-2.24160003920095,\ +-4,-0.254961,-4.56036515151515,3.14759448790453,-0.679040531379148,-0.042075609756724,-2.24160082509956,\ +-4,-0.254961,-4.53283434343434,3.14759434835193,-0.679040845240481,-0.0420764295285842,-2.24160162593367,\ +-4,-0.254961,-4.50530353535354,3.14759420612178,-0.679041165123772,-0.0420772650291448,-2.24160244213314,\ +-4,-0.254961,-4.47777272727273,3.14759406113629,-0.679041491204007,-0.0420781167154627,-2.24160327414445,\ +-4,-0.254961,-4.45024191919192,3.14759391331458,-0.67904182366303,-0.0420789850624771,-2.24160412243158,\ +-4,-0.254961,-4.42271111111111,3.14759376257261,-0.679042162689858,-0.0420798705638915,-2.24160498747681,\ +-4,-0.254961,-4.3951803030303,3.14759360882298,-0.679042508481057,-0.0420807737331116,-2.24160586978171,\ +-4,-0.254961,-4.36764949494949,3.14759345197479,-0.679042861241115,-0.0420816951042359,-2.24160676986801,\ +-4,-0.254961,-4.34011868686869,3.14759329193342,-0.679043221182845,-0.0420826352331097,-2.24160768827875,\ +-4,-0.254961,-4.31258787878788,3.14759312860031,-0.679043588527815,-0.0420835946984442,-2.24160862557924,\ +-4,-0.254961,-4.28505707070707,3.14759296187289,-0.679043963506799,-0.0420845741030032,-2.24160958235834,\ +-4,-0.254961,-4.25752626262626,3.14759279164422,-0.679044346360268,-0.0420855740748663,-2.24161055922962,\ +-4,-0.254961,-4.22999545454545,3.14759261780285,-0.6790447373389,-0.0420865952687727,-2.24161155683269,\ +-4,-0.254961,-4.20246464646465,3.14759244023255,-0.679045136704126,-0.0420876383675493,-2.24161257583459,\ +-4,-0.254961,-4.17493383838384,3.14759225881201,-0.679045544728706,-0.0420887040836347,-2.24161361693132,\ +-4,-0.254961,-4.14740303030303,3.14759207341467,-0.679045961697373,-0.0420897931607016,-2.24161468084936,\ +-4,-0.254961,-4.11987222222222,3.14759188390828,-0.67904638790747,-0.042090906375387,-2.24161576834741,\ +-4,-0.254961,-4.09234141414141,3.14759169015473,-0.679046823669675,-0.0420920445391396,-2.24161688021816,\ +-4,-0.254961,-4.06481060606061,3.14759149200963,-0.679047269308741,-0.042093208500193,-2.24161801729028,\ +-4,-0.254961,-4.0372797979798,3.14759128932193,-0.679047725164323,-0.0420943991456709,-2.24161918043037,\ +-4,-0.254961,-4.00974898989899,3.14759108193363,-0.679048191591815,-0.042095617403847,-2.24162037054527,\ +-4,-0.254961,-3.98221818181818,3.14759086967929,-0.679048668963304,-0.0420968642465544,-2.24162158858437,\ +-4,-0.254961,-3.95468737373737,3.1475906523856,-0.679049157668537,-0.0420981406917729,-2.24162283554213,\ +-4,-0.254961,-3.92715656565657,3.14759042987097,-0.67904965811599,-0.0420994478064012,-2.24162411246079,\ +-4,-0.254961,-3.89962575757576,3.14759020194492,-0.679050170734008,-0.0421007867092297,-2.24162542043331,\ +-4,-0.254961,-3.87209494949495,3.1475899684076,-0.679050695972027,-0.0421021585741362,-2.24162676060644,\ +-4,-0.254961,-3.84456414141414,3.14758972904926,-0.679051234301887,-0.042103564633517,-2.24162813418411,\ +-4,-0.254961,-3.81703333333333,3.14758948364949,-0.679051786219247,-0.0421050061819802,-2.24162954243102,\ +-4,-0.254961,-3.78950252525252,3.14758923197663,-0.679052352245112,-0.0421064845803212,-2.24163098667653,\ +-4,-0.254961,-3.76197171717172,3.14758897378704,-0.679052932927455,-0.0421080012598073,-2.24163246831884,\ +-4,-0.254961,-3.73444090909091,3.14758870882428,-0.67905352884301,-0.0421095577267995,-2.24163398882951,\ +-4,-0.254961,-3.7069101010101,3.1475884368183,-0.679054140599173,-0.0421111555677431,-2.24163554975836,\ +-4,-0.254961,-3.67937929292929,3.14758815748447,-0.679054768836062,-0.0421127964545606,-2.24163715273865,\ +-4,-0.254961,-3.65184848484848,3.14758787052263,-0.679055414228756,-0.0421144821504887,-2.24163879949293,\ +-4,-0.254961,-3.62431767676768,3.14758757561599,-0.679056077489717,-0.0421162145163968,-2.24164049183904,\ +-4,-0.254961,-3.59678686868687,3.14758727242999,-0.679056759371413,-0.0421179955176406,-2.24164223169695,\ +-4,-0.254961,-3.56925606060606,3.14758696061101,-0.679057460669151,-0.0421198272314998,-2.24164402109595,\ +-4,-0.254961,-3.54172525252525,3.147586639785,-0.6790581822242,-0.0421217118552606,-2.24164586218258,\ +-4,-0.254961,-3.51419444444444,3.14758630955597,-0.679058924927134,-0.0421236517150081,-2.24164775722916,\ +-4,-0.254961,-3.48666363636364,3.1475859695044,-0.679059689721507,-0.042125649275205,-2.24164970864324,\ +-4,-0.254961,-3.45913282828283,3.14758561918541,-0.679060477607851,-0.0421277071491366,-2.24165171897774,\ +-4,-0.254961,-3.43160202020202,3.14758525812686,-0.679061289648049,-0.0421298281103165,-2.24165379094209,\ +-4,-0.254961,-3.40407121212121,3.1475848858272,-0.679062126970096,-0.0421320151049582,-2.24165592741445,\ +-4,-0.254961,-3.3765404040404,3.14758450175318,-0.679062990773343,-0.0421342712656286,-2.24165813145502,\ +-4,-0.254961,-3.3490095959596,3.14758410533724,-0.679063882334216,-0.0421365999262212,-2.24166040632067,\ +-4,-0.254961,-3.32147878787879,3.14758369597477,-0.67906480301252,-0.0421390046383908,-2.24166275548102,\ +-4,-0.254961,-3.29394797979798,3.14758327302104,-0.67906575425835,-0.042141489189631,-2.24166518263604,\ +-4,-0.254961,-3.26641717171717,3.14758283578772,-0.679066737619717,-0.042144057623178,-2.2416676917356,\ +-4,-0.254961,-3.23888636363636,3.14758238353926,-0.67906775475095,-0.042146714259968,-2.24167028700079,\ +-4,-0.254961,-3.21135555555555,3.14758191548868,-0.679068807421991,-0.0421494637228947,-2.24167297294772,\ +-4,-0.254961,-3.18382474747475,3.14758143079305,-0.679069897528671,-0.0421523109636552,-2.24167575441369,\ +-4,-0.254961,-3.15629393939394,3.14758092854837,-0.679071027104094,-0.0421552612925124,-2.24167863658631,\ +-4,-0.254961,-3.12876313131313,3.147580407784,-0.679072198331311,-0.042158320411348,-2.24168162503571,\ +-4,-0.254961,-3.10123232323232,3.14757986745636,-0.679073413557386,-0.0421614944504436,-2.24168472575058,\ +-4,-0.254961,-3.07370151515151,3.14757930644195,-0.679074675309103,-0.0421647900094834,-2.24168794517812,\ +-4,-0.254961,-3.04617070707071,3.1475787235296,-0.679075986310497,-0.0421682142033594,-2.24169129026888,\ +-4,-0.254961,-3.0186398989899,3.14757811741167,-0.679077349502499,-0.0421717747134475,-2.24169476852679,\ +-4,-0.254961,-2.99110909090909,3.1475774866743,-0.679078768064936,-0.0421754798451316,-2.24169838806534,\ +-4,-0.254961,-2.96357828282828,3.1475768297864,-0.679080245441318,-0.0421793385924814,-2.24170215767085,\ +-4,-0.254961,-2.93604747474747,3.14757614508725,-0.679081785366736,-0.0421833607111476,-2.24170608687361,\ +-4,-0.254961,-2.90851666666667,3.14757543077243,-0.67908339189939,-0.0421875568007137,-2.24171018602831,\ +-4,-0.254961,-2.88098585858586,3.14757468487798,-0.679085069456307,-0.0421919383979711,-2.24171446640525,\ +-4,-0.254961,-2.85345505050505,3.14757390526239,-0.679086822853889,-0.0421965180828447,-2.24171894029373,\ +-4,-0.254961,-2.82592424242424,3.14757308958605,-0.679088657354102,-0.0422013095990168,-2.24172362111995,\ +-4,-0.254961,-2.79839343434343,3.14757223528773,-0.679090578717211,-0.0422063279916866,-2.24172852358154,\ +-4,-0.254961,-2.77086262626263,3.1475713395578,-0.67909259326221,-0.0422115897653716,-2.24173366380174,\ +-4,-0.254961,-2.74333181818182,3.14757039930738,-0.67909470793623,-0.0422171130652388,-2.24173905950654,\ +-4,-0.254961,-2.71580101010101,3.14756941113265,-0.679096930394602,-0.042222917886163,-2.24174473022892,\ +-4,-0.254961,-2.6882702020202,3.14756837127378,-0.679099269093427,-0.0422290263145887,-2.24175069754509,\ +-4,-0.254961,-2.66073939393939,3.14756727556704,-0.679101733397123,-0.0422354628093617,-2.24175698534888,\ +-4,-0.254961,-2.63320858585858,3.14756611938913,-0.679104333703741,-0.0422422545290552,-2.24176362017144,\ +-4,-0.254961,-2.60567777777778,3.14756489759195,-0.679107081591616,-0.0422494317150294,-2.24177063155553,\ +-4,-0.254961,-2.57814696969697,3.14756360442601,-0.679109989991729,-0.0422570281416187,-2.24177805249527,\ +-4,-0.254961,-2.55061616161616,3.14756223344986,-0.679113073391195,-0.0422650816475828,-2.24178591995528,\ +-4,-0.254961,-2.52308535353535,3.14756077742289,-0.67911634807458,-0.0422736347664639,-2.24179427548654,\ +-4,-0.254961,-2.49555454545454,3.14755922817731,-0.679119832411619,-0.0422827354780188,-2.24180316596038,\ +-4,-0.254961,-2.46802373737374,3.14755757646496,-0.679123547201987,-0.0422924381087458,-2.24181264444834,\ +-4,-0.254961,-2.44049292929293,3.14755581177244,-0.679127516090826,-0.0423028044172079,-2.24182277128225,\ +-4,-0.254961,-2.41296212121212,3.14755392209721,-0.67913176607258,-0.0423139049099549,-2.24183361533988,\ +-4,-0.254961,-2.38543131313131,3.14755189367411,-0.679136328105766,-0.0423258204473085,-2.24184525561357,\ +-4,-0.254961,-2.3579005050505,3.1475497106396,-0.679141237868388,-0.0423386442163365,-2.24185778313767,\ +-4,-0.254961,-2.3303696969697,3.14754735461599,-0.679146536692865,-0.0423524841728594,-2.24187130337406,\ +-4,-0.254961,-2.30283888888889,3.14754480419281,-0.679152272732437,-0.0423674660879377,-2.24188593918837,\ +-4,-0.254961,-2.27530808080808,3.14754203427439,-0.679158502428706,-0.0423837373809221,-2.24190183459434,\ +-4,-0.254961,-2.24777727272727,3.14753901525117,-0.679165292375101,-0.0424014719866485,-2.24191915950874,\ +-4,-0.254961,-2.22024646464646,3.1475357119372,-0.679172721706786,-0.0424208765976128,-2.24193811584917,\ +-4,-0.254961,-2.19271565656565,3.14753208219238,-0.679180885199076,-0.0424421987566842,-2.24195894543998,\ +-4,-0.254961,-2.16518484848485,3.14752807511525,-0.679189897332135,-0.0424657374736683,-2.24198194038348,\ +-4,-0.254961,-2.13765404040404,3.14752362864112,-0.67919989769282,-0.0424918573343568,-2.24200745684308,\ +-4,-0.254961,-2.11012323232323,3.14751866630426,-0.679211058256657,-0.0425210075202052,-2.24203593362355,\ +-4,-0.254961,-2.08259242424242,3.14751309280387,-0.679223593360318,-0.0425537478554314,-2.24206791761652,\ +-4,-0.254961,-2.05506161616161,3.14750678782412,-0.679237773600578,-0.0425907851095573,-2.24210409926424,\ +-4,-0.254961,-2.02753080808081,3.14749959725021,-0.67925394558998,-0.0426330245970604,-2.24214536296732,\ +-4,-0.254961,-2,3.14749132040338,-0.679272560665902,-0.0426816451623525,-2.24219286033739,\ +-4,-0.253782,-4.72555,3.14759526769325,-0.679038777592148,-0.0420710290547301,-2.24159635021746,\ +-4,-0.253782,-4.69801919191919,3.14759514262973,-0.679039058866796,-0.0420717637136977,-2.24159706790488,\ +-4,-0.253782,-4.67048838383838,3.14759501529635,-0.679039345246426,-0.0420725117063232,-2.24159779861796,\ +-4,-0.253782,-4.64295757575758,3.14759488563079,-0.67903963687129,-0.04207327339893,-2.24159854271452,\ +-4,-0.253782,-4.61542676767677,3.14759475356837,-0.679039933886822,-0.0420740491713822,-2.24159930056567,\ +-4,-0.253782,-4.58789595959596,3.147594619042,-0.679040236443889,-0.0420748394177201,-2.24160007255634,\ +-4,-0.253782,-4.56036515151515,3.14759448198209,-0.679040544699034,-0.0420756445468248,-2.24160085908597,\ +-4,-0.253782,-4.53283434343434,3.14759434231639,-0.679040858814756,-0.042076464983126,-2.24160166056918,\ +-4,-0.253782,-4.50530353535354,3.14759419996986,-0.679041178959794,-0.0420773011673456,-2.24160247743651,\ +-4,-0.253782,-4.47777272727273,3.14759405486457,-0.679041505309424,-0.0420781535572892,-2.24160331013519,\ +-4,-0.253782,-4.45024191919192,3.14759390691954,-0.679041838045786,-0.0420790226286808,-2.24160415912996,\ +-4,-0.253782,-4.42271111111111,3.14759375605059,-0.679042177358212,-0.0420799088760482,-2.24160502490391,\ +-4,-0.253782,-4.3951803030303,3.14759360217017,-0.679042523443603,-0.0420808128136627,-2.24160590795945,\ +-4,-0.253782,-4.36764949494949,3.14759344518719,-0.679042876506792,-0.0420817349765314,-2.24160680881922,\ +-4,-0.253782,-4.34011868686869,3.14759328500689,-0.679043236760959,-0.0420826759214566,-2.24160772802714,\ +-4,-0.253782,-4.31258787878788,3.14759312153057,-0.679043604428054,-0.0420836362281536,-2.24160866614957,\ +-4,-0.253782,-4.28505707070707,3.14759295465543,-0.679043979739263,-0.0420846165004447,-2.24160962377636,\ +-4,-0.253782,-4.25752626262626,3.14759278427437,-0.679044362935479,-0.0420856173675224,-2.24161060152217,\ +-4,-0.253782,-4.22999545454545,3.14759261027573,-0.67904475426783,-0.042086639485299,-2.24161160002776,\ +-4,-0.253782,-4.20246464646465,3.14759243254305,-0.679045153998213,-0.0420876835378377,-2.24161261996139,\ +-4,-0.253782,-4.17493383838384,3.14759225095486,-0.679045562399903,-0.0420887502388805,-2.24161366202032,\ +-4,-0.253782,-4.14740303030303,3.14759206538428,-0.679045979758141,-0.0420898403334762,-2.24161472693238,\ +-4,-0.253782,-4.11987222222222,3.14759187569888,-0.679046406370842,-0.0420909545997134,-2.24161581545768,\ +-4,-0.253782,-4.09234141414141,3.14759168176028,-0.679046842549261,-0.0420920938505746,-2.24161692839045,\ +-4,-0.253782,-4.06481060606061,3.14759148342378,-0.679047288618778,-0.0420932589359143,-2.24161806656087,\ +-4,-0.253782,-4.0372797979798,3.14759128053807,-0.679047744919697,-0.0420944507445725,-2.24161923083727,\ +-4,-0.253782,-4.00974898989899,3.14759107294483,-0.679048211808116,-0.0420956702066363,-2.24162042212826,\ +-4,-0.253782,-3.98221818181818,3.14759086047829,-0.679048689656853,-0.0420969182958615,-2.24162164138507,\ +-4,-0.253782,-3.95468737373737,3.14759064296479,-0.679049178856432,-0.0420981960322643,-2.24162288960419,\ +-4,-0.253782,-3.92715656565657,3.14759042022239,-0.679049679816161,-0.0420995044849032,-2.24162416782995,\ +-4,-0.253782,-3.89962575757576,3.1475901920602,-0.67905019296526,-0.042100844774861,-2.24162547715755,\ +-4,-0.253782,-3.87209494949495,3.14758995827798,-0.6790507187541,-0.0421022180784489,-2.24162681873612,\ +-4,-0.253782,-3.84456414141414,3.14758971866551,-0.679051257655507,-0.04210362563065,-2.24162819377213,\ +-4,-0.253782,-3.81703333333333,3.14758947300192,-0.679051810166197,-0.0421050687288236,-2.24162960353295,\ +-4,-0.253782,-3.78950252525252,3.14758922105506,-0.67905237680829,-0.0421065487366921,-2.24163104935081,\ +-4,-0.253782,-3.76197171717172,3.14758896258076,-0.67905295813096,-0.0421080670886421,-2.24163253262695,\ +-4,-0.253782,-3.73444090909091,3.14758869732202,-0.679053554712211,-0.0421096252943589,-2.24163405483618,\ +-4,-0.253782,-3.7069101010101,3.14758842500817,-0.679054167160797,-0.0421112249438352,-2.24163561753178,\ +-4,-0.253782,-3.67937929292929,3.14758814535393,-0.679054796118286,-0.0421128677127806,-2.24163722235073,\ +-4,-0.253782,-3.65184848484848,3.14758785805847,-0.679055442261308,-0.0421145553684802,-2.24163887101949,\ +-4,-0.253782,-3.62431767676768,3.14758756280427,-0.679056106303981,-0.0421162897761329,-2.24164056536018,\ +-4,-0.253782,-3.59678686868687,3.14758725925595,-0.679056789000545,-0.0421180729057315,-2.24164230729728,\ +-4,-0.253782,-3.56925606060606,3.14758694705907,-0.679057491148217,-0.0421199068395238,-2.24164409886493,\ +-4,-0.253782,-3.54172525252525,3.14758662583865,-0.679058213590303,-0.0421217937801265,-2.24164594221487,\ +-4,-0.253782,-3.51419444444444,3.14758629519774,-0.679058957219567,-0.0421237360593488,-2.24164783962504,\ +-4,-0.253782,-3.48666363636364,3.14758595471577,-0.67905972298192,-0.0421257361478058,-2.24164979350898,\ +-4,-0.253782,-3.45913282828283,3.14758560394674,-0.679060511880429,-0.0421277966654035,-2.24165180642607,\ +-4,-0.253782,-3.43160202020202,3.14758524241729,-0.679061324979709,-0.0421299203927879,-2.24165388109273,\ +-4,-0.253782,-3.40407121212121,3.14758486962458,-0.679062163410696,-0.0421321102838641,-2.24165602039461,\ +-4,-0.253782,-3.3765404040404,3.14758448503389,-0.679063028375924,-0.0421343694795044,-2.24165822740003,\ +-4,-0.253782,-3.3490095959596,3.14758408807619,-0.679063921155258,-0.0421367013225793,-2.24166050537465,\ +-4,-0.253782,-3.32147878787879,3.14758367814519,-0.679064843112217,-0.0421391093744613,-2.24166285779755,\ +-4,-0.253782,-3.29394797979798,3.14758325459437,-0.679065795700933,-0.0421415974331739,-2.24166528837903,\ +-4,-0.253782,-3.26641717171717,3.14758281673345,-0.679066780473787,-0.0421441695533801,-2.24166780108008,\ +-4,-0.253782,-3.23888636363636,3.14758236382478,-0.67906779908987,-0.0421468300684335,-2.24167040013394,\ +-4,-0.253782,-3.21135555555555,3.14758189507908,-0.679068853324291,-0.0421495836147381,-2.24167309006991,\ +-4,-0.253782,-3.18382474747475,3.14758140965089,-0.679069945078517,-0.042152435158715,-2.2416758757397,\ +-4,-0.253782,-3.15629393939394,3.1475809066335,-0.679071076391808,-0.0421553900266953,-2.24167876234657,\ +-4,-0.253782,-3.12876313131313,3.14758038505328,-0.679072249453939,-0.0421584539381247,-2.24168175547786,\ +-4,-0.253782,-3.10123232323232,3.14757984386334,-0.679073466619334,-0.0421616330425153,-2.241684861141,\ +-4,-0.253782,-3.07370151515151,3.14757928193666,-0.679074730422853,-0.0421649339606385,-2.24168808580383,\ +-4,-0.253782,-3.04617070707071,3.14757869805805,-0.679076043597401,-0.042168363830554,-2.24169143643951,\ +-4,-0.253782,-3.0186398989899,3.14757809091556,-0.679077409093665,-0.0421719303591337,-2.24169492057686,\ +-4,-0.253782,-2.99110909090909,3.14757745909057,-0.679078830102245,-0.0421756418798741,-2.24169854635688,\ +-4,-0.253782,-2.96357828282828,3.14757680104668,-0.679080310078535,-0.042179507417903,-2.2417023225962,\ +-4,-0.253782,-2.93604747474747,3.14757611511729,-0.679081852770791,-0.042183536763252,-2.24170625885869,\ +-4,-0.253782,-2.90851666666667,3.14757539949152,-0.679083462251817,-0.0421877405536448,-2.24171036553631,\ +-4,-0.253782,-2.88098585858586,3.1475746521982,-0.679085142954874,-0.0421921303682763,-2.2417146539408,\ +-4,-0.253782,-2.85345505050505,3.14757387108778,-0.679086899714454,-0.0421967188343242,-2.2417191364076,\ +-4,-0.253782,-2.82592424242424,3.14757305381161,-0.679088737812731,-0.0422015197482529,-2.24172382641448,\ +-4,-0.253782,-2.79839343434343,3.14757219779845,-0.679090663032603,-0.0422065482143674,-2.24172873871681,\ +-4,-0.253782,-2.77086262626263,3.14757130022739,-0.679092681718466,-0.0422118208035472,-2.24173388950265,\ +-4,-0.253782,-2.74333181818182,3.14757035799675,-0.679094800846065,-0.0422173557356733,-2.241739296571,\ +-4,-0.253782,-2.71580101010101,3.14756936768843,-0.679097028103016,-0.0422231730899803,-2.24174497953722,\ +-4,-0.253782,-2.6882702020202,3.14756832552629,-0.679099371982012,-0.0422292950484514,-2.24175096007087,\ +-4,-0.253782,-2.66073939393939,3.14756722732813,-0.679101841889024,-0.042235746178477,-2.24175726217181,\ +-4,-0.253782,-2.63320858585858,3.14756606844961,-0.679104448269474,-0.042242553762363,-2.24176391249209,\ +-4,-0.253782,-2.60567777777778,3.14756484371852,-0.679107202755892,-0.0422497481830172,-2.24177094071272,\ +-4,-0.253782,-2.57814696969697,3.14756354735768,-0.679110118341485,-0.0422573633773018,-2.2417783799866,\ +-4,-0.253782,-2.55061616161616,3.14756217289378,-0.679113209585098,-0.0422654373713321,-2.24178626746137,\ +-4,-0.253782,-2.52308535353535,3.14756071304926,-0.679116492854334,-0.042274012915527,-2.24179464489988,\ +-4,-0.253782,-2.49555454545454,3.14755915961344,-0.67911998661547,-0.0422831382418048,-2.24180355941983,\ +-4,-0.253782,-2.46802373737374,3.14755750328798,-0.679123711780961,-0.0422928679712293,-2.24181306438046,\ +-4,-0.253782,-2.44049292929293,3.14755573350064,-0.679127692128351,-0.0423032642081867,-2.24182322045148,\ +-4,-0.253782,-2.41296212121212,3.14755383817936,-0.679131954808357,-0.042314397867397,-2.24183409690939,\ +-4,-0.253782,-2.38543131313131,3.14755180347653,-0.679136530964999,-0.0423263502936885,-2.24184577321985,\ +-4,-0.253782,-2.3579005050505,3.14754961343009,-0.679141456497818,-0.0423392152527687,-2.24185834098245,\ +-4,-0.253782,-2.3303696969697,3.14754724954394,-0.679146773005557,-0.0423531013960616,-2.24187190633865,\ +-4,-0.253782,-2.30283888888889,3.14754469026428,-0.67915252896388,-0.0423681353367556,-2.24188659297671,\ +-4,-0.253782,-2.27530808080808,3.14754191032049,-0.679158781207703,-0.042384465521515,-2.24190254591399,\ +-4,-0.253782,-2.24777727272727,3.14753887988798,-0.679165596814249,-0.0424022671487822,-2.24191993630164,\ +-4,-0.253782,-2.22024646464646,3.14753556351376,-0.679173055519109,-0.0424217484793015,-2.24193896758932,\ +-4,-0.253782,-2.19271565656565,3.1475319187232,-0.679181252850106,-0.0424431590214157,-2.24195988352142,\ +-4,-0.253782,-2.16518484848485,3.14752789419095,-0.679190304240676,-0.0424668002747762,-2.24198297863257,\ +-4,-0.253782,-2.13765404040404,3.14752342730902,-0.679200350499598,-0.0424930400166893,-2.24200861220398,\ +-4,-0.253782,-2.11012323232323,3.14751844090615,-0.679211565189198,-0.042522331573178,-2.24203722708927,\ +-4,-0.253782,-2.08259242424242,3.14751283875194,-0.679224164736859,-0.0425552402291736,-2.24206937551458,\ +-4,-0.253782,-2.05506161616161,3.14750649928576,-0.679238422538953,-0.0425924800664161,-2.2421057550655,\ +-4,-0.253782,-2.02753080808081,3.14749926669535,-0.679254689025744,-0.0426349663708776,-2.24214725988376,\ +-4,-0.253782,-2,3.1474909379388,-0.679273420849418,-0.0426838918686809,-2.24219505514202,\ +-4,-0.251804,-4.72555,3.14759525878223,-0.679038797633541,-0.0420710814006826,-2.24159640135415,\ +-4,-0.251804,-4.69801919191919,3.14759513355765,-0.679039079270396,-0.0420718170056968,-2.24159711996578,\ +-4,-0.251804,-4.67048838383838,3.14759500605882,-0.679039366022142,-0.0420725659702505,-2.24159785162832,\ +-4,-0.251804,-4.64295757575758,3.14759487622323,-0.679039658029397,-0.0420733286616179,-2.24159859670057,\ +-4,-0.251804,-4.61542676767677,3.14759474398605,-0.679039955437974,-0.0420741054606614,-2.2415993555546,\ +-4,-0.251804,-4.58789595959596,3.14759460928001,-0.67904025839914,-0.0420748967624638,-2.24160012857635,\ +-4,-0.251804,-4.56036515151515,3.14759447203532,-0.679040567069857,-0.0420757029770005,-2.24160091616633,\ +-4,-0.251804,-4.53283434343434,3.14759433217954,-0.679040881613066,-0.0420765245298452,-2.24160171874029,\ +-4,-0.251804,-4.50530353535354,3.14759418963744,-0.679041202197961,-0.0420773618629209,-2.24160253672993,\ +-4,-0.251804,-4.47777272727273,3.14759404433086,-0.679041529000299,-0.0420782154352923,-2.24160337058373,\ +-4,-0.251804,-4.45024191919192,3.14759389617861,-0.679041862202728,-0.0420790857240042,-2.2416042207677,\ +-4,-0.251804,-4.42271111111111,3.14759374509626,-0.679042201995115,-0.0420799732249708,-2.24160508776629,\ +-4,-0.251804,-4.3951803030303,3.14759359099601,-0.679042548574912,-0.0420808784539191,-2.24160597208333,\ +-4,-0.251804,-4.36764949494949,3.14759343378652,-0.679042902147538,-0.0420818019473868,-2.24160687424296,\ +-4,-0.251804,-4.34011868686869,3.14759327337275,-0.679043262926791,-0.0420827442637837,-2.24160779479068,\ +-4,-0.251804,-4.31258787878788,3.1475931096557,-0.679043631135273,-0.0420837059845169,-2.24160873429447,\ +-4,-0.251804,-4.28505707070707,3.14759294253229,-0.679044007004841,-0.0420846877151878,-2.24160969334595,\ +-4,-0.251804,-4.25752626262626,3.1475927718951,-0.679044390777115,-0.0420856900868632,-2.2416106725616,\ +-4,-0.251804,-4.22999545454545,3.14759259763212,-0.679044782703973,-0.042086713757429,-2.24161167258411,\ +-4,-0.251804,-4.20246464646465,3.14759241962655,-0.67904518304811,-0.0420877594130287,-2.24161269408377,\ +-4,-0.251804,-4.17493383838384,3.14759223775653,-0.679045592083641,-0.0420888277695983,-2.24161373775998,\ +-4,-0.251804,-4.14740303030303,3.1475920518948,-0.679046010096697,-0.0420899195745003,-2.24161480434284,\ +-4,-0.251804,-4.11987222222222,3.14759186190852,-0.67904643738612,-0.0420910356082679,-2.24161589459484,\ +-4,-0.251804,-4.09234141414141,3.14759166765885,-0.67904687426416,-0.0420921766864652,-2.24161700931273,\ +-4,-0.251804,-4.06481060606061,3.14759146900062,-0.679047321057241,-0.0420933436616752,-2.24161814932936,\ +-4,-0.251804,-4.0372797979798,3.14759126578206,-0.679047778106773,-0.0420945374256245,-2.24161931551589,\ +-4,-0.251804,-4.00974898989899,3.1475910578443,-0.679048245770018,-0.0420957589114547,-2.24162050878389,\ +-4,-0.251804,-3.98221818181818,3.14759084502104,-0.679048724421038,-0.0420970090961565,-2.24162173008777,\ +-4,-0.251804,-3.95468737373737,3.14759062713804,-0.67904921445167,-0.042098289003175,-2.24162298042736,\ +-4,-0.251804,-3.92715656565657,3.14759040401271,-0.679049716272611,-0.0420995997052042,-2.24162426085054,\ +-4,-0.251804,-3.89962575757576,3.14759017545353,-0.679050230314558,-0.0421009423271854,-2.24162557245629,\ +-4,-0.251804,-3.87209494949495,3.14758994125956,-0.679050757029452,-0.0421023180495279,-2.24162691639775,\ +-4,-0.251804,-3.84456414141414,3.14758970121982,-0.679051296891788,-0.0421037281115687,-2.24162829388562,\ +-4,-0.251804,-3.81703333333333,3.14758945511269,-0.679051850400052,-0.0421051738152988,-2.2416297061918,\ +-4,-0.251804,-3.78950252525252,3.14758920270515,-0.679052418078251,-0.0421066565293708,-2.24163115465334,\ +-4,-0.251804,-3.76197171717172,3.14758894375214,-0.679053000477575,-0.0421081776934221,-2.24163264067662,\ +-4,-0.251804,-3.73444090909091,3.1475886779957,-0.679053598178169,-0.0421097388227368,-2.24163416574191,\ +-4,-0.251804,-3.7069101010101,3.14758840516416,-0.67905421179107,-0.0421113415132795,-2.24163573140833,\ +-4,-0.251804,-3.67937929292929,3.14758812497114,-0.67905484196029,-0.0421129874471398,-2.24163733931908,\ +-4,-0.251804,-3.65184848484848,3.14758783711466,-0.679055489365073,-0.0421146783984187,-2.24163899120728,\ +-4,-0.251804,-3.62431767676768,3.14758754127595,-0.679056154722323,-0.0421164162396097,-2.2416406889022,\ +-4,-0.251804,-3.59678686868687,3.14758723711832,-0.679056838789275,-0.042118202948513,-2.24164243433591,\ +-4,-0.251804,-3.56925606060606,3.14758692428587,-0.67905754236635,-0.0421200406157472,-2.24164422955076,\ +-4,-0.251804,-3.54172525252525,3.14758660240213,-0.679058266300286,-0.0421219314529071,-2.24164607670724,\ +-4,-0.251804,-3.51419444444444,3.14758627106849,-0.679059011487547,-0.0421238778014446,-2.24164797809272,\ +-4,-0.251804,-3.48666363636364,3.14758592986262,-0.679059778878006,-0.0421258821423404,-2.24164993613086,\ +-4,-0.251804,-3.45913282828283,3.14758557833661,-0.679060569479004,-0.0421279471066549,-2.24165195339194,\ +-4,-0.251804,-3.43160202020202,3.14758521601506,-0.679061384359757,-0.0421300754870519,-2.24165403260412,\ +-4,-0.251804,-3.40407121212121,3.14758484239291,-0.679062224656162,-0.0421322702503973,-2.24165617666572,\ +-4,-0.251804,-3.3765404040404,3.1475844569331,-0.679063091576111,-0.0421345345515581,-2.24165838865871,\ +-4,-0.251804,-3.3490095959596,3.14758405906399,-0.679063986405261,-0.0421368717485353,-2.24166067186355,\ +-4,-0.251804,-3.32147878787879,3.1475836481765,-0.679064910513406,-0.0421392854190776,-2.24166302977532,\ +-4,-0.251804,-3.29394797979798,3.1475832236211,-0.679065865361468,-0.0421417793789576,-2.24166546612165,\ +-4,-0.251804,-3.26641717171717,3.14758278470424,-0.679066852509206,-0.0421443577021006,-2.24166798488233,\ +-4,-0.251804,-3.23888636363636,3.14758233068469,-0.679067873623722,-0.042147024742791,-2.24167059031108,\ +-4,-0.251804,-3.21135555555555,3.1475818607693,-0.679068930488846,-0.0421497851602124,-2.24167328695944,\ +-4,-0.251804,-3.18382474747475,3.14758137410838,-0.679070025015554,-0.0421526439456096,-2.24167607970336,\ +-4,-0.251804,-3.15629393939394,3.14758086979061,-0.679071159253477,-0.0421556064524093,-2.24167897377258,\ +-4,-0.251804,-3.12876313131313,3.14758034683731,-0.679072335403728,-0.0421586784296767,-2.24168197478337,\ +-4,-0.251804,-3.10123232323232,3.14757980419609,-0.679073555833149,-0.0421618660593536,-2.24168508877486,\ +-4,-0.251804,-3.07370151515151,3.14757924073384,-0.679074823090222,-0.0421651759977821,-2.24168832224962,\ +-4,-0.251804,-3.04617070707071,3.14757865522875,-0.679076139922807,-0.0421686154221002,-2.24169168221898,\ +-4,-0.251804,-3.0186398989899,3.14757804636154,-0.679077509298067,-0.0421721920821939,-2.2416951762538,\ +-4,-0.251804,-2.99110909090909,3.14757741270551,-0.679078934424756,-0.0421759143589915,-2.2416988125414,\ +-4,-0.251804,-2.96357828282828,3.14757675271533,-0.679080418778334,-0.0421797913300276,-2.2417025999496,\ +-4,-0.251804,-2.93604747474747,3.14757606471455,-0.679081966129276,-0.0421838328433557,-2.24170654809897,\ +-4,-0.251804,-2.90851666666667,3.14757534688131,-0.679083580575028,-0.0421880496010733,-2.24171066744437,\ +-4,-0.251804,-2.88098585858586,3.14757459723226,-0.679085266576255,-0.0421924532539549,-2.24171496936742,\ +-4,-0.251804,-2.85345505050505,3.14757381360426,-0.679087028997994,-0.0421970565089523,-2.24171946628153,\ +-4,-0.251804,-2.82592424242424,3.14757299363352,-0.679088873156541,-0.042201873251652,-2.24172417175151,\ +-4,-0.251804,-2.79839343434343,3.14757213473175,-0.67909080487301,-0.0422069186861751,-2.24172910063026,\ +-4,-0.251804,-2.77086262626263,3.147571234059,-0.679092830534711,-0.0422122094954874,-2.24173426921533,\ +-4,-0.251804,-2.74333181818182,3.14757028849213,-0.679094957165709,-0.0422177640256827,-2.241739695429,\ +-4,-0.251804,-2.71580101010101,3.14756929458873,-0.679097192508195,-0.0422236024985264,-2.24174539902589,\ +-4,-0.251804,-2.6882702020202,3.1475682485452,-0.679099545116668,-0.0422297472574511,-2.24175140183329,\ +-4,-0.251804,-2.66073939393939,3.14756714614808,-0.679102024467346,-0.0422362230533067,-2.24175772803024,\ +-4,-0.251804,-2.63320858585858,3.14756598271745,-0.679104641085732,-0.0422430573775742,-2.24176440447317,\ +-4,-0.251804,-2.60567777777778,3.14756475304035,-0.67910740669599,-0.0422502808524977,-2.24177146107688,\ +-4,-0.251804,-2.57814696969697,3.14756345129282,-0.679110334396571,-0.0422579276898157,-2.24177893126279,\ +-4,-0.251804,-2.55061616161616,3.14756207094757,-0.679113438867656,-0.0422660362325802,-2.24178685248818,\ +-4,-0.251804,-2.52308535353535,3.14756060466458,-0.679116736617356,-0.0422746495981785,-2.24179526687437,\ +-4,-0.251804,-2.49555454545454,3.14755904416051,-0.679120246275343,-0.0422838164453118,-2.241804221956,\ +-4,-0.251804,-2.46802373737374,3.14755738005215,-0.679123988945002,-0.042293591893733,-2.24181377157946,\ +-4,-0.251804,-2.44049292929293,3.14755560166754,-0.679127988628103,-0.0423040386334719,-2.24182397698658,\ +-4,-0.251804,-2.41296212121212,3.14755369681693,-0.679132272740084,-0.0423152282706899,-2.24183490812934,\ +-4,-0.251804,-2.38543131313131,3.14755165151295,-0.67913687273932,-0.0423272429712524,-2.24184664527545,\ +-4,-0.251804,-2.3579005050505,3.14754944962653,-0.679141824900897,-0.0423401774817755,-2.24185928098277,\ +-4,-0.251804,-2.3303696969697,3.14754707246076,-0.67914717127521,-0.0423541416333273,-2.24187292254515,\ +-4,-0.251804,-2.30283888888889,3.14754449821862,-0.679152960884928,-0.04236926346783,-2.24188769504656,\ +-4,-0.251804,-2.27530808080808,3.14754170133269,-0.679159251232578,-0.0423856931756567,-2.24190374520781,\ +-4,-0.251804,-2.24777727272727,3.14753865161303,-0.67916611021694,-0.0424036081010889,-2.24192124627629,\ +-4,-0.251804,-2.22024646464646,3.14753531315309,-0.679173618593795,-0.0424232191694863,-2.24194040430475,\ +-4,-0.251804,-2.19271565656565,3.14753164290938,-0.679181873170306,-0.0424447792306976,-2.24196146630186,\ +-4,-0.251804,-2.16518484848485,3.14752758883549,-0.679190991001623,-0.0424685940201065,-2.24198473094016,\ +-4,-0.251804,-2.13765404040404,3.1475230873985,-0.679201114976733,-0.042495036748299,-2.24201056280861,\ +-4,-0.251804,-2.11012323232323,3.14751806022508,-0.679212421361499,-0.0425245678026458,-2.24203941165906,\ +-4,-0.251804,-2.08259242424242,3.14751240949962,-0.679225130148516,-0.0425577617800205,-2.24207183881449,\ +-4,-0.251804,-2.05506161616161,3.14750601153673,-0.679239519512893,-0.0425953452437254,-2.24210855405367,\ +-4,-0.251804,-2.02753080808081,3.14749870762337,-0.679255946408837,-0.042638250519546,-2.24215046816453,\ +-4,-0.251804,-2,3.14749029067429,-0.67927487658231,-0.0426876940855738,-2.242198769523,\ +-4,-0.247083,-4.72555,3.14759523746756,-0.679038845571387,-0.0420712066091575,-2.24159652367015,\ +-4,-0.247083,-4.69801919191919,3.14759511185733,-0.679039128075579,-0.0420719444795535,-2.24159724449483,\ +-4,-0.247083,-4.67048838383838,3.14759498396229,-0.679039415718413,-0.0420726957715301,-2.24159797843103,\ +-4,-0.247083,-4.64295757575758,3.14759485371956,-0.679039708641381,-0.0420734608546487,-2.24159872583978,\ +-4,-0.247083,-4.61542676767677,3.14759472106386,-0.67904000699122,-0.0420742401121641,-2.24159948709549,\ +-4,-0.247083,-4.58789595959596,3.14759458592752,-0.679040310920151,-0.0420750339416645,-2.24160026258654,\ +-4,-0.247083,-4.56036515151515,3.14759444824031,-0.679040620586142,-0.042075842755748,-2.24160105271602,\ +-4,-0.247083,-4.53283434343434,3.14759430792928,-0.679040936153185,-0.0420766669827382,-2.24160185790234,\ +-4,-0.247083,-4.50530353535354,3.14759416491878,-0.679041257791578,-0.0420775070674398,-2.24160267858005,\ +-4,-0.247083,-4.47777272727273,3.14759401913007,-0.67904158567824,-0.0420783634719396,-2.24160351520056,\ +-4,-0.247083,-4.45024191919192,3.14759387048145,-0.679041919997024,-0.0420792366764535,-2.24160436823296,\ +-4,-0.247083,-4.42271111111111,3.14759371888792,-0.679042260939075,-0.0420801271802254,-2.24160523816498,\ +-4,-0.247083,-4.3951803030303,3.14759356426109,-0.679042608703187,-0.0420810355024776,-2.24160612550387,\ +-4,-0.247083,-4.36764949494949,3.14759340650899,-0.679042963496185,-0.0420819621834216,-2.24160703077734,\ +-4,-0.247083,-4.34011868686869,3.14759324553591,-0.679043325533345,-0.0420829077853286,-2.24160795453467,\ +-4,-0.247083,-4.31258787878788,3.14759308124217,-0.679043695038819,-0.0420838728936681,-2.24160889734782,\ +-4,-0.247083,-4.28505707070707,3.14759291352398,-0.679044072246107,-0.0420848581183156,-2.24160985981256,\ +-4,-0.247083,-4.25752626262626,3.14759274227312,-0.679044457398546,-0.0420858640948383,-2.24161084254977,\ +-4,-0.247083,-4.22999545454545,3.1475925673768,-0.679044850749834,-0.0420868914858625,-2.2416118462068,\ +-4,-0.247083,-4.20246464646465,3.14759238871735,-0.679045252564582,-0.04208794098253,-2.2416128714588,\ +-4,-0.247083,-4.17493383838384,3.14759220617202,-0.679045663118911,-0.0420890133060459,-2.24161391901031,\ +-4,-0.247083,-4.14740303030303,3.14759201961262,-0.679046082701093,-0.0420901092093342,-2.24161498959687,\ +-4,-0.247083,-4.11987222222222,3.14759182890527,-0.679046511612217,-0.0420912294787996,-2.24161608398673,\ +-4,-0.247083,-4.09234141414141,3.1475916339101,-0.6790469501669,-0.0420923749362093,-2.24161720298265,\ +-4,-0.247083,-4.06481060606061,3.14759143448084,-0.679047398694079,-0.0420935464407037,-2.24161834742395,\ +-4,-0.247083,-4.0372797979798,3.14759123046451,-0.679047857537824,-0.0420947448909453,-2.2416195181885,\ +-4,-0.247083,-4.00974898989899,3.14759102170102,-0.679048327058208,-0.0420959712274184,-2.24162071619508,\ +-4,-0.247083,-3.98221818181818,3.14759080802271,-0.679048807632267,-0.0420972264348887,-2.24162194240571,\ +-4,-0.247083,-3.95468737373737,3.14759058925398,-0.679049299654995,-0.042098511545043,-2.24162319782823,\ +-4,-0.247083,-3.92715656565657,3.1475903652107,-0.679049803540434,-0.0420998276393159,-2.24162448351909,\ +-4,-0.247083,-3.89962575757576,3.1475901356998,-0.67905031972283,-0.0421011758519248,-2.24162580058633,\ +-4,-0.247083,-3.87209494949495,3.14758990051868,-0.679050848657903,-0.0421025573731312,-2.24162715019268,\ +-4,-0.247083,-3.84456414141414,3.14758965945456,-0.679051390824151,-0.0421039734527442,-2.2416285335591,\ +-4,-0.247083,-3.81703333333333,3.14758941228389,-0.679051946724328,-0.0421054254038923,-2.24162995196838,\ +-4,-0.247083,-3.78950252525252,3.14758915877168,-0.679052516886981,-0.0421069146070852,-2.24163140676914,\ +-4,-0.247083,-3.76197171717172,3.14758889867071,-0.679053101868131,-0.0421084425145906,-2.2416328993801,\ +-4,-0.247083,-3.73444090909091,3.14758863172073,-0.679053702253082,-0.0421100106551591,-2.24163443129467,\ +-4,-0.247083,-3.7069101010101,3.14758835764759,-0.679054318658375,-0.0421116206391262,-2.24163600408602,\ +-4,-0.247083,-3.67937929292929,3.14758807616235,-0.679054951733897,-0.0421132741639277,-2.24163761941235,\ +-4,-0.247083,-3.65184848484848,3.1475877869602,-0.679055602165168,-0.0421149730200702,-2.24163927902281,\ +-4,-0.247083,-3.62431767676768,3.14758748971938,-0.679056270675818,-0.0421167190975977,-2.24164098476379,\ +-4,-0.247083,-3.59678686868687,3.14758718410003,-0.679056958030274,-0.0421185143931064,-2.24164273858575,\ +-4,-0.247083,-3.56925606060606,3.1475868697428,-0.679057665036673,-0.0421203610173605,-2.2416445425507,\ +-4,-0.247083,-3.54172525252525,3.14758654626754,-0.679058392550024,-0.0421222612035718,-2.24164639884026,\ +-4,-0.247083,-3.51419444444444,3.14758621327169,-0.679059141475686,-0.0421242173164077,-2.24164830976447,\ +-4,-0.247083,-3.48666363636364,3.14758587032867,-0.679059912773086,-0.0421262318618099,-2.24165027777138,\ +-4,-0.247083,-3.45913282828283,3.147585516986,-0.679060707459851,-0.0421283074977035,-2.24165230545751,\ +-4,-0.247083,-3.43160202020202,3.14758515276335,-0.679061526616275,-0.0421304470456976,-2.2416543955793,\ +-4,-0.247083,-3.40407121212121,3.14758477715035,-0.679062371390217,-0.0421326535038812,-2.24165655106557,\ +-4,-0.247083,-3.3765404040404,3.14758438960419,-0.679063243002474,-0.0421349300608414,-2.24165877503124,\ +-4,-0.247083,-3.3490095959596,3.14758398954702,-0.679064142752661,-0.042137280111037,-2.24166107079237,\ +-4,-0.247083,-3.32147878787879,3.14758357636308,-0.679065072025686,-0.0421397072716868,-2.24166344188261,\ +-4,-0.247083,-3.29394797979798,3.1475831493955,-0.67906603229885,-0.0421422154013467,-2.24166589207137,\ +-4,-0.247083,-3.26641717171717,3.14758270794287,-0.679067025149691,-0.042144808620379,-2.24166842538384,\ +-4,-0.247083,-3.23888636363636,3.14758225125534,-0.679068052264636,-0.0421474913335407,-2.241671046123,\ +-4,-0.247083,-3.21135555555555,3.14758177853041,-0.679069115448549,-0.0421502682549503,-2.24167375889409,\ +-4,-0.247083,-3.18382474747475,3.14758128890822,-0.679070216635326,-0.0421531444357328,-2.24167656863154,\ +-4,-0.247083,-3.15629393939394,3.1475807814663,-0.679071357899631,-0.042156125294683,-2.24167948062895,\ +-4,-0.247083,-3.12876313131313,3.1475802552138,-0.679072541469939,-0.0421592166523395,-2.24168250057244,\ +-4,-0.247083,-3.10123232323232,3.14757970908504,-0.679073769743065,-0.0421624247689172,-2.24168563457754,\ +-4,-0.247083,-3.07370151515151,3.14757914193224,-0.679075045300356,-0.0421657563866236,-2.24168888923076,\ +-4,-0.247083,-3.04617070707071,3.14757855251757,-0.679076370925809,-0.0421692187769568,-2.24169227163559,\ +-4,-0.247083,-3.0186398989899,3.14757793950405,-0.679077749626352,-0.0421728197936835,-2.24169578946437,\ +-4,-0.247083,-2.99110909090909,3.14757730144546,-0.67907918465461,-0.0421765679323119,-2.24169945101636,\ +-4,-0.247083,-2.96357828282828,3.14757663677494,-0.679080679534529,-0.0421804723970061,-2.24170326528309,\ +-4,-0.247083,-2.93604747474747,3.14757594379216,-0.679082238090266,-0.0421845431760504,-2.2417072420221,\ +-4,-0.247083,-2.90851666666667,3.14757522064876,-0.679083864478853,-0.0421887911271657,-2.24171139184029,\ +-4,-0.247083,-2.88098585858586,3.14757446533194,-0.679085563227229,-0.0421932280742185,-2.24171572628837,\ +-4,-0.247083,-2.85345505050505,3.14757367564568,-0.679087339274304,-0.0421978669171239,-2.24172025796827,\ +-4,-0.247083,-2.82592424242424,3.1475728491895,-0.67908919801894,-0.0422027217571085,-2.24172500065544,\ +-4,-0.247083,-2.79839343434343,3.147571983334,-0.679091145374742,-0.0422078080398815,-2.24172996943879,\ +-4,-0.247083,-2.77086262626263,3.147571075193,-0.679093187832926,-0.0422131427197874,-2.24173518088098,\ +-4,-0.247083,-2.74333181818182,3.14757012159135,-0.679095332534589,-0.0422187444486057,-2.24174065320294,\ +-4,-0.247083,-2.71580101010101,3.14756911902784,-0.67909758735414,-0.0422246337934367,-2.24174640649662,\ +-4,-0.247083,-2.6882702020202,3.14756806363223,-0.6790999609959,-0.0422308334890281,-2.24175246297157,\ +-4,-0.247083,-2.66073939393939,3.1475669511154,-0.679102463106398,-0.0422373687310765,-2.24175884724143,\ +-4,-0.247083,-2.63320858585858,3.14756577671099,-0.679105104405412,-0.0422442675184729,-2.24176558665831,\ +-4,-0.247083,-2.60567777777778,3.14756453510718,-0.679107896839483,-0.0422515610542999,-2.24177271170443,\ +-4,-0.247083,-2.57814696969697,3.14756322036639,-0.679110853762588,-0.0422592842176911,-2.24178025645319,\ +-4,-0.247083,-2.55061616161616,3.14756182583028,-0.679113990149678,-0.0422674761216057,-2.24178825911399,\ +-4,-0.247083,-2.52308535353535,3.14756034400699,-0.67911732285034,-0.0422761807753401,-2.24179676267946,\ +-4,-0.247083,-2.49555454545454,3.14755876643652,-0.679120870891614,-0.0422854478754636,-2.2418058156981,\ +-4,-0.247083,-2.46802373737374,3.14755708352905,-0.679124655841469,-0.0422953337551897,-2.24181547320177,\ +-4,-0.247083,-2.44049292929293,3.14755528436992,-0.679128702247623,-0.0423059025304892,-2.24182579782528,\ +-4,-0.247083,-2.41296212121212,3.14755335648255,-0.679133038170518,-0.042317227492214,-2.24183686116638,\ +-4,-0.247083,-2.38543131313131,3.14755128553879,-0.679137695834983,-0.0423293928081224,-2.24184874544844,\ +-4,-0.247083,-2.3579005050505,3.14754905500212,-0.67914271243252,-0.0423424956183927,-2.24186154556757,\ +-4,-0.247083,-2.3303696969697,3.1475466456852,-0.679148131116512,-0.0423566486350137,-2.24187537163199,\ +-4,-0.247083,-2.30283888888889,3.14754403519649,-0.679154002246751,-0.0423719833922991,-2.24189035213741,\ +-4,-0.247083,-2.27530808080808,3.14754119724224,-0.679160384959243,-0.0423886543471061,-2.24190663797253,\ +-4,-0.247083,-2.24777727272727,3.14753810073781,-0.679167349165098,-0.0424068440996992,-2.24192440751933,\ +-4,-0.247083,-2.22024646464646,3.14753470866428,-0.67917497812181,-0.0424267701096465,-2.24194387321379,\ +-4,-0.247083,-2.19271565656565,3.14753097658149,-0.67918337177774,-0.042448693431247,-2.24196529007953,\ +-4,-0.247083,-2.16518484848485,3.14752685067015,-0.679192651175362,-0.0424729302143828,-2.24198896696298,\ +-4,-0.247083,-2.13765404040404,3.14752226511972,-0.679202964326177,-0.0424998670490563,-2.24201528152345,\ +-4,-0.247083,-2.11012323232323,3.14751713859169,-0.679214494164801,-0.0425299817407206,-2.24204470052847,\ +-4,-0.247083,-2.08259242424242,3.14751136935289,-0.679227469494741,-0.0425638718993897,-2.24207780778254,\ +-4,-0.247083,-2.05506161616161,3.14750482845562,-0.679242180326248,-0.0426022950004723,-2.24211534326243,\ +-4,-0.247083,-2.02753080808081,3.14749734998553,-0.679258999809761,-0.0426462256725728,-2.24215825908165,\ +-4,-0.247083,-2,3.14748871679168,-0.679278416329369,-0.0426969395221065,-2.2422078013785,\ +-4,-0.245821,-4.72555,3.14759523175873,-0.67903885841084,-0.0420712401444154,-2.2415965564307,\ +-4,-0.245821,-4.69801919191919,3.14759510604513,-0.679039141147561,-0.0420719786221572,-2.24159727784869,\ +-4,-0.245821,-4.67048838383838,3.14759497804386,-0.679039429029302,-0.0420727305381296,-2.24159801239447,\ +-4,-0.245821,-4.64295757575758,3.14759484769196,-0.679039722197785,-0.042073496262508,-2.24159876042967,\ +-4,-0.245821,-4.61542676767677,3.14759471492405,-0.679040020799996,-0.04207427617919,-2.24159952232932,\ +-4,-0.245821,-4.58789595959596,3.14759457967233,-0.67904032498841,-0.0420750706864365,-2.24160029848247,\ +-4,-0.245821,-4.56036515151515,3.14759444186645,-0.67904063492127,-0.042075880197551,-2.24160108929287,\ +-4,-0.245821,-4.53283434343434,3.14759430143338,-0.679040950762847,-0.0420767051415954,-2.24160189517969,\ +-4,-0.245821,-4.50530353535354,3.14759415829724,-0.679041272683738,-0.0420775459641489,-2.2416027165782,\ +-4,-0.245821,-4.47777272727273,3.14759401237926,-0.67904160086117,-0.0420784031281104,-2.24160355394061,\ +-4,-0.245821,-4.45024191919192,3.14759386359753,-0.679041935479323,-0.0420792771145481,-2.24160440773688,\ +-4,-0.245821,-4.42271111111111,3.14759371186692,-0.67904227672969,-0.0420801684235997,-2.24160527845559,\ +-4,-0.245821,-4.3951803030303,3.14759355709886,-0.679042624811418,-0.0420810775754282,-2.24160616660489,\ +-4,-0.245821,-4.36764949494949,3.14759339920124,-0.679042979931708,-0.0420820051112319,-2.24160707271347,\ +-4,-0.245821,-4.34011868686869,3.14759323807815,-0.679043342306241,-0.0420829515943199,-2.24160799733162,\ +-4,-0.245821,-4.31258787878788,3.14759307362975,-0.679043712159581,-0.0420839176112535,-2.24160894103237,\ +-4,-0.245821,-4.28505707070707,3.14759290575201,-0.679044089725675,-0.0420849037730572,-2.24160990441261,\ +-4,-0.245821,-4.25752626262626,3.14759273433656,-0.679044475248315,-0.0420859107165084,-2.24161088809443,\ +-4,-0.245821,-4.22999545454545,3.14759255927034,-0.679044868981694,-0.0420869391055077,-2.24161189272637,\ +-4,-0.245821,-4.20246464646465,3.1475923804355,-0.679045271190928,-0.0420879896325399,-2.24161291898492,\ +-4,-0.245821,-4.17493383838384,3.147592197709,-0.679045682152694,-0.0420890630202278,-2.24161396757603,\ +-4,-0.245821,-4.14740303030303,3.14759201096242,-0.679046102155826,-0.0420901600229906,-2.24161503923667,\ +-4,-0.245821,-4.11987222222222,3.14759182006164,-0.679046531502017,-0.0420912814288115,-2.24161613473663,\ +-4,-0.245821,-4.09234141414141,3.14759162486647,-0.679046970506531,-0.0420924280611261,-2.24161725488032,\ +-4,-0.245821,-4.06481060606061,3.14759142523033,-0.679047419498976,-0.0420936007808386,-2.24161840050876,\ +-4,-0.245821,-4.0372797979798,3.14759122099995,-0.679047878824131,-0.042094800488477,-2.24161957250166,\ +-4,-0.245821,-4.00974898989899,3.14759101201489,-0.679048348842833,-0.0420960281264999,-2.24162077177973,\ +-4,-0.245821,-3.98221818181818,3.14759079810714,-0.679048829932914,-0.0420972846817656,-2.24162199930701,\ +-4,-0.245821,-3.95468737373737,3.14759057910072,-0.679049322490218,-0.0420985711881774,-2.24162325609353,\ +-4,-0.245821,-3.92715656565657,3.14759035481109,-0.679049826929686,-0.0420998887295211,-2.24162454319804,\ +-4,-0.245821,-3.89962575757576,3.14759012504479,-0.679050343686528,-0.042101238442511,-2.24162586173099,\ +-4,-0.245821,-3.87209494949495,3.14758988959872,-0.679050873217467,-0.0421026215200587,-2.24162721285774,\ +-4,-0.245821,-3.84456414141414,3.14758964825966,-0.679051416002087,-0.0421040392147918,-2.24162859780197,\ +-4,-0.245821,-3.81703333333333,3.14758940080352,-0.679051972544287,-0.0421054928428365,-2.24163001784941,\ +-4,-0.245821,-3.78950252525252,3.14758914699479,-0.679052543373838,-0.0421069837878927,-2.24163147435179,\ +-4,-0.245821,-3.76197171717172,3.14758888658566,-0.67905312904806,-0.0421085135056292,-2.24163296873115,\ +-4,-0.245821,-3.73444090909091,3.14758861931525,-0.679053730153649,-0.0421100835284211,-2.24163450248448,\ +-4,-0.245821,-3.7069101010101,3.14758834490879,-0.679054347308622,-0.0421116954704725,-2.24163607718867,\ +-4,-0.245821,-3.67937929292929,3.1475880630766,-0.679054981164449,-0.0421133510333518,-2.241637694506,\ +-4,-0.245821,-3.65184848484848,3.14758777351313,-0.679055632408347,-0.0421150520119825,-2.24163935618991,\ +-4,-0.245821,-3.62431767676768,3.14758747589583,-0.679056301765748,-0.0421168003011354,-2.24164106409142,\ +-4,-0.245821,-3.59678686868687,3.14758716988394,-0.679056990003023,-0.0421185979024688,-2.24164282016594,\ +-4,-0.245821,-3.56925606060606,3.14758685511723,-0.679057697930381,-0.0421204469321734,-2.24164462648077,\ +-4,-0.245821,-3.54172525252525,3.14758653121453,-0.679058426405068,-0.0421223496292838,-2.24164648522322,\ +-4,-0.245821,-3.51419444444444,3.14758619777222,-0.679059176334831,-0.0421243083647225,-2.24164839870946,\ +-4,-0.245821,-3.48666363636364,3.14758585436258,-0.679059948681674,-0.0421263256511563,-2.24165036939408,\ +-4,-0.245821,-3.45913282828283,3.1475855005319,-0.679060744465995,-0.0421284041537497,-2.24165239988068,\ +-4,-0.245821,-3.43160202020202,3.14758513579853,-0.679061564771076,-0.0421305467019133,-2.24165449293333,\ +-4,-0.245821,-3.40407121212121,3.14758475965064,-0.679062410747998,-0.0421327563021518,-2.24165665148907,\ +-4,-0.245821,-3.3765404040404,3.14758437154391,-0.679063283621038,-0.0421350361521426,-2.24165887867171,\ +-4,-0.245821,-3.3490095959596,3.14758397089877,-0.679064184693577,-0.0421373896561737,-2.24166117780688,\ +-4,-0.245821,-3.32147878787879,3.14758355709769,-0.679065115354594,-0.0421398204421067,-2.24166355243865,\ +-4,-0.245821,-3.29394797979798,3.14758312948182,-0.679066077085807,-0.0421423323800361,-2.24166600634771,\ +-4,-0.245821,-3.26641717171717,3.1475826873476,-0.679067071469554,-0.0421449296028496,-2.24166854357146,\ +-4,-0.245821,-3.23888636363636,3.1475822299429,-0.679068100197469,-0.0421476165289198,-2.24167116842621,\ +-4,-0.245821,-3.21135555555555,3.14758175646267,-0.679069165080096,-0.042150397887187,-2.24167388553167,\ +-4,-0.245821,-3.18382474747475,3.14758126604429,-0.679070268057517,-0.0421532787449355,-2.24167669983804,\ +-4,-0.245821,-3.15629393939394,3.14758075776232,-0.679071411211147,-0.0421562645386027,-2.24167961665617,\ +-4,-0.245821,-3.12876313131313,3.14758023062261,-0.679072596776855,-0.0421593611080207,-2.241682641691,\ +-4,-0.245821,-3.10123232323232,3.14757968355587,-0.679073827159539,-0.0421625747345376,-2.24168578107877,\ +-4,-0.245821,-3.07370151515151,3.14757911541039,-0.679075104949428,-0.0421659121835495,-2.24168904142858,\ +-4,-0.245821,-3.04617070707071,3.14757852494399,-0.679076432940275,-0.042169380752039,-2.24169242986885,\ +-4,-0.245821,-3.0186398989899,3.14757791081491,-0.679077814149757,-0.0421729883218373,-2.24169595409932,\ +-4,-0.245821,-2.99110909090909,3.14757727157169,-0.679079251842347,-0.0421767434194131,-2.2416996224495,\ +-4,-0.245821,-2.96357828282828,3.14757660564161,-0.679080749555096,-0.0421806552831534,-2.24170344394434,\ +-4,-0.245821,-2.93604747474747,3.14757591131788,-0.679082311126675,-0.0421847339392503,-2.24170742837844,\ +-4,-0.245821,-2.90851666666667,3.14757518674501,-0.679083940730225,-0.0421889902875051,-2.24171158639978,\ +-4,-0.245821,-2.88098585858586,3.14757442990222,-0.679085642910612,-0.0421934361985969,-2.24171592960483,\ +-4,-0.245821,-2.85345505050505,3.14757363858457,-0.679087422626729,-0.0421980846246433,-2.24172047064648,\ +-4,-0.245821,-2.82592424242424,3.1475728103817,-0.679089285299779,-0.0422029497252222,-2.24172522335721,\ +-4,-0.245821,-2.79839343434343,3.14757194265304,-0.679091236868405,-0.0422080470114352,-2.24173020288981,\ +-4,-0.245821,-2.77086262626263,3.14757103249993,-0.679093283851953,-0.0422133935111034,-2.24173542587872,\ +-4,-0.245821,-2.74333181818182,3.1475700767331,-0.679095433423219,-0.0422190079587983,-2.24174091062572,\ +-4,-0.245821,-2.71580101010101,3.14756907183542,-0.679097693492431,-0.0422249110151788,-2.24174667731419,\ +-4,-0.245821,-2.6882702020202,3.14756801391862,-0.679100072804517,-0.0422311255210473,-2.24175274825729,\ +-4,-0.245821,-2.66073939393939,3.147566898673,-0.67910258105218,-0.0422376767927043,-2.24175914818646,\ +-4,-0.245821,-2.63320858585858,3.14756572130882,-0.679105229007883,-0.0422445929666586,-2.24176590458824,\ +-4,-0.245821,-2.60567777777778,3.14756447648741,-0.679108028678513,-0.0422519054035887,-2.24177304809883,\ +-4,-0.245821,-2.57814696969697,3.14756315824035,-0.679110993487396,-0.042259649163785,-2.24178061296858,\ +-4,-0.245821,-2.55061616161616,3.14756175987371,-0.679114138489539,-0.0422678635692812,-2.24178863761114,\ +-4,-0.245821,-2.52308535353535,3.14756027385441,-0.679117480627298,-0.0422765928716934,-2.24179716525586,\ +-4,-0.245821,-2.49555454545454,3.14755869167437,-0.679121039035728,-0.0422858870497075,-2.24180624472687,\ +-4,-0.245821,-2.46802373737374,3.14755700368763,-0.679124835409152,-0.0422958027665571,-2.24181593137839,\ +-4,-0.245821,-2.44049292929293,3.14755519891344,-0.679128894443847,-0.0423064045262427,-2.24182628822431,\ +-4,-0.245821,-2.41296212121212,3.14755326479718,-0.679133244375886,-0.0423177660783324,-2.24183738731048,\ +-4,-0.245821,-2.38543131313131,3.1475511869178,-0.679137917638924,-0.0423299721360243,-2.24184931139314,\ +-4,-0.245821,-2.3579005050505,3.14754894862771,-0.679142951674319,-0.0423431204921061,-2.24186215600593,\ +-4,-0.245821,-2.3303696969697,3.14754653060574,-0.679148389936427,-0.0423573246446403,-2.24187603202496,\ +-4,-0.245821,-2.30283888888889,3.14754391029802,-0.679154283150158,-0.0423727170816275,-2.24189106887761,\ +-4,-0.245821,-2.27530808080808,3.14754106121227,-0.679160690897983,-0.0423894534260143,-2.24190741859172,\ +-4,-0.245821,-2.24777727272727,3.14753795201909,-0.679167683641524,-0.0424077177159604,-2.24192526095397,\ +-4,-0.245821,-2.22024646464646,3.14753454539494,-0.679175345323388,-0.0424277292004622,-2.24194481014842,\ +-4,-0.245821,-2.19271565656565,3.14753079651672,-0.679183776753134,-0.0424497511831908,-2.2419663233961,\ +-4,-0.245821,-2.16518484848485,3.1475266510785,-0.679193100067789,-0.0424741026728582,-2.24199011233622,\ +-4,-0.245821,-2.13765404040404,3.14752204264362,-0.679203464686919,-0.042501173937212,-2.24201655822088,\ +-4,-0.245821,-2.11012323232323,3.14751688905734,-0.679215055381047,-0.0425314475768712,-2.24204613250199,\ +-4,-0.245821,-2.08259242424242,3.14751108750609,-0.679228103383416,-0.0425655275480611,-2.24207942518367,\ +-4,-0.245821,-2.05506161616161,3.14750450758831,-0.679242901974195,-0.0426041798668754,-2.24211718458609,\ +-4,-0.245821,-2.02753080808081,3.14749698139564,-0.679259828788309,-0.0426483908748896,-2.24216037426512,\ +-4,-0.245821,-2,3.14748828898338,-0.679279378493352,-0.0426994525903837,-2.2422102563918,\ +-4,-0.243882,-4.72555,3.1475952229783,-0.679038878158524,-0.0420712917232327,-2.24159660681798,\ +-4,-0.243882,-4.69801919191919,3.14759509710557,-0.679039161253078,-0.0420720311355935,-2.24159732914901,\ +-4,-0.243882,-4.67048838383838,3.14759496894085,-0.679039449502465,-0.04207278401182,-2.24159806463285,\ +-4,-0.243882,-4.64295757575758,3.14759483842095,-0.679039743048772,-0.0420735507230342,-2.2415988136321,\ +-4,-0.243882,-4.61542676767677,3.14759470548036,-0.679040042039364,-0.0420743316541235,-2.24159957652271,\ +-4,-0.243882,-4.58789595959596,3.14759457005108,-0.679040346627112,-0.0420751272043859,-2.24160035369478,\ +-4,-0.243882,-4.56036515151515,3.1475944320626,-0.679040656970675,-0.0420759377882109,-2.24160114555312,\ +-4,-0.243882,-4.53283434343434,3.14759429144167,-0.679040973234758,-0.0420767638357978,-2.24160195251798,\ +-4,-0.243882,-4.50530353535354,3.14759414811222,-0.679041295590418,-0.0420776057939196,-2.24160277502583,\ +-4,-0.243882,-4.47777272727273,3.14759400199525,-0.679041624215358,-0.0420784641267257,-2.24160361353008,\ +-4,-0.243882,-4.45024191919192,3.14759385300867,-0.679041959294266,-0.0420793393165981,-2.24160446850198,\ +-4,-0.243882,-4.42271111111111,3.14759370106706,-0.679042301019154,-0.0420802318650529,-2.24160534043147,\ +-4,-0.243882,-4.3951803030303,3.14759354608164,-0.679042649589728,-0.0420811422936999,-2.24160622982809,\ +-4,-0.243882,-4.36764949494949,3.14759338796004,-0.679043005213778,-0.0420820711452594,-2.24160713722202,\ +-4,-0.243882,-4.34011868686869,3.14759322660606,-0.679043368107584,-0.0420830189846401,-2.24160806316515,\ +-4,-0.243882,-4.31258787878788,3.14759306191959,-0.679043738496368,-0.0420839864000857,-2.24160900823209,\ +-4,-0.243882,-4.28505707070707,3.1475928937963,-0.679044116614741,-0.0420849740043912,-2.24160997302152,\ +-4,-0.243882,-4.25752626262626,3.14759272212747,-0.679044502707221,-0.0420859824361981,-2.2416109581573,\ +-4,-0.243882,-4.22999545454545,3.14759254679975,-0.679044897028745,-0.0420870123613718,-2.24161196428993,\ +-4,-0.243882,-4.20246464646465,3.14759236769489,-0.679045299845228,-0.0420880644744675,-2.2416129920979,\ +-4,-0.243882,-4.17493383838384,3.14759218468953,-0.679045711434175,-0.042089139500292,-2.24161404228931,\ +-4,-0.243882,-4.14740303030303,3.14759199765484,-0.679046132085312,-0.0420902381955689,-2.24161511560337,\ +-4,-0.243882,-4.11987222222222,3.14759180645625,-0.679046562101256,-0.0420913613507156,-2.24161621281224,\ +-4,-0.243882,-4.09234141414141,3.14759161095317,-0.679047001798258,-0.0420925097917385,-2.24161733472285,\ +-4,-0.243882,-4.06481060606061,3.14759141099857,-0.67904745150697,-0.0420936843822608,-2.24161848217888,\ +-4,-0.243882,-4.0372797979798,3.14759120643866,-0.67904791157327,-0.0420948860256856,-2.24161965606286,\ +-4,-0.243882,-4.00974898989899,3.14759099711248,-0.67904838235916,-0.0420961156675167,-2.24162085729844,\ +-4,-0.243882,-3.98221818181818,3.1475907828515,-0.679048864243702,-0.0420973742978364,-2.24162208685284,\ +-4,-0.243882,-3.95468737373737,3.14759056347911,-0.679049357624057,-0.0420986629539662,-2.24162334573942,\ +-4,-0.243882,-3.92715656565657,3.14759033881021,-0.67904986291655,-0.0420999827233175,-2.24162463502046,\ +-4,-0.243882,-3.89962575757576,3.14759010865064,-0.679050380557864,-0.0421013347464523,-2.24162595581019,\ +-4,-0.243882,-3.87209494949495,3.14758987279663,-0.679050911006287,-0.0421027202203705,-2.24162730927795,\ +-4,-0.243882,-3.84456414141414,3.14758963103419,-0.679051454743069,-0.0421041404020448,-2.24162869665167,\ +-4,-0.243882,-3.81703333333333,3.14758938313851,-0.679052012273876,-0.0421055966122232,-2.24163011922159,\ +-4,-0.243882,-3.78950252525252,3.14758912887317,-0.679052584130362,-0.0421070902395271,-2.24163157834426,\ +-4,-0.243882,-3.76197171717172,3.14758886798949,-0.679053170871861,-0.0421086227448682,-2.24163307544683,\ +-4,-0.243882,-3.73444090909091,3.14758860022565,-0.679053773087198,-0.042110195666212,-2.24163461203174,\ +-4,-0.243882,-3.7069101010101,3.14758832530585,-0.679054391396687,-0.0421118106237307,-2.24163618968174,\ +-4,-0.243882,-3.67937929292929,3.14758804293935,-0.679055026454231,-0.0421134693253647,-2.24163781006532,\ +-4,-0.243882,-3.65184848484848,3.14758775281941,-0.679055678949656,-0.0421151735728521,-2.24163947494258,\ +-4,-0.243882,-3.62431767676768,3.14758745462225,-0.679056349611188,-0.0421169252682538,-2.24164118617165,\ +-4,-0.243882,-3.59678686868687,3.14758714800578,-0.679057039208186,-0.0421187264210373,-2.24164294571557,\ +-4,-0.243882,-3.56925606060606,3.14758683260835,-0.679057748554066,-0.0421205791557653,-2.24164475564984,\ +-4,-0.243882,-3.54172525252525,3.14758650804725,-0.679058478509512,-0.0421224857204556,-2.24164661817052,\ +-4,-0.243882,-3.51419444444444,3.14758617391725,-0.679059229985964,-0.0421244484956815,-2.24164853560321,\ +-4,-0.243882,-3.48666363636364,3.14758582978881,-0.679060003949402,-0.0421264700044872,-2.24165051041267,\ +-4,-0.243882,-3.45913282828283,3.14758547520637,-0.6790608014245,-0.0421285529232087,-2.24165254521338,\ +-4,-0.243882,-3.43160202020202,3.14758510968619,-0.679061623499151,-0.0421307000932946,-2.24165464278118,\ +-4,-0.243882,-3.40407121212121,3.14758473271425,-0.679062471329405,-0.042132914534238,-2.24165680606579,\ +-4,-0.243882,-3.3765404040404,3.14758434374382,-0.679063346144914,-0.0421351994577453,-2.24165903820475,\ +-4,-0.243882,-3.3490095959596,3.14758394219281,-0.679064249254867,-0.0421375582832776,-2.24166134253849,\ +-4,-0.243882,-3.32147878787879,3.1475835274408,-0.67906518205453,-0.0421399946551253,-2.24166372262713,\ +-4,-0.243882,-3.29394797979798,3.14758309882599,-0.679066146032441,-0.042142512461194,-2.24166618226877,\ +-4,-0.243882,-3.26641717171717,3.14758265564147,-0.679067142778348,-0.0421451158537097,-2.2416687255197,\ +-4,-0.243882,-3.23888636363636,3.14758219713156,-0.679068173991929,-0.0421478092720673,-2.24167135671675,\ +-4,-0.243882,-3.21135555555555,3.14758172248732,-0.679069241492488,-0.042150597468094,-2.241674080502,\ +-4,-0.243882,-3.18382474747475,3.14758123084187,-0.679070347229667,-0.0421534855340275,-2.24167690185005,\ +-4,-0.243882,-3.15629393939394,3.14758072126513,-0.679071493295311,-0.042156478933553,-2.24167982609833,\ +-4,-0.243882,-3.12876313131313,3.14758019275787,-0.67907268193669,-0.042159583536302,-2.24168285898092,\ +-4,-0.243882,-3.10123232323232,3.14757964424526,-0.679073915571214,-0.0421628056562677,-2.24168600666592,\ +-4,-0.243882,-3.07370151515151,3.14757907456949,-0.679075196802815,-0.042166152094666,-2.24168927579746,\ +-4,-0.243882,-3.04617070707071,3.14757848248167,-0.679076528440333,-0.0421696301878571,-2.24169267354239,\ +-4,-0.243882,-3.0186398989899,3.14757786663267,-0.679077913518035,-0.0421732478610342,-2.24169620764284,\ +-4,-0.243882,-2.99110909090909,3.14757722556284,-0.67907935531872,-0.0421770136885102,-2.24169988647504,\ +-4,-0.243882,-2.96357828282828,3.14757655769052,-0.679080857399688,-0.0421809369615656,-2.24170371911563,\ +-4,-0.243882,-2.93604747474747,3.14757586129891,-0.679082423622043,-0.0421850277649879,-2.24170771541644,\ +-4,-0.243882,-2.90851666666667,3.14757513452145,-0.679084058183834,-0.0421892970636287,-2.241711886089,\ +-4,-0.243882,-2.88098585858586,3.14757437532503,-0.679085765657634,-0.0421937568005462,-2.24171624280047,\ +-4,-0.243882,-2.85345505050505,3.14757358149101,-0.679087551033247,-0.0421984200085797,-2.24172079828263,\ +-4,-0.243882,-2.82592424242424,3.1475727505936,-0.679089419766422,-0.0422033009375513,-2.2417255664561,\ +-4,-0.243882,-2.79839343434343,3.14757187997509,-0.67909137783453,-0.0422084151997097,-2.24173056257248,\ +-4,-0.243882,-2.77086262626263,3.1475709667174,-0.679093431800439,-0.0422137799365468,-2.24173580337725,\ +-4,-0.243882,-2.74333181818182,3.14757000760948,-0.679095588885988,-0.0422194140107364,-2.24174130729736,\ +-4,-0.243882,-2.71580101010101,3.14756899910955,-0.679097857056842,-0.0422253382277275,-2.24174709465761,\ +-4,-0.243882,-2.6882702020202,3.14756793730141,-0.679100245120773,-0.0422315755924754,-2.2417531879315,\ +-4,-0.243882,-2.66073939393939,3.14756681784355,-0.679102762841975,-0.0422381516079932,-2.24175961203293,\ +-4,-0.243882,-2.63320858585858,3.14756563590996,-0.679105421074501,-0.0422450946238856,-2.24176639465656,\ +-4,-0.243882,-2.60567777777778,3.14756438612046,-0.679108231918673,-0.0422524362449121,-2.24177356667706,\ +-4,-0.243882,-2.57814696969697,3.1475630624588,-0.679111208905281,-0.042260211812,-2.24178116261893,\ +-4,-0.243882,-2.55061616161616,3.14756165817594,-0.679114367213352,-0.042268460971147,-2.24178922121229,\ +-4,-0.243882,-2.52308535353535,3.14756016567482,-0.679117723929044,-0.0422772283495405,-2.2417977860534,\ +-4,-0.243882,-2.49555454545454,3.14755857637295,-0.679121298354859,-0.0422865643632375,-2.24180690639362,\ +-4,-0.243882,-2.46802373737374,3.14755688053723,-0.679125112381071,-0.0422965261872566,-2.24181663808718,\ +-4,-0.243882,-2.44049292929293,3.14755506708444,-0.679129190934408,-0.0423071789275242,-2.24182704473596,\ +-4,-0.243882,-2.41296212121212,3.14755312333878,-0.679133562523471,-0.0423185970454224,-2.24183819908121,\ +-4,-0.243882,-2.38543131313131,3.14755103473508,-0.679138259906082,-0.0423308661008316,-2.24185018470625,\ +-4,-0.243882,-2.3579005050505,3.14754878445323,-0.679143320911602,-0.0423440848999592,-2.24186309813477,\ +-4,-0.243882,-2.3303696969697,3.14754635296417,-0.679148789461926,-0.0423583681620389,-2.24187705143581,\ +-4,-0.243882,-2.30283888888889,3.1475437174617,-0.679154716849452,-0.0423738498572756,-2.24189217548474,\ +-4,-0.243882,-2.27530808080808,3.14754085114491,-0.67916116335084,-0.0423906874217897,-2.24190862408067,\ +-4,-0.243882,-2.24777727272727,3.14753772230356,-0.679168200284179,-0.0424090671306996,-2.24192657919556,\ +-4,-0.243882,-2.22024646464646,3.14753429313995,-0.679175912658495,-0.0424292110184063,-2.24194625773454,\ +-4,-0.243882,-2.19271565656565,3.14753051823458,-0.679184402624714,-0.0424513858920744,-2.24196792034118,\ +-4,-0.243882,-2.16518484848485,3.14752634252299,-0.679193794025812,-0.0424759152161682,-2.24199188300754,\ +-4,-0.243882,-2.13765404040404,3.14752169859201,-0.679204238477605,-0.0425031949948043,-2.24201853258953,\ +-4,-0.243882,-2.11012323232323,3.1475165030126,-0.679215923616526,-0.0425337153140505,-2.24204834785163,\ +-4,-0.243882,-2.08259242424242,3.14751065128322,-0.679229084472234,-0.0425680900459644,-2.2420819284847,\ +-4,-0.243882,-2.05506161616161,3.14750401072821,-0.679244019439396,-0.0426070985651315,-2.24212003585881,\ +-4,-0.243882,-2.02753080808081,3.14749641031687,-0.679261113175332,-0.0426517455549049,-2.24216365144787,\ +-4,-0.243882,-2,3.1474876257236,-0.679280870200436,-0.042703348767974,-2.24221406256286,\ +-4,-0.235902,-4.72555,3.14759518672547,-0.679038959693088,-0.0420715046826938,-2.24159681485782,\ +-4,-0.235902,-4.69801919191919,3.14759506019476,-0.679039244267481,-0.0420722479602386,-2.24159754096473,\ +-4,-0.235902,-4.67048838383838,3.14759493135398,-0.679039534037367,-0.0420730048078415,-2.24159828032822,\ +-4,-0.235902,-4.64295757575758,3.14759480013927,-0.679039829146334,-0.0420737756005493,-2.24159903331466,\ +-4,-0.235902,-4.61542676767677,3.14759466648442,-0.679040129743315,-0.0420745607273594,-2.24159980030408,\ +-4,-0.235902,-4.58789595959596,3.14759453032072,-0.679040435982835,-0.0420753605918719,-2.24160058169072,\ +-4,-0.235902,-4.56036515151515,3.14759439157686,-0.679040748025276,-0.0420761756129834,-2.24160137788384,\ +-4,-0.235902,-4.53283434343434,3.1475942501788,-0.679041066037153,-0.0420770062256167,-2.2416021893083,\ +-4,-0.235902,-4.50530353535354,3.14759410604965,-0.679041390191416,-0.0420778528814964,-2.24160301640538,\ +-4,-0.235902,-4.47777272727273,3.1475939591095,-0.679041720667759,-0.0420787160499669,-2.24160385963359,\ +-4,-0.235902,-4.45024191919192,3.14759380927531,-0.679042057652956,-0.0420795962188607,-2.2416047194695,\ +-4,-0.235902,-4.42271111111111,3.14759365646073,-0.679042401341211,-0.0420804938954175,-2.24160559640861,\ +-4,-0.235902,-4.3951803030303,3.14759350057593,-0.679042751934533,-0.042081409607259,-2.24160649096637,\ +-4,-0.235902,-4.36764949494949,3.14759334152747,-0.679043109643125,-0.0420823439034226,-2.24160740367913,\ +-4,-0.235902,-4.34011868686869,3.14759317921804,-0.679043474685817,-0.0420832973554597,-2.24160833510525,\ +-4,-0.235902,-4.31258787878788,3.1475930135463,-0.679043847290502,-0.042084270558602,-2.2416092858262,\ +-4,-0.235902,-4.28505707070707,3.1475928444067,-0.67904422769461,-0.0420852641329995,-2.2416102564478,\ +-4,-0.235902,-4.25752626262626,3.14759267168919,-0.679044616145625,-0.0420862787250395,-2.24161124760151,\ +-4,-0.235902,-4.22999545454545,3.14759249527903,-0.679045012901603,-0.042087315008748,-2.24161225994577,\ +-4,-0.235902,-4.20246464646465,3.14759231505653,-0.679045418231759,-0.0420883736872835,-2.24161329416753,\ +-4,-0.235902,-4.17493383838384,3.14759213089674,-0.679045832417071,-0.0420894554945286,-2.24161435098369,\ +-4,-0.235902,-4.14740303030303,3.14759194266923,-0.679046255750928,-0.0420905611967845,-2.24161543114285,\ +-4,-0.235902,-4.11987222222222,3.1475917502377,-0.679046688539825,-0.042091691594584,-2.24161653542706,\ +-4,-0.235902,-4.09234141414141,3.14759155345974,-0.679047131104103,-0.0420928475246227,-2.24161766465369,\ +-4,-0.235902,-4.06481060606061,3.14759135218639,-0.679047583778742,-0.0420940298618247,-2.24161881967744,\ +-4,-0.235902,-4.0372797979798,3.14759114626184,-0.679048046914195,-0.0420952395215509,-2.24162000139253,\ +-4,-0.235902,-4.00974898989899,3.14759093552296,-0.679048520877315,-0.0420964774619632,-2.24162121073499,\ +-4,-0.235902,-3.98221818181818,3.14759071979894,-0.679049006052299,-0.0420977446865546,-2.24162244868512,\ +-4,-0.235902,-3.95468737373737,3.14759049891076,-0.679049502841745,-0.0420990422468644,-2.24162371627018,\ +-4,-0.235902,-3.92715656565657,3.14759027267076,-0.679050011667757,-0.0421003712453837,-2.24162501456719,\ +-4,-0.235902,-3.89962575757576,3.14759004088202,-0.679050532973145,-0.0421017328386853,-2.241626344706,\ +-4,-0.235902,-3.87209494949495,3.14758980333791,-0.679051067222711,-0.0421031282407776,-2.24162770787258,\ +-4,-0.235902,-3.84456414141414,3.14758955982134,-0.679051614904627,-0.0421045587267147,-2.24162910531252,\ +-4,-0.235902,-3.81703333333333,3.14758931010422,-0.679052176531923,-0.0421060256364831,-2.24163053833486,\ +-4,-0.235902,-3.78950252525252,3.14758905394667,-0.679052752644101,-0.0421075303791884,-2.24163200831614,\ +-4,-0.235902,-3.76197171717172,3.14758879109628,-0.679053343808844,-0.0421090744375703,-2.24163351670487,\ +-4,-0.235902,-3.73444090909091,3.14758852128727,-0.679053950623899,-0.0421106593728751,-2.24163506502622,\ +-4,-0.235902,-3.7069101010101,3.14758824423959,-0.679054573719086,-0.0421122868301221,-2.24163665488718,\ +-4,-0.235902,-3.67937929292929,3.147587959658,-0.679055213758479,-0.0421139585437985,-2.24163828798219,\ +-4,-0.235902,-3.65184848484848,3.14758766723093,-0.679055871442762,-0.0421156763440263,-2.24163996609911,\ +-4,-0.235902,-3.62431767676768,3.14758736662943,-0.6790565475118,-0.0421174421632448,-2.24164169112573,\ +-4,-0.235902,-3.59678686868687,3.14758705750587,-0.679057242747405,-0.0421192580434621,-2.24164346505687,\ +-4,-0.235902,-3.56925606060606,3.14758673949262,-0.679057957976354,-0.0421211261441339,-2.2416452900021,\ +-4,-0.235902,-3.54172525252525,3.14758641220066,-0.679058694073672,-0.0421230487507287,-2.2416471681941,\ +-4,-0.235902,-3.51419444444444,3.14758607521786,-0.679059451966203,-0.0421250282840575,-2.24164910199776,\ +-4,-0.235902,-3.48666363636364,3.14758572810736,-0.679060232636494,-0.0421270673104409,-2.24165109392011,\ +-4,-0.235902,-3.45913282828283,3.14758537040562,-0.679061037127063,-0.0421291685528103,-2.24165314662118,\ +-4,-0.235902,-3.43160202020202,3.14758500162036,-0.679061866545025,-0.0421313349028388,-2.24165526292585,\ +-4,-0.235902,-3.40407121212121,3.14758462122837,-0.679062722067191,-0.0421335694342182,-2.24165744583678,\ +-4,-0.235902,-3.3765404040404,3.1475842286729,-0.679063604945622,-0.0421358754172092,-2.24165969854871,\ +-4,-0.235902,-3.3490095959596,3.14758382336111,-0.679064516513763,-0.0421382563346119,-2.24166202446398,\ +-4,-0.235902,-3.32147878787879,3.14758340466092,-0.679065458193139,-0.0421407158993155,-2.2416644272097,\ +-4,-0.235902,-3.29394797979798,3.1475829718978,-0.67906643150078,-0.0421432580736209,-2.24166691065663,\ +-4,-0.235902,-3.26641717171717,3.14758252435117,-0.679067438057352,-0.0421458870905376,-2.24166947894,\ +-4,-0.235902,-3.23888636363636,3.14758206125032,-0.679068479596173,-0.0421486074773079,-2.24167213648247,\ +-4,-0.235902,-3.21135555555555,3.14758158177008,-0.679069557973174,-0.0421514240814214,-2.24167488801954,\ +-4,-0.235902,-3.18382474747475,3.14758108502578,-0.679070675177936,-0.0421543420994424,-2.24167773862774,\ +-4,-0.235902,-3.15629393939394,3.14758057006796,-0.679071833345934,-0.0421573671090084,-2.24168069375583,\ +-4,-0.235902,-3.12876313131313,3.14758003587616,-0.679073034772167,-0.0421605051044124,-2.24168375925967,\ +-4,-0.235902,-3.10123232323232,3.14757948135228,-0.679074281926341,-0.0421637625362499,-2.24168694144079,\ +-4,-0.235902,-3.07370151515151,3.147578905313,-0.679075577469806,-0.042167146355679,-2.24169024708981,\ +-4,-0.235902,-3.04617070707071,3.14757830648137,-0.679076924274516,-0.0421706640639362,-2.24169368353465,\ +-4,-0.235902,-3.0186398989899,3.14757768347733,-0.679078325444281,-0.0421743237678474,-2.24169725869487,\ +-4,-0.235902,-2.99110909090909,3.14757703480712,-0.679079784338659,-0.0421781342421992,-2.24170098114255,\ +-4,-0.235902,-2.96357828282828,3.14757635885129,-0.679081304599832,-0.0421821049999813,-2.24170486017092,\ +-4,-0.235902,-2.93604747474747,3.14757565385128,-0.679082890182972,-0.0421862463716854,-2.24170890587181,\ +-4,-0.235902,-2.90851666666667,3.14757491789403,-0.679084545390611,-0.0421905695950456,-2.24171312922336,\ +-4,-0.235902,-2.88098585858586,3.14757414889473,-0.679086274911612,-0.0421950869168713,-2.24171754218946,\ +-4,-0.235902,-2.85345505050505,3.14757334457706,-0.679088083865537,-0.0421998117089067,-2.24172215783296,\ +-4,-0.235902,-2.82592424242424,3.14757250245068,-0.679089977853264,-0.0422047586000324,-2.24172699044477,\ +-4,-0.235902,-2.79839343434343,3.14757161978553,-0.679091963014902,-0.0422099436275566,-2.24173205569175,\ +-4,-0.235902,-2.77086262626263,3.14757069358219,-0.679094046096295,-0.042215384410894,-2.24173737078626,\ +-4,-0.235902,-2.74333181818182,3.14756972053785,-0.679096234525605,-0.0422211003515974,-2.24174295468166,\ +-4,-0.235902,-2.71580101010101,3.147568697007,-0.679098536501814,-0.0422271128645228,-2.24174882829809,\ +-4,-0.235902,-2.6882702020202,3.14756761895574,-0.679100961097375,-0.0422334456459359,-2.24175501478442,\ +-4,-0.235902,-2.66073939393939,3.14756648190866,-0.679103518377713,-0.0422401249856355,-2.24176153982311,\ +-4,-0.235902,-2.63320858585858,3.14756528088676,-0.679106219540891,-0.0422471801317592,-2.24176843198662,\ +-4,-0.235902,-2.60567777777778,3.14756401033453,-0.67910907708155,-0.042254643718948,-2.24177572315571,\ +-4,-0.235902,-2.57814696969697,3.14756266403402,-0.679112104984145,-0.0422625522730924,-2.24178344901247,\ +-4,-0.235902,-2.55061616161616,3.14756123500315,-0.679115318951827,-0.0422709468091259,-2.24179164962434,\ +-4,-0.235902,-2.52308535353535,3.14755971537447,-0.679118736678849,-0.0422798735425169,-2.24180037013914,\ +-4,-0.235902,-2.49555454545454,3.14755809625038,-0.679122378176469,-0.0422893847405123,-2.24180966161669,\ +-4,-0.235902,-2.46802373737374,3.14755636752867,-0.679126266165052,-0.0422995397462407,-2.24181958202922,\ +-4,-0.235902,-2.44049292929293,3.14755451769162,-0.679130426548558,-0.0423104062180653,-2.2418301974721,\ +-4,-0.235902,-2.41296212121212,3.14755253354906,-0.679134888992423,-0.0423220616388799,-2.24184158363827,\ +-4,-0.235902,-2.38543131313131,3.14755039992335,-0.679139687632,-0.0423345951665346,-2.24185382762592,\ +-4,-0.235902,-2.3579005050505,3.14754809926035,-0.679144861947416,-0.042348109918856,-2.24186703017074,\ +-4,-0.235902,-2.3303696969697,3.14754561114548,-0.679150457852271,-0.0423627258172031,-2.24188130842376,\ +-4,-0.235902,-2.30283888888889,3.14754291169614,-0.679156529059745,-0.0423785831545954,-2.24189679943704,\ +-4,-0.235902,-2.27530808080808,3.14753997279279,-0.679163138812252,-0.0423958471133702,-2.24191366457699,\ +-4,-0.235902,-2.24777727272727,3.14753676109564,-0.679170362092726,-0.0424147135408507,-2.24193209516665,\ +-4,-0.235902,-2.22024646464646,3.14753323677442,-0.679178288481665,-0.0424354164116115,-2.24195231977548,\ +-4,-0.235902,-2.19271565656565,3.14752935184802,-0.679187025891151,-0.0424582375803358,-2.24197461374697,\ +-4,-0.235902,-2.16518484848485,3.14752504798717,-0.679196705506851,-0.0424835196898013,-2.24199931180842,\ +-4,-0.235902,-2.13765404040404,3.14752025356568,-0.679207488419918,-0.0425116834926791,-2.2420268249926,\ +-4,-0.235902,-2.11012323232323,3.14751487964249,-0.679219574663677,-0.0425432514543901,-2.24205766369533,\ +-4,-0.235902,-2.08259242424242,3.14750881439288,-0.67923321573789,-0.0425788804651048,-2.24209246963181,\ +-4,-0.235902,-2.05506161616161,3.14750191524304,-0.679248732298811,-0.0426194080442851,-2.24213206097376,\ +-4,-0.235902,-2.02753080808081,3.14749399752067,-0.679266539684405,-0.0426659190097804,-2.24217749747839,\ +-4,-0.235902,-2,3.14748481767833,-0.679287185646048,-0.0427198440289699,-2.24223017676291,\ +-4,-0.232369,-4.72555,3.14759517061495,-0.679038995926521,-0.0420715993205009,-2.24159690730938,\ +-4,-0.232369,-4.69801919191919,3.14759504379128,-0.679039281159797,-0.0420723443189719,-2.24159763509746,\ +-4,-0.232369,-4.67048838383838,3.14759491464948,-0.679039571606695,-0.0420731029348717,-2.24159837618839,\ +-4,-0.232369,-4.64295757575758,3.14759478312538,-0.679039867411491,-0.0420738755450029,-2.24159913095028,\ +-4,-0.232369,-4.61542676767677,3.14759464915247,-0.67904016872381,-0.0420746625401987,-2.24159989976491,\ +-4,-0.232369,-4.58789595959596,3.14759451266171,-0.679040475698919,-0.0420754643259831,-2.24160068302845,\ +-4,-0.232369,-4.56036515151515,3.14759437358144,-0.679040788497963,-0.0420762813232671,-2.24160148115209,\ +-4,-0.232369,-4.53283434343434,3.14759423183726,-0.679041107288276,-0.042077113969086,-2.24160229456276,\ +-4,-0.232369,-4.50530353535354,3.14759408735191,-0.679041432243647,-0.0420779627173787,-2.24160312370391,\ +-4,-0.232369,-4.47777272727273,3.14759394004508,-0.679041763544664,-0.0420788280398123,-2.24160396903633,\ +-4,-0.232369,-4.45024191919192,3.14759378983332,-0.679042101379038,-0.0420797104266573,-2.24160483103894,\ +-4,-0.232369,-4.42271111111111,3.14759363662983,-0.679042445941945,-0.0420806103877134,-2.24160571020978,\ +-4,-0.232369,-4.3951803030303,3.14759348034436,-0.679042797436427,-0.0420815284532912,-2.24160660706691,\ +-4,-0.232369,-4.36764949494949,3.14759332088295,-0.679043156073773,-0.0420824651752546,-2.24160752214944,\ +-4,-0.232369,-4.34011868686869,3.14759315814779,-0.679043522073944,-0.0420834211281274,-2.24160845601861,\ +-4,-0.232369,-4.31258787878788,3.14759299203702,-0.679043895666038,-0.042084396910268,-2.24160940925898,\ +-4,-0.232369,-4.28505707070707,3.14759282244452,-0.679044277088738,-0.042085393145118,-2.24161038247958,\ +-4,-0.232369,-4.25752626262626,3.14759264925966,-0.679044666590856,-0.042086410482531,-2.24161137631523,\ +-4,-0.232369,-4.22999545454545,3.14759247236707,-0.679045064431852,-0.0420874496001861,-2.24161239142799,\ +-4,-0.232369,-4.20246464646465,3.1475922916464,-0.67904547088241,-0.0420885112050939,-2.24161342850851,\ +-4,-0.232369,-4.17493383838384,3.14759210697202,-0.679045886225067,-0.0420895960351995,-2.2416144882777,\ +-4,-0.232369,-4.14740303030303,3.14759191821276,-0.679046310754854,-0.0420907048610937,-2.24161557148834,\ +-4,-0.232369,-4.11987222222222,3.14759172523156,-0.679046744779999,-0.0420918384878393,-2.2416166789269,\ +-4,-0.232369,-4.09234141414141,3.14759152788518,-0.679047188622678,-0.0420929977569185,-2.24161781141543,\ +-4,-0.232369,-4.06481060606061,3.14759132602381,-0.679047642619805,-0.042094183548319,-2.24161896981359,\ +-4,-0.232369,-4.0372797979798,3.14759111949072,-0.67904810712389,-0.0420953967827579,-2.24162015502081,\ +-4,-0.232369,-4.00974898989899,3.14759090812183,-0.67904858250395,-0.0420966384240696,-2.24162136797867,\ +-4,-0.232369,-3.98221818181818,3.14759069174529,-0.679049069146488,-0.0420979094817572,-2.24162260967335,\ +-4,-0.232369,-3.95468737373737,3.147590470181,-0.679049567456545,-0.0420992110137306,-2.24162388113833,\ +-4,-0.232369,-3.92715656565657,3.14759024324015,-0.679050077858803,-0.0421005441292431,-2.24162518345722,\ +-4,-0.232369,-3.89962575757576,3.1475900107246,-0.679050600798833,-0.0421019099920445,-2.2416265177669,\ +-4,-0.232369,-3.87209494949495,3.14758977242641,-0.679051136744345,-0.0421033098237695,-2.24162788526078,\ +-4,-0.232369,-3.84456414141414,3.14758952812712,-0.679051686186622,-0.0421047449075815,-2.24162928719238,\ +-4,-0.232369,-3.81703333333333,3.14758927759718,-0.679052249642002,-0.0421062165920966,-2.24163072487916,\ +-4,-0.232369,-3.78950252525252,3.14758902059514,-0.679052827653492,-0.0421077262956099,-2.24163219970666,\ +-4,-0.232369,-3.76197171717172,3.14758875686691,-0.679053420792539,-0.042109275510655,-2.24163371313292,\ +-4,-0.232369,-3.73444090909091,3.14758848614495,-0.679054029660881,-0.0421108658089257,-2.24163526669333,\ +-4,-0.232369,-3.7069101010101,3.14758820814729,-0.679054654892614,-0.0421124988465951,-2.24163686200581,\ +-4,-0.232369,-3.67937929292929,3.14758792257668,-0.679055297156368,-0.0421141763700674,-2.24163850077641,\ +-4,-0.232369,-3.65184848484848,3.14758762911937,-0.679055957157713,-0.0421159002222096,-2.24164018480544,\ +-4,-0.232369,-3.62431767676768,3.14758732744409,-0.679056635641734,-0.0421176723491033,-2.24164191599401,\ +-4,-0.232369,-3.59678686868687,3.14758701720072,-0.679057333395842,-0.042119494807375,-2.24164369635123,\ +-4,-0.232369,-3.56925606060606,3.14758669801899,-0.679058051252812,-0.0421213697721562,-2.24164552800201,\ +-4,-0.232369,-3.54172525252525,3.14758636950696,-0.679058790094116,-0.0421232995457459,-2.24164741319545,\ +-4,-0.232369,-3.51419444444444,3.14758603124946,-0.679059550853519,-0.0421252865670403,-2.24164935431408,\ +-4,-0.232369,-3.48666363636364,3.1475856828063,-0.679060334521024,-0.0421273334218164,-2.24165135388399,\ +-4,-0.232369,-3.45913282828283,3.14758532371038,-0.679061142147164,-0.0421294428539587,-2.24165341458564,\ +-4,-0.232369,-3.43160202020202,3.14758495346559,-0.679061974847708,-0.0421316177777305,-2.24165553926597,\ +-4,-0.232369,-3.40407121212121,3.14758457154453,-0.679062833808796,-0.0421338612912067,-2.24165773095152,\ +-4,-0.232369,-3.3765404040404,3.14758417738603,-0.679063720292584,-0.0421361766909984,-2.2416599928627,\ +-4,-0.232369,-3.3490095959596,3.14758377039233,-0.679064635643427,-0.0421385674884156,-2.24166232842975,\ +-4,-0.232369,-3.32147878787879,3.1475833499261,-0.679065581294685,-0.0421410374272351,-2.24166474130992,\ +-4,-0.232369,-3.29394797979798,3.14758291530715,-0.679066558776203,-0.0421435905032607,-2.24166723540672,\ +-4,-0.232369,-3.26641717171717,3.14758246580867,-0.679067569722587,-0.0421462309858964,-2.24166981489095,\ +-4,-0.232369,-3.23888636363636,3.14758200065323,-0.679068615882313,-0.04214896344197,-2.24167248422391,\ +-4,-0.232369,-3.21135555555555,3.14758151900829,-0.679069699127821,-0.0421517927620922,-2.24167524818323,\ +-4,-0.232369,-3.18382474747475,3.14758101998121,-0.679070821466697,-0.0421547241898692,-2.2416781118914,\ +-4,-0.232369,-3.15629393939394,3.14758050261374,-0.679071985054102,-0.0421577633543377,-2.2416810808474,\ +-4,-0.232369,-3.12876313131313,3.14757996587588,-0.679073192206566,-0.0421609163060378,-2.24168416096202,\ +-4,-0.232369,-3.10123232323232,3.14757940865903,-0.679074445417403,-0.0421641895572223,-2.24168735859706,\ +-4,-0.232369,-3.07370151515151,3.14757882976832,-0.67907574737388,-0.0421675901267531,-2.24169068060922,\ +-4,-0.232369,-3.04617070707071,3.14757822791414,-0.679077100976472,-0.0421711255903415,-2.24169413439923,\ +-4,-0.232369,-3.0186398989899,3.14757760170244,-0.67907850936041,-0.042174804136888,-2.2416977279668,\ +-4,-0.232369,-2.99110909090909,3.14757694962406,-0.679079975919948,-0.0421786346318056,-2.24170146997254,\ +-4,-0.232369,-2.96357828282828,3.14757627004248,-0.679081504335654,-0.0421826266883534,-2.24170536980765,\ +-4,-0.232369,-2.93604747474747,3.14757556118019,-0.67908309860527,-0.0421867907481914,-2.24170943767255,\ +-4,-0.232369,-2.90851666666667,3.14757482110311,-0.679084763078619,-0.0421911381725779,-2.24171368466605,\ +-4,-0.232369,-2.88098585858586,3.14757404770302,-0.679086502497227,-0.0421956813458844,-2.24171812288643,\ +-4,-0.232369,-2.85345505050505,3.14757323867745,-0.679088322039453,-0.0422004337934155,-2.24172276554654,\ +-4,-0.232369,-2.82592424242424,3.14757239150684,-0.679090227371965,-0.0422054103158966,-2.24172762710519,\ +-4,-0.232369,-2.79839343434343,3.14757150342827,-0.679092224708693,-0.042210627143439,-2.24173272341756,\ +-4,-0.232369,-2.77086262626263,3.14757057140538,-0.679094320878526,-0.0422161021123662,-2.24173807190794,\ +-4,-0.232369,-2.74333181818182,3.14756959209375,-0.679096523403322,-0.0422218548689515,-2.24174369176873,\ +-4,-0.232369,-2.71580101010101,3.1475685618007,-0.679098840588084,-0.0422279071049758,-2.24174960419061,\ +-4,-0.232369,-2.6882702020202,3.14756747643882,-0.679101281625621,-0.0422342828310586,-2.24175583262953,\ +-4,-0.232369,-2.66073939393939,3.14756633147176,-0.679103856718434,-0.0422410086950164,-2.24176240311771,\ +-4,-0.232369,-2.63320858585858,3.14756512185086,-0.679106577221244,-0.0422481143541574,-2.24176934462733,\ +-4,-0.232369,-2.60567777777778,3.14756384194069,-0.679109455808379,-0.0422556329124725,-2.24177668949765,\ +-4,-0.232369,-2.57814696969697,3.14756248543134,-0.679112506671231,-0.0422636014363223,-2.24178447393873,\ +-4,-0.232369,-2.55061616161616,3.1475610452343,-0.679115745752209,-0.0422720615655686,-2.24179273862852,\ +-4,-0.232369,-2.52308535353535,3.14755951335863,-0.679119191023423,-0.0422810602414111,-2.24180152942382,\ +-4,-0.232369,-2.49555454545454,3.14755788076253,-0.679122862820299,-0.0422906505777931,-2.24181089821156,\ +-4,-0.232369,-2.46802373737374,3.14755613717483,-0.67912678424327,-0.0423008929105302,-2.24182090393374,\ +-4,-0.232369,-2.44049292929293,3.14755427087866,-0.679130981644235,-0.0423118560679466,-2.24183161382865,\ +-4,-0.232369,-2.41296212121212,3.14755226844778,-0.679135485219514,-0.042323618919563,-2.24184310494384,\ +-4,-0.232369,-2.38543131313131,3.14755011442312,-0.679140329737443,-0.0423362722765166,-2.24185546599259,\ +-4,-0.232369,-2.3579005050505,3.1475477909128,-0.679145555437733,-0.042349921240573,-2.24186879964869,\ +-4,-0.232369,-2.3303696969697,3.14754527709414,-0.679151209151802,-0.0423646881303311,-2.24188322540502,\ +-4,-0.232369,-2.30283888888889,3.14754254858774,-0.679157345710153,-0.0423807161571454,-2.24189888316458,\ +-4,-0.232369,-2.27530808080808,3.14753957666438,-0.679164029726432,-0.0423981740848673,-2.24191593779257,\ +-4,-0.232369,-2.24777727272727,3.14753632722946,-0.679171337881242,-0.042417262194932,-2.24193458494368,\ +-4,-0.232369,-2.22024646464646,3.14753275950915,-0.679179361877061,-0.0424382200043046,-2.24195505860171,\ +-4,-0.232369,-2.19271565656565,3.14752882433066,-0.679188212306207,-0.0424613363681623,-2.24197764094896,\ +-4,-0.232369,-2.16518484848485,3.14752446184208,-0.679198023778826,-0.0424869628736423,-2.24200267545045,\ +-4,-0.232369,-2.13765404040404,3.14751959844699,-0.679208961817277,-0.0425155318472508,-2.24203058444542,\ +-4,-0.232369,-2.11012323232323,3.14751414261868,-0.679221232270047,-0.0425475809429768,-2.24206189316737,\ +-4,-0.232369,-2.08259242424242,3.14750797908563,-0.679235094389048,-0.0425837872987731,-2.24209726311155,\ +-4,-0.232369,-2.05506161616161,3.14750096059723,-0.679250879348835,-0.0426250159067696,-2.24213753928768,\ +-4,-0.232369,-2.02753080808081,3.14749289600768,-0.679269017046674,-0.0426723896121309,-2.24218381860183,\ +-4,-0.232369,-2,3.14748353260245,-0.679290075851177,-0.0427273929322169,-2.24223755127715,\ +-4,-0.230734,-4.72555,3.14759516314676,-0.679039012722876,-0.0420716431907662,-2.24159695016619,\ +-4,-0.230734,-4.69801919191919,3.14759503618717,-0.679039298261843,-0.0420723889876699,-2.24159767873425,\ +-4,-0.230734,-4.67048838383838,3.1475949069057,-0.679039589022859,-0.0420731484239996,-2.24159842062667,\ +-4,-0.230734,-4.64295757575758,3.14759477523807,-0.679039885150497,-0.0420739218773733,-2.24159917621232,\ +-4,-0.230734,-4.61542676767677,3.14759464111758,-0.679040186794728,-0.042074709739478,-2.24159994587382,\ +-4,-0.230734,-4.58789595959596,3.14759450447506,-0.679040494111146,-0.0420755124167315,-2.24160073000824,\ +-4,-0.230734,-4.56036515151515,3.14759436523869,-0.679040807261265,-0.0420763303309814,-2.24160152902766,\ +-4,-0.230734,-4.53283434343434,3.14759422333391,-0.679041126412789,-0.0420771639202448,-2.24160234335998,\ +-4,-0.230734,-4.50530353535354,3.14759407868326,-0.679041451739904,-0.0420780136394894,-2.24160317344966,\ +-4,-0.230734,-4.47777272727273,3.14759393120628,-0.67904178342361,-0.042078879961463,-2.24160401975853,\ +-4,-0.230734,-4.45024191919192,3.1475937808193,-0.679042121652048,-0.042079763377569,-2.24160488276662,\ +-4,-0.230734,-4.42271111111111,3.14759362743535,-0.679042466620858,-0.0420806643987975,-2.24160576297314,\ +-4,-0.230734,-4.3951803030303,3.14759347096393,-0.679042818533558,-0.0420815835567088,-2.24160666089738,\ +-4,-0.230734,-4.36764949494949,3.14759331131085,-0.679043177601935,-0.0420825214044818,-2.2416075770797,\ +-4,-0.230734,-4.34011868686869,3.14759314837811,-0.679043544046485,-0.0420834785180217,-2.24160851208274,\ +-4,-0.230734,-4.31258787878788,3.14759298206358,-0.679043918096853,-0.0420844554971408,-2.24160946649242,\ +-4,-0.230734,-4.28505707070707,3.14759281226087,-0.679044299992327,-0.0420854529668119,-2.24161044091931,\ +-4,-0.230734,-4.25752626262626,3.14759263885908,-0.679044689982319,-0.0420864715785004,-2.24161143599981,\ +-4,-0.230734,-4.22999545454545,3.14759246174257,-0.679045088326945,-0.0420875120115845,-2.2416124523976,\ +-4,-0.230734,-4.20246464646465,3.14759228079066,-0.679045495297576,-0.0420885749748658,-2.24161349080512,\ +-4,-0.230734,-4.17493383838384,3.1475920958774,-0.679045911177471,-0.0420896612081794,-2.2416145519451,\ +-4,-0.230734,-4.14740303030303,3.14759190687128,-0.679046336262424,-0.0420907714841117,-2.24161563657228,\ +-4,-0.230734,-4.11987222222222,3.14759171363491,-0.679046770861475,-0.0420919066098316,-2.24161674547519,\ +-4,-0.230734,-4.09234141414141,3.14759151602464,-0.679047215297645,-0.04209306742905,-2.24161787947805,\ +-4,-0.230734,-4.06481060606061,3.14759131389029,-0.679047669908757,-0.0420942548241078,-2.24161903944282,\ +-4,-0.230734,-4.0372797979798,3.14759110707466,-0.679048135048269,-0.0420954697182166,-2.24162022627137,\ +-4,-0.230734,-4.00974898989899,3.14759089541326,-0.679048611086212,-0.0420967130778484,-2.24162144090785,\ +-4,-0.230734,-3.98221818181818,3.14759067873374,-0.679049098410163,-0.0420979859153034,-2.24162268434119,\ +-4,-0.230734,-3.95468737373737,3.14759045685551,-0.679049597426285,-0.0420992892914563,-2.24162395760774,\ +-4,-0.230734,-3.92715656565657,3.14759022958921,-0.679050108560483,-0.0421006243187068,-2.24162526179421,\ +-4,-0.230734,-3.89962575757576,3.14758999673615,-0.67905063225959,-0.0421019921641454,-2.24162659804072,\ +-4,-0.230734,-3.87209494949495,3.14758975808778,-0.679051168992689,-0.0421033940529559,-2.24162796754416,\ +-4,-0.230734,-3.84456414141414,3.14758951342501,-0.679051719252501,-0.0421048312720772,-2.24162937156175,\ +-4,-0.230734,-3.81703333333333,3.14758926251757,-0.679052283556898,-0.0421063051741416,-2.24163081141485,\ +-4,-0.230734,-3.78950252525252,3.14758900512329,-0.679052862450536,-0.0421078171817225,-2.24163228849319,\ +-4,-0.230734,-3.76197171717172,3.14758874098732,-0.679053456506596,-0.0421093687919137,-2.24163380425926,\ +-4,-0.230734,-3.73444090909091,3.14758846984129,-0.679054066328689,-0.0421109615812731,-2.24163536025321,\ +-4,-0.230734,-3.7069101010101,3.14758819140235,-0.67905469255289,-0.0421125972111672,-2.24163695809804,\ +-4,-0.230734,-3.67937929292929,3.1475879053723,-0.679055335849962,-0.0421142774335503,-2.2416385995052,\ +-4,-0.230734,-3.65184848484848,3.14758761143637,-0.67905599692774,-0.0421160040972248,-2.24164028628081,\ +-4,-0.230734,-3.62431767676768,3.14758730926222,-0.67905667653375,-0.0421177791546272,-2.24164202033219,\ +-4,-0.230734,-3.59678686868687,3.14758699849857,-0.679057375458002,-0.0421196046691919,-2.24164380367511,\ +-4,-0.230734,-3.56925606060606,3.1475866787739,-0.679058094536074,-0.0421214828233545,-2.24164563844158,\ +-4,-0.230734,-3.54172525252525,3.14758634969492,-0.679058834652435,-0.0421234159272543,-2.2416475268884,\ +-4,-0.230734,-3.51419444444444,3.14758601084508,-0.679059596744079,-0.0421254064282141,-2.24164947140632,\ +-4,-0.230734,-3.48666363636364,3.1475856617826,-0.679060381804474,-0.0421274569210782,-2.24165147453026,\ +-4,-0.230734,-3.45913282828283,3.14758530203872,-0.679061190887902,-0.0421295701594951,-2.24165353895026,\ +-4,-0.230734,-3.43160202020202,3.14758493111555,-0.679062025114156,-0.0421317490682572,-2.24165566752353,\ +-4,-0.230734,-3.40407121212121,3.14758454848376,-0.67906288567373,-0.0421339967568054,-2.24165786328769,\ +-4,-0.230734,-3.3765404040404,3.14758415358007,-0.679063773833482,-0.042136316534035,-2.24166012947519,\ +-4,-0.230734,-3.3490095959596,3.14758374580446,-0.679064690942858,-0.042138711924549,-2.24166246952922,\ +-4,-0.230734,-3.32147878787879,3.14758332451718,-0.679065638440728,-0.0421411866865257,-2.24166488712114,\ +-4,-0.230734,-3.29394797979798,3.14758288903534,-0.679066617862927,-0.0421437448313947,-2.24166738616969,\ +-4,-0.230734,-3.26641717171717,3.14758243862926,-0.679067630850556,-0.0421463906455343,-2.24166997086225,\ +-4,-0.230734,-3.23888636363636,3.14758197251836,-0.679068679159156,-0.0421491287142378,-2.24167264567818,\ +-4,-0.230734,-3.21135555555555,3.14758148986668,-0.679069764668873,-0.0421519639482345,-2.24167541541476,\ +-4,-0.230734,-3.18382474747475,3.14758098977785,-0.6790708893957,-0.0421549016130808,-2.24167828521592,\ +-4,-0.230734,-3.15629393939394,3.14758047128952,-0.679072055503978,-0.0421579473617989,-2.24168126060407,\ +-4,-0.230734,-3.12876313131313,3.14757993336722,-0.679073265320292,-0.0421611072711835,-2.24168434751563,\ +-4,-0.230734,-3.10123232323232,3.14757937489746,-0.679074521348971,-0.0421643878822707,-2.24168755234055,\ +-4,-0.230734,-3.07370151515151,3.14757879468001,-0.679075826289393,-0.0421677962455325,-2.2416908819664,\ +-4,-0.230734,-3.04617070707071,3.1475781914193,-0.679077183055335,-0.0421713399714581,-2.24169434382787,\ +-4,-0.230734,-3.0186398989899,3.14757756371479,-0.679078594796718,-0.042175027287283,-2.24169794596214,\ +-4,-0.230734,-2.99110909090909,3.14757691005007,-0.679080064923995,-0.0421788671007558,-2.24170169707117,\ +-4,-0.230734,-2.96357828282828,3.14757622878068,-0.679081597135682,-0.0421828690719849,-2.24170560659191,\ +-4,-0.230734,-2.93604747474747,3.14757551812025,-0.6790831954494,-0.0421870436945837,-2.24170968477556,\ +-4,-0.230734,-2.90851666666667,3.14757477612488,-0.679084864237085,-0.0421914023875485,-2.24171394277733,\ +-4,-0.230734,-2.88098585858586,3.14757400067541,-0.679086608264884,-0.0421959575995657,-2.24171839275831,\ +-4,-0.230734,-2.85345505050505,3.14757318945713,-0.67908843273865,-0.042200722927751,-2.24172304800152,\ +-4,-0.230734,-2.82592424242424,3.14757233993677,-0.679090343355829,-0.0422057132532091,-2.24172792304428,\ +-4,-0.230734,-2.79839343434343,3.1475714493361,-0.679092346364886,-0.0422109448962583,-2.2417330338299,\ +-4,-0.230734,-2.77086262626263,3.14757051460149,-0.679094448633572,-0.0422164357947318,-2.24173839788182,\ +-4,-0.230734,-2.74333181818182,3.14756953236895,-0.679096657727607,-0.0422222057094609,-2.24174403450438,\ +-4,-0.230734,-2.71580101010101,3.1475684989238,-0.679098982001641,-0.0422282764618973,-2.24174996501492,\ +-4,-0.230734,-2.6882702020202,3.14756741015351,-0.679101430704858,-0.0422346722098999,-2.24175621301324,\ +-4,-0.230734,-2.66073939393939,3.14756626149321,-0.679104014103976,-0.0422414197690321,-2.2417628046954,\ +-4,-0.230734,-2.63320858585858,3.14756504786156,-0.679106743627144,-0.042248548988379,-2.24176976922096,\ +-4,-0.230734,-2.60567777777778,3.14756376358572,-0.67910963203295,-0.0422560931919928,-2.24177713914414,\ +-4,-0.230734,-2.57814696969697,3.14756240231258,-0.679112693609834,-0.0422640896997363,-2.24178495092266,\ +-4,-0.230734,-2.55061616161616,3.14756095690372,-0.679115944412477,-0.0422725804447032,-2.24179324552091,\ +-4,-0.230734,-2.52308535353535,3.14755941931019,-0.67911940254342,-0.0422816127087687,-2.2418020691285,\ +-4,-0.230734,-2.49555454545454,3.14755778042255,-0.679123088490334,-0.0422912400035117,-2.24181147402082,\ +-4,-0.230734,-2.46802373737374,3.1475560298902,-0.679127025532216,-0.0423015231311696,-2.24182151959551,\ +-4,-0.230734,-2.44049292929293,3.14755415590262,-0.679131240231553,-0.0423125314700593,-2.24183227362814,\ +-4,-0.230734,-2.41296212121212,3.14755214492259,-0.679135763034363,-0.042324344541903,-2.24184381380341,\ +-4,-0.230734,-2.38543131313131,3.14754998135854,-0.679140629006879,-0.0423370539359159,-2.24185622959469,\ +-4,-0.230734,-2.3579005050505,3.14754764715958,-0.679145878746514,-0.0423507656881393,-2.24186962458847,\ +-4,-0.230734,-2.3303696969697,3.14754512131069,-0.679151559517191,-0.0423656032468408,-2.2418841193812,\ +-4,-0.230734,-2.30283888888889,3.14754237919823,-0.679157726676331,-0.0423817111996057,-2.24189985522033,\ +-4,-0.230734,-2.27530808080808,3.1475393918052,-0.679164445484736,-0.0423992600005941,-2.24191699862229,\ +-4,-0.230734,-2.24777727272727,3.14753612468045,-0.679171793424911,-0.0424184520257343,-2.24193574728791,\ +-4,-0.230734,-2.22024646464646,3.14753253660407,-0.679179863202619,-0.0424395294124492,-2.24195633776091,\ +-4,-0.230734,-2.19271565656565,3.14752857783924,-0.679188766678704,-0.0424627843291758,-2.24197905546028,\ +-4,-0.230734,-2.16518484848485,3.14752418781261,-0.679198640085918,-0.0424885726011191,-2.24200424799123,\ +-4,-0.230734,-2.13765404040404,3.147519291993,-0.679209651048873,-0.0425173320456473,-2.24203234305701,\ +-4,-0.230734,-2.11012323232323,3.14751379762534,-0.679222008178741,-0.0425496075325736,-2.24206387294024,\ +-4,-0.230734,-2.08259242424242,3.14750758779799,-0.679235974416098,-0.0425860858342579,-2.24209950854802,\ +-4,-0.230734,-2.05506161616161,3.14750051303113,-0.679251885949196,-0.0426276450380601,-2.24214010768279,\ +-4,-0.230734,-2.02753080808081,3.14749237908706,-0.679270179629093,-0.042675426151698,-2.24218678499357,\ +-4,-0.230734,-2,3.14748292886284,-0.679291433694191,-0.0427309394713405,-2.24224101588684,\ +-4,-0.230428,-4.72555,3.14759516174816,-0.679039015868405,-0.0420716514065466,-2.24159695819217,\ +-4,-0.230428,-4.69801919191919,3.14759503476311,-0.679039301464638,-0.0420723973530243,-2.24159768690636,\ +-4,-0.230428,-4.67048838383838,3.14759490545548,-0.679039592284497,-0.0420731569430505,-2.24159842894892,\ +-4,-0.230428,-4.64295757575758,3.14759477376095,-0.679039888472619,-0.0420739305543953,-2.24159918468889,\ +-4,-0.230428,-4.61542676767677,3.14759463961281,-0.679040190179027,-0.0420747185789064,-2.24159995450906,\ +-4,-0.230428,-4.58789595959596,3.14759450294185,-0.67904049755939,-0.0420755214231686,-2.24160073880662,\ +-4,-0.230428,-4.56036515151515,3.14759436367625,-0.679040810775278,-0.0420763395092057,-2.24160153799386,\ +-4,-0.230428,-4.53283434343434,3.14759422174137,-0.679041129994473,-0.0420771732752184,-2.24160235249884,\ +-4,-0.230428,-4.50530353535354,3.14759407705977,-0.679041455391232,-0.0420780231763677,-2.24160318276623,\ +-4,-0.230428,-4.47777272727273,3.14759392955091,-0.679041787146634,-0.0420788896856034,-2.24160402925802,\ +-4,-0.230428,-4.45024191919192,3.14759377913111,-0.679042125448902,-0.042079773294542,-2.2416048924545,\ +-4,-0.230428,-4.42271111111111,3.14759362571333,-0.679042470493759,-0.0420806745143959,-2.24160577285507,\ +-4,-0.230428,-4.3951803030303,3.14759346920707,-0.679042822484812,-0.0420815938769607,-2.24160667097921,\ +-4,-0.230428,-4.36764949494949,3.14759330951809,-0.679043181633946,-0.0420825319356612,-2.2416075873676,\ +-4,-0.230428,-4.34011868686869,3.14759314654833,-0.679043548161755,-0.0420834892666616,-2.24160852258307,\ +-4,-0.230428,-4.31258787878788,3.14759298019562,-0.679043922297987,-0.0420844664700471,-2.24160947721185,\ +-4,-0.230428,-4.28505707070707,3.14759281035353,-0.679044304282038,-0.0420854641710772,-2.24161045186474,\ +-4,-0.230428,-4.25752626262626,3.14759263691109,-0.679044694363442,-0.04208648302152,-2.24161144717849,\ +-4,-0.230428,-4.22999545454545,3.14759245975262,-0.67904509280243,-0.0420875237010719,-2.24161246381705,\ +-4,-0.230428,-4.20246464646465,3.14759227875737,-0.679045499870507,-0.0420885869188707,-2.24161350247321,\ +-4,-0.230428,-4.17493383838384,3.14759209379937,-0.679045915851068,-0.0420896734151055,-2.24161456387003,\ +-4,-0.230428,-4.14740303030303,3.14759190474701,-0.679046341040045,-0.0420907839627366,-2.24161564876264,\ +-4,-0.230428,-4.11987222222222,3.14759171146282,-0.67904677574663,-0.0420919193693292,-2.24161675793993,\ +-4,-0.230428,-4.09234141414141,3.14759151380311,-0.67904722029401,-0.0420930804790104,-2.24161789222654,\ +-4,-0.230428,-4.06481060606061,3.14759131161759,-0.67904767502017,-0.0420942681745642,-2.24161905248486,\ +-4,-0.230428,-4.0372797979798,3.14759110474903,-0.67904814027875,-0.0420954833796681,-2.24162023961722,\ +-4,-0.230428,-4.00974898989899,3.1475908930328,-0.679048616439973,-0.0420967270612899,-2.24162145456826,\ +-4,-0.230428,-3.98221818181818,3.14759067629652,-0.679049103891611,-0.0420980002322542,-2.2416226983274,\ +-4,-0.230428,-3.95468737373737,3.14759045435946,-0.679049603040046,-0.0420993039539919,-2.24162397193155,\ +-4,-0.230428,-3.92715656565657,3.14759022703217,-0.679050114311405,-0.0421006393394922,-2.24162527646799,\ +-4,-0.230428,-3.89962575757576,3.14758999411587,-0.679050638152763,-0.0421020075564728,-2.24162661307747,\ +-4,-0.230428,-3.87209494949495,3.14758975540187,-0.679051175033455,-0.042103409830783,-2.24162798295751,\ +-4,-0.230428,-3.84456414141414,3.14758951067097,-0.679051725446473,-0.0421048474500693,-2.24162938736601,\ +-4,-0.230428,-3.81703333333333,3.14758925969278,-0.679052289909984,-0.0421063217677181,-2.24163082762509,\ +-4,-0.230428,-3.78950252525252,3.147589002225,-0.679052868968946,-0.042107834207105,-2.24163230512526,\ +-4,-0.230428,-3.76197171717172,3.14758873801262,-0.679053463196868,-0.042109386266179,-2.24163382132985,\ +-4,-0.230428,-3.73444090909091,3.14758846678711,-0.679054073197708,-0.0421109795224108,-2.24163537777989,\ +-4,-0.230428,-3.7069101010101,3.14758818826547,-0.679054699607918,-0.0421126156381408,-2.24163697609932,\ +-4,-0.230428,-3.67937929292929,3.1475879021493,-0.679055343098658,-0.0421142963663647,-2.24163861800065,\ +-4,-0.230428,-3.65184848484848,3.14758760812367,-0.679056004378193,-0.0421160235569983,-2.24164030529104,\ +-4,-0.230428,-3.62431767676768,3.147587305856,-0.679056684194498,-0.0421177991636703,-2.241642039879,\ +-4,-0.230428,-3.59678686868687,3.14758699499484,-0.679057383338076,-0.0421196252510928,-2.24164382378155,\ +-4,-0.230428,-3.56925606060606,3.14758667516839,-0.679058102645029,-0.042121504003071,-2.24164565913202,\ +-4,-0.230428,-3.54172525252525,3.14758634598317,-0.679058843000391,-0.0421234377312159,-2.24164754818865,\ +-4,-0.230428,-3.51419444444444,3.14758600702228,-0.67905960534176,-0.0421254288844313,-2.24164949334376,\ +-4,-0.230428,-3.48666363636364,3.1475856578437,-0.679060390663258,-0.0421274800592626,-2.24165149713392,\ +-4,-0.230428,-3.45913282828283,3.14758529797836,-0.679061200019861,-0.0421295940111911,-2.24165356225095,\ +-4,-0.230428,-3.43160202020202,3.14758492692803,-0.679062034532128,-0.0421317736669845,-2.241655691554,\ +-4,-0.230428,-3.40407121212121,3.147584544163,-0.679062895391365,-0.0421340221382167,-2.24165788808275,\ +-4,-0.230428,-3.3765404040404,3.1475841491196,-0.679063783865312,-0.0421363427360892,-2.24166015507195,\ +-4,-0.230428,-3.3490095959596,3.1475837411974,-0.67906470130437,-0.0421387389876988,-2.24166249596719,\ +-4,-0.230428,-3.32147878787879,3.1475833197562,-0.679065649148449,-0.0421412146539277,-2.24166491444246,\ +-4,-0.230428,-3.29394797979798,3.14758288411258,-0.679066628934495,-0.0421437737491377,-2.2416674144194,\ +-4,-0.230428,-3.26641717171717,3.14758243353633,-0.679067642304844,-0.0421464205628934,-2.24167000008848,\ +-4,-0.230428,-3.23888636363636,3.14758196724628,-0.679068691016355,-0.0421491596839554,-2.24167267593246,\ +-4,-0.230428,-3.21135555555555,3.14758148440583,-0.679069776950621,-0.0421519960268286,-2.24167544675231,\ +-4,-0.230428,-3.18382474747475,3.14758098411791,-0.679070902125213,-0.0421549348611907,-2.24167831769595,\ +-4,-0.230428,-3.15629393939394,3.1475804654194,-0.679072068706198,-0.0421579818445673,-2.24168129429024,\ +-4,-0.230428,-3.12876313131313,3.14757992727499,-0.679073279022045,-0.0421611430586826,-2.2416843824764,\ +-4,-0.230428,-3.10123232323232,3.14757936857028,-0.679074535579159,-0.0421644250499768,-2.24168758864963,\ +-4,-0.230428,-3.07370151515151,3.147578788104,-0.67907584107918,-0.0421678348748582,-2.24169091970334,\ +-4,-0.230428,-3.04617070707071,3.14757818457951,-0.679077198438396,-0.0421713801503471,-2.24169438307858,\ +-4,-0.230428,-3.0186398989899,3.147577556595,-0.679078610809476,-0.0421750691108779,-2.24169798681956,\ +-4,-0.230428,-2.99110909090909,3.14757690263276,-0.679080081605924,-0.0421789106721512,-2.24170173963601,\ +-4,-0.230428,-2.96357828282828,3.14757622104679,-0.679081614529619,-0.0421829145030752,-2.24170565097349,\ +-4,-0.230428,-2.93604747474747,3.14757551004907,-0.679083213601927,-0.0421870911070222,-2.24170973109271,\ +-4,-0.230428,-2.90851666666667,3.14757476769386,-0.679084883198927,-0.0421914519138352,-2.2417139911595,\ +-4,-0.230428,-2.88098585858586,3.14757399185992,-0.679086628091398,-0.0421960093842847,-2.24171844334673,\ +-4,-0.230428,-2.85345505050505,3.14757318023026,-0.679088453490363,-0.0422007771289782,-2.24172310095063,\ +-4,-0.230428,-2.82592424242424,3.14757233026907,-0.679090365099042,-0.042205770044125,-2.24172797852325,\ +-4,-0.230428,-2.79839343434343,3.14757143919517,-0.67909236917239,-0.0422110044669953,-2.24173309202448,\ +-4,-0.230428,-2.77086262626263,3.14757050395172,-0.67909447258547,-0.0422164983545011,-2.24173845899638,\ +-4,-0.230428,-2.74333181818182,3.14756952117108,-0.679096682912241,-0.0422222714890062,-2.24174409876434,\ +-4,-0.230428,-2.71580101010101,3.14756848713437,-0.679099008516691,-0.0422283457163389,-2.2417500326695,\ +-4,-0.230428,-2.6882702020202,3.14756739772441,-0.679101458658596,-0.0422347452220397,-2.2417562843387,\ +-4,-0.230428,-2.66073939393939,3.1475662483709,-0.679104043616753,-0.0422414968532137,-2.24176287999884,\ +-4,-0.230428,-2.63320858585858,3.14756503398641,-0.679106774833119,-0.0422486304950102,-2.24176984884469,\ +-4,-0.230428,-2.60567777777778,3.14756374889101,-0.679109665082127,-0.0422561795128699,-2.24177722347089,\ +-4,-0.230428,-2.57814696969697,3.14756238672351,-0.679112728670475,-0.0422641812743411,-2.24178504038178,\ +-4,-0.230428,-2.55061616161616,3.1475609403361,-0.679115981673964,-0.0422726777676834,-2.24179334059561,\ +-4,-0.230428,-2.52308535353535,3.14755940166889,-0.679119442219682,-0.0422817163388752,-2.24180217036462,\ +-4,-0.230428,-2.49555454545454,3.1475577615997,-0.679123130823945,-0.0422913505743278,-2.24181158203731,\ +-4,-0.230428,-2.46802373737374,3.14755600976299,-0.67912707079937,-0.0423016413640725,-2.24182163509708,\ +-4,-0.230428,-2.44049292929293,3.14755413433066,-0.679131288748074,-0.0423126581899703,-2.24183239742067,\ +-4,-0.230428,-2.41296212121212,3.14755212174452,-0.67913581516311,-0.0423244806965551,-2.24184394681272,\ +-4,-0.230428,-2.38543131313131,3.14754995638806,-0.67914068516681,-0.0423372006195893,-2.24185637288979,\ +-4,-0.230428,-2.3579005050505,3.14754762018047,-0.679145939423978,-0.0423509241711207,-2.2418697794103,\ +-4,-0.230428,-2.3303696969697,3.14754509207047,-0.67915162528004,-0.0423657750122887,-2.24188428717866,\ +-4,-0.230428,-2.30283888888889,3.14754234740025,-0.679157798191726,-0.0423818979900832,-2.24190003769572,\ +-4,-0.230428,-2.27530808080808,3.14753935709856,-0.67916452354186,-0.0423994638773634,-2.24191719778926,\ +-4,-0.230428,-2.24777727272727,3.147536086647,-0.679171878964193,-0.0424186754450933,-2.24193596554601,\ +-4,-0.230428,-2.22024646464646,3.14753249474152,-0.679179957353781,-0.0424397753251067,-2.24195657799268,\ +-4,-0.230428,-2.19271565656565,3.14752853153881,-0.679188870810899,-0.0424630563112067,-2.2419793211592,\ +-4,-0.230428,-2.16518484848485,3.1475241363293,-0.679198755874687,-0.0424888750288645,-2.24200454343252,\ +-4,-0.230428,-2.13765404040404,3.14751923440521,-0.679209780566915,-0.0425176703327674,-2.24203267352928,\ +-4,-0.230428,-2.11012323232323,3.14751373277931,-0.679222154020946,-0.0425499884566438,-2.2420642450645,\ +-4,-0.230428,-2.08259242424242,3.14750751422978,-0.679236139874993,-0.0425865179950009,-2.24209993072532,\ +-4,-0.230428,-2.05506161616161,3.14750042885485,-0.679252075266179,-0.0426281395135413,-2.24214059073527,\ +-4,-0.230428,-2.02753080808081,3.14749228183127,-0.679270398362598,-0.042675997459954,-2.24218734310389,\ +-4,-0.230428,-2,3.14748281522421,-0.67929168927361,-0.042731607017144,-2.24224166801151,\ +-4,-0.229174,-4.72555,3.14759515601372,-0.679039028765465,-0.0420716850922776,-2.24159699109972,\ +-4,-0.229174,-4.69801919191919,3.14759502892425,-0.67903931459656,-0.0420724316521863,-2.24159772041317,\ +-4,-0.229174,-4.67048838383838,3.14759489950931,-0.679039605657755,-0.0420731918725533,-2.24159846307151,\ +-4,-0.229174,-4.64295757575758,3.14759476770449,-0.679039902093927,-0.0420739661317761,-2.24159921944438,\ +-4,-0.229174,-4.61542676767677,3.14759463344296,-0.679040204055348,-0.042074754822359,-2.24159998991524,\ +-4,-0.229174,-4.58789595959596,3.14759449665541,-0.679040511697954,-0.0420755583515753,-2.24160077488193,\ +-4,-0.229174,-4.56036515151515,3.14759435726985,-0.679040825183594,-0.0420763771421684,-2.24160157475744,\ +-4,-0.229174,-4.53283434343434,3.14759421521158,-0.679041144680332,-0.0420772116330944,-2.24160238997061,\ +-4,-0.229174,-4.50530353535354,3.14759407040297,-0.679041470362732,-0.0420780622803063,-2.24160322096682,\ +-4,-0.229174,-4.47777272727273,3.14759392276336,-0.679041802412191,-0.0420789295575847,-2.24160406820892,\ +-4,-0.229174,-4.45024191919192,3.14759377220891,-0.679042141017264,-0.0420798139574179,-2.24160493217802,\ +-4,-0.229174,-4.42271111111111,3.14759361865247,-0.679042486374026,-0.042080715991934,-2.24160581337442,\ +-4,-0.229174,-4.3951803030303,3.14759346200331,-0.679042838686452,-0.0420816361938906,-2.24160671231857,\ +-4,-0.229174,-4.36764949494949,3.14759330216706,-0.679043198166811,-0.0420825751177236,-2.24160762955211,\ +-4,-0.229174,-4.34011868686869,3.14759313904546,-0.679043565036112,-0.0420835333406607,-2.24160856563891,\ +-4,-0.229174,-4.31258787878788,3.14759297253617,-0.679043939524528,-0.0420845114639059,-2.24160952116629,\ +-4,-0.229174,-4.28505707070707,3.14759280253252,-0.679044321871902,-0.0420855101138961,-2.24161049674623,\ +-4,-0.229174,-4.25752626262626,3.14759262892338,-0.679044712328242,-0.0420865299436403,-2.24161149301665,\ +-4,-0.229174,-4.22999545454545,3.14759245159281,-0.67904511115429,-0.0420875716341427,-2.24161251064281,\ +-4,-0.229174,-4.20246464646465,3.14759227041985,-0.679045518622068,-0.0420886358959188,-2.24161355031882,\ +-4,-0.229174,-4.17493383838384,3.14759208527825,-0.679045935015531,-0.0420897234706128,-2.2416146127692,\ +-4,-0.229174,-4.14740303030303,3.14759189603617,-0.679046360631202,-0.0420908351327206,-2.24161569875053,\ +-4,-0.229174,-4.11987222222222,3.14759170255585,-0.679046795778892,-0.0420919716914287,-2.24161680905332,\ +-4,-0.229174,-4.09234141414141,3.1475915046933,-0.679047240782441,-0.0420931339925785,-2.24161794450388,\ +-4,-0.229174,-4.06481060606061,3.14759130229795,-0.679047695980529,-0.0420943229207669,-2.24161910596636,\ +-4,-0.229174,-4.0372797979798,3.14759109521222,-0.679048161727542,-0.0420955394015901,-2.24162029434497,\ +-4,-0.229174,-4.00974898989899,3.14759088327115,-0.679048638394465,-0.0420967844040476,-2.24162151058633,\ +-4,-0.229174,-3.98221818181818,3.14759066630196,-0.6790491263699,-0.0420980589431164,-2.24162275568197,\ +-4,-0.229174,-3.95468737373737,3.14759044412357,-0.679049626061105,-0.0420993640825101,-2.24162403067103,\ +-4,-0.229174,-3.92715656565657,3.1475902165461,-0.679050137895132,-0.0421007009376405,-2.24162533664315,\ +-4,-0.229174,-3.89962575757576,3.14758998337034,-0.679050662320044,-0.0421020706787966,-2.24162667474159,\ +-4,-0.229174,-3.87209494949495,3.14758974438712,-0.679051199806219,-0.0421034745345617,-2.24162804616655,\ +-4,-0.229174,-3.84456414141414,3.14758949937675,-0.679051750847764,-0.0421049137954879,-2.24162945217877,\ +-4,-0.229174,-3.81703333333333,3.14758924810834,-0.679052315964026,-0.042106389818055,-2.24163089410339,\ +-4,-0.229174,-3.78950252525252,3.14758899033898,-0.679052895701228,-0.0421079040289332,-2.24163237333412,\ +-4,-0.229174,-3.76197171717172,3.14758872581311,-0.679053490634224,-0.0421094579295831,-2.24163389133774,\ +-4,-0.229174,-3.73444090909091,3.14758845426153,-0.679054101368404,-0.042111053101222,-2.24163544965894,\ +-4,-0.229174,-3.7069101010101,3.14758817540058,-0.679054728541755,-0.0421126912101897,-2.24163704992556,\ +-4,-0.229174,-3.67937929292929,3.14758788893111,-0.679055372827069,-0.042114374013757,-2.24163869385429,\ +-4,-0.229174,-3.65184848484848,3.14758759453745,-0.679056034934366,-0.0421161033664119,-2.24164038325675,\ +-4,-0.229174,-3.62431767676768,3.14758729188614,-0.679056715613488,-0.0421178812266775,-2.24164212004625,\ +-4,-0.229174,-3.59678686868687,3.14758698062485,-0.679057415656957,-0.042119709664512,-2.24164390624491,\ +-4,-0.229174,-3.56925606060606,3.14758666038085,-0.679058135903021,-0.0421215908693465,-2.24164574399158,\ +-4,-0.229174,-3.54172525252525,3.1475863307596,-0.679058877239028,-0.0421235271588331,-2.24164763555038,\ +-4,-0.229174,-3.51419444444444,3.14758599134311,-0.679059640605065,-0.0421255209883695,-2.24164958331999,\ +-4,-0.229174,-3.48666363636364,3.14758564168817,-0.679060426997926,-0.0421275749614865,-2.24165158984378,\ +-4,-0.229174,-3.45913282828283,3.14758528132442,-0.679061237475472,-0.0421296918411906,-2.24165365782096,\ +-4,-0.229174,-3.43160202020202,3.14758490975226,-0.679062073161363,-0.0421318745623644,-2.24165579011857,\ +-4,-0.229174,-3.40407121212121,3.14758452644048,-0.67906293525026,-0.0421341262453423,-2.24165798978488,\ +-4,-0.229174,-3.3765404040404,3.14758413082381,-0.679063825013532,-0.042136450210793,-2.24166026006385,\ +-4,-0.229174,-3.3490095959596,3.14758372230007,-0.679064743805503,-0.0421388499960616,-2.24166260441111,\ +-4,-0.229174,-3.32147878787879,3.14758330022714,-0.679065693070329,-0.0421413293731329,-2.2416650265115,\ +-4,-0.229174,-3.29394797979798,3.14758286391961,-0.679066674349578,-0.0421438923684152,-2.24166753029843,\ +-4,-0.229174,-3.26641717171717,3.14758241264498,-0.67906768929058,-0.0421465432845624,-2.24167011997513,\ +-4,-0.229174,-3.23888636363636,3.14758194561972,-0.679068739655663,-0.0421492867245735,-2.24167280003828,\ +-4,-0.229174,-3.21135555555555,3.14758146200454,-0.679069827332354,-0.0421521276184688,-2.24167557530401,\ +-4,-0.229174,-3.18382474747475,3.14758096089948,-0.679070954344704,-0.042155071252856,-2.2416784509368,\ +-4,-0.229174,-3.15629393939394,3.14758044133831,-0.679072122865865,-0.0421581233037621,-2.24168143248156,\ +-4,-0.229174,-3.12876313131313,3.14757990228225,-0.679073335232061,-0.0421612898731645,-2.24168452589929,\ +-4,-0.229174,-3.10123232323232,3.14757934261312,-0.679074593958196,-0.0421645775297104,-2.2416877376069,\ +-4,-0.229174,-3.07370151515151,3.14757876112551,-0.679075901755253,-0.0421679933541983,-2.24169107452162,\ +-4,-0.229174,-3.04617070707071,3.1475781565182,-0.679077261549792,-0.0421715449904867,-2.24169454411071,\ +-4,-0.229174,-3.0186398989899,3.14757752738436,-0.67907867650581,-0.0421752407025961,-2.24169815444729,\ +-4,-0.229174,-2.99110909090909,3.14757687220068,-0.679080150049323,-0.042179089438905,-2.24170191427304,\ +-4,-0.229174,-2.96357828282828,3.14757618931502,-0.679081685896057,-0.0421831009044886,-2.2417058330688,\ +-4,-0.229174,-2.93604747474747,3.14757547693256,-0.679083288082734,-0.0421872856428315,-2.24170992113451,\ +-4,-0.229174,-2.90851666666667,3.14757473309995,-0.679084961002503,-0.0421916551283629,-2.24171418967951,\ +-4,-0.229174,-2.88098585858586,3.14757395568748,-0.679086709445165,-0.0421962218715229,-2.24171865092526,\ +-4,-0.229174,-2.85345505050505,3.14757314236874,-0.679088538642972,-0.0422009995383886,-2.24172331822211,\ +-4,-0.229174,-2.82592424242424,3.14757229059733,-0.679090454322928,-0.0422060030872675,-2.24172820618282,\ +-4,-0.229174,-2.79839343434343,3.14757139758022,-0.67909246276667,-0.0422112489251311,-2.24173333083533,\ +-4,-0.229174,-2.77086262626263,3.14757046024719,-0.679094570879294,-0.0422167550873403,-2.24173870979838,\ +-4,-0.229174,-2.74333181818182,3.14756947521557,-0.679096786268666,-0.0422225414448093,-2.24174436248384,\ +-4,-0.229174,-2.71580101010101,3.14756843874937,-0.679099117337154,-0.0422286299436163,-2.24175031033078,\ +-4,-0.229174,-2.6882702020202,3.14756734671206,-0.679101573388125,-0.04223504488316,-2.24175657707728,\ +-4,-0.229174,-2.66073939393939,3.14756619451124,-0.679104164750053,-0.0422418132402878,-2.24176318907699,\ +-4,-0.229174,-2.63320858585858,3.14756497703421,-0.679106902921692,-0.042248965048513,-2.24177017566959,\ +-4,-0.229174,-2.60567777777778,3.14756368857208,-0.67910980074268,-0.0422565338435615,-2.24177756961611,\ +-4,-0.229174,-2.57814696969697,3.14756232273023,-0.67911287259483,-0.042264557189194,-2.24178540761253,\ +-4,-0.229174,-2.55061616161616,3.14756087232221,-0.679116134640872,-0.0422730773006955,-2.24179373089892,\ +-4,-0.229174,-2.52308535353535,3.14755932924323,-0.67911960510889,-0.0422821417878756,-2.24180258598522,\ +-4,-0.229174,-2.49555454545454,3.14755768431867,-0.679123304633154,-0.0422918045451861,-2.24181202552088,\ +-4,-0.229174,-2.46802373737374,3.14755592712146,-0.679127256664655,-0.0423021268240985,-2.24182210934238,\ +-4,-0.229174,-2.44049292929293,3.1475540457509,-0.67913148796875,-0.0423131785328269,-2.24183290574295,\ +-4,-0.229174,-2.41296212121212,3.14755202656271,-0.679136029232125,-0.0423250398216759,-2.24184449302135,\ +-4,-0.229174,-2.38543131313131,3.14754985383766,-0.67914091580823,-0.0423378030300334,-2.24185696138381,\ +-4,-0.229174,-2.3579005050505,3.14754750937144,-0.679146188639479,-0.0423515750950606,-2.24187041529709,\ +-4,-0.229174,-2.3303696969697,3.14754497196348,-0.679151895407137,-0.0423664805550612,-2.24188497642252,\ +-4,-0.229174,-2.30283888888889,3.14754221677397,-0.679158091977278,-0.0423826653261745,-2.24190078730539,\ +-4,-0.229174,-2.27530808080808,3.14753921450799,-0.679164844235744,-0.0424003014951128,-2.24191801605701,\ +-4,-0.229174,-2.24777727272727,3.14753593036984,-0.679172230439972,-0.0424195934618183,-2.24193686235541,\ +-4,-0.229174,-2.22024646464646,3.14753232270829,-0.679180344265807,-0.0424407858974776,-2.24195756521958,\ +-4,-0.229174,-2.19271565656565,3.14752834124079,-0.679189298801445,-0.0424641741762292,-2.24198041320015,\ +-4,-0.229174,-2.16518484848485,3.14752392469543,-0.679199231850676,-0.0424901182266737,-2.24200575791093,\ +-4,-0.229174,-2.13765404040404,3.14751899763533,-0.679210313075164,-0.0425190611867253,-2.24203403225279,\ +-4,-0.229174,-2.11012323232323,3.14751346611411,-0.679222753765402,-0.0425515549243088,-2.24206577534482,\ +-4,-0.229174,-2.08259242424242,3.14750721162796,-0.67923682044285,-0.0425882955646468,-2.2421016672309,\ +-4,-0.229174,-2.05506161616161,3.14750008253054,-0.679252854168311,-0.0426301739216862,-2.24214257814607,\ +-4,-0.229174,-2.02753080808081,3.14749188157555,-0.679271298559366,-0.0426783486765681,-2.24218964000451,\ +-4,-0.229174,-2,3.14748234738369,-0.679292741472239,-0.042734355246176,-2.24224435275305,\ +-4,-0.227774,-4.72555,3.14759514960609,-0.679039043176575,-0.04207172273254,-2.24159702787044,\ +-4,-0.227774,-4.69801919191919,3.14759502239988,-0.679039329270218,-0.0420724699781934,-2.2415977578538,\ +-4,-0.227774,-4.67048838383838,3.14759489286499,-0.679039620601203,-0.0420732309032175,-2.24159850120051,\ +-4,-0.227774,-4.64295757575758,3.14759476093687,-0.679039917314669,-0.0420740058867114,-2.24159925828093,\ +-4,-0.227774,-4.61542676767677,3.14759462654858,-0.679040219561181,-0.0420747953219138,-2.2416000294792,\ +-4,-0.227774,-4.58789595959596,3.14759448963068,-0.679040527496957,-0.0420755996168672,-2.24160081519395,\ +-4,-0.227774,-4.56036515151515,3.14759435011103,-0.679040841284167,-0.042076419195122,-2.24160161583893,\ +-4,-0.227774,-4.53283434343434,3.1475942079148,-0.679041161091189,-0.0420772544964787,-2.24160243184379,\ +-4,-0.227774,-4.50530353535354,3.14759406296419,-0.679041487092932,-0.0420781059777762,-2.24160326365482,\ +-4,-0.227774,-4.47777272727273,3.14759391517841,-0.679041819471144,-0.0420789741137257,-2.24160411173575,\ +-4,-0.227774,-4.45024191919192,3.14759376447346,-0.679042158414757,-0.0420798593977905,-2.24160497656866,\ +-4,-0.227774,-4.42271111111111,3.14759361076195,-0.679042504120239,-0.0420807623431236,-2.24160585865484,\ +-4,-0.227774,-4.3951803030303,3.14759345395303,-0.679042856791974,-0.0420816834835591,-2.24160675851579,\ +-4,-0.227774,-4.36764949494949,3.14759329395211,-0.679043216642672,-0.0420826233746644,-2.24160767669425,\ +-4,-0.227774,-4.34011868686869,3.14759313066074,-0.679043583893783,-0.0420835825948574,-2.24160861375527,\ +-4,-0.227774,-4.31258787878788,3.14759296397637,-0.679043958775973,-0.0420845617465944,-2.24160957028739,\ +-4,-0.227774,-4.28505707070707,3.1475927937921,-0.679044341529581,-0.0420855614576303,-2.24161054690386,\ +-4,-0.227774,-4.25752626262626,3.14759261999655,-0.679044732405155,-0.0420865823823626,-2.24161154424397,\ +-4,-0.227774,-4.22999545454545,3.14759244247355,-0.679045131663989,-0.0420876252032587,-2.24161256297441,\ +-4,-0.227774,-4.20246464646465,3.14759226110187,-0.679045539578702,-0.0420886906323777,-2.2416136037908,\ +-4,-0.227774,-4.17493383838384,3.14759207575499,-0.679045956433867,-0.0420897794129913,-2.24161466741923,\ +-4,-0.227774,-4.14740303030303,3.14759188630076,-0.679046382526669,-0.0420908923213146,-2.241615754618,\ +-4,-0.227774,-4.11987222222222,3.14759169260112,-0.679046818167613,-0.0420920301683485,-2.24161686617936,\ +-4,-0.227774,-4.09234141414141,3.14759149451177,-0.679047263681274,-0.0420931938018547,-2.24161800293149,\ +-4,-0.227774,-4.06481060606061,3.14759129188176,-0.67904771940711,-0.0420943841084589,-2.24161916574054,\ +-4,-0.227774,-4.0372797979798,3.14759108455317,-0.679048185700325,-0.0420956020159051,-2.24162035551282,\ +-4,-0.227774,-4.00974898989899,3.14759087236064,-0.679048662932778,-0.0420968484954671,-2.24162157319716,\ +-4,-0.227774,-3.98221818181818,3.147590655131,-0.679049151493995,-0.0420981245645321,-2.24162281978745,\ +-4,-0.227774,-3.95468737373737,3.14759043268272,-0.679049651792209,-0.0420994312893698,-2.24162409632532,\ +-4,-0.227774,-3.92715656565657,3.14759020482545,-0.679050164255513,-0.0421007697881032,-2.24162540390308,\ +-4,-0.227774,-3.89962575757576,3.14758997135949,-0.679050689333071,-0.0421021412339019,-2.24162674366679,\ +-4,-0.227774,-3.87209494949495,3.14758973207519,-0.679051227496433,-0.0421035468584087,-2.24162811681963,\ +-4,-0.227774,-3.84456414141414,3.14758948675225,-0.679051779240954,-0.0421049879554313,-2.24162952462552,\ +-4,-0.227774,-3.81703333333333,3.14758923515922,-0.679052345087306,-0.0421064658849122,-2.241630968413,\ +-4,-0.227774,-3.78950252525252,3.14758897705256,-0.679052925583124,-0.0421079820772116,-2.24163244957938,\ +-4,-0.227774,-3.76197171717172,3.14758871217603,-0.679053521304766,-0.0421095380377226,-2.24163396959528,\ +-4,-0.227774,-3.73444090909091,3.14758844025972,-0.679054132859232,-0.0421111353518577,-2.24163553000949,\ +-4,-0.227774,-3.7069101010101,3.14758816101921,-0.679054760886222,-0.0421127756904374,-2.24163713245421,\ +-4,-0.227774,-3.67937929292929,3.14758787415455,-0.679055406060361,-0.0421144608155194,-2.24163877865082,\ +-4,-0.227774,-3.65184848484848,3.14758757934916,-0.679056069093626,-0.0421161925867135,-2.24164047041596,\ +-4,-0.227774,-3.62431767676768,3.14758727626869,-0.679056750737969,-0.0421179729680258,-2.24164220966826,\ +-4,-0.227774,-3.59678686868687,3.14758696455978,-0.679057451788152,-0.0421198040352894,-2.24164399843561,\ +-4,-0.227774,-3.56925606060606,3.14758664384864,-0.67905817308484,-0.0421216879842395,-2.241645838863,\ +-4,-0.227774,-3.54172525252525,3.14758631373958,-0.679058915517971,-0.0421236271392957,-2.24164773322117,\ +-4,-0.227774,-3.51419444444444,3.14758597381336,-0.679059680030417,-0.0421256239631298,-2.2416496839159,\ +-4,-0.227774,-3.48666363636364,3.14758562362544,-0.679060467621972,-0.0421276810671002,-2.24165169349823,\ +-4,-0.227774,-3.45913282828283,3.14758526270404,-0.679061279353719,-0.0421298012226453,-2.24165376467556,\ +-4,-0.227774,-3.43160202020202,3.14758489054799,-0.679062116352803,-0.04213198737374,-2.24165590032386,\ +-4,-0.227774,-3.40407121212121,3.14758450662442,-0.679062979817649,-0.0421342426505349,-2.24165810350097,\ +-4,-0.227774,-3.3765404040404,3.14758411036626,-0.679063871023676,-0.042136570384311,-2.24166037746122,\ +-4,-0.227774,-3.3490095959596,3.14758370116936,-0.679064791329614,-0.042138974123896,-2.24166272567144,\ +-4,-0.227774,-3.32147878787879,3.1475832783895,-0.67906574218438,-0.0421414576537191,-2.24166515182865,\ +-4,-0.227774,-3.29394797979798,3.14758284133894,-0.679066725134709,-0.0421440250136925,-2.24166765987943,\ +-4,-0.227774,-3.26641717171717,3.14758238928273,-0.679067741833558,-0.0421466805211394,-2.24167025404137,\ +-4,-0.227774,-3.23888636363636,3.14758192143457,-0.679068794049359,-0.0421494287950231,-2.24167293882673,\ +-4,-0.227774,-3.21135555555555,3.14758143695225,-0.679069883676298,-0.0421522747827578,-2.24167571906863,\ +-4,-0.227774,-3.18382474747475,3.14758093493257,-0.679071012745698,-0.0421552237899309,-2.24167859995008,\ +-4,-0.227774,-3.15629393939394,3.14758041440575,-0.679072183438645,-0.0421582815133163,-2.24168158703628,\ +-4,-0.227774,-3.12876313131313,3.14757987432917,-0.679073398100069,-0.0421614540776018,-2.2416846863104,\ +-4,-0.227774,-3.10123232323232,3.14757931358038,-0.679074659254401,-0.0421647480763373,-2.24168790421369,\ +-4,-0.227774,-3.07370151515151,3.14757873094935,-0.679075969623099,-0.0421681706176774,-2.24169124769008,\ +-4,-0.227774,-3.04617070707071,3.14757812512969,-0.679077332144252,-0.0421717293755827,-2.24169472423628,\ +-4,-0.227774,-3.0186398989899,3.14757749470896,-0.679078749994559,-0.0421754326472613,-2.2416983419578,\ +-4,-0.227774,-2.99110909090909,3.14757683815759,-0.679080226614072,-0.0421792894177516,-2.24170210963212,\ +-4,-0.227774,-2.96357828282828,3.14757615381655,-0.679081765734056,-0.0421833094327071,-2.24170603677976,\ +-4,-0.227774,-2.93604747474747,3.14757543988333,-0.679083371408461,-0.0421875032806208,-2.2417101337446,\ +-4,-0.227774,-2.90851666666667,3.14757469439608,-0.679085048049596,-0.0421918824859555,-2.24171441178487,\ +-4,-0.227774,-2.88098585858586,3.1475739152156,-0.679086800468604,-0.0421964596148986,-2.24171888317647,\ +-4,-0.227774,-2.85345505050505,3.14757310000488,-0.679088633921573,-0.0422012483957886,-2.24172356133059,\ +-4,-0.227774,-2.82592424242424,3.14757224620565,-0.679090554162197,-0.0422062638566427,-2.24172846092809,\ +-4,-0.227774,-2.79839343434343,3.14757135101157,-0.679092567502076,-0.0422115224826892,-2.24173359807337,\ +-4,-0.227774,-2.77086262626263,3.14757041133742,-0.679094680880035,-0.04221704239738,-2.2417389904712,\ +-4,-0.227774,-2.74333181818182,3.14756942378357,-0.679096901942011,-0.0422228435710734,-2.2417446576306,\ +-4,-0.227774,-2.71580101010101,3.14756838459492,-0.679099239133479,-0.0422289480624511,-2.24175062110068,\ +-4,-0.227774,-2.6882702020202,3.14756728961309,-0.679101701806787,-0.0422353802988187,-2.24175690474443,\ +-4,-0.227774,-2.66073939393939,3.14756613422093,-0.679104300346215,-0.0422421674027995,-2.2417635350579,\ +-4,-0.227774,-2.63320858585858,3.14756491327734,-0.679107046314351,-0.0422493395746329,-2.2417705415437,\ +-4,-0.227774,-2.60567777777778,3.14756362104082,-0.679109952624114,-0.0422569305414421,-2.24177795714978,\ +-4,-0.227774,-2.57814696969697,3.14756225107925,-0.679113033741768,-0.0422649780875691,-2.24178581878763,\ +-4,-0.227774,-2.55061616161616,3.14756079616267,-0.679116305927778,-0.0422735246835725,-2.2417941679467,\ +-4,-0.227774,-2.52308535353535,3.14755924813582,-0.679119787523838,-0.0422826182359864,-2.2418030514268,\ +-4,-0.227774,-2.49555454545454,3.14755759776506,-0.679123499296879,-0.0422923129857851,-2.24181252221587,\ +-4,-0.227774,-2.46802373737374,3.14755583455412,-0.679127464853611,-0.04230267059114,-2.24182264054773,\ +-4,-0.227774,-2.44049292929293,3.14755394652058,-0.679131711143113,-0.0423137614401282,-2.24183347518438,\ +-4,-0.227774,-2.41296212121212,3.14755191992324,-0.679136269070073,-0.0423256662524635,-2.24184510498082,\ +-4,-0.227774,-2.38543131313131,3.14754973892712,-0.679141174248212,-0.0423384780473191,-2.24185762080736,\ +-4,-0.227774,-2.3579005050505,3.14754738518891,-0.679146467932689,-0.04235230457872,-2.24187112792877,\ +-4,-0.227774,-2.3303696969697,3.14754483733973,-0.679152198183231,-0.0423672713734728,-2.24188574897205,\ +-4,-0.227774,-2.30283888888889,3.14754207033458,-0.679158421327382,-0.0423835255530297,-2.24190162765995,\ +-4,-0.227774,-2.27530808080808,3.1475390546263,-0.679165203818314,-0.0424012406858943,-2.24191893355132,\ +-4,-0.227774,-2.24777727272727,3.14753575510629,-0.679172624617168,-0.042420623010029,-2.24193786811978,\ +-4,-0.227774,-2.22024646464646,3.14753212973141,-0.679180778281219,-0.0424419194988012,-2.24195867263331,\ +-4,-0.227774,-2.19271565656565,3.147528127723,-0.679189779014498,-0.0424654284408004,-2.24198163848966,\ +-4,-0.227774,-2.16518484848485,3.14752368717363,-0.679199766050048,-0.0424915134976694,-2.24200712094944,\ +-4,-0.227774,-2.13765404040404,3.14751873182183,-0.67921091090408,-0.0425206226512035,-2.2420355576455,\ +-4,-0.227774,-2.11012323232323,3.14751316663578,-0.679223427308352,-0.0425533141456617,-2.24206749392599,\ +-4,-0.227774,-2.08259242424242,3.1475068716596,-0.679237585050028,-0.0425902926359118,-2.24210361816735,\ +-4,-0.227774,-2.05506161616161,3.14749969326917,-0.679253729638164,-0.0426324605542729,-2.24214481195462,\ +-4,-0.227774,-2.02753080808081,3.14749143146831,-0.679272310874887,-0.0426809927352347,-2.24219222298214,\ +-4,-0.227774,-2,3.14748182096388,-0.679293925418841,-0.0427374475866758,-2.24224737365665,\ +-4,-0.216269,-4.72555,3.14759509672638,-0.679039162105891,-0.0420720333630503,-2.24159733132501,\ +-4,-0.216269,-4.69801919191919,3.14759496855472,-0.679039450370877,-0.0420727862800215,-2.24159806684866,\ +-4,-0.216269,-4.67048838383838,3.1475948380277,-0.679039743933216,-0.0420735530331088,-2.24159881588881,\ +-4,-0.216269,-4.64295757575758,3.14759470507977,-0.679040042940286,-0.0420743340072413,-2.24159957882147,\ +-4,-0.216269,-4.61542676767677,3.14759456964296,-0.679040347544981,-0.0420751296017613,-2.24160035603677,\ +-4,-0.216269,-4.58789595959596,3.14759443164674,-0.679040657905972,-0.0420759402311042,-2.24160114793957,\ +-4,-0.216269,-4.56036515151515,3.14759429101783,-0.679040974187984,-0.0420767663255181,-2.24160195495019,\ +-4,-0.216269,-4.53283434343434,3.14759414768018,-0.679041296562092,-0.042077608331826,-2.24160277750511,\ +-4,-0.216269,-4.50530353535354,3.14759400155478,-0.679041625206021,-0.042078466714231,-2.24160361605781,\ +-4,-0.216269,-4.47777272727273,3.14759385255949,-0.679041960304481,-0.0420793419551704,-2.2416044710796,\ +-4,-0.216269,-4.45024191919192,3.14759370060893,-0.679042302049506,-0.0420802345562191,-2.24160534306046,\ +-4,-0.216269,-4.42271111111111,3.1475935456143,-0.679042650640824,-0.0420811450390484,-2.24160623251001,\ +-4,-0.216269,-4.3951803030303,3.14759338748318,-0.679043006286251,-0.042082073946443,-2.2416071399585,\ +-4,-0.216269,-4.36764949494949,3.14759322611941,-0.679043369202095,-0.04208302184338,-2.24160806595784,\ +-4,-0.216269,-4.34011868686869,3.14759306142283,-0.679043739613599,-0.0420839893181739,-2.24160901108277,\ +-4,-0.216269,-4.31258787878788,3.14759289328912,-0.67904411775541,-0.0420849769836949,-2.241609975932,\ +-4,-0.216269,-4.28505707070707,3.14759272160954,-0.679044503872075,-0.0420859854786645,-2.24161096112948,\ +-4,-0.216269,-4.25752626262626,3.14759254627071,-0.679044898218555,-0.0420870154690308,-2.2416119673258,\ +-4,-0.216269,-4.22999545454545,3.1475923671544,-0.679045301060809,-0.0420880676494372,-2.24161299519954,\ +-4,-0.216269,-4.20246464646465,3.14759218413721,-0.679045712676375,-0.0420891427447832,-2.24161404545885,\ +-4,-0.216269,-4.17493383838384,3.14759199709029,-0.679046133355012,-0.0420902415118903,-2.24161511884308,\ +-4,-0.216269,-4.14740303030303,3.14759180587907,-0.679046563399382,-0.0420913647412791,-2.24161621612448,\ +-4,-0.216269,-4.11987222222222,3.14759161036292,-0.679047003125774,-0.0420925132590659,-2.24161733811008,\ +-4,-0.216269,-4.09234141414141,3.1475914103948,-0.679047452864885,-0.0420936879289884,-2.24161848564367,\ +-4,-0.216269,-4.06481060606061,3.1475912058209,-0.679047912962642,-0.0420948896545725,-2.24161965960792,\ +-4,-0.216269,-4.0372797979798,3.14759099648025,-0.679048383781091,-0.0420961193814509,-2.24162086092658,\ +-4,-0.216269,-4.00974898989899,3.14759078220426,-0.679048865699357,-0.0420973780998432,-2.24162209056701,\ +-4,-0.216269,-3.98221818181818,3.14759056281635,-0.679049359114644,-0.042098666847216,-2.24162334954273,\ +-4,-0.216269,-3.95468737373737,3.14759033813135,-0.679049864443343,-0.0420999867111346,-2.24162463891616,\ +-4,-0.216269,-3.92715656565657,3.14759010795509,-0.679050382122199,-0.0421013388323249,-2.24162595980168,\ +-4,-0.216269,-3.89962575757576,3.14758987208376,-0.679050912609565,-0.0421027244079602,-2.2416273133688,\ +-4,-0.216269,-3.87209494949495,3.14758963030336,-0.679051456386763,-0.0421041446951973,-2.24162870084564,\ +-4,-0.216269,-3.84456414141414,3.14758938238901,-0.679052013959534,-0.0421056010149811,-2.24163012352264,\ +-4,-0.216269,-3.81703333333333,3.14758912810429,-0.679052585859613,-0.0421070947561425,-2.24163158275653,\ +-4,-0.216269,-3.78950252525252,3.14758886720047,-0.679053172646415,-0.0421086273798149,-2.2416330799747,\ +-4,-0.216269,-3.76197171717172,3.14758859941569,-0.679053774908865,-0.0421102004242026,-2.24163461667981,\ +-4,-0.216269,-3.73444090909091,3.1475883244741,-0.679054393267361,-0.0421118155097299,-2.24163619445487,\ +-4,-0.216269,-3.7069101010101,3.1475880420849,-0.679055028375923,-0.0421134743446094,-2.24163781496861,\ +-4,-0.216269,-3.67937929292929,3.14758775194133,-0.679055680924476,-0.0421151787308677,-2.24163947998144,\ +-4,-0.216269,-3.65184848484848,3.14758745371956,-0.679056351641375,-0.0421169305708763,-2.24164119135177,\ +-4,-0.216269,-3.62431767676768,3.14758714707744,-0.679057041296097,-0.0421187318744339,-2.24164295104299,\ +-4,-0.216269,-3.59678686868687,3.14758683165323,-0.679057750702201,-0.0421205847664595,-2.24164476113092,\ +-4,-0.216269,-3.56925606060606,3.14758650706417,-0.679058480720514,-0.0421224914953525,-2.24164662381201,\ +-4,-0.216269,-3.54172525252525,3.14758617290497,-0.679059232262633,-0.0421244544420959,-2.24164854141226,\ +-4,-0.216269,-3.51419444444444,3.14758582874602,-0.679060006294709,-0.0421264761301762,-2.24165051639684,\ +-4,-0.216269,-3.48666363636364,3.14758547413164,-0.679060803841598,-0.0421285592364028,-2.24165255138074,\ +-4,-0.216269,-3.45913282828283,3.14758510857806,-0.679061625991383,-0.0421307066027367,-2.24165464914025,\ +-4,-0.216269,-3.43160202020202,3.14758473157113,-0.679062473900333,-0.042132921249223,-2.24165681262566,\ +-4,-0.216269,-3.40407121212121,3.14758434256403,-0.679063348798325,-0.042135206388165,-2.24165904497507,\ +-4,-0.216269,-3.3765404040404,3.14758394097456,-0.679064251994793,-0.0421375654396684,-2.24166134952957,\ +-4,-0.216269,-3.3490095959596,3.14758352618217,-0.679065184885274,-0.0421400020487213,-2.24166372984993,\ +-4,-0.216269,-3.32147878787879,3.14758309752492,-0.679066148958594,-0.0421425201039877,-2.241666189735,\ +-4,-0.216269,-3.29394797979798,3.14758265429581,-0.679067145804815,-0.0421451237585151,-2.24166873324189,\ +-4,-0.216269,-3.26641717171717,3.14758219573896,-0.679068177123959,-0.0421478174525931,-2.2416713647083,\ +-4,-0.216269,-3.23888636363636,3.14758172104528,-0.679069244735704,-0.0421506059390212,-2.24167408877724,\ +-4,-0.216269,-3.21135555555555,3.14758122934772,-0.679070350590092,-0.0421534943110985,-2.24167691042435,\ +-4,-0.216269,-3.18382474747475,3.14758071971599,-0.679071496779418,-0.0421564880336693,-2.24167983498823,\ +-4,-0.216269,-3.15629393939394,3.14758019115065,-0.679072685551438,-0.0421595929776323,-2.24168286820414,\ +-4,-0.216269,-3.12876313131313,3.14757964257662,-0.679073919324084,-0.0421628154583687,-2.24168601624159,\ +-4,-0.216269,-3.10123232323232,3.14757907283584,-0.679075200701887,-0.0421661622786186,-2.24168928574615,\ +-4,-0.216269,-3.07370151515151,3.14757848067914,-0.679076532494313,-0.0421696407764169,-2.24169268388634,\ +-4,-0.216269,-3.04617070707071,3.14757786475707,-0.679077917736341,-0.0421732588788017,-2.24169621840609,\ +-4,-0.216269,-3.0186398989899,3.14757722360964,-0.679079359711556,-0.0421770251621213,-2.2416998976836,\ +-4,-0.216269,-2.99110909090909,3.1475765556548,-0.679080861978109,-0.0421809489199064,-2.24170373079772,\ +-4,-0.216269,-2.96357828282828,3.14757585917535,-0.679082428398064,-0.0421850402394379,-2.24170772760271,\ +-4,-0.216269,-2.93604747474747,3.14757513230421,-0.679084063170528,-0.0421893100883355,-2.24171189881282,\ +-4,-0.216269,-2.90851666666667,3.14757437300777,-0.679085770869255,-0.042193770412738,-2.2417162560982,\ +-4,-0.216269,-2.88098585858586,3.14757357906681,-0.679087556485362,-0.0421984342489197,-2.241720812194,\ +-4,-0.216269,-2.85345505050505,3.14757274805492,-0.679089425476071,-0.0422033158505436,-2.24172558102458,\ +-4,-0.216269,-2.82592424242424,3.14757187731358,-0.679091383820404,-0.0422084308341651,-2.24173057784575,\ +-4,-0.216269,-2.79839343434343,3.14757096392394,-0.679093438083077,-0.0422137963461153,-2.24173581940774,\ +-4,-0.216269,-2.77086262626263,3.14757000467401,-0.679095595488016,-0.0422194312545214,-2.24174132414279,\ +-4,-0.216269,-2.74333181818182,3.14756899602096,-0.67909786400325,-0.0422253563709981,-2.24174711238174,\ +-4,-0.216269,-2.71580101010101,3.14756793404738,-0.67910025243923,-0.0422315947074922,-2.24175320660494,\ +-4,-0.216269,-2.6882702020202,3.14756681441046,-0.679102770563189,-0.0422381717749686,-2.24175963173402,\ +-4,-0.216269,-2.66073939393939,3.14756563228259,-0.679105429232656,-0.0422451159321095,-2.24176641547254,\ +-4,-0.216269,-2.63320858585858,3.14756438228183,-0.679108240551942,-0.0422524587940736,-2.24177358870531,\ +-4,-0.216269,-2.60567777777778,3.14756305838992,-0.679111218056407,-0.0422602357137455,-2.24178118596851,\ +-4,-0.216269,-2.57814696969697,3.14756165385545,-0.679114376930363,-0.0422684863509286,-2.24178924600576,\ +-4,-0.216269,-2.55061616161616,3.14756016107865,-0.679117734266103,-0.0422772553488191,-2.24179781242896,\ +-4,-0.216269,-2.52308535353535,3.14755857147382,-0.679121309373265,-0.0422865931421183,-2.24180693450767,\ +-4,-0.216269,-2.49555454545454,3.14755687530418,-0.679125124150475,-0.042296556927667,-2.24181666811745,\ +-4,-0.216269,-2.46802373737374,3.14755506148214,-0.679129203534291,-0.0423072118370607,-2.24182707688525,\ +-4,-0.216269,-2.44049292929293,3.1475531173267,-0.679133576044944,-0.0423186323620439,-2.24183823358197,\ +-4,-0.216269,-2.41296212121212,3.14755102826659,-0.679138274454076,-0.0423309040986206,-2.24185022182625,\ +-4,-0.216269,-2.38543131313131,3.14754877747429,-0.679143336607615,-0.0423441258962448,-2.24186313818399,\ +-4,-0.216269,-2.3579005050505,3.1475463454119,-0.679148806447405,-0.0423584125262766,-2.24187709477518,\ +-4,-0.216269,-2.3303696969697,3.14754370926241,-0.679154735290079,-0.0423738980222061,-2.241892222537,\ +-4,-0.216269,-2.30283888888889,3.14754084221178,-0.679161183441951,-0.0423907398975946,-2.24190867534422,\ +-4,-0.216269,-2.27530808080808,3.14753771253345,-0.679168222257688,-0.0424091245231319,-2.24192663526216,\ +-4,-0.216269,-2.24777727272727,3.14753428240948,-0.679175936791904,-0.0424292740522639,-2.24194631931223,\ +-4,-0.216269,-2.22024646464646,3.14753050639487,-0.679184429252871,-0.0424514554419479,-2.24196798828437,\ +-4,-0.216269,-2.19271565656565,3.1475263293927,-0.679193823556539,-0.0424759923472369,-2.24199195835678,\ +-4,-0.216269,-2.16518484848485,3.14752168394803,-0.679204271412706,-0.0425032810177273,-2.24201861662522,\ +-4,-0.216269,-2.13765404040404,3.14751648657726,-0.679215960580513,-0.042533811859984,-2.24204844216724,\ +-4,-0.216269,-2.11012323232323,3.14751063270651,-0.67922912625226,-0.0425681991708681,-2.24208203508869,\ +-4,-0.216269,-2.08259242424242,3.14750398956265,-0.679244067041862,-0.0426072228976292,-2.24212015731907,\ +-4,-0.216269,-2.05506161616161,3.14749638598105,-0.679261167907916,-0.0426518885104964,-2.24216379110101,\ +-4,-0.216269,-2.02753080808081,3.14748759744798,-0.679280933793858,-0.0427035148671198,-2.24221422482491,\ +-4,-0.216269,-2,3.14747732355934,-0.679304040324747,-0.0427638666270889,-2.24227318238455,\ +-4,-0.206412,-4.72555,3.14759505110307,-0.679039264715182,-0.042072301367418,-2.24159759313814,\ +-4,-0.206412,-4.69801919191919,3.14759492209549,-0.679039554860206,-0.0420730591948487,-2.24159833345882,\ +-4,-0.206412,-4.67048838383838,3.14759479070935,-0.679039850354734,-0.0420738309945986,-2.24159908742904,\ +-4,-0.206412,-4.64295757575758,3.14759465687827,-0.679040151348085,-0.0420746171566816,-2.24159985542981,\ +-4,-0.206412,-4.61542676767677,3.14759452053333,-0.679040457995189,-0.0420754180857633,-2.24160063785644,\ +-4,-0.206412,-4.58789595959596,3.14759438160308,-0.67904077045686,-0.0420762342018558,-2.24160143511924,\ +-4,-0.206412,-4.56036515151515,3.14759424001323,-0.679041088900058,-0.042077065941052,-2.24160224764423,\ +-4,-0.206412,-4.53283434343434,3.14759409568672,-0.679041413498202,-0.0420779137563026,-2.2416030758739,\ +-4,-0.206412,-4.50530353535354,3.14759394854339,-0.679041744431481,-0.0420787781182385,-2.241603920268,\ +-4,-0.206412,-4.47777272727273,3.14759379850001,-0.679042081887185,-0.0420796595160421,-2.24160478130443,\ +-4,-0.206412,-4.45024191919192,3.14759364546995,-0.679042426060057,-0.0420805584583707,-2.24160565948007,\ +-4,-0.206412,-4.42271111111111,3.14759348936315,-0.67904277715268,-0.042081475474335,-2.24160655531183,\ +-4,-0.206412,-4.3951803030303,3.14759333008589,-0.679043135375858,-0.0420824111145374,-2.24160746933759,\ +-4,-0.206412,-4.36764949494949,3.14759316754058,-0.679043500949046,-0.0420833659521757,-2.2416084021173,\ +-4,-0.206412,-4.34011868686869,3.1475930016256,-0.679043874100805,-0.0420843405842125,-2.24160935423413,\ +-4,-0.206412,-4.31258787878788,3.14759283223506,-0.679044255069259,-0.0420853356326207,-2.24161032629569,\ +-4,-0.206412,-4.28505707070707,3.14759265925863,-0.679044644102628,-0.0420863517457068,-2.24161131893531,\ +-4,-0.206412,-4.25752626262626,3.14759248258119,-0.679045041459742,-0.0420873895995199,-2.24161233281341,\ +-4,-0.206412,-4.22999545454545,3.14759230208269,-0.679045447410632,-0.042088449899351,-2.241613368619,\ +-4,-0.206412,-4.20246464646465,3.14759211763781,-0.67904586223714,-0.0420895333813316,-2.2416144270712,\ +-4,-0.206412,-4.17493383838384,3.14759192911569,-0.679046286233565,-0.0420906408141392,-2.24161550892095,\ +-4,-0.206412,-4.14740303030303,3.14759173637964,-0.679046719707358,-0.0420917730008136,-2.24161661495271,\ +-4,-0.206412,-4.11987222222222,3.14759153928677,-0.67904716297988,-0.0420929307807016,-2.24161774598645,\ +-4,-0.206412,-4.09234141414141,3.14759133768767,-0.679047616387175,-0.0420941150315295,-2.24161890287962,\ +-4,-0.206412,-4.06481060606061,3.14759113142598,-0.679048080280846,-0.0420953266716249,-2.24162008652932,\ +-4,-0.206412,-4.0372797979798,3.14759092033809,-0.679048555028931,-0.0420965666622888,-2.24162129787467,\ +-4,-0.206412,-4.00974898989899,3.14759070425258,-0.679049041016913,-0.0420978360103429,-2.24162253789922,\ +-4,-0.206412,-3.98221818181818,3.14759048298986,-0.679049538648735,-0.042099135770852,-2.24162380763365,\ +-4,-0.206412,-3.95468737373737,3.1475902563616,-0.679050048347939,-0.0421004670500516,-2.24162510815866,\ +-4,-0.206412,-3.92715656565657,3.14759002417024,-0.679050570558854,-0.0421018310084876,-2.24162644060796,\ +-4,-0.206412,-3.89962575757576,3.14758978620841,-0.679051105747894,-0.0421032288643895,-2.24162780617166,\ +-4,-0.206412,-3.87209494949495,3.14758954225825,-0.679051654404955,-0.0421046618973011,-2.24162920609974,\ +-4,-0.206412,-3.84456414141414,3.14758929209089,-0.679052217044896,-0.0421061314519851,-2.2416306417059,\ +-4,-0.206412,-3.81703333333333,3.14758903546555,-0.679052794209163,-0.0421076389426344,-2.24163211437164,\ +-4,-0.206412,-3.78950252525252,3.14758877212889,-0.679053386467517,-0.0421091858574097,-2.24163362555077,\ +-4,-0.206412,-3.76197171717172,3.14758850181418,-0.679053994419919,-0.0421107737633401,-2.24163517677412,\ +-4,-0.206412,-3.73444090909091,3.14758822424032,-0.679054618698551,-0.042112404311618,-2.2416367696547,\ +-4,-0.206412,-3.7069101010101,3.14758793911091,-0.67905525997001,-0.0421140792433275,-2.24163840589341,\ +-4,-0.206412,-3.67937929292929,3.14758764611319,-0.679055918937688,-0.0421158003956438,-2.24164008728499,\ +-4,-0.206412,-3.65184848484848,3.14758734491694,-0.679056596344339,-0.0421175697085567,-2.24164181572458,\ +-4,-0.206412,-3.62431767676768,3.14758703517315,-0.679057292974867,-0.0421193892321645,-2.24164359321495,\ +-4,-0.206412,-3.59678686868687,3.14758671651274,-0.679058009659376,-0.0421212611345987,-2.24164542187411,\ +-4,-0.206412,-3.56925606060606,3.14758638854504,-0.679058747276456,-0.0421231877106422,-2.24164730394387,\ +-4,-0.206412,-3.54172525252525,3.14758605085626,-0.679059506756775,-0.042125171391113,-2.24164924179887,\ +-4,-0.206412,-3.51419444444444,3.14758570300768,-0.679060289087015,-0.0421272147530994,-2.24165123795667,\ +-4,-0.206412,-3.48666363636364,3.14758534453382,-0.679061095314126,-0.0421293205311272,-2.24165329508861,\ +-4,-0.206412,-3.45913282828283,3.14758497494025,-0.67906192655001,-0.0421314916293694,-2.2416554160318,\ +-4,-0.206412,-3.43160202020202,3.14758459370148,-0.679062783976642,-0.0421337311350088,-2.24165760380208,\ +-4,-0.206412,-3.40407121212121,3.14758420025828,-0.679063668851669,-0.042136042332887,-2.24165986160843,\ +-4,-0.206412,-3.3765404040404,3.14758379401508,-0.679064582514566,-0.0421384287215775,-2.24166219286859,\ +-4,-0.206412,-3.3490095959596,3.14758337433694,-0.679065526393415,-0.0421408940310583,-2.24166460122637,\ +-4,-0.206412,-3.32147878787879,3.14758294054615,-0.679066502012332,-0.0421434422421656,-2.24166709057065,\ +-4,-0.206412,-3.29394797979798,3.14758249191871,-0.679067510999692,-0.042146077608043,-2.24166966505631,\ +-4,-0.206412,-3.26641717171717,3.1475820276802,-0.679068555097201,-0.0421488046778315,-2.24167232912741,\ +-4,-0.206412,-3.23888636363636,3.14758154700135,-0.679069636169923,-0.0421516283228742,-2.24167508754276,\ +-4,-0.206412,-3.21135555555555,3.1475810489931,-0.679070756217398,-0.0421545537657561,-2.24167794540429,\ +-4,-0.206412,-3.18382474747475,3.14758053270111,-0.679071917385989,-0.0421575866125449,-2.24168090818857,\ +-4,-0.206412,-3.15629393939394,3.14757999709965,-0.679073121982605,-0.0421607328886442,-2.2416839817818,\ +-4,-0.206412,-3.12876313131313,3.14757944108483,-0.679074372490008,-0.0421639990787501,-2.24168717251887,\ +-4,-0.206412,-3.10123232323232,3.14757886346693,-0.679075671583879,-0.0421673921714637,-2.24169048722694,\ +-4,-0.206412,-3.07370151515151,3.14757826296199,-0.679077022151948,-0.0421709197092076,-2.2416939332742,\ +-4,-0.206412,-3.04617070707071,3.14757763818224,-0.679078427315399,-0.0421745898441933,-2.24169751862453,\ +-4,-0.206412,-3.0186398989899,3.14757698762536,-0.679079890452976,-0.0421784114013198,-2.24170125189895,\ +-4,-0.206412,-2.99110909090909,3.14757630966251,-0.679081415228085,-0.0421823939490178,-2.24170514244487,\ +-4,-0.206412,-2.96357828282828,3.1475756025246,-0.679083005619436,-0.0421865478792427,-2.24170920041417,\ +-4,-0.206412,-2.93604747474747,3.147574864287,-0.6790846659557,-0.042190884498019,-2.24171343685169,\ +-4,-0.206412,-2.90851666666667,3.14757409285194,-0.67908640095486,-0.0421954161282025,-2.2417178637956,\ +-4,-0.206412,-2.88098585858586,3.14757328592865,-0.679088215768976,-0.0422001562264223,-2.24172249439169,\ +-4,-0.206412,-2.85345505050505,3.14757244101062,-0.679090116035292,-0.042205119516544,-2.24172734302367,\ +-4,-0.206412,-2.82592424242424,3.14757155534964,-0.679092107934714,-0.0422103221424366,-2.24173242546246,\ +-4,-0.206412,-2.79839343434343,3.14757062592587,-0.679094198258988,-0.0422157818433899,-2.24173775903757,\ +-4,-0.206412,-2.77086262626263,3.14756964941352,-0.679096394488043,-0.0422215181561902,-2.24174336283444,\ +-4,-0.206412,-2.74333181818182,3.14756862214102,-0.679098704879453,-0.0422275526487102,-2.24174925792272,\ +-4,-0.206412,-2.71580101010101,3.14756754004487,-0.679101138572165,-0.0422339091908975,-2.24175546762092,\ +-4,-0.206412,-2.6882702020202,3.14756639861604,-0.679103705707332,-0.0422406142703382,-2.24176201780473,\ +-4,-0.206412,-2.66073939393939,3.147565192837,-0.679106417569548,-0.0422476973611934,-2.24176893726742,\ +-4,-0.206412,-2.63320858585858,3.14756391710815,-0.67910928675271,-0.0422551913573422,-2.24177625814298,\ +-4,-0.206412,-2.60567777777778,3.14756256516072,-0.679112327355552,-0.0422631330831619,-2.2417840164051,\ +-4,-0.206412,-2.57814696969697,3.14756112995386,-0.67911555521335,-0.0422715638986734,-2.24179225245835,\ +-4,-0.206412,-2.55061616161616,3.14755960355195,-0.679118988173767,-0.0422805304200464,-2.24180101184198,\ +-4,-0.206412,-2.52308535353535,3.14755797697777,-0.679122646427024,-0.0422900853819524,-2.24181034607245,\ +-4,-0.206412,-2.49555454545454,3.14755624003585,-0.67912655290327,-0.0423002886754618,-2.24182031365725,\ +-4,-0.206412,-2.46802373737374,3.14755438109858,-0.679130733753682,-0.0423112086046289,-2.24183098132254,\ +-4,-0.206412,-2.44049292929293,3.14755238684551,-0.679135218936638,-0.0423229234174885,-2.24184242550873,\ +-4,-0.206412,-2.41296212121212,3.14755024194371,-0.679140042936709,-0.0423355231840119,-2.24185473420505,\ +-4,-0.206412,-2.38543131313131,3.14754792865281,-0.679145245653004,-0.042349112116358,-2.24186800921625,\ +-4,-0.206412,-2.3579005050505,3.14754542633311,-0.679150873505283,-0.0423638114579203,-2.24188236898483,\ +-4,-0.206412,-2.3303696969697,3.14754271082812,-0.679156980822773,-0.042379763110769,-2.24189795213475,\ +-4,-0.206412,-2.30283888888889,3.14753975368223,-0.679163631603745,-0.0423971342314626,-2.24191492196106,\ +-4,-0.206412,-2.27530808080808,3.14753652113967,-0.679170901766687,-0.0424161231108764,-2.24193347217387,\ +-4,-0.206412,-2.24777727272727,3.14753297285036,-0.67917888206114,-0.0424369667770095,-2.24195383432552,\ +-4,-0.206412,-2.22024646464646,3.14752906017687,-0.679187681875323,-0.0424599509400548,-2.24197628752596,\ +-4,-0.206412,-2.19271565656565,3.14752472395163,-0.679197434280271,-0.0424854231671675,-2.2420011713131,\ +-4,-0.206412,-2.16518484848485,3.14751989146415,-0.679208302805834,-0.0425138105806224,-2.24202890294218,\ +-4,-0.206412,-2.13765404040404,3.14751447235097,-0.679220490684308,-0.042545644001216,-2.24206000097136,\ +-4,-0.206412,-2.11012323232323,3.14750835289217,-0.679234253677942,-0.0425815914522754,-2.24209511799182,\ +-4,-0.206412,-2.08259242424242,3.1475013879438,-0.679249918223306,-0.0426225055508202,-2.24213508692406,\ +-4,-0.206412,-2.05506161616161,3.14749338927825,-0.679267907654483,-0.0426694919996985,-2.24218098792783,\ +-4,-0.206412,-2.02753080808081,3.14748410831698,-0.67928878103807,-0.0427240110204035,-2.24223424749169,\ +-4,-0.206412,-2,3.14747320983502,-0.679313292313102,-0.0427880318201685,-2.24229678933176,\ +-4,-0.204855,-4.72555,3.14759504386941,-0.679039280984078,-0.0420723438600195,-2.24159763464912,\ +-4,-0.204855,-4.69801919191919,3.14759491472903,-0.679039571427754,-0.0420731024674921,-2.24159837573182,\ +-4,-0.204855,-4.67048838383838,3.14759478320642,-0.679039867229231,-0.0420738750689616,-2.24159913048523,\ +-4,-0.204855,-4.64295757575758,3.14759464923502,-0.679040168538141,-0.0420746620552529,-2.24159989929116,\ +-4,-0.204855,-4.61542676767677,3.14759451274582,-0.679040475509745,-0.0420754638318808,-2.24160068254576,\ +-4,-0.204855,-4.58789595959596,3.14759437366715,-0.679040788305184,-0.0420762808197462,-2.24160148066019,\ +-4,-0.204855,-4.56036515151515,3.14759423192462,-0.679041107091785,-0.0420771134558747,-2.2416022940614,\ +-4,-0.204855,-4.53283434343434,3.14759408744097,-0.67904143204334,-0.0420779621941943,-2.24160312319282,\ +-4,-0.204855,-4.50530353535354,3.14759394013589,-0.679041763340427,-0.0420788275063615,-2.2416039685152,\ +-4,-0.204855,-4.47777272727273,3.14759378992593,-0.67904210117075,-0.042079709882635,-2.24160483050749,\ +-4,-0.204855,-4.45024191919192,3.1475936367243,-0.679042445729491,-0.0420806098328019,-2.24160570966769,\ +-4,-0.204855,-4.42271111111111,3.14759348044074,-0.679042797219676,-0.0420815278871604,-2.24160660651386,\ +-4,-0.204855,-4.3951803030303,3.14759332098129,-0.679043155852595,-0.042082464597561,-2.24160752158509,\ +-4,-0.204855,-4.36764949494949,3.14759315824816,-0.679043521848203,-0.042083420538513,-2.24160845544262,\ +-4,-0.204855,-4.34011868686869,3.14759299213948,-0.679043895435588,-0.0420843963083596,-2.24160940867098,\ +-4,-0.204855,-4.31258787878788,3.14759282254915,-0.679044276853435,-0.0420853925305271,-2.24161038187919,\ +-4,-0.204855,-4.28505707070707,3.14759264936651,-0.679044666350543,-0.0420864098548531,-2.24161137570206,\ +-4,-0.204855,-4.25752626262626,3.14759247247621,-0.679045064186364,-0.0420874489589984,-2.24161239080161,\ +-4,-0.204855,-4.22999545454545,3.14759229175794,-0.679045470631581,-0.0420885105499553,-2.2416134278685,\ +-4,-0.204855,-4.20246464646465,3.147592107086,-0.679045885968722,-0.0420895953656497,-2.24161448762361,\ +-4,-0.204855,-4.17493383838384,3.14759191832928,-0.679046310492807,-0.0420907041766522,-2.24161557081971,\ +-4,-0.204855,-4.14740303030303,3.14759172535069,-0.679046744512059,-0.0420918377880031,-2.24161667824324,\ +-4,-0.204855,-4.11987222222222,3.14759152800702,-0.679047188348641,-0.0420929970411631,-2.24161781071621,\ +-4,-0.204855,-4.09234141414141,3.14759132614846,-0.679047642339463,-0.0420941828160944,-2.24161896909827,\ +-4,-0.204855,-4.06481060606061,3.14759111961827,-0.679048106837022,-0.0420953960334893,-2.24162015428884,\ +-4,-0.204855,-4.0372797979798,3.14759090825238,-0.679048582210327,-0.0420966376571551,-2.24162136722947,\ +-4,-0.204855,-4.00974898989899,3.14759069187895,-0.679049068845868,-0.0420979086965656,-2.2416226089063,\ +-4,-0.204855,-3.98221818181818,3.14759047031789,-0.679049567148671,-0.0420992102096007,-2.24162388035277,\ +-4,-0.204855,-3.95468737373737,3.14759024338037,-0.679050077543416,-0.0421005433054817,-2.24162518265249,\ +-4,-0.204855,-3.92715656565657,3.14759001086829,-0.679050600475648,-0.0421019091479235,-2.24162651694228,\ +-4,-0.204855,-3.89962575757576,3.14758977257369,-0.679051136413074,-0.0421033089585248,-2.24162788441552,\ +-4,-0.204855,-3.87209494949495,3.14758952827816,-0.679051685846956,-0.0421047440204103,-2.2416292863257,\ +-4,-0.204855,-3.84456414141414,3.1475892777521,-0.679052249293617,-0.0421062156821548,-2.24163072399023,\ +-4,-0.204855,-3.81703333333333,3.14758902075407,-0.679052827296051,-0.0421077253620092,-2.24163219879463,\ +-4,-0.204855,-3.78950252525252,3.14758875703003,-0.679053420425681,-0.0421092745524605,-2.24163371219686,\ +-4,-0.204855,-3.76197171717172,3.14758848631242,-0.679054029284231,-0.0421108648251529,-2.24163526573228,\ +-4,-0.204855,-3.73444090909091,3.14758820831931,-0.679054654505772,-0.0421124978362056,-2.24163686101876,\ +-4,-0.204855,-3.7069101010101,3.1475879227534,-0.679055296758916,-0.0421141753319665,-2.24163849976229,\ +-4,-0.204855,-3.67937929292929,3.14758762930101,-0.67905595674921,-0.0421158991552412,-2.24164018376312,\ +-4,-0.204855,-3.65184848484848,3.14758732763085,-0.679056635221709,-0.0421176712520466,-2.24164191492229,\ +-4,-0.204855,-3.62431767676768,3.14758701739282,-0.679057332963802,-0.042119493678939,-2.24164369524887,\ +-4,-0.204855,-3.59678686868687,3.14758669821665,-0.679058050808235,-0.042121368610975,-2.24164552686766,\ +-4,-0.204855,-3.56925606060606,3.14758636971045,-0.679058789636452,-0.0421232983503732,-2.24164741202769,\ +-4,-0.204855,-3.54172525252525,3.14758603145903,-0.679059550382176,-0.0421252853359433,-2.24164935311143,\ +-4,-0.204855,-3.51419444444444,3.14758568302224,-0.679060334035382,-0.0421273321533697,-2.24165135264484,\ +-4,-0.204855,-3.48666363636364,3.14758532393296,-0.679061141646561,-0.0421294415464364,-2.24165341330832,\ +-4,-0.204855,-3.45913282828283,3.14758495369514,-0.679061974331441,-0.0421316164292984,-2.24165553794869,\ +-4,-0.204855,-3.43160202020202,3.14758457178138,-0.679062833276121,-0.0421338598999145,-2.24165772959237,\ +-4,-0.204855,-3.40407121212121,3.14758417763053,-0.679063719742704,-0.0421361752547697,-2.24165999145965,\ +-4,-0.204855,-3.3765404040404,3.14758377064484,-0.679064635075495,-0.0421385660050379,-2.24166232698063,\ +-4,-0.204855,-3.3490095959596,3.14758335018705,-0.679065580707796,-0.0421410358943478,-2.24166473981245,\ +-4,-0.204855,-3.32147878787879,3.14758291557696,-0.679066558169394,-0.0421435889183429,-2.24166723385843,\ +-4,-0.204855,-3.29394797979798,3.1475824660878,-0.679067569094828,-0.0421462293462537,-2.24166981328919,\ +-4,-0.204855,-3.26641717171717,3.14758200094216,-0.679068615232497,-0.0421489617447178,-2.24167248256586,\ +-4,-0.204855,-3.23888636363636,3.14758151930756,-0.679069698454764,-0.0421517910041406,-2.24167524646589,\ +-4,-0.204855,-3.21135555555555,3.14758102029137,-0.679070820769133,-0.0421547223679028,-2.24167811011152,\ +-4,-0.204855,-3.18382474747475,3.1475805029354,-0.679071984330662,-0.0421577614647947,-2.24168107900152,\ +-4,-0.204855,-3.15629393939394,3.1475799662097,-0.679073191455788,-0.0421609143450882,-2.24168415904637,\ +-4,-0.204855,-3.12876313131313,3.1475794090057,-0.679074444637708,-0.0421641875207404,-2.24168735660762,\ +-4,-0.204855,-3.10123232323232,3.14757883012862,-0.679075746563562,-0.0421675880102891,-2.24169067854165,\ +-4,-0.204855,-3.07370151515151,3.14757822828886,-0.67907710013369,-0.0421711233890893,-2.24169413224883,\ +-4,-0.204855,-3.04617070707071,3.14757760209249,-0.679078508483176,-0.0421748018456487,-2.24169772572849,\ +-4,-0.204855,-3.0186398989899,3.14757695003038,-0.679079975006103,-0.0421786322449461,-2.24170146764082,\ +-4,-0.204855,-2.99110909090909,3.14757627046612,-0.679081503382862,-0.0421826241997607,-2.24170536737655,\ +-4,-0.204855,-2.96357828282828,3.14757556162228,-0.679083097610984,-0.0421867881512201,-2.24170943513557,\ +-4,-0.204855,-2.93604747474747,3.14757482156489,-0.679084762040065,-0.0421911354599907,-2.24171368201612,\ +-4,-0.204855,-2.90851666666667,3.14757404818582,-0.679086501411387,-0.042195678509785,-2.24171812011585,\ +-4,-0.204855,-2.88098585858586,3.14757323918275,-0.679088320903018,-0.0422004308251723,-2.24172276264687,\ +-4,-0.204855,-2.85345505050505,3.14757239203624,-0.679090226181316,-0.0422054072060539,-2.24172762406719,\ +-4,-0.204855,-2.82592424242424,3.14757150398353,-0.679092223459857,-0.0422106238816174,-2.2417327202311,\ +-4,-0.204855,-2.79839343434343,3.14757057198847,-0.679094319567132,-0.0422160986871462,-2.24173806856185,\ +-4,-0.204855,-2.77086262626263,3.1475695927068,-0.679096522024546,-0.0422218512677402,-2.2417436882507,\ +-4,-0.204855,-2.74333181818182,3.14756856244608,-0.679098839136598,-0.042227903313853,-2.24174960048707,\ +-4,-0.204855,-2.71580101010101,3.14756747711915,-0.67910128009552,-0.0422342788345954,-2.24175582872539,\ +-4,-0.204855,-2.6882702020202,3.14756633218996,-0.67910385510315,-0.042241004476067,-2.24176239899622,\ +-4,-0.204855,-2.66073939393939,3.14756512261018,-0.67910657551346,-0.0422481098936118,-2.24176934026983,\ +-4,-0.204855,-2.63320858585858,3.14756384274479,-0.679109453999919,-0.0422556281889682,-2.24177668488326,\ +-4,-0.204855,-2.60567777777778,3.14756248628429,-0.679112504752921,-0.0422635964259023,-2.24178446904406,\ +-4,-0.204855,-2.57814696969697,3.14756104614068,-0.679115743713727,-0.0422720562412739,-2.24179273342723,\ +-4,-0.204855,-2.55061616161616,3.14755951432361,-0.679119188853113,-0.0422810545727976,-2.24180152388616,\ +-4,-0.204855,-2.52308535353535,3.147557881792,-0.679122860504952,-0.0422906445303471,-2.24181089230382,\ +-4,-0.204855,-2.49555454545454,3.14755613827549,-0.679126781767838,-0.0423008864449667,-2.24182089761754,\ +-4,-0.204855,-2.46802373737374,3.14755427205815,-0.679130978991525,-0.0423118491393554,-2.24183160706012,\ +-4,-0.204855,-2.44049292929293,3.14755226971487,-0.679135482369779,-0.0423236114763636,-2.24184309767259,\ +-4,-0.204855,-2.41296212121212,3.14755011578793,-0.679140326667887,-0.042336264259173,-2.24185545816046,\ +-4,-0.204855,-2.38543131313131,3.14754779238712,-0.679145552121907,-0.0423499125799977,-2.24186879118818,\ +-4,-0.204855,-2.3579005050505,3.14754527869168,-0.679151205558834,-0.042364678745891,-2.24188321623737,\ +-4,-0.204855,-2.3303696969697,3.14754255032464,-0.679157341803788,-0.0423807059541446,-2.24189887319728,\ +-4,-0.204855,-2.30283888888889,3.14753957855968,-0.679164025463805,-0.0423981629513431,-2.24191592691625,\ +-4,-0.204855,-2.27530808080808,3.14753632930586,-0.679171333211293,-0.0424172499975302,-2.24193457302805,\ +-4,-0.204855,-2.24777727272727,3.14753276179392,-0.67917935673849,-0.0424382065829172,-2.24195504549037,\ +-4,-0.204855,-2.22024646464646,3.14752882685681,-0.679188206624769,-0.0424613215288653,-2.24197762645247,\ +-4,-0.204855,-2.19271565656565,3.14752446464998,-0.679198017463721,-0.0424869463792722,-2.24200265933712,\ +-4,-0.204855,-2.16518484848485,3.14751960158653,-0.679208954756263,-0.0425155134046462,-2.24203056642887,\ +-4,-0.204855,-2.13765404040404,3.14751414615232,-0.679221224322721,-0.0425475601854185,-2.24206187288934,\ +-4,-0.204855,-2.11012323232323,3.14750798309248,-0.679235085377424,-0.0425837637613804,-2.2420972401179,\ +-4,-0.204855,-2.08259242424242,3.14750096517915,-0.679250869043869,-0.0426249889913138,-2.24213751299401,\ +-4,-0.204855,-2.05506161616161,3.14749290129796,-0.679269005148563,-0.0426723585355553,-2.24218378824316,\ +-4,-0.204855,-2.02753080808081,3.14748353877901,-0.679290061959752,-0.0427273566493262,-2.24223751583244,\ +-4,-0.204855,-2,3.14747253644371,-0.679314806806559,-0.0427919875133075,-2.24230065364349,\ +-4,-0.178054,-4.72555,3.14759491818285,-0.679039563659964,-0.0420730821788636,-2.24159835591188,\ +-4,-0.178054,-4.69801919191919,3.14759478672423,-0.679039859317505,-0.0420738544043899,-2.24159911029804,\ +-4,-0.178054,-4.67048838383838,3.14759465281862,-0.679040160478442,-0.0420746410041911,-2.24159987872641,\ +-4,-0.178054,-4.64295757575758,3.14759451639707,-0.67904046729788,-0.0420754423833836,-2.24160066159275,\ +-4,-0.178054,-4.61542676767677,3.147594377388,-0.679040779936807,-0.0420762589624518,-2.24160145930783,\ +-4,-0.178054,-4.58789595959596,3.14759423571708,-0.679041098562377,-0.0420770911779832,-2.24160227229816,\ +-4,-0.178054,-4.56036515151515,3.1475940913071,-0.679041423348206,-0.0420779394834476,-2.24160310100672,\ +-4,-0.178054,-4.53283434343434,3.14759394407787,-0.679041754474693,-0.0420788043500208,-2.24160394589379,\ +-4,-0.178054,-4.50530353535354,3.14759379394601,-0.679042092129344,-0.0420796862674561,-2.24160480743785,\ +-4,-0.178054,-4.47777272727273,3.14759364082484,-0.679042436507137,-0.0420805857450109,-2.24160568613636,\ +-4,-0.178054,-4.45024191919192,3.14759348462418,-0.679042787810889,-0.0420815033124265,-2.24160658250683,\ +-4,-0.178054,-4.42271111111111,3.14759332525016,-0.679043146251664,-0.0420824395209676,-2.2416074970878,\ +-4,-0.178054,-4.3951803030303,3.14759316260511,-0.679043512049183,-0.0420833949445287,-2.24160843043989,\ +-4,-0.178054,-4.36764949494949,3.14759299658727,-0.679043885432281,-0.0420843701808051,-2.241609383147,\ +-4,-0.178054,-4.34011868686869,3.14759282709062,-0.679044266639387,-0.0420853658525415,-2.24161035581749,\ +-4,-0.178054,-4.31258787878788,3.14759265400469,-0.679044655919024,-0.0420863826088569,-2.24161134908547,\ +-4,-0.178054,-4.28505707070707,3.14759247721422,-0.679045053530355,-0.0420874211266565,-2.24161236361224,\ +-4,-0.178054,-4.25752626262626,3.14759229659899,-0.679045459743756,-0.0420884821121344,-2.24161340008763,\ +-4,-0.178054,-4.22999545454545,3.14759211203354,-0.679045874841432,-0.0420895663023747,-2.24161445923174,\ +-4,-0.178054,-4.20246464646465,3.14759192338683,-0.679046299118066,-0.0420906744670595,-2.24161554179645,\ +-4,-0.178054,-4.17493383838384,3.14759173052199,-0.679046732881519,-0.0420918074102914,-2.24161664856728,\ +-4,-0.178054,-4.14740303030303,3.14759153329595,-0.679047176453576,-0.0420929659725388,-2.24161778036532,\ +-4,-0.178054,-4.11987222222222,3.14759133155906,-0.679047630170746,-0.0420941510327156,-2.24161893804913,\ +-4,-0.178054,-4.09234141414141,3.14759112515479,-0.679048094385095,-0.0420953635104042,-2.24162012251709,\ +-4,-0.178054,-4.06481060606061,3.14759091391927,-0.679048569465189,-0.0420966043682363,-2.24162133470956,\ +-4,-0.178054,-4.0372797979798,3.14759069768087,-0.679049055797042,-0.0420978746144417,-2.24162257561151,\ +-4,-0.178054,-4.00974898989899,3.14759047625972,-0.679049553785169,-0.0420991753055794,-2.24162384625507,\ +-4,-0.178054,-3.98221818181818,3.14759024946725,-0.679050063853717,-0.0421005075494696,-2.24162514772249,\ +-4,-0.178054,-3.95468737373737,3.14759001710558,-0.679050586447663,-0.0421018725083415,-2.24162648114912,\ +-4,-0.178054,-3.92715656565657,3.14758977896704,-0.679051122034106,-0.042103271402212,-2.24162784772681,\ +-4,-0.178054,-3.89962575757576,3.14758953483349,-0.679051671103666,-0.0421047055125261,-2.24162924870739,\ +-4,-0.178054,-3.87209494949495,3.14758928447564,-0.679052234171979,-0.0421061761860704,-2.24163068540657,\ +-4,-0.178054,-3.84456414141414,3.14758902765241,-0.679052811781313,-0.0421076848391916,-2.24163215920794,\ +-4,-0.178054,-3.81703333333333,3.14758876411006,-0.679053404502315,-0.0421092329623474,-2.24163367156753,\ +-4,-0.178054,-3.78950252525252,3.1475884935814,-0.679054012935875,-0.0421108221250159,-2.24163522401857,\ +-4,-0.178054,-3.76197171717172,3.14758821578492,-0.679054637715183,-0.0421124539810053,-2.24163681817667,\ +-4,-0.178054,-3.73444090909091,3.14758793042374,-0.679055279507906,-0.0421141302741932,-2.24163845574541,\ +-4,-0.178054,-3.7069101010101,3.1475876371846,-0.679055939018576,-0.0421158528447436,-2.24164013852245,\ +-4,-0.178054,-3.67937929292929,3.14758733573672,-0.679056616991171,-0.0421176236358457,-2.24164186840608,\ +-4,-0.178054,-3.65184848484848,3.14758702573049,-0.67905731421191,-0.0421194447010252,-2.2416436474024,\ +-4,-0.178054,-3.62431767676768,3.14758670679623,-0.679058031512307,-0.0421213182120898,-2.24164547763305,\ +-4,-0.178054,-3.59678686868687,3.14758637854261,-0.679058769772457,-0.0421232464677682,-2.24164736134363,\ +-4,-0.178054,-3.56925606060606,3.14758604055509,-0.679059529924659,-0.0421252319031216,-2.24164930091297,\ +-4,-0.178054,-3.54172525252525,3.14758569239419,-0.679060312957338,-0.0421272770997991,-2.24165129886308,\ +-4,-0.178054,-3.51419444444444,3.14758533359357,-0.679061119919323,-0.0421293847972409,-2.2416533578701,\ +-4,-0.178054,-3.48666363636364,3.14758496365795,-0.679061951924546,-0.0421315579049179,-2.24165548077631,\ +-4,-0.178054,-3.45913282828283,3.14758458206079,-0.679062810157175,-0.0421337995157322,-2.24165767060313,\ +-4,-0.178054,-3.43160202020202,3.14758418824188,-0.679063695877219,-0.0421361129207044,-2.24165993056558,\ +-4,-0.178054,-3.40407121212121,3.14758378160446,-0.679064610426716,-0.0421385016250953,-2.24166226408795,\ +-4,-0.178054,-3.3765404040404,3.14758336151239,-0.67906555523652,-0.0421409693661275,-2.24166467482111,\ +-4,-0.178054,-3.3490095959596,3.14758292728661,-0.679066531833753,-0.0421435201324955,-2.24166716666161,\ +-4,-0.178054,-3.32147878787879,3.14758247820167,-0.679067541850066,-0.0421461581858799,-2.2416697437727,\ +-4,-0.178054,-3.29394797979798,3.14758201348156,-0.679068587030714,-0.0421488880847064,-2.24167241060749,\ +-4,-0.178054,-3.26641717171717,3.1475815322953,-0.679069669244631,-0.0421517147104341,-2.24167517193467,\ +-4,-0.178054,-3.23888636363636,3.14758103375194,-0.679070790495589,-0.0421546432966833,-2.24167803286695,\ +-4,-0.178054,-3.21135555555555,3.1475805168951,-0.679071952934563,-0.0421576794615792,-2.24168099889267,\ +-4,-0.178054,-3.18382474747475,3.1475799806968,-0.679073158873518,-0.0421608292437214,-2.24168407591095,\ +-4,-0.178054,-3.15629393939394,3.14757942405068,-0.679074410800751,-0.0421640991422713,-2.2416872702708,\ +-4,-0.178054,-3.12876313131313,3.14757884576431,-0.679075711398027,-0.0421674961617146,-2.24169058881489,\ +-4,-0.178054,-3.10123232323232,3.14757824455077,-0.679077063559765,-0.0421710278619474,-2.24169403892848,\ +-4,-0.178054,-3.07370151515151,3.14757761901902,-0.679078470414524,-0.0421747024144394,-2.24169762859426,\ +-4,-0.178054,-3.04617070707071,3.1475769676631,-0.679079935349183,-0.042178528665355,-2.24170136645404,\ +-4,-0.178054,-3.0186398989899,3.14757628885017,-0.679081462036163,-0.0421825162066538,-2.24170526187821,\ +-4,-0.178054,-2.99110909090909,3.14757558080671,-0.67908305446416,-0.0421866754563788,-2.24170932504411,\ +-4,-0.178054,-2.96357828282828,3.14757484160314,-0.679084716972946,-0.0421910177495434,-2.24171356702493,\ +-4,-0.178054,-2.93604747474747,3.14757406913619,-0.67908645429286,-0.0421955554412885,-2.24171799989039,\ +-4,-0.178054,-2.90851666666667,3.14757326110898,-0.679088271589764,-0.0422003020242846,-2.24172263682144,\ +-4,-0.178054,-2.88098585858586,3.14757241500811,-0.679090174516343,-0.0422052722627316,-2.24172749224123,\ +-4,-0.178054,-2.85345505050505,3.14757152807767,-0.679092169270838,-0.0422104823457565,-2.24173258196489,\ +-4,-0.178054,-2.82592424242424,3.14757059728918,-0.679094262664478,-0.0422159500635669,-2.24173792337165,\ +-4,-0.178054,-2.79839343434343,3.14756961930702,-0.679096462199196,-0.0422216950104001,-2.24174353560311,\ +-4,-0.178054,-2.77086262626263,3.14756859044857,-0.679098776157456,-0.0422277388191446,-2.24174943979239,\ +-4,-0.178054,-2.74333181818182,3.14756750663781,-0.679101213706464,-0.0422341054335558,-2.24175565933013,\ +-4,-0.178054,-2.71580101010101,3.14756636335133,-0.679103785019553,-0.0422408214252863,-2.24176222017414,\ +-4,-0.178054,-2.6882702020202,3.14756515555531,-0.679106501418114,-0.0422479163645817,-2.24176915121156,\ +-4,-0.178054,-2.66073939393939,3.14756387763131,-0.679109375538239,-0.0422554232555476,-2.24177648468405,\ +-4,-0.178054,-2.63320858585858,3.14756252328902,-0.67911242152727,-0.0422633790495006,-2.24178425668932,\ +-4,-0.178054,-2.60567777777778,3.14756108546257,-0.679115655276674,-0.0422718252532514,-2.24179250777531,\ +-4,-0.178054,-2.57814696969697,3.14755955618732,-0.67911909469939,-0.0422808086534525,-2.24180128364785,\ +-4,-0.178054,-2.55061616161616,3.14755792645218,-0.679122760061799,-0.0422903821836972,-2.2418106360177,\ +-4,-0.178054,-2.52308535353535,3.14755618602199,-0.679126674383351,-0.0423006059683002,-2.24182062362023,\ +-4,-0.178054,-2.49555454545454,3.14755432322234,-0.679130863920485,-0.0423115485862468,-2.24183131345016,\ +-4,-0.178054,-2.46802373737374,3.14755232467728,-0.67913535875635,-0.0423232886114577,-2.24184278226627,\ +-4,-0.178054,-2.44049292929293,3.14755017498776,-0.6791401935243,-0.0423359165025131,-2.2418551184374,\ +-4,-0.178054,-2.41296212121212,3.14754785633397,-0.679145408302007,-0.0423495369379693,-2.24186842422395,\ +-4,-0.178054,-2.38543131313131,3.14754534798027,-0.679151049725037,-0.0423642717248664,-2.24188281861904,\ +-4,-0.178054,-2.3579005050505,3.14754262565338,-0.679157172385369,-0.0423802634515585,-2.24189844091705,\ +-4,-0.178054,-2.3303696969697,3.14753966075425,-0.679163840603799,-0.042397680116997,-2.24191545523597,\ +-4,-0.178054,-2.30283888888889,3.14753641934954,-0.679171130698185,-0.0424167210551931,-2.24193405630493,\ +-4,-0.178054,-2.27530808080808,3.14753286086717,-0.679179133917388,-0.0424376245982897,-2.24195447695031,\ +-4,-0.178054,-2.24777727272727,3.14752893638922,-0.67918796028044,-0.0424606781041103,-2.24197699789162,\ +-4,-0.178054,-2.22024646464646,3.14752458638966,-0.679197743664571,-0.0424862312454993,-2.24200196072382,\ +-4,-0.178054,-2.19271565656565,3.14751973769403,-0.679208648643129,-0.0425147138702392,-2.24202978536469,\ +-4,-0.178054,-2.16518484848485,3.14751429932981,-0.679220879818257,-0.0425466603770123,-2.24206099386762,\ +-4,-0.178054,-2.13765404040404,3.1475081567648,-0.67923469477899,-0.0425827435605139,-2.24209624348494,\ +-4,-0.178054,-2.11012323232323,3.14750116375256,-0.679250422441527,-0.042623822514286,-2.24213637346404,\ +-4,-0.178054,-2.08259242424242,3.14749313053867,-0.679268489573792,-0.042671011910007,-2.24218247272632,\ +-4,-0.178054,-2.05506161616161,3.14748380638138,-0.67928946010756,-0.0427257846764796,-2.24223598017412,\ +-4,-0.178054,-2.02753080808081,3.14747285290905,-0.6793140950589,-0.0427901285053868,-2.24229883758096,\ +-4,-0.178054,-2,3.14745980217395,-0.679343446867578,-0.0428667922555829,-2.24237373030366,\ +-4,-0.146953,-4.72555,3.14759476949889,-0.679039898058217,-0.0420739555909365,-2.24159920914705,\ +-4,-0.146953,-4.69801919191919,3.14759463527096,-0.679040199944072,-0.0420747440841469,-2.24159997942509,\ +-4,-0.146953,-4.67048838383838,3.14759449851796,-0.679040507508969,-0.042075547410394,-2.24160076419351,\ +-4,-0.146953,-4.64295757575758,3.14759435916795,-0.679040820914672,-0.0420763659922086,-2.24160156386507,\ +-4,-0.146953,-4.61542676767677,3.14759421714624,-0.679041140329167,-0.0420772002683229,-2.24160237886837,\ +-4,-0.146953,-4.58789595959596,3.14759407237527,-0.679041465926923,-0.0420780506944551,-2.24160320964861,\ +-4,-0.146953,-4.56036515151515,3.1475939247744,-0.679041797889245,-0.0420789177441394,-2.24160405666838,\ +-4,-0.146953,-4.53283434343434,3.14759377425986,-0.679042136404589,-0.0420798019096054,-2.24160492040852,\ +-4,-0.146953,-4.50530353535354,3.1475936207445,-0.67904248166892,-0.0420807037027105,-2.24160580136909,\ +-4,-0.146953,-4.47777272727273,3.14759346413768,-0.679042833886113,-0.0420816236559267,-2.24160670007025,\ +-4,-0.146953,-4.45024191919192,3.14759330434508,-0.679043193268321,-0.0420825623233898,-2.24160761705333,\ +-4,-0.146953,-4.42271111111111,3.14759314126848,-0.679043560036423,-0.042083520282013,-2.24160855288192,\ +-4,-0.146953,-4.3951803030303,3.14759297480559,-0.679043934420475,-0.042084498132668,-2.24160950814302,\ +-4,-0.146953,-4.36764949494949,3.14759280484982,-0.67904431666018,-0.0420854965014432,-2.24161048344824,\ +-4,-0.146953,-4.34011868686869,3.14759263129008,-0.679044707005412,-0.0420865160409796,-2.24161147943516,\ +-4,-0.146953,-4.31258787878788,3.1475924540105,-0.679045105716755,-0.0420875574318934,-2.24161249676865,\ +-4,-0.146953,-4.28505707070707,3.14759227289021,-0.679045513066085,-0.0420886213842919,-2.24161353614243,\ +-4,-0.146953,-4.25752626262626,3.14759208780302,-0.679045929337184,-0.042089708639388,-2.24161459828059,\ +-4,-0.146953,-4.22999545454545,3.14759189861716,-0.679046354826407,-0.0420908199712222,-2.24161568393929,\ +-4,-0.146953,-4.20246464646465,3.14759170519498,-0.679046789843373,-0.042091956188501,-2.24161679390853,\ +-4,-0.146953,-4.17493383838384,3.14759150739254,-0.679047234711739,-0.0420931181365566,-2.24161792901416,\ +-4,-0.146953,-4.14740303030303,3.14759130505937,-0.679047689769969,-0.042094306699449,-2.24161909011977,\ +-4,-0.146953,-4.11987222222222,3.14759109803799,-0.679048155372231,-0.0420955228022056,-2.24162027812905,\ +-4,-0.146953,-4.09234141414141,3.14759088616356,-0.679048631889285,-0.0420967674132235,-2.24162149398801,\ +-4,-0.146953,-4.06481060606061,3.14759066926338,-0.679049119709487,-0.0420980415468415,-2.24162273868757,\ +-4,-0.146953,-4.0372797979798,3.14759044715653,-0.679049619239838,-0.0420993462660965,-2.2416240132662,\ +-4,-0.146953,-4.00974898989899,3.1475902196532,-0.679050130907112,-0.0421006826856823,-2.24162531881283,\ +-4,-0.146953,-3.98221818181818,3.14758998655433,-0.679050655159077,-0.0421020519751251,-2.24162665646999,\ +-4,-0.146953,-3.95468737373737,3.14758974765089,-0.679051192465808,-0.0421034553621974,-2.24162802743709,\ +-4,-0.146953,-3.92715656565657,3.14758950272335,-0.679051743321076,-0.042104894136591,-2.24162943297402,\ +-4,-0.146953,-3.89962575757576,3.14758925154096,-0.67905230824388,-0.0421063696538674,-2.24163087440501,\ +-4,-0.146953,-3.87209494949495,3.14758899386099,-0.679052887780068,-0.0421078833397206,-2.24163235312286,\ +-4,-0.146953,-3.84456414141414,3.14758872942802,-0.679053482504096,-0.0421094366945698,-2.24163387059328,\ +-4,-0.146953,-3.81703333333333,3.14758845797308,-0.679054093020929,-0.0421110312985212,-2.24163542835991,\ +-4,-0.146953,-3.78950252525252,3.1475881792127,-0.6790547199681,-0.0421126688167292,-2.24163702804943,\ +-4,-0.146953,-3.76197171717172,3.14758789284794,-0.679055364017912,-0.042114351005197,-2.24163867137725,\ +-4,-0.146953,-3.73444090909091,3.14758759856335,-0.679056025879872,-0.0421160797170564,-2.24164036015373,\ +-4,-0.146953,-3.7069101010101,3.14758729602576,-0.679056706303267,-0.0421178569093796,-2.24164209629071,\ +-4,-0.146953,-3.67937929292929,3.14758698488306,-0.67905740608001,-0.0421196846505687,-2.24164388180882,\ +-4,-0.146953,-3.65184848484848,3.14758666476282,-0.679058126047727,-0.0421215651283876,-2.24164571884527,\ +-4,-0.146953,-3.62431767676768,3.14758633527081,-0.679058867093074,-0.0421235006586964,-2.24164760966244,\ +-4,-0.146953,-3.59678686868687,3.14758599598936,-0.679059630155396,-0.0421254936949669,-2.2416495566571,\ +-4,-0.146953,-3.56925606060606,3.14758564647561,-0.679060416230702,-0.0421275468386586,-2.24165156237063,\ +-4,-0.146953,-3.54172525252525,3.1475852862596,-0.679061226375991,-0.0421296628505466,-2.24165362950003,\ +-4,-0.146953,-3.51419444444444,3.14758491484211,-0.679062061714004,-0.0421318446631066,-2.24165576091002,\ +-4,-0.146953,-3.48666363636364,3.1475845316924,-0.679062923438413,-0.0421340953940758,-2.24165795964632,\ +-4,-0.146953,-3.45913282828283,3.14758413624566,-0.679063812819505,-0.0421364183613146,-2.24166022895014,\ +-4,-0.146953,-3.43160202020202,3.14758372790024,-0.679064731210445,-0.0421388170991285,-2.24166257227414,\ +-4,-0.146953,-3.40407121212121,3.14758330601455,-0.679065680054123,-0.0421412953762104,-2.24166499329995,\ +-4,-0.146953,-3.3765404040404,3.14758286990383,-0.679066660890742,-0.0421438572153957,-2.24166749595749,\ +-4,-0.146953,-3.3490095959596,3.14758241883622,-0.67906767536615,-0.0421465069154552,-2.24167008444619,\ +-4,-0.146953,-3.32147878787879,3.14758195202891,-0.679068725241052,-0.0421492490751657,-2.24167276325862,\ +-4,-0.146953,-3.29394797979798,3.14758146864338,-0.679069812401213,-0.0421520886199456,-2.2416755372064,\ +-4,-0.146953,-3.26641717171717,3.14758096778057,-0.679070938868767,-0.0421550308313807,-2.24167841144911,\ +-4,-0.146953,-3.23888636363636,3.14758044847513,-0.679072106814759,-0.0421580813800103,-2.24168139152629,\ +-4,-0.146953,-3.21135555555555,3.14757990968935,-0.679073318573117,-0.0421612463618042,-2.24168448339309,\ +-4,-0.146953,-3.18382474747475,3.14757935030613,-0.67907457665622,-0.0421645323388222,-2.24168769345998,\ +-4,-0.146953,-3.15629393939394,3.14757876912131,-0.679075883772285,-0.0421679463846275,-2.2416910286371,\ +-4,-0.146953,-3.12876313131313,3.14757816483502,-0.679077242844818,-0.0421714961351176,-2.24169449638396,\ +-4,-0.146953,-3.10123232323232,3.14757753604193,-0.67907865703446,-0.0421751898455357,-2.2416981047651,\ +-4,-0.146953,-3.07370151515151,3.14757688122038,-0.679080129763513,-0.0421790364545655,-2.2417018625127,\ +-4,-0.146953,-3.04617070707071,3.14757619872008,-0.679081664743597,-0.0421830456565526,-2.24170577909715,\ +-4,-0.146953,-3.0186398989899,3.14757548674818,-0.679083266006876,-0.0421872279830807,-2.24170986480677,\ +-4,-0.146953,-2.99110909090909,3.14757474335361,-0.679084937941436,-0.0421915948953502,-2.24171413083796,\ +-4,-0.146953,-2.96357828282828,3.1475739664092,-0.679086685331434,-0.0421961588890637,-2.24171858939777,\ +-4,-0.146953,-2.93604747474747,3.1475731535913,-0.679088513402821,-0.0422009336138396,-2.24172325382049,\ +-4,-0.146953,-2.90851666666667,3.14757230235666,-0.679090427875543,-0.0422059340095583,-2.24172813870089,\ +-4,-0.146953,-2.88098585858586,3.14757140991577,-0.679092435023322,-0.0422111764625078,-2.24173326004669,\ +-4,-0.146953,-2.85345505050505,3.1475704732024,-0.679094541742341,-0.042216678984769,-2.24173863545387,\ +-4,-0.146953,-2.82592424242424,3.1475694888383,-0.679096755630401,-0.0422224614209757,-2.24174428430865,\ +-4,-0.146953,-2.79839343434343,3.1475684530926,-0.679099085078479,-0.0422285456874539,-2.24175022802105,\ +-4,-0.146953,-2.77086262626263,3.14756736183447,-0.67910153937701,-0.0422349560498084,-2.24175649029609,\ +-4,-0.146953,-2.74333181818182,3.1475662104781,-0.679104128839717,-0.0422417194463768,-2.24176309744983,\ +-4,-0.146953,-2.71580101010101,3.14756499391829,-0.679106864948497,-0.042248865866632,-2.24177007877894,\ +-4,-0.146953,-2.6882702020202,3.14756370645474,-0.679109760523629,-0.0422564287957501,-2.24177746699503,\ +-4,-0.146953,-2.66073939393939,3.14756234170274,-0.679112829924627,-0.0422644457392411,-2.24178529873721,\ +-4,-0.146953,-2.63320858585858,3.14756089248733,-0.679116089288414,-0.0422729588449877,-2.24179361517968,\ +-4,-0.146953,-2.60567777777778,3.14755935071706,-0.679119556813089,-0.0422820156444637,-2.24180246275588,\ +-4,-0.146953,-2.57814696969697,3.14755770723286,-0.679123253097891,-0.0422916699406514,-2.24181189402588,\ +-4,-0.146953,-2.55061616161616,3.14755595162596,-0.679127201552723,-0.0423019828776879,-2.24182196872131,\ +-4,-0.146953,-2.52308535353535,3.14755407201718,-0.679131428894458,-0.0423130242371653,-2.24183275501172,\ +-4,-0.146953,-2.49555454545454,3.14755205478786,-0.679135965752273,-0.0423248740191653,-2.24184433104909,\ +-4,-0.146953,-2.46802373737374,3.14754988424922,-0.679140847410965,-0.0423376243837705,-2.2418567868645,\ +-4,-0.146953,-2.44049292929293,3.1475475422337,-0.679146114730474,-0.0423513820527269,-2.24187022671427,\ +-4,-0.146953,-2.41296212121212,3.14754500758506,-0.679151815292281,-0.0423662713037199,-2.24188477200514,\ +-4,-0.146953,-2.38543131313131,3.14754225551757,-0.679158004840828,-0.0423824377351912,-2.24190056497204,\ +-4,-0.146953,-2.3579005050505,3.14753925680279,-0.679164749112462,-0.0424000530433865,-2.24191777334483,\ +-4,-0.146953,-2.3303696969697,3.14753597672743,-0.67917212617924,-0.0424193211440582,-2.24193659632853,\ +-4,-0.146953,-2.30283888888889,3.14753237374349,-0.679180229484886,-0.0424404861021266,-2.24195727234988,\ +-4,-0.146953,-2.27530808080808,3.14752839769901,-0.679189171823857,-0.0424638425245028,-2.24198008920999,\ +-4,-0.146953,-2.24777727272727,3.14752398748931,-0.67919909062384,-0.0424897493574537,-2.24200539756304,\ +-4,-0.146953,-2.22024646464646,3.14751906789442,-0.679210155058699,-0.042518648464809,-2.24203362906526,\ +-4,-0.146953,-2.19271565656565,3.14751354525328,-0.679222575777113,-0.042551090038145,-2.2420653211981,\ +-4,-0.146953,-2.16518484848485,3.14750730144366,-0.679236618442453,-0.0425877679614562,-2.242101151816,\ +-4,-0.146953,-2.13765404040404,3.14750018533859,-0.679252622947435,-0.0426295699977615,-2.24214198817354,\ +-4,-0.146953,-2.11012323232323,3.14749200041334,-0.679271031286751,-0.0426776505893974,-2.24218895804401,\ +-4,-0.146953,-2.08259242424242,3.1474824863148,-0.679292429008639,-0.0427335391250473,-2.24224355548533,\ +-4,-0.146953,-2.05506161616161,3.14747129065825,-0.679317608645395,-0.0427993056133571,-2.24230780268638,\ +-4,-0.146953,-2.02753080808081,3.14745792442031,-0.679347670037032,-0.0428778227175082,-2.24238450594826,\ +-4,-0.146953,-2,3.147441688602,-0.679384185270028,-0.0429731965573802,-2.24247767653441,\ +-4,-0.144435,-4.72555,3.1475947573253,-0.679039925437259,-0.0420740271020353,-2.24159927900615,\ +-4,-0.144435,-4.69801919191919,3.14759462286936,-0.679040227835964,-0.0420748169347513,-2.24160005059276,\ +-4,-0.144435,-4.67048838383838,3.14759448588185,-0.679040535928254,-0.0420756216384959,-2.24160083670685,\ +-4,-0.144435,-4.64295757575758,3.14759434629063,-0.679040849876457,-0.0420764416372499,-2.24160163776262,\ +-4,-0.144435,-4.61542676767677,3.14759420402075,-0.679041169849128,-0.0420772773712665,-2.24160245419014,\ +-4,-0.144435,-4.58789595959596,3.14759405899434,-0.679041496021357,-0.0420781292978577,-2.24160328643617,\ +-4,-0.144435,-4.56036515151515,3.14759391113052,-0.679041828575083,-0.0420789978922305,-2.24160413496495,\ +-4,-0.144435,-4.53283434343434,3.14759376034518,-0.679042167699437,-0.0420798836483702,-2.24160500025902,\ +-4,-0.144435,-4.50530353535354,3.1475936065509,-0.679042513591096,-0.0420807870799772,-2.24160588282024,\ +-4,-0.144435,-4.47777272727273,3.14759344965669,-0.679042866454664,-0.042081708721461,-2.24160678317066,\ +-4,-0.144435,-4.45024191919192,3.14759328956786,-0.679043226503082,-0.0420826491289934,-2.24160770185362,\ +-4,-0.144435,-4.42271111111111,3.14759312618586,-0.67904359395805,-0.0420836088816283,-2.24160863943479,\ +-4,-0.144435,-4.3951803030303,3.147592959408,-0.679043969050477,-0.0420845885824904,-2.24160959650334,\ +-4,-0.144435,-4.36764949494949,3.1475927891273,-0.679044352020983,-0.0420855888600399,-2.24161057367324,\ +-4,-0.144435,-4.34011868686869,3.14759261523222,-0.679044743120399,-0.042086610369416,-2.24161157158448,\ +-4,-0.144435,-4.31258787878788,3.14759243760647,-0.679045142610311,-0.0420876537938679,-2.24161259090454,\ +-4,-0.144435,-4.28505707070707,3.14759225612869,-0.679045550763662,-0.0420887198462793,-2.24161363232982,\ +-4,-0.144435,-4.25752626262626,3.14759207067218,-0.67904596786535,-0.0420898092707919,-2.24161469658729,\ +-4,-0.144435,-4.22999545454545,3.14759188110468,-0.67904639421292,-0.042090922844539,-2.2416157844361,\ +-4,-0.144435,-4.20246464646465,3.14759168728795,-0.679046830117245,-0.0420920613794926,-2.24161689666949,\ +-4,-0.144435,-4.17493383838384,3.14759148907748,-0.679047275903288,-0.042093225724439,-2.24161803411662,\ +-4,-0.144435,-4.14740303030303,3.14759128632217,-0.679047731910933,-0.0420944167670889,-2.24161919764471,\ +-4,-0.144435,-4.11987222222222,3.1475910788639,-0.679048198495811,-0.0420956354363344,-2.24162038816119,\ +-4,-0.144435,-4.09234141414141,3.14759086653709,-0.679048676030255,-0.0420968827046646,-2.24162160661608,\ +-4,-0.144435,-4.06481060606061,3.14759064916836,-0.679049164904282,-0.0420981595907547,-2.24162285400452,\ +-4,-0.144435,-4.0372797979798,3.14759042657596,-0.679049665526646,-0.0420994671622406,-2.24162413136949,\ +-4,-0.144435,-4.00974898989899,3.14759019856927,-0.679050178326002,-0.0421008065386952,-2.24162543980469,\ +-4,-0.144435,-3.98221818181818,3.14758996494835,-0.679050703752092,-0.0421021788948271,-2.24162678045769,\ +-4,-0.144435,-3.95468737373737,3.14758972550324,-0.679051242277102,-0.042103585463915,-2.2416281545333,\ +-4,-0.144435,-3.92715656565657,3.14758948001338,-0.679051794397047,-0.0421050275415064,-2.24162956329711,\ +-4,-0.144435,-3.89962575757576,3.14758922824697,-0.679052360633312,-0.0421065064893955,-2.24163100807948,\ +-4,-0.144435,-3.87209494949495,3.14758896996018,-0.679052941534282,-0.0421080237399149,-2.24163249027963,\ +-4,-0.144435,-3.84456414141414,3.14758870489636,-0.679053537677128,-0.042109580800559,-2.24163401137025,\ +-4,-0.144435,-3.81703333333333,3.14758843278525,-0.679054149669702,-0.0421111792589849,-2.2416355729023,\ +-4,-0.144435,-3.78950252525252,3.14758815334203,-0.679054778152622,-0.0421128207884075,-2.24163717651037,\ +-4,-0.144435,-3.76197171717172,3.14758786626628,-0.679055423801495,-0.0421145071534446,-2.24163882391828,\ +-4,-0.144435,-3.73444090909091,3.14758757124098,-0.679056087329349,-0.042116240216444,-2.24164051694538,\ +-4,-0.144435,-3.7069101010101,3.14758726793129,-0.679056769489251,-0.0421180219443435,-2.24164225751317,\ +-4,-0.144435,-3.67937929292929,3.14758695598328,-0.679057471077171,-0.0421198544161184,-2.24164404765257,\ +-4,-0.144435,-3.65184848484848,3.14758663502261,-0.679058192935061,-0.0421217398308741,-2.24164588951191,\ +-4,-0.144435,-3.62431767676768,3.14758630465297,-0.679058935954254,-0.0421236805166492,-2.24164778536544,\ +-4,-0.144435,-3.59678686868687,3.14758596445445,-0.679059701079101,-0.042125678940006,-2.24164973762275,\ +-4,-0.144435,-3.56925606060606,3.14758561398182,-0.679060489310998,-0.0421277377164892,-2.24165174883895,\ +-4,-0.144435,-3.54172525252525,3.1475852527625,-0.679061301712762,-0.0421298596220464,-2.24165382172586,\ +-4,-0.144435,-3.51419444444444,3.14758488029452,-0.679062139413398,-0.0421320476055157,-2.24165595916421,\ +-4,-0.144435,-3.48666363636364,3.14758449604412,-0.679063003613335,-0.0421343048022987,-2.24165816421695,\ +-4,-0.144435,-3.45913282828283,3.14758409944322,-0.679063895590175,-0.0421366345493515,-2.24166044014396,\ +-4,-0.144435,-3.43160202020202,3.14758368988667,-0.679064816704991,-0.0421390404016453,-2.2416627904181,\ +-4,-0.144435,-3.40407121212121,3.1475832667291,-0.679065768409255,-0.0421415261502669,-2.24166521874284,\ +-4,-0.144435,-3.3765404040404,3.14758282928154,-0.679066752252473,-0.0421440958423512,-2.24166772907186,\ +-4,-0.144435,-3.3490095959596,3.14758237680769,-0.67906776989059,-0.0421467538030718,-2.2416703256304,\ +-4,-0.144435,-3.32147878787879,3.14758190851982,-0.679068823095319,-0.042149504659932,-2.24167301293906,\ +-4,-0.144435,-3.29394797979798,3.14758142357413,-0.67906991376441,-0.0421523533696528,-2.24167579584007,\ +-4,-0.144435,-3.26641717171717,3.14758092106568,-0.67907104393307,-0.0421553052479791,-2.24167867952635,\ +-4,-0.144435,-3.23888636363636,3.14758040002281,-0.679072215786641,-0.0421583660027861,-2.24168166957393,\ +-4,-0.144435,-3.21135555555555,3.14757985940083,-0.679073431674702,-0.0421615417709155,-2.24168477197789,\ +-4,-0.144435,-3.18382474747475,3.14757929807502,-0.679074694126789,-0.0421648391592463,-2.24168799319247,\ +-4,-0.144435,-3.15629393939394,3.14757871483285,-0.679076005869967,-0.0421682652905742,-2.24169134017592,\ +-4,-0.144435,-3.12876313131313,3.1475781083652,-0.679077369848488,-0.0421718278549735,-2.24169482044068,\ +-4,-0.144435,-3.10123232323232,3.14757747725659,-0.679078789245862,-0.0421755351674178,-2.24169844210962,\ +-4,-0.144435,-3.07370151515151,3.14757681997414,-0.679080267509647,-0.0421793962325724,-2.24170221397939,\ +-4,-0.144435,-3.04617070707071,3.14757613485508,-0.67908180837943,-0.0421834208178159,-2.24170614559173,\ +-4,-0.144435,-3.0186398989899,3.14757542009282,-0.679083415918391,-0.0421876195357419,-2.24171024731408,\ +-4,-0.144435,-2.99110909090909,3.14757467372094,-0.67908509454909,-0.0421920039376058,-2.24171453043083,\ +-4,-0.144435,-2.96357828282828,3.14757389359518,-0.679086849094106,-0.0421965866194497,-2.24171900724706,\ +-4,-0.144435,-2.93604747474747,3.14757307737282,-0.679088684822291,-0.0422013813429593,-2.24172369120653,\ +-4,-0.144435,-2.90851666666667,3.14757222248926,-0.679090607501636,-0.042206403173493,-2.24172859702655,\ +-4,-0.144435,-2.88098585858586,3.14757132613101,-0.679092623459796,-0.0422116686382007,-2.24173374085251,\ +-4,-0.144435,-2.85345505050505,3.14757038520482,-0.679094739653658,-0.0422171959077299,-2.24173914043527,\ +-4,-0.144435,-2.82592424242424,3.14756939630201,-0.679096963749564,-0.0422230050057245,-2.24174481533592,\ +-4,-0.144435,-2.79839343434343,3.14756835565714,-0.679099304216096,-0.0422291180512094,-2.24175078716248,\ +-4,-0.144435,-2.77086262626263,3.14756725910024,-0.679101770431842,-0.0422355595400427,-2.24175707984496,\ +-4,-0.144435,-2.74333181818182,3.14756610200081,-0.679104372811,-0.0422423566729881,-2.24176371995572,\ +-4,-0.144435,-2.71580101010101,3.14756487920255,-0.679107122950387,-0.0422495397396685,-2.24177073708467,\ +-4,-0.144435,-2.6882702020202,3.1475635849465,-0.679110033802201,-0.0422571425698307,-2.24177816428005,\ +-4,-0.144435,-2.66073939393939,3.14756221278037,-0.679113119878006,-0.0422652030661085,-2.24178603856889,\ +-4,-0.144435,-2.63320858585858,3.14756075545093,-0.679116397490681,-0.0422737638359785,-2.24179440157438,\ +-4,-0.144435,-2.60567777777778,3.14755920477581,-0.679119885042868,-0.0422828729451539,-2.24180330025186,\ +-4,-0.144435,-2.57814696969697,3.1475575514897,-0.679123603372685,-0.0422925848205385,-2.24181278777091,\ +-4,-0.144435,-2.55061616161616,3.14755578505918,-0.679127576170404,-0.0423029613385635,-2.24182292457852,\ +-4,-0.144435,-2.52308535353535,3.14755389345799,-0.67913183048372,-0.0423140731448849,-2.24183377968837,\ +-4,-0.144435,-2.49555454545454,3.1475518628929,-0.67913639733437,-0.0423260012649348,-2.24184543225409,\ +-4,-0.144435,-2.46802373737374,3.14754967746679,-0.679141312475846,-0.0423388390829513,-2.24185797350263,\ +-4,-0.144435,-2.44049292929293,3.1475473187616,-0.679146617331306,-0.042352694791757,-2.24187150912741,\ +-4,-0.144435,-2.41296212121212,3.14754476531807,-0.679152360163839,-0.0423676944493087,-2.24188616227431,\ +-4,-0.144435,-2.38543131313131,3.14754199198091,-0.679158597549025,-0.042383985824904,-2.24190207729896,\ +-4,-0.144435,-2.3579005050505,3.14753896906733,-0.679165396245065,-0.0424017432837635,-2.24191942453856,\ +-4,-0.144435,-2.3303696969697,3.14753566130043,-0.67917283559161,-0.0424211740524588,-2.24193840643245,\ +-4,-0.144435,-2.30283888888889,3.14753202642621,-0.679181010620209,-0.0424425263431155,-2.24195926545878,\ +-4,-0.144435,-2.27530808080808,3.14752801339889,-0.679190036135562,-0.0424661000132135,-2.24198229454792,\ +-4,-0.144435,-2.24777727272727,3.14752355996885,-0.67920005214047,-0.0424922607349132,-2.24200785092457,\ +-4,-0.144435,-2.22024646464646,3.14751858943024,-0.679211231150483,-0.0425214591001789,-2.24203637477147,\ +-4,-0.144435,-2.19271565656565,3.14751300616596,-0.679223788213646,-0.0425542567912542,-2.2420684147953,\ +-4,-0.144435,-2.16518484848485,3.14750668943676,-0.679237994879075,-0.0425913630650659,-2.24210466386827,\ +-4,-0.144435,-2.13765404040404,3.14749948455054,-0.679254199057641,-0.0426336866271779,-2.24214600970372,\ +-4,-0.144435,-2.11012323232323,3.14749119002515,-0.679272853893601,-0.0426824110413944,-2.24219360852367,\ +-4,-0.144435,-2.08259242424242,3.14748153845031,-0.67929456080713,-0.0427391071521746,-2.24224899488414,\ +-4,-0.144435,-2.05506161616161,3.14747016711928,-0.679320135545306,-0.0428059056026703,-2.24231425020777,\ +-4,-0.144435,-2.02753080808081,3.14745657142613,-0.679350712994079,-0.0428857705922568,-2.24239227021727,\ +-4,-0.144435,-2,3.14744002795033,-0.679387920165413,-0.0429829517002378,-2.2424872063214,\ +-4,-0.142745,-4.72555,3.14759474914325,-0.679039943839151,-0.0420740751657913,-2.24159932595958,\ +-4,-0.142745,-4.69801919191919,3.14759461453393,-0.679040246582796,-0.0420748658994549,-2.24160009842632,\ +-4,-0.142745,-4.67048838383838,3.1475944773887,-0.679040555029819,-0.0420756715297192,-2.24160088544553,\ +-4,-0.142745,-4.64295757575758,3.14759433763524,-0.679040869342919,-0.0420764924815419,-2.24160168743234,\ +-4,-0.142745,-4.61542676767677,3.1475941951984,-0.67904118969104,-0.0420773291961992,-2.24160250481786,\ +-4,-0.142745,-4.58789595959596,3.14759405000019,-0.679041516249689,-0.042078182132078,-2.24160333804987,\ +-4,-0.142745,-4.56036515151515,3.14759390195948,-0.679041849201238,-0.0420790517655119,-2.24160418759369,\ +-4,-0.142745,-4.53283434343434,3.147593750992,-0.679042188735261,-0.0420799385916687,-2.24160505393306,\ +-4,-0.142745,-4.50530353535354,3.14759359701008,-0.67904253504892,-0.042080843125491,-2.24160593757103,\ +-4,-0.142745,-4.47777272727273,3.14759343992253,-0.679042888347312,-0.0420817659026929,-2.24160683903094,\ +-4,-0.142745,-4.45024191919192,3.14759327963443,-0.679043248843911,-0.0420827074808182,-2.24160775885745,\ +-4,-0.142745,-4.42271111111111,3.14759311604697,-0.679043616760959,-0.0420836684403635,-2.24160869761763,\ +-4,-0.142745,-4.3951803030303,3.14759294905721,-0.679043992329956,-0.0420846493859713,-2.24160965590219,\ +-4,-0.142745,-4.36764949494949,3.14759277855789,-0.679044375792129,-0.0420856509476999,-2.2416106343266,\ +-4,-0.142745,-4.34011868686869,3.14759260443722,-0.67904476739895,-0.042086673782372,-2.24161163353252,\ +-4,-0.142745,-4.31258787878788,3.14759242657856,-0.679045167412696,-0.042087718575011,-2.24161265418917,\ +-4,-0.142745,-4.28505707070707,3.14759224486024,-0.679045576107009,-0.0420887860403716,-2.24161369699475,\ +-4,-0.142745,-4.25752626262626,3.14759205915525,-0.679045993767564,-0.0420898769245697,-2.24161476267817,\ +-4,-0.142745,-4.22999545454545,3.14759186933095,-0.679046420692686,-0.0420909920068228,-2.24161585200065,\ +-4,-0.142745,-4.20246464646465,3.14759167524872,-0.679046857194094,-0.0420921321013044,-2.24161696575754,\ +-4,-0.142745,-4.17493383838384,3.14759147676369,-0.679047303597656,-0.0420932980591278,-2.24161810478029,\ +-4,-0.142745,-4.14740303030303,3.14759127372432,-0.67904776024418,-0.0420944907704654,-2.24161926993852,\ +-4,-0.142745,-4.11987222222222,3.14759106597203,-0.679048227490304,-0.0420957111668139,-2.2416204621422,\ +-4,-0.142745,-4.09234141414141,3.14759085334082,-0.679048705709415,-0.0420969602234215,-2.24162168234406,\ +-4,-0.142745,-4.06481060606061,3.14759063565675,-0.679049195292651,-0.042098238961887,-2.24162293154208,\ +-4,-0.142745,-4.0372797979798,3.14759041273756,-0.679049696649952,-0.0420995484529463,-2.24162421078228,\ +-4,-0.142745,-4.00974898989899,3.1475901843921,-0.67905021021123,-0.0421008898194626,-2.24162552116156,\ +-4,-0.142745,-3.98221818181818,3.1475899504198,-0.679050736427569,-0.0421022642396383,-2.24162686383093,\ +-4,-0.142745,-3.95468737373737,3.14758971061009,-0.679051275772574,-0.0421036729504652,-2.2416282399988,\ +-4,-0.142745,-3.92715656565657,3.14758946474174,-0.679051828743771,-0.0421051172514396,-2.24162965093464,\ +-4,-0.142745,-3.89962575757576,3.14758921258223,-0.679052395864157,-0.0421065985085592,-2.24163109797288,\ +-4,-0.142745,-3.87209494949495,3.14758895388695,-0.679052977683835,-0.0421081181586328,-2.24163258251716,\ +-4,-0.142745,-3.84456414141414,3.14758868839846,-0.679053574781791,-0.0421096777139295,-2.2416341060448,\ +-4,-0.142745,-3.81703333333333,3.14758841584563,-0.679054187767839,-0.0421112787671968,-2.24163567011176,\ +-4,-0.142745,-3.78950252525252,3.14758813594269,-0.679054817284671,-0.0421129229970879,-2.2416372763579,\ +-4,-0.142745,-3.76197171717172,3.14758784838827,-0.679055464010123,-0.0421146121740327,-2.24163892651277,\ +-4,-0.142745,-3.73444090909091,3.14758755286426,-0.6790561286596,-0.0421163481665956,-2.24164062240175,\ +-4,-0.142745,-3.7069101010101,3.14758724903469,-0.679056811988724,-0.0421181329483716,-2.24164236595286,\ +-4,-0.142745,-3.67937929292929,3.14758693654443,-0.679057514796188,-0.0421199686054697,-2.24164415920401,\ +-4,-0.142745,-3.65184848484848,3.14758661501784,-0.679058237926885,-0.0421218573446489,-2.24164600431098,\ +-4,-0.142745,-3.62431767676768,3.14758628405719,-0.67905898227528,-0.0421238015021667,-2.24164790355605,\ +-4,-0.142745,-3.59678686868687,3.14758594324108,-0.679059748789119,-0.0421258035534198,-2.24164985935744,\ +-4,-0.142745,-3.56925606060606,3.14758559212266,-0.679060538473437,-0.0421278661234603,-2.24165187427956,\ +-4,-0.142745,-3.54172525252525,3.14758523022761,-0.679061352394965,-0.0421299919984776,-2.24165395104423,\ +-4,-0.142745,-3.51419444444444,3.14758485705206,-0.67906219168694,-0.0421321841383551,-2.24165609254297,\ +-4,-0.142745,-3.48666363636364,3.14758447206024,-0.67906305755436,-0.0421344456904212,-2.24165830185038,\ +-4,-0.142745,-3.45913282828283,3.14758407468189,-0.679063951279761,-0.0421367800045253,-2.24166058223895,\ +-4,-0.142745,-3.43160202020202,3.14758366430945,-0.67906487422956,-0.0421391906495934,-2.24166293719512,\ +-4,-0.142745,-3.40407121212121,3.14758324029498,-0.679065827861018,-0.0421416814318354,-2.24166537043722,\ +-4,-0.142745,-3.3765404040404,3.14758280194673,-0.679066813729922,-0.0421442564147991,-2.24166788593489,\ +-4,-0.142745,-3.3490095959596,3.14758234852538,-0.67906783349905,-0.0421469199414914,-2.24167048793082,\ +-4,-0.142745,-3.32147878787879,3.14758187923986,-0.679068888947545,-0.0421496766588226,-2.24167318096457,\ +-4,-0.142745,-3.29394797979798,3.14758139324278,-0.67906998198125,-0.0421525315446619,-2.24167596989901,\ +-4,-0.142745,-3.26641717171717,3.14758088962529,-0.679071114644213,-0.0421554899378364,-2.24167885994965,\ +-4,-0.142745,-3.23888636363636,3.14758036741143,-0.679072289131435,-0.0421585575714517,-2.24168185671712,\ +-4,-0.142745,-3.21135555555555,3.14757982555177,-0.67907350780307,-0.0421617406099741,-2.24168496622352,\ +-4,-0.142745,-3.18382474747475,3.14757926291648,-0.679074773200253,-0.0421650456905781,-2.24168819495267,\ +-4,-0.142745,-3.15629393939394,3.14757867828734,-0.679076088062792,-0.0421684799693433,-2.24169154989535,\ +-4,-0.142745,-3.12876313131313,3.14757807034901,-0.679077455348966,-0.0421720511729751,-2.24169503859976,\ +-4,-0.142745,-3.10123232323232,3.14757743767911,-0.679078878257746,-0.0421757676568402,-2.24169866922825,\ +-4,-0.142745,-3.07370151515151,3.14757677873718,-0.679080360253785,-0.0421796384702294,-2.24170245062106,\ +-4,-0.142745,-3.04617070707071,3.14757609185204,-0.679081905095574,-0.0421836734299252,-2.24170639236819,\ +-4,-0.142745,-3.0186398989899,3.14757537520777,-0.679083516867283,-0.0421878832033293,-2.24171050489061,\ +-4,-0.142745,-2.99110909090909,3.14757462682758,-0.679085200014801,-0.0421922794026355,-2.24171479953228,\ +-4,-0.142745,-2.96357828282828,3.14757384455562,-0.679086959386706,-0.0421968746917962,-2.24171928866457,\ +-4,-0.142745,-2.93604747474747,3.14757302603631,-0.6790888002809,-0.0422016829083582,-2.24172398580538,\ +-4,-0.142745,-2.90851666666667,3.14757216869053,-0.679090728497896,-0.0422067192026356,-2.24172890575503,\ +-4,-0.142745,-2.88098585858586,3.14757126968858,-0.67909275040187,-0.042212000197171,-2.24173406475205,\ +-4,-0.142745,-2.85345505050505,3.14757032591893,-0.679094872990835,-0.0422175441700156,-2.24173948065227,\ +-4,-0.142745,-2.82592424242424,3.14756933395223,-0.679097103977563,-0.0422233712660919,-2.24174517313521,\ +-4,-0.142745,-2.79839343434343,3.1475682899997,-0.679099451883228,-0.0422295037417852,-2.24175116394313,\ +-4,-0.142745,-2.77086262626263,3.14756718986476,-0.679101926146168,-0.0422359662490257,-2.24175747715846,\ +-4,-0.142745,-2.74333181818182,3.14756602888665,-0.679104537248711,-0.0422427861665029,-2.24176413952741,\ +-4,-0.142745,-2.71580101010101,3.14756480187439,-0.679107296865599,-0.0422499939873979,-2.24177118083872,\ +-4,-0.142745,-2.6882702020202,3.14756350302925,-0.679110218038536,-0.0422576237752118,-2.24177863436899,\ +-4,-0.142745,-2.66073939393939,3.14756212585304,-0.679113315382256,-0.0422657137020653,-2.24178653740852,\ +-4,-0.142745,-2.63320858585858,3.14756066303945,-0.679116605329087,-0.0422743066874165,-2.24179493188527,\ +-4,-0.142745,-2.60567777777778,3.14755910634434,-0.679120106420567,-0.0422834511597581,-2.24180386510899,\ +-4,-0.142745,-2.57814696969697,3.14755744643024,-0.679123839657082,-0.0422932019698278,-2.24181339066328,\ +-4,-0.142745,-2.55061616161616,3.14755567267904,-0.679127828919436,-0.042303621491704,-2.24182356948131,\ +-4,-0.142745,-2.52308535353535,3.14755377296444,-0.679132101480237,-0.0423147809584871,-2.24183447115061,\ +-4,-0.142745,-2.49555454545454,3.14755173337451,-0.679136688628237,-0.0423267620930152,-2.2418461755061,\ +-4,-0.142745,-2.46802373737374,3.14754953787031,-0.67914162643586,-0.0423396591125552,-2.24185877458853,\ +-4,-0.142745,-2.44049292929293,3.1475471678633,-0.679146956709734,-0.042353581211507,-2.24187237506976,\ +-4,-0.142745,-2.41296212121212,3.14754460168774,-0.679152728177272,-0.0423686556605936,-2.24188710128042,\ +-4,-0.142745,-2.38543131313131,3.14754181393646,-0.679158997980587,-0.042385031708849,-2.2419030990217,\ +-4,-0.142745,-2.3579005050505,3.14753877461678,-0.679165833574885,-0.0424028855419598,-2.24192054040918,\ +-4,-0.142745,-2.3303696969697,3.14753544806704,-0.679173315165028,-0.0424224266463672,-2.24193963008989,\ +-4,-0.142745,-2.30283888888889,3.14753179155102,-0.679181538867213,-0.0424439060671666,-2.24196061330949,\ +-4,-0.142745,-2.27530808080808,3.14752775341183,-0.679190620860528,-0.0424676272515883,-2.24198378650519,\ +-4,-0.142745,-2.24777727272727,3.14752327061631,-0.679200702909997,-0.0424939604745438,-2.24200951139812,\ +-4,-0.142745,-2.22024646464646,3.14751826544073,-0.679211959820394,-0.0425233623071924,-2.24203823401205,\ +-4,-0.142745,-2.19271565656565,3.14751264092645,-0.679224609657056,-0.0425564023126145,-2.24207051075246,\ +-4,-0.142745,-2.16518484848485,3.14750627453698,-0.679238928011091,-0.042593800304983,-2.24210704480492,\ +-4,-0.142745,-2.13765404040404,3.14749900912833,-0.679255268307894,-0.042636479393215,-2.2421487379534,\ +-4,-0.142745,-2.11012323232323,3.14749063980307,-0.679274091372785,-0.0426856432032093,-2.24219676601855,\ +-4,-0.142745,-2.08259242424242,3.14748089427982,-0.679296009581388,-0.0427428911938646,-2.24225269150978,\ +-4,-0.142745,-2.05506161616161,3.14746940271117,-0.679321854740455,-0.0428103959544834,-2.2423186368269,\ +-4,-0.142745,-2.02753080808081,3.14745564968304,-0.679352786044128,-0.0428911851748012,-2.24239755971626,\ +-4,-0.142745,-2,3.14743889478256,-0.679390468720965,-0.0429896082517436,-2.24249370909832,\ +-4,-0.118257,-4.72555,3.1475946295348,-0.679040212844993,-0.0420747777799581,-2.24160001234248,\ +-4,-0.118257,-4.69801919191919,3.14759449267337,-0.679040520653769,-0.0420755817431953,-2.24160079773318,\ +-4,-0.118257,-4.67048838383838,3.14759435321182,-0.679040834310338,-0.0420764009802349,-2.24160159804483,\ +-4,-0.118257,-4.64295757575758,3.14759421107534,-0.679041153982945,-0.0420772359305116,-2.24160241370672,\ +-4,-0.118257,-4.61542676767677,3.14759406618625,-0.679041479846347,-0.0420780870504803,-2.24160324516477,\ +-4,-0.118257,-4.58789595959596,3.1475939184638,-0.679041812082141,-0.042078954814449,-2.24160409288231,\ +-4,-0.118257,-4.56036515151515,3.14759376782404,-0.679042150879096,-0.0420798397154581,-2.24160495734101,\ +-4,-0.118257,-4.53283434343434,3.1475936141797,-0.679042496433511,-0.0420807422662171,-2.24160583904174,\ +-4,-0.118257,-4.50530353535354,3.14759345743999,-0.679042848949588,-0.0420816630000936,-2.24160673850552,\ +-4,-0.118257,-4.47777272727273,3.14759329751042,-0.679043208639852,-0.0420826024721642,-2.24160765627462,\ +-4,-0.118257,-4.45024191919192,3.1475931342926,-0.679043575725555,-0.0420835612603313,-2.24160859291359,\ +-4,-0.118257,-4.42271111111111,3.14759296768407,-0.679043950437159,-0.0420845399665085,-2.24160954901045,\ +-4,-0.118257,-4.3951803030303,3.14759279757804,-0.679044333014775,-0.0420855392178798,-2.24161052517788,\ +-4,-0.118257,-4.36764949494949,3.14759262386326,-0.67904472370873,-0.0420865596682407,-2.24161152205457,\ +-4,-0.118257,-4.34011868686869,3.14759244642361,-0.679045122780071,-0.0420876019994242,-2.24161254030661,\ +-4,-0.118257,-4.31258787878788,3.14759226513804,-0.67904553050116,-0.0420886669228213,-2.24161358062896,\ +-4,-0.118257,-4.28505707070707,3.14759207988008,-0.679045947156304,-0.0420897551809978,-2.24161464374703,\ +-4,-0.118257,-4.25752626262626,3.14759189051775,-0.679046373042398,-0.0420908675494236,-2.24161573041836,\ +-4,-0.118257,-4.22999545454545,3.14759169691314,-0.679046808469647,-0.0420920048383141,-2.24161684143448,\ +-4,-0.118257,-4.20246464646465,3.14759149892204,-0.679047253762313,-0.0420931678945982,-2.24161797762272,\ +-4,-0.118257,-4.17493383838384,3.1475912963937,-0.67904770925951,-0.0420943576040224,-2.24161913984839,\ +-4,-0.118257,-4.14740303030303,3.14759108917033,-0.679048175316086,-0.0420955748933999,-2.24162032901687,\ +-4,-0.118257,-4.11987222222222,3.14759087708674,-0.679048652303528,-0.0420968207330192,-2.24162154607606,\ +-4,-0.118257,-4.09234141414141,3.14759065996994,-0.679049140610959,-0.0420980961392224,-2.2416227920188,\ +-4,-0.118257,-4.06481060606061,3.14759043763859,-0.67904964064619,-0.0420994021771717,-2.24162406788566,\ +-4,-0.118257,-4.0372797979798,3.14759020990254,-0.679050152836859,-0.0421007399638151,-2.24162537476777,\ +-4,-0.118257,-4.00974898989899,3.14758997656231,-0.679050677631658,-0.0421021106710739,-2.24162671381,\ +-4,-0.118257,-3.98221818181818,3.14758973740845,-0.679051215501624,-0.0421035155292646,-2.24162808621423,\ +-4,-0.118257,-3.95468737373737,3.14758949222094,-0.679051766941575,-0.0421049558307839,-2.24162949324299,\ +-4,-0.118257,-3.92715656565657,3.14758924076855,-0.679052332471609,-0.0421064329340741,-2.24163093622337,\ +-4,-0.118257,-3.89962575757576,3.14758898280804,-0.679052912638744,-0.042107948267895,-2.2416324165511,\ +-4,-0.118257,-3.87209494949495,3.14758871808343,-0.679053508018691,-0.042109503335936,-2.24163393569515,\ +-4,-0.118257,-3.84456414141414,3.14758844632515,-0.679054119217754,-0.0421110997217912,-2.24163549520251,\ +-4,-0.118257,-3.81703333333333,3.14758816724909,-0.679054746874884,-0.042112739094339,-2.24163709670353,\ +-4,-0.118257,-3.78950252525252,3.14758788055566,-0.679055391663915,-0.0421144232135622,-2.24163874191752,\ +-4,-0.118257,-3.76197171717172,3.14758758592865,-0.679056054295975,-0.0421161539368506,-2.24164043265896,\ +-4,-0.118257,-3.73444090909091,3.14758728303415,-0.679056735522107,-0.0421179332258336,-2.24164217084416,\ +-4,-0.118257,-3.7069101010101,3.14758697151918,-0.679057436136092,-0.0421197631537977,-2.24164395849853,\ +-4,-0.118257,-3.67937929292929,3.14758665101045,-0.679058156977552,-0.0421216459137459,-2.24164579776439,\ +-4,-0.118257,-3.65184848484848,3.14758632111275,-0.679058898935305,-0.0421235838271638,-2.24164769090961,\ +-4,-0.118257,-3.62431767676768,3.1475859814074,-0.679059662951014,-0.0421255793535705,-2.24164964033689,\ +-4,-0.118257,-3.59678686868687,3.14758563145042,-0.67906045002317,-0.0421276351009309,-2.24165164859394,\ +-4,-0.118257,-3.56925606060606,3.14758527077066,-0.679061261211461,-0.0421297538370285,-2.24165371838461,\ +-4,-0.118257,-3.54172525252525,3.14758489886761,-0.679062097641521,-0.0421319385018964,-2.24165585258101,\ +-4,-0.118257,-3.51419444444444,3.14758451520915,-0.679062960510144,-0.0421341922214303,-2.24165805423684,\ +-4,-0.118257,-3.48666363636364,3.14758411922896,-0.679063851090998,-0.0421365183223101,-2.24166032660191,\ +-4,-0.118257,-3.45913282828283,3.14758371032376,-0.679064770740894,-0.0421389203483858,-2.24166267313821,\ +-4,-0.118257,-3.43160202020202,3.14758328785023,-0.679065720906688,-0.0421414020786917,-2.24166509753748,\ +-4,-0.118257,-3.40407121212121,3.14758285112164,-0.679066703132877,-0.0421439675472857,-2.24166760374057,\ +-4,-0.118257,-3.3765404040404,3.14758239940413,-0.679067719069981,-0.0421466210651306,-2.24167019595888,\ +-4,-0.118257,-3.3490095959596,3.14758193191257,-0.679068770483775,-0.0421493672442687,-2.24167287869787,\ +-4,-0.118257,-3.32147878787879,3.14758144780602,-0.679069859265568,-0.0421522110245729,-2.24167565678333,\ +-4,-0.118257,-3.29394797979798,3.1475809461827,-0.679070987443529,-0.0421551577034013,-2.24167853539024,\ +-4,-0.118257,-3.26641717171717,3.14758042607437,-0.679072157195299,-0.0421582129685325,-2.24168152007496,\ +-4,-0.118257,-3.23888636363636,3.14757988644005,-0.679073370862037,-0.0421613829348072,-2.24168461681109,\ +-4,-0.118257,-3.21135555555555,3.14757932615916,-0.679074630964041,-0.0421646741849771,-2.24168783202931,\ +-4,-0.118257,-3.18382474747475,3.14757874402368,-0.679075940218229,-0.0421680938153352,-2.24169117266198,\ +-4,-0.118257,-3.15629393939394,3.14757813872942,-0.679077301557687,-0.0421716494867889,-2.24169464619302,\ +-4,-0.118257,-3.12876313131313,3.14757750886644,-0.679078718153613,-0.0421753494821548,-2.24169826071391,\ +-4,-0.118257,-3.10123232323232,3.14757685290784,-0.679080193439965,-0.0421792027705737,-2.2417020249866,\ +-4,-0.118257,-3.07370151515151,3.14757616919758,-0.679081731141273,-0.0421832190801018,-2.24170594851441,\ +-4,-0.118257,-3.04617070707071,3.14757545593651,-0.679083335304015,-0.0421874089797128,-2.24171004162216,\ +-4,-0.118257,-3.0186398989899,3.14757471116642,-0.679085010332191,-0.0421917839721712,-2.24171431554687,\ +-4,-0.118257,-2.99110909090909,3.14757393275227,-0.679086761027686,-0.0421963565994854,-2.24171878254084,\ +-4,-0.118257,-2.96357828282828,3.14757311836163,-0.679088592636252,-0.0422011405629904,-2.24172345598887,\ +-4,-0.118257,-2.93604747474747,3.14757226544137,-0.679090510900002,-0.0422061508604679,-2.24172835054226,\ +-4,-0.118257,-2.90851666666667,3.14757137119096,-0.679092522117545,-0.0422114039432015,-2.24173348227229,\ +-4,-0.118257,-2.88098585858586,3.14757043253164,-0.679094633213074,-0.0422169178964324,-2.24173886884638,\ +-4,-0.118257,-2.85345505050505,3.14756944607118,-0.679096851816011,-0.0422227126473806,-2.24174452973141,\ +-4,-0.118257,-2.82592424242424,3.14756840806271,-0.679099186353127,-0.0422288102058797,-2.24175048642876,\ +-4,-0.118257,-2.79839343434343,3.14756731435739,-0.679101646155527,-0.0422352349437455,-2.24175676274723,\ +-4,-0.118257,-2.77086262626263,3.14756616034877,-0.679104241583273,-0.0422420139203564,-2.2417633851211,\ +-4,-0.118257,-2.74333181818182,3.14756494090811,-0.679106984171268,-0.0422491772636137,-2.24177038298226,\ +-4,-0.118257,-2.71580101010101,3.14756365030802,-0.67910988680062,-0.0422567586175942,-2.24177778919758,\ +-4,-0.118257,-2.6882702020202,3.14756228213266,-0.679112963900957,-0.0422647956709249,-2.24178564058504,\ +-4,-0.118257,-2.66073939393939,3.14756082917097,-0.679116231690329,-0.0422733307833887,-2.24179397852584,\ +-4,-0.118257,-2.63320858585858,3.14755928328959,-0.679119708461131,-0.0422824117327479,-2.24180284969403,\ +-4,-0.118257,-2.60567777777778,3.14755763528048,-0.679123414922711,-0.0422920926095839,-2.24181230693063,\ +-4,-0.118257,-2.57814696969697,3.1475558746774,-0.679127374614195,-0.0423024348955441,-2.24182241029699,\ +-4,-0.118257,-2.55061616161616,3.14755398953341,-0.679131614404912,-0.0423135087704103,-2.24183322835165,\ +-4,-0.118257,-2.52308535353535,3.14755196614941,-0.679136165104916,-0.04232539470671,-2.24184483970811,\ +-4,-0.118257,-2.49555454545454,3.14754978874065,-0.679141062214926,-0.0423381854284879,-2.24185733494838,\ +-4,-0.118257,-2.46802373737374,3.14754743902416,-0.679146346854313,-0.0423519883350937,-2.24187081899077,\ +-4,-0.118257,-2.44049292929293,3.14754489570417,-0.679152066918461,-0.0423669285240899,-2.24188541404292,\ +-4,-0.118257,-2.41296212121212,3.14754213382478,-0.679158278534502,-0.0423831525934774,-2.24190126331622,\ +-4,-0.118257,-2.38543131313131,3.14753912394838,-0.679165047909205,-0.042400833468159,-2.24191853574082,\ +-4,-0.118257,-2.3579005050505,3.14753583110231,-0.679172453698009,-0.0424201765876658,-2.24193743201032,\ +-4,-0.118257,-2.3303696969697,3.14753221341369,-0.679180590075249,-0.0424414279251559,-2.24195819241563,\ +-4,-0.118257,-2.30283888888889,3.14752822031944,-0.679189570760086,-0.0424648845027995,-2.24198110711729,\ +-4,-0.118257,-2.27530808080808,3.14752379018833,-0.679199534364407,-0.0424909083598295,-2.24200652979103,\ +-4,-0.118257,-2.24777727272727,3.14751884711735,-0.679210651598258,-0.0425199453724399,-2.24203489601271,\ +-4,-0.118257,-2.22024646464646,3.14751329654657,-0.679223135131968,-0.0425525510125361,-2.24206674842218,\ +-4,-0.118257,-2.19271565656565,3.14750701915166,-0.679237253332458,-0.0425894262254923,-2.24210277177208,\ +-4,-0.118257,-2.16518484848485,3.14749986216882,-0.67925334977374,-0.0426314683894689,-2.24214384271004,\ +-4,-0.118257,-2.13765404040404,3.1474916267985,-0.679271871566722,-0.0426798453098108,-2.24219110206367,\ +-4,-0.118257,-2.11012323232323,3.14748204945129,-0.679293411538286,-0.0427361053862346,-2.24224606246271,\ +-4,-0.118257,-2.08259242424242,3.14747077301236,-0.67931877285901,-0.0428023464134209,-2.2423107732402,\ +-4,-0.118257,-2.05506161616161,3.14745730132361,-0.679349071415214,-0.0428814829657798,-2.24238808164027,\ +-4,-0.118257,-2.02753080808081,3.14744092421562,-0.679385904416343,-0.0429776867816475,-2.24248206302894,\ +-4,-0.118257,-2,3.147420588172,-0.679431641277689,-0.0430971465175526,-2.24259876309712,\ +-4,-0.0759167,-4.72555,3.14759441798145,-0.679040688639933,-0.0420760205048923,-2.24160122635894,\ +-4,-0.0759167,-4.69801919191919,3.14759427709048,-0.679041005511359,-0.0420768481387858,-2.24160203487347,\ +-4,-0.0759167,-4.67048838383838,3.14759413348315,-0.679041328491996,-0.0420776917292874,-2.24160285897598,\ +-4,-0.0759167,-4.64295757575758,3.14759398708016,-0.679041657760248,-0.0420785517423491,-2.24160369912168,\ +-4,-0.0759167,-4.61542676767677,3.14759383779904,-0.679041993501517,-0.0420794286622426,-2.24160455578364,\ +-4,-0.0759167,-4.58789595959596,3.14759368555413,-0.679042335908582,-0.0420803229924696,-2.24160542945373,\ +-4,-0.0759167,-4.56036515151515,3.14759353025622,-0.679042685181946,-0.0420812352567251,-2.24160632064355,\ +-4,-0.0759167,-4.53283434343434,3.14759337181259,-0.679043041530234,-0.0420821659999194,-2.24160722988543,\ +-4,-0.0759167,-4.50530353535354,3.14759321012668,-0.679043405170615,-0.0420831157892652,-2.24160815773346,\ +-4,-0.0759167,-4.47777272727273,3.14759304509791,-0.679043776329228,-0.0420840852154287,-2.24160910476468,\ +-4,-0.0759167,-4.45024191919192,3.14759287662155,-0.679044155241671,-0.0420850748937555,-2.24161007158021,\ +-4,-0.0759167,-4.42271111111111,3.14759270458842,-0.679044542153485,-0.0420860854655732,-2.24161105880657,\ +-4,-0.0759167,-4.3951803030303,3.14759252888468,-0.679044937320689,-0.0420871175995759,-2.241612067097,\ +-4,-0.0759167,-4.36764949494949,3.14759234939159,-0.679045341010344,-0.0420881719933016,-2.24161309713293,\ +-4,-0.0759167,-4.34011868686869,3.14759216598523,-0.67904575350116,-0.0420892493747031,-2.24161414962548,\ +-4,-0.0759167,-4.31258787878788,3.14759197853622,-0.679046175084126,-0.0420903505038243,-2.24161522531716,\ +-4,-0.0759167,-4.28505707070707,3.14759178690939,-0.679046606063211,-0.0420914761745887,-2.24161632498353,\ +-4,-0.0759167,-4.25752626262626,3.14759159096352,-0.679047046756081,-0.0420926272167078,-2.24161744943516,\ +-4,-0.0759167,-4.22999545454545,3.1475913905509,-0.679047497494885,-0.0420938044977213,-2.24161859951953,\ +-4,-0.0759167,-4.20246464646465,3.14759118551706,-0.679047958627092,-0.042095008925177,-2.24161977612322,\ +-4,-0.0759167,-4.17493383838384,3.14759097570027,-0.67904843051638,-0.0420962414489642,-2.24162098017418,\ +-4,-0.0759167,-4.14740303030303,3.14759076093122,-0.679048913543592,-0.0420975030638133,-2.24162221264417,\ +-4,-0.0759167,-4.11987222222222,3.14759054103245,-0.679049408107772,-0.0420987948119714,-2.24162347455134,\ +-4,-0.0759167,-4.09234141414141,3.14759031581801,-0.679049914627253,-0.0421001177860754,-2.2416247669631,\ +-4,-0.0759167,-4.06481060606061,3.14759008509275,-0.679050433540833,-0.0421014731322343,-2.24162609099909,\ +-4,-0.0759167,-4.0372797979798,3.14758984865191,-0.679050965309059,-0.0421028620533397,-2.2416274478344,\ +-4,-0.0759167,-4.00974898989899,3.14758960628045,-0.679051510415581,-0.0421042858126274,-2.24162883870309,\ +-4,-0.0759167,-3.98221818181818,3.14758935775239,-0.679052069368617,-0.0421057457375102,-2.2416302649019,\ +-4,-0.0759167,-3.95468737373737,3.14758910283014,-0.679052642702534,-0.0421072432237038,-2.24163172779431,\ +-4,-0.0759167,-3.92715656565657,3.14758884126372,-0.679053230979559,-0.0421087797396789,-2.24163322881486,\ +-4,-0.0759167,-3.89962575757576,3.14758857278993,-0.679053834791611,-0.0421103568314643,-2.24163476947388,\ +-4,-0.0759167,-3.87209494949495,3.14758829713152,-0.67905445476229,-0.0421119761278348,-2.2416363513625,\ +-4,-0.0759167,-3.84456414141414,3.14758801399616,-0.679055091549026,-0.0421136393459234,-2.24163797615819,\ +-4,-0.0759167,-3.81703333333333,3.14758772307547,-0.679055745845399,-0.0421153482972944,-2.24163964563067,\ +-4,-0.0759167,-3.78950252525252,3.14758742404384,-0.679056418383665,-0.0421171048945254,-2.24164136164833,\ +-4,-0.0759167,-3.76197171717172,3.14758711655732,-0.679057109937497,-0.0421189111583477,-2.24164312618523,\ +-4,-0.0759167,-3.73444090909091,3.14758680025213,-0.679057821324935,-0.0421207692254014,-2.24164494132863,\ +-4,-0.0759167,-3.7069101010101,3.14758647474342,-0.679058553411622,-0.0421226813566652,-2.2416468092873,\ +-4,-0.0759167,-3.67937929292929,3.14758613962355,-0.679059307114331,-0.042124649946637,-2.2416487324004,\ +-4,-0.0759167,-3.65184848484848,3.14758579446046,-0.679060083404778,-0.042126677533335,-2.24165071314734,\ +-4,-0.0759167,-3.62431767676768,3.14758543879581,-0.679060883313805,-0.0421287668092166,-2.24165275415836,\ +-4,-0.0759167,-3.59678686868687,3.14758507214293,-0.67906170793596,-0.0421309206331051,-2.24165485822625,\ +-4,-0.0759167,-3.56925606060606,3.1475846939846,-0.679062558434469,-0.0421331420432418,-2.24165702831907,\ +-4,-0.0759167,-3.54172525252525,3.14758430377066,-0.679063436046738,-0.0421354342715851,-2.2416592675941,\ +-4,-0.0759167,-3.51419444444444,3.14758390091524,-0.679064342090341,-0.0421378007594993,-2.2416615794132,\ +-4,-0.0759167,-3.48666363636364,3.14758348479394,-0.679065277969631,-0.0421402451749965,-2.24166396735969,\ +-4,-0.0759167,-3.45913282828283,3.14758305474053,-0.679066245182991,-0.0421427714317031,-2.24166643525674,\ +-4,-0.0759167,-3.43160202020202,3.14758261004342,-0.679067245330857,-0.0421453837097723,-2.24166898718795,\ +-4,-0.0759167,-3.40407121212121,3.14758214994168,-0.679068280124536,-0.0421480864789631,-2.24167162751983,\ +-4,-0.0759167,-3.3765404040404,3.14758167362077,-0.679069351395995,-0.0421508845241642,-2.24167436092673,\ +-4,-0.0759167,-3.3490095959596,3.1475811802077,-0.679070461108666,-0.0421537829736638,-2.24167719241845,\ +-4,-0.0759167,-3.32147878787879,3.14758066876565,-0.67907161136948,-0.0421567873305179,-2.24168012737095,\ +-4,-0.0759167,-3.29394797979798,3.14758013828809,-0.679072804442191,-0.0421599035074221,-2.24168317156031,\ +-4,-0.0759167,-3.26641717171717,3.14757958769213,-0.679074042762267,-0.0421631378655517,-2.24168633120076,\ +-4,-0.0759167,-3.23888636363636,3.14757901581116,-0.679075328953477,-0.0421664972579035,-2.24168961298699,\ +-4,-0.0759167,-3.21135555555555,3.1475784213866,-0.679076665846444,-0.0421699890777654,-2.2416930241415,\ +-4,-0.0759167,-3.18382474747475,3.14757780305863,-0.67907805649945,-0.0421736213130338,-2.24169657246764,\ +-4,-0.0759167,-3.15629393939394,3.14757715935586,-0.679079504221784,-0.0421774026072158,-2.24170026640925,\ +-4,-0.0759167,-3.12876313131313,3.14757648868356,-0.679081012600039,-0.0421813423281014,-2.2417041151177,\ +-4,-0.0759167,-3.10123232323232,3.14757578931054,-0.679082585527774,-0.0421854506452493,-2.24170812852764,\ +-4,-0.0759167,-3.07370151515151,3.14757505935419,-0.679084227239078,-0.0421897386176416,-2.24171231744256,\ +-4,-0.0759167,-3.04617070707071,3.14757429676355,-0.679085942346627,-0.0421942182930908,-2.24171669363197,\ +-4,-0.0759167,-3.0186398989899,3.14757349930014,-0.679087735884966,-0.0421989028212886,-2.24172126994176,\ +-4,-0.0759167,-2.99110909090909,3.14757266451588,-0.679089613359876,-0.042203806582721,-2.24172606042024,\ +-4,-0.0759167,-2.96357828282828,3.14757178972813,-0.679091580804808,-0.0422089453361227,-2.24173108046208,\ +-4,-0.0759167,-2.93604747474747,3.1475708719908,-0.679093644845667,-0.0422143363876462,-2.24173634697365,\ +-4,-0.0759167,-2.90851666666667,3.14756990806124,-0.679095812775363,-0.0422199987855756,-2.24174187856317,\ +-4,-0.0759167,-2.88098585858586,3.14756889436193,-0.6790980926399,-0.0422259535452027,-2.24174769576048,\ +-4,-0.0759167,-2.85345505050505,3.14756782693616,-0.679100493338162,-0.0422322239094565,-2.24175382127156,\ +-4,-0.0759167,-2.82592424242424,3.14756670139636,-0.679103024738007,-0.0422388356521033,-2.24176028027477,\ +-4,-0.0759167,-2.79839343434343,3.14756551286387,-0.679105697811825,-0.0422458174318518,-2.24176710076677,\ +-4,-0.0759167,-2.77086262626263,3.14756425589821,-0.679108524795546,-0.0422532012076255,-2.24177431396819,\ +-4,-0.0759167,-2.74333181818182,3.14756292441382,-0.679111519375905,-0.0422610227276929,-2.24178195480146,\ +-4,-0.0759167,-2.71580101010101,3.14756151158156,-0.679114696912032,-0.0422693221084483,-2.24179006245625,\ +-4,-0.0759167,-2.6882702020202,3.14756000971151,-0.679118074698956,-0.042278144522619,-2.24179868106174,\ +-4,-0.0759167,-2.66073939393939,3.14755841011298,-0.679121672282507,-0.0422875410218187,-2.24180786049018,\ +-4,-0.0759167,-2.63320858585858,3.14755670292623,-0.679125511837814,-0.0422975695250756,-2.2418176573226,\ +-4,-0.0759167,-2.60567777777778,3.14755487691899,-0.679129618626786,-0.0423082960137645,-2.24182813601613,\ +-4,-0.0759167,-2.57814696969697,3.14755291923915,-0.679134021554581,-0.0423197959850396,-2.24183937032383,\ +-4,-0.0759167,-2.55061616161616,3.14755081511168,-0.679138753850964,-0.0423321562314433,-2.24185144503325,\ +-4,-0.0759167,-2.52308535353535,3.1475485474652,-0.679143853910491,-0.042345477035417,-2.24186445811017,\ +-4,-0.0759167,-2.49555454545454,3.14754609646763,-0.679149366336529,-0.0423598748961221,-2.24187852336247,\ +-4,-0.0759167,-2.46802373737374,3.14754343894474,-0.679155343249154,-0.042375485945563,-2.24189377377735,\ +-4,-0.0759167,-2.44049292929293,3.14754054764515,-0.679161845938232,-0.0423924702662378,-2.24191036573921,\ +-4,-0.0759167,-2.41296212121212,3.14753739030236,-0.679168946972808,-0.0424110174006543,-2.24192848441187,\ +-4,-0.0759167,-2.38543131313131,3.14753392842555,-0.679176732920885,-0.042431353455069,-2.24194835067826,\ +-4,-0.0759167,-2.3579005050505,3.14753011572255,-0.679185307896046,-0.0424537503629027,-2.24197023018981,\ +-4,-0.0759167,-2.3303696969697,3.1475258960179,-0.679194798239882,-0.0424785381147324,-2.2419944453139,\ +-4,-0.0759167,-2.30283888888889,3.14752120046663,-0.679205358788506,-0.0425061211257285,-2.24202139112321,\ +-4,-0.0759167,-2.27530808080808,3.14751594376897,-0.6792171813857,-0.0425370004711142,-2.2420515571175,\ +-4,-0.0759167,-2.24777727272727,3.14751001894184,-0.679230506642172,-0.0425718046000422,-2.24208555722798,\ +-4,-0.0759167,-2.22024646464646,3.1475032899614,-0.679245640482907,-0.0426113325554919,-2.24212417203875,\ +-4,-0.0759167,-2.19271565656565,3.14749558119165,-0.679262977922774,-0.0426566160735772,-2.24216840945153,\ +-4,-0.0759167,-2.16518484848485,3.14748666183264,-0.679283038043323,-0.0427090109391762,-2.2422195939309,\ +-4,-0.0759167,-2.13765404040404,3.1474762224176,-0.679306516852062,-0.0427703350486221,-2.24227950137753,\ +-4,-0.0759167,-2.11012323232323,3.14746383817449,-0.679334369684219,-0.0428430836342429,-2.24235056938081,\ +-4,-0.0759167,-2.08259242424242,3.1474489098075,-0.679367944388516,-0.0429307771311376,-2.24243623704941,\ +-4,-0.0759167,-2.05506161616161,3.14743056360433,-0.679409205991175,-0.0430385479753051,-2.24254151825371,\ +-4,-0.0759167,-2.02753080808081,3.1474074740629,-0.679461135617931,-0.0431741825447832,-2.24267401949679,\ +-4,-0.0759167,-2,3.14737752851528,-0.679528484773245,-0.0433500912554076,-2.24284586449853,\ +-4,-0.0751524,-4.72555,3.14759441410606,-0.679040697355892,-0.042076043270031,-2.24160124859817,\ +-4,-0.0751524,-4.69801919191919,3.14759427314072,-0.67904101439457,-0.0420768713407744,-2.24160205753946,\ +-4,-0.0751524,-4.67048838383838,3.14759412945687,-0.679041337547326,-0.042077715380822,-2.24160288208114,\ +-4,-0.0751524,-4.64295757575758,3.1475939829751,-0.67904166699274,-0.0420785758566226,-2.24160372267888,\ +-4,-0.0751524,-4.61542676767677,3.14759383361288,-0.679042002916429,-0.0420794532529693,-2.24160457980629,\ +-4,-0.0751524,-4.58789595959596,3.14759368128442,-0.679042345511369,-0.0420803480739111,-2.24160545395576,\ +-4,-0.0751524,-4.56036515151515,3.14759352590046,-0.679042694978291,-0.0420812608437174,-2.24160634563946,\ +-4,-0.0751524,-4.53283434343434,3.14759336736815,-0.679043051526046,-0.0420821921079033,-2.24160725539028,\ +-4,-0.0751524,-4.50530353535354,3.14759320559079,-0.679043415372051,-0.0420831424343163,-2.24160818376298,\ +-4,-0.0751524,-4.47777272727273,3.14759304046776,-0.679043786742699,-0.0420841124142915,-2.24160913133521,\ +-4,-0.0751524,-4.45024191919192,3.14759287189415,-0.679044165873859,-0.0420851026638774,-2.24161009870881,\ +-4,-0.0751524,-4.42271111111111,3.14759269976067,-0.67904455301135,-0.0420861138251421,-2.241611086511,\ +-4,-0.0751524,-4.3951803030303,3.14759252395336,-0.679044948411494,-0.0420871465675601,-2.24161209539578,\ +-4,-0.0751524,-4.36764949494949,3.14759234435334,-0.679045352341669,-0.0420882015894928,-2.24161312604541,\ +-4,-0.0751524,-4.34011868686869,3.14759216083651,-0.679045765080911,-0.04208927961976,-2.24161417917185,\ +-4,-0.0751524,-4.31258787878788,3.14759197327336,-0.679046186920564,-0.0420903814193216,-2.24161525551847,\ +-4,-0.0751524,-4.28505707070707,3.14759178152857,-0.679046618164968,-0.0420915077830686,-2.24161635586182,\ +-4,-0.0751524,-4.25752626262626,3.14759158546072,-0.679047059132179,-0.0420926595417346,-2.24161748101344,\ +-4,-0.0751524,-4.22999545454545,3.14759138492192,-0.679047510154758,-0.0420938375639394,-2.24161863182187,\ +-4,-0.0751524,-4.20246464646465,3.14759117975751,-0.679047971580611,-0.0420950427583743,-2.24161980917482,\ +-4,-0.0751524,-4.17493383838384,3.14759096980557,-0.679048443773883,-0.042096276076139,-2.24162101400143,\ +-4,-0.0751524,-4.14740303030303,3.14759075489653,-0.679048927115911,-0.0420975385132458,-2.24162224727467,\ +-4,-0.0751524,-4.11987222222222,3.14759053485276,-0.679049422006253,-0.0420988311133014,-2.24162351001406,\ +-4,-0.0751524,-4.09234141414141,3.147590309488,-0.679049928863794,-0.0421001549703843,-2.24162480328841,\ +-4,-0.0751524,-4.06481060606061,3.14759007860688,-0.679050448127921,-0.0421015112321341,-2.24162612821884,\ +-4,-0.0751524,-4.0372797979798,3.14758984200434,-0.679050980259802,-0.0421029011030682,-2.24162748598203,\ +-4,-0.0751524,-4.00974898989899,3.14758959946506,-0.679051525743753,-0.0421043258481518,-2.24162887781374,\ +-4,-0.0751524,-3.98221818181818,3.14758935076276,-0.679052085088687,-0.0421057867966358,-2.24163030501251,\ +-4,-0.0751524,-3.95468737373737,3.14758909565949,-0.67905265882973,-0.0421072853461946,-2.24163176894372,\ +-4,-0.0751524,-3.92715656565657,3.14758883390492,-0.679053247529903,-0.0421088229673854,-2.24163327104395,\ +-4,-0.0751524,-3.89962575757576,3.14758856523549,-0.679053851781978,-0.0421104012084624,-2.24163481282571,\ +-4,-0.0751524,-3.87209494949495,3.14758828937352,-0.679054472210463,-0.0421120217005755,-2.24163639588245,\ +-4,-0.0751524,-3.84456414141414,3.14758800602626,-0.67905510947376,-0.0421136861633947,-2.24163802189412,\ +-4,-0.0751524,-3.81703333333333,3.14758771488486,-0.679055764266491,-0.0421153964111981,-2.24163969263309,\ +-4,-0.0751524,-3.78950252525252,3.14758741562326,-0.679056437322024,-0.0421171543594658,-2.24164140997057,\ +-4,-0.0751524,-3.76197171717172,3.14758710789692,-0.679057129415215,-0.0421189620320405,-2.24164317588367,\ +-4,-0.0751524,-3.73444090909091,3.14758679134151,-0.679057841365387,-0.0421208215688957,-2.24164499246292,\ +-4,-0.0751524,-3.7069101010101,3.1475864655716,-0.679058574039553,-0.0421227352345904,-2.24164686192058,\ +-4,-0.0751524,-3.67937929292929,3.14758613017886,-0.679059328355957,-0.042124705427467,-2.24164878659956,\ +-4,-0.0751524,-3.65184848484848,3.14758578473054,-0.679060105287899,-0.0421267346896802,-2.2416507689833,\ +-4,-0.0751524,-3.62431767676768,3.14758542876754,-0.679060905867927,-0.0421288257181399,-2.24165281170642,\ +-4,-0.0751524,-3.59678686868687,3.14758506180238,-0.679061731192421,-0.0421309813764682,-2.24165491756637,\ +-4,-0.0751524,-3.56925606060606,3.14758468331695,-0.679062582426597,-0.0421332047080857,-2.24165708953628,\ +-4,-0.0751524,-3.54172525252525,3.14758429276013,-0.679063460809998,-0.0421354989505453,-2.2416593307789,\ +-4,-0.0751524,-3.51419444444444,3.14758388954505,-0.679064367662518,-0.0421378675512641,-2.241661644662,\ +-4,-0.0751524,-3.48666363636364,3.14758347304616,-0.679065304391018,-0.0421403141848073,-2.24166403477529,\ +-4,-0.0751524,-3.45913282828283,3.14758304259605,-0.679066272496605,-0.0421428427719097,-2.2416665049489,\ +-4,-0.0751524,-3.43160202020202,3.14758259748177,-0.679067273582665,-0.0421454575004416,-2.24166905927396,\ +-4,-0.0751524,-3.40407121212121,3.14758213694101,-0.679068309363724,-0.0421481628485545,-2.24167170212519,\ +-4,-0.0751524,-3.3765404040404,3.14758166015767,-0.679069381675237,-0.0421509636102756,-2.24167443818585,\ +-4,-0.0751524,-3.3490095959596,3.14758116625703,-0.679070492484467,-0.0421538649238581,-2.2416772724755,\ +-4,-0.0751524,-3.32147878787879,3.14758065430045,-0.679071643902497,-0.0421568723032433,-2.2416802103807,\ +-4,-0.0751524,-3.29394797979798,3.14758012327935,-0.679072838197651,-0.042159991673033,-2.24168325768919,\ +-4,-0.0751524,-3.26641717171717,3.14757957210864,-0.679074077810387,-0.0421632294074489,-2.24168642062793,\ +-4,-0.0751524,-3.23888636363636,3.14757899961925,-0.679075365369957,-0.0421665923738085,-2.2416897059056,\ +-4,-0.0751524,-3.21135555555555,3.14757840454994,-0.679076703713011,-0.0421700879811445,-2.24169312076008,\ +-4,-0.0751524,-3.18382474747475,3.14757778553793,-0.679078095904476,-0.0421737242346982,-2.24169667301169,\ +-4,-0.0751524,-3.15629393939394,3.14757714110855,-0.679079545260967,-0.0421775097971192,-2.24170037112292,\ +-4,-0.0751524,-3.12876313131313,3.1475764696635,-0.67908105537718,-0.0421814540573656,-2.24170422426588,\ +-4,-0.0751524,-3.10123232323232,3.14757576946758,-0.679082630155658,-0.0421855672084559,-2.2417082423981,\ +-4,-0.0751524,-3.07370151515151,3.14757503863375,-0.679084273840463,-0.042189860335423,-2.24171243634851,\ +-4,-0.0751524,-3.04617070707071,3.14757427510612,-0.679085991055375,-0.0421943455150761,-2.24171681791497,\ +-4,-0.0751524,-3.0186398989899,3.14757347664066,-0.679087786847326,-0.0421990359294559,-2.24172139997497,\ +-4,-0.0751524,-2.99110909090909,3.1475726407832,-0.679089666735943,-0.0422039459952293,-2.24172619661215,\ +-4,-0.0751524,-2.96357828282828,3.14757176484416,-0.679091636770209,-0.0422090915116976,-2.24173122326081,\ +-4,-0.0751524,-2.93604747474747,3.14757084586968,-0.679093703593497,-0.0422144898306217,-2.24173649687189,\ +-4,-0.0751524,-2.90851666666667,3.14756988060835,-0.6790958745184,-0.0422201600517072,-2.24174203610386,\ +-4,-0.0751524,-2.88098585858586,3.14756886547277,-0.679098157613183,-0.0422261232483911,-2.24174786154332,\ +-4,-0.0751524,-2.85345505050505,3.147567796495,-0.679100561801984,-0.0422324027295561,-2.24175399596069,\ +-4,-0.0751524,-2.82592424242424,3.14756666927468,-0.679103096981392,-0.0422390243440224,-2.24176046460768,\ +-4,-0.0751524,-2.79839343434343,3.14756547891858,-0.67910577415662,-0.0422460168362044,-2.24176729556464,\ +-4,-0.0751524,-2.77086262626263,3.14756421996948,-0.679108605601195,-0.0422534122632471,-2.24177452014816,\ +-4,-0.0751524,-2.74333181818182,3.1475628863226,-0.679111605045119,-0.0422612464864182,-2.24178217339109,\ +-4,-0.0751524,-2.71580101010101,3.14756147112657,-0.679114787897494,-0.0422695597526373,-2.24179029461057,\ +-4,-0.0751524,-2.6882702020202,3.1475599666657,-0.679118171511322,-0.0422783973860503,-2.24179892808371,\ +-4,-0.0751524,-2.66073939393939,3.14755836421925,-0.679121775499993,-0.0422878106147276,-2.24180812385516,\ +-4,-0.0751524,-2.63320858585858,3.1475566538923,-0.679125622117745,-0.042297857564331,-2.24181793870779,\ +-4,-0.0751524,-2.60567777777778,3.14755482441121,-0.679129736719612,-0.042308604459458,-2.24182843733634,\ +-4,-0.0751524,-2.57814696969697,3.14755286287483,-0.679134148320966,-0.0423201270851299,-2.24183969377511,\ +-4,-0.0751524,-2.55061616161616,3.14755075444982,-0.679138890282786,-0.0423325125766127,-2.24185179314641,\ +-4,-0.0751524,-2.52308535353535,3.14754848199485,-0.679144001156841,-0.0423458616269638,-2.24186483381718,\ +-4,-0.0751524,-2.49555454545454,3.14754602559356,-0.679149525736135,-0.042360291230658,-2.24187893007917,\ +-4,-0.0751524,-2.46802373737374,3.14754336196925,-0.679155516371181,-0.0423759381215728,-2.24189421550754,\ +-4,-0.0751524,-2.44049292929293,3.14754046374504,-0.679162034634078,-0.04239296311938,-2.24191084720683,\ +-4,-0.0751524,-2.41296212121212,3.14753729849944,-0.679169153442542,-0.0424115566772733,-2.24192901123053,\ +-4,-0.0751524,-2.38543131313131,3.14753382754826,-0.679176959799366,-0.0424319460371246,-2.24194892957094,\ +-4,-0.0751524,-2.3579005050505,3.14753000435581,-0.679185558365876,-0.0424544045630163,-2.24197086927709,\ +-4,-0.0751524,-2.3303696969697,3.14752577243633,-0.679195076181521,-0.042479264068237,-2.24199515449698,\ +-4,-0.0751524,-2.30283888888889,3.14752106254461,-0.679205668982572,-0.0425069313190804,-2.24202218260009,\ +-4,-0.0751524,-2.27530808080808,3.1475157888575,-0.679217529789964,-0.0425379104653825,-2.24205244608978,\ +-4,-0.0751524,-2.24777727272727,3.1475098436969,-0.679230900777531,-0.0425728340389781,-2.24208656288561,\ +-4,-0.0751524,-2.22024646464646,3.14750309010012,-0.679246089981758,-0.0426125065978771,-2.24212531895931,\ +-4,-0.0751524,-2.19271565656565,3.14749535113812,-0.679263495325598,-0.0426579674737945,-2.24216972963273,\ +-4,-0.0751524,-2.16518484848485,3.14748639419044,-0.679283639985092,-0.0427105831459769,-2.24222112981778,\ +-4,-0.0751524,-2.13765404040404,3.14747590716124,-0.67930722588066,-0.0427721869546448,-2.24228131050224,\ +-4,-0.0751524,-2.11012323232323,3.14746346136834,-0.679335217141615,-0.0428452971013191,-2.24235273171406,\ +-4,-0.0751524,-2.08259242424242,3.1474484514956,-0.679368975156751,-0.0429334693863033,-2.24243886711014,\ +-4,-0.0751524,-2.05506161616161,3.14742999417,-0.679410486679747,-0.0430418929953642,-2.24254478599967,\ +-4,-0.0751524,-2.02753080808081,3.14740674758807,-0.679462769499097,-0.0431784500657055,-2.2426781884327,\ +-4,-0.0751524,-2,3.14737656980172,-0.67953064097185,-0.0433557230129947,-2.24285136615555,\ +-3,-0.274457,-4.72555,3.14758881170901,-0.679053297449698,-0.0421089533524894,-2.241633398417,\ +-3,-0.274457,-4.69801919191919,3.14758854244903,-0.679053903029969,-0.0421105350626735,-2.24163494358772,\ +-3,-0.274457,-4.67048838383838,3.1475882659726,-0.679054524840372,-0.0421121591642098,-2.2416365301705,\ +-3,-0.274457,-4.64295757575758,3.14758798198571,-0.679055163542249,-0.04211382738444,-2.24163815985279,\ +-3,-0.274457,-4.61542676767677,3.14758769017809,-0.679055819833358,-0.0421155415458426,-2.24163983441494,\ +-3,-0.274457,-4.58789595959596,3.14758739022217,-0.679056494450426,-0.0421173035726772,-2.24164155573677,\ +-3,-0.274457,-4.56036515151515,3.14758708177183,-0.679057188171917,-0.042119115498189,-2.24164332580456,\ +-3,-0.274457,-4.53283434343434,3.14758676446106,-0.679057901821004,-0.0421209794724355,-2.2416451467187,\ +-3,-0.274457,-4.50530353535354,3.1475864379025,-0.679058636268855,-0.0421228977707985,-2.241647020702,\ +-3,-0.274457,-4.47777272727273,3.1475861016859,-0.679059392438159,-0.0421248728032489,-2.24164895010875,\ +-3,-0.274457,-4.45024191919192,3.14758575537638,-0.679060171307004,-0.0421269071244483,-2.24165093743461,\ +-3,-0.274457,-4.42271111111111,3.14758539851252,-0.679060973913099,-0.0421290034447732,-2.24165298532735,\ +-3,-0.274457,-4.3951803030303,3.14758503060439,-0.679061801358378,-0.0421311646423618,-2.24165509659859,\ +-3,-0.274457,-4.36764949494949,3.14758465113122,-0.679062654814054,-0.0421333937762994,-2.24165727423678,\ +-3,-0.274457,-4.34011868686869,3.14758425953898,-0.679063535526154,-0.0421356941010635,-2.24165952142119,\ +-3,-0.274457,-4.31258787878788,3.14758385523771,-0.679064444821579,-0.0421380690823789,-2.24166184153751,\ +-3,-0.274457,-4.28505707070707,3.14758343759849,-0.679065384114776,-0.04214052241464,-2.24166423819475,\ +-3,-0.274457,-4.25752626262626,3.1475830059502,-0.679066354915093,-0.042143058040086,-2.24166671524411,\ +-3,-0.274457,-4.22999545454545,3.14758255957598,-0.679067358834854,-0.0421456801699404,-2.24166927679953,\ +-3,-0.274457,-4.20246464646465,3.14758209770915,-0.679068397598309,-0.0421483933077494,-2.24167192726049,\ +-3,-0.274457,-4.17493383838384,3.14758161952891,-0.679069473051501,-0.0421512022751961,-2.24167467133732,\ +-3,-0.274457,-4.14740303030303,3.14758112415543,-0.67907058717324,-0.0421541122406953,-2.24167751407901,\ +-3,-0.274457,-4.11987222222222,3.14758061064444,-0.679071742087226,-0.0421571287511329,-2.24168046090432,\ +-3,-0.274457,-4.09234141414141,3.14758007798123,-0.679072940075576,-0.0421602577671549,-2.2416835176362,\ +-3,-0.274457,-4.06481060606061,3.14757952507397,-0.679074183593875,-0.0421635057024805,-2.2416866905402,\ +-3,-0.274457,-4.0372797979798,3.14757895074626,-0.679075475287974,-0.0421668794677825,-2.24168998636735,\ +-3,-0.274457,-4.00974898989899,3.14757835372867,-0.679076818012777,-0.0421703865197716,-2.2416934124021,\ +-3,-0.274457,-3.98221818181818,3.14757773264955,-0.679078214853319,-0.0421740349162124,-2.24169697651607,\ +-3,-0.274457,-3.95468737373737,3.14757708602431,-0.679079669148411,-0.0421778333777309,-2.24170068722843,\ +-3,-0.274457,-3.92715656565657,3.14757641224376,-0.679081184517303,-0.0421817913574057,-2.24170455377387,\ +-3,-0.274457,-3.89962575757576,3.14757570956058,-0.679082764889744,-0.042185919119318,-2.24170858617938,\ +-3,-0.274457,-3.87209494949495,3.14757497607432,-0.679084414540012,-0.0421902278274297,-2.241712795351,\ +-3,-0.274457,-3.84456414141414,3.14757420971411,-0.679086138125529,-0.0421947296464119,-2.24171719317239,\ +-3,-0.274457,-3.81703333333333,3.14757340821927,-0.679087940730759,-0.0421994378563409,-2.24172179261685,\ +-3,-0.274457,-3.78950252525252,3.14757256911691,-0.679089827917315,-0.0422043669835431,-2.24172660787511,\ +-3,-0.274457,-3.76197171717172,3.14757168969654,-0.679091805781262,-0.0422095329502926,-2.24173165450163,\ +-3,-0.274457,-3.73444090909091,3.14757076698077,-0.679093881018916,-0.0422149532466284,-2.24173694958241,\ +-3,-0.274457,-3.7069101010101,3.14756979769163,-0.679096061002562,-0.0422206471281805,-2.24174251192826,\ +-3,-0.274457,-3.67937929292929,3.14756877821173,-0.679098353867993,-0.0422266358447317,-2.24174836229805,\ +-3,-0.274457,-3.65184848484848,3.14756770453902,-0.679100768615935,-0.0422329429052263,-2.24175452365765,\ +-3,-0.274457,-3.62431767676768,3.14756657223443,-0.67910331523016,-0.042239594386195,-2.24176102148117,\ +-3,-0.274457,-3.59678686868687,3.14756537636042,-0.67910600481545,-0.0422466192921268,-2.24176788410308,\ +-3,-0.274457,-3.56925606060606,3.14756411140905,-0.679108849759482,-0.0422540499782879,-2.24177514313119,\ +-3,-0.274457,-3.54172525252525,3.14756277121711,-0.67911186392359,-0.04226192264899,-2.24178283393346,\ +-3,-0.274457,-3.51419444444444,3.14756134886578,-0.679115062868627,-0.0422702779474991,-2.24179099621423,\ +-3,-0.274457,-3.48666363636364,3.14755983656107,-0.679118464123671,-0.042279161657862,-2.2417996746999,\ +-3,-0.274457,-3.45913282828283,3.14755822549098,-0.679122087507365,-0.0422886255442418,-2.24180891995879,\ +-3,-0.274457,-3.43160202020202,3.14755650565371,-0.679125955514366,-0.0422987283602453,-2.24181878938724,\ +-3,-0.274457,-3.40407121212121,3.14755466564973,-0.679130093782775,-0.0423095370698237,-2.24182934840226,\ +-3,-0.274457,-3.3765404040404,3.14755269242889,-0.679134531663108,-0.0423211283333498,-2.24184067189325,\ +-3,-0.274457,-3.3490095959596,3.14755057098037,-0.679139302915483,-0.0423335903285978,-2.24185284600099,\ +-3,-0.274457,-3.32147878787879,3.14754828395017,-0.679144446570057,-0.0423470249981128,-2.24186597031302,\ +-3,-0.274457,-3.29394797979798,3.14754581116519,-0.679150007997113,-0.0423615508441789,-2.24188016059406,\ +-3,-0.274457,-3.26641717171717,3.14754312903676,-0.679156040248947,-0.0423773064336473,-2.24189555220992,\ +-3,-0.274457,-3.23888636363636,3.14754020980561,-0.679162605757595,-0.0423944548322524,-2.24191230445929,\ +-3,-0.274457,-3.21135555555555,3.14753702057766,-0.679169778503654,-0.0424131892693061,-2.24193060610767,\ +-3,-0.274457,-3.18382474747475,3.1475335220791,-0.679177646816033,-0.0424337404503674,-2.24195068253102,\ +-3,-0.274457,-3.15629393939394,3.14752966703093,-0.679186317027725,-0.0424563861057243,-2.24197280504371,\ +-3,-0.274457,-3.12876313131313,3.14752539799989,-0.679195918309343,-0.0424814636150318,-2.24199730323153,\ +-3,-0.274457,-3.10123232323232,3.1475206445175,-0.679206609148146,-0.0425093869298948,-2.24202458148326,\ +-3,-0.274457,-3.07370151515151,3.14751531915977,-0.679218586165541,-0.0425406696041473,-2.24205514148902,\ +-3,-0.274457,-3.04617070707071,3.14750931212093,-0.679232096320611,-0.0425759566682194,-2.24208961337825,\ +-3,-0.274457,-3.0186398989899,3.1475024835612,-0.679247454120549,-0.0426160695808875,-2.242128799633,\ +-3,-0.274457,-2.99110909090909,3.14749465258451,-0.679265066410425,-0.0426620709774705,-2.24217373834039,\ +-3,-0.274457,-2.96357828282828,3.14748558097749,-0.679285468944979,-0.0427153601914186,-2.24222579650757,\ +-3,-0.274457,-2.93604747474747,3.14747494855517,-0.679309381837514,-0.0427778180808017,-2.24228681154241,\ +-3,-0.274457,-2.90851666666667,3.14746231458317,-0.679337796323462,-0.0428520336453995,-2.24235931263563,\ +-3,-0.274457,-2.88098585858586,3.14744705514937,-0.679372115614935,-0.0429416719234758,-2.24244688015856,\ +-3,-0.274457,-2.85345505050505,3.1474282569639,-0.679414393750157,-0.0430520978407701,-2.24255475510052,\ +-3,-0.274457,-2.82592424242424,3.14740452758319,-0.679467762410054,-0.0431914910091947,-2.24269092811427,\ +-3,-0.274457,-2.79839343434343,3.14737363374021,-0.679537244332887,-0.0433729702779487,-2.24286821498734,\ +-3,-0.274457,-2.77086262626263,3.14733175383827,-0.679631434496142,-0.0436189847987564,-2.24310854626829,\ +-3,-0.274457,-2.74333181818182,3.14727176053728,-0.67976636267297,-0.043971402605655,-2.24345282278775,\ +-3,-0.274457,-2.71580101010101,3.14717866008888,-0.679975750613932,-0.0445183012644879,-2.24398708741081,\ +-3,-0.274457,-2.6882702020202,3.1470146040783,-0.680344721449721,-0.0454820131875016,-2.24492853639586,\ +-3,-0.274457,-2.66073939393939,3.14664853231585,-0.68116803663132,-0.0476324234095194,-2.24702926948075,\ +-3,-0.274457,-2.63320858585858,3.14510951130234,-0.684629378081829,-0.0566730729729097,-2.25586106885196,\ +-3,-0.274457,-2.60567777777778,3.15176091721851,-0.669670006637447,-0.0176008124487687,-2.21769142589552,\ +-3,-0.274457,-2.57814696969697,3.14874324486941,-0.676456914869563,-0.0353274828228989,-2.23500858824831,\ +-3,-0.274457,-2.55061616161616,3.14826590420381,-0.67753047982895,-0.0381315184027826,-2.23774784713647,\ +-3,-0.274457,-2.52308535353535,3.14807136423233,-0.677968010740587,-0.0392743018299065,-2.2388642308523,\ +-3,-0.274457,-2.49555454545454,3.14796574036281,-0.678205564532593,-0.0398947666458397,-2.23947036216321,\ +-3,-0.274457,-2.46802373737374,3.14789941247848,-0.678354739529771,-0.0402843956068637,-2.23985099021308,\ +-3,-0.274457,-2.44049292929293,3.1478538906995,-0.678457120471355,-0.0405518035549293,-2.24011222070665,\ +-3,-0.274457,-2.41296212121212,3.14782071245451,-0.678531740137768,-0.0407467020543181,-2.24030261680953,\ +-3,-0.274457,-2.38543131313131,3.14779545660655,-0.678588541905032,-0.0408950621279368,-2.24044754958186,\ +-3,-0.274457,-2.3579005050505,3.1477755882075,-0.678633227008463,-0.0410117747858987,-2.24056156603299,\ +-3,-0.274457,-2.3303696969697,3.14775954956239,-0.678669298788275,-0.0411059903740138,-2.24065360512444,\ +-3,-0.274457,-2.30283888888889,3.14774633069812,-0.678699028728569,-0.0411836417631031,-2.24072946267035,\ +-3,-0.274457,-2.27530808080808,3.14773524807617,-0.678723954144397,-0.0412487442538392,-2.24079306121299,\ +-3,-0.274457,-2.24777727272727,3.14772582256841,-0.678745152620869,-0.0413041123820038,-2.24084715026888,\ +-3,-0.274457,-2.22024646464646,3.14771770836176,-0.678763401910213,-0.041351777552317,-2.24089371431477,\ +-3,-0.274457,-2.19271565656565,3.14771064960609,-0.678779277433275,-0.0413932427017935,-2.24093422156799,\ +-3,-0.274457,-2.16518484848485,3.14770445294588,-0.678793214057027,-0.0414296436559489,-2.24096978161506,\ +-3,-0.274457,-2.13765404040404,3.14769896953707,-0.678805546539855,-0.0414618547674725,-2.24100124861005,\ +-3,-0.274457,-2.11012323232323,3.14769408293558,-0.678816536770776,-0.0414905600621621,-2.2410292907769,\ +-3,-0.274457,-2.08259242424242,3.14768970073637,-0.678826392573654,-0.0415163023534873,-2.24105443838944,\ +-3,-0.274457,-2.05506161616161,3.1476857486746,-0.678835280974203,-0.0415395178945451,-2.24107711762278,\ +-3,-0.274457,-2.02753080808081,3.14768216638238,-0.67884333774305,-0.0415605613035185,-2.24109767490297,\ +-3,-0.274457,-2,3.14767890428345,-0.678850674379845,-0.0415797238054554,-2.2411163947274,\ +-3,-0.271559,-4.72555,3.14758878369707,-0.679053360450054,-0.0421091179026091,-2.24163355916581,\ +-3,-0.271559,-4.69801919191919,3.14758851369085,-0.679053967708659,-0.0421107039964237,-2.2416351086189,\ +-3,-0.271559,-4.67048838383838,3.14758823643796,-0.679054591265371,-0.0421123326591239,-2.24163669965747,\ +-3,-0.271559,-4.64295757575758,3.14758795164274,-0.679055231785247,-0.0421140056277676,-2.24163833397847,\ +-3,-0.271559,-4.61542676767677,3.14758765899313,-0.679055889970019,-0.0421157247352255,-2.24164001337242,\ +-3,-0.271559,-4.58789595959596,3.14758735815969,-0.679056566560689,-0.0421174919168802,-2.24164173972999,\ +-3,-0.271559,-4.56036515151515,3.14758704879426,-0.679057262340263,-0.0421193092178924,-2.2416435150491,\ +-3,-0.271559,-4.53283434343434,3.14758673052865,-0.679057978136822,-0.0421211788010991,-2.24164534144262,\ +-3,-0.271559,-4.50530353535354,3.14758640297318,-0.679058714826779,-0.042123102955599,-2.24164722114677,\ +-3,-0.271559,-4.47777272727273,3.14758606571509,-0.679059473338467,-0.042125084106103,-2.24164915653025,\ +-3,-0.271559,-4.45024191919192,3.14758571831678,-0.679060254656045,-0.0421271248231273,-2.24165115010419,\ +-3,-0.271559,-4.42271111111111,3.14758536031395,-0.679061059823758,-0.0421292278341224,-2.24165320453302,\ +-3,-0.271559,-4.3951803030303,3.14758499121352,-0.679061889950586,-0.0421313960356313,-2.24165532264639,\ +-3,-0.271559,-4.36764949494949,3.14758461049133,-0.679062746215352,-0.0421336325066036,-2.24165750745212,\ +-3,-0.271559,-4.34011868686869,3.14758421758973,-0.679063629872296,-0.0421359405229818,-2.24165976215047,\ +-3,-0.271559,-4.31258787878788,3.14758381191477,-0.679064542257209,-0.0421383235737113,-2.24166209014977,\ +-3,-0.271559,-4.28505707070707,3.14758339283326,-0.679065484794174,-0.0421407853783406,-2.24166449508367,\ +-3,-0.271559,-4.25752626262626,3.14758295966946,-0.67906645900298,-0.0421433299063919,-2.24166698082997,\ +-3,-0.271559,-4.22999545454545,3.14758251170143,-0.679067466507297,-0.0421459613987199,-2.24166955153157,\ +-3,-0.271559,-4.20246464646465,3.14758204815703,-0.679068509043713,-0.0421486843910977,-2.24167221161945,\ +-3,-0.271559,-4.17493383838384,3.14758156820947,-0.679069588471715,-0.0421515037403092,-2.24167496583821,\ +-3,-0.271559,-4.14740303030303,3.1475810709724,-0.679070706784761,-0.0421544246530552,-2.24167781927425,\ +-3,-0.271559,-4.11987222222222,3.14758055549443,-0.679071866122573,-0.0421574527180489,-2.2416807773872,\ +-3,-0.271559,-4.09234141414141,3.14758002075307,-0.679073068784788,-0.0421605939417022,-2.2416838460447,\ +-3,-0.271559,-4.06481060606061,3.14757946564796,-0.679074317246199,-0.0421638547878944,-2.24168703156131,\ +-3,-0.271559,-4.0372797979798,3.14757888899328,-0.679075614173732,-0.0421672422223689,-2.24169034074186,\ +-3,-0.271559,-4.00974898989899,3.14757828950936,-0.679076962445493,-0.0421707637624037,-2.24169378092996,\ +-3,-0.271559,-3.98221818181818,3.14757766581311,-0.67907836517206,-0.0421744275325028,-2.24169736006243,\ +-3,-0.271559,-3.95468737373737,3.14757701640747,-0.679079825720453,-0.0421782423269698,-2.24170108673043,\ +-3,-0.271559,-3.92715656565657,3.14757633966932,-0.67908134774113,-0.0421822176803871,-2.24170497024826,\ +-3,-0.271559,-3.89962575757576,3.147575633836,-0.679082935198428,-0.0421863639471817,-2.24170902073116,\ +-3,-0.271559,-3.87209494949495,3.14757489698993,-0.679084592405054,-0.0421906923916826,-2.24171324918324,\ +-3,-0.271559,-3.84456414141414,3.14757412704127,-0.679086324061212,-0.0421952152903113,-2.24171766759732,\ +-3,-0.271559,-3.81703333333333,3.14757332170807,-0.679088135299122,-0.0421999460478649,-2.24172228906852,\ +-3,-0.271559,-3.78950252525252,3.1475724784937,-0.679090031733816,-0.0422048993302072,-2.24172712792391,\ +-3,-0.271559,-3.76197171717172,3.14757159466102,-0.67909201952129,-0.0422100912161345,-2.24173219987084,\ +-3,-0.271559,-3.73444090909091,3.14757066720267,-0.679094105425258,-0.0422155393717307,-2.24173752216731,\ +-3,-0.271559,-3.7069101010101,3.14756969280689,-0.679096296894036,-0.0422212632511937,-2.24174311381807,\ +-3,-0.271559,-3.67937929292929,3.14756866781802,-0.679098602149409,-0.0422272843289435,-2.24174899580147,\ +-3,-0.271559,-3.65184848484848,3.14756758819065,-0.679101030289715,-0.0422336263688489,-2.24175519133241,\ +-3,-0.271559,-3.62431767676768,3.14756644943627,-0.679103591409853,-0.0422403157376895,-2.24176172616855,\ +-3,-0.271559,-3.59678686868687,3.14756524656092,-0.679106296741564,-0.0422473817715658,-2.2417686289683,\ +-3,-0.271559,-3.56925606060606,3.14756397399189,-0.67910915881811,-0.0422548572060009,-2.24177593171095,\ +-3,-0.271559,-3.54172525252525,3.14756262549148,-0.679112191668413,-0.0422627786830297,-2.24178367019206,\ +-3,-0.271559,-3.51419444444444,3.14756119405473,-0.679115411047037,-0.0422711873518517,-2.24179188461023,\ +-3,-0.271559,-3.48666363636364,3.14755967178768,-0.67911883470791,-0.0422801295838235,-2.24180062026557,\ +-3,-0.271559,-3.45913282828283,3.14755804976175,-0.67912248273191,-0.0422896578280199,-2.24180992839554,\ +-3,-0.271559,-3.43160202020202,3.14755631783847,-0.679126377920998,-0.0422998316406944,-2.24181986718055,\ +-3,-0.271559,-3.40407121212121,3.14755446445737,-0.679130546275284,-0.0423107189313264,-2.24183050296129,\ +-3,-0.271559,-3.3765404040404,3.14755247637761,-0.679135017574112,-0.0423223974803438,-2.24184191172138,\ +-3,-0.271559,-3.3490095959596,3.14755033836118,-0.679139826088614,-0.0423349568002374,-2.24185418090544,\ +-3,-0.271559,-3.32147878787879,3.14754803278157,-0.6791450114618,-0.0423485004342594,-2.24186741166476,\ +-3,-0.271559,-3.29394797979798,3.14754553913665,-0.679150619804011,-0.0423631488176337,-2.24188172165236,\ +-3,-0.271559,-3.26641717171717,3.14754283343743,-0.679156705067837,-0.0423790428686994,-2.24189724853117,\ +-3,-0.271559,-3.23888636363636,3.14753988743372,-0.679163330789388,-0.0423963485368904,-2.24191415441701,\ +-3,-0.271559,-3.21135555555555,3.1475366676242,-0.679170572315037,-0.042415262618798,-2.24193263156022,\ +-3,-0.271559,-3.18382474747475,3.14753313397668,-0.67917851967934,-0.0424360202749304,-2.24195290968881,\ +-3,-0.271559,-3.15629393939394,3.1475292382552,-0.679187281367555,-0.042458904857075,-2.24197526560879,\ +-3,-0.271559,-3.12876313131313,3.14752492180505,-0.67919698929726,-0.0424842609196564,-2.24200003591495,\ +-3,-0.271559,-3.10123232323232,3.14752011257924,-0.679207805506029,-0.0425125116873145,-2.24202763405491,\ +-3,-0.271559,-3.07370151515151,3.14751472108489,-0.679219931268282,-0.0425441828670484,-2.24205857359121,\ +-3,-0.271559,-3.04617070707071,3.14750863476226,-0.679233619736862,-0.0425799356667269,-2.24209350045696,\ +-3,-0.271559,-3.0186398989899,3.1475017100412,-0.679249193808857,-0.0426206134586139,-2.24213323854153,\ +-3,-0.271559,-2.99110909090909,3.14749376087176,-0.679267071920615,-0.0426673091532118,-2.2421788555078,\ +-3,-0.271559,-2.96357828282828,3.14748454175805,-0.679287806205691,-0.042721464863651,-2.24223176015431,\ +-3,-0.271559,-2.93604747474747,3.14747372195458,-0.679312140528545,-0.0427850234834585,-2.24229385049135,\ +-3,-0.271559,-2.90851666666667,3.14746084494432,-0.6793411016207,-0.0428606667243466,-2.24236774627977,\ +-3,-0.271559,-2.88098585858586,3.14744526237466,-0.679376147662135,-0.0429522031947399,-2.24245716814443,\ +-3,-0.271559,-2.85345505050505,3.14742602146384,-0.679419421510651,-0.0430652298074792,-2.24256758370255,\ +-3,-0.271559,-2.82592424242424,3.1474016625588,-0.67947420600477,-0.0432083209817955,-2.24270736929367,\ +-3,-0.271559,-2.79839343434343,3.14736983036644,-0.679545798326081,-0.0433953123831514,-2.24289004096227,\ +-3,-0.271559,-2.77086262626263,3.14732646252742,-0.679643334940262,-0.0436500674718982,-2.24313891089322,\ +-3,-0.271559,-2.74333181818182,3.1472639008201,-0.679784039601778,-0.0440175728321437,-2.24349792642487,\ +-3,-0.271559,-2.71580101010101,3.14716578184311,-0.680004714484817,-0.0445939517631232,-2.24406099028931,\ +-3,-0.271559,-2.6882702020202,3.14698975747171,-0.680400602811017,-0.0456279692602642,-2.24507112070274,\ +-3,-0.271559,-2.66073939393939,3.14658195837782,-0.681317765016554,-0.0480234977603037,-2.2474113095301,\ +-3,-0.271559,-2.63320858585858,3.14460245624185,-0.68576977232152,-0.0596516594061086,-2.25877084625273,\ +-3,-0.271559,-2.60567777777778,3.15085247283224,-0.671713147167741,-0.0229372745711195,-2.22290460913929,\ +-3,-0.271559,-2.57814696969697,3.14866264341704,-0.676638191892825,-0.0358009588045729,-2.23547112634891,\ +-3,-0.271559,-2.55061616161616,3.1482380412869,-0.6775931450352,-0.0382951931449672,-2.23790774078957,\ +-3,-0.271559,-2.52308535353535,3.14805738810921,-0.677999443796942,-0.0393564015739726,-2.23894443399069,\ +-3,-0.271559,-2.49555454545454,3.14795736434915,-0.678224402640075,-0.0399439697454586,-2.23951842861033,\ +-3,-0.271559,-2.46802373737374,3.14789383846055,-0.678367275797379,-0.0403171389822001,-2.23988297717593,\ +-3,-0.271559,-2.44049292929293,3.14784991607979,-0.678466059605933,-0.0405751516077782,-2.24013502939058,\ +-3,-0.271559,-2.41296212121212,3.14781773596572,-0.678538434421949,-0.0407641868006852,-2.24031969763661,\ +-3,-0.271559,-2.38543131313131,3.14779314454043,-0.678593741866696,-0.0409086438654852,-2.24046081756446,\ +-3,-0.271559,-2.3579005050505,3.14777374059208,-0.678637382395432,-0.0410226282073091,-2.24057216872695,\ +-3,-0.271559,-2.3303696969697,3.14775803930798,-0.678672695432087,-0.0411148620403433,-2.24066227184429,\ +-3,-0.271559,-2.30283888888889,3.14774507318344,-0.678701856947054,-0.0411910287639456,-2.24073667902233,\ +-3,-0.271559,-2.27530808080808,3.14773418478474,-0.67872634554431,-0.0412549903318075,-2.24079916299883,\ +-3,-0.271559,-2.24777727272727,3.1477249117468,-0.67874720110788,-0.0413094628085599,-2.24085237709396,\ +-3,-0.271559,-2.22024646464646,3.14771691942025,-0.678765176282315,-0.0413564120203636,-2.24089824172087,\ +-3,-0.271559,-2.19271565656565,3.14770995962242,-0.678780829243844,-0.0413972958631894,-2.24093818109634,\ +-3,-0.271559,-2.16518484848485,3.14770384440523,-0.678794582697867,-0.0414332183978144,-2.24097327377597,\ +-3,-0.271559,-2.13765404040404,3.14769842882666,-0.678806762626792,-0.0414650310550454,-2.24100435152144,\ +-3,-0.271559,-2.11012323232323,3.14769359931563,-0.678817624458167,-0.0414934009840125,-2.24103206606995,\ +-3,-0.271559,-2.08259242424242,3.14768926562028,-0.678827371173243,-0.0415188583497874,-2.24105693533907,\ +-3,-0.271559,-2.05506161616161,3.1476853551152,-0.678836166110567,-0.0415418297750045,-2.24107937609594,\ +-3,-0.271559,-2.02753080808081,3.14768180869854,-0.67884414219335,-0.0415626624407133,-2.24109972750129,\ +-3,-0.271559,-2,3.1476785777843,-0.678851408694117,-0.0415816417549253,-2.24111826836986,\ +-3,-0.271258,-4.72555,3.14758878078321,-0.679053367003509,-0.0421091350195204,-2.2416335758873,\ +-3,-0.271258,-4.69801919191919,3.14758851069929,-0.679053974436834,-0.0421107215696844,-2.24163512578619,\ +-3,-0.271258,-4.67048838383838,3.14758823336557,-0.679054598175347,-0.0421123507072297,-2.24163671728865,\ +-3,-0.271258,-4.64295757575758,3.14758794848619,-0.679055238884489,-0.0421140241702279,-2.24163835209258,\ +-3,-0.271258,-4.61542676767677,3.14758765574892,-0.679055897266422,-0.0421157437926336,-2.24164003198958,\ +-3,-0.271258,-4.58789595959596,3.14758735482411,-0.679056574062571,-0.0421175115109885,-2.24164175887145,\ +-3,-0.271258,-4.56036515151515,3.14758704536341,-0.679057270056434,-0.0421193293716966,-2.24164353473733,\ +-3,-0.271258,-4.53283434343434,3.14758672699838,-0.679057986076596,-0.0421211995389276,-2.24164536170138,\ +-3,-0.271258,-4.50530353535354,3.14758639933911,-0.679058723000015,-0.0421231243032103,-2.24164724200122,\ +-3,-0.271258,-4.47777272727273,3.14758606197256,-0.679059481755619,-0.0421251060907934,-2.24164917800706,\ +-3,-0.271258,-4.45024191919192,3.14758571446087,-0.679060263328195,-0.0421271474738474,-2.24165117223164,\ +-3,-0.271258,-4.42271111111111,3.14758535633942,-0.679061068762673,-0.0421292511816023,-2.24165322734114,\ +-3,-0.271258,-4.3951803030303,3.14758498711482,-0.679061899168766,-0.0421314201125229,-2.24165534616708,\ +-3,-0.271258,-4.36764949494949,3.14758460626256,-0.679062755726095,-0.0421336573476307,-2.24165753171929,\ +-3,-0.271258,-4.34011868686869,3.14758421322459,-0.679063639689747,-0.042135966165107,-2.24165978720022,\ +-3,-0.271258,-4.31258787878788,3.14758380740655,-0.679064552396454,-0.0421383500563209,-2.2416621160206,\ +-3,-0.271258,-4.28505707070707,3.14758338817481,-0.679065495271294,-0.0421408127434456,-2.2416645218166,\ +-3,-0.271258,-4.25752626262626,3.14758295485313,-0.679066469835151,-0.0421433581988507,-2.24166700846884,\ +-3,-0.271258,-4.22999545454545,3.14758250671907,-0.679067477712878,-0.0421459906664827,-2.24166958012321,\ +-3,-0.271258,-4.20246464646465,3.1475820429999,-0.679068520642349,-0.04214871468548,-2.241672241214,\ +-3,-0.271258,-4.17493383838384,3.14758156286822,-0.679069600484456,-0.0421515351162887,-2.24167499648937,\ +-3,-0.271258,-4.14740303030303,3.147581065437,-0.679070719234187,-0.042154457169608,-2.24167785103964,\ +-3,-0.271258,-4.11987222222222,3.14758054975407,-0.679071879032936,-0.0421574864385169,-2.24168081032869,\ +-3,-0.271258,-4.09234141414141,3.14758001479618,-0.679073082182168,-0.0421606289342069,-2.24168388022884,\ +-3,-0.271258,-4.06481060606061,3.14757945946203,-0.67907433115868,-0.0421638911257945,-2.24168706705977,\ +-3,-0.271258,-4.0372797979798,3.14757888256486,-0.679075628631608,-0.0421672799847739,-2.2416903776319,\ +-3,-0.271258,-4.00974898989899,3.14757828282389,-0.679076977481471,-0.0421708030347509,-2.24169381929507,\ +-3,-0.271258,-3.98221818181818,3.14757765885487,-0.679078380821517,-0.0421744684071992,-2.24169739999288,\ +-3,-0.271258,-3.95468737373737,3.1475770091594,-0.679079842021722,-0.0421782849041203,-2.241701128324,\ +-3,-0.271258,-3.92715656565657,3.14757633211296,-0.679081364735792,-0.0421822620686118,-2.24170501361107,\ +-3,-0.271258,-3.89962575757576,3.14757562595124,-0.679082952931689,-0.042186410264542,-2.24170906597853,\ +-3,-0.271258,-3.87209494949495,3.14757488875488,-0.67908461092613,-0.0421907407667284,-2.24171329644077,\ +-3,-0.271258,-3.84456414141414,3.14757411843207,-0.679086343423791,-0.0421952658632731,-2.24171771700198,\ +-3,-0.271258,-3.81703333333333,3.14757331269861,-0.679088155561885,-0.0421999989720109,-2.24172234077005,\ +-3,-0.271258,-3.78950252525252,3.14757246905542,-0.67909005296103,-0.0422049547733948,-2.24172718208629,\ +-3,-0.271258,-3.76197171717172,3.14757158476255,-0.67909204178349,-0.042210149362588,-2.24173225667405,\ +-3,-0.271258,-3.73444090909091,3.14757065680952,-0.67909412880002,-0.0422156004240865,-2.24173758180928,\ +-3,-0.271258,-3.7069101010101,3.14756968188103,-0.679096321466901,-0.0422213274328582,-2.24174317651706,\ +-3,-0.271258,-3.67937929292929,3.1475686563174,-0.679098628014908,-0.0422273518868251,-2.24174906179868,\ +-3,-0.271258,-3.65184848484848,3.14756757606872,-0.679101057552592,-0.0422336975765315,-2.2417552608951,\ +-3,-0.271258,-3.62431767676768,3.14756643664128,-0.679103620186484,-0.0422403908991345,-2.24176179959367,\ +-3,-0.271258,-3.59678686868687,3.14756523303522,-0.679106327161614,-0.0422474612254486,-2.24176870658671,\ +-3,-0.271258,-3.56925606060606,3.14756395967102,-0.67910919102649,-0.0422549413308115,-2.24177601389237,\ +-3,-0.271258,-3.54172525252525,3.14756261030324,-0.67911222582759,-0.0422628679031009,-2.24178375735104,\ +-3,-0.271258,-3.51419444444444,3.14756117791784,-0.679115447339758,-0.0422712821445148,-2.24179197721306,\ +-3,-0.271258,-3.48666363636364,3.14755965461042,-0.679118873340492,-0.0422802304879495,-2.24180071883869,\ +-3,-0.271258,-3.45913282828283,3.14755803144016,-0.679122523938153,-0.0422897654542654,-2.24181003353548,\ +-3,-0.271258,-3.43160202020202,3.14755629825427,-0.679126421966916,-0.0422999466838671,-2.24181997956608,\ +-3,-0.271258,-3.40407121212121,3.14755444347539,-0.67913059346486,-0.0423108421853953,-2.24183062336804,\ +-3,-0.271258,-3.3765404040404,3.14755245384272,-0.679135068256314,-0.0423225298567811,-2.24184204103976,\ +-3,-0.271258,-3.3490095959596,3.14755031409435,-0.679139880666048,-0.0423350993505899,-2.2418543201627,\ +-3,-0.271258,-3.32147878787879,3.14754800657517,-0.679145070401402,-0.0423486543781266,-2.24186756205233,\ +-3,-0.271258,-3.29394797979798,3.14754551074852,-0.679150683650451,-0.0423633155776323,-2.24188188455999,\ +-3,-0.271258,-3.26641717171717,3.14754280258332,-0.679156774460387,-0.0423792241145341,-2.24189742559,\ +-3,-0.271258,-3.23888636363636,3.1475398537778,-0.679163406483384,-0.0423965462414231,-2.24191434755432,\ +-3,-0.271258,-3.21135555555555,3.14753663076674,-0.679170655209477,-0.0424154791301108,-2.24193284306985,\ +-3,-0.271258,-3.18382474747475,3.14753309343814,-0.679178610852726,-0.0424362584099605,-2.24195314232262,\ +-3,-0.271258,-3.15629393939394,3.14752919345525,-0.679187382125053,-0.0424591680247609,-2.24197552269698,\ +-3,-0.271258,-3.12876313131313,3.14752487203468,-0.67919710123351,-0.0424845532850377,-2.24200032152633,\ +-3,-0.271258,-3.10123232323232,3.14752005696295,-0.679207930590109,-0.0425128383934017,-2.24202795321368,\ +-3,-0.271258,-3.07370151515151,3.14751465852875,-0.679220071960406,-0.0425445503396676,-2.24205893257475,\ +-3,-0.271258,-3.04617070707071,3.14750856388145,-0.679233779151653,-0.0425803520409246,-2.24209390721241,\ +-3,-0.271258,-3.0186398989899,3.14750162905628,-0.679249375948315,-0.0426210891871876,-2.24213370328019,\ +-3,-0.271258,-2.99110909090909,3.14749366745755,-0.679267282014232,-0.0426678578950166,-2.24217939157298,\ +-3,-0.271258,-2.96357828282828,3.14748443281706,-0.679288051219843,-0.0427221048141196,-2.24223238532113,\ +-3,-0.271258,-2.93604747474747,3.14747359326766,-0.679312429952378,-0.0427857794272148,-2.24229458897187,\ +-3,-0.271258,-2.90851666666667,3.14746069061273,-0.679341448720762,-0.0428615733121767,-2.2423686319243,\ +-3,-0.271258,-2.88098585858586,3.14744507389298,-0.679376571567644,-0.0429533103900896,-2.24245824976219,\ +-3,-0.271258,-2.85345505050505,3.14742578610311,-0.679419950849649,-0.0430666123837041,-2.24256893433955,\ +-3,-0.271258,-2.82592424242424,3.1474013603784,-0.679474885624831,-0.043210096075895,-2.2427091033809,\ +-3,-0.271258,-2.79839343434343,3.14736942827685,-0.679546702647307,-0.0433976743724014,-2.24289234838664,\ +-3,-0.271258,-2.77086262626263,3.14732590135283,-0.67964459705226,-0.0436533639719541,-2.24314213124004,\ +-3,-0.271258,-2.74333181818182,3.14726306343066,-0.679785922935892,-0.0440224918971896,-2.24350273185343,\ +-3,-0.271258,-2.71580101010101,3.14716439994165,-0.68000782245589,-0.0446020694474714,-2.2440689204451,\ +-3,-0.271258,-2.6882702020202,3.14698705722051,-0.680406675821945,-0.0456438313080796,-2.24508661631762,\ +-3,-0.271258,-2.66073939393939,3.14657451088847,-0.681334514822674,-0.0480672464425818,-2.24745404756368,\ +-3,-0.271258,-2.63320858585858,3.14453774460975,-0.685915312280039,-0.0600317940392457,-2.25914219930545,\ +-3,-0.271258,-2.60567777777778,3.15078040136777,-0.671875239787116,-0.0233606429644255,-2.22331819719882,\ +-3,-0.271258,-2.57814696969697,3.14865492375039,-0.676655553840424,-0.0358463063342034,-2.23551542629449,\ +-3,-0.271258,-2.55061616161616,3.14823528225245,-0.677599350252813,-0.0383114005023453,-2.23792357373694,\ +-3,-0.271258,-2.52308535353535,3.148055984786,-0.678002599946698,-0.0393646450958355,-2.238952487077,\ +-3,-0.271258,-2.49555454545454,3.14795651688075,-0.678226308642318,-0.0399489480171987,-2.23952329187783,\ +-3,-0.271258,-2.46802373737374,3.14789327176567,-0.678368550324817,-0.0403204679100415,-2.23988622920142,\ +-3,-0.271258,-2.44049292929293,3.14784951064586,-0.678466971448727,-0.0405775332425499,-2.24013735600664,\ +-3,-0.271258,-2.41296212121212,3.14781743160829,-0.678539118938257,-0.0407659746832602,-2.24032144421689,\ +-3,-0.271258,-2.38543131313131,3.14779290768419,-0.678594274569183,-0.0409100352267768,-2.24046217678359,\ +-3,-0.271258,-2.3579005050505,3.14777355103917,-0.678637808710157,-0.0410237416952644,-2.24057325649195,\ +-3,-0.271258,-2.3303696969697,3.14775788418303,-0.678673044316492,-0.0411157732886794,-2.24066316204167,\ +-3,-0.271258,-2.30283888888889,3.14774494389264,-0.678702147729051,-0.0411917882550773,-2.24073742096828,\ +-3,-0.271258,-2.27530808080808,3.14773407537352,-0.678726591616047,-0.0412556330445737,-2.24079979086414,\ +-3,-0.271258,-2.24777727272727,3.1477248179593,-0.678747412041041,-0.0413100137431644,-2.2408529153013,\ +-3,-0.271258,-2.22024646464646,3.14771683813407,-0.678765359099322,-0.0413568895186227,-2.24089870818834,\ +-3,-0.271258,-2.19271565656565,3.14770988849497,-0.678780989213325,-0.0413977136861754,-2.24093858926709,\ +-3,-0.271258,-2.16518484848485,3.14770378164464,-0.678794723849819,-0.0414335870714475,-2.24097363393278,\ +-3,-0.271258,-2.13765404040404,3.14769837303898,-0.678806888096288,-0.0414653587677996,-2.24100467166363,\ +-3,-0.271258,-2.11012323232323,3.14769354940021,-0.678817736720652,-0.0414936942014822,-2.24103235251373,\ +-3,-0.271258,-2.08259242424242,3.14768922069648,-0.678827472209312,-0.0415191222450791,-2.24105719313805,\ +-3,-0.271258,-2.05506161616161,3.14768531447005,-0.678836257523717,-0.0415420685362709,-2.24107960934153,\ +-3,-0.271258,-2.02753080808081,3.14768177174865,-0.67884422529563,-0.0415628794948815,-2.24109993954124,\ +-3,-0.271258,-2,3.14767854404774,-0.678851484569455,-0.0415818399331026,-2.24111846196987,\ +-3,-0.270763,-4.72555,3.14758877598948,-0.679053377784854,-0.0421091631792346,-2.24163360339649,\ +-3,-0.270763,-4.69801919191919,3.14758850577774,-0.679053985505676,-0.0421107504803011,-2.24163515402894,\ +-3,-0.270763,-4.67048838383838,3.147588228311,-0.679054609543336,-0.0421123803991899,-2.24163674629468,\ +-3,-0.270763,-4.64295757575758,3.14758794329314,-0.679055250563922,-0.0421140546756399,-2.24163838189327,\ +-3,-0.270763,-4.61542676767677,3.14758765041163,-0.679055909270271,-0.0421157751453895,-2.24164006261805,\ +-3,-0.270763,-4.58789595959596,3.14758734933649,-0.679056586404545,-0.0421175437468899,-2.24164179036266,\ +-3,-0.270763,-4.56036515151515,3.147587039719,-0.679057282751024,-0.0421193625285906,-2.24164356712825,\ +-3,-0.270763,-4.53283434343434,3.14758672119037,-0.67905799913913,-0.042121233656855,-2.24164539503114,\ +-3,-0.270763,-4.50530353535354,3.14758639336027,-0.679058736446726,-0.0421231594245677,-2.24164727631124,\ +-3,-0.270763,-4.47777272727273,3.14758605581527,-0.679059495603708,-0.0421251422605073,-2.24164921334121,\ +-3,-0.270763,-4.45024191919192,3.14758570811699,-0.679060277595907,-0.0421271847395681,-2.24165120863648,\ +-3,-0.270763,-4.42271111111111,3.14758534980037,-0.679061083469372,-0.0421292895939113,-2.24165326486608,\ +-3,-0.270763,-4.3951803030303,3.14758498037143,-0.679061914335031,-0.0421314597251631,-2.24165538486462,\ +-3,-0.270763,-4.36764949494949,3.1475845993051,-0.679062771373804,-0.0421336982177568,-2.24165757164526,\ +-3,-0.270763,-4.34011868686869,3.14758420604269,-0.6790636558422,-0.0421360083535611,-2.24165982841407,\ +-3,-0.270763,-4.31258787878788,3.1475837999892,-0.679064569078467,-0.0421383936279342,-2.24166215858565,\ +-3,-0.270763,-4.28505707070707,3.14758338051023,-0.679065512509346,-0.0421408577673713,-2.24166456580042,\ +-3,-0.270763,-4.25752626262626,3.14758294692875,-0.67906648765751,-0.0421434047489289,-2.24166705394355,\ +-3,-0.270763,-4.22999545454545,3.14758249852145,-0.679067496149767,-0.0421460388216466,-2.24166962716594,\ +-3,-0.270763,-4.20246464646465,3.14758203451467,-0.679068539726109,-0.0421487645302004,-2.24167228990725,\ +-3,-0.270763,-4.17493383838384,3.14758155407996,-0.679069620249739,-0.04215158674107,-2.24167504692155,\ +-3,-0.270763,-4.14740303030303,3.14758105632918,-0.679070739718161,-0.0421545106715358,-2.24167790330561,\ +-3,-0.270763,-4.11987222222222,3.14758054030895,-0.679071900275525,-0.0421575419218674,-2.2416808645303,\ +-3,-0.270763,-4.09234141414141,3.14758000499466,-0.679073104226311,-0.0421606865111254,-2.24168393647566,\ +-3,-0.270763,-4.06481060606061,3.14757944928357,-0.679074354050614,-0.0421639509170514,-2.24168712546977,\ +-3,-0.270763,-4.0372797979798,3.14757887198727,-0.679075652421198,-0.0421673421206112,-2.24169043833233,\ +-3,-0.270763,-4.00974898989899,3.14757827182322,-0.67907700222257,-0.0421708676558273,-2.24169388242332,\ +-3,-0.270763,-3.98221818181818,3.14757764740523,-0.679078406572376,-0.0421745356656552,-2.24169746569758,\ +-3,-0.270763,-3.95468737373737,3.14757699723274,-0.679079868845441,-0.0421783549647724,-2.24170119676616,\ +-3,-0.270763,-3.92715656565657,3.14757631967883,-0.679081392700845,-0.0421823351103012,-2.2417050849654,\ +-3,-0.270763,-3.89962575757576,3.14757561297654,-0.679082982112498,-0.0421864864816589,-2.24170914043495,\ +-3,-0.270763,-3.87209494949495,3.14757487520358,-0.679084641403736,-0.0421908203709386,-2.24171337420602,\ +-3,-0.270763,-3.84456414141414,3.14757410426486,-0.679086375286601,-0.0421953490854818,-2.24171779830165,\ +-3,-0.270763,-3.81703333333333,3.14757329787253,-0.679088188906523,-0.0422000860645985,-2.2417224258507,\ +-3,-0.270763,-3.78950252525252,3.14757245352342,-0.679090087893327,-0.042205046012773,-2.24172727121793,\ +-3,-0.270763,-3.76197171717172,3.14757156847298,-0.679092078419593,-0.04221024505213,-2.24173235015304,\ +-3,-0.270763,-3.73444090909091,3.14757063970558,-0.679094167267698,-0.0422157008974959,-2.24173767996163,\ +-3,-0.270763,-3.7069101010101,3.14756966390008,-0.679096361907012,-0.0422214330580563,-2.24174327970218,\ +-3,-0.270763,-3.67937929292929,3.14756863739023,-0.67909867058314,-0.0422274630704525,-2.24174917041384,\ +-3,-0.270763,-3.65184848484848,3.14756755611861,-0.679101102421465,-0.0422338147691786,-2.24175537538046,\ +-3,-0.270763,-3.62431767676768,3.14756641558301,-0.679103667547672,-0.0422405146014427,-2.2417619204383,\ +-3,-0.270763,-3.59678686868687,3.14756521077381,-0.679106377228699,-0.0422475919952596,-2.24176883433557,\ +-3,-0.270763,-3.56925606060606,3.14756393610037,-0.679109244038165,-0.0422550797915747,-2.24177614915452,\ +-3,-0.270763,-3.54172525252525,3.14756258530434,-0.679112282051476,-0.0422630147538099,-2.24178390080931,\ +-3,-0.270763,-3.51419444444444,3.14756115135683,-0.679115507076915,-0.0422714381715073,-2.24179212963564,\ +-3,-0.270763,-3.48666363636364,3.14755962633617,-0.679118936930813,-0.0422803965789875,-2.24180088109282,\ +-3,-0.270763,-3.45913282828283,3.1475580012814,-0.679122591766828,-0.042289942615432,-2.24181020660401,\ +-3,-0.270763,-3.43160202020202,3.14755626601613,-0.679126494472248,-0.0423001360599562,-2.24182016456735,\ +-3,-0.270763,-3.40407121212121,3.14755440893516,-0.679130671147736,-0.0423110450846667,-2.24183082158009,\ +-3,-0.270763,-3.3765404040404,3.14755241674468,-0.679135151691789,-0.0423227477812158,-2.24184225392987,\ +-3,-0.270763,-3.3490095959596,3.14755027414353,-0.679139970517596,-0.0423353340331189,-2.24185454942378,\ +-3,-0.270763,-3.32147878787879,3.14754796342939,-0.679145167438598,-0.0423489078287898,-2.24186780964797,\ +-3,-0.270763,-3.29394797979798,3.14754546400861,-0.679150788771048,-0.0423635901412662,-2.24188215278086,\ +-3,-0.270763,-3.26641717171717,3.14754275178072,-0.679156888718166,-0.0423795225434954,-2.24189771712489,\ +-3,-0.270763,-3.23888636363636,3.14753979835886,-0.679163531123574,-0.0423968717881246,-2.24191466558049,\ +-3,-0.270763,-3.21135555555555,3.14753657007241,-0.679170791714308,-0.042415835665966,-2.24193319136929,\ +-3,-0.270763,-3.18382474747475,3.14753302667768,-0.6791787610006,-0.0424366505799723,-2.24195352543302,\ +-3,-0.270763,-3.15629393939394,3.14752911967162,-0.679187548068405,-0.0424596014508562,-2.24197594611039,\ +-3,-0.270763,-3.12876313131313,3.14752479005841,-0.679197285602569,-0.042485034837083,-2.24200079195392,\ +-3,-0.270763,-3.10123232323232,3.14751996534972,-0.679208136633213,-0.0425133765557099,-2.24202847894378,\ +-3,-0.270763,-3.07370151515151,3.14751455547367,-0.679220303736856,-0.0425451557146914,-2.24205952396487,\ +-3,-0.270763,-3.04617070707071,3.14750844709907,-0.67923404180153,-0.0425810380540006,-2.24209457737773,\ +-3,-0.270763,-3.0186398989899,3.14750149560935,-0.679249676077666,-0.0426218730925926,-2.2421344690764,\ +-3,-0.270763,-2.99110909090909,3.14749351350691,-0.679267628257534,-0.0426687622450835,-2.24218027503145,\ +-3,-0.270763,-2.96357828282828,3.1474842532469,-0.679288455082835,-0.0427231596605778,-2.24223341579933,\ +-3,-0.270763,-2.93604747474747,3.14747338110715,-0.679312907112859,-0.042787025718787,-2.24229580647256,\ +-3,-0.270763,-2.90851666666667,3.14746043611209,-0.679342021106458,-0.0428630683217178,-2.24237009239727,\ +-3,-0.270763,-2.88098585858586,3.14744476298704,-0.679377270811905,-0.0429551367404835,-2.24246003392163,\ +-3,-0.270763,-2.85345505050505,3.14742539772996,-0.679420824321852,-0.0430688937986447,-2.24257116305098,\ +-3,-0.270763,-2.82592424242424,3.14740086151891,-0.679476007586795,-0.0432130265192199,-2.24271196612736,\ +-3,-0.270763,-2.79839343434343,3.14736876408733,-0.679548196445455,-0.0434015760116244,-2.24289615989317,\ +-3,-0.270763,-2.77086262626263,3.14732497363071,-0.67964668354944,-0.0436588136769513,-2.24314745505011,\ +-3,-0.270763,-2.74333181818182,3.14726167746069,-0.679789040057272,-0.0440306334811471,-2.24351068535672,\ +-3,-0.270763,-2.71580101010101,3.14716210855238,-0.680012975914213,-0.0446155297233216,-2.24408206977193,\ +-3,-0.270763,-2.6882702020202,3.14698256504539,-0.680416778966593,-0.0456702196293584,-2.24511239503602,\ +-3,-0.270763,-2.66073939393939,3.1465620256981,-0.681362594690722,-0.0481405880213998,-2.24752569486128,\ +-3,-0.270763,-2.63320858585858,3.14442504590561,-0.686168777757561,-0.0606938184570791,-2.25978893014002,\ +-3,-0.270763,-2.60567777777778,3.15066859803333,-0.672126691529765,-0.024017407724529,-2.22395978988026,\ +-3,-0.270763,-2.57814696969697,3.14864247170256,-0.676683559169085,-0.0359194532242034,-2.23558688340082,\ +-3,-0.270763,-2.55061616161616,3.1482307972358,-0.677609437297703,-0.0383377467727964,-2.23794931137595,\ +-3,-0.270763,-2.52308535353535,3.14805369600547,-0.678007747537838,-0.0393780900472366,-2.23896562143338,\ +-3,-0.270763,-2.49555454545454,3.1479551321382,-0.678229423003154,-0.0399570823909252,-2.23953123833746,\ +-3,-0.270763,-2.46802373737374,3.14789234471582,-0.678370635310028,-0.0403259136659443,-2.23989154915362,\ +-3,-0.270763,-2.44049292929293,3.14784884686362,-0.678468464330887,-0.0405814324893125,-2.24014116517598,\ +-3,-0.270763,-2.41296212121212,3.14781693301392,-0.678540240303949,-0.0407689035691833,-2.24032430544192,\ +-3,-0.270763,-2.38543131313131,3.14779251949318,-0.678595147631776,-0.0409123155718564,-2.24046440444987,\ +-3,-0.270763,-2.3579005050505,3.14777324026369,-0.678638507661017,-0.0410255672793329,-2.24057503990276,\ +-3,-0.270763,-2.3303696969697,3.14775762977901,-0.678673616484888,-0.0411172677306549,-2.24066462196019,\ +-3,-0.270763,-2.30283888888889,3.14774473180566,-0.678702624724133,-0.0411930341146434,-2.24073863804694,\ +-3,-0.270763,-2.27530808080808,3.14773389586063,-0.678726995350243,-0.0412566875546335,-2.2408008210137,\ +-3,-0.270763,-2.24777727272727,3.14772466405413,-0.678747758182104,-0.0413109178261878,-2.24085379849888,\ +-3,-0.270763,-2.22024646464646,3.14771670472383,-0.67876565914616,-0.0413576732085118,-2.24089947377402,\ +-3,-0.270763,-2.19271565656565,3.14770977174263,-0.678781251795653,-0.0413983995228148,-2.24093925926006,\ +-3,-0.270763,-2.16518484848485,3.14770367861445,-0.678794955570269,-0.0414341923002094,-2.24097422518001,\ +-3,-0.270763,-2.13765404040404,3.14769828144663,-0.678807094092456,-0.0414658968075139,-2.24100519727396,\ +-3,-0.270763,-2.11012323232323,3.1476934674416,-0.678817921049982,-0.0414941756497582,-2.24103282283996,\ +-3,-0.270763,-2.08259242424242,3.14768914692794,-0.678827638118742,-0.041519555582565,-2.24105761646491,\ +-3,-0.270763,-2.05506161616161,3.14768524772256,-0.678836407642395,-0.0415424606300184,-2.24107999237742,\ +-3,-0.270763,-2.02753080808081,3.14768171106557,-0.67884436177515,-0.0415632359646268,-2.24110028777609,\ +-3,-0.270763,-2,3.14767848863862,-0.678851609187562,-0.0415821654221223,-2.2411187799397,\ +-3,-0.257969,-4.72555,3.14758865130196,-0.679053658213823,-0.0421098956293786,-2.24163431892613,\ +-3,-0.257969,-4.69801919191919,3.14758837775455,-0.679054273436734,-0.0421115025250886,-2.24163588870056,\ +-3,-0.257969,-4.67048838383838,3.14758809681649,-0.679054905281606,-0.0421131528355706,-2.24163750088683,\ +-3,-0.257969,-4.64295757575758,3.14758780818417,-0.679055554431301,-0.0421148483443752,-2.24163915722728,\ +-3,-0.257969,-4.61542676767677,3.14758751153711,-0.679056221606599,-0.0421165909341046,-2.24164085956103,\ +-3,-0.257969,-4.58789595959596,3.14758720653675,-0.679056907568874,-0.0421183825933848,-2.24164260983077,\ +-3,-0.257969,-4.56036515151515,3.14758689282526,-0.679057613122988,-0.0421202254244371,-2.24164441009014,\ +-3,-0.257969,-4.53283434343434,3.147586570024,-0.679058339120453,-0.0421221216513054,-2.24164626251183,\ +-3,-0.257969,-4.50530353535354,3.14758623773213,-0.679059086462843,-0.0421240736288117,-2.24164816939623,\ +-3,-0.257969,-4.47777272727273,3.14758589552484,-0.67905985610554,-0.0421260838523111,-2.24165013318108,\ +-3,-0.257969,-4.45024191919192,3.14758554295159,-0.679060649061811,-0.0421281549683341,-2.24165215645176,\ +-3,-0.257969,-4.42271111111111,3.14758517953417,-0.679061466407239,-0.0421302897862117,-2.2416542419527,\ +-3,-0.257969,-4.3951803030303,3.14758480476445,-0.679062309284622,-0.0421324912907886,-2.2416563925998,\ +-3,-0.257969,-4.36764949494949,3.14758441810204,-0.679063178909277,-0.0421347626563468,-2.241658611494,\ +-3,-0.257969,-4.34011868686869,3.14758401897175,-0.679064076574901,-0.042137107261878,-2.24166090193624,\ +-3,-0.257969,-4.31258787878788,3.14758360676062,-0.679065003659981,-0.042139528707855,-2.24166326744383,\ +-3,-0.257969,-4.28505707070707,3.14758318081492,-0.679065961634873,-0.0421420308346805,-2.24166571176843,\ +-3,-0.257969,-4.25752626262626,3.14758274043658,-0.679066952069572,-0.0421446177430126,-2.24166823891598,\ +-3,-0.257969,-4.22999545454545,3.1475822848794,-0.679067976642306,-0.0421472938161896,-2.24167085316854,\ +-3,-0.257969,-4.20246464646465,3.14758181334484,-0.679069037149008,-0.0421500637450165,-2.24167355910859,\ +-3,-0.257969,-4.17493383838384,3.14758132497737,-0.679070135513847,-0.0421529325552038,-2.24167636164571,\ +-3,-0.257969,-4.14740303030303,3.14758081885924,-0.679071273800866,-0.0421559056378011,-2.24167926604643,\ +-3,-0.257969,-4.11987222222222,3.14758029400478,-0.679072454226921,-0.042158988783007,-2.24168227796716,\ +-3,-0.257969,-4.09234141414141,3.14757974935394,-0.679073679176103,-0.0421621882178084,-2.24168540349106,\ +-3,-0.257969,-4.06481060606061,3.14757918376518,-0.679074951215807,-0.0421655106479586,-2.24168864916896,\ +-3,-0.257969,-4.0372797979798,3.14757859600746,-0.679076273114689,-0.0421689633048904,-2.24169202206524,\ +-3,-0.257969,-4.00974898989899,3.14757798475132,-0.679077647862789,-0.0421725539982599,-2.24169552980916,\ +-3,-0.257969,-3.98221818181818,3.14757734855883,-0.679079078694099,-0.0421762911749162,-2.2416991806524,\ +-3,-0.257969,-3.95468737373737,3.14757668587228,-0.679080569111976,-0.0421801839852426,-2.241702983534,\ +-3,-0.257969,-3.92715656565657,3.14757599500146,-0.679082122917776,-0.0421842423579591,-2.24170694815328,\ +-3,-0.257969,-3.89962575757576,3.14757527410929,-0.679083744243214,-0.0421884770846774,-2.24171108505257,\ +-3,-0.257969,-3.87209494949495,3.14757452119549,-0.679085437587076,-0.0421928999157261,-2.24171540571075,\ +-3,-0.257969,-3.84456414141414,3.14757373407799,-0.679087207856884,-0.0421975236690303,-2.24171992264963,\ +-3,-0.257969,-3.81703333333333,3.1475729103719,-0.67908906041641,-0.04220236235418,-2.24172464955516,\ +-3,-0.257969,-3.78950252525252,3.14757204746531,-0.679091001139954,-0.0422074313142082,-2.24172960141595,\ +-3,-0.257969,-3.76197171717172,3.14757114249169,-0.67909303647456,-0.0422127473881066,-2.24173479468196,\ +-3,-0.257969,-3.73444090909091,3.14757019229798,-0.679095173511579,-0.0422183290977011,-2.24174024744715,\ +-3,-0.257969,-3.7069101010101,3.14756919340797,-0.679097420069199,-0.0422241968632618,-2.24174597966006,\ +-3,-0.257969,-3.67937929292929,3.14756814197978,-0.679099784788028,-0.0422303732531295,-2.24175201336769,\ +-3,-0.257969,-3.65184848484848,3.14756703375647,-0.679102277242165,-0.0422368832737993,-2.24175837299882,\ +-3,-0.257969,-3.62431767676768,3.14756586400843,-0.679104908068737,-0.0422437547083149,-2.24176508569469,\ +-3,-0.257969,-3.59678686868687,3.14756462746591,-0.679107689119679,-0.042251018512631,-2.24177218169615,\ +-3,-0.257969,-3.56925606060606,3.1475633182397,-0.679110633640221,-0.0422587092818723,-2.2417796947991,\ +-3,-0.257969,-3.54172525252525,3.14756192972721,-0.679113756479857,-0.0422668658012993,-2.24178766289283,\ +-3,-0.257969,-3.51419444444444,3.14756045450125,-0.679117074342794,-0.0422755317005008,-2.24179612859904,\ +-3,-0.257969,-3.48666363636364,3.14755888417702,-0.679120606086865,-0.0422847562340988,-2.2418051400345,\ +-3,-0.257969,-3.45913282828283,3.14755720925272,-0.679124373082165,-0.0422945952184661,-2.24181475172615,\ +-3,-0.257969,-3.43160202020202,3.14755541891706,-0.679128399643819,-0.0423051121620752,-2.24182502571535,\ +-3,-0.257969,-3.40407121212121,3.14755350081573,-0.6791327135574,-0.0423163796378473,-2.24183603289849,\ +-3,-0.257969,-3.3765404040404,3.14755144076581,-0.679137346721014,-0.042328480960184,-2.2418478546653,\ +-3,-0.257969,-3.3490095959596,3.14754922240455,-0.6791423359354,-0.0423415122486272,-2.24186058491486,\ +-3,-0.257969,-3.32147878787879,3.14754682675379,-0.679147723883453,-0.0423555849863006,-2.24187433255488,\ +-3,-0.257969,-3.29394797979798,3.14754423167569,-0.679153560354406,-0.0423708292172819,-2.24188922462527,\ +-3,-0.257969,-3.26641717171717,3.14754141118654,-0.679159903786972,-0.0423873975771634,-2.24190541023553,\ +-3,-0.257969,-3.23888636363636,3.14753833458378,-0.679166823232867,-0.0424054704215875,-2.24192306557488,\ +-3,-0.257969,-3.21135555555555,3.14753496532378,-0.679174400880713,-0.042425262418319,-2.241942400352,\ +-3,-0.257969,-3.18382474747475,3.14753125956343,-0.67918273533607,-0.0424470311144379,-2.2419636661643,\ +-3,-0.257969,-3.15629393939394,3.14752716424171,-0.679191945935974,-0.0424710882053661,-2.24198716750666,\ +-3,-0.257969,-3.12876313131313,3.14752261452288,-0.67920217849958,-0.0424978145549649,-2.24201327644451,\ +-3,-0.257969,-3.10123232323232,3.14751753033833,-0.679213613105446,-0.0425276805089633,-2.24204245245801,\ +-3,-0.257969,-3.07370151515151,3.14751181163396,-0.679226474780708,-0.0425612738139012,-2.24207526971603,\ +-3,-0.257969,-3.04617070707071,3.14750533171944,-0.679241048458704,-0.0425993386848434,-2.24211245524135,\ +-3,-0.257969,-3.0186398989899,3.14749792777257,-0.679257700335453,-0.0426428315862025,-2.24215494340287,\ +-3,-0.257969,-2.99110909090909,3.14748938696922,-0.679276909063846,-0.0426930027075539,-2.24220395550924,\ +-3,-0.257969,-2.96357828282828,3.1474794256932,-0.67929931251208,-0.0427515180916576,-2.24226111911556,\ +-3,-0.257969,-2.93604747474747,3.14746765743174,-0.679325779968213,-0.0428206482249173,-2.2423286522572,\ +-3,-0.257969,-2.90851666666667,3.14745354145715,-0.679357527558109,-0.0429035694965829,-2.24240965794488,\ +-3,-0.257969,-2.88098585858586,3.14743629739187,-0.679396310393018,-0.0430048660674358,-2.2425086144396,\ +-3,-0.257969,-2.85345505050505,3.14741475589961,-0.679444758373554,-0.0431314069534842,-2.24263223207459,\ +-3,-0.257969,-2.82592424242424,3.14738708185792,-0.679506998789203,-0.0432939721885553,-2.24279104185156,\ +-3,-0.257969,-2.79839343434343,3.14735022186608,-0.679589898903331,-0.0435104983219383,-2.24300256596333,\ +-3,-0.257969,-2.77086262626263,3.14729869209945,-0.679705792133892,-0.043813198907613,-2.2432982737909,\ +-3,-0.257969,-2.74333181818182,3.14722155937276,-0.679879267805602,-0.0442662986026602,-2.24374090632231,\ +-3,-0.257969,-2.71580101010101,3.14709343481826,-0.680167426854384,-0.045018938876912,-2.24447615967488,\ +-3,-0.257969,-2.6882702020202,3.14683878608716,-0.680740145615572,-0.0465148183480079,-2.24593748247913,\ +-3,-0.257969,-2.66073939393939,3.14608740599633,-0.682430040055363,-0.0509286398815698,-2.25024933927343,\ +-3,-0.257969,-2.63320858585858,3.08593271381617,-0.817721194404728,-0.40429450481801,-2.59545201546073,\ +-3,-0.257969,-2.60567777777778,3.14920993499369,-0.675407303553325,-0.0325860115686025,-2.23233044837239,\ +-3,-0.257969,-2.57814696969697,3.14839930109681,-0.677230463005875,-0.0373479069043692,-2.23698233803334,\ +-3,-0.257969,-2.55061616161616,3.14813368568115,-0.677827846433395,-0.0389082078167257,-2.23850659406384,\ +-3,-0.257969,-2.52308535353535,3.14800172324767,-0.678124637079493,-0.0396833928897467,-2.23926387140243,\ +-3,-0.257969,-2.49555454545454,3.14792281421212,-0.678302107765851,-0.0401469271310409,-2.23971669742916,\ +-3,-0.257969,-2.46802373737374,3.14787031955841,-0.678420171079603,-0.0404552957393395,-2.24001794234102,\ +-3,-0.257969,-2.44049292929293,3.14783287777738,-0.678504379669047,-0.0406752394687445,-2.24023280509811,\ +-3,-0.257969,-2.41296212121212,3.14780482613507,-0.678567469328895,-0.0408400228378282,-2.24039378176745,\ +-3,-0.257969,-2.38543131313131,3.1477830257624,-0.678616499545453,-0.0409680844614065,-2.24051888500906,\ +-3,-0.257969,-2.3579005050505,3.14776559652217,-0.678655698848865,-0.0410704688029532,-2.24061890414563,\ +-3,-0.257969,-2.3303696969697,3.1477513435394,-0.67868775457755,-0.0411541948998113,-2.24070069606603,\ +-3,-0.257969,-2.30283888888889,3.1477394710722,-0.678714456398042,-0.041223937167437,-2.24076882720098,\ +-3,-0.257969,-2.27530808080808,3.14772942869972,-0.678737042236583,-0.0412829289353012,-2.24082645618601,\ +-3,-0.257969,-2.24777727272727,3.1477208235489,-0.678756395685931,-0.041333478052137,-2.24087583755569,\ +-3,-0.257969,-2.22024646464646,3.1477133676898,-0.678773164316054,-0.0413772759006773,-2.24091862361974,\ +-3,-0.257969,-2.19271565656565,3.14770684528899,-0.678787833548055,-0.0414155903483511,-2.24095605295626,\ +-3,-0.257969,-2.16518484848485,3.14770109137304,-0.67880077441609,-0.0414493904962471,-2.24098907227891,\ +-3,-0.257969,-2.13765404040404,3.14769597768084,-0.678812275386234,-0.0414794297865657,-2.24101841762445,\ +-3,-0.257969,-2.11012323232323,3.1476914029897,-0.678822564113901,-0.0415063028306203,-2.24104466986793,\ +-3,-0.257969,-2.08259242424242,3.14768728634704,-0.678831822665753,-0.0415304851668496,-2.24106829356227,\ +-3,-0.257969,-2.05506161616161,3.14768356223846,-0.678840198387264,-0.0415523616456941,-2.24108966466739,\ +-3,-0.257969,-2.02753080808081,3.14768017707495,-0.678847811802977,-0.041572247064234,-2.24110909070815,\ +-3,-0.257969,-2,3.14767708659761,-0.678854762453571,-0.0415904014119484,-2.24112682566796,\ +-3,-0.254961,-4.72555,3.147588621765,-0.679053724644026,-0.0421100691378789,-2.24163448842637,\ +-3,-0.254961,-4.69801919191919,3.14758834742439,-0.679054341650918,-0.0421116806931648,-2.24163606275273,\ +-3,-0.254961,-4.67048838383838,3.14758806566073,-0.679054975352618,-0.0421133358534742,-2.24163767967679,\ +-3,-0.254961,-4.64295757575758,3.14758777616862,-0.679055626435998,-0.0421150364128577,-2.24163934095115,\ +-3,-0.254961,-4.61542676767677,3.14758747862569,-0.679056295626144,-0.0421167842651519,-2.2416410484259,\ +-3,-0.254961,-4.58789595959596,3.14758717269134,-0.679056983689034,-0.0421185814110146,-2.24164280405546,\ +-3,-0.254961,-4.56036515151515,3.14758685800551,-0.679057691434472,-0.0421204299655644,-2.24164460990611,\ +-3,-0.254961,-4.53283434343434,3.14758653418725,-0.679058419719266,-0.0421223321666849,-2.24164646816403,\ +-3,-0.254961,-4.50530353535354,3.14758620083313,-0.679059169450677,-0.0421242903840619,-2.24164838114417,\ +-3,-0.254961,-4.47777272727273,3.14758585751567,-0.679059941590214,-0.0421263071290336,-2.24165035129984,\ +-3,-0.254961,-4.45024191919192,3.14758550378139,-0.679060737157723,-0.0421283850653339,-2.24165238123323,\ +-3,-0.254961,-4.42271111111111,3.14758513914891,-0.679061557235893,-0.0421305270208306,-2.24165447370691,\ +-3,-0.254961,-4.3951803030303,3.14758476310669,-0.679062402975172,-0.0421327360003656,-2.24165663165628,\ +-3,-0.254961,-4.36764949494949,3.14758437511069,-0.679063275599143,-0.0421350151998191,-2.24165885820341,\ +-3,-0.254961,-4.34011868686869,3.14758397458171,-0.67906417641045,-0.0421373680215366,-2.24166115667204,\ +-3,-0.254961,-4.31258787878788,3.14758356090254,-0.679065106797259,-0.0421397980912758,-2.24166353060416,\ +-3,-0.254961,-4.28505707070707,3.14758313341475,-0.679066068240425,-0.0421423092768501,-2.24166598377823,\ +-3,-0.254961,-4.25752626262626,3.1475826914152,-0.679067062321327,-0.0421449057086716,-2.24166852022927,\ +-3,-0.254961,-4.22999545454545,3.14758223415217,-0.679068090730578,-0.0421475918024209,-2.24167114427093,\ +-3,-0.254961,-4.20246464646465,3.14758176082117,-0.679069155277592,-0.0421503722841086,-2.24167386052005,\ +-3,-0.254961,-4.17493383838384,3.1475812705601,-0.679070257901236,-0.0421532522178242,-2.24167667392373,\ +-3,-0.254961,-4.14740303030303,3.14758076244409,-0.679071400681585,-0.0421562370365171,-2.24167958978942,\ +-3,-0.254961,-4.11987222222222,3.14758023547968,-0.679072585853041,-0.0421593325762051,-2.24168261381831,\ +-3,-0.254961,-4.09234141414141,3.14757968859827,-0.679073815818917,-0.0421625451140582,-2.24168575214256,\ +-3,-0.254961,-4.06481060606061,3.14757912064892,-0.679075093167676,-0.042165881410887,-2.2416890113668,\ +-3,-0.254961,-4.0372797979798,3.14757853039034,-0.679076420691145,-0.0421693487586359,-2.24169239861453,\ +-3,-0.254961,-4.00974898989899,3.14757791648169,-0.679077801404875,-0.0421729550335866,-2.24169592158007,\ +-3,-0.254961,-3.98221818181818,3.14757727747254,-0.679079238570999,-0.0421767087560855,-2.24169958858694,\ +-3,-0.254961,-3.95468737373737,3.14757661179136,-0.679080735723971,-0.0421806191577525,-2.24170340865348,\ +-3,-0.254961,-3.92715656565657,3.14757591773261,-0.679082296699597,-0.0421846962572833,-2.24170739156697,\ +-3,-0.254961,-3.89962575757576,3.14757519344222,-0.679083925667831,-0.0421889509461574,-2.24171154796726,\ +-3,-0.254961,-3.87209494949495,3.14757443690098,-0.679085627169989,-0.0421933950857952,-2.24171588944178,\ +-3,-0.254961,-3.84456414141414,3.14757364590574,-0.679087406161022,-0.0421980416179907,-2.24172042863333,\ +-3,-0.254961,-3.81703333333333,3.14757281804806,-0.6790892680577,-0.0422029046907799,-2.24172517936312,\ +-3,-0.254961,-3.78950252525252,3.14757195068962,-0.679091218793727,-0.0422079998023304,-2.24173015677129,\ +-3,-0.254961,-3.76197171717172,3.14757104093417,-0.67909326488288,-0.0422133439659292,-2.2417353774781,\ +-3,-0.254961,-3.73444090909091,3.1475700855953,-0.67909541349168,-0.0422189558997696,-2.24174085976932,\ +-3,-0.254961,-3.7069101010101,3.14756908115896,-0.679097672523271,-0.0422248562460032,-2.24174662381025,\ +-3,-0.254961,-3.67937929292929,3.14756802374051,-0.679100050714552,-0.0422310678244494,-2.24175269189354,\ +-3,-0.254961,-3.65184848484848,3.14756690903428,-0.679102557749087,-0.0422376159275473,-2.24175908872736,\ +-3,-0.254961,-3.62431767676768,3.14756573225517,-0.679105204388916,-0.0422445286645768,-2.24176584177161,\ +-3,-0.254961,-3.59678686868687,3.14756448806985,-0.679108002628984,-0.0422518373650309,-2.24177298163205,\ +-3,-0.254961,-3.56925606060606,3.14756317051596,-0.679110965878892,-0.0422595770533516,-2.24178054252399,\ +-3,-0.254961,-3.54172525252525,3.14756177290664,-0.679114109177803,-0.0422677870101946,-2.24178856282067,\ +-3,-0.254961,-3.51419444444444,3.14756028771694,-0.679117449449715,-0.042276511439216,-2.24179708570459,\ +-3,-0.254961,-3.48666363636364,3.14755870644833,-0.679121005808299,-0.0422858002632595,-2.2418061599453,\ +-3,-0.254961,-3.45913282828283,3.14755701946595,-0.679124799922871,-0.0422957100802298,-2.24181584083323,\ +-3,-0.254961,-3.43160202020202,3.14755521580213,-0.679128856460292,-0.0423063053173055,-2.24182619130722,\ +-3,-0.254961,-3.40407121212121,3.1475532829177,-0.679133203621861,-0.0423176596332314,-2.24183728332439,\ +-3,-0.254961,-3.3765404040404,3.14755120641001,-0.679137873799886,-0.0423298576331982,-2.24184919953547,\ +-3,-0.254961,-3.3490095959596,3.14754896965348,-0.679142904386241,-0.04234299698075,-2.24186203534784,\ +-3,-0.254961,-3.32147878787879,3.14754655335343,-0.679148338775662,-0.0423571910182542,-2.24187590148551,\ +-3,-0.254961,-3.29394797979798,3.14754393498813,-0.679154227620742,-0.0423725720447906,-2.2418909271913,\ +-3,-0.254961,-3.26641717171717,3.14754108810469,-0.679160630415487,-0.0423892954522769,-2.24190726426738,\ +-3,-0.254961,-3.23888636363636,3.14753798142215,-0.679167617512442,-0.0424075449939446,-2.24192509222205,\ +-3,-0.254961,-3.21135555555555,3.14753457767738,-0.679175272718422,-0.0424275395641423,-2.24194462489294,\ +-3,-0.254961,-3.18382474747475,3.14753083212319,-0.679183696672276,-0.0424495420206506,-2.24196611906547,\ +-3,-0.254961,-3.15629393939394,3.1475266905501,-0.679193011294015,-0.0424738708053586,-2.24198988582515,\ +-3,-0.254961,-3.12876313131313,3.14752208664566,-0.679203365723958,-0.0425009154566529,-2.24201630571153,\ +-3,-0.254961,-3.10123232323232,3.14751693841703,-0.679214944368438,-0.0425311576239411,-2.24204584924733,\ +-3,-0.254961,-3.07370151515151,3.14751114326502,-0.679227977978581,-0.042565200004193,-2.24207910520647,\ +-3,-0.254961,-3.04617070707071,3.14750457107663,-0.679242759185504,-0.0426038069182538,-2.24211682025305,\ +-3,-0.254961,-3.0186398989899,3.14749705433948,-0.679259664733672,-0.0426479623819229,-2.24215995567086,\ +-3,-0.254961,-2.99110909090909,3.14748837366381,-0.679279188042482,-0.0426989551533019,-2.24220977044612,\ +-3,-0.254961,-2.96357828282828,3.14747823601469,-0.679301988163352,-0.0427585066034404,-2.24226794618408,\ +-3,-0.254961,-2.93604747474747,3.14746624097939,-0.679328965646106,-0.0428289688710805,-2.24233678068614,\ +-3,-0.254961,-2.90851666666667,3.14745182662399,-0.67936138431057,-0.0429136429169436,-2.24241949865677,\ +-3,-0.254961,-2.88098585858586,3.14743417891424,-0.679401074963747,-0.0430173106109446,-2.24252077149875,\ +-3,-0.254961,-2.85345505050505,3.14741207248172,-0.679450793525418,-0.0431471701175208,-2.24264763109003,\ +-3,-0.254961,-2.82592424242424,3.14738357324687,-0.679514889845125,-0.0433145827732969,-2.2428111763063,\ +-3,-0.254961,-2.79839343434343,3.14734543944441,-0.679600654828185,-0.0435385916345247,-2.24303001028563,\ +-3,-0.254961,-2.77086262626263,3.14729179160353,-0.679721311722228,-0.0438537343940766,-2.24333787285747,\ +-3,-0.254961,-2.74333181818182,3.14721074472383,-0.679903590535623,-0.0443298269432495,-2.24380296707962,\ +-3,-0.254961,-2.71580101010101,3.14707411086271,-0.680210887474957,-0.0451324533180659,-2.24458705179197,\ +-3,-0.254961,-2.6882702020202,3.14679485577048,-0.680838947272412,-0.0467728775913798,-2.24618958023465,\ +-3,-0.254961,-2.66073939393939,3.14590589880698,-0.682838259535493,-0.0519948650193022,-2.25129093329109,\ +-3,-0.254961,-2.63320858585858,3.16619220517938,-0.637213259936344,0.0671727001006237,-2.13487628638816,\ +-3,-0.254961,-2.60567777777778,3.14904858412793,-0.67577019037218,-0.0335338326972945,-2.23325637366014,\ +-3,-0.254961,-2.57814696969697,3.14835787577266,-0.677323630799109,-0.0375912511052462,-2.23722006068205,\ +-3,-0.254961,-2.55061616161616,3.14811510315243,-0.67786963954499,-0.0390173669047503,-2.23861323144186,\ +-3,-0.254961,-2.52308535353535,3.14799122127121,-0.678148256592225,-0.0397450845028164,-2.2393241378629,\ +-3,-0.254961,-2.49555454545454,3.1479160737768,-0.678317267369242,-0.0401865223757588,-2.23975537797473,\ +-3,-0.254961,-2.46802373737374,3.1478656297557,-0.678430718699422,-0.0404828449816926,-2.24004485516178,\ +-3,-0.254961,-2.44049292929293,3.14782942748866,-0.678512139554886,-0.0406955074514167,-2.2402526048653,\ +-3,-0.254961,-2.41296212121212,3.14780218178717,-0.678573416610285,-0.040855556493687,-2.24040895657664,\ +-3,-0.254961,-2.38543131313131,3.14778093472415,-0.678621202403495,-0.0409803678180513,-2.24053088460497,\ +-3,-0.254961,-2.3579005050505,3.14776390169198,-0.678659510613587,-0.0410804247202099,-2.24062863006887,\ +-3,-0.254961,-2.3303696969697,3.14774994211537,-0.678690906455942,-0.0411624272653315,-2.24070873825372,\ +-3,-0.254961,-2.30283888888889,3.14773829296921,-0.678717106015356,-0.0412308576813362,-2.24077558784245,\ +-3,-0.254961,-2.27530808080808,3.1477284244987,-0.678739300738968,-0.0412888278992943,-2.24083221887663,\ +-3,-0.254961,-2.24777727272727,3.14771995740525,-0.67875834368982,-0.0413385660276395,-2.24088080799267,\ +-3,-0.254961,-2.22024646464646,3.14771261297355,-0.678774861713726,-0.0413817093198408,-2.24092295462143,\ +-3,-0.254961,-2.19271565656565,3.14770618180337,-0.678789325763107,-0.041419487852706,-2.24095986042344,\ +-3,-0.254961,-2.16518484848485,3.14770050352296,-0.678802096522666,-0.0414528436956551,-2.24099244570514,\ +-3,-0.254961,-2.13765404040404,3.14769545323331,-0.678813454897077,-0.0414825105413306,-2.24102142720997,\ +-3,-0.254961,-2.11012323232323,3.14769093221424,-0.67882362291337,-0.0415090683003356,-2.24104737145188,\ +-3,-0.254961,-2.08259242424242,3.14768686140703,-0.678832778378818,-0.0415329813860212,-2.24107073211569,\ +-3,-0.254961,-2.05506161616161,3.14768317675185,-0.678841065367503,-0.0415546261043218,-2.24109187681421,\ +-3,-0.254961,-2.02753080808081,3.14767982579179,-0.678848601857815,-0.0415743106020366,-2.24111110657567,\ +-3,-0.254961,-2,3.1476767651597,-0.678855485384799,-0.0415922896301396,-2.24112867026598,\ +-3,-0.253782,-4.72555,3.14758861016466,-0.679053750733852,-0.0421101372816836,-2.24163455499597,\ +-3,-0.253782,-4.69801919191919,3.14758833551218,-0.679054368442103,-0.0421117506688433,-2.24163613111189,\ +-3,-0.253782,-4.67048838383838,3.14758805342393,-0.679055002873827,-0.0421134077358994,-2.24163774989865,\ +-3,-0.253782,-4.64295757575758,3.14758776359379,-0.679055654717485,-0.0421151102810395,-2.24163941311288,\ +-3,-0.253782,-4.61542676767677,3.1475874656986,-0.679056324699848,-0.0421168602025261,-2.24164112260902,\ +-3,-0.253782,-4.58789595959596,3.147587159397,-0.679057013588721,-0.0421186595057583,-2.24164288034612,\ +-3,-0.253782,-4.56036515151515,3.14758684432804,-0.679057722195841,-0.0421205103109364,-2.24164468839542,\ +-3,-0.253782,-4.53283434343434,3.14758652010983,-0.679058451380114,-0.0421224148613977,-2.2416465489484,\ +-3,-0.253782,-4.50530353535354,3.14758618633799,-0.679059202051042,-0.0421243755326866,-2.24164846432575,\ +-3,-0.253782,-4.47777272727273,3.14758584258391,-0.679059975172541,-0.0421263948424406,-2.24165043698696,\ +-3,-0.253782,-4.45024191919192,3.147585488393,-0.67906077176706,-0.0421284754611743,-2.24165246954082,\ +-3,-0.253782,-4.42271111111111,3.1475851232826,-0.679061592920078,-0.0421306202240633,-2.24165456475703,\ +-3,-0.253782,-4.3951803030303,3.14758474673985,-0.679062439785067,-0.0421328321438327,-2.24165672557871,\ +-3,-0.253782,-4.36764949494949,3.14758435821927,-0.679063313588871,-0.0421351144248786,-2.24165895513625,\ +-3,-0.253782,-4.34011868686869,3.14758395714007,-0.679064215637654,-0.0421374704787552,-2.24166125676236,\ +-3,-0.253782,-4.31258787878788,3.14758354288336,-0.679065147323408,-0.0421399039411912,-2.24166363400881,\ +-3,-0.253782,-4.28505707070707,3.14758311478884,-0.679066110131116,-0.0421424186908102,-2.2416660906646,\ +-3,-0.253782,-4.25752626262626,3.14758267215138,-0.67906710564666,-0.0421450188697603,-2.24166863077619,\ +-3,-0.253782,-4.22999545454545,3.14758221421714,-0.679068135565534,-0.0421477089064804,-2.24167125866974,\ +-3,-0.253782,-4.20246464646465,3.14758174017921,-0.679069201702471,-0.0421504935408698,-2.24167397897562,\ +-3,-0.253782,-4.17493383838384,3.14758124917293,-0.67907030600213,-0.0421533778521609,-2.24167679665576,\ +-3,-0.253782,-4.14740303030303,3.14758074027063,-0.679071450550923,-0.042156367289837,-2.24167971703372,\ +-3,-0.253782,-4.11987222222222,3.14758021247573,-0.679072637590175,-0.0421594677079982,-2.24168274582839,\ +-3,-0.253782,-4.09234141414141,3.14757966471629,-0.679073869530773,-0.0421626854036222,-2.24168588919126,\ +-3,-0.253782,-4.06481060606061,3.14757909583768,-0.679075148969515,-0.0421660271592539,-2.24168915374821,\ +-3,-0.253782,-4.0372797979798,3.14757850459451,-0.679076478707366,-0.0421695002907278,-2.24169254664605,\ +-3,-0.253782,-4.00974898989899,3.14757788964149,-0.679077861769949,-0.0421731127006336,-2.24169607560481,\ +-3,-0.253782,-3.98221818181818,3.14757724952323,-0.679079301430512,-0.042176872938343,-2.24169974897638,\ +-3,-0.253782,-3.95468737373737,3.14757658266274,-0.679080801235799,-0.0421807902675634,-2.24170357581044,\ +-3,-0.253782,-3.92715656565657,3.14757588734845,-0.679082365035217,-0.0421848747425344,-2.24170756592898,\ +-3,-0.253782,-3.89962575757576,3.14757516171955,-0.679083997013831,-0.0421891372941938,-2.24171173001043,\ +-3,-0.253782,-3.87209494949495,3.14757440374935,-0.679085701729764,-0.0421935898278643,-2.24171607968506,\ +-3,-0.253782,-3.84456414141414,3.14757361122641,-0.679087484156708,-0.0421982453342973,-2.24172062764354,\ +-3,-0.253782,-3.81703333333333,3.14757278173292,-0.679089349732401,-0.0422031180162611,-2.24172538776052,\ +-3,-0.253782,-3.78950252525252,3.14757191262015,-0.679091304414015,-0.0422082234332631,-2.24173037523607,\ +-3,-0.253782,-3.76197171717172,3.14757100098012,-0.679093354741725,-0.0422135786675208,-2.24173560675779,\ +-3,-0.253782,-3.73444090909091,3.14757004361314,-0.679095507911798,-0.042219202514905,-2.24174110068734,\ +-3,-0.253782,-3.7069101010101,3.1475690369903,-0.679097771860982,-0.0422251157053553,-2.24174687727578,\ +-3,-0.253782,-3.67937929292929,3.14756797720996,-0.679100155364278,-0.0422313411582156,-2.24175295891297,\ +-3,-0.253782,-3.65184848484848,3.14756685994721,-0.679102668148592,-0.0422379042791168,-2.24175937041766,\ +-3,-0.253782,-3.62431767676768,3.14756568039493,-0.679105321025421,-0.0422448333065132,-2.24176613937595,\ +-3,-0.253782,-3.59678686868687,3.14756443319461,-0.67910812604635,-0.0422521597178452,-2.24177329653811,\ +-3,-0.253782,-3.56925606060606,3.14756311235498,-0.679111096686103,-0.0422599187076421,-2.24178087628564,\ +-3,-0.253782,-3.54172525252525,3.14756171115569,-0.679114248059012,-0.0422681497528904,-2.24178891718356,\ +-3,-0.253782,-3.51419444444444,3.14756022203311,-0.679117597176202,-0.0422768972848289,-2.24179746263669,\ +-3,-0.253782,-3.48666363636364,3.14755863644356,-0.679121163252813,-0.0422862114913027,-2.24180656167346,\ +-3,-0.253782,-3.45913282828283,3.1475569446994,-0.679124968076863,-0.0422961492802713,-2.24181626988721,\ +-3,-0.253782,-3.43160202020202,3.14755513577092,-0.679129036454815,-0.0423067754435354,-2.24182665057295,\ +-3,-0.253782,-3.40407121212121,3.14755319704552,-0.679133396753036,-0.0423181640709691,-2.241837776109,\ +-3,-0.253782,-3.3765404040404,3.14755111403329,-0.679138081560139,-0.0423304002805107,-2.24184972964696,\ +-3,-0.253782,-3.3490095959596,3.14754887000416,-0.679143128502938,-0.0423435823493348,-2.24186260719368,\ +-3,-0.253782,-3.32147878787879,3.14754644553763,-0.679148581259232,-0.0423578243591168,-2.24187652019542,\ +-3,-0.253782,-3.29394797979798,3.14754381795921,-0.679154490825103,-0.0423732595061217,-2.24189159877142,\ +-3,-0.253782,-3.26641717171717,3.14754096062923,-0.679160917114689,-0.042390044279585,-2.24190799579584,\ +-3,-0.253782,-3.23888636363636,3.14753784203631,-0.679167930998738,-0.0424083637862533,-2.24192589209925,\ +-3,-0.253782,-3.21135555555555,3.14753442463047,-0.679175616929199,-0.042428438605465,-2.24194550316529,\ +-3,-0.253782,-3.18382474747475,3.14753066330381,-0.679184076356153,-0.0424505337138763,-2.24196708784935,\ +-3,-0.253782,-3.15629393939394,3.14752650338827,-0.679193432231078,-0.0424749702474519,-2.24199095986877,\ +-3,-0.253782,-3.12876313131313,3.14752187798111,-0.679203835021824,-0.0425021412119333,-2.24201750315035,\ +-3,-0.253782,-3.10123232323232,3.14751670431949,-0.679215470866463,-0.0425325327798425,-2.24204719263543,\ +-3,-0.253782,-3.07370151515151,3.14751087878462,-0.679228572809279,-0.042566753637652,-2.24208062294908,\ +-3,-0.253782,-3.04617070707071,3.14750426989047,-0.679243436569459,-0.0426055761718917,-2.24211854863473,\ +-3,-0.253782,-3.0186398989899,3.14749670824025,-0.679260443129544,-0.0426499954677578,-2.2421619417899,\ +-3,-0.253782,-2.99110909090909,3.14748797180174,-0.679280091852002,-0.0427013158060334,-2.24221207656486,\ +-3,-0.253782,-2.96357828282828,3.14747776374166,-0.67930305033093,-0.0427612808702947,-2.24227065636193,\ +-3,-0.253782,-2.93604747474747,3.14746567802872,-0.67933023175262,-0.0428322758043782,-2.24234001122519,\ +-3,-0.253782,-2.90851666666667,3.14745114413353,-0.679362919268534,-0.0429176520611562,-2.24242341518478,\ +-3,-0.253782,-2.88098585858586,3.14743333433488,-0.67940297446837,-0.0430222719116083,-2.24252561818722,\ +-3,-0.253782,-2.85345505050505,3.1474110003864,-0.679453204725764,-0.0431534679120829,-2.24265378339774,\ +-3,-0.253782,-2.82592424242424,3.14738216760043,-0.679518051219948,-0.0433228399424687,-2.24281924272464,\ +-3,-0.253782,-2.79839343434343,3.1473435164122,-0.679604979831566,-0.0435498880756595,-2.243041045765,\ +-3,-0.253782,-2.77086262626263,3.14728900251288,-0.679727584537868,-0.0438701183101925,-2.24335387828485,\ +-3,-0.253782,-2.74333181818182,3.14720633942916,-0.679913498281466,-0.0443557049039804,-2.24382824722743,\ +-3,-0.253782,-2.71580101010101,3.14706613583468,-0.68022882374406,-0.0451793009133598,-2.24463281714985,\ +-3,-0.253782,-2.6882702020202,3.14677623910513,-0.680880817159084,-0.0468822372076136,-2.24629641350842,\ +-3,-0.253782,-2.66073939393939,3.14582236556467,-0.683026130312818,-0.0524855631735527,-2.25177029571077,\ +-3,-0.253782,-2.63320858585858,3.15991540802323,-0.651330116030111,0.030300998563688,-2.17089620599307,\ +-3,-0.253782,-2.60567777777778,3.14899387778935,-0.675893227884767,-0.0338551933750479,-2.23357031050858,\ +-3,-0.253782,-2.57814696969697,3.14834279999811,-0.677357537031001,-0.0376798105163633,-2.23730657426119,\ +-3,-0.253782,-2.55061616161616,3.14810817390495,-0.677885223797135,-0.0390580712860927,-2.23865299550162,\ +-3,-0.253782,-2.52308535353535,3.14798725666896,-0.678157173196979,-0.0397683737101997,-2.23934688906078,\ +-3,-0.253782,-2.49555454545454,3.14791351020321,-0.678323032984788,-0.0402015815400795,-2.23977008925372,\ +-3,-0.253782,-2.46802373737374,3.14786383719416,-0.678434750267214,-0.0404933750008008,-2.24005514192442,\ +-3,-0.253782,-2.44049292929293,3.1478281039905,-0.678515116173784,-0.0407032820580844,-2.24026019986894,\ +-3,-0.253782,-2.41296212121212,3.14780116471869,-0.678575704052287,-0.0408615310448349,-2.24041479310826,\ +-3,-0.253782,-2.38543131313131,3.14778012878899,-0.678623014995268,-0.0409851021117523,-2.24053550953063,\ +-3,-0.253782,-2.3579005050505,3.14776324737159,-0.67866098221552,-0.0410842683853244,-2.24063238494057,\ +-3,-0.253782,-2.3303696969697,3.14774940032845,-0.678692124964042,-0.0411656098767238,-2.24071184734286,\ +-3,-0.253782,-2.30283888888889,3.14773783699716,-0.678718131521158,-0.0412335361915907,-2.24077820447579,\ +-3,-0.253782,-2.27530808080808,3.14772803545749,-0.678740175713693,-0.041291113238656,-2.24083445142182,\ +-3,-0.253782,-2.24777727272727,3.14771962157093,-0.678759098999372,-0.0413405388145109,-2.24088273520572,\ +-3,-0.253782,-2.22024646464646,3.14771232013301,-0.678775520327935,-0.041383429548934,-2.24092463511111,\ +-3,-0.253782,-2.19271565656565,3.14770592419947,-0.678789905128206,-0.0414210010916877,-2.24096133870472,\ +-3,-0.253782,-2.16518484848485,3.14770027515833,-0.67880261012705,-0.0414541851747659,-2.24099375619442,\ +-3,-0.253782,-2.13765404040404,3.14769524939825,-0.678813913333163,-0.0414837079268163,-2.24102259693437,\ +-3,-0.253782,-2.11012323232323,3.14769074915874,-0.678824034615059,-0.041510143620628,-2.24104842193094,\ +-3,-0.253782,-2.08259242424242,3.14768669610831,-0.678833150144562,-0.0415339523979471,-2.24107168069604,\ +-3,-0.253782,-2.05506161616161,3.14768302674619,-0.678841402738335,-0.0415555072804563,-2.24109273763409,\ +-3,-0.253782,-2.02753080808081,3.14767968905103,-0.678848909395165,-0.0415751138563345,-2.2411118912738,\ +-3,-0.253782,-2,3.1476766399991,-0.678855766877777,-0.041593024859349,-2.24112938851048,\ +-3,-0.251804,-4.72555,3.14758859067337,-0.679053794570787,-0.0421102517790143,-2.24163466684827,\ +-3,-0.251804,-4.69801919191919,3.14758831549653,-0.679054413458391,-0.0421118682465187,-2.24163624597337,\ +-3,-0.251804,-4.67048838383838,3.14758803286245,-0.67905504911771,-0.0421135285199194,-2.2416378678924,\ +-3,-0.251804,-4.64295757575758,3.14758774246385,-0.679055702239869,-0.0421152344043706,-2.24163953436881,\ +-3,-0.251804,-4.61542676767677,3.1475874439763,-0.679056373554501,-0.0421169878055901,-2.24164124726429,\ +-3,-0.251804,-4.58789595959596,3.14758713705706,-0.679057063832456,-0.0421187907369615,-2.24164300854572,\ +-3,-0.251804,-4.56036515151515,3.14758682134375,-0.679057773888759,-0.0421206453272458,-2.24164482029268,\ +-3,-0.251804,-4.53283434343434,3.14758649645291,-0.679058504585827,-0.0421225538289677,-2.24164668470564,\ +-3,-0.251804,-4.50530353535354,3.14758616197846,-0.679059256836943,-0.0421245186275409,-2.24164860411494,\ +-3,-0.251804,-4.47777272727273,3.14758581749,-0.679060031610091,-0.0421265422512149,-2.2416505809904,\ +-3,-0.251804,-4.45024191919192,3.147585462531,-0.679060829932084,-0.0421286273819301,-2.24165261795202,\ +-3,-0.251804,-4.42271111111111,3.14758509661671,-0.679061652893124,-0.0421307768671739,-2.24165471778149,\ +-3,-0.251804,-4.3951803030303,3.14758471923198,-0.679062501651765,-0.0421329937329572,-2.24165688343493,\ +-3,-0.251804,-4.36764949494949,3.1475843298289,-0.679063377440343,-0.0421352811980253,-2.24165911805672,\ +-3,-0.251804,-4.34011868686869,3.14758392782405,-0.679064281570973,-0.042137642689452,-2.24166142499478,\ +-3,-0.251804,-4.31258787878788,3.14758351259566,-0.67906521544207,-0.0421400818597717,-2.24166380781725,\ +-3,-0.251804,-4.28505707070707,3.14758308348034,-0.679066180545602,-0.0421426026058299,-2.24166627033095,\ +-3,-0.251804,-4.25752626262626,3.14758263976961,-0.679067178475021,-0.0421452090895574,-2.24166881660168,\ +-3,-0.251804,-4.22999545454545,3.14758218070593,-0.679068210934053,-0.0421479057609003,-2.24167145097658,\ +-3,-0.251804,-4.20246464646465,3.14758170547842,-0.679069279746403,-0.0421506973831756,-2.24167417810892,\ +-3,-0.251804,-4.17493383838384,3.14758121321809,-0.679070386866498,-0.0421535890611459,-2.24167700298555,\ +-3,-0.251804,-4.14740303030303,3.1475807029925,-0.679071534391429,-0.042156586272177,-2.2416799309573,\ +-3,-0.251804,-4.11987222222222,3.14758017379991,-0.679072724574198,-0.0421596949008623,-2.24168296777282,\ +-3,-0.251804,-4.09234141414141,3.14757962456264,-0.67907395983848,-0.0421629212775863,-2.24168611961625,\ +-3,-0.251804,-4.06481060606061,3.14757905411987,-0.679075242795106,-0.0421662722215538,-2.24168939314926,\ +-3,-0.251804,-4.0372797979798,3.14757846121933,-0.679076576260476,-0.0421697550889003,-2.24169279555807,\ +-3,-0.251804,-4.00974898989899,3.14757784450817,-0.679077963277201,-0.0421733778265989,-2.24169633460604,\ +-3,-0.251804,-3.98221818181818,3.14757720252268,-0.679079407137283,-0.0421771490329961,-2.2417000186929,\ +-3,-0.251804,-3.95468737373737,3.14757653367663,-0.679080911408195,-0.0421810780259449,-2.24170385692125,\ +-3,-0.251804,-3.92715656565657,3.14757583624826,-0.679082479962308,-0.042185174919672,-2.24170785917167,\ +-3,-0.251804,-3.89962575757576,3.1475751083654,-0.679084117010192,-0.0421894507117174,-2.24171203618762,\ +-3,-0.251804,-3.87209494949495,3.14757434798878,-0.679085827138345,-0.0421939173815135,-2.24171639967182,\ +-3,-0.251804,-3.84456414141414,3.14757355289283,-0.6790876153521,-0.0421985880024707,-2.24172096239565,\ +-3,-0.251804,-3.81703333333333,3.14757272064405,-0.679089487124579,-0.042203476869775,-2.24172573832407,\ +-3,-0.251804,-3.78950252525252,3.14757184857607,-0.679091448452622,-0.0422085996465276,-2.24173074275834,\ +-3,-0.251804,-3.76197171717172,3.14757093376108,-0.679093505920976,-0.0422139735313769,-2.2417359924998,\ +-3,-0.251804,-3.73444090909091,3.14756997297707,-0.679095666776151,-0.0422196174514184,-2.2417415060383,\ +-3,-0.251804,-3.7069101010101,3.14756896266986,-0.679097939011689,-0.0422255522849266,-2.24174730376982,\ +-3,-0.251804,-3.67937929292929,3.14756789890916,-0.679100331466982,-0.0422318011194373,-2.24175340824851,\ +-3,-0.251804,-3.65184848484848,3.14756677733755,-0.679102853942191,-0.0422383895519078,-2.24175984448005,\ +-3,-0.251804,-3.62431767676768,3.14756559311067,-0.679105517332426,-0.0422453460391811,-2.24176664026386,\ +-3,-0.251804,-3.59678686868687,3.14756434082748,-0.679108333785051,-0.0422527023088739,-2.24177382659461,\ +-3,-0.251804,-3.56925606060606,3.14756301444766,-0.679111316884942,-0.0422604938431977,-2.24178143813486,\ +-3,-0.251804,-3.54172525252525,3.1475616071944,-0.679114481873589,-0.0422687604512838,-2.24178951377406,\ +-3,-0.251804,-3.51419444444444,3.14756011143845,-0.679117845909569,-0.0422775469494854,-2.24179809729328,\ +-3,-0.251804,-3.48666363636364,3.1475585185598,-0.679121428379753,-0.042286903974203,-2.24180723815915,\ +-3,-0.251804,-3.45913282828283,3.14755681878145,-0.679125251273153,-0.0422968889583588,-2.24181699247782,\ +-3,-0.251804,-3.43160202020202,3.14755500096853,-0.679129339632664,-0.04230756731129,-2.24182742414758,\ +-3,-0.251804,-3.40407121212121,3.14755305238414,-0.6791337221043,-0.0423190138532868,-2.24183860626029,\ +-3,-0.251804,-3.3765404040404,3.1475509583904,-0.67913843160938,-0.0423313145712778,-2.24185062281647,\ +-3,-0.251804,-3.3490095959596,3.14754870208018,-0.679143506173038,-0.0423445687827925,-2.24186357083931,\ +-3,-0.251804,-3.32147878787879,3.14754626381949,-0.679148989953149,-0.0423588918234335,-2.24187756299998,\ +-3,-0.251804,-3.29394797979798,3.1475436206747,-0.679154934528658,-0.0423744184118258,-2.24189273090497,\ +-3,-0.251804,-3.26641717171717,3.14754074568899,-0.679161400526907,-0.0423913069000232,-2.24190922924819,\ +-3,-0.251804,-3.23888636363636,3.14753760695967,-0.679168459698816,-0.0424097446936827,-2.24192724110601,\ +-3,-0.251804,-3.21135555555555,3.14753416644928,-0.679176197592661,-0.0424299552356413,-2.24194698475944,\ +-3,-0.251804,-3.18382474747475,3.14753037843657,-0.679184717038003,-0.0424522071055882,-2.24196872258366,\ +-3,-0.251804,-3.15629393939394,3.14752618747308,-0.679194142741436,-0.0424768260236738,-2.24199277277426,\ +-3,-0.251804,-3.12876313131313,3.14752152565096,-0.679204627431368,-0.0425042108999689,-2.24201952502603,\ +-3,-0.251804,-3.10123232323232,3.14751630889517,-0.679216360197143,-0.0425348556154056,-2.24204946181062,\ +-3,-0.251804,-3.07370151515151,3.14751043184765,-0.679229577994693,-0.0425693790732514,-2.24208318773386,\ +-3,-0.251804,-3.04617070707071,3.14750376067785,-0.67924458181618,-0.042608567432481,-2.24212147079351,\ +-3,-0.251804,-3.0186398989899,3.14749612276758,-0.67926175988923,-0.0426534347016728,-2.24216530157326,\ +-3,-0.251804,-2.99110909090909,3.14748729156125,-0.679281621749653,-0.0427053117332562,-2.24221598018121,\ +-3,-0.251804,-2.96357828282828,3.14747696371361,-0.679304849637255,-0.0427659804638348,-2.24227524738905,\ +-3,-0.251804,-2.93604747474747,3.14746472354358,-0.679332378441283,-0.0428378827230291,-2.24234548861708,\ +-3,-0.251804,-2.90851666666667,3.14744998572797,-0.679365524585233,-0.0429244568666431,-2.24243006279084,\ +-3,-0.251804,-2.88098585858586,3.14743189892891,-0.679406202773999,-0.0430307038968048,-2.24253385538314,\ +-3,-0.251804,-2.85345505050505,3.14740917530148,-0.679457309440408,-0.0431641889828513,-2.24266425679851,\ +-3,-0.251804,-2.82592424242424,3.14737976959715,-0.679523444458961,-0.0433369264995511,-2.24283300386483,\ +-3,-0.251804,-2.79839343434343,3.14734022638343,-0.679612379284092,-0.0435692146454862,-2.24305992586714,\ +-3,-0.251804,-2.77086262626263,3.1472842115204,-0.679738359738911,-0.0438982619700908,-2.24338137179137,\ +-3,-0.251804,-2.74333181818182,3.14719872574943,-0.67993062185871,-0.0444004298360174,-2.2438719389582,\ +-3,-0.251804,-2.71580101010101,3.14705220850192,-0.680260147068289,-0.0452611140489792,-2.24471274030079,\ +-3,-0.251804,-2.6882702020202,3.14674301782097,-0.680955533622925,-0.0470773885314091,-2.24648705659514,\ +-3,-0.251804,-2.66073939393939,3.14566216865476,-0.683386421822582,-0.0534266056355633,-2.25268959892742,\ +-3,-0.251804,-2.63320858585858,3.15546417548345,-0.661341178621565,0.00415318565918293,-2.19643997206313,\ +-3,-0.251804,-2.60567777777778,3.14891087785315,-0.676079899227817,-0.0343427587366784,-2.23404661250702,\ +-3,-0.251804,-2.57814696969697,3.14831882662952,-0.677411454432817,-0.037820636939341,-2.23744414741953,\ +-3,-0.251804,-2.55061616161616,3.14809696551876,-0.677910432063529,-0.039123912551919,-2.23871731575273,\ +-3,-0.251804,-2.52308535353535,3.14798078694389,-0.678171723958405,-0.0398063787255404,-2.23938401611324,\ +-3,-0.251804,-2.49555454545454,3.14790930418296,-0.678332492551706,-0.040226288905923,-2.23979422584884,\ +-3,-0.251804,-2.46802373737374,3.14786088546104,-0.678441388874536,-0.0405107143252305,-2.240072080689,\ +-3,-0.251804,-2.44049292929293,3.14782591893748,-0.678520030476148,-0.0407161176844347,-2.24027273897643,\ +-3,-0.251804,-2.41296212121212,3.14779948225589,-0.678579488002054,-0.040871414312431,-2.24042444806015,\ +-3,-0.251804,-2.38543131313131,3.14777879353285,-0.67862601805851,-0.0409929457881932,-2.24054317200843,\ +-3,-0.251804,-2.3579005050505,3.14776216196575,-0.678663423351917,-0.041090644369609,-2.24063861363172,\ +-3,-0.251804,-2.3303696969697,3.14774850068378,-0.678694148313506,-0.0411708946467162,-2.24071701002812,\ +-3,-0.251804,-2.30283888888889,3.14773707920715,-0.678719835831854,-0.0412379876668273,-2.24078255311644,\ +-3,-0.251804,-2.27530808080808,3.14772738843645,-0.678741630898973,-0.041294914025248,-2.24083816440555,\ +-3,-0.251804,-2.24777727272727,3.14771906269442,-0.678760355942861,-0.0413438218149869,-2.24088594236482,\ +-3,-0.251804,-2.22024646464646,3.14771183254325,-0.67877661694365,-0.0413862937905899,-2.24092743318523,\ +-3,-0.251804,-2.19271565656565,3.14770549507865,-0.678790870244101,-0.0414235218700393,-2.24096380124998,\ +-3,-0.251804,-2.16518484848485,3.1476998945871,-0.678803466052339,-0.0414564207590633,-2.24099594013396,\ +-3,-0.251804,-2.13765404040404,3.14769490958039,-0.678814677601883,-0.041485704114068,-2.24102454700722,\ +-3,-0.251804,-2.11012323232323,3.14769044388218,-0.678824721198551,-0.0415119369024575,-2.24105017378574,\ +-3,-0.251804,-2.08259242424242,3.14768642036223,-0.678833770312422,-0.0415355722093328,-2.24107326308777,\ +-3,-0.251804,-2.05506161616161,3.1476827764441,-0.678841965681272,-0.0415569776265295,-2.24109417401335,\ +-3,-0.251804,-2.02753080808081,3.14767946082709,-0.678849422683148,-0.041576454509042,-2.24111320095578,\ +-3,-0.251804,-2,3.14767643105597,-0.678856236802168,-0.0415942522510458,-2.24113058754791,\ +-3,-0.247083,-4.72555,3.14758854400282,-0.6790538995354,-0.0421105259352362,-2.24163493467114,\ +-3,-0.247083,-4.69801919191919,3.14758826756832,-0.679054521251525,-0.0421121497905194,-2.24163652101336,\ +-3,-0.247083,-4.67048838383838,3.14758798362507,-0.679055159855248,-0.0421138177543939,-2.24163815044521,\ +-3,-0.247083,-4.64295757575758,3.1475876918629,-0.679055816044124,-0.0421155316487792,-2.24163982474651,\ +-3,-0.247083,-4.61542676767677,3.14758739195435,-0.679056490554652,-0.0421172933973346,-2.24164154579649,\ +-3,-0.247083,-4.58789595959596,3.14758708355341,-0.679057184165041,-0.0421191050326635,-2.2416433155808,\ +-3,-0.247083,-4.56036515151515,3.14758676629419,-0.679057897698208,-0.0421209687041346,-2.24164513619915,\ +-3,-0.247083,-4.53283434343434,3.14758643978944,-0.679058632025032,-0.0421228866863902,-2.24164700987365,\ +-3,-0.247083,-4.50530353535354,3.14758610362905,-0.679059388067901,-0.0421248613886069,-2.2416489389578,\ +-3,-0.247083,-4.47777272727273,3.14758575737829,-0.679060166804577,-0.042126895364592,-2.24165092594642,\ +-3,-0.247083,-4.45024191919192,3.14758540057592,-0.679060969272413,-0.042128991323802,-2.24165297348639,\ +-3,-0.247083,-4.42271111111111,3.14758503273213,-0.679061796572966,-0.0421311521433832,-2.24165508438836,\ +-3,-0.247083,-4.3951803030303,3.14758465332636,-0.679062649877039,-0.0421333808813508,-2.24165726163972,\ +-3,-0.247083,-4.36764949494949,3.1475842618048,-0.679063530430216,-0.0421356807910258,-2.24165950841863,\ +-3,-0.247083,-4.34011868686869,3.14758385757764,-0.679064439558918,-0.0421380553368821,-2.24166182810955,\ +-3,-0.247083,-4.31258787878788,3.14758344001624,-0.679065378677079,-0.0421405082119591,-2.24166422432017,\ +-3,-0.247083,-4.28505707070707,3.14758300844975,-0.679066349293475,-0.0421430433570266,-2.24166670090025,\ +-3,-0.247083,-4.25752626262626,3.14758256216152,-0.679067353019824,-0.0421456649817117,-2.24166926196216,\ +-3,-0.247083,-4.22999545454545,3.1475821003852,-0.679068391579712,-0.042148377587826,-2.24167191190372,\ +-3,-0.247083,-4.20246464646465,3.14758162230032,-0.67906946681846,-0.0421511859951609,-2.24167465543337,\ +-3,-0.247083,-4.17493383838384,3.14758112702738,-0.679070580714081,-0.0421540953700709,-2.24167749759811,\ +-3,-0.247083,-4.14740303030303,3.14758061362249,-0.67907173538942,-0.0421571112571894,-2.24168044381451,\ +-3,-0.247083,-4.11987222222222,3.14758008107138,-0.679072933125648,-0.0421602396146986,-2.24168349990309,\ +-3,-0.247083,-4.09234141414141,3.14757952828268,-0.679074176377319,-0.042163486853617,-2.24168667212677,\ +-3,-0.247083,-4.06481060606061,3.14757895408047,-0.679075467789145,-0.0421668598816538,-2.24168996723368,\ +-3,-0.247083,-4.0372797979798,3.1475783571959,-0.679076810214785,-0.0421703661522592,-2.2416933925051,\ +-3,-0.247083,-4.00974898989899,3.14757773625791,-0.679078206737896,-0.042174013719607,-2.24169695580913,\ +-3,-0.247083,-3.98221818181818,3.14757708978262,-0.679079660695776,-0.0421778113003579,-2.24170066566107,\ +-3,-0.247083,-3.95468737373737,3.14757641616154,-0.679081175705989,-0.042181768343206,-2.24170453129133,\ +-3,-0.247083,-3.92715656565657,3.14757571364821,-0.679082755696428,-0.0421858951073713,-2.24170856272213,\ +-3,-0.247083,-3.89962575757576,3.14757498034309,-0.679084404939306,-0.0421902027514174,-2.24171277085428,\ +-3,-0.247083,-3.87209494949495,3.14757421417634,-0.679086128089735,-0.0421947034340048,-2.24171716756552,\ +-3,-0.247083,-3.84456414141414,3.14757341288841,-0.67908793022962,-0.0421994104285034,-2.24172176582262,\ +-3,-0.247083,-3.81703333333333,3.14757257400769,-0.679089816917699,-0.0422043382537358,-2.241726579809,\ +-3,-0.247083,-3.78950252525252,3.14757169482512,-0.679091794246813,-0.0422095028235619,-2.24173162507087,\ +-3,-0.247083,-3.76197171717172,3.14757077236493,-0.679093868909657,-0.0422149216185572,-2.241736918685,\ +-3,-0.247083,-3.73444090909091,3.14756980335097,-0.679096048274435,-0.0422206138836806,-2.24174247945175,\ +-3,-0.247083,-3.7069101010101,3.14756878416787,-0.679098340472305,-0.0422266008566436,-2.24174832811822,\ +-3,-0.247083,-3.67937929292929,3.14756771081597,-0.679100754498762,-0.0422329060326942,-2.24175448763691,\ +-3,-0.247083,-3.65184848484848,3.14756657885881,-0.6791033003316,-0.0422395554727726,-2.2417609834667,\ +-3,-0.247083,-3.62431767676768,3.14756538336188,-0.67910598906879,-0.0422465781635586,-2.24176784392464,\ +-3,-0.247083,-3.59678686868687,3.14756411882074,-0.679108833090191,-0.0422540064399004,-2.2417751005986,\ +-3,-0.247083,-3.56925606060606,3.14756277907617,-0.679111846248135,-0.0422618764826128,-2.24178278883358,\ +-3,-0.247083,-3.54172525252525,3.14756135721397,-0.679115044093081,-0.0422702289078077,-2.24179094830743,\ +-3,-0.247083,-3.51419444444444,3.14755984544552,-0.679118444142046,-0.0422791094680199,-2.24179962371571,\ +-3,-0.247083,-3.48666363636364,3.14755823496509,-0.679122066199601,-0.0422885698906713,-2.24180886559089,\ +-3,-0.247083,-3.45913282828283,3.14755651577816,-0.679125932743926,-0.0422986688863261,-2.24181873128724,\ +-3,-0.247083,-3.43160202020202,3.14755467649386,-0.679130069393717,-0.0423094733682449,-2.24182928617226,\ +-3,-0.247083,-3.40407121212121,3.14755270407227,-0.679134505476505,-0.0423210599367712,-2.24184060507673,\ +-3,-0.247083,-3.3765404040404,3.14755058351473,-0.679139274725025,-0.0423335166981723,-2.24185277407152,\ +-3,-0.247083,-3.3490095959596,3.14754829748182,-0.679144416136619,-0.0423469455092652,-2.24186589266046,\ +-3,-0.247083,-3.32147878787879,3.14754582581809,-0.67914997504195,-0.0423614647688549,-2.24188007650718,\ +-3,-0.247083,-3.29394797979798,3.14754314495626,-0.679156004445133,-0.0423772129179605,-2.24189546085456,\ +-3,-0.247083,-3.26641717171717,3.14754022716333,-0.67916256671916,-0.0423943528680759,-2.24191220485061,\ +-3,-0.247083,-3.23888636363636,3.14753703957767,-0.679169735771602,-0.0424130776578069,-2.24193049707453,\ +-3,-0.247083,-3.21135555555555,3.14753354296601,-0.679177599840242,-0.0424336177546819,-2.24195056266975,\ +-3,-0.247083,-3.18382474747475,3.14752969010044,-0.679186265143146,-0.0424562505888105,-2.2419726726574,\ +-3,-0.247083,-3.15629393939394,3.14752542361287,-0.679195860704333,-0.0424813131569818,-2.24199715624924,\ +-3,-0.247083,-3.12876313131313,3.14752067311902,-0.67920654482176,-0.0425092189163285,-2.24202441735101,\ +-3,-0.247083,-3.10123232323232,3.14751535130512,-0.67921851386891,-0.0425404807731646,-2.24205495702027,\ +-3,-0.247083,-3.07370151515151,3.14750934851198,-0.679232014475168,-0.0425757428967726,-2.24208940454519,\ +-3,-0.247083,-3.04617070707071,3.14750252509821,-0.679247360701582,-0.0426158255806464,-2.24212856126946,\ +-3,-0.247083,-3.0186398989899,3.14749470044145,-0.679264958777558,-0.0426617898520598,-2.24217346370933,\ +-3,-0.247083,-2.99110909090909,3.14748563671467,-0.679285343589051,-0.0427150327752938,-2.24222547665516,\ +-3,-0.247083,-2.96357828282828,3.14747501429215,-0.679309233991481,-0.0427774319229602,-2.2422864343053,\ +-3,-0.247083,-2.93604747474747,3.14746239327389,-0.679337619343791,-0.0428515713936334,-2.24235886106245,\ +-3,-0.247083,-2.90851666666667,3.14744715103699,-0.679371899958466,-0.0429411086521027,-2.24244632989946,\ +-3,-0.247083,-2.88098585858586,3.14742837636946,-0.679414125200598,-0.0430513964183597,-2.24255406988184,\ +-3,-0.247083,-2.85345505050505,3.14740468035252,-0.679467418823581,-0.0431905935984799,-2.24269005143485,\ +-3,-0.247083,-2.82592424242424,3.14737383609294,-0.679536789230647,-0.0433717816001092,-2.24286705376942,\ +-3,-0.247083,-2.79839343434343,3.14733203450332,-0.679630803265276,-0.0436173360919927,-2.24310693564869,\ +-3,-0.247083,-2.77086262626263,3.14727217562697,-0.67976542911382,-0.0439689642501121,-2.24345044076124,\ +-3,-0.247083,-2.74333181818182,3.14717933561783,-0.679974231312821,-0.0445143330142759,-2.24398321083209,\ +-3,-0.247083,-2.71580101010101,3.14701589178125,-0.680341825336163,-0.0454744488520718,-2.24492114680594,\ +-3,-0.247083,-2.6882702020202,3.14665188933486,-0.681160486514103,-0.0476127033198117,-2.24701000494952,\ +-3,-0.247083,-2.66073939393939,3.14513211445263,-0.684578542375027,-0.0565402956040561,-2.25573135880464,\ +-3,-0.247083,-2.63320858585858,3.15182480891793,-0.669526310751817,-0.0172254943346061,-2.21732477809423,\ +-3,-0.247083,-2.60567777777778,3.14874795933933,-0.676446311771864,-0.0352997886783127,-2.23498153387273,\ +-3,-0.247083,-2.57814696969697,3.14826748242203,-0.677526930330852,-0.0381222474975877,-2.23773879040066,\ +-3,-0.247083,-2.55061616161616,3.14807214536606,-0.6779662539286,-0.0392697132269749,-2.23885974825178,\ +-3,-0.247083,-2.52308535353535,3.14796620508857,-0.678204519339233,-0.0398920367138101,-2.23946769529598,\ +-3,-0.247083,-2.49555454545454,3.14789972031529,-0.678354047188147,-0.0402825872854083,-2.23984922366609,\ +-3,-0.247083,-2.46802373737374,3.1478541095086,-0.678456628357849,-0.0405505182076686,-2.2401109650525,\ +-3,-0.247083,-2.44049292929293,3.14782087593429,-0.678531372462916,-0.0407457417273644,-2.24030167866731,\ +-3,-0.247083,-2.41296212121212,3.14779558336874,-0.678588256809993,-0.0408943174905244,-2.24044682214649,\ +-3,-0.247083,-2.38543131313131,3.14777568936411,-0.678632999501767,-0.0410111805630206,-2.2405609855374,\ +-3,-0.247083,-2.3579005050505,3.14775963215524,-0.678669113032509,-0.0411055052000369,-2.24065313115858,\ +-3,-0.247083,-2.3303696969697,3.14774639940509,-0.678698874202879,-0.0411832381587051,-2.24072906838971,\ +-3,-0.247083,-2.30283888888889,3.14773530612596,-0.678723823587293,-0.0412484032527998,-2.24079272808949,\ +-3,-0.247083,-2.27530808080808,3.14772587226111,-0.67874504085926,-0.0413038204727681,-2.24084686510311,\ +-3,-0.247083,-2.24777727272727,3.14771775138028,-0.67876330515925,-0.0413515248492582,-2.24089346744947,\ +-3,-0.247083,-2.22024646464646,3.14771068720999,-0.678779192860078,-0.0413930218057472,-2.24093400577491,\ +-3,-0.247083,-2.19271565656565,3.14770448609665,-0.678793139499184,-0.0414294489189196,-2.2409695913767,\ +-3,-0.247083,-2.16518484848485,3.1476989989813,-0.678805480318189,-0.0414616818036373,-2.24100107964189,\ +-3,-0.247083,-2.13765404040404,3.14769410926185,-0.678816477561533,-0.0414904054140256,-2.24102913970133,\ +-3,-0.247083,-2.11012323232323,3.14768972441497,-0.678826339319215,-0.0415161632586567,-2.24105430250788,\ +-3,-0.247083,-2.08259242424242,3.14768577008573,-0.678835232819414,-0.0415393921194391,-2.24107699475323,\ +-3,-0.247083,-2.05506161616161,3.14768218583681,-0.678843293988982,-0.0415604470226284,-2.2410975632621,\ +-3,-0.247083,-2.02753080808081,3.14767892203766,-0.678850634449701,-0.0415796195122367,-2.24111629284348,\ +-3,-0.247083,-2,3.14767593755243,-0.678857346718299,-0.041597151231961,-2.24113341955878,\ +-3,-0.245821,-4.72555,3.14758853149115,-0.67905392767482,-0.0421105994323625,-2.24163500647039,\ +-3,-0.245821,-4.69801919191919,3.147588254719,-0.679054550150339,-0.0421122252710982,-2.24163659475024,\ +-3,-0.245821,-4.67048838383838,3.14758797042425,-0.679055189544617,-0.0421138952998131,-2.24163822619923,\ +-3,-0.245821,-4.64295757575758,3.14758767829595,-0.679055846556936,-0.0421156113449405,-2.24163990260158,\ +-3,-0.245821,-4.61542676767677,3.14758737800583,-0.679056521925642,-0.0421173753349722,-2.24164162584127,\ +-3,-0.245821,-4.58789595959596,3.14758706920698,-0.679057216430934,-0.0421191893076876,-2.24164339790897,\ +-3,-0.245821,-4.56036515151515,3.14758675153258,-0.679057930897848,-0.0421210554180063,-2.24164522090983,\ +-3,-0.245821,-4.53283434343434,3.14758642459438,-0.679058666199548,-0.0421229759465294,-2.24164709707177,\ +-3,-0.245821,-4.50530353535354,3.14758608798116,-0.679059423260869,-0.0421249533088356,-2.24164902875456,\ +-3,-0.245821,-4.47777272727273,3.14758574125701,-0.679060203062214,-0.042126990065619,-2.24165101845974,\ +-3,-0.245821,-4.45024191919192,3.14758538395944,-0.67906100664377,-0.0421290889337506,-2.24165306884143,\ +-3,-0.245821,-4.42271111111111,3.14758501559729,-0.679061835110162,-0.0421312527983713,-2.24165518271809,\ +-3,-0.245821,-4.3951803030303,3.14758463564852,-0.67906268963549,-0.0421334847261221,-2.24165736308554,\ +-3,-0.245821,-4.36764949494949,3.14758424355771,-0.679063571468907,-0.0421357879796464,-2.24165961313107,\ +-3,-0.245821,-4.34011868686869,3.14758383873338,-0.679064481940696,-0.0421381660335013,-2.24166193624894,\ +-3,-0.245821,-4.31258787878788,3.14758342054501,-0.67906542246897,-0.042140622591649,-2.24166433605755,\ +-3,-0.245821,-4.28505707070707,3.14758298831969,-0.679066394567049,-0.0421431616067055,-2.24166681641821,\ +-3,-0.245821,-4.25752626262626,3.14758254133865,-0.679067399851567,-0.0421457873011642,-2.24166938145588,\ +-3,-0.245821,-4.22999545454545,3.14758207883314,-0.679068440051474,-0.0421485041908276,-2.24167203558204,\ +-3,-0.245821,-4.20246464646465,3.14758159998006,-0.679069517017922,-0.0421513171107269,-2.24167478352,\ +-3,-0.245821,-4.17493383838384,3.14758110389712,-0.679070632735289,-0.0421542312438366,-2.24167763033303,\ +-3,-0.245821,-4.14740303030303,3.14758058963732,-0.679071789333366,-0.0421572521529481,-2.24168058145541,\ +-3,-0.245821,-4.11987222222222,3.14758005618301,-0.679072989100941,-0.0421603858161088,-2.24168364272707,\ +-3,-0.245821,-4.09234141414141,3.14757950243912,-0.679074234500894,-0.0421636386661094,-2.24168682043221,\ +-3,-0.245821,-4.06481060606061,3.14757892722564,-0.679075528187092,-0.0421670176345601,-2.24169012134231,\ +-3,-0.245821,-4.0372797979798,3.14757832926928,-0.679076873023259,-0.042170530201198,-2.2416935527643,\ +-3,-0.245821,-4.00974898989899,3.14757770719403,-0.679078272104135,-0.0421741844491585,-2.24169712259462,\ +-3,-0.245821,-3.98221818181818,3.14757705951056,-0.679079728779266,-0.0421779891270737,-2.24170083937976,\ +-3,-0.245821,-3.95468737373737,3.14757638460439,-0.679081246679753,-0.0421819537190021,-2.24170471238472,\ +-3,-0.245821,-3.92715656565657,3.14757568072235,-0.679082829748495,-0.042186088523363,-2.24170875166998,\ +-3,-0.245821,-3.89962575757576,3.14757494595749,-0.679084482274375,-0.0421904047422617,-2.24171296817888,\ +-3,-0.245821,-3.87209494949495,3.14757417823175,-0.67908620893107,-0.0421949145828365,-2.24171737383656,\ +-3,-0.245821,-3.84456414141414,3.14757337527634,-0.679088014821198,-0.0421996313725558,-2.2417219816626,\ +-3,-0.245821,-3.81703333333333,3.14757253460936,-0.679089905526659,-0.0422045696907639,-2.24172680589955,\ +-3,-0.245821,-3.78950252525252,3.1475716535102,-0.679091887166297,-0.0422097455192014,-2.24173186215994,\ +-3,-0.245821,-3.76197171717172,3.14757072899008,-0.679093966462023,-0.0422151764147843,-2.24173716759511,\ +-3,-0.245821,-3.73444090909091,3.14756975775821,-0.679096150815005,-0.0422208817085686,-2.24174274108955,\ +-3,-0.245821,-3.7069101010101,3.14756873618263,-0.6790984483937,-0.0422268827356579,-2.24174860348549,\ +-3,-0.245821,-3.67937929292929,3.14756766024486,-0.679100868235902,-0.0422332031018099,-2.24175477784336,\ +-3,-0.245821,-3.65184848484848,3.14756652548703,-0.679103420367581,-0.0422398689937727,-2.24176128974498,\ +-3,-0.245821,-3.62431767676768,3.1475653269502,-0.679106115941727,-0.0422469095419436,-2.24176816764777,\ +-3,-0.245821,-3.59678686868687,3.14756405910181,-0.679108967401282,-0.0422543572459504,-2.2417754433006,\ +-3,-0.245821,-3.56925606060606,3.14756271575041,-0.679111988671202,-0.0422622484762617,-2.24178315223372,\ +-3,-0.245821,-3.54172525252525,3.14756128994446,-0.679115195385854,-0.0422706240681654,-2.24179133433909,\ +-3,-0.245821,-3.51419444444444,3.14755977385205,-0.679118605159648,-0.0422795300285833,-2.2418000345608,\ +-3,-0.245821,-3.48666363636364,3.14755815861693,-0.679122237910723,-0.0422890183815526,-2.24180930372107,\ +-3,-0.245821,-3.45913282828283,3.14755643418546,-0.679126116250318,-0.0422991481851754,-2.2418191995137,\ +-3,-0.245821,-3.43160202020202,3.14755458909708,-0.679130265953844,-0.0423099867620389,-2.24182978770602,\ +-3,-0.245821,-3.40407121212121,3.14755261022929,-0.679134716534438,-0.0423216111972703,-2.24184114360241,\ +-3,-0.245821,-3.3765404040404,3.14755048248518,-0.679139501945967,-0.0423341101747014,-2.241853353838,\ +-3,-0.245821,-3.3490095959596,3.1475481884074,-0.679144661450905,-0.0423475862436529,-2.24186651859308,\ +-3,-0.245821,-3.32147878787879,3.14754570769819,-0.679150240700002,-0.0423621586389537,-2.24188075434802,\ +-3,-0.245821,-3.29394797979798,3.14754301661718,-0.679156293086653,-0.0423779668183961,-2.24189619733896,\ +-3,-0.245821,-3.26641717171717,3.14754008721918,-0.679162881461105,-0.042395174940003,-2.24191300793166,\ +-3,-0.245821,-3.23888636363636,3.14753688638014,-0.679170080321125,-0.042413977583901,-2.24193137621122,\ +-3,-0.245821,-3.21135555555555,3.14753337453917,-0.679177978641288,-0.042434607142049,-2.24195152920105,\ +-3,-0.245821,-3.18382474747475,3.14752950405517,-0.679186683569029,-0.0424573434719709,-2.24197374029361,\ +-3,-0.245821,-3.15629393939394,3.14752521703282,-0.679196325314032,-0.0424825266672694,-2.24199834172594,\ +-3,-0.245821,-3.12876313131313,3.14752044240684,-0.679207063705933,-0.0425105741856758,-2.24202574131196,\ +-3,-0.245821,-3.10123232323232,3.14751509197135,-0.679219097124582,-0.0425420041739126,-2.24205644522858,\ +-3,-0.245821,-3.07370151515151,3.14750905488037,-0.679232674868539,-0.0425774677728447,-2.24209108957449,\ +-3,-0.245821,-3.04617070707071,3.14750218988596,-0.679248114612042,-0.0426177947132416,-2.24213048491266,\ +-3,-0.245821,-3.0186398989899,3.14749431414791,-0.679265827572668,-0.0426640590509401,-2.24217568048691,\ +-3,-0.245821,-2.99110909090909,3.14748518670783,-0.679286355678757,-0.0427176762441531,-2.24222805905661,\ +-3,-0.245821,-2.96357828282828,3.14747448340391,-0.679310427987839,-0.0427805505123277,-2.24228948085139,\ +-3,-0.245821,-2.93604747474747,3.14746175756466,-0.679339049088195,-0.0428553057314069,-2.2423625091324,\ +-3,-0.245821,-2.90851666666667,3.14744637609571,-0.679373642843313,-0.0429456608788461,-2.24245077696413,\ +-3,-0.245821,-2.88098585858586,3.1474274108929,-0.679416296609589,-0.0430570679038291,-2.24255961034897,\ +-3,-0.245821,-2.85345505050505,3.14740344434868,-0.679470198663042,-0.0431978542385489,-2.24269714434515,\ +-3,-0.245821,-2.82592424242424,3.1473721976176,-0.679540474250247,-0.0433814064728104,-2.24287645629566,\ +-3,-0.245821,-2.79839343434343,3.14732975945706,-0.679635919967293,-0.0436307003643518,-2.24311999118982,\ +-3,-0.245821,-2.77086262626263,3.14726880570731,-0.679773008245301,-0.043988760121939,-2.24346977932393,\ +-3,-0.245821,-2.74333181818182,3.1471738380292,-0.679986595686797,-0.0445466274220384,-2.24401475919907,\ +-3,-0.245821,-2.71580101010101,3.14700536727783,-0.680365495513274,-0.0455362727950191,-2.2449815425393,\ +-3,-0.245821,-2.6882702020202,3.14662418717003,-0.681222790180231,-0.0477754337582866,-2.2471689761135,\ +-3,-0.245821,-2.66073939393939,3.14493769957487,-0.685015791944105,-0.0576823441948391,-2.25684702465976,\ +-3,-0.245821,-2.63320858585858,3.1513602310309,-0.670571171532321,-0.0199545577032919,-2.21999079672205,\ +-3,-0.245821,-2.60567777777778,3.14871109273368,-0.676529226760786,-0.0355163536630515,-2.23519309593834,\ +-3,-0.245821,-2.57814696969697,3.1482549918869,-0.677555022219548,-0.0381956204730365,-2.23781046836958,\ +-3,-0.245821,-2.55061616161616,3.14806593263847,-0.67798022668878,-0.0393062085655628,-2.23889540050289,\ +-3,-0.245821,-2.52308535353535,3.14796249895049,-0.678212854644121,-0.0399138076288091,-2.2394889632759,\ +-3,-0.245821,-2.49555454545454,3.14789726119132,-0.678359577890879,-0.0402970328828566,-2.23986333555236,\ +-3,-0.245821,-2.46802373737374,3.14785235953925,-0.678460564133516,-0.0405607980281034,-2.24012100739636,\ +-3,-0.245821,-2.44049292929293,3.1478195673622,-0.678534315512273,-0.0407534286540252,-2.24030918801646,\ +-3,-0.245821,-2.41296212121212,3.1477945680459,-0.678590540325941,-0.0409002817872416,-2.24045264866057,\ +-3,-0.245821,-2.38543131313131,3.14777487872104,-0.678634822681859,-0.0410159425122598,-2.24056563747972,\ +-3,-0.245821,-2.3579005050505,3.14775897000538,-0.678670602243338,-0.0411093948576879,-2.24065693096032,\ +-3,-0.245821,-2.3303696969697,3.14774584839209,-0.678700113460899,-0.0411864749666506,-2.24073223042339,\ +-3,-0.245821,-2.30283888888889,3.14773484044865,-0.678724870920732,-0.041251138774488,-2.24079540041725,\ +-3,-0.245821,-2.27530808080808,3.1477254735281,-0.678745937631374,-0.0413061627445548,-2.24084915326552,\ +-3,-0.245821,-2.24777727272727,3.14771740612902,-0.67876408164799,-0.0413535529538843,-2.24089544870237,\ +-3,-0.245821,-2.22024646464646,3.14771038535986,-0.67877987173735,-0.0413947949597696,-2.24093573796688,\ +-3,-0.245821,-2.19271565656565,3.14770421994997,-0.678793738077436,-0.041431012340581,-2.24097111868138,\ +-3,-0.245821,-2.16518484848485,3.14769876255873,-0.678806012045323,-0.0414630706174165,-2.24100243637235,\ +-3,-0.245821,-2.13765404040404,3.14769389784831,-0.678816953042009,-0.0414916473176111,-2.24103035291541,\ +-3,-0.245821,-2.11012323232323,3.14768953424235,-0.678826767027685,-0.0415172803869265,-2.2410553938291,\ +-3,-0.245821,-2.08259242424242,3.1476855981066,-0.678835619609756,-0.0415404023739883,-2.24107798166965,\ +-3,-0.245821,-2.05506161616161,3.14768202955998,-0.678843645464028,-0.0415613650374393,-2.24109846006964,\ +-3,-0.245821,-2.02753080808081,3.14767877940681,-0.678850955234171,-0.0415804573665849,-2.24111711134235,\ +-3,-0.245821,-2,3.14767580685526,-0.678857640663297,-0.0415979189845051,-2.24113416957529,\ +-3,-0.243882,-4.72555,3.14758851223799,-0.679053970976207,-0.0421107125309002,-2.24163511695622,\ +-3,-0.243882,-4.69801919191919,3.14758823494586,-0.679054594621209,-0.0421123414242007,-2.24163670822007,\ +-3,-0.243882,-4.67048838383838,3.14758795010975,-0.679055235232996,-0.0421140146329186,-2.2416383427756,\ +-3,-0.243882,-4.64295757575758,3.14758765741758,-0.679055893513514,-0.0421157339904513,-2.24164002241384,\ +-3,-0.243882,-4.61542676767677,3.14758735653977,-0.679056570203971,-0.042117501432744,-2.24164174902603,\ +-3,-0.243882,-4.58789595959596,3.14758704712807,-0.679057266087612,-0.0421193190055614,-2.24164352461066,\ +-3,-0.243882,-4.56036515151515,3.14758672881418,-0.67905798199276,-0.0421211888723872,-2.24164535128125,\ +-3,-0.243882,-4.53283434343434,3.1475864012083,-0.679058718796092,-0.0421231133230147,-2.24164723127469,\ +-3,-0.243882,-4.50530353535354,3.14758606389754,-0.67905947742623,-0.0421250947829016,-2.2416491669604,\ +-3,-0.243882,-4.47777272727273,3.14758571644417,-0.679060258867644,-0.0421271358233674,-2.24165116085031,\ +-3,-0.243882,-4.45024191919192,3.14758535838373,-0.679061064164903,-0.042129239172727,-2.24165321560969,\ +-3,-0.243882,-4.42271111111111,3.14758498922301,-0.67906189442735,-0.0421314077284559,-2.2416553340691,\ +-3,-0.243882,-4.3951803030303,3.14758460843765,-0.679062750834189,-0.0421336445705103,-2.24165751923733,\ +-3,-0.243882,-4.36764949494949,3.14758421546982,-0.67906363464008,-0.0421359529759197,-2.24165977431573,\ +-3,-0.243882,-4.34011868686869,3.14758380972538,-0.679064547181263,-0.0421383364348062,-2.24166210271376,\ +-3,-0.243882,-4.31258787878788,3.14758339057092,-0.679065489882307,-0.0421407986679934,-2.24166450806631,\ +-3,-0.243882,-4.28505707070707,3.14758295733045,-0.679066464263531,-0.0421433436463851,-2.24166699425256,\ +-3,-0.243882,-4.25752626262626,3.14758250928179,-0.679067471949185,-0.0421459756123384,-2.24166956541684,\ +-3,-0.243882,-4.22999545454545,3.14758204565253,-0.679068514676477,-0.0421486991032603,-2.24167222599175,\ +-3,-0.243882,-4.20246464646465,3.14758156561555,-0.679069594305572,-0.0421515189777119,-2.24167498072361,\ +-3,-0.243882,-4.17493383838384,3.14758106828419,-0.679070712830678,-0.0421544404443368,-2.24167783470074,\ +-3,-0.243882,-4.14740303030303,3.1475805527067,-0.679071872392327,-0.0421574690939673,-2.24168079338482,\ +-3,-0.243882,-4.11987222222222,3.14758001786019,-0.679073075291045,-0.0421606109353365,-2.24168386264576,\ +-3,-0.243882,-4.09234141414141,3.14757946264385,-0.67907432400259,-0.0421638724348662,-2.24168704880062,\ +-3,-0.243882,-4.06481060606061,3.14757888587143,-0.679075621194975,-0.0421672605610928,-2.24169035865693,\ +-3,-0.243882,-4.0372797979798,3.14757828626267,-0.679076969747464,-0.0421707828343661,-2.24169379956134,\ +-3,-0.243882,-4.00974898989899,3.14757766243397,-0.67907837277194,-0.0421744473825746,-2.24169737945394,\ +-3,-0.243882,-3.98221818181818,3.14757701288759,-0.679079833636857,-0.04217826300376,-2.24170110692956,\ +-3,-0.243882,-3.95468737373737,3.14757633599972,-0.679081355994249,-0.0421822392366388,-2.24170499130654,\ +-3,-0.243882,-3.92715656565657,3.14757563000693,-0.679082943810207,-0.0421863864402224,-2.24170904270459,\ +-3,-0.243882,-3.89962575757576,3.14757489299076,-0.679084601399396,-0.0421907158839319,-2.24171327213279,\ +-3,-0.243882,-3.87209494949495,3.14757412286042,-0.679086333464186,-0.0421952398498607,-2.24171769158952,\ +-3,-0.243882,-3.84456414141414,3.14757331733286,-0.67908814513922,-0.0421999717491362,-2.24172231417606,\ +-3,-0.243882,-3.81703333333333,3.14757247391025,-0.679090042042243,-0.0422049262547054,-2.24172715422641,\ +-3,-0.243882,-3.78950252525252,3.14757158985411,-0.679092030332297,-0.0422101194533114,-2.2417322274557,\ +-3,-0.243882,-3.76197171717172,3.14757066215555,-0.679094116776513,-0.0422155690199775,-2.24173755113064,\ +-3,-0.243882,-3.73444090909091,3.14756968750108,-0.679096308827069,-0.0422212944189857,-2.24174314426585,\ +-3,-0.243882,-3.7069101010101,3.14756866223313,-0.679098614710122,-0.0422273171361672,-2.24174902785081,\ +-3,-0.243882,-3.67937929292929,3.14756758230406,-0.679101043528968,-0.042233660948342,-2.24175522511307,\ +-3,-0.243882,-3.65184848484848,3.14756644322287,-0.679103605384149,-0.0422403522370374,-2.24176176182472,\ +-3,-0.243882,-3.62431767676768,3.1475652399927,-0.67910631151386,-0.0422474203552085,-2.24176866666062,\ +-3,-0.243882,-3.59678686868687,3.14756396703755,-0.679109174458766,-0.0422548980577079,-2.24177597161893,\ +-3,-0.243882,-3.56925606060606,3.14756261811598,-0.679112208256314,-0.0422628220088271,-2.24178371251698,\ +-3,-0.243882,-3.54172525252525,3.14756118621861,-0.679115428670907,-0.0422712333834951,-2.24179192957848,\ +-3,-0.243882,-3.51419444444444,3.14755966344639,-0.679118853467922,-0.0422801785829454,-2.24180066813275,\ +-3,-0.243882,-3.48666363636364,3.14755804086482,-0.679122502741576,-0.0422897100911026,-2.24180997945128,\ +-3,-0.243882,-3.45913282828283,3.14755630832847,-0.679126399309472,-0.0422998875050728,-2.24181992175439,\ +-3,-0.243882,-3.43160202020202,3.1475544542687,-0.679130569190147,-0.042310778782474,-2.24183056142981,\ +-3,-0.243882,-3.40407121212121,3.14755246543493,-0.679135042184792,-0.0423224617607767,-2.24184197451686,\ +-3,-0.243882,-3.3765404040404,3.14755032657759,-0.679139852590566,-0.0423350260204697,-2.2418542485266,\ +-3,-0.243882,-3.3490095959596,3.14754802005626,-0.679145040081717,-0.0423485751863835,-2.24186748469002,\ +-3,-0.243882,-3.32147878787879,3.14754552535206,-0.679150650806311,-0.0423632297922916,-2.2418818007564,\ +-3,-0.243882,-3.29394797979798,3.14754281845555,-0.679156738762868,-0.0423791308764733,-2.24189733450585,\ +-3,-0.243882,-3.26641717171717,3.14753987109156,-0.679163367543828,-0.0423964445355157,-2.24191424819795,\ +-3,-0.243882,-3.23888636363636,3.14753664972768,-0.679170612565303,-0.0424153677481377,-2.24193273426094,\ +-3,-0.243882,-3.21135555555555,3.14753311429302,-0.679178563948971,-0.0424361359024196,-2.24195302264516,\ +-3,-0.243882,-3.18382474747475,3.1475292165027,-0.679187330290102,-0.0424590326374824,-2.24197539043731,\ +-3,-0.243882,-3.15629393939394,3.14752489763954,-0.679197043646776,-0.042484402874721,-2.24200017459068,\ +-3,-0.243882,-3.12876313131313,3.14752008557578,-0.67920786623829,-0.0425126703134108,-2.24202778901655,\ +-3,-0.243882,-3.10123232323232,3.14751469071251,-0.679219999577413,-0.0425443612831104,-2.24205874788563,\ +-3,-0.243882,-3.07370151515151,3.14750860034882,-0.679233697134561,-0.0425801378211451,-2.24209369794137,\ +-3,-0.243882,-3.04617070707071,3.14750167072308,-0.679249282237431,-0.0426208444244878,-2.24213346417181,\ +-3,-0.243882,-3.0186398989899,3.14749371552052,-0.679267173917985,-0.0426675755593146,-2.24217911575959,\ +-3,-0.243882,-2.99110909090909,3.14748448887056,-0.679287925152514,-0.042721775539888,-2.24223206365354,\ +-3,-0.243882,-2.96357828282828,3.14747365948348,-0.679312281029413,-0.0427853904565336,-2.2422942089869,\ +-3,-0.243882,-2.93604747474747,3.14746077002749,-0.679341270112675,-0.042861106807169,-2.24236817619614,\ +-3,-0.243882,-2.90851666666667,3.14744517088559,-0.679376353426026,-0.0429527406277728,-2.24245769316209,\ +-3,-0.243882,-2.88098585858586,3.14742590722759,-0.679419678434146,-0.0430659008638721,-2.24256823925671,\ +-3,-0.243882,-2.85345505050505,3.14740151590342,-0.679474535840669,-0.0432091824774887,-2.24270821088774,\ +-3,-0.243882,-2.82592424242424,3.14736963524516,-0.679546237164375,-0.0433964585813147,-2.24289116068183,\ +-3,-0.243882,-2.79839343434343,3.14732619024993,-0.679643947307047,-0.0436516669077121,-2.24314047338008,\ +-3,-0.243882,-2.77086262626263,3.14726349461725,-0.67978495317395,-0.0440199589838613,-2.24350025745354,\ +-3,-0.243882,-2.74333181818182,3.14716511174505,-0.680006221571567,-0.0445978881107366,-2.24406483570242,\ +-3,-0.243882,-2.71580101010101,3.14698844892745,-0.680403545797774,-0.0456356560234204,-2.24507862989215,\ +-3,-0.243882,-2.6882702020202,3.14657835466352,-0.681325869964835,-0.0480446670087461,-2.24743198974271,\ +-3,-0.243882,-2.66073939393939,3.14457137070742,-0.685839685368793,-0.0598342647252712,-2.25894923316307,\ +-3,-0.243882,-2.63320858585858,3.15081706394339,-0.671792783672759,-0.0231452765104323,-2.22310780597641,\ +-3,-0.243882,-2.60567777777778,3.14865887988789,-0.676646656273308,-0.0358230668510651,-2.23549272367217,\ +-3,-0.243882,-2.57814696969697,3.14823669822798,-0.677596165647307,-0.0383030826571465,-2.23791544804426,\ +-3,-0.243882,-2.55061616161616,3.14805670543347,-0.678000979171608,-0.0393604118065663,-2.23894835158195,\ +-3,-0.243882,-2.52308535353535,3.14795695222849,-0.678225329521691,-0.0399463906600075,-2.23952079359876,\ +-3,-0.243882,-2.49555454545454,3.14789356294187,-0.678367895453792,-0.0403187574577423,-2.23988455826269,\ +-3,-0.243882,-2.46802373737374,3.14784971899492,-0.678466502860452,-0.0405763093406479,-2.24013616037839,\ +-3,-0.243882,-2.44049292929293,3.14781758803211,-0.678538767132635,-0.0407650558050213,-2.24032054656588,\ +-3,-0.243882,-2.41296212121212,3.14779302942611,-0.678594000765038,-0.0409093200799517,-2.24046147815754,\ +-3,-0.243882,-2.38543131313131,3.14777364847404,-0.678637589573873,-0.0410231693349879,-2.2405726973539,\ +-3,-0.243882,-2.3579005050505,3.14775796392534,-0.678672864971726,-0.0411153048595387,-2.24066270443382,\ +-3,-0.243882,-2.3303696969697,3.14774501035779,-0.678701998245356,-0.041191397819829,-2.24073703955258,\ +-3,-0.243882,-2.30283888888889,3.14773413162116,-0.678726465112082,-0.0412553026299013,-2.24079946808245,\ +-3,-0.243882,-2.27530808080808,3.1477248661764,-0.678747303598181,-0.0413097305021443,-2.24085263860349,\ +-3,-0.243882,-2.24777727272727,3.14771687992526,-0.678765265108706,-0.0413566440252912,-2.2408984683662,\ +-3,-0.243882,-2.22024646464646,3.14770992506416,-0.678780906967223,-0.0413974988682494,-2.24093837941173,\ +-3,-0.243882,-2.19271565656565,3.14770381391281,-0.678794651276979,-0.0414333975190402,-2.24097344875926,\ +-3,-0.243882,-2.16518484848485,3.14769840172258,-0.678806823585347,-0.0414651902721969,-2.24100450706048,\ +-3,-0.243882,-2.13765404040404,3.14769357506496,-0.678817678999231,-0.0414935434393726,-2.24103220523441,\ +-3,-0.243882,-2.11012323232323,3.14768924379506,-0.678827420259352,-0.0415189865574012,-2.24105706058493,\ +-3,-0.243882,-2.08259242424242,3.14768533536893,-0.678836210520972,-0.0415419457701821,-2.24107948941149,\ +-3,-0.243882,-2.05506161616161,3.14768179074775,-0.678844182565648,-0.0415627678887856,-2.24109983051339,\ +-3,-0.243882,-2.02753080808081,3.14767856139477,-0.678851445555032,-0.0415817380316464,-2.24111836242247,\ +-3,-0.243882,-2,3.1476756070397,-0.678858090059298,-0.041599092758266,-2.24113531623343,\ +-3,-0.235902,-4.72555,3.14758843262166,-0.67905415003761,-0.0421111802199242,-2.24163557384105,\ +-3,-0.235902,-4.69801919191919,3.14758815317401,-0.67905477853051,-0.042112821775414,-2.24163717747457,\ +-3,-0.235902,-4.67048838383838,3.14758786609364,-0.679055424189776,-0.042114508167594,-2.24163882490901,\ +-3,-0.235902,-4.64295757575758,3.14758757106353,-0.679056087728457,-0.0421162412588711,-2.24164051796373,\ +-3,-0.235902,-4.61542676767677,3.14758726774881,-0.679056769899645,-0.0421180230162479,-2.24164225856031,\ +-3,-0.235902,-4.58789595959596,3.14758695579558,-0.679057471499335,-0.0421198555187683,-2.24164404872975,\ +-3,-0.235902,-4.56036515151515,3.14758663482945,-0.679058193369512,-0.0421217409656115,-2.24164589062044,\ +-3,-0.235902,-4.53283434343434,3.1475863044541,-0.679058936401532,-0.0421236816848952,-2.2416477865067,\ +-3,-0.235902,-4.50530353535354,3.14758596424963,-0.679059701539783,-0.0421256801432674,-2.24164973879821,\ +-3,-0.235902,-4.47777272727273,3.14758561377076,-0.679060489785702,-0.0421277389563643,-2.24165175005019,\ +-3,-0.235902,-4.45024191919192,3.14758525254492,-0.679061302202134,-0.0421298609002316,-2.24165382297452,\ +-3,-0.235902,-4.42271111111111,3.1475848800701,-0.679062139918127,-0.0421320489238149,-2.24165596045205,\ +-3,-0.235902,-4.3951803030303,3.14758449581253,-0.679063004134156,-0.0421343061626299,-2.24165816554586,\ +-3,-0.235902,-4.36764949494949,3.14758409920415,-0.679063896127874,-0.0421366359537576,-2.24166044151593,\ +-3,-0.235902,-4.34011868686869,3.14758368963972,-0.679064817260398,-0.0421390418523039,-2.24166279183524,\ +-3,-0.235902,-4.31258787878788,3.14758326647388,-0.67906576898326,-0.0421415276495007,-2.24166522020744,\ +-3,-0.235902,-4.28505707070707,3.14758282901762,-0.679066752846022,-0.042144097392642,-2.24166773058633,\ +-3,-0.235902,-4.25752626262626,3.14758237653464,-0.679067770504705,-0.0421467554070724,-2.24167032719735,\ +-3,-0.235902,-4.22999545454545,3.14758190823714,-0.679068823731084,-0.0421495063204828,-2.24167301456125,\ +-3,-0.235902,-4.20246464646465,3.1475814232813,-0.679069914422992,-0.0421523550897977,-2.24167579752048,\ +-3,-0.235902,-4.17493383838384,3.14758092076216,-0.67907104461572,-0.0421553070309852,-2.24167868126816,\ +-3,-0.235902,-4.14740303030303,3.14758039970799,-0.679072216494703,-0.042158367852163,-2.24168167138059,\ +-3,-0.235902,-4.11987222222222,3.14757985907406,-0.679073432409619,-0.0421615436904393,-2.24168477385307,\ +-3,-0.235902,-4.09234141414141,3.14757929773562,-0.679074694890122,-0.0421648411529849,-2.24168799514014,\ +-3,-0.235902,-4.06481060606061,3.14757871448006,-0.679076006663392,-0.0421682673629164,-2.24169134220039,\ +-3,-0.235902,-4.0372797979798,3.14757810799824,-0.679077370673823,-0.042171830010661,-2.24169482254656,\ +-3,-0.235902,-4.00974898989899,3.14757747687456,-0.679078790105071,-0.0421755374115818,-2.24169844430194,\ +-3,-0.235902,-3.98221818181818,3.14757681957609,-0.679080268404862,-0.0421793985707738,-2.24170221626357,\ +-3,-0.235902,-3.95468737373737,3.14757613444,-0.679081809312959,-0.0421834232560917,-2.24170614797368,\ +-3,-0.235902,-3.92715656565657,3.14757541965959,-0.679083416892749,-0.0421876220806571,-2.2417102498002,\ +-3,-0.235902,-3.89962575757576,3.14757467326834,-0.679085095567015,-0.0421920065963121,-2.24171453302812,\ +-3,-0.235902,-3.87209494949495,3.14757389312187,-0.679086850158583,-0.0421965893997538,-2.24171900996313,\ +-3,-0.235902,-3.84456414141414,3.14757307687737,-0.679088685936595,-0.0422013842533977,-2.24172369404972,\ +-3,-0.235902,-3.81703333333333,3.14757222197006,-0.679090608669345,-0.0422064062234203,-2.24172860000602,\ +-3,-0.235902,-3.78950252525252,3.14757132558631,-0.679092624684841,-0.042211671837891,-2.24173374397828,\ +-3,-0.235902,-3.76197171717172,3.14757038463271,-0.679094740940374,-0.0422171992684913,-2.2417391437184,\ +-3,-0.235902,-3.73444090909091,3.14756939570034,-0.679096965102725,-0.0422230085400328,-2.24174481878858,\ +-3,-0.235902,-3.7069101010101,3.14756835502359,-0.679099305640982,-0.0422291217728623,-2.24175079079816,\ +-3,-0.235902,-3.67937929292929,3.1475672584322,-0.679101771934314,-0.0422355634643412,-2.2417570836786,\ +-3,-0.235902,-3.65184848484848,3.14756610129537,-0.679104374397574,-0.0422423608169454,-2.24176372400394,\ +-3,-0.235902,-3.62431767676768,3.14756487845649,-0.679107124628324,-0.042249544122257,-2.24177074136602,\ +-3,-0.235902,-3.59678686868687,3.1475635841562,-0.679110035579625,-0.0422571472122723,-2.24177816881525,\ +-3,-0.235902,-3.56925606060606,3.14756221194178,-0.679113121764038,-0.0422652079922185,-2.2417860433812,\ +-3,-0.235902,-3.54172525252525,3.14756075455949,-0.679116399495586,-0.0422737690725737,-2.24179440669,\ +-3,-0.235902,-3.51419444444444,3.14755920382635,-0.67911988717825,-0.0422828785225411,-2.2418033057004,\ +-3,-0.235902,-3.48666363636364,3.14755755047637,-0.679123605651708,-0.0422925907731004,-2.24181279358596,\ +-3,-0.235902,-3.45913282828283,3.14755578397532,-0.679127578608066,-0.0423029677054693,-2.24182293079835,\ +-3,-0.235902,-3.43160202020202,3.14755389229597,-0.679131833097175,-0.0423140799709523,-2.24183378635675,\ +-3,-0.235902,-3.40407121212121,3.14755186164394,-0.679136400143349,-0.0423260086016854,-2.24184543942135,\ +-3,-0.235902,-3.3765404040404,3.14754967612076,-0.679141315503138,-0.0423388469899139,-2.24185798122692,\ +-3,-0.235902,-3.3490095959596,3.14754731730673,-0.67914662060339,-0.0423527033380854,-2.2418715174763,\ +-3,-0.235902,-3.32147878787879,3.1475447637406,-0.679152363711652,-0.0423677037158081,-2.24188617132674,\ +-3,-0.235902,-3.29394797979798,3.14754199026466,-0.679158601408941,-0.0423839959065926,-2.24190208714776,\ +-3,-0.235902,-3.26641717171717,3.14753896719316,-0.679165400460163,-0.0424017542931414,-2.2419194352936,\ +-3,-0.235902,-3.23888636363636,3.1475356592455,-0.679172840213266,-0.0424211861237202,-2.24193841822485,\ +-3,-0.235902,-3.21135555555555,3.14753202416305,-0.679181015710206,-0.0424425396376428,-2.24195927844617,\ +-3,-0.235902,-3.18382474747475,3.14752801089415,-0.679190041768879,-0.0424661147268281,-2.24198230892163,\ +-3,-0.235902,-3.15629393939394,3.14752355718167,-0.679200058408979,-0.042492277107577,-2.24200786691901,\ +-3,-0.235902,-3.12876313131313,3.14751858631003,-0.679211238167999,-0.04252147742917,-2.24203639267704,\ +-3,-0.235902,-3.10123232323232,3.14751300264926,-0.679223796122895,-0.0425542774493624,-2.24206843497618,\ +-3,-0.235902,-3.07370151515151,3.14750668544289,-0.679238003861498,-0.0425913865261827,-2.2421046867874,\ +-3,-0.235902,-3.04617070707071,3.14749947997537,-0.679254209347449,-0.0426337135030471,-2.24214603595872,\ +-3,-0.235902,-3.0186398989899,3.14749118473187,-0.679272865798476,-0.042682442135643,-2.24219363889961,\ +-3,-0.235902,-2.99110909090909,3.14748153225556,-0.679294574739455,-0.0427391435418986,-2.24224903043321,\ +-3,-0.235902,-2.96357828282828,3.14747015977152,-0.679320152070807,-0.0428059487654869,-2.24231429237347,\ +-3,-0.235902,-2.93604747474747,3.14745656257074,-0.679350732910341,-0.0428858226113756,-2.24239232103468,\ +-3,-0.235902,-2.90851666666667,3.14744001707079,-0.679387944634084,-0.0429830156097599,-2.24248726875453,\ +-3,-0.235902,-2.88098585858586,3.14741944774194,-0.679434206166542,-0.043103845729876,-2.24260530754935,\ +-3,-0.235902,-2.85345505050505,3.14739318350317,-0.67949327585922,-0.0432581293794224,-2.24275602705568,\ +-3,-0.235902,-2.82592424242424,3.14735847927244,-0.679571327550073,-0.0434619919555152,-2.24295518015399,\ +-3,-0.235902,-2.79839343434343,3.14731048797023,-0.679679262582867,-0.0437439065892059,-2.24323058221079,\ +-3,-0.235902,-2.77086262626263,3.14723977221801,-0.679838306132155,-0.0441593111411696,-2.24363639040357,\ +-3,-0.235902,-2.74333181818182,3.14712518485605,-0.680096019303175,-0.0448324300750819,-2.24429395945716,\ +-3,-0.235902,-2.71580101010101,3.14690754014584,-0.680585514021097,-0.0461109373449122,-2.24554293162699,\ +-3,-0.235902,-2.6882702020202,3.14633419684032,-0.681874994107054,-0.0494789198865954,-2.24883310960427,\ +-3,-0.235902,-2.66073939393939,3.14063620736422,-0.6946900804412,-0.0829505395832313,-2.28153149346679,\ +-3,-0.235902,-2.63320858585858,3.14961920169992,-0.674486840608262,-0.0301818618938636,-2.22998183753013,\ +-3,-0.235902,-2.60567777777778,3.1484875829484,-0.677031912349616,-0.0368293140612502,-2.23647572532663,\ +-3,-0.235902,-2.57814696969697,3.14817118076041,-0.677743517973375,-0.0386879509983301,-2.23829142545051,\ +-3,-0.235902,-2.55061616161616,3.14802235378961,-0.678078237875506,-0.0395622031864795,-2.23914548133128,\ +-3,-0.235902,-2.52308535353535,3.14793584652851,-0.67827279738181,-0.0400703715775166,-2.23964191040366,\ +-3,-0.235902,-2.49555454545454,3.14787929205636,-0.678399991446723,-0.0404025887204548,-2.23996645291949,\ +-3,-0.235902,-2.46802373737374,3.14783942957424,-0.678489644323758,-0.0406367523403172,-2.24019520706998,\ +-3,-0.235902,-2.44049292929293,3.14780981947062,-0.678556239047356,-0.0408106905568771,-2.24036512709849,\ +-3,-0.235902,-2.41296212121212,3.1477869571544,-0.678607657632343,-0.0409449903405196,-2.24049632439095,\ +-3,-0.235902,-2.38543131313131,3.14776877195623,-0.678648557126011,-0.0410518153951575,-2.24060068165463,\ +-3,-0.235902,-2.3579005050505,3.14775396181222,-0.678681865940454,-0.041138814416507,-2.24068567089093,\ +-3,-0.235902,-2.3303696969697,3.14774166692656,-0.678709517802912,-0.0412110380910102,-2.24075622610918,\ +-3,-0.235902,-2.30283888888889,3.14773129668928,-0.678732841027105,-0.0412719558304573,-2.24081573657346,\ +-3,-0.235902,-2.27530808080808,3.14772243197697,-0.67875277824426,-0.0413240296856791,-2.24086660745819,\ +-3,-0.235902,-2.24777727272727,3.14771476712496,-0.678770016910763,-0.0413690552184152,-2.24091059284541,\ +-3,-0.235902,-2.22024646464646,3.14770807396856,-0.678785070181303,-0.041408372733222,-2.24094900207697,\ +-3,-0.235902,-2.19271565656565,3.14770217874495,-0.678798328857845,-0.0414430029625731,-2.24098283230517,\ +-3,-0.235902,-2.16518484848485,3.14769694679135,-0.678810095804312,-0.0414737369542777,-2.24101285630363,\ +-3,-0.235902,-2.13765404040404,3.14769227213285,-0.678820609363949,-0.0415011972351266,-2.24103968221801,\ +-3,-0.235902,-2.11012323232323,3.14768807022938,-0.678830059672008,-0.0415258804178312,-2.24106379518865,\ +-3,-0.235902,-2.08259242424242,3.14768427281711,-0.678838600257452,-0.0415481875034432,-2.24108558695298,\ +-3,-0.235902,-2.05506161616161,3.14768082417142,-0.67884635644806,-0.0415684458345624,-2.24110537729159,\ +-3,-0.235902,-2.02753080808081,3.14767767835406,-0.678853431561336,-0.0415869252653549,-2.24112342982466,\ +-3,-0.235902,-2,3.14767479715527,-0.678859911533163,-0.0416038502510246,-2.24113996382222,\ +-3,-0.232369,-4.72555,3.1475883971767,-0.679054229755262,-0.0421113884338069,-2.24163577724493,\ +-3,-0.232369,-4.69801919191919,3.14758811676669,-0.679054860412554,-0.0421130356424524,-2.24163738640102,\ +-3,-0.232369,-4.67048838383838,3.14758782868423,-0.679055508325569,-0.0421147279211834,-2.24163903958601,\ +-3,-0.232369,-4.64295757575758,3.14758753261008,-0.679056174212343,-0.0421164671454346,-2.24164073863203,\ +-3,-0.232369,-4.61542676767677,3.14758722820699,-0.679056858831315,-0.0421182552961567,-2.24164248547426,\ +-3,-0.232369,-4.58789595959596,3.14758691511853,-0.6790575629842,-0.0421200944673436,-2.24164428215832,\ +-3,-0.232369,-4.56036515151515,3.14758659296757,-0.679058287519125,-0.0421219868742131,-2.24164613084824,\ +-3,-0.232369,-4.53283434343434,3.14758626135487,-0.679059033334033,-0.0421239348621065,-2.24164803383521,\ +-3,-0.232369,-4.50530353535354,3.14758591985736,-0.679059801380409,-0.0421259409161865,-2.24164999354696,\ +-3,-0.232369,-4.47777272727273,3.14758556802636,-0.679060592667314,-0.042128007672015,-2.24165201255817,\ +-3,-0.232369,-4.45024191919192,3.14758520538567,-0.679061408265818,-0.0421301379271035,-2.24165409360173,\ +-3,-0.232369,-4.42271111111111,3.14758483142935,-0.679062249313824,-0.0421323346535482,-2.24165623958107,\ +-3,-0.232369,-4.3951803030303,3.14758444561934,-0.679063117021385,-0.0421346010118645,-2.24165845358371,\ +-3,-0.232369,-4.36764949494949,3.14758404738298,-0.679064012676497,-0.0421369403661585,-2.24166073889602,\ +-3,-0.232369,-4.34011868686869,3.14758363611007,-0.67906493765148,-0.0421393563007884,-2.24166309901957,\ +-3,-0.232369,-4.31258787878788,3.14758321114984,-0.67906589341,-0.042141852638691,-2.24166553768898,\ +-3,-0.232369,-4.28505707070707,3.14758277180745,-0.679066881514798,-0.0421444334615665,-2.24166805889165,\ +-3,-0.232369,-4.25752626262626,3.14758231734019,-0.679067903636203,-0.0421471031321488,-2.24167066688954,\ +-3,-0.232369,-4.22999545454545,3.14758184695339,-0.679068961561575,-0.0421498663188169,-2.24167336624318,\ +-3,-0.232369,-4.20246464646465,3.14758135979562,-0.679070057205717,-0.0421527280228388,-2.24167616183829,\ +-3,-0.232369,-4.17493383838384,3.14758085495371,-0.679071192622458,-0.0421556936085805,-2.24167905891534,\ +-3,-0.232369,-4.14740303030303,3.14758033144694,-0.679072370017486,-0.0421587688370673,-2.24168206310224,\ +-3,-0.232369,-4.11987222222222,3.1475797882207,-0.679073591762657,-0.0421619599033385,-2.24168518045093,\ +-3,-0.232369,-4.09234141414141,3.14757922413943,-0.679074860411949,-0.0421652734781005,-2.24168841747802,\ +-3,-0.232369,-4.06481060606061,3.14757863797862,-0.679076178719276,-0.0421687167542761,-2.24169178121025,\ +-3,-0.232369,-4.0372797979798,3.14757802841605,-0.679077549658443,-0.0421722974991252,-2.24169527923547,\ +-3,-0.232369,-4.00974898989899,3.14757739402174,-0.679078976445539,-0.042176024112738,-2.24169891975969,\ +-3,-0.232369,-3.98221818181818,3.14757673324679,-0.679080462564143,-0.0421799056938224,-2.24170271167145,\ +-3,-0.232369,-3.95468737373737,3.14757604441072,-0.679082011793693,-0.0421839521138763,-2.2417066646142,\ +-3,-0.232369,-3.92715656565657,3.14757532568726,-0.679083628241602,-0.0421881741010104,-2.2417107890682,\ +-3,-0.232369,-3.89962575757576,3.14757457508813,-0.679085316379609,-0.0421925833349282,-2.24171509644337,\ +-3,-0.232369,-3.87209494949495,3.1475737904447,-0.679087081085095,-0.0421971925548265,-2.24171959918457,\ +-3,-0.232369,-3.84456414141414,3.14757296938704,-0.679088927688149,-0.0422020156823186,-2.24172431089185,\ +-3,-0.232369,-3.81703333333333,3.14757210932003,-0.679090862025341,-0.0422070679618813,-2.24172924645751,\ +-3,-0.232369,-3.78950252525252,3.14757120739596,-0.679092890501327,-0.0422123661218026,-2.24173442222338,\ +-3,-0.232369,-3.76197171717172,3.14757026048303,-0.679095020159715,-0.0422179285592185,-2.24173985616161,\ +-3,-0.232369,-3.73444090909091,3.14756926512898,-0.679097258764774,-0.0422237755535447,-2.24174556808313,\ +-3,-0.232369,-3.7069101010101,3.1475682175191,-0.679099614896002,-0.0422299295135252,-2.24175157987902,\ +-3,-0.232369,-3.67937929292929,3.14756711342735,-0.679102098058038,-0.0422364152642382,-2.24175791580086,\ +-3,-0.232369,-3.65184848484848,3.14756594815933,-0.679104718808796,-0.0422432603818111,-2.24176460278775,\ +-3,-0.232369,-3.62431767676768,3.14756471648564,-0.679107488909523,-0.0422504955853601,-2.24177167084915,\ +-3,-0.232369,-3.59678686868687,3.14756341256333,-0.679110421501282,-0.042258155197899,-2.24177915351515,\ +-3,-0.232369,-3.56925606060606,3.14756202984329,-0.679113531313379,-0.0422662776908104,-2.24178708836843,\ +-3,-0.232369,-3.54172525252525,3.14756056096022,-0.679116834910828,-0.0422749063301025,-2.24179551767548,\ +-3,-0.232369,-3.51419444444444,3.14755899760131,-0.679120350989497,-0.0422840899473592,-2.24180448913981,\ +-3,-0.232369,-3.48666363636364,3.14755733034898,-0.67912410073013,-0.0422938838643985,-2.24181405680525,\ +-3,-0.232369,-3.45913282828283,3.14755554849085,-0.679128108225371,-0.0423043510086055,-2.24182428214547,\ +-3,-0.232369,-3.43160202020202,3.14755363978945,-0.679132400997985,-0.0423155632664578,-2.24183523538629,\ +-3,-0.232369,-3.40407121212121,3.14755159020072,-0.679137010633817,-0.0423276031367715,-2.2418469971207,\ +-3,-0.232369,-3.3765404040404,3.1475493835279,-0.679141973560306,-0.0423405657640747,-2.24185966029527,\ +-3,-0.232369,-3.3490095959596,3.14754700099254,-0.679147332011116,-0.0423545614581312,-2.24187333267148,\ +-3,-0.232369,-3.32147878787879,3.1475444206989,-0.679153135230974,-0.0423697188408503,-2.2418881398999,\ +-3,-0.232369,-3.29394797979798,3.14754161695901,-0.679159440993529,-0.0423861888107416,-2.24190422939311,\ +-3,-0.232369,-3.26641717171717,3.14753855943454,-0.679166317531351,-0.0424041495839107,-2.24192177525019,\ +-3,-0.232369,-3.23888636363636,3.14753521203453,-0.679173846014902,-0.0424238131688246,-2.24194098458196,\ +-3,-0.232369,-3.21135555555555,3.14753153148416,-0.679182123771641,-0.0424454337742853,-2.24196210572468,\ +-3,-0.232369,-3.18382474747475,3.14752746544362,-0.679191268516625,-0.0424693188592801,-2.24198543903466,\ +-3,-0.232369,-3.15629393939394,3.14752295000335,-0.679201423985847,-0.0424958438466934,-2.24201135126204,\ +-3,-0.232369,-3.12876313131313,3.14751790630025,-0.679212767546755,-0.0425254720011023,-2.24204029496942,\ +-3,-0.232369,-3.10123232323232,3.1475122358723,-0.679225520645744,-0.0425587817165524,-2.24207283518922,\ +-3,-0.232369,-3.07370151515151,3.14750581416692,-0.679239963408264,-0.0425965046504363,-2.24210968667665,\ +-3,-0.232369,-3.04617070707071,3.14749848128603,-0.679256455453753,-0.0426395800898208,-2.24215176702008,\ +-3,-0.232369,-3.0186398989899,3.14749002849068,-0.679275466247416,-0.042689234227068,-2.24220027408531,\ +-3,-0.232369,-2.99110909090909,3.14748017801121,-0.679297620508213,-0.0427470987605321,-2.24225680187645,\ +-3,-0.232369,-2.96357828282828,3.14746855193957,-0.679323768171765,-0.0428153936301504,-2.24232351905007,\ +-3,-0.232369,-2.93604747474747,3.14745462263342,-0.67935509593423,-0.0428972183579633,-2.24240345352542,\ +-3,-0.232369,-2.90851666666667,3.14743763040319,-0.679393312378533,-0.0429970355778009,-2.24250096484395,\ +-3,-0.232369,-2.88098585858586,3.14741644019218,-0.679440970308532,-0.0431215129372906,-2.24262256662241,\ +-3,-0.232369,-2.85345505050505,3.14738927706328,-0.679502061653718,-0.0432810769245668,-2.24277844448414,\ +-3,-0.232369,-2.82592424242424,3.14735320131364,-0.679583197964728,-0.0434929961949376,-2.24298546815712,\ +-3,-0.232369,-2.79839343434343,3.14730296552328,-0.679696180972703,-0.0437880955939261,-2.24327375039483,\ +-3,-0.232369,-2.77086262626263,3.14722819712575,-0.679864339140316,-0.0442273065433072,-2.24370281502777,\ +-3,-0.232369,-2.74333181818182,3.14710511983912,-0.68014114661085,-0.0449502977227106,-2.24440910421628,\ +-3,-0.232369,-2.71580101010101,3.14686457045946,-0.680682155168488,-0.0463633535712448,-2.24578951672614,\ +-3,-0.232369,-2.6882702020202,3.14618483403511,-0.682210919129722,-0.0503563197192748,-2.2496902404151,\ +-3,-0.232369,-2.66073939393939,3.13125937017448,-0.715779094141866,-0.138032762828571,-2.33534124919421,\ +-3,-0.232369,-2.63320858585858,3.14933404434055,-0.675128174923559,-0.0318569577722819,-2.23161823662093,\ +-3,-0.232369,-2.60567777777778,3.14842839621074,-0.677165026521929,-0.0371769938845247,-2.23681537331575,\ +-3,-0.232369,-2.57814696969697,3.14814635033339,-0.677799362945963,-0.0388338120277216,-2.23843391690962,\ +-3,-0.232369,-2.55061616161616,3.14800877408674,-0.678108779361316,-0.0396419742446971,-2.23922340957934,\ +-3,-0.232369,-2.52308535353535,3.14792729908962,-0.678292021033929,-0.0401205816780342,-2.23969096058872,\ +-3,-0.232369,-2.49555454545454,3.14787342136041,-0.678413194959253,-0.0404370748673673,-2.24000014239373,\ +-3,-0.232369,-2.46802373737374,3.14783515002838,-0.678499269253715,-0.0406618916165332,-2.2402197655978,\ +-3,-0.232369,-2.44049292929293,3.14780656203982,-0.678563565185328,-0.040829825637021,-2.24038382013461,\ +-3,-0.232369,-2.41296212121212,3.14778439502143,-0.678613420007899,-0.040960041042334,-2.24051102740293,\ +-3,-0.232369,-2.38543131313131,3.14776670412242,-0.678653207796027,-0.0410639624423231,-2.24061254808997,\ +-3,-0.232369,-2.3579005050505,3.14775225789962,-0.678685698132003,-0.0411488236864236,-2.24069544893432,\ +-3,-0.232369,-2.3303696969697,3.14774023868141,-0.678712730003443,-0.0412194280114346,-2.24076442221206,\ +-3,-0.232369,-2.30283888888889,3.147730082248,-0.678735572371184,-0.0412790898058238,-2.24082270574517,\ +-3,-0.232369,-2.27530808080808,3.14772138669164,-0.678755129147481,-0.041330169990668,-2.24087260591454,\ +-3,-0.232369,-2.24777727272727,3.1477138579662,-0.678772061657989,-0.0413743958770539,-2.24091581012822,\ +-3,-0.232369,-2.22024646464646,3.14770727597813,-0.678786864904928,-0.0414130603572545,-2.24095358141108,\ +-3,-0.232369,-2.19271565656565,3.14770147271299,-0.678799916761905,-0.0414471503962602,-2.24098688392801,\ +-3,-0.232369,-2.16518484848485,3.14769631769188,-0.67881151068304,-0.0414774324645168,-2.24101646644301,\ +-3,-0.232369,-2.13765404040404,3.14769170804377,-0.678821878030786,-0.041504510855715,-2.24104291928987,\ +-3,-0.232369,-2.11012323232323,3.14768756157054,-0.678831203673247,-0.0415288684253641,-2.24106671416951,\ +-3,-0.232369,-2.08259242424242,3.14768381180224,-0.678839637104818,-0.0415508956366369,-2.24108823252495,\ +-3,-0.232369,-2.05506161616161,3.14768040440711,-0.67884730052066,-0.0415709116501103,-2.24110778614374,\ +-3,-0.232369,-2.02753080808081,3.1476772945417,-0.678854294776079,-0.0415891798889112,-2.24112563236362,\ +-3,-0.232369,-2,3.14767444486632,-0.678860703850047,-0.0416059196970431,-2.24114198546147,\ +-3,-0.230734,-4.72555,3.14758838073246,-0.679054266739248,-0.0421114850319807,-2.24163587161157,\ +-3,-0.230734,-4.69801919191919,3.1475880998754,-0.67905489840196,-0.0421131348666799,-2.24163748333304,\ +-3,-0.230734,-4.67048838383838,3.14758781132742,-0.679055547361962,-0.042114829880024,-2.24163913918948,\ +-3,-0.230734,-4.64295757575758,3.14758751476824,-0.679056214339611,-0.0421165719535141,-2.24164084101891,\ +-3,-0.230734,-4.61542676767677,3.14758720985951,-0.679056900095828,-0.0421183630745987,-2.24164259076289,\ +-3,-0.230734,-4.58789595959596,3.14758689624358,-0.679057605434996,-0.0421202053442355,-2.24164439047382,\ +-3,-0.230734,-4.56036515151515,3.14758657354208,-0.679058331208108,-0.0421221009851138,-2.24164624232304,\ +-3,-0.230734,-4.53283434343434,3.14758624135439,-0.679059078316177,-0.0421240523505999,-2.24164814860958,\ +-3,-0.230734,-4.50530353535354,3.14758589925598,-0.679059847713991,-0.0421260619344837,-2.24165011176958,\ +-3,-0.230734,-4.47777272727273,3.14758554679661,-0.679060640414162,-0.0421281323816116,-2.24165213438682,\ +-3,-0.230734,-4.45024191919192,3.14758518349836,-0.679061457491592,-0.0421302664995,-2.24165421920395,\ +-3,-0.230734,-4.42271111111111,3.14758480885341,-0.679062300088319,-0.0421324672710357,-2.24165636913493,\ +-3,-0.230734,-4.3951803030303,3.14758442232178,-0.679063169418855,-0.0421347378683872,-2.24165858727868,\ +-3,-0.230734,-4.36764949494949,3.14758402332863,-0.679064066776018,-0.04213708166826,-2.24166087693387,\ +-3,-0.230734,-4.34011868686869,3.14758361126145,-0.679064993537356,-0.0421395022686524,-2.2416632416154,\ +-3,-0.230734,-4.31258787878788,3.14758318546697,-0.679065951172189,-0.0421420035072849,-2.24166568507233,\ +-3,-0.230734,-4.28505707070707,3.14758274524756,-0.679066941249406,-0.0421445894819034,-2.24166821130773,\ +-3,-0.230734,-4.25752626262626,3.14758228985762,-0.67906796544601,-0.0421472645726825,-2.2416708246006,\ +-3,-0.230734,-4.22999545454545,3.14758181849917,-0.67906902555663,-0.0421500334669819,-2.24167352953002,\ +-3,-0.230734,-4.20246464646465,3.14758133031733,-0.679070123503993,-0.0421529011867585,-2.24167633100192,\ +-3,-0.230734,-4.17493383838384,3.14758082439505,-0.679071261350564,-0.0421558731189627,-2.24167923427881,\ +-3,-0.230734,-4.14740303030303,3.14758029974739,-0.679072441311496,-0.0421589550493114,-2.24168224501275,\ +-3,-0.230734,-4.11987222222222,3.14757975531516,-0.679073665768993,-0.0421621531998842,-2.24168536928209,\ +-3,-0.230734,-4.09234141414141,3.14757918995775,-0.679074937288389,-0.0421654742710498,-2.24168861363241,\ +-3,-0.230734,-4.06481060606061,3.14757860244511,-0.679076258636078,-0.0421689254883246,-2.24169198512229,\ +-3,-0.230734,-4.0372797979798,3.14757799144888,-0.679077632799603,-0.0421725146548506,-2.24169549137463,\ +-3,-0.230734,-4.00974898989899,3.14757735553238,-0.679079063010209,-0.0421762502102924,-2.24169914063412,\ +-3,-0.230734,-3.98221818181818,3.14757669313922,-0.679080552768211,-0.0421801412970922,-2.24170294183199,\ +-3,-0.230734,-3.95468737373737,3.14757600258073,-0.679082105871594,-0.0421841978351765,-2.24170690465903,\ +-3,-0.230734,-3.92715656565657,3.14757528202146,-0.679083726448343,-0.0421884306063988,-2.241711039648,\ +-3,-0.230734,-3.89962575757576,3.14757452946296,-0.679085418993084,-0.0421928513502319,-2.24171535826718,\ +-3,-0.230734,-3.87209494949495,3.14757374272525,-0.679087188408708,-0.0421974728725006,-2.24171987302657,\ +-3,-0.230734,-3.84456414141414,3.14757291942575,-0.67908904005381,-0.0422023091692719,-2.24172459759889,\ +-3,-0.230734,-3.81703333333333,3.14757205695511,-0.679090979796885,-0.042207375568427,-2.24172954695796,\ +-3,-0.230734,-3.78950252525252,3.14757115244968,-0.679093014078472,-0.0422126888919389,-2.24173473753712,\ +-3,-0.230734,-3.76197171717172,3.14757020275971,-0.679095149982565,-0.0422182676424619,-2.24174018741161,\ +-3,-0.230734,-3.73444090909091,3.14756920441265,-0.679097395319073,-0.0422241322186071,-2.24174591650879,\ +-3,-0.230734,-3.7069101010101,3.1475681535708,-0.679099758719201,-0.0422303051641727,-2.24175194685168,\ +-3,-0.230734,-3.67937929292929,3.14756704598197,-0.679102249746366,-0.0422368114577527,-2.24175830284182,\ +-3,-0.230734,-3.65184848484848,3.14756587692196,-0.679104879025519,-0.0422436788505648,-2.24176501158936,\ +-3,-0.230734,-3.62431767676768,3.14756464112723,-0.679107658394631,-0.042250938262131,-2.24177210329954,\ +-3,-0.230734,-3.59678686868687,3.1475633327157,-0.679110601082915,-0.0422586242457133,-2.24177961172739,\ +-3,-0.230734,-3.56925606060606,3.147561945093,-0.679113721921373,-0.0422667755382774,-2.241787574715,\ +-3,-0.230734,-3.54172525252525,3.14756047084146,-0.679117037592787,-0.0422754357134626,-2.24179603482943,\ +-3,-0.230734,-3.51419444444444,3.14755890158735,-0.679120566930069,-0.042284653960784,-2.24180504012383,\ +-3,-0.230734,-3.48666363636364,3.14755722784186,-0.679124331274167,-0.0422944860204885,-2.24181464505079,\ +-3,-0.230734,-3.45913282828283,3.14755543880892,-0.679128354905945,-0.0423049953115895,-2.24182491156426,\ +-3,-0.230734,-3.43160202020202,3.14755352215221,-0.679132665570522,-0.0423162543013125,-2.24183591045739,\ +-3,-0.230734,-3.40407121212121,3.14755146371018,-0.679137295117911,-0.0423283461784555,-2.24184772299721,\ +-3,-0.230734,-3.3765404040404,3.14754924714564,-0.679142280291345,-0.0423413669123774,-2.24186044293606,\ +-3,-0.230734,-3.3490095959596,3.14754685351124,-0.679147663704518,-0.0423554278054275,-2.24187417900508,\ +-3,-0.230734,-3.32147878787879,3.14754426070641,-0.679153495062748,-0.0423706586825321,-2.24188905803008,\ +-3,-0.230734,-3.29394797979798,3.14754144279303,-0.67915983270224,-0.0423872119115381,-2.24190522885901,\ +-3,-0.230734,-3.26641717171717,3.14753836912472,-0.679166745548423,-0.0424052675182264,-2.24192286735884,\ +-3,-0.230734,-3.23888636363636,3.14753500322764,-0.6791743156329,-0.0424250397602507,-2.2419421828376,\ +-3,-0.230734,-3.21135555555555,3.14753130134633,-0.67918264136406,-0.0424467856697114,-2.24196342638965,\ +-3,-0.230734,-3.18382474747475,3.1475272105311,-0.679191841828644,-0.042470816288276,-2.24198690187119,\ +-3,-0.230734,-3.15629393939394,3.14752266608916,-0.679202062524219,-0.0424975116398562,-2.24201298052711,\ +-3,-0.230734,-3.12876313131313,3.1475175881381,-0.679213483110636,-0.0425273409765793,-2.24204212076925,\ +-3,-0.230734,-3.10123232323232,3.1475118768698,-0.679226328061783,-0.0425608905999354,-2.24207489535479,\ +-3,-0.230734,-3.07370151515151,3.14750540592441,-0.679240881567745,-0.0425989027837047,-2.24211202941007,\ +-3,-0.230734,-3.04617070707071,3.147498012932,-0.679257508807274,-0.0426423313353107,-2.2421544547084,\ +-3,-0.230734,-3.0186398989899,3.1474894857008,-0.679276687011167,-0.0426924227299684,-2.24220338892985,\ +-3,-0.230734,-2.99110909090909,3.14747954152024,-0.679299052010779,-0.0427508376904318,-2.24226045443244,\ +-3,-0.230734,-2.96357828282828,3.14746779521164,-0.67932547009377,-0.0428198388663863,-2.24232786159585,\ +-3,-0.230734,-2.93604747474747,3.14745370807817,-0.679357152818433,-0.0429025907170711,-2.24240870177638,\ +-3,-0.230734,-2.90851666666667,3.14743650295715,-0.679395848065602,-0.0430036585182191,-2.24250743478626,\ +-3,-0.230734,-2.88098585858586,3.14741501584743,-0.679444173736852,-0.043129879945642,-2.24263074034251,\ +-3,-0.230734,-2.85345505050505,3.14738742101148,-0.679506236014521,-0.0432919799035756,-2.24278909559083,\ +-3,-0.230734,-2.82592424242424,3.14735068282133,-0.679588862190052,-0.043507790538966,-2.2429999207335,\ +-3,-0.230734,-2.79839343434343,3.14729935452701,-0.679704302298511,-0.043809307618704,-2.24329447239558,\ +-3,-0.230734,-2.77086262626263,3.14722259126856,-0.679876947016168,-0.0442602369516305,-2.24373498470292,\ +-3,-0.230734,-2.74333181818182,3.14709526003159,-0.68016332185095,-0.0450082170518484,-2.24446568553724,\ +-3,-0.230734,-2.71580101010101,3.14684285158669,-0.680731002087357,-0.0464909364410776,-2.24591415227381,\ +-3,-0.230734,-2.6882702020202,3.14610318800058,-0.682394545474714,-0.0508359318752572,-2.25015877293678,\ +-3,-0.230734,-2.66073939393939,3.10431921913353,-0.776368950071312,-0.296286914401517,-2.48993953403578,\ +-3,-0.230734,-2.63320858585858,3.14922777764844,-0.675367174458325,-0.0324811987119699,-2.23222805682244,\ +-3,-0.230734,-2.60567777777778,3.14840362380309,-0.677220741005791,-0.0373225140914795,-2.23695753182586,\ +-3,-0.230734,-2.57814696969697,3.14813558708337,-0.677823570077051,-0.038897038436392,-2.23849568271002,\ +-3,-0.230734,-2.55061616161616,3.14800278728262,-0.678122244007366,-0.0396771424441347,-2.23925776534985,\ +-3,-0.230734,-2.52308535353535,3.1479234930942,-0.678300580923341,-0.0401429391835231,-2.23971280160816,\ +-3,-0.230734,-2.49555454545454,3.14787079003574,-0.678419112950675,-0.0404525320209982,-2.24001524246799,\ +-3,-0.230734,-2.46802373737374,3.14783322292726,-0.678503603408316,-0.0406732119596626,-2.240230824427,\ +-3,-0.230734,-2.44049292929293,3.14780509009994,-0.678566875657677,-0.0408384722328082,-2.24039226698333,\ +-3,-0.230734,-2.41296212121212,3.14778323414895,-0.678616030872846,-0.040966860339243,-2.24051768916563,\ +-3,-0.230734,-2.38543131313131,3.14776576519989,-0.678655319483566,-0.0410694779418182,-2.2406179361746,\ +-3,-0.230734,-2.3579005050505,3.14775148286452,-0.678687441227823,-0.0411533764642087,-2.24069989653731,\ +-3,-0.230734,-2.3303696969697,3.14773958808948,-0.678714193219896,-0.0412232497745726,-2.24076815568774,\ +-3,-0.230734,-2.30283888888889,3.14772952836745,-0.678736818078496,-0.0412823434586134,-2.24082588423455,\ +-3,-0.230734,-2.27530808080808,3.14772090945787,-0.678756202472047,-0.0413329733983633,-2.24087534456004,\ +-3,-0.230734,-2.24777727272727,3.14771344250416,-0.678772996054554,-0.0413768364198372,-2.24091819429145,\ +-3,-0.230734,-2.22024646464646,3.14770691102696,-0.678787685699841,-0.0414152041848051,-2.24095567571357,\ +-3,-0.230734,-2.19271565656565,3.14770114959142,-0.678800643479787,-0.0414490485047811,-2.24098873818787,\ +-3,-0.230734,-2.16518484848485,3.14769602959978,-0.678812158617738,-0.0414791247998759,-2.24101811968333,\ +-3,-0.230734,-2.13765404040404,3.14769144957894,-0.678822459332194,-0.0415060291521287,-2.24104440251175,\ +-3,-0.230734,-2.11012323232323,3.14768732838703,-0.67883172811555,-0.0415302382119423,-2.24106805231233,\ +-3,-0.230734,-2.08259242424242,3.14768360036439,-0.678840112639985,-0.0415521376830755,-2.24108944587858,\ +-3,-0.230734,-2.05506161616161,3.14768021180904,-0.678847733684131,-0.0415720430262525,-2.24110889138369,\ +-3,-0.230734,-2.02753080808081,3.14767711837314,-0.67885469098867,-0.041590214753356,-2.24112664332142,\ +-3,-0.230734,-2,3.1476742831113,-0.67886106764584,-0.0416068698923185,-2.24114291370606,\ +-3,-0.230428,-4.72555,3.14758837765193,-0.679054273667527,-0.0421115031278941,-2.24163588928944,\ +-3,-0.230428,-4.69801919191919,3.14758809671109,-0.679054905518678,-0.0421131534547726,-2.24163750149173,\ +-3,-0.230428,-4.67048838383838,3.14758780807586,-0.679055554674909,-0.042114848980652,-2.24163915784886,\ +-3,-0.230428,-4.64295757575758,3.14758751142576,-0.679056221857018,-0.042116591588172,-2.24164086019999,\ +-3,-0.230428,-4.61542676767677,3.14758720642226,-0.679056907826395,-0.0421183832659998,-2.24164261048784,\ +-3,-0.230428,-4.58789595959596,3.14758689270746,-0.679057613387918,-0.0421202261163999,-2.24164441076612,\ +-3,-0.230428,-4.56036515151515,3.14758656990277,-0.679058339393113,-0.0421221223634632,-2.24164626320753,\ +-3,-0.230428,-4.53283434343434,3.1475862376073,-0.679059086743578,-0.0421240743620616,-2.24164817011254,\ +-3,-0.230428,-4.50530353535354,3.14758589539626,-0.679059856394717,-0.0421260846076041,-2.24165013391893,\ +-3,-0.230428,-4.47777272727273,3.14758554281909,-0.679060649359809,-0.0421281557466793,-2.24165215721213,\ +-3,-0.230428,-4.45024191919192,3.14758517939757,-0.679061466714477,-0.0421302905886811,-2.24165424273663,\ +-3,-0.230428,-4.42271111111111,3.14758480462354,-0.67906230960153,-0.0421324921185208,-2.24165639340841,\ +-3,-0.230428,-4.3951803030303,3.14758441795662,-0.679063179236323,-0.0421347635105542,-2.24165861232848,\ +-3,-0.230428,-4.36764949494949,3.14758401882159,-0.679064076912576,-0.0421371081438512,-2.24166090279784,\ +-3,-0.230428,-4.34011868686869,3.14758360660552,-0.679065004008814,-0.0421395296189702,-2.24166326833389,\ +-3,-0.230428,-4.31258787878788,3.14758318065461,-0.679065961995426,-0.0421420317764066,-2.2416657126884,\ +-3,-0.230428,-4.28505707070707,3.14758274027079,-0.679066952442449,-0.0421446187169182,-2.24166823986738,\ +-3,-0.230428,-4.25752626262626,3.14758228470784,-0.679067977028139,-0.0421472948239532,-2.24167085415303,\ +-3,-0.230428,-4.22999545454545,3.14758181316721,-0.679069037548494,-0.0421500647884343,-2.2416735601279,\ +-3,-0.230428,-4.20246464646465,3.14758132479334,-0.679070135927722,-0.0421529336362023,-2.24167636270174,\ +-3,-0.230428,-4.17493383838384,3.14758081866847,-0.679071274229921,-0.0421559067584478,-2.24167926714118,\ +-3,-0.230428,-4.14740303030303,3.14758029380689,-0.679072454672007,-0.0421589899455237,-2.24168227910282,\ +-3,-0.230428,-4.11987222222222,3.14757974914851,-0.679073679638136,-0.0421621894245866,-2.24168540466996,\ +-3,-0.230428,-4.09234141414141,3.14757918355177,-0.679074951695772,-0.0421655119015744,-2.24168865039362,\ +-3,-0.230428,-4.06481060606061,3.14757859578561,-0.679076273613653,-0.0421689646081251,-2.24169202333837,\ +-3,-0.230428,-4.0372797979798,3.14757798452051,-0.679077648381898,-0.0421725553541183,-2.24169553113369,\ +-3,-0.230428,-4.00974898989899,3.1475773483185,-0.679079079234602,-0.0421762925866519,-2.24169918203153,\ +-3,-0.230428,-3.98221818181818,3.14757668562184,-0.679080569675224,-0.042180185456382,-2.24170298497115,\ +-3,-0.230428,-3.95468737373737,3.14757599474026,-0.67908212350523,-0.0421842438923318,-2.2417069496522,\ +-3,-0.230428,-3.92715656565657,3.14757527383663,-0.679083744856476,-0.04218847868645,-2.24171108661734,\ +-3,-0.230428,-3.89962575757576,3.14757452091057,-0.67908543822788,-0.0421929015894388,-2.2417154073458,\ +-3,-0.230428,-3.87209494949495,3.14757373377997,-0.67908720852713,-0.0421975254196412,-2.2417199243598,\ +-3,-0.230428,-3.84456414141414,3.14757291005986,-0.679089061118174,-0.0422023641871127,-2.24172465134576,\ +-3,-0.230428,-3.81703333333333,3.14757204713826,-0.679091001875513,-0.0422074332354092,-2.24172960329276,\ +-3,-0.230428,-3.78950252525252,3.14757114214849,-0.679093037246418,-0.0422127494041086,-2.24173479665139,\ +-3,-0.230428,-3.76197171717172,3.14757019193743,-0.679095174322486,-0.0422183312156987,-2.24174024951622,\ +-3,-0.230428,-3.73444090909091,3.1475691930287,-0.679097420922195,-0.0422241990911955,-2.24174598183654,\ +-3,-0.230428,-3.7069101010101,3.1475681415803,-0.679099785686479,-0.042230375599786,-2.24175201566013,\ +-3,-0.230428,-3.67937929292929,3.14756703333511,-0.679102278189802,-0.0422368857489279,-2.24175837541678,\ +-3,-0.230428,-3.65184848484848,3.14756586356336,-0.679104909069717,-0.0422437573227621,-2.24176508824875,\ +-3,-0.230428,-3.62431767676768,3.14756462699507,-0.679107690178629,-0.0422510212784993,-2.24177218439812,\ +-3,-0.230428,-3.59678686868687,3.14756331774076,-0.679110634762333,-0.0422587122127076,-2.24177969766223,\ +-3,-0.230428,-3.56925606060606,3.14756192919761,-0.679113757670953,-0.0422668689123133,-2.24178766593198,\ +-3,-0.230428,-3.54172525252525,3.14756045393806,-0.679117075609435,-0.0422755350088337,-2.24179613183095,\ +-3,-0.230428,-3.51419444444444,3.14755888357694,-0.679120607436476,-0.0422847597591369,-2.24180514347811,\ +-3,-0.230428,-3.48666363636364,3.14755720861199,-0.679124374523174,-0.0422945989822207,-2.24181475540296,\ +-3,-0.230428,-3.45913282828283,3.14755541823144,-0.679128401185831,-0.0423051161896415,-2.24182502964988,\ +-3,-0.230428,-3.43160202020202,3.14755350008031,-0.679132715211419,-0.0423163839579673,-2.24183603711881,\ +-3,-0.230428,-3.40407121212121,3.14755143997495,-0.679137348499704,-0.0423284856059306,-2.24184785920373,\ +-3,-0.230428,-3.3765404040404,3.14754922155175,-0.679142337853407,-0.0423415172582537,-2.24186058980876,\ +-3,-0.230428,-3.3490095959596,3.14754682583147,-0.67914772595781,-0.0423555904042941,-2.24187433784771,\ +-3,-0.230428,-3.32147878787879,3.14754423067498,-0.679153562605039,-0.0423708350956894,-2.24188923036787,\ +-3,-0.230428,-3.29394797979798,3.14754141009702,-0.67915990623734,-0.0423874039772676,-2.24190541648778,\ +-3,-0.230428,-3.26641717171717,3.14753833339308,-0.679166825910797,-0.0424054774160491,-2.24192307240777,\ +-3,-0.230428,-3.23888636363636,3.14753496401714,-0.679174403819437,-0.0424252700939467,-2.24194240785031,\ +-3,-0.230428,-3.21135555555555,3.14753125812302,-0.679182738575625,-0.0424470395758067,-2.2419636744302,\ +-3,-0.230428,-3.18382474747475,3.14752716264591,-0.679191949525037,-0.0424710975796068,-2.24198717666434,\ +-3,-0.230428,-3.15629393939394,3.14752261274509,-0.679202182497916,-0.0424978249981889,-2.24201328664648,\ +-3,-0.230428,-3.12876313131313,3.14751752834556,-0.679213617587275,-0.0425276922150189,-2.24204246389365,\ +-3,-0.230428,-3.10123232323232,3.14751180938472,-0.67922647983934,-0.0425612870265041,-2.24207528262341,\ +-3,-0.230428,-3.07370151515151,3.14750532916087,-0.679241054213099,-0.042599353714709,-2.24211246992401,\ +-3,-0.230428,-3.04617070707071,3.14749792483611,-0.67925770693969,-0.0426428488357559,-2.24215496025394,\ +-3,-0.230428,-3.0186398989899,3.14748938356457,-0.679276916721088,-0.0426930227074435,-2.24220397504711,\ +-3,-0.230428,-2.99110909090909,3.14747942169874,-0.679299321495816,-0.0427515415562094,-2.24226114203806,\ +-3,-0.230428,-2.96357828282828,3.14746765267982,-0.679325790655546,-0.0428206761390732,-2.2423286795265,\ +-3,-0.230428,-2.93604747474747,3.14745353570994,-0.679357540483893,-0.0429036032573304,-2.24240969092571,\ +-3,-0.230428,-2.90851666666667,3.14743629030051,-0.679396326341897,-0.043004907724179,-2.24250865513402,\ +-3,-0.230428,-2.88098585858586,3.14741474693083,-0.679444778544816,-0.0431314596386441,-2.24263228354266,\ +-3,-0.230428,-2.85345505050505,3.14738707015407,-0.679507025111803,-0.0432940409403429,-2.2427911090151,\ +-3,-0.230428,-2.82592424242424,3.14735020595479,-0.679589934688661,-0.0435105917893554,-2.24300265727153,\ +-3,-0.230428,-2.79839343434343,3.14729866922535,-0.679705843578967,-0.0438133332765823,-2.24329840505578,\ +-3,-0.230428,-2.77086262626263,3.14722152372112,-0.679879347988051,-0.0442665080305506,-2.24374111091215,\ +-3,-0.230428,-2.74333181818182,3.14709337170038,-0.680167568809913,-0.0450193096494042,-2.24447652188206,\ +-3,-0.230428,-2.71580101010101,3.14683864524353,-0.680740462380483,-0.0465156457037055,-2.24593829072189,\ +-3,-0.230428,-2.6882702020202,3.14608685633847,-0.682431276265607,-0.0509318687290444,-2.25025249353053,\ +-3,-0.230428,-2.66073939393939,3.08501674689973,-0.819781253512019,-0.409675156433916,-2.60070836736608,\ +-3,-0.230428,-2.63320858585858,3.14920932724159,-0.675408670420659,-0.0325895816782585,-2.2323339360081,\ +-3,-0.230428,-2.60567777777778,3.14839915299827,-0.677230796087475,-0.0373487768774875,-2.236983187909,\ +-3,-0.230428,-2.57814696969697,3.14813362041405,-0.677827993222653,-0.0389085912143893,-2.23850696860455,\ +-3,-0.230428,-2.55061616161616,3.14800168668938,-0.678124719301048,-0.0396836076435547,-2.23926408119516,\ +-3,-0.230428,-2.52308535353535,3.14792279087383,-0.678302160254914,-0.0401470642268024,-2.23971683135784,\ +-3,-0.230428,-2.49555454545454,3.1478703033785,-0.678420207469088,-0.0404553907847374,-2.24001803519075,\ +-3,-0.230428,-2.46802373737374,3.14783286590437,-0.678504406372102,-0.0406753092142364,-2.24023287323239,\ +-3,-0.230428,-2.44049292929293,3.14780481705297,-0.678567489755031,-0.0408400761886885,-2.24039383388585,\ +-3,-0.230428,-2.41296212121212,3.14778301859145,-0.678616515673334,-0.0409681265856906,-2.24051892616022,\ +-3,-0.230428,-2.38543131313131,3.14776559071694,-0.678655711905143,-0.0410705029045366,-2.24061893745942,\ +-3,-0.230428,-2.3579005050505,3.14775133874388,-0.678687765362924,-0.0411542230700422,-2.2407007235855,\ +-3,-0.230428,-2.3303696969697,3.14773946704418,-0.678714465457297,-0.0412239608292314,-2.24076885031616,\ +-3,-0.230428,-2.30283888888889,3.14772942526867,-0.678737049953221,-0.0412829490903268,-2.24082647587543,\ +-3,-0.230428,-2.27530808080808,3.1477208205913,-0.678756402337724,-0.0413334954259011,-2.2408758545281,\ +-3,-0.230428,-2.24777727272727,3.14771336511403,-0.678773170109117,-0.0413772910315307,-2.24091863840105,\ +-3,-0.230428,-2.22024646464646,3.14770684302561,-0.678787838638546,-0.0414156036441654,-2.24095606594492,\ +-3,-0.230428,-2.19271565656565,3.14770108936845,-0.67880077892448,-0.0414494022716765,-2.24098908378231,\ +-3,-0.230428,-2.16518484848485,3.14769597589311,-0.678812279406947,-0.0414794402882316,-2.24101842788351,\ +-3,-0.230428,-2.13765404040404,3.14769140138544,-0.678822567721987,-0.0415063122545523,-2.24104467907415,\ +-3,-0.230428,-2.11012323232323,3.14768728489938,-0.678831825921621,-0.0415304936708226,-2.24106830186979,\ +-3,-0.230428,-2.08259242424242,3.14768356092555,-0.678840201340079,-0.0415523693581249,-2.24108967220165,\ +-3,-0.230428,-2.05506161616161,3.14768017587881,-0.678847814493162,-0.0415722540907047,-2.2411090975723,\ +-3,-0.230428,-2.02753080808081,3.14767708550334,-0.678854764914668,-0.0415904078400655,-2.24112683194758,\ +-3,-0.230428,-2,3.1476742529269,-0.678861135532171,-0.0416070472040769,-2.2411430869217,\ +-3,-0.229174,-4.72555,3.14758836501826,-0.679054302081339,-0.0421115773417002,-2.24163596178881,\ +-3,-0.229174,-4.69801919191919,3.14758808373366,-0.679054934705596,-0.0421132296878509,-2.24163757596372,\ +-3,-0.229174,-4.67048838383838,3.14758779474047,-0.679055584666924,-0.0421149273165507,-2.2416392343751,\ +-3,-0.229174,-4.64295757575758,3.14758749771738,-0.679056252687906,-0.0421166721151133,-2.24164093886666,\ +-3,-0.229174,-4.61542676767677,3.14758719232501,-0.679056939531845,-0.0421184660772107,-2.24164269138601,\ +-3,-0.229174,-4.58789595959596,3.14758687820458,-0.67905764600568,-0.0421203113104719,-2.2416444939921,\ +-3,-0.229174,-4.56036515151515,3.14758655497648,-0.67905837296314,-0.0421222100447451,-2.24164634886327,\ +-3,-0.229174,-4.53283434343434,3.1475862222388,-0.679059121308187,-0.0421241646410842,-2.24164825830601,\ +-3,-0.229174,-4.50530353535354,3.14758587956558,-0.679059891998771,-0.0421261776015463,-2.24165022476459,\ +-3,-0.229174,-4.47777272727273,3.14758552650508,-0.679060686050914,-0.0421282515798755,-2.24165225083145,\ +-3,-0.229174,-4.45024191919192,3.14758516257774,-0.679061504543185,-0.0421303893931744,-2.24165433925862,\ +-3,-0.229174,-4.42271111111111,3.147584787274,-0.679062348621581,-0.0421325940346717,-2.24165649297017,\ +-3,-0.229174,-4.3951803030303,3.14758440005195,-0.679063219504894,-0.0421348686877046,-2.2416587150759,\ +-3,-0.229174,-4.36764949494949,3.14758400033472,-0.679064118490562,-0.0421372167410551,-2.24166100888632,\ +-3,-0.229174,-4.34011868686869,3.14758358750756,-0.679065046961136,-0.042139641805796,-2.24166337792906,\ +-3,-0.229174,-4.31258787878788,3.14758316091478,-0.679066006391375,-0.0421421477338203,-2.24166582596704,\ +-3,-0.229174,-4.28505707070707,3.14758271985617,-0.67906699835604,-0.042144738638258,-2.24166835701839,\ +-3,-0.229174,-4.25752626262626,3.14758226358322,-0.679068024538549,-0.0421474189160044,-2.2416709753784,\ +-3,-0.229174,-4.22999545454545,3.14758179129491,-0.679069086740495,-0.04215019327262,-2.24167368564395,\ +-3,-0.229174,-4.20246464646465,3.14758130213294,-0.679070186892199,-0.0421530667499009,-2.24167649274035,\ +-3,-0.229174,-4.17493383838384,3.14758079517659,-0.679071327064425,-0.0421560447564567,-2.24167940195126,\ +-3,-0.229174,-4.14740303030303,3.14758026943692,-0.679072509481382,-0.0421591331016879,-2.2416824189519,\ +-3,-0.229174,-4.11987222222222,3.14757972385028,-0.67907373653522,-0.0421623380336109,-2.24168554984593,\ +-3,-0.229174,-4.09234141414141,3.14757915727122,-0.679075010802153,-0.0421656662810494,-2.24168880120673,\ +-3,-0.229174,-4.06481060606061,3.14757856846438,-0.679076335060555,-0.0421691251007918,-2.24169218012347,\ +-3,-0.229174,-4.0372797979798,3.14757795609556,-0.679077712311148,-0.0421727223304083,-2.24169569425262,\ +-3,-0.229174,-4.00974898989899,3.14757731872156,-0.67907914579972,-0.0421764664475409,-2.24169935187602,\ +-3,-0.229174,-3.98221818181818,3.1475766547789,-0.679080639042654,-0.0421803666366049,-2.24170316196589,\ +-3,-0.229174,-3.95468737373737,3.14757596257095,-0.679082195855732,-0.0421844328640118,-2.24170713425841,\ +-3,-0.229174,-3.92715656565657,3.14757524025352,-0.679083820386691,-0.0421886759632054,-2.24171127933676,\ +-3,-0.229174,-3.89962575757576,3.14757448581837,-0.679085517152131,-0.0421931077310441,-2.24171560872528,\ +-3,-0.229174,-3.87209494949495,3.14757369707462,-0.679087291079433,-0.0421977410373312,-2.24172013499646,\ +-3,-0.229174,-3.84456414141414,3.14757287162754,-0.679089147554572,-0.0422025899496348,-2.24172487189288,\ +-3,-0.229174,-3.81703333333333,3.14757200685413,-0.679091092476712,-0.0422076698759499,-2.24172983446661,\ +-3,-0.229174,-3.78950252525252,3.14757109987542,-0.679093132320852,-0.0422129977282468,-2.24173503923893,\ +-3,-0.229174,-3.76197171717172,3.14757014752438,-0.679095274209801,-0.0422185921105654,-2.2417405043841,\ +-3,-0.229174,-3.73444090909091,3.14756914630901,-0.67909752599732,-0.0422244735360618,-2.24174624994139,\ +-3,-0.229174,-3.7069101010101,3.14756809236946,-0.679099896364324,-0.0422306646783431,-2.24175229806062,\ +-3,-0.229174,-3.67937929292929,3.14756698142844,-0.679102394930724,-0.0422371906635857,-2.24175867328753,\ +-3,-0.229174,-3.65184848484848,3.1475658087331,-0.679105032385925,-0.0422440794113623,-2.24176540289671,\ +-3,-0.229174,-3.62431767676768,3.1475645689871,-0.679107820641703,-0.0422513620339354,-2.24177251728169,\ +-3,-0.229174,-3.59678686868687,3.14756325627061,-0.679110773012063,-0.0422590733060551,-2.24178005041388,\ +-3,-0.229174,-3.56925606060606,3.14756186394578,-0.679113904425846,-0.0422672522202281,-2.24178804038501,\ +-3,-0.229174,-3.54172525252525,3.14756038454455,-0.679117231679194,-0.0422759426461678,-2.24179653005136,\ +-3,-0.229174,-3.51419444444444,3.14755880963454,-0.679120773736938,-0.0422851941179634,-2.2418055678027,\ +-3,-0.229174,-3.48666363636364,3.14755712965831,-0.679124552094297,-0.0422950627787927,-2.24181520848526,\ +-3,-0.229174,-3.45913282828283,3.1475553337392,-0.679128591213446,-0.0423056125212307,-2.24182551451559,\ +-3,-0.229174,-3.43160202020202,3.1475534094456,-0.67913291905375,-0.0423169163720894,-2.24183655723351,\ +-3,-0.229174,-3.40407121212121,3.1475513425028,-0.679137567719848,-0.0423290581852384,-2.24184841855575,\ +-3,-0.229174,-3.3765404040404,3.14754911643818,-0.679142574259489,-0.0423421347253817,-2.24186119301163,\ +-3,-0.229174,-3.3490095959596,3.14754671214139,-0.679147981652952,-0.0423562582523578,-2.24187499026766,\ +-3,-0.229174,-3.32147878787879,3.14754410731422,-0.679153840050054,-0.0423715597520683,-2.24188993828379,\ +-3,-0.229174,-3.29394797979798,3.14754127577708,-0.679160208330148,-0.0423881930110141,-2.24190618729387,\ +-3,-0.229174,-3.26641717171717,3.14753818658595,-0.679167156087966,-0.0424063398031123,-2.24192391487262,\ +-3,-0.229174,-3.23888636363636,3.14753480289696,-0.67917476618741,-0.0424262165599159,-2.24194333245174,\ +-3,-0.229174,-3.21135555555555,3.14753108048983,-0.679183138082273,-0.0424480830439672,-2.24196469379295,\ +-3,-0.229174,-3.18382474747475,3.14752696582463,-0.679192392186729,-0.0424722537640769,-2.24198830613952,\ +-3,-0.229174,-3.15629393939394,3.14752239345004,-0.679202675704353,-0.0424991132000655,-2.2420145450893,\ +-3,-0.229174,-3.12876313131313,3.1475172824957,-0.679214170516924,-0.0425291364074642,-2.24204387472346,\ +-3,-0.229174,-3.10123232323232,3.1475115318476,-0.67922710403534,-0.0425629173589537,-2.24207687529316,\ +-3,-0.229174,-3.07370151515151,3.14750501339086,-0.679241764396896,-0.0426012086379833,-2.24211428199626,\ +-3,-0.229174,-3.04617070707071,3.14749756235235,-0.679258522185264,-0.0426449781690365,-2.24215704039699,\ +-3,-0.229174,-3.0186398989899,3.14748896317897,-0.679277862191032,-0.0426954921726938,-2.24220638746466,\ +-3,-0.229174,-2.99110909090909,3.14747892834288,-0.679300431079818,-0.0427544396696306,-2.24226397320147,\ +-3,-0.229174,-2.96357828282828,3.14746706556431,-0.679327111110046,-0.0428241250234359,-2.24233204873737,\ +-3,-0.229174,-2.93604747474747,3.14745282532735,-0.679359138172747,-0.042907776247848,-2.24241376751498,\ +-3,-0.229174,-2.90851666666667,3.14743541332584,-0.679398298705328,-0.0430100593241747,-2.24251368772568,\ +-3,-0.229174,-2.88098585858586,3.14741363707424,-0.679447274672288,-0.0431379792536675,-2.2426386525465,\ +-3,-0.229174,-2.85345505050505,3.14738562065329,-0.679510285117413,-0.0433025557224607,-2.24279942709522,\ +-3,-0.229174,-2.82592424242424,3.14734823321782,-0.679594371480736,-0.0435221802104645,-2.24301397798578,\ +-3,-0.229174,-2.79839343434343,3.14729582887367,-0.679712231683444,-0.043830018314673,-2.24331470464885,\ +-3,-0.229174,-2.77086262626263,3.14721708657481,-0.679889327369966,-0.0442925730969569,-2.24376657384327,\ +-3,-0.229174,-2.74333181818182,3.14708548606995,-0.680185304018992,-0.045065632097647,-2.24452177422444,\ +-3,-0.229174,-2.71580101010101,3.14682091401789,-0.680780340865412,-0.0466198039939227,-2.24604004282671,\ +-3,-0.229174,-2.6882702020202,3.14601605631253,-0.682590509350999,-0.051347768328815,-2.25065878533489,\ +-3,-0.229174,-2.66073939393939,3.22327091268837,-0.508840161383442,0.402469351407001,-1.8073254026365,\ +-3,-0.229174,-2.63320858585858,3.14913791456239,-0.67556928139634,-0.0330090801784612,-2.23274374357384,\ +-3,-0.229174,-2.60567777777778,3.14838134525109,-0.677270846673495,-0.0374533846771501,-2.23708537913906,\ +-3,-0.229174,-2.57814696969697,3.14812571211388,-0.677845779417233,-0.0389550468312548,-2.23855235103918,\ +-3,-0.229174,-2.55061616161616,3.14799723997976,-0.67813472019138,-0.0397097288876151,-2.23928959900616,\ +-3,-0.229174,-2.52308535353535,3.14791994562584,-0.678308559371441,-0.0401637780271747,-2.23973315904874,\ +-3,-0.229174,-2.49555454545454,3.14786832780807,-0.678424650633796,-0.0404669958504722,-2.24002937216511,\ +-3,-0.229174,-2.46802373737374,3.14783141461925,-0.678507670390764,-0.0406838344780205,-2.24024120155203,\ +-3,-0.229174,-2.44049292929293,3.14780370600103,-0.678569988570921,-0.040846602825574,-2.24040020974935,\ +-3,-0.229174,-2.41296212121212,3.14778214077724,-0.678618489924924,-0.0409732831173475,-2.24052396356963,\ +-3,-0.229174,-2.38543131313131,3.14776487972233,-0.67865731097046,-0.0410746794902268,-2.24062301756081,\ +-3,-0.229174,-2.3579005050505,3.14775075116857,-0.678689086851579,-0.041157674655506,-2.24070409543507,\ +-3,-0.229174,-2.3303696969697,3.14773897333413,-0.678715575837861,-0.0412268610231855,-2.24077168351205,\ +-3,-0.229174,-2.30283888888889,3.1477290046045,-0.678737996049683,-0.0412854201919708,-2.24082888989156,\ +-3,-0.229174,-2.27530808080808,3.14772045788452,-0.678757218084922,-0.0413356260693691,-2.24087793595107,\ +-3,-0.229174,-2.24777727272727,3.1477130491627,-0.678773880700749,-0.0413791470200353,-2.24092045151392,\ +-3,-0.229174,-2.22024646464646,3.14770656533906,-0.678788463170594,-0.0414172348543369,-2.24095765947211,\ +-3,-0.229174,-2.19271565656565,3.14770084339402,-0.678801332134292,-0.0414508471958839,-2.24099049532699,\ +-3,-0.229174,-2.16518484848485,3.14769575649312,-0.6788127728494,-0.0414807291065599,-2.24101968692854,\ +-3,-0.229174,-2.13765404040404,3.14769120447492,-0.678823010584359,-0.0415074689631727,-2.24104580906138,\ +-3,-0.229174,-2.11012323232323,3.14768710718969,-0.678832225600326,-0.0415315375883762,-2.24106932167156,\ +-3,-0.229174,-2.08259242424242,3.14768339973929,-0.678840563856683,-0.0415533162122966,-2.24109059718231,\ +-3,-0.229174,-2.05506161616161,3.1476800290142,-0.678848144799601,-0.0415731168154033,-2.24110994036699,\ +-3,-0.229174,-2.02753080808081,3.14767695113309,-0.678855067120604,-0.0415911971692952,-2.24112760304233,\ +-3,-0.229174,-2,3.14767412952187,-0.678861413076756,-0.0416077721205208,-2.24114379509168,\ +-3,-0.227774,-4.72555,3.14758835089553,-0.679054333844111,-0.0421116603026271,-2.24163604283325,\ +-3,-0.227774,-4.69801919191919,3.14758806922643,-0.679054967333165,-0.0421133149075302,-2.24163765921472,\ +-3,-0.227774,-4.67048838383838,3.14758777983279,-0.679055618195093,-0.0421150148885019,-2.24163931992403,\ +-3,-0.227774,-4.64295757575758,3.14758748239245,-0.679056287154484,-0.04211676213809,-2.24164102680999,\ +-3,-0.227774,-4.61542676767677,3.14758717656507,-0.67905697497679,-0.0421185586555732,-2.2416427818257,\ +-3,-0.227774,-4.58789595959596,3.14758686199084,-0.679057682471248,-0.0421204065545906,-2.24164458703596,\ +-3,-0.227774,-4.56036515151515,3.14758653828906,-0.679058410494056,-0.0421223080714383,-2.24164644462542,\ +-3,-0.227774,-4.53283434343434,3.14758620505662,-0.679059159951829,-0.0421242655740982,-2.24164835690734,\ +-3,-0.227774,-4.50530353535354,3.14758586186632,-0.67905993180537,-0.0421262815720742,-2.24165032633328,\ +-3,-0.227774,-4.47777272727273,3.14758550826504,-0.679060727073765,-0.0421283587271272,-2.24165235550347,\ +-3,-0.227774,-4.45024191919192,3.14758514377173,-0.679061546838898,-0.0421304998649985,-2.24165444717841,\ +-3,-0.227774,-4.42271111111111,3.14758476787529,-0.679062392250328,-0.042132707988236,-2.24165660429127,\ +-3,-0.227774,-4.3951803030303,3.14758438003206,-0.6790632645307,-0.0421349862902419,-2.24165882996168,\ +-3,-0.227774,-4.36764949494949,3.14758397966334,-0.679064164981624,-0.0421373381706824,-2.24166112751077,\ +-3,-0.227774,-4.34011868686869,3.14758356615236,-0.679065094990163,-0.0421397672524138,-2.24166350047771,\ +-3,-0.227774,-4.31258787878788,3.14758313884124,-0.679066056035959,-0.0421422774001042,-2.24166595263788,\ +-3,-0.227774,-4.28505707070707,3.14758269702743,-0.67906704969909,-0.0421448727407513,-2.24166848802295,\ +-3,-0.227774,-4.25752626262626,3.14758223995987,-0.679068077668742,-0.042147557686324,-2.24167111094296,\ +-3,-0.227774,-4.22999545454545,3.14758176683471,-0.679069141752795,-0.0421503369587922,-2.24167382601079,\ +-3,-0.227774,-4.20246464646465,3.14758127679064,-0.679070243888408,-0.0421532156178401,-2.24167663816925,\ +-3,-0.227774,-4.17493383838384,3.14758076890359,-0.679071386153835,-0.0421561990916076,-2.24167955272108,\ +-3,-0.227774,-4.14740303030303,3.14758024218098,-0.679072570781456,-0.0421592932108527,-2.24168257536235,\ +-3,-0.227774,-4.11987222222222,3.1475796955552,-0.679073800172373,-0.0421625042469841,-2.24168571221957,\ +-3,-0.227774,-4.09234141414141,3.14757912787643,-0.679075076912641,-0.0421658389544908,-2.2416889698912,\ +-3,-0.227774,-4.06481060606061,3.14757853790449,-0.679076403791417,-0.0421693046183689,-2.24169235549396,\ +-3,-0.227774,-4.0372797979798,3.14757792429989,-0.679077783821324,-0.0421729091072492,-2.24169587671468,\ +-3,-0.227774,-4.00974898989899,3.14757728561362,-0.679079220261262,-0.0421766609330369,-2.24169954186865,\ +-3,-0.227774,-3.98221818181818,3.14757662027574,-0.679080716642121,-0.0421805693180217,-2.24170335996511,\ +-3,-0.227774,-3.95468737373737,3.14757592658249,-0.679082276795738,-0.0421846442705629,-2.2417073407812,\ +-3,-0.227774,-3.92715656565657,3.14757520268172,-0.679083904887687,-0.0421888966706679,-2.24171149494561,\ +-3,-0.227774,-3.89962575757576,3.14757444655642,-0.679085605454388,-0.0421933383669929,-2.24171583403325,\ +-3,-0.227774,-3.87209494949495,3.14757365600584,-0.679087383445343,-0.0421979822870981,-2.24172037067306,\ +-3,-0.227774,-3.84456414141414,3.14757282862428,-0.679089244271238,-0.0422028425631099,-2.24172511867067,\ +-3,-0.227774,-3.81703333333333,3.1475719617764,-0.679091193858942,-0.0422079346753651,-2.24173009314884,\ +-3,-0.227774,-3.78950252525252,3.14757105256944,-0.679093238714561,-0.0422132756171147,-2.24173531070822,\ +-3,-0.227774,-3.76197171717172,3.14757009782074,-0.679095385995981,-0.0422188840839772,-2.24174078961256,\ +-3,-0.227774,-3.73444090909091,3.14756909402068,-0.679097643596573,-0.0422247806925906,-2.24174655000222,\ +-3,-0.227774,-3.7069101010101,3.14756803728949,-0.679100020242158,-0.0422309882338549,-2.2417526141416,\ +-3,-0.227774,-3.67937929292929,3.14756692332713,-0.679102525603719,-0.0422375319673202,-2.24175900670672,\ +-3,-0.227774,-3.65184848484848,3.14756574735486,-0.67910517042892,-0.0422444399647359,-2.24176575512085,\ +-3,-0.227774,-3.62431767676768,3.14756450404667,-0.679107966696249,-0.0422517435126176,-2.24177288994774,\ +-3,-0.227774,-3.59678686868687,3.14756318744863,-0.6791109277964,-0.0422594775859995,-2.24178044535445,\ +-3,-0.227774,-3.56925606060606,3.14756179088358,-0.679114068746695,-0.0422676814085171,-2.24178845965852,\ +-3,-0.227774,-3.54172525252525,3.14756030683782,-0.679117406445837,-0.0422763991177357,-2.24179697597787,\ +-3,-0.227774,-3.51419444444444,3.14755872682591,-0.679120959978031,-0.0422856805595509,-2.24180604300689,\ +-3,-0.227774,-3.48666363636364,3.14755704122832,-0.679124750978127,-0.0422955822418503,-2.24181571594808,\ +-3,-0.227774,-3.45913282828283,3.1475552390954,-0.679128804072468,-0.0423061684859692,-2.24182605763686,\ +-3,-0.227774,-3.43160202020202,3.14755330790928,-0.679133147414439,-0.0423175128255211,-2.24183713990813,\ +-3,-0.227774,-3.40407121212121,3.14755123329265,-0.679137813339384,-0.0423296997169036,-2.24184904526724,\ +-3,-0.227774,-3.3765404040404,3.14754899865022,-0.679142839171008,-0.0423428266456212,-2.24186186894766,\ +-3,-0.227774,-3.3490095959596,3.14754658472382,-0.679148268221946,-0.0423570067395814,-2.2418757214639,\ +-3,-0.227774,-3.32147878787879,3.14754396903603,-0.679154151045164,-0.0423723720376608,-2.24189073180458,\ +-3,-0.227774,-3.29394797979798,3.14754112518812,-0.679160547012847,-0.0423890776136006,-2.24190705146105,\ +-3,-0.227774,-3.26641717171717,3.14753802196592,-0.67916752632732,-0.0424073068282673,-2.2419248595583,\ +-3,-0.227774,-3.23888636363636,3.14753462218942,-0.679175172608436,-0.0424272780876837,-2.24194436945691,\ +-3,-0.227774,-3.21135555555555,3.14753088121595,-0.679183586260005,-0.0424492536357392,-2.24196583734261,\ +-3,-0.227774,-3.18382474747475,3.14752674496886,-0.679192888903293,-0.0424735511340319,-2.24198957353862,\ +-3,-0.227774,-3.15629393939394,3.14752214730659,-0.679203229294265,-0.0425005591170461,-2.24201595760381,\ +-3,-0.227774,-3.12876313131313,3.14751700645914,-0.679214791338056,-0.0425307579251276,-2.24204545878206,\ +-3,-0.227774,-3.10123232323232,3.1475112201223,-0.679227805122403,-0.0425647485225475,-2.24207866415461,\ +-3,-0.227774,-3.07370151515151,3.14750465858008,-0.679242562385524,-0.0426032928979848,-2.24211631810728,\ +-3,-0.227774,-3.04617070707071,3.14749715486465,-0.679259438647139,-0.0426473718683446,-2.24215937879888,\ +-3,-0.227774,-3.0186398989899,3.14748849034941,-0.679278925610273,-0.0426982697087557,-2.24220910083619,\ +-3,-0.227774,-2.99110909090909,3.14747837309557,-0.679301679861028,-0.0427577013511102,-2.24226715953407,\ +-3,-0.227774,-2.96357828282828,3.14746640431051,-0.679328598305593,-0.0428280094173825,-2.24233584339701,\ +-3,-0.227774,-2.93604747474747,3.14745202453621,-0.679360939195299,-0.0429124803239854,-2.24241836292114,\ +-3,-0.227774,-2.90851666666667,3.14743442367618,-0.67940052448092,-0.0430158728093291,-2.24251936691213,\ +-3,-0.227774,-2.88098585858586,3.14741238293427,-0.679450095300849,-0.0431453464304554,-2.24264584953239,\ +-3,-0.227774,-2.85345505050505,3.14738397987492,-0.679513975316665,-0.0433121941238549,-2.24280884283761,\ +-3,-0.227774,-2.82592424242424,3.14734599498764,-0.679599405381414,-0.0435353282146755,-2.24302682225482,\ +-3,-0.227774,-2.79839343434343,3.14729259580203,-0.679719503036332,-0.0438490103021015,-2.24333325789786,\ +-3,-0.227774,-2.77086262626263,3.14721201126409,-0.679900742018096,-0.0443223869235018,-2.24379569893353,\ +-3,-0.227774,-2.74333181818182,3.14707639253491,-0.68020575587084,-0.0451190501230395,-2.24457395822734,\ +-3,-0.227774,-2.71580101010101,3.14680012886872,-0.68082708778942,-0.0467419019042731,-2.24615932012424,\ +-3,-0.227774,-2.6882702020202,3.14592880684046,-0.682786738129911,-0.0518602966793845,-2.25115947364634,\ +-3,-0.227774,-2.66073939393939,3.16943909338446,-0.629910832853968,0.0862458499640306,-2.11624374988849,\ +-3,-0.227774,-2.63320858585858,3.14906536057809,-0.675732459228894,-0.033435283031239,-2.23316010061332,\ +-3,-0.227774,-2.60567777777778,3.14836238940724,-0.677313479390975,-0.0375647367249607,-2.23719415881677,\ +-3,-0.227774,-2.57814696969697,3.14811716017845,-0.677865013182281,-0.0390052833456467,-2.23860142702792,\ +-3,-0.227774,-2.55061616161616,3.14799239309491,-0.678145621097411,-0.0397382008753605,-2.23931741325576,\ +-3,-0.227774,-2.52308535353535,3.14791682949367,-0.678315567721133,-0.0401820830786938,-2.23975104123092,\ +-3,-0.227774,-2.49555454545454,3.14786615724662,-0.678429532343845,-0.0404797463492186,-2.24004182811155,\ +-3,-0.227774,-2.46802373737374,3.14782981645269,-0.678511264753765,-0.0406932225654832,-2.24025037276306,\ +-3,-0.227774,-2.44049292929293,3.14780248040689,-0.678572744998381,-0.0408538023160226,-2.24040724292264,\ +-3,-0.227774,-2.41296212121212,3.14778117117585,-0.678620670610846,-0.0409789788331633,-2.24052952770734,\ +-3,-0.227774,-2.38543131313131,3.14776409354621,-0.678659079123066,-0.041079297713631,-2.24062752909754,\ +-3,-0.227774,-2.3579005050505,3.14775010089513,-0.678690549351691,-0.041161494547643,-2.24070782708297,\ +-3,-0.227774,-2.3303696969697,3.14773842654445,-0.678716805597435,-0.0412300730222107,-2.24077482130992,\ +-3,-0.227774,-2.30283888888889,3.14772853842704,-0.678739044507978,-0.0412881586516589,-2.24083156508944,\ +-3,-0.227774,-2.27530808080808,3.14772005572284,-0.678758122568277,-0.0413379884820859,-2.24088024378913,\ +-3,-0.227774,-2.24777727272727,3.14771269868216,-0.678774668950435,-0.0413812058429717,-2.2409224627755,\ +-3,-0.227774,-2.22024646464646,3.14770625718175,-0.678789156233038,-0.0414190450584978,-2.24095942785832,\ +-3,-0.227774,-2.19271565656565,3.14770057033211,-0.678801946265267,-0.041452451239575,-2.24099206231528,\ +-3,-0.227774,-2.16518484848485,3.14769551285558,-0.678813320803392,-0.0414821603031275,-2.2410210850627,\ +-3,-0.227774,-2.13765404040404,3.14769098574985,-0.678823502508882,-0.0415087538168281,-2.24104706423333,\ +-3,-0.227774,-2.11012323232323,3.14768690974261,-0.678832669669486,-0.0415326974490015,-2.24107045473797,\ +-3,-0.227774,-2.08259242424242,3.14768322060981,-0.678840966728573,-0.0415543684701086,-2.24109162513167,\ +-3,-0.227774,-2.05506161616161,3.14767986576668,-0.678848511952131,-0.0415740757781087,-2.24111087717646,\ +-3,-0.227774,-2.02753080808081,3.14767680174528,-0.678855403101862,-0.0415920747160028,-2.24112846031663,\ +-3,-0.227774,-2,3.14767399230086,-0.678861721694231,-0.0416085781959856,-2.2411445825458,\ +-3,-0.216269,-4.72555,3.14758823410688,-0.679054596508132,-0.0421123463526447,-2.24163671303465,\ +-3,-0.216269,-4.69801919191919,3.14758794924779,-0.679055237171608,-0.0421140196963601,-2.24163834772206,\ +-3,-0.216269,-4.67048838383838,3.14758765653167,-0.679055895505965,-0.0421157391945136,-2.24164002749768,\ +-3,-0.216269,-4.64295757575758,3.14758735562892,-0.679056572252534,-0.0421175067833671,-2.24164175425304,\ +-3,-0.216269,-4.61542676767677,3.14758704619119,-0.679057268194691,-0.0421193245090253,-2.24164352998699,\ +-3,-0.216269,-4.58789595959596,3.14758672785015,-0.6790579841609,-0.0421211945353355,-2.24164535681338,\ +-3,-0.216269,-4.56036515151515,3.14758640021594,-0.679058721027986,-0.0421231191524818,-2.24164723696948,\ +-3,-0.216269,-4.53283434343434,3.14758606287555,-0.679059479724733,-0.0421251007863417,-2.24164917282515,\ +-3,-0.216269,-4.50530353535354,3.14758571539122,-0.679060261235781,-0.042127142008686,-2.24165116689274,\ +-3,-0.216269,-4.47777272727273,3.1475853572984,-0.679061066605889,-0.0421292455483164,-2.24165322183799,\ +-3,-0.216269,-4.45024191919192,3.14758498810376,-0.679061896944597,-0.0421314143032331,-2.24165534049199,\ +-3,-0.216269,-4.42271111111111,3.14758460728288,-0.67906275343133,-0.0421336513539573,-2.24165752586408,\ +-3,-0.216269,-4.3951803030303,3.1475842142778,-0.679063637320976,-0.0421359599781307,-2.24165978115618,\ +-3,-0.216269,-4.36764949494949,3.1475838084943,-0.679064549950035,-0.0421383436665376,-2.24166210977843,\ +-3,-0.216269,-4.34011868686869,3.14758338929881,-0.679065492743346,-0.0421408061407171,-2.2416645153664,\ +-3,-0.216269,-4.31258787878788,3.14758295601524,-0.679066467221529,-0.0421433513723516,-2.24166700180004,\ +-3,-0.216269,-4.28505707070707,3.14758250792123,-0.679067475009152,-0.0421459836046425,-2.24166957322451,\ +-3,-0.216269,-4.25752626262626,3.14758204424424,-0.679068517843778,-0.042148707375915,-2.24167223407329,\ +-3,-0.216269,-4.22999545454545,3.14758156415698,-0.679069597585959,-0.0421515275457317,-2.2416749890937,\ +-3,-0.216269,-4.20246464646465,3.14758106677261,-0.67907071623032,-0.0421544493238269,-2.2416778433751,\ +-3,-0.216269,-4.17493383838384,3.14758055113915,-0.679071875917839,-0.042157478302226,-2.24168080238036,\ +-3,-0.216269,-4.14740303030303,3.1475800162335,-0.679073078949553,-0.0421606204909667,-2.24168387198064,\ +-3,-0.216269,-4.11987222222222,3.14757946095462,-0.679074327801767,-0.0421638823579018,-2.24168705849442,\ +-3,-0.216269,-4.09234141414141,3.14757888411597,-0.679075625143087,-0.042167270873138,-2.24169036873076,\ +-3,-0.216269,-4.06481060606061,3.14757828443702,-0.679076973853449,-0.0421707935587527,-2.24169381003798,\ +-3,-0.216269,-4.0372797979798,3.14757766053382,-0.679078377045457,-0.0421744585445384,-2.24169739035806,\ +-3,-0.216269,-4.00974898989899,3.14757701090829,-0.679079838088372,-0.0421782746306387,-2.24170111828785,\ +-3,-0.216269,-3.98221818181818,3.14757633393625,-0.679081360635121,-0.0421822513580959,-2.24170500314798,\ +-3,-0.216269,-3.95468737373737,3.14757562785377,-0.67908294865278,-0.0421863990884995,-2.24170905506068,\ +-3,-0.216269,-3.92715656565657,3.14757489074195,-0.67908460645711,-0.0421907290941355,-2.24171328503782,\ +-3,-0.216269,-3.89962575757576,3.14757412050942,-0.679086338751706,-0.042195253660287,-2.2417177050809,\ +-3,-0.216269,-3.87209494949495,3.14757331487255,-0.679088150672568,-0.0421999862016417,-2.24172232829469,\ +-3,-0.216269,-3.84456414141414,3.14757247133284,-0.679090047838973,-0.0422049413951319,-2.24172716901708,\ +-3,-0.216269,-3.81703333333333,3.14757158715103,-0.679092036411666,-0.0422101353319698,-2.24173224296755,\ +-3,-0.216269,-3.78950252525252,3.14757065931737,-0.679094123159712,-0.0422155856922075,-2.24173756741772,\ +-3,-0.216269,-3.76197171717172,3.14756968451744,-0.679096315537459,-0.0422213119457996,-2.24174316138777,\ +-3,-0.216269,-3.73444090909091,3.14756865909252,-0.679098621773519,-0.0422273355849953,-2.24174904587344,\ +-3,-0.216269,-3.7069101010101,3.14756757899378,-0.679101050973977,-0.0422336803939001,-2.24175524410941,\ +-3,-0.216269,-3.67937929292929,3.14756643972878,-0.679103613242551,-0.042240372762338,-2.24176178187586,\ +-3,-0.216269,-3.65184848484848,3.14756523629904,-0.679106319821071,-0.0422474420527446,-2.24176868785691,\ +-3,-0.216269,-3.62431767676768,3.14756396312676,-0.67910918325436,-0.0422549210308471,-2.24177599406137,\ +-3,-0.216269,-3.59678686868687,3.1475626139683,-0.679112217584659,-0.0422628463734565,-2.24178373631875,\ +-3,-0.216269,-3.56925606060606,3.14756118181186,-0.679115438581915,-0.0422712592699776,-2.24179195486695,\ +-3,-0.216269,-3.54172525252525,3.14755965875552,-0.679118864017939,-0.04228020613845,-2.24180069505169,\ +-3,-0.216269,-3.51419444444444,3.14755803586143,-0.679122513994456,-0.0422897394824055,-2.24181000816361,\ +-3,-0.216269,-3.48666363636364,3.14755630298027,-0.679126411337862,-0.0422999189219338,-2.24181995244548,\ +-3,-0.216269,-3.45913282828283,3.14755444853876,-0.679130582077077,-0.0423108124417356,-2.2418305943115,\ +-3,-0.216269,-3.43160202020202,3.14755245928089,-0.679135056025563,-0.0423224979113746,-2.24184200983233,\ +-3,-0.216269,-3.40407121212121,3.14755031995054,-0.679139867495137,-0.0423350649495981,-2.24185428655642,\ +-3,-0.216269,-3.3765404040404,3.14754801289952,-0.679145056177617,-0.042348617227137,-2.24186752575958,\ +-3,-0.216269,-3.3490095959596,3.14754551759947,-0.679150668242303,-0.0423632753332154,-2.24188184524527,\ +-3,-0.216269,-3.32147878787879,3.14754281002949,-0.679156757713549,-0.0423791803736013,-2.24189738285953,\ +-3,-0.216269,-3.29394797979798,3.14753986190028,-0.679163388215501,-0.0423964985276858,-2.24191430094283,\ +-3,-0.216269,-3.26641717171717,3.14753663966203,-0.679170635203509,-0.0424154268766764,-2.24193279202353,\ +-3,-0.216269,-3.23888636363636,3.14753310322201,-0.679178588848277,-0.0424362009367187,-2.24195308617709,\ +-3,-0.216269,-3.21135555555555,3.14752920426782,-0.679187357807001,-0.0424591045086396,-2.24197546064815,\ +-3,-0.216269,-3.18382474747475,3.14752488404715,-0.67919707421682,-0.0424844827203659,-2.24200025259179,\ +-3,-0.216269,-3.15629393939394,3.14752007038672,-0.679207900399316,-0.0425127595383146,-2.24202787618024,\ +-3,-0.216269,-3.12876313131313,3.14751467362799,-0.679220038001418,-0.0425444616424637,-2.24205884592656,\ +-3,-0.216269,-3.10123232323232,3.14750858099057,-0.679233740672312,-0.0425802515370478,-2.24209380903029,\ +-3,-0.216269,-3.07370151515151,3.14750164860503,-0.679249331982105,-0.0426209743521964,-2.24213359109802,\ +-3,-0.216269,-3.04617070707071,3.14749369000753,-0.679267231298086,-0.0426677254299329,-2.24217926216801,\ +-3,-0.216269,-3.0186398989899,3.14748445911646,-0.679287992071056,-0.0427219503238851,-2.24223223439981,\ +-3,-0.216269,-2.99110909090909,3.14747362433572,-0.679312360078643,-0.0427855969245725,-2.24229441068527,\ +-3,-0.216269,-2.96357828282828,3.14746072787457,-0.679341364916882,-0.0428613544255077,-2.24236841809419,\ +-3,-0.216269,-2.93604747474747,3.14744511940379,-0.679376469211363,-0.0429530430465515,-2.24245798859462,\ +-3,-0.216269,-2.90851666666667,3.14742584293917,-0.679419823022294,-0.0430662785124782,-2.24256860818116,\ +-3,-0.216269,-2.88098585858586,3.14740143335986,-0.679474721485597,-0.0432096673619679,-2.24270868457079,\ +-3,-0.216269,-2.85345505050505,3.14736952540444,-0.679546484202099,-0.0433971038171358,-2.2428917910119,\ +-3,-0.216269,-2.82592424242424,3.14732603693984,-0.679644292109748,-0.0436525674950886,-2.24314135316278,\ +-3,-0.216269,-2.79839343434343,3.14726326582215,-0.679785467746483,-0.0440213029916707,-2.2435015704131,\ +-3,-0.216269,-2.77086262626263,3.14716473411275,-0.680007070887021,-0.0446001064308589,-2.24406700277661,\ +-3,-0.216269,-2.74333181818182,3.14698771080776,-0.68040520586885,-0.0456399919495527,-2.24508286565302,\ +-3,-0.216269,-2.71580101010101,3.14657631745963,-0.681330451746491,-0.0480566341269673,-2.24744368040569,\ +-3,-0.216269,-2.6882702020202,3.14455360989494,-0.685879630396077,-0.0599385968169332,-2.2590511550543,\ +-3,-0.216269,-2.66073939393939,3.15079749384683,-0.671836797877786,-0.0232602368543171,-2.22322011059409,\ +-3,-0.216269,-2.63320858585858,3.14865677574457,-0.676651388605371,-0.0358354271906678,-2.23550479847263,\ +-3,-0.216269,-2.60567777777778,3.14823594565061,-0.677597858234512,-0.0383075035118873,-2.23791976677178,\ +-3,-0.216269,-2.57814696969697,3.14805632253245,-0.678001840336688,-0.039362661076624,-2.23895054889108,\ +-3,-0.216269,-2.55061616161616,3.14795672095446,-0.678225849669509,-0.0399477492298544,-2.23952212078397,\ +-3,-0.216269,-2.52308535353535,3.14789340827404,-0.678368243310112,-0.0403196660208319,-2.23988544583685,\ +-3,-0.216269,-2.49555454545454,3.14784960833166,-0.67846675174813,-0.0405769594083508,-2.24013679542872,\ +-3,-0.216269,-2.46802373737374,3.1478175049531,-0.678538953981816,-0.0407655438348709,-2.24032102332163,\ +-3,-0.216269,-2.44049292929293,3.14779296476986,-0.678594146180447,-0.0409096998892769,-2.24046184919279,\ +-3,-0.216269,-2.41296212121212,3.14777359672878,-0.678637705951762,-0.0410234733014564,-2.24057299429836,\ +-3,-0.216269,-2.38543131313131,3.14775792157727,-0.678672960214796,-0.0411155536241464,-2.24066294745166,\ +-3,-0.216269,-2.3579005050505,3.14774497506149,-0.678702077628631,-0.0411916051603587,-2.24073724210327,\ +-3,-0.216269,-2.3303696969697,3.14773410175141,-0.678726532290744,-0.0412554780932962,-2.24079963949242,\ +-3,-0.216269,-2.30283888888889,3.14772484057159,-0.678747361184773,-0.0413098809120905,-2.24085278553878,\ +-3,-0.216269,-2.27530808080808,3.14771685773311,-0.678765315020024,-0.0413567743882609,-2.24089859571763,\ +-3,-0.216269,-2.24777727272727,3.14770990564525,-0.678780950641403,-0.0413976129404875,-2.24093849084876,\ +-3,-0.216269,-2.22024646464646,3.147703796778,-0.678794689814082,-0.0414334981737877,-2.24097354708876,\ +-3,-0.216269,-2.19271565656565,3.14769838649136,-0.678806857841168,-0.0414652797446942,-2.24100459446606,\ +-3,-0.216269,-2.16518484848485,3.14769356143688,-0.678817709649512,-0.0414936234945918,-2.24103228344026,\ +-3,-0.216269,-2.13765404040404,3.14768923152973,-0.678827447844765,-0.0415190586075159,-2.2410571309706,\ +-3,-0.216269,-2.11012323232323,3.14768532427171,-0.678836235479251,-0.0415420109585065,-2.24107955309388,\ +-3,-0.216269,-2.08259242424242,3.14768178065936,-0.678844205254968,-0.0415628271508415,-2.24109988840641,\ +-3,-0.216269,-2.05506161616161,3.14767855218367,-0.678851466271305,-0.0415817921403111,-2.24111841528116,\ +-3,-0.216269,-2.02753080808081,3.14767559859622,-0.678858109049126,-0.0415991423576408,-2.24113536468699,\ +-3,-0.216269,-2,3.14767288622263,-0.678864209323974,-0.0416150756158647,-2.24115092986724,\ +-3,-0.206412,-4.72555,3.14758813300023,-0.679054823902421,-0.0421129402819398,-2.24163729324344,\ +-3,-0.206412,-4.69801919191919,3.14758784536481,-0.679055470810027,-0.0421146299346504,-2.24163894386309,\ +-3,-0.206412,-4.67048838383838,3.14758754975643,-0.679056135649286,-0.0421163664228961,-2.24164064023631,\ +-3,-0.206412,-4.64295757575758,3.14758724583888,-0.679056819176245,-0.0421181517213992,-2.2416423842922,\ +-3,-0.206412,-4.61542676767677,3.14758693325688,-0.679057522190066,-0.0421199879174773,-2.24164417806989,\ +-3,-0.206412,-4.58789595959596,3.14758661163453,-0.679058245536134,-0.0421218772191856,-2.24164602372639,\ +-3,-0.206412,-4.56036515151515,3.14758628057387,-0.679058990109452,-0.0421238219641734,-2.24164792354536,\ +-3,-0.206412,-4.53283434343434,3.14758593965326,-0.679059756858334,-0.0421258246293347,-2.24164987994648,\ +-3,-0.206412,-4.50530353535354,3.14758558842555,-0.679060546788431,-0.0421278878413316,-2.24165189549572,\ +-3,-0.206412,-4.47777272727273,3.14758522641615,-0.679061360967147,-0.0421300143880882,-2.24165397291662,\ +-3,-0.206412,-4.45024191919192,3.14758485312086,-0.679062200528424,-0.0421322072313597,-2.24165611510249,\ +-3,-0.206412,-4.42271111111111,3.14758446800357,-0.679063066678043,-0.0421344695204949,-2.24165832512996,\ +-3,-0.206412,-4.3951803030303,3.14758407049364,-0.679063960699371,-0.042136804607528,-2.24166060627359,\ +-3,-0.206412,-4.36764949494949,3.14758365998311,-0.679064883959732,-0.0421392160637484,-2.24166296202218,\ +-3,-0.206412,-4.34011868686869,3.14758323582361,-0.679065837917365,-0.0421417076979296,-2.24166539609653,\ +-3,-0.206412,-4.31258787878788,3.14758279732292,-0.679066824129124,-0.0421442835764001,-2.24166791246902,\ +-3,-0.206412,-4.28505707070707,3.14758234374118,-0.679067844258953,-0.0421469480451888,-2.24167051538529,\ +-3,-0.206412,-4.25752626262626,3.1475818742868,-0.679068900087237,-0.0421497057544945,-2.24167320938809,\ +-3,-0.206412,-4.22999545454545,3.14758138811176,-0.679069993521202,-0.0421525616857716,-2.24167599934383,\ +-3,-0.206412,-4.20246464646465,3.14758088430653,-0.679071126606394,-0.0421555211817582,-2.24167889047179,\ +-3,-0.206412,-4.17493383838384,3.14758036189443,-0.679072301539445,-0.0421585899798367,-2.24168188837684,\ +-3,-0.206412,-4.14740303030303,3.14757981982525,-0.679073520682309,-0.042161774249156,-2.2416849990856,\ +-3,-0.206412,-4.11987222222222,3.14757925696827,-0.679074786578084,-0.0421650806320264,-2.24168822908693,\ +-3,-0.206412,-4.09234141414141,3.14757867210433,-0.679076101968737,-0.0421685162901692,-2.24169158537712,\ +-3,-0.206412,-4.06481060606061,3.14757806391699,-0.679077469814927,-0.0421720889565011,-2.24169507551044,\ +-3,-0.206412,-4.0372797979798,3.14757743098274,-0.679078893318248,-0.0421758069932367,-2.24169870765593,\ +-3,-0.206412,-4.00974898989899,3.14757677175982,-0.679080375946243,-0.0421796794572341,-2.24170249066121,\ +-3,-0.206412,-3.98221818181818,3.14757608457564,-0.679081921460619,-0.0421837161736527,-2.24170643412449,\ +-3,-0.206412,-3.95468737373737,3.14757536761266,-0.679083533949099,-0.0421879278191895,-2.2417105484758,\ +-3,-0.206412,-3.92715656565657,3.14757461889236,-0.679085217861535,-0.0421923260163734,-2.24171484506918,\ +-3,-0.206412,-3.89962575757576,3.14757383625693,-0.679086978050909,-0.0421969234406753,-2.2417193362873,\ +-3,-0.206412,-3.87209494949495,3.14757301734859,-0.679088819820052,-0.04220173394251,-2.24172403566058,\ +-3,-0.206412,-3.84456414141414,3.14757215958576,-0.679090748974994,-0.0422067726866047,-2.24172895800345,\ +-3,-0.206412,-3.81703333333333,3.14757126013601,-0.67909277188611,-0.042212056311686,-2.24173411957026,\ +-3,-0.206412,-3.78950252525252,3.14757031588468,-0.67909489555839,-0.0422176031140289,-2.2417395382346,\ +-3,-0.206412,-3.76197171717172,3.14756932339894,-0.679097127712485,-0.0422234332591372,-2.24174523369614,\ +-3,-0.206412,-3.73444090909091,3.14756827888602,-0.67909947687849,-0.042229569026708,-2.24175122771989,\ +-3,-0.206412,-3.7069101010101,3.14756717814485,-0.679101952504892,-0.0422360350951627,-2.24175754441416,\ +-3,-0.206412,-3.67937929292929,3.1475660165095,-0.679104565085581,-0.0422428588733945,-2.24176421055468,\ +-3,-0.206412,-3.65184848484848,3.14756478878315,-0.67910732630853,-0.042250070889145,-2.24177125596394,\ +-3,-0.206412,-3.62431767676768,3.14756348916026,-0.679110249230637,-0.0422577052456066,-2.24177871395731,\ +-3,-0.206412,-3.59678686868687,3.1475621111349,-0.679113348484162,-0.0422658001606659,-2.24178662186982,\ +-3,-0.206412,-3.56925606060606,3.14756064739171,-0.679116640521721,-0.0422743986067728,-2.24179502168119,\ +-3,-0.206412,-3.54172525252525,3.14755908967604,-0.679120143908446,-0.0422835490740483,-2.24180396076134,\ +-3,-0.206412,-3.51419444444444,3.14755742863822,-0.679123879672297,-0.0422933064852441,-2.24181349276426,\ +-3,-0.206412,-3.48666363636364,3.14755565364568,-0.679127871726456,-0.0423037332990099,-2.24182367870573,\ +-3,-0.206412,-3.45913282828283,3.14755375255518,-0.679132147381758,-0.0423149008482967,-2.24183458827081,\ +-3,-0.206412,-3.43160202020202,3.14755171143458,-0.679136737972353,-0.0423268909745087,-2.24184630141027,\ +-3,-0.206412,-3.40407121212121,3.1475495142208,-0.679141679624898,-0.0423397980365703,-2.24185891030322,\ +-3,-0.206412,-3.3765404040404,3.14754714229633,-0.679147014211248,-0.0423537313992403,-2.24187252178797,\ +-3,-0.206412,-3.3490095959596,3.1475445739603,-0.67915279053781,-0.0423688185395763,-2.2418872603967,\ +-3,-0.206412,-3.32147878787879,3.14754178376266,-0.679159065843119,-0.0423852089584411,-2.24190327217661,\ +-3,-0.206412,-3.29394797979798,3.14753874165795,-0.679165907701028,-0.0424030791514316,-2.24192072954603,\ +-3,-0.206412,-3.26641717171717,3.14753541191908,-0.679173396463751,-0.0424226389898314,-2.24193983752796,\ +-3,-0.206412,-3.23888636363636,3.1475317517276,-0.679181628432247,-0.0424441400013519,-2.2419608418395,\ +-3,-0.206412,-3.21135555555555,3.14752770932249,-0.679190720019847,-0.0424678862450079,-2.24198403951555,\ +-3,-0.206412,-3.18382474747475,3.14752322153699,-0.679200813292034,-0.0424942487804864,-2.24200979304383,\ +-3,-0.206412,-3.15629393939394,3.14751821047376,-0.679212083444088,-0.0425236851989101,-2.24203854944457,\ +-3,-0.206412,-3.12876313131313,3.14751257894516,-0.679224749056334,-0.0425567664084534,-2.24207086643722,\ +-3,-0.206412,-3.10123232323232,3.14750620410778,-0.67923908641019,-0.0425942140263012,-2.24210744896877,\ +-3,-0.206412,-3.07370151515151,3.14749892839856,-0.679255449873505,-0.0426369536229513,-2.24214920122785,\ +-3,-0.206412,-3.04617070707071,3.14749054633598,-0.679274301585353,-0.042686192255698,-2.24219730238725,\ +-3,-0.206412,-3.0186398989899,3.14748078480469,-0.679296255796869,-0.042743534282079,-2.24225331974187,\ +-3,-0.206412,-2.99110909090909,3.14746927273358,-0.679322147067057,-0.0428111594799564,-2.24231938271399,\ +-3,-0.206412,-2.96357828282828,3.14745549285401,-0.679353138761077,-0.0428921064333365,-2.24239845969258,\ +-3,-0.206412,-2.93604747474747,3.14743870183307,-0.679390902674809,-0.0429907416922599,-2.24249481635496,\ +-3,-0.206412,-2.90851666666667,3.14741779162805,-0.679437930856213,-0.0431135742165109,-2.2426148112959,\ +-3,-0.206412,-2.88098585858586,3.14739103453713,-0.679498109000034,-0.0432707530205808,-2.24276835907511,\ +-3,-0.206412,-2.85345505050505,3.14735557962406,-0.679577849015994,-0.0434790253192791,-2.24297182002598,\ +-3,-0.206412,-2.82592424242424,3.14730636274866,-0.679688540429185,-0.0437681393205005,-2.24325425513601,\ +-3,-0.206412,-2.79839343434343,3.14723344172257,-0.679852543758563,-0.0441964982817072,-2.24367271847514,\ +-3,-0.206412,-2.77086262626263,3.14711425975073,-0.680120590455578,-0.0448966072680587,-2.24435665407756,\ +-3,-0.206412,-2.74333181818182,3.1468843445096,-0.680637682260859,-0.0462471951457593,-2.24567604170402,\ +-3,-0.206412,-2.71580101010101,3.1462554771133,-0.682052039028281,-0.0499413420754134,-2.24928484926831,\ +-3,-0.206412,-2.6882702020202,3.13738433319662,-0.702003721222806,-0.10205297841639,-2.30019264232478,\ +-3,-0.206412,-2.66073939393939,3.14945040293346,-0.674866478158399,-0.0311734341212621,-2.23095050321207,\ +-3,-0.206412,-2.63320858585858,3.14845374588597,-0.67710801373206,-0.0370280826426791,-2.23666990210786,\ +-3,-0.206412,-2.60567777777778,3.14815713484047,-0.677775108006591,-0.0387704607489787,-2.23837202912382,\ +-3,-0.206412,-2.57814696969697,3.14801471140379,-0.678095426014291,-0.0396070967462839,-2.2391893377943,\ +-3,-0.206412,-2.55061616161616,3.1479310507291,-0.678283583393928,-0.040098543474784,-2.23966943149523,\ +-3,-0.206412,-2.52308535353535,3.14787600469037,-0.678407384910539,-0.0404218996484223,-2.23998531774113,\ +-3,-0.206412,-2.49555454545454,3.1478370365799,-0.678495026297373,-0.0406508094733974,-2.24020893946588,\ +-3,-0.206412,-2.46802373737374,3.14780799993424,-0.678560331283046,-0.0408213790339719,-2.24037556865854,\ +-3,-0.206412,-2.44049292929293,3.14778552716746,-0.678610873750263,-0.0409533904927415,-2.24050453048926,\ +-3,-0.206412,-2.41296212121212,3.14776761860173,-0.67865115108264,-0.041058590529362,-2.24060730027486,\ +-3,-0.206412,-2.38543131313131,3.147753011944,-0.678684002245445,-0.0411443942141287,-2.24069112178832,\ +-3,-0.206412,-2.3579005050505,3.14774087108504,-0.678711307693498,-0.041215713091663,-2.24076079311153,\ +-3,-0.206412,-2.3303696969697,3.14773062023571,-0.678734362407766,-0.0412759295122205,-2.24081961845826,\ +-3,-0.206412,-2.30283888888889,3.14772184993088,-0.678754087297392,-0.0413274487908966,-2.24086994757785,\ +-3,-0.206412,-2.27530808080808,3.14771426101838,-0.678771155171819,-0.0413720282332019,-2.24091349717987,\ +-3,-0.206412,-2.24777727272727,3.1477076298542,-0.678786069018499,-0.0414109815879706,-2.24095155066394,\ +-3,-0.206412,-2.22024646464646,3.14770178589308,-0.678799212402946,-0.0414453106868306,-2.24098508671814,\ +-3,-0.206412,-2.19271565656565,3.14769659681275,-0.678810882925105,-0.041475792828675,-2.24101486468479,\ +-3,-0.206412,-2.16518484848485,3.14769195837379,-0.678821315025054,-0.0415030403456204,-2.24104148275037,\ +-3,-0.206412,-2.13765404040404,3.14768778734497,-0.678830695894348,-0.0415275421617839,-2.24106541854426,\ +-3,-0.206412,-2.11012323232323,3.14768401646464,-0.678839176808033,-0.0415496933912132,-2.24108705805288,\ +-3,-0.206412,-2.08259242424242,3.147680590786,-0.678846881344486,-0.0415698168072705,-2.24110671659313,\ +-3,-0.206412,-2.05506161616161,3.14767746498199,-0.678853911446654,-0.0415881786739051,-2.24112465427792,\ +-3,-0.206412,-2.02753080808081,3.14767460132845,-0.67886035195827,-0.0416050005937766,-2.24114108759063,\ +-3,-0.206412,-2,3.14767196817411,-0.678866274064702,-0.0416204684953715,-2.24115619816455,\ +-3,-0.204855,-4.72555,3.14758811694019,-0.679054860022332,-0.0421130346232363,-2.24163738540535,\ +-3,-0.204855,-4.69801919191919,3.14758782886252,-0.679055507924597,-0.0421147268738892,-2.24163903856291,\ +-3,-0.204855,-4.67048838383838,3.14758753279333,-0.679056173800172,-0.0421164660688861,-2.24164073758035,\ +-3,-0.204855,-4.64295757575758,3.14758722839546,-0.679056858407467,-0.0421182541891108,-2.24164248439279,\ +-3,-0.204855,-4.61542676767677,3.14758691531241,-0.679057562548171,-0.0421200933284857,-2.24164428104577,\ +-3,-0.204855,-4.58789595959596,3.1475865931671,-0.679058287070382,-0.0421219857021521,-2.24164612970326,\ +-3,-0.204855,-4.56036515151515,3.14758626156029,-0.679059032872017,-0.0421239336553688,-2.24164803265635,\ +-3,-0.204855,-4.53283434343434,3.14758592006894,-0.67905980090452,-0.0421259396732101,-2.24164999233269,\ +-3,-0.204855,-4.50530353535354,3.14758556824441,-0.679060592176916,-0.0421280063911426,-2.24165201130689,\ +-3,-0.204855,-4.47777272727273,3.14758520561047,-0.679061407760234,-0.0421301366065754,-2.24165409231171,\ +-3,-0.204855,-4.45024191919192,3.14758483166121,-0.679062248792343,-0.0421323332914938,-2.24165623825048,\ +-3,-0.204855,-4.42271111111111,3.14758444585861,-0.679063116483244,-0.0421345996062937,-2.24165845221061,\ +-3,-0.204855,-4.3951803030303,3.14758404763001,-0.67906401212088,-0.042136938914952,-2.24166073747835,\ +-3,-0.204855,-4.36764949494949,3.14758363636526,-0.679064937077528,-0.0421393548016872,-2.2416630975551,\ +-3,-0.204855,-4.34011868686869,3.1475832114136,-0.679065892816789,-0.0421418510892844,-2.24166553617537,\ +-3,-0.204855,-4.31258787878788,3.14758277208021,-0.679066880901338,-0.0421444318592791,-2.24166805732638,\ +-3,-0.204855,-4.28505707070707,3.14758231762243,-0.679067903001445,-0.0421471014742264,-2.24167066526992,\ +-3,-0.204855,-4.25752626262626,3.14758184724559,-0.679068960904386,-0.0421498646023107,-2.24167336456633,\ +-3,-0.204855,-4.22999545454545,3.14758136009834,-0.679070056524889,-0.0421527262445879,-2.24167616010113,\ +-3,-0.204855,-4.20246464646465,3.14758085526752,-0.679071191916691,-0.0421556917651924,-2.24167905711454,\ +-3,-0.204855,-4.17493383838384,3.14758033177246,-0.679072369285384,-0.0421587669248968,-2.24168206123425,\ +-3,-0.204855,-4.14740303030303,3.1475797885586,-0.679073591002717,-0.0421619579184623,-2.24168517851191,\ +-3,-0.204855,-4.11987222222222,3.14757922449042,-0.679074859622556,-0.0421652714162918,-2.24168841546384,\ +-3,-0.204855,-4.09234141414141,3.14757863834348,-0.679076177898682,-0.0421687146109739,-2.24169177911647,\ +-3,-0.204855,-4.06481060606061,3.14757802879562,-0.67907754880476,-0.0421722952694006,-2.24169527705725,\ +-3,-0.204855,-4.0372797979798,3.14757739441694,-0.67907897555673,-0.0421760217912567,-2.24169891749185,\ +-3,-0.204855,-4.00974898989899,3.14757673365857,-0.679080461637987,-0.0421799032748018,-2.24170270930832,\ +-3,-0.204855,-3.98221818181818,3.14757604484019,-0.679082010827789,-0.0421839495910371,-2.24170666214964,\ +-3,-0.204855,-3.95468737373737,3.14757532613557,-0.679083627233333,-0.0421881714675231,-2.24171078649556,\ +-3,-0.204855,-3.92715656565657,3.14757457555654,-0.679085315326126,-0.0421925805833507,-2.24171509375535,\ +-3,-0.204855,-3.89962575757576,3.1475737909346,-0.67908707998329,-0.0421971896770336,-2.24171959637326,\ +-3,-0.204855,-3.87209494949495,3.14757296989994,-0.67908892653462,-0.0422020126694227,-2.24172430794856,\ +-3,-0.204855,-3.84456414141414,3.14757210985759,-0.679090860816355,-0.0422070648041401,-2.24172924337271,\ +-3,-0.204855,-3.81703333333333,3.14757120796,-0.679092889232787,-0.0422123628085144,-2.24173441898663,\ +-3,-0.204855,-3.78950252525252,3.14757026107554,-0.679095018827113,-0.0422179250786006,-2.24173985276139,\ +-3,-0.204855,-3.76197171717172,3.14756926575219,-0.679097257363125,-0.0422237718925937,-2.24174556450675,\ +-3,-0.204855,-3.73444090909091,3.14756821817548,-0.679099613419802,-0.0422299256578539,-2.24175157611242,\ +-3,-0.204855,-3.7069101010101,3.14756711411959,-0.679102096501178,-0.0422364111978882,-2.24175791182845,\ +-3,-0.204855,-3.67937929292929,3.14756594889045,-0.67910471716448,-0.0422432560870312,-2.24176459859218,\ +-3,-0.204855,-3.65184848484848,3.14756471725901,-0.679107487170168,-0.0422504910423464,-2.24177166641108,\ +-3,-0.204855,-3.62431767676768,3.14756341338274,-0.679110419658399,-0.0422581503844918,-2.24177914881294,\ +-3,-0.204855,-3.59678686868687,3.14756203071296,-0.67911352935745,-0.0422662725821312,-2.24178708337777,\ +-3,-0.204855,-3.56925606060606,3.14756056188492,-0.679116832831119,-0.0422749008981238,-2.24179551236899,\ +-3,-0.204855,-3.54172525252525,3.14755899858644,-0.679120348773872,-0.0422840841603916,-2.24180448348653,\ +-3,-0.204855,-3.51419444444444,3.14755733140067,-0.679124098364822,-0.0422938776864714,-2.24181405077004,\ +-3,-0.204855,-3.48666363636364,3.14755554961608,-0.679128105694682,-0.0423043443987188,-2.24182427568828,\ +-3,-0.204855,-3.45913282828283,3.1475536409962,-0.679132398283942,-0.0423155561776711,-2.24183522846126,\ +-3,-0.204855,-3.43160202020202,3.14755159149819,-0.679137007715748,-0.0423275955150895,-2.24184698967509,\ +-3,-0.204855,-3.40407121212121,3.1475493849267,-0.679141970414308,-0.0423405575470683,-2.2418596522681,\ +-3,-0.204855,-3.3765404040404,3.14754700250504,-0.679147328609403,-0.0423545525732246,-2.24187332399183,\ +-3,-0.204855,-3.3490095959596,3.14754442233956,-0.679153131541053,-0.0423697092031739,-2.24188813048488,\ +-3,-0.204855,-3.32147878787879,3.14754161874482,-0.679159436977156,-0.0423861783204125,-2.24190421914512,\ +-3,-0.204855,-3.29394797979798,3.14753856138564,-0.679166313143209,-0.0424041381225602,-2.24192176405361,\ +-3,-0.204855,-3.26641717171717,3.147535214175,-0.679173841200878,-0.0424238005951165,-2.24194097229872,\ +-3,-0.204855,-3.23888636363636,3.14753153384295,-0.67918211846659,-0.042445419918061,-2.24196209218856,\ +-3,-0.204855,-3.21135555555555,3.14752746805592,-0.679191262641398,-0.0424693035138193,-2.24198542404369,\ +-3,-0.204855,-3.18382474747475,3.14752295291236,-0.679201417443331,-0.042495826758339,-2.24201133456844,\ +-3,-0.204855,-3.15629393939394,3.14751790955954,-0.679212760216452,-0.0425254528551429,-2.24204027626575,\ +-3,-0.204855,-3.12876313131313,3.14751223954915,-0.679225512376305,-0.0425587601176808,-2.24207281408931,\ +-3,-0.204855,-3.10123232323232,3.14750581834704,-0.679239954006944,-0.0425964800951975,-2.24210966268867,\ +-3,-0.204855,-3.07370151515151,3.14749848608029,-0.679256444671189,-0.0426395519269298,-2.24215173950779,\ +-3,-0.204855,-3.04617070707071,3.14749003404508,-0.679275453755253,-0.0426892015988819,-2.24220024221088,\ +-3,-0.204855,-3.0186398989899,3.14748018452198,-0.679297605865114,-0.0427470605143441,-2.2422567645138,\ +-3,-0.204855,-2.99110909090909,3.1474685596768,-0.679323750770319,-0.0428153481794559,-2.24232347464934,\ +-3,-0.204855,-2.96357828282828,3.14745463197933,-0.679355074914769,-0.0428971634574013,-2.24240339989312,\ +-3,-0.204855,-2.93604747474747,3.14743764191708,-0.679393286483179,-0.0429969679419322,-2.24250089877057,\ +-3,-0.204855,-2.90851666666667,3.14741645472617,-0.679440937620794,-0.0431214275604463,-2.24262248321787,\ +-3,-0.204855,-2.88098585858586,3.14738929598246,-0.679502019103412,-0.0432809657877681,-2.24277833591473,\ +-3,-0.204855,-2.85345505050505,3.14735322694934,-0.679583140308622,-0.0434928456034266,-2.24298532104446,\ +-3,-0.204855,-2.82592424242424,3.14730300220788,-0.679696098467038,-0.0437878800980488,-2.24327353987717,\ +-3,-0.204855,-2.79839343434343,3.14722825391078,-0.679864211427722,-0.0442269729718228,-2.2437024891622,\ +-3,-0.204855,-2.77086262626263,3.14710521923535,-0.680140923063338,-0.0449497138407852,-2.24440853382274,\ +-3,-0.204855,-2.74333181818182,3.14686478734206,-0.680681667387801,-0.0463620795408346,-2.24578827212741,\ +-3,-0.204855,-2.71580101010101,3.14618562742419,-0.682209134754797,-0.0503516591249325,-2.24968568748625,\ +-3,-0.204855,-2.6882702020202,3.13136330384047,-0.715545341708922,-0.137422226751433,-2.33474481725596,\ +-3,-0.204855,-2.66073939393939,3.14933520928895,-0.675125554891613,-0.0318501145321726,-2.23161155146814,\ +-3,-0.204855,-2.63320858585858,3.14842865890046,-0.677164435718536,-0.0371754507699522,-2.23681386584903,\ +-3,-0.204855,-2.60567777777778,3.14814646326754,-0.677799108950951,-0.038833148620217,-2.23843326882766,\ +-3,-0.204855,-2.57814696969697,3.14800883657797,-0.678108638815132,-0.0396416071532646,-2.23922305096817,\ +-3,-0.204855,-2.55061616161616,3.1479273386946,-0.678291931960178,-0.0401203490270238,-2.23969073331224,\ +-3,-0.204855,-2.52308535353535,3.14787344868578,-0.678413133503021,-0.0404369143503418,-2.23999998558485,\ +-3,-0.204855,-2.49555454545454,3.14783517001147,-0.678499224310651,-0.0406617742301097,-2.24021965092315,\ +-3,-0.204855,-2.46802373737374,3.14780657728647,-0.678563530894768,-0.0408297360737836,-2.24038373264039,\ +-3,-0.204855,-2.44049292929293,3.14778440703581,-0.678613392986899,-0.040959970466404,-2.24051095845738,\ +-3,-0.204855,-2.41296212121212,3.14776671383319,-0.678653185956005,-0.0410639053985487,-2.24061249236398,\ +-3,-0.204855,-2.38543131313131,3.14775226591096,-0.678685680114076,-0.0411487766255527,-2.24069540296062,\ +-3,-0.204855,-2.3579005050505,3.14774024540333,-0.678712714885512,-0.0412193885250312,-2.24076438363784,\ +-3,-0.204855,-2.3303696969697,3.14773008796846,-0.678735559505554,-0.0412790562021933,-2.24082267291782,\ +-3,-0.204855,-2.30283888888889,3.14772139161885,-0.678755118065906,-0.0413301410467929,-2.2408725776393,\ +-3,-0.204855,-2.27530808080808,3.1477138622544,-0.678772052013563,-0.0413743706868539,-2.24091578551995,\ +-3,-0.204855,-2.24777727272727,3.14770727974404,-0.678786856435184,-0.0414130382351961,-2.24095355980007,\ +-3,-0.204855,-2.22024646464646,3.14770147604652,-0.678799909264603,-0.0414471308141199,-2.24098686479823,\ +-3,-0.204855,-2.19271565656565,3.14769632066344,-0.678811503999837,-0.0414774150087173,-2.24101644939046,\ +-3,-0.204855,-2.16518484848485,3.14769171070928,-0.678821872035942,-0.0415044951978284,-2.2410429039937,\ +-3,-0.204855,-2.13765404040404,3.14768756397493,-0.678831198265641,-0.041528854301275,-2.24106670037171,\ +-3,-0.204855,-2.11012323232323,3.14768381398211,-0.678839632202201,-0.0415508828315382,-2.24108822001567,\ +-3,-0.204855,-2.08259242424242,3.14768040639248,-0.678847296055469,-0.0415708999875107,-2.24110777475056,\ +-3,-0.204855,-2.05506161616161,3.14767729635749,-0.678854290692276,-0.0415891692224587,-2.24112562194358,\ +-3,-0.204855,-2.02753080808081,3.14767444653336,-0.678860700100774,-0.0416059099043543,-2.241141975895,\ +-3,-0.204855,-2,3.14767182557438,-0.678866594779193,-0.0416213061669376,-2.24115701648487,\ +-3,-0.178054,-4.72555,3.14758783660077,-0.679055490520844,-0.0421146814171715,-2.2416389941563,\ +-3,-0.178054,-4.69801919191919,3.14758754074771,-0.679056155910368,-0.0421164193426531,-2.24164069193356,\ +-3,-0.178054,-4.67048838383838,3.14758723657512,-0.679056840010964,-0.042118206139428,-2.24164243745312,\ +-3,-0.178054,-4.64295757575758,3.14758692372708,-0.679057543623129,-0.0421200438983197,-2.2416442327575,\ +-3,-0.178054,-4.61542676767677,3.14758660182705,-0.679058267593694,-0.0421219348311439,-2.24164608000744,\ +-3,-0.178054,-4.58789595959596,3.1475862704764,-0.679059012819204,-0.0421238812795891,-2.24164798149051,\ +-3,-0.178054,-4.56036515151515,3.14758592925275,-0.679059780249637,-0.0421258857248911,-2.24164993963065,\ +-3,-0.178054,-4.53283434343434,3.14758557770816,-0.679060570892436,-0.0421279507983847,-2.24165195699838,\ +-3,-0.178054,-4.50530353535354,3.14758521536715,-0.679061385816927,-0.0421300792930283,-2.24165403632217,\ +-3,-0.178054,-4.47777272727273,3.14758484172465,-0.679062226159135,-0.042132274176007,-2.24165618050064,\ +-3,-0.178054,-4.45024191919192,3.14758445624349,-0.679063093127084,-0.0421345386025321,-2.24165839261611,\ +-3,-0.178054,-4.42271111111111,3.14758405835199,-0.679063988006569,-0.0421368759309757,-2.24166067594938,\ +-3,-0.178054,-4.3951803030303,3.14758364744103,-0.679064912167539,-0.0421392897394897,-2.24166303399592,\ +-3,-0.178054,-4.36764949494949,3.14758322286095,-0.679065867071083,-0.0421417838442831,-2.24166547048381,\ +-3,-0.178054,-4.34011868686869,3.14758278391816,-0.67906685427714,-0.0421443623197547,-2.24166798939331,\ +-3,-0.178054,-4.31258787878788,3.14758232987133,-0.679067875453013,-0.0421470295207031,-2.24167059497861,\ +-3,-0.178054,-4.28505707070707,3.14758185992721,-0.679068932382746,-0.0421497901068726,-2.24167329179183,\ +-3,-0.178054,-4.25752626262626,3.14758137323602,-0.679070026977545,-0.0421526490701182,-2.24167608470948,\ +-3,-0.178054,-4.22999545454545,3.14758086888631,-0.679071161287296,-0.0421556117645328,-2.24167897896199,\ +-3,-0.178054,-4.20246464646465,3.14758034589928,-0.679072337513398,-0.0421586839399102,-2.24168198016631,\ +-3,-0.178054,-4.17493383838384,3.14757980322242,-0.679073558022994,-0.0421618717789898,-2.24168509436237,\ +-3,-0.178054,-4.14740303030303,3.14757923972245,-0.679074825364897,-0.0421651819389886,-2.24168832805358,\ +-3,-0.178054,-4.11987222222222,3.1475786541774,-0.679076142287344,-0.0421686215980061,-2.24169168825221,\ +-3,-0.178054,-4.09234141414141,3.14757804526783,-0.679077511757891,-0.0421721985069857,-2.24169518253017,\ +-3,-0.178054,-4.06481060606061,3.1475774115668,-0.679078936985747,-0.0421759210480234,-2.2416988190759,\ +-3,-0.178054,-4.0372797979798,3.14757675152882,-0.679080421446868,-0.0421797982999427,-2.2417026067585,\ +-3,-0.178054,-4.00974898989899,3.14757606347715,-0.679081968912267,-0.0421838401122248,-2.24170655519992,\ +-3,-0.178054,-3.98221818181818,3.14757534558966,-0.679083583480002,-0.0421880571885511,-2.24171067485656,\ +-3,-0.178054,-3.95468737373737,3.14757459588275,-0.67908526961141,-0.0421924611814579,-2.24171497711178,\ +-3,-0.178054,-3.92715656565657,3.14757381219287,-0.679087032172287,-0.0421970647998602,-2.24171947438091,\ +-3,-0.178054,-3.89962575757576,3.1475729921559,-0.67908887647976,-0.0422018819315386,-2.24172418023088,\ +-3,-0.178054,-3.87209494949495,3.14757213318316,-0.679090808355884,-0.04220692778307,-2.241729109517,\ +-3,-0.178054,-3.84456414141414,3.14757123243418,-0.679092834189034,-0.0422122190401804,-2.24173427853952,\ +-3,-0.178054,-3.81703333333333,3.1475702867853,-0.679094961004455,-0.0422177740520711,-2.24173970522377,\ +-3,-0.178054,-3.78950252525252,3.14756929279353,-0.679097196545685,-0.0422236130440171,-2.24174540932777,\ +-3,-0.178054,-3.76197171717172,3.14756824665458,-0.679099549368749,-0.0422297583634263,-2.2417514126827,\ +-3,-0.178054,-3.73444090909091,3.14756714415424,-0.67910202895159,-0.0422362347656675,-2.24175773947203,\ +-3,-0.178054,-3.7069101010101,3.14756598061169,-0.679104645821686,-0.0422430697473737,-2.24176441655721,\ +-3,-0.178054,-3.67937929292929,3.14756475081299,-0.679107411705458,-0.0422502939366859,-2.2417714738588,\ +-3,-0.178054,-3.65184848484848,3.14756344893299,-0.67911033970395,-0.0422579415521149,-2.24177894480485,\ +-3,-0.178054,-3.62431767676768,3.1475620684431,-0.679113444500335,-0.0422660509445229,-2.24178686686026,\ +-3,-0.178054,-3.59678686868687,3.14756060200175,-0.679116742606182,-0.0422746652403418,-2.24179528215519,\ +-3,-0.178054,-3.56925606060606,3.14755904132383,-0.679120252655194,-0.0422838331087923,-2.24180423823453,\ +-3,-0.178054,-3.54172525252525,3.147557377024,-0.679123995755464,-0.0422936096819241,-2.24181378895673,\ +-3,-0.178054,-3.51419444444444,3.14755559842787,-0.679127995914291,-0.0423040576642078,-2.24182399557769,\ +-3,-0.178054,-3.48666363636364,3.14755369334279,-0.679132280553641,-0.0423152486788595,-2.24183492806605,\ +-3,-0.178054,-3.45913282828283,3.1475516477779,-0.679136881139648,-0.0423272649119994,-2.24184666670934,\ +-3,-0.178054,-3.43160202020202,3.14754944560005,-0.679141833956662,-0.0423402011344486,-2.24185930408904,\ +-3,-0.178054,-3.40407121212121,3.14754706810737,-0.67914718106622,-0.0423541672063913,-2.24187294752744,\ +-3,-0.178054,-3.3765404040404,3.14754449349682,-0.679152971504508,-0.0423692912050233,-2.24188772214299,\ +-3,-0.178054,-3.3490095959596,3.14754169619366,-0.67915926279053,-0.0423857233637801,-2.24190377469855,\ +-3,-0.178054,-3.32147878787879,3.14753864599892,-0.679166122843368,-0.042403641079954,-2.2419212784933,\ +-3,-0.178054,-3.29394797979798,3.14753530699486,-0.67917363244401,-0.0424232553447537,-2.24194043964431,\ +-3,-0.178054,-3.26641717171717,3.14753163612388,-0.679181888431253,-0.0424448190906354,-2.24196150524098,\ +-3,-0.178054,-3.23888636363636,3.14752758132178,-0.679191007900346,-0.0424686381577406,-2.24198477405816,\ +-3,-0.178054,-3.21135555555555,3.14752307903276,-0.679201133791752,-0.0424950858910924,-2.24201061081615,\ +-3,-0.178054,-3.18382474747475,3.14751805085369,-0.679212442438262,-0.0425246228528715,-2.24203946543756,\ +-3,-0.178054,-3.15629393939394,3.14751239892972,-0.67922515392078,-0.0425578238706059,-2.2420718994707,\ +-3,-0.178054,-3.12876313131313,3.14750599952281,-0.67923954653286,-0.0425954158169607,-2.24210862299657,\ +-3,-0.178054,-3.10123232323232,3.14749869384794,-0.679255977390525,-0.0426383314403639,-2.24215054721597,\ +-3,-0.178054,-3.07370151515151,3.1474902747195,-0.679274912465474,-0.042687787808515,-2.24219886108082,\ +-3,-0.178054,-3.04617070707071,3.14748046658813,-0.679296971483109,-0.0427454035771448,-2.2422551458539,\ +-3,-0.178054,-3.0186398989899,3.14746889480871,-0.679322997040541,-0.0428133795187838,-2.24232155146717,\ +-3,-0.178054,-2.99110909090909,3.14745503669234,-0.679354164693331,-0.042894786057438,-2.24240107741405,\ +-3,-0.178054,-2.96357828282828,3.14743814036472,-0.679392165447491,-0.0429940399179483,-2.24249803838756,\ +-3,-0.178054,-2.93604747474747,3.14741708368631,-0.679439523055457,-0.0431177328687587,-2.24261887387814,\ +-3,-0.178054,-2.90851666666667,3.14739011432778,-0.679500178600593,-0.0432761585934389,-2.24277363977254,\ +-3,-0.178054,-2.88098585858586,3.14735433512347,-0.679580647965123,-0.0434863358717293,-2.24297896169562,\ +-3,-0.178054,-2.85345505050505,3.1473045866235,-0.679692535030671,-0.0437785727876077,-2.24326444757711,\ +-3,-0.178054,-2.82592424242424,3.14723070330124,-0.679858702616171,-0.0442125845517658,-2.24368843313246,\ +-3,-0.178054,-2.79839343434343,3.14710949754457,-0.680131300914648,-0.0449245818289316,-2.24438398239147,\ +-3,-0.178054,-2.77086262626263,3.14687408408069,-0.680660758520088,-0.0463074678394255,-2.24573492202388,\ +-3,-0.178054,-2.74333181818182,3.14621924419309,-0.682133528824377,-0.0501541846106034,-2.24949277487756,\ +-3,-0.178054,-2.71580101010101,3.13487746038305,-0.707641813688441,-0.116779066240034,-2.31457853929705,\ +-3,-0.178054,-2.6882702020202,3.14938735477147,-0.675008276882753,-0.0315437970553355,-2.23131231030407,\ +-3,-0.178054,-2.66073939393939,3.14844022966418,-0.677138412445481,-0.0371074807948588,-2.23674746606447,\ +-3,-0.178054,-2.63320858585858,3.14815141309192,-0.677787976528356,-0.0388040719362455,-2.23840486385106,\ +-3,-0.178054,-2.60567777777778,3.14801156892987,-0.678102493608008,-0.0396255565367964,-2.23920737114081,\ +-3,-0.178054,-2.57814696969697,3.14792906790742,-0.678288042867075,-0.0401101911364005,-2.23968081008145,\ +-3,-0.178054,-2.55061616161616,3.14787464062975,-0.678410452756619,-0.0404299125306299,-2.23999314551584,\ +-3,-0.178054,-2.52308535353535,3.14783604110038,-0.678497265184639,-0.0406566572048259,-2.24021465210748,\ +-3,-0.178054,-2.49555454545454,3.14780724157659,-0.678562036870374,-0.0408258338436336,-2.24037992055658,\ +-3,-0.178054,-2.46802373737374,3.14778493029486,-0.678612216149014,-0.0409568966931144,-2.24050795569206,\ +-3,-0.178054,-2.44049292929293,3.14776713663268,-0.678652235057079,-0.0410614217533843,-2.2406100660941,\ +-3,-0.178054,-2.41296212121212,3.14775261463094,-0.678684895823988,-0.0411467281446475,-2.24069340180216,\ +-3,-0.178054,-2.38543131313131,3.1477405379354,-0.678712056965037,-0.0412176701078953,-2.24076270491827,\ +-3,-0.178054,-2.3579005050505,3.14773033687442,-0.678734999702594,-0.0412775940573954,-2.24082124455038,\ +-3,-0.178054,-2.3303696969697,3.147721605977,-0.678754635962843,-0.0413288818457278,-2.24087134752734,\ +-3,-0.178054,-2.30283888888889,3.1477140487884,-0.678771632488516,-0.0413732749327972,-2.24091471507916,\ +-3,-0.178054,-2.27530808080808,3.14770744353961,-0.678786488050095,-0.0414120760531833,-2.24095261984565,\ +-3,-0.178054,-2.24777727272727,3.14770162102145,-0.678799583208161,-0.0414462791899561,-2.24098603284764,\ +-3,-0.178054,-2.22024646464646,3.14769644988456,-0.678811213374554,-0.0414766559268966,-2.24101570784437,\ +-3,-0.178054,-2.19271565656565,3.14769182661157,-0.678821611365402,-0.0415038143545677,-2.24104223887876,\ +-3,-0.178054,-2.16518484848485,3.14768766851626,-0.678830963146541,-0.0415282401956139,-2.24106610045265,\ +-3,-0.178054,-2.13765404040404,3.14768390875456,-0.678839419053815,-0.0415503261110006,-2.24108767615606,\ +-3,-0.178054,-2.11012323232323,3.14768049270401,-0.678847101936161,-0.0415703929688744,-2.24110727944469,\ +-3,-0.178054,-2.08259242424242,3.14767737529255,-0.678854113163042,-0.0415887055352998,-2.24112516896816,\ +-3,-0.178054,-2.05506161616161,3.1476745189987,-0.678860537122292,-0.0416054842221818,-2.24114156004662,\ +-3,-0.178054,-2.02753080808081,3.14767189233402,-0.678866444633184,-0.0416209140017962,-2.24115663337923,\ +-3,-0.178054,-2,3.1476694686773,-0.678871895568115,-0.0416351512543784,-2.24117054173366,\ +-3,-0.146953,-4.72555,3.14758750177949,-0.67905624355199,-0.0421166482530905,-2.24164091555587,\ +-3,-0.146953,-4.69801919191919,3.14758719650238,-0.679056930136715,-0.0421184415381512,-2.24164266741384,\ +-3,-0.146953,-4.67048838383838,3.14758688250218,-0.679057636340149,-0.0421202860651478,-2.24164446932997,\ +-3,-0.146953,-4.64295757575758,3.14758655939957,-0.67905836301536,-0.0421221840622203,-2.24164632348096,\ +-3,-0.146953,-4.61542676767677,3.14758622679297,-0.679059111065614,-0.0421241378885904,-2.24164823217153,\ +-3,-0.146953,-4.58789595959596,3.14758588425674,-0.679059881448104,-0.042126150044343,-2.24165019784399,\ +-3,-0.146953,-4.56036515151515,3.1475855313395,-0.67906067517804,-0.0421282231811009,-2.24165222308873,\ +-3,-0.146953,-4.53283434343434,3.14758516756209,-0.679061493333111,-0.0421303601136802,-2.24165431065552,\ +-3,-0.146953,-4.50530353535354,3.14758479241536,-0.679062337058382,-0.0421325638328435,-2.24165646346605,\ +-3,-0.146953,-4.47777272727273,3.14758440535787,-0.679063207571612,-0.0421348375192642,-2.24165868462749,\ +-3,-0.146953,-4.45024191919192,3.14758400581321,-0.679064106169144,-0.0421371845588442,-2.24166097744756,\ +-3,-0.146953,-4.42271111111111,3.14758359316719,-0.679065034232333,-0.0421396085595376,-2.24166334545084,\ +-3,-0.146953,-4.3951803030303,3.14758316676468,-0.67906599323464,-0.0421421133698579,-2.24166579239694,\ +-3,-0.146953,-4.36764949494949,3.14758272590609,-0.67906698474943,-0.0421447030992649,-2.24166832230039,\ +-3,-0.146953,-4.34011868686869,3.14758226984362,-0.679068010458587,-0.0421473821406658,-2.24167093945262,\ +-3,-0.146953,-4.31258787878788,3.14758179777696,-0.679069072162042,-0.04215015519528,-2.24167364844624,\ +-3,-0.146953,-4.28505707070707,3.14758130884861,-0.679070171788307,-0.0421530273001707,-2.24167645420196,\ +-3,-0.146953,-4.25752626262626,3.14758080213875,-0.679071311406167,-0.0421560038587811,-2.24167936199838,\ +-3,-0.146953,-4.22999545454545,3.14758027665938,-0.679072493237668,-0.0421590906748619,-2.24168237750519,\ +-3,-0.146953,-4.20246464646465,3.14757973134794,-0.679073719672586,-0.0421622939902414,-2.24168550682001,\ +-3,-0.146953,-4.17493383838384,3.1475791650601,-0.679074993284547,-0.0421656205269551,-2.24168875650962,\ +-3,-0.146953,-4.14740303030303,3.14757857656178,-0.679076316849058,-0.0421690775343302,-2.24169213365584,\ +-3,-0.146953,-4.11987222222222,3.14757796452019,-0.679077693363701,-0.0421726728417229,-2.24169564590719,\ +-3,-0.146953,-4.09234141414141,3.14757732749366,-0.679079126070793,-0.0421764149177136,-2.24169930153659,\ +-3,-0.146953,-4.06481060606061,3.14757666392042,-0.67908061848288,-0.0421803129367025,-2.24170310950652,\ +-3,-0.146953,-4.0372797979798,3.14757597210574,-0.679082174411504,-0.0421843768540081,-2.2417070795423,\ +-3,-0.146953,-4.00974898989899,3.14757525020749,-0.679083797999684,-0.0421886174907635,-2.2417112222151,\ +-3,-0.146953,-3.98221818181818,3.14757449621978,-0.679085493758774,-0.0421930466301324,-2.24171554903588,\ +-3,-0.146953,-3.95468737373737,3.14757370795436,-0.679087266610316,-0.0421976771266489,-2.24172007256219,\ +-3,-0.146953,-3.92715656565657,3.14757288301935,-0.679089121933747,-0.0422025230308154,-2.24172480651997,\ +-3,-0.146953,-3.89962575757576,3.14757201879505,-0.679091065620913,-0.0422075997315058,-2.24172976594259,\ +-3,-0.146953,-3.87209494949495,3.14757111240613,-0.679093104138581,-0.0422129241192081,-2.24173496733035,\ +-3,-0.146953,-3.84456414141414,3.14757016068969,-0.679095244600303,-0.0422185147737599,-2.24174042883387,\ +-3,-0.146953,-3.81703333333333,3.14756916015836,-0.679097494849366,-0.0422243921809722,-2.2417461704657,\ +-3,-0.146953,-3.78950252525252,3.14756810695759,-0.679099863554817,-0.0422305789834615,-2.2417522143454,\ +-3,-0.146953,-3.76197171717172,3.14756699681608,-0.679102360323081,-0.0422371002721666,-2.24175858498426,\ +-3,-0.146953,-3.73444090909091,3.14756582498783,-0.679104995828171,-0.0422439839264608,-2.24176530961762,\ +-3,-0.146953,-3.7069101010101,3.14756458618431,-0.679107781964238,-0.0422512610125809,-2.24177241859405,\ +-3,-0.146953,-3.67937929292929,3.14756327449471,-0.679110732025041,-0.0422589662523814,-2.24177994583328,\ +-3,-0.146953,-3.65184848484848,3.14756188329161,-0.679113860916046,-0.0422671385773362,-2.24178792936741,\ +-3,-0.146953,-3.62431767676768,3.14756040511892,-0.679117185406325,-0.0422758217864377,-2.24179641198364,\ +-3,-0.146953,-3.59678686868687,3.1475588315583,-0.679120724429193,-0.0422850653314623,-2.24180544199133,\ +-3,-0.146953,-3.56925606060606,3.14755715306871,-0.679124499443008,-0.0422949252593227,-2.24181507414266,\ +-3,-0.146953,-3.54172525252525,3.14755535879276,-0.679128534866634,-0.0423054653494428,-2.24182537074365,\ +-3,-0.146953,-3.51419444444444,3.14755343632158,-0.679132858608224,-0.0423167584949131,-2.24183640300349,\ +-3,-0.146953,-3.48666363636364,3.14755137140753,-0.679137502711573,-0.042328888390653,-2.24184825268363,\ +-3,-0.146953,-3.45913282828283,3.14754914761034,-0.679142504151637,-0.0423419516112552,-2.24186101412767,\ +-3,-0.146953,-3.43160202020202,3.14754674585862,-0.679147905821061,-0.0423560601876569,-2.2418747967785,\ +-3,-0.146953,-3.40407121212121,3.14754414390146,-0.679153757763379,-0.0423713448281655,-2.2418897283249,\ +-3,-0.146953,-3.3765404040404,3.14754131561698,-0.679160118728049,-0.0423879589800185,-2.24190595866928,\ +-3,-0.146953,-3.3490095959596,3.14753823013237,-0.679167058149718,-0.0424060839989964,-2.24192366497789,\ +-3,-0.146953,-3.32147878787879,3.14753485069228,-0.679174658693166,-0.0424259357965704,-2.24194305817438,\ +-3,-0.146953,-3.29394797979798,3.14753113318766,-0.679183019562029,-0.0424477734819079,-2.24196439138216,\ +-3,-0.146953,-3.26641717171717,3.14752702421983,-0.679192260852759,-0.0424719107339518,-2.24198797103382,\ +-3,-0.146953,-3.23888636363636,3.1475224585191,-0.679202529360482,-0.0424987309657025,-2.24201417168502,\ +-3,-0.146953,-3.21135555555555,3.14751735545174,-0.679214006434852,-0.0425287078428383,-2.2420434560592,\ +-3,-0.146953,-3.18382474747475,3.14751161421654,-0.679226918783144,-0.0425624335002523,-2.24207640261219,\ +-3,-0.146953,-3.15629393939394,3.14750510711926,-0.679241553596664,-0.0426006580505725,-2.2421137441281,\ +-3,-0.146953,-3.12876313131313,3.14749766996296,-0.679258280163183,-0.0426443460335297,-2.2421564228646,\ +-3,-0.146953,-3.10123232323232,3.14748908800087,-0.679277581459842,-0.0426947589331833,-2.24220567116389,\ +-3,-0.146953,-3.07370151515151,3.14747907486134,-0.679300101551877,-0.0427535789782822,-2.24226313239315,\ +-3,-0.146953,-3.04617070707071,3.14746723997012,-0.679326718861979,-0.0428231005139051,-2.24233104789527,\ +-3,-0.146953,-3.0186398989899,3.1474530364117,-0.679358663432635,-0.0429065362780093,-2.24241255618999,\ +-3,-0.146953,-2.99110909090909,3.14743567400432,-0.67939771242534,-0.0430085280242457,-2.24251219180067,\ +-3,-0.146953,-2.96357828282828,3.14741396712288,-0.679446532375037,-0.0431360404535237,-2.24263675853505,\ +-3,-0.146953,-2.93604747474747,3.14738605195142,-0.679509315104615,-0.0433000221539269,-2.24279695205525,\ +-3,-0.146953,-2.90851666666667,3.14734882065155,-0.679593050310526,-0.0435187294567447,-2.24301060694874,\ +-3,-0.146953,-2.88098585858586,3.1472966755636,-0.679710327432042,-0.0438250446159395,-2.24330984584871,\ +-3,-0.146953,-2.85345505050505,3.14721841137194,-0.679886347829612,-0.0442847908597534,-2.24375897138538,\ +-3,-0.146953,-2.82592424242424,3.14708784674539,-0.680179994732314,-0.0450517648149841,-2.24450822729316,\ +-3,-0.146953,-2.79839343434343,3.14682625033992,-0.68076833918871,-0.0465884569122247,-2.24600941990139,\ +-3,-0.146953,-2.77086262626263,3.14603770377497,-0.682541823037825,-0.05122060494368,-2.25053455958132,\ +-3,-0.146953,-2.74333181818182,3.36642892582231,-0.18687005149993,1.24342046095898,-0.985801304341832,\ +-3,-0.146953,-2.71580101010101,3.14915839311726,-0.675523224019496,-0.0328887832907353,-2.23262622569308,\ +-3,-0.146953,-2.6882702020202,3.14838653551185,-0.677259173496489,-0.0374228956011322,-2.23705559439842,\ +-3,-0.146953,-2.66073939393939,3.14812802951476,-0.677840567457363,-0.0389414337556863,-2.2385390524425,\ +-3,-0.146953,-2.63320858585858,3.14799854652085,-0.678131781709821,-0.0397020538915478,-2.239282101312,\ +-3,-0.146953,-2.60567777777778,3.14792078296877,-0.678306676141921,-0.0401588592353146,-2.23972835388706,\ +-3,-0.146953,-2.57814696969697,3.14786890983269,-0.678423341628954,-0.0404635768713786,-2.24002603216866,\ +-3,-0.146953,-2.55061616161616,3.14783184251107,-0.67850670803893,-0.0406813209190937,-2.24023874605943,\ +-3,-0.146953,-2.52308535353535,3.14780403376773,-0.678569251405907,-0.0408446774302731,-2.24039832883306,\ +-3,-0.146953,-2.49555454545454,3.14778239985303,-0.678617907249462,-0.0409717612320532,-2.24052247684176,\ +-3,-0.146953,-2.46802373737374,3.14776508963832,-0.678656838858044,-0.0410734463836496,-2.24062181294052,\ +-3,-0.146953,-2.44049292929293,3.14775092469657,-0.678688696577741,-0.0411566553024406,-2.24070309963032,\ +-3,-0.146953,-2.41296212121212,3.14773911917647,-0.678715247830574,-0.041226004303626,-2.24077084658377,\ +-3,-0.146953,-2.38543131313131,3.14772912889459,-0.678737716514528,-0.0412846900763783,-2.24082817664255,\ +-3,-0.146953,-2.3579005050505,3.14772056506934,-0.678756977020454,-0.041334996435045,-2.24087732086208,\ +-3,-0.146953,-2.3303696969697,3.14771314254491,-0.678773670679094,-0.0413785984661776,-2.24091991563234,\ +-3,-0.146953,-2.30283888888889,3.14770664742276,-0.678788278559924,-0.0414167526712315,-2.24095718842804,\ +-3,-0.146953,-2.27530808080808,3.14770091611224,-0.678801168587066,-0.0414504200282129,-2.24099007802741,\ +-3,-0.146953,-2.24777727272727,3.14769582136185,-0.678812626956095,-0.0414803480490212,-2.24101931467391,\ +-3,-0.146953,-2.22024646464646,3.14769126269979,-0.67882287963349,-0.0415071269336651,-2.24104547493318,\ +-3,-0.146953,-2.19271565656565,3.14768715974147,-0.678832107408542,-0.0415312288842211,-2.24106902009886,\ +-3,-0.146953,-2.16518484848485,3.14768344740844,-0.678840456646175,-0.0415530361900413,-2.24109032362892,\ +-3,-0.146953,-2.13765404040404,3.1476800724509,-0.67884804710813,-0.0415728616558437,-2.24110969110193,\ +-3,-0.146953,-2.11012323232323,3.14767699087697,-0.678854977734474,-0.0415909637023857,-2.2411273749688,\ +-3,-0.146953,-2.08259242424242,3.14767416602459,-0.678861330980163,-0.0416075576930904,-2.24114358561779,\ +-3,-0.146953,-2.05506161616161,3.14767156709597,-0.678867176111118,-0.0416228245430587,-2.24115849978463,\ +-3,-0.146953,-2.02753080808081,3.14766916803012,-0.678872571739887,-0.0416369173419303,-2.24117226702241,\ +-3,-0.146953,-2,3.14766694662593,-0.678877567797974,-0.0416499665053855,-2.24118501473404,\ +-3,-0.144435,-4.72555,3.1475874742113,-0.67905630555435,-0.0421168101965569,-2.24164107375825,\ +-3,-0.144435,-4.69801919191919,3.14758716815156,-0.679056993899243,-0.0421186080789792,-2.24164283010736,\ +-3,-0.144435,-4.67048838383838,3.14758685333493,-0.679057701938873,-0.0421204574019225,-2.24164463670865,\ +-3,-0.144435,-4.64295757575758,3.14758652938011,-0.679058430530756,-0.0421223604051309,-2.24164649575014,\ +-3,-0.144435,-4.61542676767677,3.14758619588338,-0.679059180582925,-0.0421243194602903,-2.2416484095487,\ +-3,-0.144435,-4.58789595959596,3.14758585241686,-0.67905995305771,-0.0421263370808881,-2.24165038055976,\ +-3,-0.144435,-4.56036515151515,3.14758549852669,-0.679060748975839,-0.0421284159329723,-2.24165241138779,\ +-3,-0.144435,-4.53283434343434,3.14758513373105,-0.67906156942096,-0.0421305588469046,-2.24165450479776,\ +-3,-0.144435,-4.50530353535354,3.14758475751795,-0.679062415544546,-0.0421327688302171,-2.24165666372773,\ +-3,-0.144435,-4.47777272727273,3.14758436934286,-0.679063288571303,-0.042135049081696,-2.24165889130257,\ +-3,-0.144435,-4.45024191919192,3.14758396862605,-0.679064189805067,-0.042137403006829,-2.24166119084912,\ +-3,-0.144435,-4.42271111111111,3.14758355474972,-0.679065120635314,-0.0421398342347761,-2.24166356591269,\ +-3,-0.144435,-4.3951803030303,3.1475831270548,-0.679066082544306,-0.04214234663704,-2.24166602027536,\ +-3,-0.144435,-4.36764949494949,3.14758268483748,-0.67906707711496,-0.0421449443480369,-2.24166855797602,\ +-3,-0.144435,-4.34011868686869,3.14758222734532,-0.679068106039549,-0.0421476317878006,-2.24167118333259,\ +-3,-0.144435,-4.31258787878788,3.147581753773,-0.679069171129312,-0.0421504136870811,-2.24167390096656,\ +-3,-0.144435,-4.28505707070707,3.14758126325754,-0.679070274325081,-0.0421532951151338,-2.24167671583006,\ +-3,-0.144435,-4.25752626262626,3.14758075487313,-0.679071417709101,-0.0421562815105502,-2.24167963323605,\ +-3,-0.144435,-4.22999545454545,3.14758022762523,-0.679072603518136,-0.0421593787155167,-2.24168265889174,\ +-3,-0.144435,-4.20246464646465,3.1475796804441,-0.679073834158077,-0.0421625930139621,-2.24168579893592,\ +-3,-0.144435,-4.17493383838384,3.14757911217757,-0.679075112220233,-0.042165931174111,-2.24168905998045,\ +-3,-0.144435,-4.14740303030303,3.1475785215829,-0.679076440499556,-0.0421694004960591,-2.24169244915676,\ +-3,-0.144435,-4.11987222222222,3.14757790731778,-0.679077822015022,-0.0421730088650624,-2.24169597416797,\ +-3,-0.144435,-4.09234141414141,3.14757726793006,-0.679079260032561,-0.0421767648113693,-2.24169964334727,\ +-3,-0.144435,-4.06481060606061,3.14757660184636,-0.679080758090821,-0.0421806775775453,-2.2417034657237,\ +-3,-0.144435,-4.0372797979798,3.14757590735907,-0.679082320030243,-0.0421847571944113,-2.24170745109637,\ +-3,-0.144435,-4.00974898989899,3.14757518261184,-0.679083950025941,-0.0421890145669064,-2.24171161011829,\ +-3,-0.144435,-3.98221818181818,3.1475744255829,-0.679085652624959,-0.0421934615714258,-2.24171595439151,\ +-3,-0.144435,-3.95468737373737,3.14757363406627,-0.679087432788644,-0.0421981111664622,-2.24172049657515,\ +-3,-0.144435,-3.92715656565657,3.1475728056503,-0.679089295940915,-0.0422029775187196,-2.24172525050865,\ +-3,-0.144435,-3.89962575757576,3.14757193769316,-0.679091248023482,-0.0422080761472865,-2.24173023135258,\ +-3,-0.144435,-3.87209494949495,3.14757102729457,-0.679093295559121,-0.0422134240889582,-2.24173545575018,\ +-3,-0.144435,-3.84456414141414,3.14757007126357,-0.679095445724503,-0.0422190400884191,-2.2417409420131,\ +-3,-0.144435,-3.81703333333333,3.1475690660811,-0.67909770643423,-0.0422249448177582,-2.24174671033589,\ +-3,-0.144435,-3.78950252525252,3.14756800785665,-0.679100086438194,-0.042231161130734,-2.24175278304435,\ +-3,-0.144435,-3.76197171717172,3.14756689227807,-0.679102595434733,-0.0422377143583821,-2.24175918488432,\ +-3,-0.144435,-3.73444090909091,3.14756571455269,-0.679105244202758,-0.042244632654028,-2.24176594335878,\ +-3,-0.144435,-3.7069101010101,3.14756446933862,-0.679108044756522,-0.0422519473976084,-2.24177308912273,\ +-3,-0.144435,-3.67937929292929,3.14756315066364,-0.67911101052783,-0.0422596936715536,-2.24178065644816,\ +-3,-0.144435,-3.65184848484848,3.14756175182948,-0.679114156581472,-0.0422679108234522,-2.24178868377369,\ +-3,-0.144435,-3.62431767676768,3.14756026529799,-0.679117499871147,-0.0422766431345428,-2.24179721435758,\ +-3,-0.144435,-3.59678686868687,3.14755868255525,-0.679121059545111,-0.0422859406180011,-2.24180629705767,\ +-3,-0.144435,-3.56925606060606,3.14755699394842,-0.679124857313143,-0.0422958599774134,-2.24181598726761,\ +-3,-0.144435,-3.54172525252525,3.14755518848869,-0.679128917889684,-0.0423064657642316,-2.24182634804762,\ +-3,-0.144435,-3.51419444444444,3.14755325361185,-0.679133269532286,-0.0423178317841271,-2.24183745149839,\ +-3,-0.144435,-3.48666363636364,3.14755117488553,-0.679137944700149,-0.0423300428170205,-2.24184938044132,\ +-3,-0.144435,-3.45913282828283,3.14754893564853,-0.679142980865206,-0.042343196735542,-2.24186223048804,\ +-3,-0.144435,-3.43160202020202,3.1475465165633,-0.679148421518629,-0.0423574071339443,-2.24187611260866,\ +-3,-0.144435,-3.40407121212121,3.14754389505611,-0.679154317430034,-0.0423728066169502,-2.24189115634455,\ +-3,-0.144435,-3.3765404040404,3.14754104461039,-0.679160728236527,-0.0423895509502551,-2.24190751386304,\ +-3,-0.144435,-3.3490095959596,3.14753793386673,-0.679167724467152,-0.04240782434808,-2.24192536512277,\ +-3,-0.144435,-3.32147878787879,3.14753452546433,-0.679175390148414,-0.0424278462785803,-2.24194492452189,\ +-3,-0.144435,-3.29394797979798,3.14753077453316,-0.67918382619538,-0.0424498803209907,-2.24196644955066,\ +-3,-0.144435,-3.26641717171717,3.14752662670762,-0.679193154879207,-0.0424742458343559,-2.24199025219051,\ +-3,-0.144435,-3.23888636363636,3.14752201547436,-0.67920352579207,-0.042501333537254,-2.24201671413395,\ +-3,-0.144435,-3.21135555555555,3.14751685857849,-0.67921512392962,-0.0425316266183269,-2.24204630740736,\ +-3,-0.144435,-3.18382474747475,3.14751105307394,-0.679228180823179,-0.0425657298123404,-2.2420796227754,\ +-3,-0.144435,-3.15629393939394,3.14750446838068,-0.679242990154242,-0.0426044101836195,-2.24211740958224,\ +-3,-0.144435,-3.12876313131313,3.14749693634554,-0.679259930108416,-0.0426486555120603,-2.24216063278884,\ +-3,-0.144435,-3.10123232323232,3.1474882366805,-0.679279496125357,-0.0426997598324599,-2.2422105565362,\ +-3,-0.144435,-3.07370151515151,3.1474780750599,-0.679302350159343,-0.0427594520978201,-2.24226886983636,\ +-3,-0.144435,-3.04617070707071,3.14746604916268,-0.679329397052271,-0.0428300956573335,-2.24233788144224,\ +-3,-0.144435,-3.0186398989899,3.14745159413686,-0.679361907186726,-0.0429150086129246,-2.24242083280347,\ +-3,-0.144435,-2.99110909090909,3.14743389130458,-0.679401721813412,-0.0430190001123171,-2.24252242197055,\ +-3,-0.144435,-2.96357828282828,3.14741170754152,-0.679451614295681,-0.04314931388069,-2.24264972532962,\ +-3,-0.144435,-2.93604747474747,3.14738309501447,-0.67951596541565,-0.0433173920471986,-2.24281392068249,\ +-3,-0.144435,-2.90851666666667,3.14734478564056,-0.679602125268372,-0.0435424322652828,-2.24303376219307,\ +-3,-0.144435,-2.88098585858586,3.14729084428077,-0.679723442302316,-0.0438592992388656,-2.24334330914746,\ +-3,-0.144435,-2.85345505050505,3.14720925067162,-0.679906950739809,-0.0443386034332132,-2.24381154082181,\ +-3,-0.144435,-2.82592424242424,3.14707141292427,-0.680216955284333,-0.0451483017799915,-2.24460253413481,\ +-3,-0.144435,-2.79839343434343,3.14678859028778,-0.680853038681662,-0.0468096828285132,-2.24622553522526,\ +-3,-0.144435,-2.77086262626263,3.14587825493241,-0.682900432103682,-0.0521572530441425,-2.25144956995161,\ +-3,-0.144435,-2.74333181818182,3.16343472407122,-0.643414984003082,0.0509744674853466,-2.15070031978568,\ +-3,-0.144435,-2.71580101010101,3.14902941581589,-0.675813300942094,-0.0336464328439951,-2.23336637260412,\ +-3,-0.144435,-2.6882702020202,3.14835265642252,-0.677335369399729,-0.0376219110606618,-2.23725001235457,\ +-3,-0.144435,-2.66073939393939,3.14811271445695,-0.677875011850228,-0.03903139878508,-2.23862693916839,\ +-3,-0.144435,-2.63320858585858,3.14798985757449,-0.678151323619877,-0.0397530952473783,-2.23933196354935,\ +-3,-0.144435,-2.60567777777778,3.14791519317085,-0.678319247899597,-0.0401916953068727,-2.23976043140473,\ +-3,-0.144435,-2.57814696969697,3.14786501455321,-0.678432102323074,-0.0404864588570513,-2.24004838555215,\ +-3,-0.144435,-2.55061616161616,3.14782897356197,-0.678513160460534,-0.0406981739465653,-2.24025520976111,\ +-3,-0.144435,-2.52308535353535,3.14780183312859,-0.678574200762287,-0.0408576046139191,-2.24041095738276,\ +-3,-0.144435,-2.49555454545454,3.14778065854898,-0.678621823536398,-0.0409819901500269,-2.24053246945906,\ +-3,-0.144435,-2.46802373737374,3.14776367754025,-0.678660014742964,-0.0410817414516268,-2.24062991638216,\ +-3,-0.144435,-2.44049292929293,3.147749756561,-0.678691323777782,-0.0411635172648539,-2.24070980307291,\ +-3,-0.144435,-2.41296212121212,3.14773813683792,-0.67871745716307,-0.0412317748411934,-2.24077648381477,\ +-3,-0.144435,-2.38543131313131,3.14772829130913,-0.678739600289528,-0.0412896102929671,-2.24083298319605,\ +-3,-0.144435,-2.3579005050505,3.14771984244875,-0.678758602233209,-0.0413392413150136,-2.24088146768007,\ +-3,-0.144435,-2.3303696969697,3.14771251274712,-0.678775087128379,-0.0413822980785391,-2.24092352977908,\ +-3,-0.144435,-2.30283888888889,3.14770609364709,-0.678789524031323,-0.0414200057078355,-2.24096036631547,\ +-3,-0.144435,-2.27530808080808,3.14770042538085,-0.678802272268515,-0.0414533027248069,-2.24099289413015,\ +-3,-0.144435,-2.24777727272727,3.1476953834911,-0.678813611751093,-0.0414829202270606,-2.24102182743146,\ +-3,-0.144435,-2.22024646464646,3.14769086958685,-0.67882376376573,-0.0415094361914664,-2.24104773084427,\ +-3,-0.144435,-2.19271565656565,3.14768680485879,-0.678832905558868,-0.0415333135665609,-2.24107105662245,\ +-3,-0.144435,-2.16518484848485,3.14768312543872,-0.678841180773484,-0.0415549275322661,-2.2410921712788,\ +-3,-0.144435,-2.13765404040404,3.14767977901907,-0.678848707052167,-0.0415745853583086,-2.24111137498474,\ +-3,-0.144435,-2.11012323232323,3.1476767223504,-0.67885558166526,-0.0415925411042907,-2.24112891593076,\ +-3,-0.144435,-2.08259242424242,3.14767391936199,-0.678861885737697,-0.0416090066597817,-2.24114500111155,\ +-3,-0.144435,-2.05506161616161,3.14767133973181,-0.678867687465417,-0.0416241601451936,-2.2411598045327,\ +-3,-0.144435,-2.02753080808081,3.1476689577851,-0.678873044592306,-0.0416381523813183,-2.24117347353085,\ +-3,-0.144435,-2,3.14766675163696,-0.678878006338731,-0.0416511119264192,-2.24118613369443,\ +-3,-0.142745,-4.72555,3.14758745566906,-0.679056347256866,-0.042116919119015,-2.24164118016446,\ +-3,-0.142745,-4.69801919191919,3.14758714908235,-0.679057036786924,-0.0421187200969597,-2.24164293953759,\ +-3,-0.142745,-4.67048838383838,3.14758683371597,-0.67905774606297,-0.0421205726492848,-2.24164474929367,\ +-3,-0.142745,-4.64295757575758,3.14758650918729,-0.679058475945513,-0.0421224790235653,-2.24164661162834,\ +-3,-0.142745,-4.61542676767677,3.14758617509114,-0.679059227345814,-0.0421244415998991,-2.24164852886673,\ +-3,-0.142745,-4.58789595959596,3.1475858309981,-0.679060001229661,-0.0421264629008192,-2.2416505034731,\ +-3,-0.142745,-4.56036515151515,3.14758547645266,-0.679060798621514,-0.0421285456021104,-2.24165253806142,\ +-3,-0.142745,-4.53283434343434,3.14758511097122,-0.679061620609036,-0.0421306925446283,-2.2416546354069,\ +-3,-0.142745,-4.50530353535354,3.14758473403986,-0.679062468348037,-0.0421329067472259,-2.24165679845868,\ +-3,-0.142745,-4.47777272727273,3.14758434511196,-0.679063343067901,-0.0421351914209187,-2.24165903035358,\ +-3,-0.142745,-4.45024191919192,3.14758394360554,-0.67906424607753,-0.0421375499844188,-2.24166133443135,\ +-3,-0.142745,-4.42271111111111,3.14758352890038,-0.679065178771884,-0.0421399860812071,-2.24166371425129,\ +-3,-0.142745,-4.3951803030303,3.14758310033473,-0.679066142639164,-0.042142503598312,-2.24166617361063,\ +-3,-0.142745,-4.36764949494949,3.14758265720196,-0.679067139268745,-0.0421451066870049,-2.24166871656475,\ +-3,-0.142745,-4.34011868686869,3.14758219874647,-0.679068170359917,-0.0421477997856451,-2.24167134744948,\ +-3,-0.142745,-4.31258787878788,3.14758172415955,-0.67906923773155,-0.0421505876449319,-2.24167407090577,\ +-3,-0.142745,-4.28505707070707,3.14758123257454,-0.679070343332813,-0.0421534753558715,-2.24167689190701,\ +-3,-0.142745,-4.25752626262626,3.14758072306157,-0.679071489255038,-0.0421564683808061,-2.24167981578937,\ +-3,-0.142745,-4.22999545454545,3.14758019462166,-0.679072677744935,-0.0421595725878981,-2.24168284828544,\ +-3,-0.142745,-4.20246464646465,3.14757964618027,-0.679073911219295,-0.0421627942895306,-2.24168599556177,\ +-3,-0.142745,-4.17493383838384,3.14757907657986,-0.679075192281375,-0.042166140285153,-2.24168926426076,\ +-3,-0.142745,-4.14740303030303,3.14757848457191,-0.679076523739268,-0.0421696179091835,-2.24169266154737,\ +-3,-0.142745,-4.11987222222222,3.14757786880763,-0.679077908626424,-0.0421732350846764,-2.24169619516163,\ +-3,-0.142745,-4.09234141414141,3.14757722782778,-0.67907935022474,-0.0421770003835855,-2.24169987347748,\ +-3,-0.142745,-4.06481060606061,3.14757656005114,-0.679080852090517,-0.0421809230945813,-2.241703705569,\ +-3,-0.142745,-4.0372797979798,3.1475758637614,-0.679082418083749,-0.0421850132995609,-2.24170770128517,\ +-3,-0.142745,-4.00974898989899,3.14757513709257,-0.679084052401259,-0.0421892819601667,-2.24171187133445,\ +-3,-0.142745,-3.98221818181818,3.1475743780121,-0.67908575961425,-0.0421937410158861,-2.24171622738046,\ +-3,-0.142745,-3.95468737373737,3.14757358430208,-0.679087544711007,-0.0421984034955751,-2.24172078215109,\ +-3,-0.142745,-3.92715656565657,3.14757275353744,-0.679089413145571,-0.042203283644602,-2.24172554956264,\ +-3,-0.142745,-3.89962575757576,3.14757188306134,-0.679091370893401,-0.0422083970702247,-2.2417305448618,\ +-3,-0.142745,-3.87209494949495,3.14757096995663,-0.679093424515213,-0.0422137609083244,-2.2417357847886,\ +-3,-0.142745,-3.84456414141414,3.14757001101339,-0.679095581230431,-0.0422193940152517,-2.24174128776379,\ +-3,-0.142745,-3.81703333333333,3.147569002691,-0.679097849001981,-0.0422253171893078,-2.2417470741052,\ +-3,-0.142745,-3.78950252525252,3.14756794107464,-0.679100236634536,-0.0422315534273439,-2.24175316627842,\ +-3,-0.142745,-3.76197171717172,3.14756682182443,-0.679102753888757,-0.0422381282231538,-2.24175958918831,\ +-3,-0.142745,-3.73444090909091,3.14756564011611,-0.679105411614664,-0.0422450699158195,-2.24176637051928,\ +-3,-0.142745,-3.7069101010101,3.14756439057153,-0.679108221907973,-0.0422524100980455,-2.24177354113421,\ +-3,-0.142745,-3.67937929292929,3.14756306717684,-0.679111198294159,-0.0422601840968972,-2.24178113554408,\ +-3,-0.142745,-3.65184848484848,3.1475616631857,-0.679114355946126,-0.0422684315423678,-2.24178919246335,\ +-3,-0.142745,-3.62431767676768,3.14756017100423,-0.679117711942921,-0.0422771970430894,-2.24179775547016,\ +-3,-0.142745,-3.59678686868687,3.1475585820536,-0.679121285578782,-0.0422865309935045,-2.24180687379477,\ +-3,-0.142745,-3.56925606060606,3.14755688660501,-0.679125098734287,-0.0422964905433379,-2.24181660326667,\ +-3,-0.142745,-3.54172525252525,3.14755507358033,-0.679129176324782,-0.0423071407687606,-2.24182700745871,\ +-3,-0.142745,-3.51419444444444,3.14755313030975,-0.679133546845389,-0.0423185560959609,-2.24183815907773,\ +-3,-0.142745,-3.48666363636364,3.14755104223521,-0.679138243037897,-0.0423308220429493,-2.24185014166616,\ +-3,-0.142745,-3.45913282828283,3.14754879254513,-0.679143302712474,-0.0423440373658058,-2.24186305169871,\ +-3,-0.142745,-3.43160202020202,3.14754636172076,-0.679148769767891,-0.0423583167233476,-2.24187700118542,\ +-3,-0.142745,-3.40407121212121,3.14754372696836,-0.679154695468455,-0.0423737940124293,-2.24189212092997,\ +-3,-0.142745,-3.3765404040404,3.14754086150232,-0.679161140056472,-0.0423906265794188,-2.24190856464384,\ +-3,-0.142745,-3.3490095959596,3.14753773363123,-0.679168174807615,-0.042409000588671,-2.24192651419074,\ +-3,-0.142745,-3.32147878787879,3.14753430558092,-0.679175884678094,-0.0424291379366232,-2.24194618634103,\ +-3,-0.142745,-3.29394797979798,3.14753053196139,-0.679184371752365,-0.0424513052568463,-2.24196784156873,\ +-3,-0.142745,-3.26641717171717,3.14752635774581,-0.679193759788857,-0.0424758257929434,-2.2419917956501,\ +-3,-0.142745,-3.23888636363636,3.14752171556943,-0.679204200294465,-0.0425030952645696,-2.24201843516319,\ +-3,-0.142745,-3.21135555555555,3.14751652206644,-0.679215880763441,-0.0425336033864206,-2.24204823850967,\ +-3,-0.142745,-3.18382474747475,3.14751067281904,-0.679229036036992,-0.0425679635383427,-2.24208180489956,\ +-3,-0.142745,-3.15629393939394,3.1475040352646,-0.679243964255752,-0.0426069544314239,-2.24211989505477,\ +-3,-0.142745,-3.12876313131313,3.14749643852754,-0.679261049728021,-0.0426515798373917,-2.24216348955864,\ +-3,-0.142745,-3.10123232323232,3.1474876585002,-0.679280796484107,-0.0427031562288937,-2.24221387447167,\ +-3,-0.142745,-3.07370151515151,3.14747739536298,-0.67930387883449,-0.0427634448319987,-2.24227277033344,\ +-3,-0.142745,-3.04617070707071,3.14746523866196,-0.679331219912196,-0.0428348567703336,-2.24234253256763,\ +-3,-0.142745,-3.0186398989899,3.14745061109246,-0.679364118106707,-0.0429207832968211,-2.24242647408503,\ +-3,-0.142745,-2.99110909090909,3.14743267412657,-0.679404459312549,-0.0430261501640323,-2.24252940684722,\ +-3,-0.142745,-2.96357828282828,3.14741016141733,-0.679455091612554,-0.043158396256333,-2.24265859789114,\ +-3,-0.142745,-2.93604747474747,3.14738106606639,-0.67952052862955,-0.0433293106684377,-2.24282556396883,\ +-3,-0.142745,-2.90851666666667,3.14734200659288,-0.679608375496824,-0.043558757186104,-2.24304970998802,\ +-3,-0.142745,-2.88098585858586,3.1472868069167,-0.679732522552348,-0.0438830158700181,-2.24336647789508,\ +-3,-0.142745,-2.85345505050505,3.14720285757901,-0.679921329150665,-0.0443761582875035,-2.24384822811249,\ +-3,-0.142745,-2.82592424242424,3.14705978946161,-0.680243097080171,-0.0452165813237726,-2.24466923633665,\ +-3,-0.142745,-2.79839343434343,3.14676121443807,-0.680914608447459,-0.046970496398694,-2.24638263380297,\ +-3,-0.142745,-2.77086262626263,3.14575176569809,-0.683184913228983,-0.0529002869799882,-2.25217543888408,\ +-3,-0.142745,-2.74333181818182,3.15736221537365,-0.657072384310764,0.0153028147766672,-2.18554791317525,\ +-3,-0.142745,-2.71580101010101,3.14895425690823,-0.675982337388108,-0.0340879377615797,-2.23379767821177,\ +-3,-0.142745,-2.6882702020202,3.14833152692844,-0.677382890774057,-0.0377460317515073,-2.23737126570386,\ +-3,-0.142745,-2.66073939393939,3.14810293267651,-0.677897011603202,-0.0390888597608166,-2.23868307272448,\ +-3,-0.142745,-2.63320858585858,3.14798424010651,-0.678163957608997,-0.0397860938607258,-2.2393641998539,\ +-3,-0.142745,-2.60567777777778,3.14791155261086,-0.67832743571583,-0.0402130809974505,-2.2397813230594,\ +-3,-0.142745,-2.57814696969697,3.14786246503836,-0.678437836319796,-0.0405014354364222,-2.240063016154,\ +-3,-0.142745,-2.55061616161616,3.14782708912172,-0.67851739866853,-0.0407092436875404,-2.24026602377737,\ +-3,-0.142745,-2.52308535353535,3.14780038379699,-0.678577460387387,-0.0408661184021882,-2.24041927449199,\ +-3,-0.142745,-2.49555454545454,3.14777950934363,-0.678624408161353,-0.0409887409109117,-2.24053906426903,\ +-3,-0.142745,-2.46802373737374,3.14776274404381,-0.678662114226897,-0.041087225076624,-2.24063527332863,\ +-3,-0.142745,-2.44049292929293,3.14774898328411,-0.67869306291929,-0.0411680597143988,-2.24071424058625,\ +-3,-0.142745,-2.41296212121212,3.14773748581148,-0.678718921356727,-0.0412355991566857,-2.24078021978384,\ +-3,-0.142745,-2.38543131313131,3.14772773567813,-0.678740849933677,-0.0412928742283487,-2.24083617173048,\ +-3,-0.142745,-2.3579005050505,3.14771936268446,-0.678759681249035,-0.0413420595876651,-2.24088422084713,\ +-3,-0.142745,-2.3303696969697,3.14771209430902,-0.678776028218278,-0.0413847561035895,-2.2409259310207,\ +-3,-0.142745,-2.30283888888889,3.14770572548626,-0.678790352044924,-0.041422168389828,-2.24096247903683,\ +-3,-0.142745,-2.27530808080808,3.14770009895151,-0.678803006425699,-0.0414552202639816,-2.24099476737179,\ +-3,-0.142745,-2.24777727272727,3.14769509207997,-0.678814267150463,-0.041484632059342,-2.24102349971829,\ +-3,-0.142745,-2.22024646464646,3.147690607847,-0.678824352432837,-0.0415109737262911,-2.24104923286014,\ +-3,-0.142745,-2.19271565656565,3.14768656847888,-0.678833437190039,-0.0415347021296897,-2.24107241310805,\ +-3,-0.142745,-2.16518484848485,3.14768291090403,-0.678841663273619,-0.0415561877704386,-2.24109340240391,\ +-3,-0.142745,-2.13765404040404,3.14767958343553,-0.678849146930121,-0.0415757342719506,-2.24111249735705,\ +-3,-0.142745,-2.11012323232323,3.14767654331348,-0.678855984328952,-0.041593592818311,-2.24112994334889,\ +-3,-0.142745,-2.08259242424242,3.1476737548574,-0.678862255717415,-0.0416099730067967,-2.24114594513476,\ +-3,-0.142745,-2.05506161616161,3.14767118805939,-0.678868028584884,-0.0416250511123528,-2.24116067491741,\ +-3,-0.142745,-2.02753080808081,3.14766881749994,-0.678873360101246,-0.0416389764565455,-2.24117427856892,\ +-3,-0.142745,-2,3.14766662150317,-0.678878299016664,-0.0416518763695291,-2.24118688047795,\ +-3,-0.118257,-4.72555,3.14758718339227,-0.679056959622073,-0.042118518550714,-2.24164274264731,\ +-3,-0.118257,-4.69801919191919,3.14758686901466,-0.679057666674306,-0.0421203652946887,-2.24164454672922,\ +-3,-0.118257,-4.67048838383838,3.14758654551812,-0.679058394235507,-0.0421222656058672,-2.24164640314086,\ +-3,-0.118257,-4.64295757575758,3.14758621250005,-0.679059143211141,-0.0421242218492279,-2.24164831419257,\ +-3,-0.118257,-4.61542676767677,3.1475858695338,-0.679059914560769,-0.0421262365310468,-2.24165028233275,\ +-3,-0.118257,-4.58789595959596,3.14758551616685,-0.679060709302157,-0.0421283123096097,-2.24165231015826,\ +-3,-0.118257,-4.56036515151515,3.14758515191879,-0.679061528515746,-0.042130452006913,-2.24165440042591,\ +-3,-0.118257,-4.53283434343434,3.14758477627916,-0.679062373349554,-0.0421326586214649,-2.24165655606493,\ +-3,-0.118257,-4.50530353535354,3.14758438870511,-0.679063245024557,-0.0421349353423038,-2.2416587801907,\ +-3,-0.118257,-4.47777272727273,3.14758398861868,-0.679064144840551,-0.0421372855643783,-2.24166107611974,\ +-3,-0.118257,-4.45024191919192,3.14758357540403,-0.679065074182649,-0.0421397129054358,-2.24166344738621,\ +-3,-0.118257,-4.42271111111111,3.14758314840419,-0.679066034528369,-0.042142221224606,-2.24166589776011,\ +-3,-0.118257,-4.3951803030303,3.14758270691764,-0.67906702745549,-0.0421448146428745,-2.2416684312672,\ +-3,-0.118257,-4.36764949494949,3.14758225019441,-0.679068054650695,-0.0421474975656749,-2.24167105221117,\ +-3,-0.118257,-4.34011868686869,3.14758177743191,-0.679069117919137,-0.0421502747078628,-2.24167376519794,\ +-3,-0.118257,-4.31258787878788,3.1475812877701,-0.679070219195017,-0.0421531511213666,-2.24167657516272,\ +-3,-0.118257,-4.28505707070707,3.14758078028638,-0.67907136055333,-0.0421561322258588,-2.24167948740002,\ +-3,-0.118257,-4.25752626262626,3.14758025398974,-0.679072544222922,-0.0421592238428363,-2.24168250759682,\ +-3,-0.118257,-4.22999545454545,3.1475797078143,-0.679073772601011,-0.0421624322335653,-2.24168564186975,\ +-3,-0.118257,-4.20246464646465,3.14757914061211,-0.679075048269386,-0.0421657641414066,-2.2416888968064,\ +-3,-0.118257,-4.17493383838384,3.14757855114512,-0.679076374012525,-0.0421692268391244,-2.24169227951151,\ +-3,-0.118257,-4.14740303030303,3.1475779380761,-0.679077752837893,-0.0421728281818807,-2.24169579765879,\ +-3,-0.118257,-4.11987222222222,3.14757729995857,-0.679079187998705,-0.042176576666723,-2.241699459549,\ +-3,-0.118257,-4.09234141414141,3.1475766352254,-0.679080683019554,-0.0421804814995166,-2.24170327417532,\ +-3,-0.118257,-4.06481060606061,3.1475759421759,-0.679082241725324,-0.0421845526704288,-2.24170725129715,\ +-3,-0.118257,-4.0372797979798,3.14757521896139,-0.679083868273845,-0.042188801039274,-2.24171140152341,\ +-3,-0.118257,-4.00974898989899,3.14757446356865,-0.679085567192946,-0.0421932384322436,-2.24171573640711,\ +-3,-0.118257,-3.98221818181818,3.14757367380125,-0.679087343422533,-0.0421978777518481,-2.2417202685527,\ +-3,-0.118257,-3.95468737373737,3.14757284725818,-0.679089202362573,-0.0422027331022128,-2.24172501173846,\ +-3,-0.118257,-3.92715656565657,3.14757198130952,-0.679091149927923,-0.0422078199322976,-2.24172998105648,\ +-3,-0.118257,-3.89962575757576,3.14757107306844,-0.679093192611191,-0.042213155200097,-2.24173519307298,\ +-3,-0.118257,-3.87209494949495,3.1475701193591,-0.679095337555049,-0.0422187575615043,-2.24174066601291,\ +-3,-0.118257,-3.84456414141414,3.14756911667949,-0.679097592635687,-0.0422246475882682,-2.24174641997277,\ +-3,-0.118257,-3.81703333333333,3.1475680611585,-0.679099966559444,-0.0422308480204051,-2.24175247716725,\ +-3,-0.118257,-3.78950252525252,3.14756694850597,-0.679102468975142,-0.0422373840596027,-2.24175886221586,\ +-3,-0.118257,-3.76197171717172,3.14756577395437,-0.679105110605176,-0.0422442837115877,-2.24176560247734,\ +-3,-0.118257,-3.73444090909091,3.14756453219057,-0.679107903399085,-0.0422515781872701,-2.24177272844161,\ +-3,-0.118257,-3.7069101010101,3.14756321727544,-0.679110860714288,-0.0422593023747803,-2.24178027419083,\ +-3,-0.118257,-3.67937929292929,3.14756182254888,-0.679113997529714,-0.0422674953974602,-2.24178827794454,\ +-3,-0.118257,-3.65184848484848,3.14756034051699,-0.679117330699553,-0.0422762012766381,-2.24179678270715,\ +-3,-0.118257,-3.62431767676768,3.14755876271736,-0.679120879256214,-0.0422854697228906,-2.24180583704082,\ +-3,-0.118257,-3.59678686868687,3.1475570795574,-0.679124664773931,-0.0422953570858143,-2.24181549599343,\ +-3,-0.118257,-3.56925606060606,3.14755528011915,-0.679128711807803,-0.0423059275006415,-2.24182582221859,\ +-3,-0.118257,-3.54172525252525,3.1475533519222,-0.679133048426985,-0.0423172542809913,-2.24183688733629,\ +-3,-0.118257,-3.51419444444444,3.14755128063376,-0.679137706866669,-0.0423294216216895,-2.24184877359637,\ +-3,-0.118257,-3.48666363636364,3.14754904971179,-0.679142724330754,-0.0423425266952968,-2.24186157592656,\ +-3,-0.118257,-3.45913282828283,3.14754663996233,-0.679148143987561,-0.0423566822527997,-2.24187540447317,\ +-3,-0.118257,-3.43160202020202,3.14754402898577,-0.679154016214987,-0.042372019875818,-2.24189038777811,\ +-3,-0.118257,-3.40407121212121,3.14754119047854,-0.679160400171179,-0.0423886940790402,-2.24190667678661,\ +-3,-0.118257,-3.3765404040404,3.14753809334383,-0.679167365794549,-0.0424068875340295,-2.24192444995028,\ +-3,-0.118257,-3.3490095959596,3.14753470054765,-0.679174996376554,-0.0424268177890629,-2.24194391979176,\ +-3,-0.118257,-3.32147878787879,3.14753096763086,-0.679183391908233,-0.042448746009927,-2.24196534144358,\ +-3,-0.118257,-3.29394797979798,3.14752684075,-0.679192673486309,-0.0424729884881603,-2.24198902389058,\ +-3,-0.118257,-3.26641717171717,3.14752225406358,-0.67920298919202,-0.0424999319959502,-2.24201534496999,\ +-3,-0.118257,-3.23888636363636,3.14751712619266,-0.679214522050905,-0.0425300545762139,-2.24204477168137,\ +-3,-0.118257,-3.21135555555555,3.14751135535054,-0.679227500986759,-0.0425639541531334,-2.24207788813612,\ +-3,-0.118257,-3.18382474747475,3.14750481251764,-0.679242216171639,-0.0426023886247575,-2.24211543472388,\ +-3,-0.118257,-3.15629393939394,3.14749733168092,-0.679259040977811,-0.0426463331990594,-2.24215836412414,\ +-3,-0.118257,-3.12876313131313,3.14748869555136,-0.679278464100006,-0.0426970642938425,-2.24220792326785,\ +-3,-0.118257,-3.10123232323232,3.14747861411055,-0.679301137805313,-0.0427562855601968,-2.24226577644967,\ +-3,-0.118257,-3.07370151515151,3.14746669140259,-0.679327952620006,-0.0428263229564541,-2.24233419589542,\ +-3,-0.118257,-3.04617070707071,3.14745237230201,-0.679360157051215,-0.0429104374482237,-2.24241636723833,\ +-3,-0.118257,-3.0186398989899,3.14743485359777,-0.679399557564015,-0.0430133473269379,-2.24251689977151,\ +-3,-0.118257,-2.99110909090909,3.14741292797524,-0.679448869474267,-0.0431421447039777,-2.24264272176976,\ +-3,-0.118257,-2.96357828282828,3.14738469331709,-0.67951237074667,-0.04330800316055,-2.24280474869075,\ +-3,-0.118257,-2.93604747474747,3.14734696888904,-0.679597215024509,-0.0435296072393062,-2.24302123344106,\ +-3,-0.118257,-2.90851666666667,3.14729400395026,-0.679716336034834,-0.0438407384366676,-2.24332517712276,\ +-3,-0.118257,-2.88098585858586,3.14721422503032,-0.679895763138201,-0.0443093826276247,-2.24378299505298,\ +-3,-0.118257,-2.85345505050505,3.14708036872383,-0.680196813207037,-0.0450956928522321,-2.24455114053839,\ +-3,-0.118257,-2.82592424242424,3.14680926235824,-0.680806546077796,-0.0466882491748689,-2.24610690683928,\ +-3,-0.118257,-2.79839343434343,3.14596773385084,-0.682699189179382,-0.0516316282880424,-2.2509360877778,\ +-3,-0.118257,-2.77086262626263,3.17915928034905,-0.608049606950042,0.143345007978184,-2.06046365308125,\ +-3,-0.118257,-2.74333181818182,3.14909591498386,-0.675663740718732,-0.0332557977138368,-2.23298476162885,\ +-3,-0.118257,-2.71580101010101,3.14837048224959,-0.677295278151055,-0.0375171970545507,-2.23714771737157,\ +-3,-0.118257,-2.6882702020202,3.14812082835105,-0.677856763263816,-0.0389837354507502,-2.23858037691607,\ +-3,-0.118257,-2.66073939393939,3.14799447696448,-0.678140934362117,-0.0397259596295873,-2.23930545479791,\ +-3,-0.118257,-2.63320858585858,3.14791817114612,-0.678312550272246,-0.0401742018285008,-2.23974334204736,\ +-3,-0.118257,-2.60567777777778,3.14786709267021,-0.678427428525596,-0.0404742514034629,-2.24003646010585,\ +-3,-0.118257,-2.57814696969697,3.14783050566528,-0.678509714677384,-0.0406891739336021,-2.24024641765958,\ +-3,-0.118257,-2.55061616161616,3.14780300921652,-0.678571555676941,-0.0408506959370339,-2.24040420830486,\ +-3,-0.118257,-2.52308535353535,3.14778158969796,-0.678619729332038,-0.040976520314702,-2.24052712598371,\ +-3,-0.118257,-2.49555454545454,3.14776443300191,-0.678658315668824,-0.0410773036537092,-2.24062558110287,\ +-3,-0.118257,-2.46802373737374,3.14775038174379,-0.678689917707873,-0.0411598447622966,-2.24070621540971,\ +-3,-0.118257,-2.44049292929293,3.14773866275046,-0.678716274357347,-0.0412286854805524,-2.24077346582219,\ +-3,-0.118257,-2.41296212121212,3.14772873984663,-0.67873859150443,-0.0412869754553777,-2.24083040922646,\ +-3,-0.118257,-2.38543131313131,3.14772022951074,-0.678757731709864,-0.0413369676021715,-2.2408792464928,\ +-3,-0.118257,-2.3579005050505,3.14771285015758,-0.678774328274048,-0.0413803160330901,-2.24092159352133,\ +-3,-0.118257,-2.3303696969697,3.14770639038126,-0.678788856660134,-0.0414182626064645,-2.2409586634819,\ +-3,-0.118257,-2.30283888888889,3.14770068837426,-0.67880168078209,-0.0414517578262258,-2.24099138492064,\ +-3,-0.118257,-2.27530808080808,3.14769561818773,-0.678813083905685,-0.0414815415519373,-2.24102048060543,\ +-3,-0.118257,-2.24777727272727,3.1476910803195,-0.678823289816609,-0.0415081982876167,-2.24104652153752,\ +-3,-0.118257,-2.22024646464646,3.14768699511881,-0.67883247765381,-0.0415321959248239,-2.24106996479962,\ +-3,-0.118257,-2.19271565656565,3.14768329807077,-0.678840792514697,-0.0415539134422996,-2.24109118061557,\ +-3,-0.118257,-2.16518484848485,3.14767993636419,-0.6788483531745,-0.0415736610681036,-2.24111047204678,\ +-3,-0.118257,-2.13765404040404,3.14767686635273,-0.678855257796208,-0.0415916951933473,-2.24112808956141,\ +-3,-0.118257,-2.11012323232323,3.14767405164949,-0.678861588215952,-0.0416082295651606,-2.24114424196878,\ +-3,-0.118257,-2.08259242424242,3.14767146167795,-0.67886741320194,-0.041623443798651,-2.24115910473465,\ +-3,-0.118257,-2.05506161616161,3.14766907055677,-0.678872790962732,-0.041637489928292,-2.24117282638131,\ +-3,-0.118257,-2.02753080808081,3.14766685623185,-0.678877771099165,-0.0416504975061114,-2.24118553346799,\ +-3,-0.118257,-2,3.14766479979414,-0.67888239613874,-0.0416625776093341,-2.24119733450588,\ +-3,-0.0759167,-4.72555,3.14758669615642,-0.679058055441844,-0.0421213807134543,-2.24164553869055,\ +-3,-0.0759167,-4.69801919191919,3.14758636758954,-0.679058794406502,-0.04212331080923,-2.24164742419873,\ +-3,-0.0759167,-4.67048838383838,3.14758602927474,-0.679059555294789,-0.0421252981671541,-2.24164936564622,\ +-3,-0.0759167,-4.64295757575758,3.14758568077166,-0.679060339097042,-0.0421273453738795,-2.24165136555994,\ +-3,-0.0759167,-4.61542676767677,3.14758532161306,-0.679061146864157,-0.0421294551742349,-2.2416534266213,\ +-3,-0.0759167,-4.58789595959596,3.14758495130264,-0.679061979712291,-0.042131630483501,-2.24165555167822,\ +-3,-0.0759167,-4.56036515151515,3.14758456931284,-0.67906283882801,-0.0421338744008515,-2.24165774375831,\ +-3,-0.0759167,-4.53283434343434,3.14758417508226,-0.679063725473919,-0.042136190224085,-2.24166000608316,\ +-3,-0.0759167,-4.50530353535354,3.14758376801291,-0.679064640994866,-0.0421385814657963,-2.24166234208423,\ +-3,-0.0759167,-4.47777272727273,3.14758334746727,-0.679065586824744,-0.0421410518711533,-2.24166475542017,\ +-3,-0.0759167,-4.45024191919192,3.14758291276485,-0.679066564493977,-0.042143605437471,-2.24166724999594,\ +-3,-0.0759167,-4.42271111111111,3.14758246317859,-0.679067575637801,-0.042146246435793,-2.24166982998393,\ +-3,-0.0759167,-4.3951803030303,3.14758199793073,-0.679068622005372,-0.0421489794347316,-2.24167249984722,\ +-3,-0.0759167,-4.36764949494949,3.14758151618842,-0.67906970546987,-0.0421518093268421,-2.24167526436532,\ +-3,-0.0759167,-4.34011868686869,3.14758101705864,-0.679070828039704,-0.0421547413578519,-2.24167812866278,\ +-3,-0.0759167,-4.31258787878788,3.14758049958278,-0.679071991870915,-0.0421577811591141,-2.24168109824088,\ +-3,-0.0759167,-4.28505707070707,3.14757996273037,-0.679073199281005,-0.0421609347837063,-2.24168417901283,\ +-3,-0.0759167,-4.25752626262626,3.14757940539233,-0.679074452764353,-0.0421642087466627,-2.24168737734319,\ +-3,-0.0759167,-4.22999545454545,3.14757882637333,-0.6790757550094,-0.0421676100698983,-2.24169070009165,\ +-3,-0.0759167,-4.20246464646465,3.14757822438313,-0.679077108917896,-0.042171146332484,-2.2416941546622,\ +-3,-0.0759167,-4.17493383838384,3.14757759802708,-0.679078517626501,-0.0421748257270243,-2.24169774905817,\ +-3,-0.0759167,-4.14740303030303,3.1475769457953,-0.67907998453103,-0.0421786571230215,-2.24170149194418,\ +-3,-0.0759167,-4.11987222222222,3.14757626605052,-0.679081513313783,-0.0421826501382595,-2.24170539271583,\ +-3,-0.0759167,-4.09234141414141,3.14757555701437,-0.679083107974429,-0.0421868152194167,-2.24170946157845,\ +-3,-0.0759167,-4.06481060606061,3.14757481675182,-0.679084772864914,-0.0421911637333273,-2.24171370963631,\ +-3,-0.0759167,-4.0372797979798,3.14757404315358,-0.679086512729155,-0.0421957080705739,-2.24171814899374,\ +-3,-0.0759167,-4.00974898989899,3.14757323391603,-0.679088332748158,-0.0422004617633965,-2.24172279287038,\ +-3,-0.0759167,-3.98221818181818,3.14757238651826,-0.679090238591566,-0.0422054396202809,-2.24172765573261,\ +-3,-0.0759167,-3.95468737373737,3.14757149819587,-0.67909223647664,-0.042210657880049,-2.24173275344412,\ +-3,-0.0759167,-3.92715656565657,3.14757056591086,-0.679094333236029,-0.0422161343888245,-2.24173810343877,\ +-3,-0.0759167,-3.89962575757576,3.14756958631689,-0.679096536395814,-0.0422218888039397,-2.24174372491977,\ +-3,-0.0759167,-3.87209494949495,3.14756855571916,-0.679098854265801,-0.0422279428296937,-2.24174963909004,\ +-3,-0.0759167,-3.84456414141414,3.14756747002785,-0.679101296044235,-0.042234320490917,-2.24175586941939,\ +-3,-0.0759167,-3.81703333333333,3.14756632470385,-0.679103871939817,-0.0422410484516164,-2.24176244195588,\ +-3,-0.0759167,-3.78950252525252,3.14756511469536,-0.679106593314348,-0.0422481563876073,-2.24176938568975,\ +-3,-0.0759167,-3.76197171717172,3.14756383436332,-0.679109472850297,-0.0422556774241154,-2.24177673298102,\ +-3,-0.0759167,-3.73444090909091,3.14756247739366,-0.679112524748412,-0.0422636486519608,-2.24178452006363,\ +-3,-0.0759167,-3.7069101010101,3.14756103669306,-0.679115764961936,-0.0422721117392938,-2.24179278764317,\ +-3,-0.0759167,-3.67937929292929,3.14755950426496,-0.679119211475558,-0.0422811136601765,-2.24180158160854,\ +-3,-0.0759167,-3.65184848484848,3.14755787106108,-0.679122884639394,-0.0422907075669036,-2.24181095388416,\ +-3,-0.0759167,-3.62431767676768,3.14755612680256,-0.67912680757109,-0.0423009538402709,-2.24182096345592,\ +-3,-0.0759167,-3.59678686868687,3.14755425976349,-0.679131006642852,-0.0423119213616345,-2.24183167761398,\ +-3,-0.0759167,-3.56925606060606,3.14755225650696,-0.679135512075077,-0.0423236890633913,-2.24184317346725,\ +-3,-0.0759167,-3.54172525252525,3.1475501015611,-0.679140358664813,-0.0423363478316783,-2.24185553980234,\ +-3,-0.0759167,-3.51419444444444,3.14754777701873,-0.679145586686243,-0.0423500028583003,-2.24186887938094,\ +-3,-0.0759167,-3.48666363636364,3.14754526203862,-0.679151243012457,-0.042364776570705,-2.24188331180232,\ +-3,-0.0759167,-3.45913282828283,3.14754253221884,-0.679157382524727,-0.0423808123128262,-2.24189897709895,\ +-3,-0.0759167,-3.43160202020202,3.14753955880239,-0.679164069899017,-0.0423982790113126,-2.24191604029509,\ +-3,-0.0759167,-3.40407121212121,3.14753630766038,-0.679171381893151,-0.0424173771492764,-2.24193469724243,\ +-3,-0.0759167,-3.3765404040404,3.14753273797604,-0.679179410306182,-0.0424383464959344,-2.24195518217123,\ +-3,-0.0759167,-3.3490095959596,3.14752880052229,-0.679188265852509,-0.0424614762253132,-2.24197777757524,\ +-3,-0.0759167,-3.32147878787879,3.14752443537782,-0.679198083298374,-0.0424871183322635,-2.24200282731779,\ +-3,-0.0759167,-3.29394797979798,3.14751956885631,-0.679209028368302,-0.0425157056713359,-2.24203075425395,\ +-3,-0.0759167,-3.26641717171717,3.147514109313,-0.679221307176363,-0.0425477765901705,-2.24206208429488,\ +-3,-0.0759167,-3.23888636363636,3.14750794131871,-0.679235179328888,-0.0425840091524503,-2.24209747984013,\ +-3,-0.0759167,-3.21135555555555,3.14750091740882,-0.679250976481938,-0.0426252696079284,-2.24213778712803,\ +-3,-0.0759167,-3.18382474747475,3.1474928461407,-0.679269129200206,-0.042672682545034,-2.24218410476762,\ +-3,-0.0759167,-3.15629393939394,3.14748347437894,-0.679290206798995,-0.0427277349537642,-2.24223788539759,\ +-3,-0.0759167,-3.12876313131313,3.14747246026686,-0.679314978132429,-0.0427924349979487,-2.24230109079068,\ +-3,-0.0759167,-3.10123232323232,3.14745933062384,-0.679344507409294,-0.0428695622758599,-2.24237643633303,\ +-3,-0.0759167,-3.07370151515151,3.14744341118582,-0.679380311085917,-0.0429630776074313,-2.24246779134473,\ +-3,-0.0759167,-3.04617070707071,3.14742370709236,-0.679424626657228,-0.0430788250874622,-2.24258086491474,\ +-3,-0.0759167,-3.0186398989899,3.14739868663626,-0.679480899015434,-0.0432258024018738,-2.24272444687131,\ +-3,-0.0759167,-2.99110909090909,3.14736586267773,-0.679554721872473,-0.0434186197213397,-2.2429128098721,\ +-3,-0.0759167,-2.96357828282828,3.14732091004735,-0.679655822768088,-0.0436826843277638,-2.24317077425936,\ +-3,-0.0759167,-2.93604747474747,3.14725558285078,-0.67980274716441,-0.0440664349627192,-2.24354565977977,\ +-3,-0.0759167,-2.90851666666667,3.14715197002226,-0.680035778016486,-0.0446750863486621,-2.24414025056552,\ +-3,-0.0759167,-2.88098585858586,3.14696246489497,-0.680461985291387,-0.0457882936611637,-2.24522774141159,\ +-3,-0.0759167,-2.85345505050505,3.14650465711375,-0.681491619737958,-0.0484775874921648,-2.24785490922724,\ +-3,-0.0759167,-2.82592424242424,3.14382783199395,-0.687511944127009,-0.0642020237656691,-2.26321609156478,\ +-3,-0.0759167,-2.79839343434343,3.15026549706733,-0.673033287391753,-0.0263853380778489,-2.22627301811224,\ +-3,-0.0759167,-2.77086262626263,3.14859209417715,-0.67679686094685,-0.0362153852154101,-2.23587597899682,\ +-3,-0.0759167,-2.74333181818182,3.14821220382793,-0.677651254877051,-0.0384469697679545,-2.23805601118476,\ +-3,-0.0759167,-2.71580101010101,3.14804410624674,-0.67802931542359,-0.0394344230324916,-2.23902065305696,\ +-3,-0.0759167,-2.6882702020202,3.14794929566494,-0.678242549547015,-0.039991367503995,-2.23956473142199,\ +-3,-0.0759167,-2.66073939393939,3.14788842249823,-0.678379456589402,-0.0403489538937487,-2.23991405712365,\ +-3,-0.0759167,-2.63320858585858,3.14784603109089,-0.678474797155973,-0.0405979731436158,-2.2401573237207,\ +-3,-0.0759167,-2.60567777777778,3.14781481387515,-0.67854500636158,-0.0407813519963181,-2.24033646629499,\ +-3,-0.0759167,-2.57814696969697,3.14779086714783,-0.678598863845784,-0.0409220219209792,-2.24047388657032,\ +-3,-0.0759167,-2.55061616161616,3.14777191589007,-0.67864148624889,-0.0410333470287531,-2.24058263993034,\ +-3,-0.0759167,-2.52308535353535,3.14775654460421,-0.678676057101657,-0.0411236423577331,-2.24067084932549,\ +-3,-0.0759167,-2.49555454545454,3.14774382642694,-0.678704660969828,-0.0411983525682077,-2.24074383363765,\ +-3,-0.0759167,-2.46802373737374,3.14773312903228,-0.678728719988649,-0.0412611921236525,-2.2408052215216,\ +-3,-0.0759167,-2.44049292929293,3.14772400624529,-0.678749237629733,-0.0413147819834107,-2.24085757338929,\ +-3,-0.0759167,-2.41296212121212,3.14771613423646,-0.67876694220308,-0.0413610244144431,-2.24090274756294,\ +-3,-0.0759167,-2.38543131313131,3.14770927227679,-0.678782375121318,-0.0414013335279818,-2.24094212548608,\ +-3,-0.0759167,-2.3579005050505,3.14770323768835,-0.678795947236924,-0.0414367824262715,-2.24097675547095,\ +-3,-0.0759167,-2.3303696969697,3.14769788934073,-0.678807975959798,-0.0414682001496514,-2.24100744740604,\ +-3,-0.0759167,-2.30283888888889,3.14769311647479,-0.6788187103933,-0.0414962373291454,-2.241034836892,\ +-3,-0.0759167,-2.27530808080808,3.14768883094983,-0.678828348770599,-0.0415214117283717,-2.24105942973145,\ +-3,-0.0759167,-2.24777727272727,3.14768496175034,-0.678837050809398,-0.0415441405126847,-2.24108163345272,\ +-3,-0.0759167,-2.22024646464646,3.14768145101954,-0.678844946632746,-0.0415647635494263,-2.24110178007179,\ +-3,-0.0759167,-2.19271565656565,3.14767825114649,-0.678852143320199,-0.0415835605188109,-2.24112014280792,\ +-3,-0.0759167,-2.16518484848485,3.14767532259424,-0.67885872979252,-0.0416007636722611,-2.24113694854724,\ +-3,-0.0759167,-2.13765404040404,3.14767263225788,-0.678864780504394,-0.0416165674773537,-2.24115238726488,\ +-3,-0.0759167,-2.11012323232323,3.14767015220775,-0.678870358271214,-0.0416311360011178,-2.24116661923772,\ +-3,-0.0759167,-2.08259242424242,3.14766785871607,-0.678875516457974,-0.0416446086271359,-2.24117978062941,\ +-3,-0.0759167,-2.05506161616161,3.14766573149547,-0.678880300692069,-0.041657104529229,-2.24119198786069,\ +-3,-0.0759167,-2.02753080808081,3.14766375309724,-0.67888475021662,-0.0416687262061918,-2.24120334106254,\ +-3,-0.0759167,-2,3.1476619084316,-0.678888898969365,-0.0416795622997211,-2.2412139268289,\ +-3,-0.0751524,-4.72555,3.14758668716268,-0.679058075669244,-0.0421214335452386,-2.24164559030186,\ +-3,-0.0751524,-4.69801919191919,3.1475863583309,-0.67905881522968,-0.0421233651971246,-2.24164747733019,\ +-3,-0.0751524,-4.67048838383838,3.14758601973931,-0.67905957674046,-0.0421253541809356,-2.24164942036602,\ +-3,-0.0751524,-4.64295757575758,3.14758567094686,-0.679060361193547,-0.0421274030875604,-2.24165142194036,\ +-3,-0.0751524,-4.61542676767677,3.1475853114855,-0.679061169641576,-0.0421295146663882,-2.24165348473911,\ +-3,-0.0751524,-4.58789595959596,3.14758494085812,-0.679062003202591,-0.0421316918376179,-2.24165561161499,\ +-3,-0.0751524,-4.56036515151515,3.14758455853623,-0.679062863065185,-0.0421339377057326,-2.24165780560077,\ +-3,-0.0751524,-4.53283434343434,3.14758416395747,-0.679063750494168,-0.0421362555742684,-2.24166006992368,\ +-3,-0.0751524,-4.50530353535354,3.14758375652279,-0.679064666836761,-0.0421386489620291,-2.24166240802122,\ +-3,-0.0751524,-4.47777272727273,3.14758333559352,-0.679065613529433,-0.0421411216209094,-2.24166482355862,\ +-3,-0.0751524,-4.45024191919192,3.14758290048795,-0.679066592105401,-0.0421436775555229,-2.24166732044798,\ +-3,-0.0751524,-4.42271111111111,3.14758245047762,-0.679067604202937,-0.042146321044841,-2.24166990286942,\ +-3,-0.0751524,-4.3951803030303,3.14758198478336,-0.6790686515745,-0.0421490566661012,-2.24167257529445,\ +-3,-0.0751524,-4.36764949494949,3.14758150257069,-0.679069736096871,-0.0421518893212544,-2.24167534251176,\ +-3,-0.0751524,-4.34011868686869,3.14758100294486,-0.679070859782377,-0.0421548242662798,-2.24167820965592,\ +-3,-0.0751524,-4.31258787878788,3.14758048494531,-0.679072024791349,-0.0421578671437337,-2.24168118223914,\ +-3,-0.0751524,-4.28505707070707,3.14757994753953,-0.679073233445991,-0.0421610240189549,-2.24168426618663,\ +-3,-0.0751524,-4.25752626262626,3.14757938961616,-0.679074488245821,-0.0421643014204195,-2.24168746787607,\ +-3,-0.0751524,-4.22999545454545,3.14757880997731,-0.679075791884933,-0.0421677063848057,-2.24169079418157,\ +-3,-0.0751524,-4.20246464646465,3.14757820733,-0.6790771472713,-0.0421712465074263,-2.24169425252297,\ +-3,-0.0751524,-4.17493383838384,3.14757758027654,-0.679078557548431,-0.0421749299987874,-2.24169785092113,\ +-3,-0.0751524,-4.14740303030303,3.14757692730367,-0.679080026119713,-0.0421787657481615,-2.24170159805995,\ +-3,-0.0751524,-4.11987222222222,3.1475762467704,-0.679081556675823,-0.0421827633952109,-2.2417055033564,\ +-3,-0.0751524,-4.09234141414141,3.14757553689423,-0.679083153225711,-0.0421869334108741,-2.24170957703954,\ +-3,-0.0751524,-4.06481060606061,3.14757479573554,-0.679084820131657,-0.0421912871889471,-2.24171383023995,\ +-3,-0.0751524,-4.0372797979798,3.14757402117994,-0.679086562149069,-0.0421958371500442,-2.24171827509132,\ +-3,-0.0751524,-4.00974898989899,3.14757321091808,-0.679088384471792,-0.042200596859936,-2.24172292484602,\ +-3,-0.0751524,-3.98221818181818,3.14757236242267,-0.679090292783841,-0.0422055811646402,-2.24172779400712,\ +-3,-0.0751524,-3.95468737373737,3.14757147292215,-0.6790922933186,-0.042210806345097,-2.24173289847944,\ +-3,-0.0751524,-3.92715656565657,3.14757053937043,-0.67909439292686,-0.042216290294825,-2.24173825574315,\ +-3,-0.0751524,-3.89962575757576,3.14756955841209,-0.679096599155191,-0.0422220527246425,-2.2417438850537,\ +-3,-0.0751524,-3.87209494949495,3.14756852634202,-0.679098920336565,-0.0422281153993872,-2.24174980767316,\ +-3,-0.0751524,-3.84456414141414,3.14756743905869,-0.679101365695554,-0.0422345024126297,-2.2417560471385,\ +-3,-0.0751524,-3.81703333333333,3.14756629200966,-0.679103945470836,-0.0422412405066878,-2.24176262957424,\ +-3,-0.0751524,-3.78950252525252,3.14756508012787,-0.679106671058491,-0.042248359446903,-2.24176958405813,\ +-3,-0.0751524,-3.76197171717172,3.14756379775681,-0.679109555180318,-0.0422558924612261,-2.24177694305049,\ +-3,-0.0751524,-3.73444090909091,3.14756243856225,-0.679112612082366,-0.0422638767588089,-2.24178474290093,\ +-3,-0.0751524,-3.7069101010101,3.14756099542756,-0.679115857770285,-0.0422723541446723,-2.24179302444869,\ +-3,-0.0751524,-3.67937929292929,3.14755946032912,-0.679119310289645,-0.0422813717518869,-2.24180183373801,\ +-3,-0.0751524,-3.65184848484848,3.14755782418705,-0.67912299006161,-0.0422909829183333,-2.24181122287463,\ +-3,-0.0751524,-3.62431767676768,3.14755607668545,-0.679126920287169,-0.0423012482424852,-2.24182125105709,\ +-3,-0.0751524,-3.59678686868687,3.14755420605471,-0.679131127436801,-0.0423122368623648,-2.24183198582625,\ +-3,-0.0751524,-3.56925606060606,3.14755219880611,-0.679135641847419,-0.0423240280147164,-2.24184350458839,\ +-3,-0.0751524,-3.54172525252525,3.14755003940596,-0.679140498455081,-0.0423367129487401,-2.24185589648474,\ +-3,-0.0751524,-3.51419444444444,3.14754770987289,-0.679145737700864,-0.0423503972921595,-2.24186926470289,\ +-3,-0.0751524,-3.48666363636364,3.14754518927594,-0.679151406659647,-0.0423652039994686,-2.24188372935694,\ +-3,-0.0751524,-3.45913282828283,3.14754245310389,-0.679157560458509,-0.0423812770566314,-2.24189943110659,\ +-3,-0.0751524,-3.43160202020202,3.14753947246553,-0.679164264075305,-0.0423987861787802,-2.24191653574635,\ +-3,-0.0751524,-3.40407121212121,3.14753621306562,-0.679171594641883,-0.0424179328259606,-2.24193524008229,\ +-3,-0.0751524,-3.3765404040404,3.14753263387938,-0.679179644425212,-0.0424389579895249,-2.24195577953856,\ +-3,-0.0751524,-3.3490095959596,3.14752868541669,-0.679188524731242,-0.0424621523885716,-2.24197843811829,\ +-3,-0.0751524,-3.32147878787879,3.14752430741984,-0.679198371082793,-0.0424878699940468,-2.24200356161526,\ +-3,-0.0751524,-3.29394797979798,3.14751942576675,-0.679209350184482,-0.04251654622039,-2.24203157538528,\ +-3,-0.0751524,-3.26641717171717,3.14751394824002,-0.679221669438162,-0.0425487227788132,-2.24206300862539,\ +-3,-0.0751524,-3.23888636363636,3.14750775864617,-0.679235590169309,-0.0425850822231982,-2.24209852812162,\ +-3,-0.0751524,-3.21135555555555,3.14750070848173,-0.679251446370207,-0.042626496905274,-2.24213898607328,\ +-3,-0.0751524,-3.18382474747475,3.14749260486375,-0.679269671845099,-0.042674099874811,-2.24218548935532,\ +-3,-0.0751524,-3.15629393939394,3.14748319261285,-0.679290840506142,-0.0427293901283011,-2.24223950233554,\ +-3,-0.0751524,-3.12876313131313,3.14747212689402,-0.679315727905963,-0.0427943933253422,-2.24230300387829,\ +-3,-0.0751524,-3.10123232323232,3.14745893005,-0.679345408321524,-0.0428719153611862,-2.24237873505918,\ +-3,-0.0751524,-3.07370151515151,3.14744292083724,-0.679381413906373,-0.0429659580552066,-2.24247060525059,\ +-3,-0.0751524,-3.04617070707071,3.14742309302481,-0.679426007728322,-0.0430824322958156,-2.24258438879212,\ +-3,-0.0751524,-3.0186398989899,3.14739789535805,-0.679482678642912,-0.0432304505963965,-2.24272898768679,\ +-3,-0.0751524,-2.99110909090909,3.14736480474926,-0.679557101210789,-0.0434248342957255,-2.24291888088212,\ +-3,-0.0751524,-2.96357828282828,3.14731942390229,-0.679659165188668,-0.0436914143688648,-2.24317930262569,\ +-3,-0.0751524,-2.93604747474747,3.1472533441768,-0.679807782063183,-0.0440795855738521,-2.24355850659551,\ +-3,-0.0751524,-2.90851666666667,3.14714822016795,-0.680044211641527,-0.0446971140652737,-2.24416176941463,\ +-3,-0.0751524,-2.88098585858586,3.14695493669599,-0.680478916617824,-0.0458325164548807,-2.24527094260404,\ +-3,-0.0751524,-2.85345505050505,3.14648251539375,-0.681541417663074,-0.0486076542874813,-2.24798197131864,\ +-3,-0.0751524,-2.82592424242424,3.14355506765043,-0.68812540587977,-0.0658043195248545,-2.26478137230919,\ +-3,-0.0751524,-2.79839343434343,3.15014561558479,-0.67330290732612,-0.0270895561900378,-2.22696096791461,\ +-3,-0.0751524,-2.77086262626263,3.14857519938011,-0.676834858258639,-0.0363146300848122,-2.23597293118694,\ +-3,-0.0751524,-2.74333181818182,3.14820580222654,-0.677665652424596,-0.0384845746052066,-2.23809274730374,\ +-3,-0.0751524,-2.71580101010101,3.14804076628751,-0.678036827172453,-0.0394540429082115,-2.23903981968929,\ +-3,-0.0751524,-2.6882702020202,3.1479472497197,-0.678247150988454,-0.04000338597144,-2.23957647224797,\ +-3,-0.0751524,-2.66073939393939,3.14788704187632,-0.67838256168271,-0.0403570640616874,-2.23992197993668,\ +-3,-0.0751524,-2.63320858585858,3.14784503707855,-0.67847703274344,-0.0406038122563254,-2.24016302794269,\ +-3,-0.0751524,-2.60567777777778,3.14781406419886,-0.678546692424094,-0.0407857558092812,-2.24034076837442,\ +-3,-0.0751524,-2.57814696969697,3.14779028165649,-0.678600180647438,-0.0409254612645016,-2.24047724646075,\ +-3,-0.0751524,-2.55061616161616,3.14777144600903,-0.678642543036752,-0.0410361072443743,-2.24058533638157,\ +-3,-0.0751524,-2.52308535353535,3.14775615918865,-0.678676923922075,-0.0411259063989266,-2.24067306106453,\ +-3,-0.0751524,-2.49555454545454,3.14774350459158,-0.67870538479495,-0.0412002431211529,-2.24074568051648,\ +-3,-0.0751524,-2.46802373737374,3.14773285625009,-0.678729333490568,-0.0412627945243203,-2.24080678690484,\ +-3,-0.0751524,-2.44049292929293,3.14772377209989,-0.678749764235369,-0.0413161574203879,-2.24085891705197,\ +-3,-0.0751524,-2.41296212121212,3.14771593106479,-0.678767399147158,-0.0413622179029657,-2.24090391348041,\ +-3,-0.0751524,-2.38543131313131,3.14770909431596,-0.678782775364849,-0.0414023789208015,-2.24094314672903,\ +-3,-0.0751524,-2.3579005050505,3.14770308052125,-0.678796300714219,-0.0414377056707413,-2.24097765738733,\ +-3,-0.0751524,-2.3303696969697,3.14769774952496,-0.678808290413038,-0.0414690214675052,-2.24100824975044,\ +-3,-0.0751524,-2.30283888888889,3.14769299128788,-0.678818991945437,-0.0414969727128841,-2.24103555528746,\ +-3,-0.0751524,-2.27530808080808,3.14768871821044,-0.67882860232757,-0.041522073991754,-2.24106007669573,\ +-3,-0.0751524,-2.24777727272727,3.14768485969023,-0.678837280348108,-0.0415447400429778,-2.24108221913312,\ +-3,-0.0751524,-2.22024646464646,3.14768135819016,-0.678845155411027,-0.0415653088557188,-2.24110231278084,\ +-3,-0.0751524,-2.19271565656565,3.14767816634993,-0.678852334032262,-0.0415840586380974,-2.24112062942004,\ +-3,-0.0751524,-2.16518484848485,3.1476752448312,-0.678858904685781,-0.0416012204745443,-2.24113739479683,\ +-3,-0.0751524,-2.13765404040404,3.14767256068824,-0.678864941468386,-0.0416169878978968,-2.24115279797318,\ +-3,-0.0751524,-2.11012323232323,3.14767008612002,-0.678870506906097,-0.0416315242193589,-2.24116699848764,\ +-3,-0.0751524,-2.08259242424242,3.14766779750371,-0.678875654127874,-0.041644968206029,-2.24118013190159,\ +-3,-0.0751524,-2.05506161616161,3.14766567463825,-0.67888042856705,-0.0416574385248564,-2.24119231414061,\ +-3,-0.0751524,-2.02753080808081,3.14766370014637,-0.67888486930601,-0.0416690372547957,-2.24120364492553,\ +-3,-0.0751524,-2,3.14766185899791,-0.678889010148425,-0.0416798526873998,-2.24121421050826,\ +-2,-0.274457,-4.72555,3.14757045921347,-0.679094573204212,-0.0422167611597758,-2.24173871573053,\ +-2,-0.274457,-4.69801919191919,3.14756947412857,-0.679096788713401,-0.0422225478301918,-2.24174436872171,\ +-2,-0.274457,-4.67048838383838,3.14756843760487,-0.67909911991121,-0.0422286366667761,-2.24175031689863,\ +-2,-0.274457,-4.64295757575758,3.14756734550537,-0.679101576102045,-0.0422350519716257,-2.241756584002,\ +-2,-0.274457,-4.61542676767677,3.14756619323715,-0.679104167615551,-0.0422418207246624,-2.24176319638846,\ +-2,-0.274457,-4.58789595959596,3.14756497568692,-0.679106905951835,-0.0422489729629158,-2.24177018340116,\ +-2,-0.274457,-4.56036515151515,3.14756368714508,-0.679109803952071,-0.0422565422261477,-2.24177757780505,\ +-2,-0.274457,-4.53283434343434,3.14756232121624,-0.679112875999861,-0.0422645660827703,-2.24178541630065,\ +-2,-0.274457,-4.50530353535354,3.14756087071303,-0.679116138259991,-0.0422730867534513,-2.24179374013329,\ +-2,-0.274457,-4.47777272727273,3.1475593275296,-0.679119608962948,-0.0422821518542547,-2.24180259581906,\ +-2,-0.274457,-4.45024191919192,3.14755768249007,-0.679123308745788,-0.0422918152869362,-2.24181203601449,\ +-2,-0.274457,-4.42271111111111,3.14755592516592,-0.679127261062785,-0.0423021383115403,-2.24182212056444,\ +-2,-0.274457,-4.3951803030303,3.14755404365472,-0.679131492683173,-0.0423131908463925,-2.24183291777206,\ +-2,-0.274457,-4.36764949494949,3.14755202431015,-0.679136034298229,-0.0423250530537945,-2.24184450594779,\ +-2,-0.274457,-4.34011868686869,3.14754985141056,-0.679140921266888,-0.0423378172874562,-2.24185697531187,\ +-2,-0.274457,-4.31258787878788,3.1475475067487,-0.679146194538149,-0.0423515905017438,-2.24187043034786,\ +-2,-0.274457,-4.28505707070707,3.14754496912045,-0.679151901801246,-0.0423664972557787,-2.24188499273743,\ +-2,-0.274457,-4.25752626262626,3.1475422136817,-0.679158098931968,-0.0423826834910781,-2.24190080505067,\ +-2,-0.274457,-4.22999545454545,3.14753921113219,-0.679164851828109,-0.0424003213255474,-2.24191803542933,\ +-2,-0.274457,-4.20246464646465,3.14753592666964,-0.679172238761908,-0.0424196151978115,-2.24193688358928,\ +-2,-0.274457,-4.17493383838384,3.1475323186346,-0.679180353427755,-0.0424408098274961,-2.24195758859679,\ +-2,-0.274457,-4.14740303030303,3.14752833673406,-0.679189308937321,-0.0424642006500449,-2.24198043906239,\ +-2,-0.274457,-4.11987222222222,3.14752391968275,-0.679199243124452,-0.0424901476725569,-2.24200578667657,\ +-2,-0.274457,-4.09234141414141,3.14751899202648,-0.679210325689792,-0.0425190941347715,-2.24203406443968,\ +-2,-0.274457,-4.06481060606061,3.14751345979602,-0.679222767975136,-0.0425515920385997,-2.24206581160173,\ +-2,-0.274457,-4.0372797979798,3.14750720445708,-0.679236836570538,-0.0425883376884234,-2.24210170838156,\ +-2,-0.274457,-4.00974898989899,3.14750007432181,-0.679252872630187,-0.0426302221421081,-2.24214262525255,\ +-2,-0.274457,-3.98221818181818,3.1474918720862,-0.679271319901431,-0.0426784044197366,-2.24218969445994,\ +-2,-0.274457,-3.95468737373737,3.14748233628887,-0.679292766425082,-0.0427344204203056,-2.24224441642158,\ +-2,-0.274457,-3.92715656565657,3.14747111292592,-0.679318008375023,-0.0428003496639152,-2.24230882261807,\ +-2,-0.274457,-3.89962575757576,3.14745771053285,-0.67934815108148,-0.0428790791535834,-2.2423857333591,\ +-2,-0.274457,-3.87209494949495,3.14744142629092,-0.679384775221822,-0.0429747374476748,-2.24247918182823,\ +-2,-0.274457,-3.84456414141414,3.14742121872438,-0.679430223131292,-0.0430934424725219,-2.24259514462012,\ +-2,-0.274457,-3.81703333333333,3.14739547578326,-0.679488120397392,-0.0432446638706381,-2.24274287261681,\ +-2,-0.274457,-3.78950252525252,3.14736156209625,-0.679564394112672,-0.0434438825667987,-2.24293748911457,\ +-2,-0.274457,-3.76197171717172,3.14731485380013,-0.679669443595426,-0.0437182604558221,-2.24320552853482,\ +-2,-0.274457,-3.73444090909091,3.14724642700991,-0.679823339145417,-0.0441202189903259,-2.24359820132979,\ +-2,-0.274457,-3.7069101010101,3.14713654509384,-0.680070469514314,-0.0447656967894922,-2.24422876779305,\ +-2,-0.274457,-3.67937929292929,3.1469311654324,-0.680532379474567,-0.0459721556552873,-2.24540735596613,\ +-2,-0.274457,-3.65184848484848,3.14641011968531,-0.681704239524688,-0.0490329273826492,-2.24839742007907,\ +-2,-0.274457,-3.62431767676768,3.14242980645901,-0.690656179124771,-0.0724144255659966,-2.27123877672117,\ +-2,-0.274457,-3.59678686868687,3.1498421002966,-0.673985529615661,-0.0288724917923623,-2.22870271549825,\ +-2,-0.274457,-3.56925606060606,3.14852765076473,-0.676941797664825,-0.0365939442494709,-2.23624579284876,\ +-2,-0.274457,-3.54172525252525,3.14818731719388,-0.677707226262283,-0.0385931609734984,-2.23819882519254,\ +-2,-0.274457,-3.51419444444444,3.14803100970182,-0.678058770261053,-0.0395113558827371,-2.23909580866317,\ +-2,-0.274457,-3.48666363636364,3.14794123367819,-0.678260681390996,-0.0400387259197198,-2.23961099579972,\ +-2,-0.274457,-3.45913282828283,3.1478829649027,-0.678391731016753,-0.040381013370643,-2.23994537598696,\ +-2,-0.274457,-3.43160202020202,3.14784209302761,-0.67848365407317,-0.0406211064535566,-2.24017992262255,\ +-2,-0.274457,-3.40407121212121,3.14781183894251,-0.678551697145922,-0.0407988276014904,-2.24035353819205,\ +-2,-0.274457,-3.3765404040404,3.14778854081596,-0.678604095891908,-0.0409356874596673,-2.24048723641815,\ +-2,-0.274457,-3.3490095959596,3.14777004704411,-0.678645689384446,-0.041044325164304,-2.24059336445738,\ +-2,-0.274457,-3.32147878787879,3.14775501045474,-0.678679507486753,-0.0411326543904801,-2.24067965316913,\ +-2,-0.274457,-3.29394797979798,3.14774254449634,-0.678707544101024,-0.0412058829951089,-2.24075119010237,\ +-2,-0.274457,-3.26641717171717,3.14773204187367,-0.678731165067127,-0.0412675784042287,-2.2408114602712,\ +-2,-0.274457,-3.23888636363636,3.14772307262008,-0.678751337403288,-0.0413202663648715,-2.24086293107475,\ +-2,-0.274457,-3.21135555555555,3.14771532377657,-0.678768764971213,-0.0413657852876924,-2.24090739845413,\ +-2,-0.274457,-3.18382474747475,3.14770856212525,-0.678783972290543,-0.0414055051612813,-2.24094620074949,\ +-2,-0.274457,-3.15629393939394,3.14770261031294,-0.678797358238098,-0.0414404678087588,-2.24098035571655,\ +-2,-0.274457,-3.12876313131313,3.14769733106918,-0.678809231542703,-0.0414714795964132,-2.24101065109352,\ +-2,-0.274457,-3.10123232323232,3.14769261648805,-0.678819834890514,-0.0414991743942686,-2.24103770610729,\ +-2,-0.274457,-3.07370151515151,3.14768838057488,-0.67882936168821,-0.0415240573596331,-2.24106201424536,\ +-2,-0.274457,-3.04617070707071,3.14768455395333,-0.678837967966938,-0.0415465360289986,-2.24108397362964,\ +-2,-0.274457,-3.0186398989899,3.14768108003603,-0.678845780994695,-0.0415669428126083,-2.2411039089913,\ +-2,-0.274457,-2.99110909090909,3.14767791220756,-0.678852905612166,-0.0415855515429971,-2.24112208783699,\ +-2,-0.274457,-2.96357828282828,3.14767501172045,-0.678859428964479,-0.0416025898338079,-2.24113873252219,\ +-2,-0.274457,-2.93604747474747,3.14767234610244,-0.678865424083475,-0.0416182484363144,-2.24115402939161,\ +-2,-0.274457,-2.90851666666667,3.14766988793558,-0.678870952633615,-0.0416326884114366,-2.24116813578544,\ +-2,-0.274457,-2.88098585858586,3.14766761390966,-0.678876067040821,-0.0416460466899914,-2.24118118547123,\ +-2,-0.274457,-2.85345505050505,3.14766550408074,-0.678880812160134,-0.0416584404285024,-2.24119329289904,\ +-2,-0.274457,-2.82592424242424,3.14766354128459,-0.678885226594749,-0.0416699704543497,-2.24120455656703,\ +-2,-0.274457,-2.79839343434343,3.14766171066881,-0.678889343748566,-0.0416807240148973,-2.24121506170702,\ +-2,-0.274457,-2.77086262626263,3.14765999931625,-0.678893192673007,-0.0416907769893137,-2.24122488244528,\ +-2,-0.274457,-2.74333181818182,3.1476583959397,-0.678896798753548,-0.0417001956817323,-2.24123408355426,\ +-2,-0.274457,-2.71580101010101,3.14765689063272,-0.678900184270299,-0.0417090382853798,-2.24124272188282,\ +-2,-0.274457,-2.6882702020202,3.14765547466478,-0.678903368858742,-0.0417173560860198,-2.24125084753196,\ +-2,-0.274457,-2.66073939393939,3.14765414031175,-0.67890636989083,-0.0417251944573,-2.24125850482717,\ +-2,-0.274457,-2.63320858585858,3.147652880715,-0.678909202791999,-0.0417325936888085,-2.24126573312728,\ +-2,-0.274457,-2.60567777777778,3.14765168976345,-0.678911881306393,-0.0417395896787479,-2.24127256750119,\ +-2,-0.274457,-2.57814696969697,3.14765056199446,-0.67891441771983,-0.041746214516368,-2.24127903929687,\ +-2,-0.274457,-2.55061616161616,3.14764949250998,-0.678916823048253,-0.0417524969740931,-2.24128517662204,\ +-2,-0.274457,-2.52308535353535,3.14764847690549,-0.67891910719763,-0.0417584629252711,-2.24129100475236,\ +-2,-0.274457,-2.49555454545454,3.14764751120939,-0.678921279100363,-0.0417641357003377,-2.24129654647931,\ +-2,-0.274457,-2.46802373737374,3.14764659183103,-0.678923346831985,-0.0417695363917299,-2.24130182240804,\ +-2,-0.274457,-2.44049292929293,3.14764571551615,-0.678925317711523,-0.0417746841159543,-2.24130685121347,\ +-2,-0.274457,-2.41296212121212,3.14764487930837,-0.678927198388053,-0.0417795962396736,-2.24131164986106,\ +-2,-0.274457,-2.38543131313131,3.14764408051583,-0.678928994915632,-0.0417842885754433,-2.24131623379806,\ +-2,-0.274457,-2.3579005050505,3.14764331668235,-0.67893071281842,-0.0417887755517493,-2.24132061711966,\ +-2,-0.274457,-2.3303696969697,3.1476425855621,-0.678932357147387,-0.0417930703612009,-2.2413248127137,\ +-2,-0.274457,-2.30283888888889,3.14764188509758,-0.678933932529943,-0.0417971850900796,-2.24132883238725,\ +-2,-0.274457,-2.27530808080808,3.14764121340031,-0.678935443213412,-0.0418011308319279,-2.24133268697758,\ +-2,-0.274457,-2.24777727272727,3.1476405687338,-0.678936893103262,-0.0418049177874263,-2.24133638644971,\ +-2,-0.274457,-2.22024646464646,3.14763994949854,-0.678938285796839,-0.0418085553524479,-2.24133993998248,\ +-2,-0.274457,-2.19271565656565,3.14763935421879,-0.678939624613158,-0.0418120521958945,-2.24134335604452,\ +-2,-0.274457,-2.16518484848485,3.14763878153084,-0.678940912619307,-0.0418154163286716,-2.24134664246167,\ +-2,-0.274457,-2.13765404040404,3.14763823017255,-0.678942152653908,-0.041818655164955,-2.24134980647683,\ +-2,-0.274457,-2.11012323232323,3.14763769897406,-0.678943347348003,-0.0418217755767381,-2.24135285480324,\ +-2,-0.274457,-2.08259242424242,3.14763718684957,-0.678944499143683,-0.0418247839425033,-2.24135579367203,\ +-2,-0.274457,-2.05506161616161,3.14763669278982,-0.678945610310758,-0.0418276861907413,-2.24135862887474,\ +-2,-0.274457,-2.02753080808081,3.14763621585557,-0.678946682961677,-0.0418304878389474,-2.24136136580141,\ +-2,-0.274457,-2,3.14763575517155,-0.678947719064941,-0.041833194028629,-2.24136400947476,\ +-2,-0.271559,-4.72555,3.14757035782775,-0.679094801226162,-0.0422173567284477,-2.24173929754084,\ +-2,-0.271559,-4.69801919191919,3.1475693675107,-0.679097028502756,-0.0422231741340577,-2.24174498055717,\ +-2,-0.271559,-4.67048838383838,3.14756832533912,-0.679099372402956,-0.042229296147914,-2.24175096114493,\ +-2,-0.271559,-4.64295757575758,3.14756722713077,-0.679101842332907,-0.0422357473378513,-2.24175726330441,\ +-2,-0.271559,-4.61542676767677,3.14756606824118,-0.679104448738224,-0.0422425549866832,-2.24176391368813,\ +-2,-0.271559,-4.58789595959596,3.14756484349808,-0.679107203251654,-0.0422497494778968,-2.24177094197769,\ +-2,-0.271559,-4.56036515151515,3.14756354712417,-0.67911011886667,-0.0422573647490215,-2.24177838132662,\ +-2,-0.271559,-4.53283434343434,3.14756217264599,-0.679113210142399,-0.0422654388269399,-2.24178626888335,\ +-2,-0.271559,-4.50530353535354,3.14756071278584,-0.679116493446791,-0.0422740144629609,-2.24179464641157,\ +-2,-0.271559,-4.47777272727273,3.14755915933286,-0.679119987246518,-0.0422831398900355,-2.24180356102998,\ +-2,-0.271559,-4.45024191919192,3.1475575029885,-0.679123712454498,-0.0422928697304363,-2.24181306609903,\ +-2,-0.271559,-4.42271111111111,3.1475557331803,-0.67912769284882,-0.0423032660899673,-2.24182322228979,\ +-2,-0.271559,-4.3951803030303,3.14755383783589,-0.679131955580833,-0.0423143998850228,-2.24183409888041,\ +-2,-0.271559,-4.36764949494949,3.14755180310735,-0.67913653179533,-0.0423263524624182,-2.24184577533847,\ +-2,-0.271559,-4.34011868686869,3.14754961303218,-0.679141457392752,-0.0423392175902358,-2.24185834326592,\ +-2,-0.271559,-4.31258787878788,3.14754724911382,-0.679146773972937,-0.0423531039227529,-2.24187190880697,\ +-2,-0.271559,-4.28505707070707,3.14754468979786,-0.679152530012872,-0.0423681380766138,-2.24188659565328,\ +-2,-0.271559,-4.25752626262626,3.147541909813,-0.679158782349093,-0.0423844685027002,-2.24190254882631,\ +-2,-0.271559,-4.22999545454545,3.14753887933372,-0.679165598060801,-0.0424022704046412,-2.24191993948229,\ +-2,-0.271559,-4.20246464646465,3.14753556290598,-0.679173056886056,-0.042421752049621,-2.24193897107716,\ +-2,-0.271559,-4.17493383838384,3.14753191805373,-0.679181254355774,-0.0424431629540541,-2.2419598873632,\ +-2,-0.271559,-4.14740303030303,3.14752789344992,-0.679190305907301,-0.042466804627821,-2.24198298288506,\ +-2,-0.271559,-4.11987222222222,3.14752342648431,-0.679200352354441,-0.0424930448613413,-2.24200861693671,\ +-2,-0.271559,-4.09234141414141,3.14751843998272,-0.679211567266043,-0.0425223369976737,-2.24203723238845,\ +-2,-0.271559,-4.06481060606061,3.14751283771095,-0.679224167078086,-0.0425552463442022,-2.24206938148834,\ +-2,-0.271559,-4.0372797979798,3.14750649810326,-0.679238425198451,-0.0425924870127428,-2.24210576185136,\ +-2,-0.271559,-4.00974898989899,3.14749926534039,-0.679254692073122,-0.0426349743302992,-2.24214726765931,\ +-2,-0.271559,-3.98221818181818,3.1474909363707,-0.679273424376157,-0.0426839010801428,-2.24219506414068,\ +-2,-0.271559,-3.95468737373737,3.14748124154636,-0.679295228560149,-0.0427408512508547,-2.24225069869198,\ +-2,-0.271559,-3.92715656565657,3.14746981488216,-0.679320927745622,-0.0428079747442261,-2.2423162715496,\ +-2,-0.271559,-3.89962575757576,3.1474561468127,-0.679351667972647,-0.0428882648930011,-2.24239470689658,\ +-2,-0.271559,-3.87209494949495,3.14743950612567,-0.679389093777282,-0.0429860170475297,-2.24249020085538,\ +-2,-0.271559,-3.84456414141414,3.14741880474495,-0.67943565230154,-0.0431076228781106,-2.24260899744079,\ +-2,-0.271559,-3.81703333333333,3.14739234977017,-0.679495150969808,-0.0432630269655102,-2.24276081150146,\ +-2,-0.271559,-3.78950252525252,3.14735735539904,-0.679573855202084,-0.0434685939092289,-2.24296162959441,\ +-2,-0.271559,-3.76197171717172,3.14730889124744,-0.679682853698751,-0.0437532861955526,-2.24323974513663,\ +-2,-0.271559,-3.73444090909091,3.14723732683134,-0.679843805938936,-0.0441736760417327,-2.24365042345715,\ +-2,-0.271559,-3.7069101010101,3.14712097842886,-0.680105479785264,-0.044857139831251,-2.24431809838739,\ +-2,-0.271559,-3.67937929292929,3.14689866524037,-0.680605474163248,-0.0461630710777479,-2.24559386100608,\ +-2,-0.271559,-3.65184848484848,3.14630458539574,-0.681941591846551,-0.0496528659803624,-2.24900303732804,\ +-2,-0.271559,-3.62431767676768,3.13964792187223,-0.696912787934022,-0.088756011193542,-2.28720285149899,\ +-2,-0.271559,-3.59678686868687,3.1495497603253,-0.674643018013426,-0.0305897803873084,-2.23038033260161,\ +-2,-0.271559,-3.56925606060606,3.1484740579343,-0.677062330837436,-0.0369087638620173,-2.23655333973869,\ +-2,-0.271559,-3.54172525252525,3.14816561348799,-0.67775603906999,-0.0387206547486702,-2.23832337370374,\ +-2,-0.271559,-3.51419444444444,3.14801933676993,-0.678085023315861,-0.0395799260229212,-2.23916279474826,\ +-2,-0.271559,-3.48666363636364,3.14793395771301,-0.678277045429971,-0.0400814670199363,-2.23965274952763,\ +-2,-0.271559,-3.45913282828283,3.1478779993308,-0.678402898856361,-0.0404101825600241,-2.23997387133197,\ +-2,-0.271559,-3.43160202020202,3.14783848957807,-0.678491758425956,-0.0406422741466389,-2.24020060131573,\ +-2,-0.271559,-3.40407121212121,3.14780910531575,-0.678557845220262,-0.0408148857068215,-2.24036922533528,\ +-2,-0.271559,-3.3765404040404,3.14778639624734,-0.678608919142652,-0.0409482852690293,-2.24049954320253,\ +-2,-0.271559,-3.3490095959596,3.1477683197835,-0.678649574086931,-0.0410544715871105,-2.24060327648526,\ +-2,-0.271559,-3.32147878787879,3.14775358956817,-0.678682703137459,-0.0411410010845543,-2.24068780704423,\ +-2,-0.271559,-3.29394797979798,3.14774135514975,-0.678710219005826,-0.0412128695571904,-2.24075801526622,\ +-2,-0.271559,-3.26641717171717,3.14773103175937,-0.678733436868795,-0.0412735121045162,-2.24081725689567,\ +-2,-0.271559,-3.23888636363636,3.14772220407709,-0.67875329080343,-0.0413253684348031,-2.24086791528056,\ +-2,-0.271559,-3.21135555555555,3.14771456900109,-0.678770462502043,-0.0413702190546567,-2.24091172979559,\ +-2,-0.271559,-3.18382474747475,3.14770790014473,-0.678785461120491,-0.0414093938241048,-2.24094999957938,\ +-2,-0.271559,-3.15629393939394,3.14770202501003,-0.678798674616021,-0.041443906045539,-2.2409837145258,\ +-2,-0.271559,-3.12876313131313,3.14769680985385,-0.678810403784156,-0.0414745413643317,-2.24101364213082,\ +-2,-0.271559,-3.10123232323232,3.14769214938299,-0.678820885435045,-0.0415019183029804,-2.24104038662831,\ +-2,-0.271559,-3.07370151515151,3.14768795957126,-0.678830308548107,-0.041526530455291,-2.24106443020944,\ +-2,-0.271559,-3.04617070707071,3.14768417254824,-0.678838825767582,-0.0415487765115158,-2.24108616235424,\ +-2,-0.271559,-3.0186398989899,3.14768073289451,-0.678846561734753,-0.0415689820212107,-2.24110590109166,\ +-2,-0.271559,-2.99110909090909,3.14767759491163,-0.678853619227868,-0.0415874154300378,-2.24112390866593,\ +-2,-0.271559,-2.96357828282828,3.14767472058028,-0.678860083754431,-0.0416043000743548,-2.24114040325407,\ +-2,-0.271559,-2.93604747474747,3.14767207801231,-0.67886602703265,-0.0416198232743617,-2.24115556784895,\ +-2,-0.271559,-2.90851666666667,3.14766964026267,-0.678871509663358,-0.0416341433128882,-2.24116955707686,\ +-2,-0.271559,-2.88098585858586,3.14766738440739,-0.678876583203848,-0.0416473948520027,-2.24118250248903,\ +-2,-0.271559,-2.85345505050505,3.14766529082038,-0.678881291794168,-0.0416596931807353,-2.24119451671115,\ +-2,-0.271559,-2.82592424242424,3.1476633426011,-0.678885673444656,-0.0416711375779851,-2.24120569672866,\ +-2,-0.271559,-2.79839343434343,3.14766152511715,-0.678889761064282,-0.0416818139984203,-2.24121612651057,\ +-2,-0.271559,-2.77086262626263,3.14765982563626,-0.678893583288684,-0.0416917972352214,-2.24122587912224,\ +-2,-0.271559,-2.74333181818182,3.14765823302746,-0.678897165151977,-0.0417011526748096,-2.24123501843961,\ +-2,-0.271559,-2.71580101010101,3.14765673751705,-0.678900528635723,-0.0417099377306296,-2.24124360054977,\ +-2,-0.271559,-2.6882702020202,3.14765533048785,-0.678903693120417,-0.0417182030224426,-2.24125167490311,\ +-2,-0.271559,-2.66073939393939,3.14765400431309,-0.678906675759168,-0.041725993352318,-2.24125928526673,\ +-2,-0.271559,-2.63320858585858,3.14765275221797,-0.678909491788752,-0.0417333485170703,-2.24126647051807,\ +-2,-0.271559,-2.60567777777778,3.14765156816409,-0.678912154789953,-0.0417403039882434,-2.24127326530925,\ +-2,-0.271559,-2.57814696969697,3.14765044675189,-0.678914676906599,-0.0417468914841795,-2.24127970062588,\ +-2,-0.271559,-2.55061616161616,3.14764938313847,-0.678917069030693,-0.0417531394536261,-2.2412858042595,\ +-2,-0.271559,-2.52308535353535,3.14764837296756,-0.678919340959676,-0.0417590734864489,-2.24129160120883,\ +-2,-0.271559,-2.49555454545454,3.14764741230995,-0.678921501530557,-0.0417647166639507,-2.24129711402194,\ +-2,-0.271559,-2.46802373737374,3.14764649761241,-0.678923558734776,-0.0417700898589089,-2.24130236308945,\ +-2,-0.271559,-2.44049292929293,3.14764562565374,-0.678925519816982,-0.0417752119935572,-2.24130736689645,\ +-2,-0.271559,-2.41296212121212,3.14764479350686,-0.678927391360265,-0.0417801002622306,-2.24131214224007,\ +-2,-0.271559,-2.38543131313131,3.14764399850608,-0.678929179360002,-0.041784770324192,-2.24131670441782,\ +-2,-0.271559,-2.3579005050505,3.14764323821844,-0.678930889287996,-0.0417892364712044,-2.2413210673913,\ +-2,-0.271559,-2.3303696969697,3.14764251041893,-0.67893252614842,-0.0417935117736165,-2.24132524392894,\ +-2,-0.271559,-2.30283888888889,3.14764181306874,-0.678934094526713,-0.0417976082081168,-2.24132924573074,\ +-2,-0.271559,-2.27530808080808,3.1476411442961,-0.678935598632498,-0.0418015367697775,-2.24133308353776,\ +-2,-0.271559,-2.24777727272727,3.14764050237965,-0.678937042337303,-0.041805307570605,-2.24133676722843,\ +-2,-0.271559,-2.22024646464646,3.14763988573351,-0.678938429207829,-0.0418089299264469,-2.24134030590337,\ +-2,-0.271559,-2.19271565656565,3.14763929289424,-0.678939762535385,-0.0418124124338366,-2.24134370796052,\ +-2,-0.271559,-2.16518484848485,3.1476387225093,-0.678941045361952,-0.0418157630381041,-2.24134698116168,\ +-2,-0.271559,-2.13765404040404,3.14763817332668,-0.678942280503358,-0.041818989093893,-2.2413501326916,\ +-2,-0.271559,-2.11012323232323,3.14763764418575,-0.678943470569916,-0.041822097419051,-2.2413531692106,\ +-2,-0.271559,-2.08259242424242,3.14763713400907,-0.67894461798483,-0.0418250943427261,-2.24135609690163,\ +-2,-0.271559,-2.05506161616161,3.14763664179509,-0.678945725000668,-0.0418279857483829,-2.24135892151223,\ +-2,-0.271559,-2.02753080808081,3.14763616661155,-0.678946793714122,-0.0418307771123551,-2.24136164839224,\ +-2,-0.271559,-2,3.14763570758962,-0.678947826079261,-0.041833473538461,-2.24136428252757,\ +-2,-0.271258,-4.72555,3.1475703472669,-0.679094824978082,-0.0422174187658969,-2.24173935814514,\ +-2,-0.271258,-4.69801919191919,3.14756935640403,-0.679097053482267,-0.0422232393778405,-2.24174504429375,\ +-2,-0.271258,-4.67048838383838,3.14756831364318,-0.679099398707748,-0.0422293648531829,-2.24175102826303,\ +-2,-0.271258,-4.64295757575758,3.1475672147974,-0.679101870071313,-0.0422358197875674,-2.24175733408044,\ +-2,-0.271258,-4.61542676767677,3.14756605521682,-0.679104478030719,-0.0422426314955109,-2.2417639884295,\ +-2,-0.271258,-4.58789595959596,3.14756482972299,-0.679107234232599,-0.0422498303967706,-2.24177102102723,\ +-2,-0.271258,-4.56036515151515,3.1475635325315,-0.679110151686368,-0.0422574504705269,-2.24177846506786,\ +-2,-0.271258,-4.53283434343434,3.14756215716075,-0.679113244969546,-0.0422655297916819,-2.2417863577467,\ +-2,-0.271258,-4.50530353535354,3.14756069632355,-0.679116530471363,-0.042274111167136,-2.24179474088176,\ +-2,-0.271258,-4.47777272727273,3.14755914179806,-0.679120026683241,-0.0422832428944845,-2.2418036616549,\ +-2,-0.271258,-4.45024191919192,3.14755748427285,-0.67912375454701,-0.0422929796715245,-2.24181317350035,\ +-2,-0.271258,-4.42271111111111,3.14755571316037,-0.679127737874715,-0.04230338369274,-2.2418233371758,\ +-2,-0.271258,-4.3951803030303,3.14755381637045,-0.679132003857787,-0.0423145259792068,-2.24183422206166,\ +-2,-0.271258,-4.36764949494949,3.14755178003397,-0.679136583688596,-0.0423264880020213,-2.24184590774694,\ +-2,-0.271258,-4.34011868686869,3.1475495881632,-0.679141513324423,-0.0423393636777164,-2.24185848597859,\ +-2,-0.271258,-4.31258787878788,3.14754722223118,-0.679146834433444,-0.0423532618390616,-2.24187206307522,\ +-2,-0.271258,-4.28505707070707,3.14754466064671,-0.679152595575395,-0.0423683093188336,-2.24188676293959,\ +-2,-0.271258,-4.25752626262626,3.14754187809358,-0.679158853687777,-0.0423846548316306,-2.24190273085081,\ +-2,-0.271258,-4.22999545454545,3.14753884469107,-0.679165675974016,-0.0424024739055326,-2.24192013828206,\ +-2,-0.271258,-4.20246464646465,3.14753552491653,-0.679173142326377,-0.0424219752104965,-2.24193918908274,\ +-2,-0.271258,-4.17493383838384,3.147531876208,-0.679181348469094,-0.0424434087678695,-2.24196012749842,\ +-2,-0.271258,-4.14740303030303,3.14752784712947,-0.679190410084489,-0.0424670767273708,-2.24198324869877,\ +-2,-0.271258,-4.11987222222222,3.14752337493105,-0.679200468300476,-0.0424933476998473,-2.24200891277927,\ +-2,-0.271258,-4.09234141414141,3.14751838225715,-0.679211697093968,-0.0425226760941774,-2.2420375636514,\ +-2,-0.271258,-4.06481060606061,3.14751277263438,-0.679224313438816,-0.0425556286226057,-2.24206975493565,\ +-2,-0.271258,-4.0372797979798,3.14750642417661,-0.679238591463478,-0.0425929212790127,-2.24210618608555,\ +-2,-0.271258,-4.00974898989899,3.14749918062745,-0.679254882597077,-0.0426354719582721,-2.24214775379146,\ +-2,-0.271258,-3.98221818181818,3.14749083832637,-0.679273644883173,-0.0426844770206195,-2.24219562677622,\ +-2,-0.271258,-3.95468737373737,3.14748112675693,-0.679295486727797,-0.0427415255568295,-2.24225135742066,\ +-2,-0.271258,-3.92715656565657,3.14746967866058,-0.679321234115304,-0.0428087749487047,-2.24231705326836,\ +-2,-0.271258,-3.89962575757576,3.14745598254439,-0.679352037420955,-0.0428892298520328,-2.24239564956386,\ +-2,-0.271258,-3.87209494949495,3.1474393041652,-0.679389547997304,-0.0429872034211068,-2.24249135982225,\ +-2,-0.271258,-3.84456414141414,3.14741855045822,-0.679436224206128,-0.0431091166310485,-2.24261045668618,\ +-2,-0.271258,-3.81703333333333,3.14739201983686,-0.67949589300765,-0.0432649650881074,-2.24276270485103,\ +-2,-0.271258,-3.78950252525252,3.14735691026311,-0.679574856336881,-0.0434712087650643,-2.24296418404384,\ +-2,-0.271258,-3.76197171717172,3.14730825806998,-0.67968427774908,-0.0437570056610217,-2.24324337867784,\ +-2,-0.271258,-3.73444090909091,3.14723635540076,-0.67984599073883,-0.0441793825027986,-2.24365599809191,\ +-2,-0.271258,-3.7069101010101,3.14711930261618,-0.680109248778588,-0.0448669840342394,-2.24432771517711,\ +-2,-0.271258,-3.67937929292929,3.14689511010678,-0.680613469850855,-0.0461839549491337,-2.2456142624342,\ +-2,-0.271258,-3.65184848484848,3.14629254932225,-0.681968661626456,-0.0497235693181803,-2.24907210733125,\ +-2,-0.271258,-3.62431767676768,3.13917754957455,-0.697970680657272,-0.0915191125874098,-2.28990212183148,\ +-2,-0.271258,-3.59678686868687,3.14952372583697,-0.674701570984957,-0.0307427144170995,-2.23052973366606,\ +-2,-0.271258,-3.56925606060606,3.14846884790256,-0.677074048480432,-0.0369393690783949,-2.23658323793669,\ +-2,-0.271258,-3.54172525252525,3.14816345229051,-0.677760899719944,-0.038733350240726,-2.23833577591423,\ +-2,-0.271258,-3.51419444444444,3.14801816129183,-0.678087667029619,-0.0395868311173698,-2.23916954032649,\ +-2,-0.271258,-3.48666363636364,3.1479332202342,-0.678278704059705,-0.040085799181441,-2.23965698161084,\ +-2,-0.271258,-3.45913282828283,3.14787749388892,-0.67840403562249,-0.0404131516702272,-2.23997677185205,\ +-2,-0.271258,-3.43160202020202,3.14783812168818,-0.678492585830187,-0.0406444352370165,-2.24020271248225,\ +-2,-0.271258,-3.40407121212121,3.14780882560993,-0.67855847429378,-0.0408165287788202,-2.24037083045028,\ +-2,-0.271258,-3.3765404040404,3.14778617643847,-0.678609413504668,-0.0409495764891597,-2.24050080459388,\ +-2,-0.271258,-3.3490095959596,3.14776814250593,-0.678649972793767,-0.04105551296625,-2.24060429380726,\ +-2,-0.271258,-3.32147878787879,3.14775344357377,-0.678683031486734,-0.0411418586973497,-2.24068864484512,\ +-2,-0.271258,-3.29394797979798,3.14774123283347,-0.67871049410173,-0.0412135880779448,-2.24075871718826,\ +-2,-0.271258,-3.26641717171717,3.14773092779541,-0.678733670689349,-0.0412741228185184,-2.24081785350142,\ +-2,-0.271258,-3.23888636363636,3.14772211462486,-0.67875349198632,-0.0413258939027581,-2.24086842860955,\ +-2,-0.271258,-3.21135555555555,3.1477144912214,-0.678770637432766,-0.0413706759547814,-2.24091217614076,\ +-2,-0.271258,-3.18382474747475,3.14770783189347,-0.678785614621255,-0.0414097947515008,-2.24095039124487,\ +-2,-0.271258,-3.15629393939394,3.14770196463779,-0.678798810396446,-0.0414442606893248,-2.24098406097688,\ +-2,-0.271258,-3.12876313131313,3.14769675607106,-0.678810524744567,-0.041474857299841,-2.24101395076783,\ +-2,-0.271258,-3.10123232323232,3.14769210116687,-0.678820993875706,-0.0415022015382594,-2.2410406633205,\ +-2,-0.271258,-3.07370151515151,3.14768791610026,-0.678830406316751,-0.0415267858164151,-2.24106467967141,\ +-2,-0.271258,-3.04617070707071,3.14768413315484,-0.678838914365454,-0.0415490079195759,-2.24108638841649,\ +-2,-0.271258,-3.0186398989899,3.1476806970308,-0.678846642394179,-0.0415691926949103,-2.24110610689854,\ +-2,-0.271258,-2.99110909090909,3.14767756212362,-0.678853692969881,-0.0415876080362008,-2.24112409682266,\ +-2,-0.271258,-2.96357828282828,3.14767469048864,-0.678860151432185,-0.0416044768413306,-2.24114057593751,\ +-2,-0.271258,-2.93604747474747,3.14767205029759,-0.678866089364559,-0.0416199860785728,-2.24115572689218,\ +-2,-0.271258,-2.90851666666667,3.14766961465398,-0.678871567258686,-0.0416342937456583,-2.24116970403445,\ +-2,-0.271258,-2.88098585858586,3.14766736067348,-0.678876636582672,-0.0416475342717157,-2.24118263868798,\ +-2,-0.271258,-2.85345505050505,3.1476652687627,-0.678881341403119,-0.0416598227539496,-2.24119464329106,\ +-2,-0.271258,-2.82592424242424,3.14766332204811,-0.678885719669446,-0.0416712583121363,-2.2412058146737,\ +-2,-0.271258,-2.79839343434343,3.14766150592,-0.678889804239745,-0.0416819267680554,-2.24121623667509,\ +-2,-0.271258,-2.77086262626263,3.14765980766506,-0.67889362370689,-0.0416919028032086,-2.24122598225148,\ +-2,-0.271258,-2.74333181818182,3.14765821616842,-0.678897203068862,-0.0417012517096126,-2.24123511518658,\ +-2,-0.271258,-2.71580101010101,3.14765672167004,-0.678900564276495,-0.0417100308204707,-2.24124369148912,\ +-2,-0.271258,-2.6882702020202,3.14765531556443,-0.678903726684037,-0.0417182906869919,-2.2412517605425,\ +-2,-0.271258,-2.66073939393939,3.14765399023476,-0.678906707422068,-0.0417260760523959,-2.24125936605633,\ +-2,-0.271258,-2.63320858585858,3.14765273891497,-0.678909521707936,-0.041733426662748,-2.24126654685848,\ +-2,-0.271258,-2.60567777777778,3.14765155557407,-0.678912183105599,-0.0417403779456425,-2.24127333755815,\ +-2,-0.271258,-2.57814696969697,3.14765043481903,-0.678914703744244,-0.0417469615812044,-2.24127976910358,\ +-2,-0.271258,-2.55061616161616,3.14764937181263,-0.678917094503107,-0.041753205984825,-2.24128586925375,\ +-2,-0.271258,-2.52308535353535,3.14764836220357,-0.678919365168448,-0.0417591367171491,-2.24129166297881,\ +-2,-0.271258,-2.49555454545454,3.14764740206703,-0.67892152456744,-0.0417647768337937,-2.24129717280179,\ +-2,-0.271258,-2.46802373737374,3.14764648785361,-0.678923580682844,-0.0417701471848865,-2.24130241909112,\ +-2,-0.271258,-2.44049292929293,3.14764561634552,-0.678925540751641,-0.0417752666726249,-2.24130742031236,\ +-2,-0.271258,-2.41296212121212,3.14764478461874,-0.678927411350119,-0.0417801524735669,-2.24131219324526,\ +-2,-0.271258,-2.38543131313131,3.14764399001024,-0.678929198467595,-0.0417848202311616,-2.24131675317187,\ +-2,-0.271258,-2.3579005050505,3.14764323008948,-0.678930907570476,-0.0417892842230637,-2.24132111404004,\ +-2,-0.271258,-2.3303696969697,3.14764250263358,-0.678932543658099,-0.041793557507005,-2.24132528860583,\ +-2,-0.271258,-2.30283888888889,3.14764180560566,-0.678934111311573,-0.0417976520483617,-2.24132928855822,\ +-2,-0.271258,-2.27530808080808,3.1476411371357,-0.678935614736635,-0.0418015788320422,-2.24133312462833,\ +-2,-0.271258,-2.24777727272727,3.14764049550388,-0.678937057801301,-0.0418053479608975,-2.24133680668565,\ +-2,-0.271258,-2.22024646464646,3.14763987912571,-0.678938444069115,-0.0418089687425125,-2.24134034382273,\ +-2,-0.271258,-2.19271565656565,3.14763928653905,-0.678939776828516,-0.0418124497659478,-2.24134374443022,\ +-2,-0.271258,-2.16518484848485,3.14763871639253,-0.678941059118897,-0.0418157989697603,-2.24134701626328,\ +-2,-0.271258,-2.13765404040404,3.14763816743514,-0.678942293753734,-0.0418190237024451,-2.24135016650064,\ +-2,-0.271258,-2.11012323232323,3.14763763850722,-0.678943483341197,-0.0418221307762563,-2.2413532017972,\ +-2,-0.271258,-2.08259242424242,3.14763712853223,-0.678944630302538,-0.0418251265152454,-2.24135612833092,\ +-2,-0.271258,-2.05506161616161,3.14763663650937,-0.678945736888542,-0.041828016798225,-2.24135895184479,\ +-2,-0.271258,-2.02753080808081,3.14763616150712,-0.678946805194275,-0.0418308070972754,-2.24136167768446,\ +-2,-0.271258,-2,3.1476357026573,-0.678947837172316,-0.0418335025123203,-2.2413643108321,\ +-2,-0.270763,-4.72555,3.14757032988689,-0.679094864066666,-0.0422175208610528,-2.24173945788177,\ +-2,-0.270763,-4.69801919191919,3.14756933812541,-0.679097094591855,-0.0422233467516382,-2.24174514918708,\ +-2,-0.270763,-4.67048838383838,3.14756829439444,-0.679099441999226,-0.0422294779258454,-2.24175113872357,\ +-2,-0.270763,-4.64295757575758,3.14756719449918,-0.679101915723115,-0.0422359390251353,-2.24175745056348,\ +-2,-0.270763,-4.61542676767677,3.14756603378089,-0.67910452624127,-0.0422427574162605,-2.24176411144132,\ +-2,-0.270763,-4.58789595959596,3.14756480705096,-0.679107285223214,-0.0422499635787441,-2.24177115113254,\ +-2,-0.270763,-4.56036515151515,3.14756350851329,-0.679110205704636,-0.0422575915604019,-2.24177860289838,\ +-2,-0.270763,-4.53283434343434,3.14756213167279,-0.679113302293353,-0.0422656795152687,-2.24178650401148,\ +-2,-0.270763,-4.50530353535354,3.14756066922669,-0.679116591413674,-0.0422742703418632,-2.24179489637935,\ +-2,-0.270763,-4.47777272727273,3.14755911293499,-0.679120091597812,-0.0422834124443253,-2.24180382728794,\ +-2,-0.270763,-4.45024191919192,3.14755745346513,-0.679123823835258,-0.0422931606449379,-2.24181335029305,\ +-2,-0.270763,-4.42271111111111,3.1475556802046,-0.679127811994026,-0.0423035772843639,-2.24182352629521,\ +-2,-0.270763,-4.3951803030303,3.14755378103389,-0.679132083331617,-0.0423147335562525,-2.24183442484342,\ +-2,-0.270763,-4.36764949494949,3.147551742049,-0.679136669118848,-0.0423267111365973,-2.24184612572683,\ +-2,-0.270763,-4.34011868686869,3.14754954722053,-0.679141605406713,-0.0423396041867024,-2.24185872093153,\ +-2,-0.270763,-4.31258787878788,3.1475471779714,-0.679146933976083,-0.0423535218336674,-2.24187231706363,\ +-2,-0.270763,-4.28505707070707,3.14754461264974,-0.679152703523156,-0.0423685912667071,-2.24188703837411,\ +-2,-0.270763,-4.25752626262626,3.14754182586532,-0.679158971151965,-0.0423849616353829,-2.24190303056702,\ +-2,-0.270763,-4.22999545454545,3.14753878764626,-0.679165804270844,-0.0424028090029731,-2.24192046563833,\ +-2,-0.270763,-4.20246464646465,3.14753546235685,-0.67917328302647,-0.0424223427039252,-2.24193954808662,\ +-2,-0.270763,-4.17493383838384,3.14753180729326,-0.67918150346206,-0.0424438135927378,-2.24196052297133,\ +-2,-0.270763,-4.14740303030303,3.14752777083974,-0.679190581664214,-0.0424675248750543,-2.24198368649369,\ +-2,-0.270763,-4.11987222222222,3.14752329001587,-0.679200659279311,-0.0424938465159133,-2.24200940007207,\ +-2,-0.270763,-4.09234141414141,3.14751828716651,-0.679211910957951,-0.0425232346837779,-2.24203810933689,\ +-2,-0.270763,-4.06481060606061,3.14751266542336,-0.679224554562167,-0.0425562584107228,-2.24207037017487,\ +-2,-0.270763,-4.0372797979798,3.14750630237113,-0.679238865410586,-0.0425936367992333,-2.24210688507636,\ +-2,-0.270763,-4.00974898989899,3.14749904103118,-0.679255196556649,-0.0426362919867242,-2.24214855487624,\ +-2,-0.270763,-3.98221818181818,3.14749067673662,-0.679274008307267,-0.0426854262450554,-2.24219655407239,\ +-2,-0.270763,-3.95468737373737,3.14748093753501,-0.679295912298111,-0.0427426371004666,-2.24225244328626,\ +-2,-0.270763,-3.92715656565657,3.1474694540617,-0.679321739250331,-0.0428100943067683,-2.24231834214762,\ +-2,-0.270763,-3.89962575757576,3.14745571163392,-0.679352646713239,-0.042890821257591,-2.24239720420598,\ +-2,-0.270763,-3.87209494949495,3.14743897098997,-0.679390297326392,-0.0429891605876539,-2.24249327177583,\ +-2,-0.270763,-3.84456414141414,3.14741813079862,-0.67943716804326,-0.0431115818315665,-2.24261286493752,\ +-2,-0.270763,-3.81703333333333,3.14739147506666,-0.679497118225293,-0.043268165224104,-2.24276583105992,\ +-2,-0.270763,-3.78950252525252,3.14735617479691,-0.679576510440097,-0.0434755291037856,-2.24296840457739,\ +-2,-0.270763,-3.76197171717172,3.1473072109715,-0.679686632730173,-0.0437631566169666,-2.2432493875391,\ +-2,-0.270763,-3.73444090909091,3.14723474678097,-0.67984960861169,-0.0441888319954783,-2.24366522928961,\ +-2,-0.270763,-3.7069101010101,3.14711652155216,-0.680115503541887,-0.0448833207995903,-2.24434367454296,\ +-2,-0.270763,-3.67937929292929,3.14688918562081,-0.680626794340058,-0.0462187570740344,-2.24564826058695,\ +-2,-0.270763,-3.65184848484848,3.14627226541272,-0.682014281235392,-0.0498427228034743,-2.24918850822359,\ +-2,-0.270763,-3.62431767676768,3.13827014541877,-0.700011481652973,-0.0968494640983994,-2.29510933562658,\ +-2,-0.270763,-3.59678686868687,3.14948239783066,-0.674794519905114,-0.0309854869451678,-2.23076689784832,\ +-2,-0.270763,-3.56925606060606,3.14846041506362,-0.677093014391031,-0.0369889059859296,-2.23663163048036,\ +-2,-0.270763,-3.54172525252525,3.14815993443543,-0.677768811566199,-0.0387540151275659,-2.2383559634166,\ +-2,-0.270763,-3.51419444444444,3.14801624277862,-0.678091981869549,-0.0395981010126651,-2.23918054987326,\ +-2,-0.270763,-3.48666363636364,3.14793201469236,-0.678281415388433,-0.0400928808788753,-2.2396638997123,\ +-2,-0.270763,-3.45913282828283,3.14787666680069,-0.678405895788634,-0.0404180102230357,-2.23998151816628,\ +-2,-0.270763,-3.43160202020202,3.14783751924657,-0.678493940753936,-0.0406479741513315,-2.24020616964327,\ +-2,-0.270763,-3.40407121212121,3.14780836732648,-0.678559504998024,-0.0408192208668427,-2.24037346034774,\ +-2,-0.270763,-3.3765404040404,3.14778581614202,-0.678610223830867,-0.0409516929735621,-2.24050287218487,\ +-2,-0.270763,-3.3490095959596,3.14776785182698,-0.67865062654646,-0.0410572204975867,-2.24060596189251,\ +-2,-0.270763,-3.32147878787879,3.14775320412413,-0.678683570021919,-0.0411432652930156,-2.24069001894668,\ +-2,-0.270763,-3.29394797979798,3.14774103217363,-0.678710945396559,-0.0412147668112349,-2.24075986869135,\ +-2,-0.270763,-3.26641717171717,3.14773075720999,-0.67873405434518,-0.0412751248860611,-2.24081883241996,\ +-2,-0.270763,-3.23888636363636,3.14772196782652,-0.678753822143733,-0.0413267562382154,-2.24086927102398,\ +-2,-0.270763,-3.21135555555555,3.14771436356062,-0.678770924548778,-0.0413714258707584,-2.24091290873274,\ +-2,-0.270763,-3.18382474747475,3.147707719858,-0.678785866595086,-0.0414104528798995,-2.24095103416968,\ +-2,-0.270763,-3.15629393939394,3.14770186552507,-0.678799033306296,-0.0414448429057468,-2.24098462974337,\ +-2,-0.270763,-3.12876313131313,3.14769666776768,-0.678810723343651,-0.0414753760191783,-2.24101445750411,\ +-2,-0.270763,-3.10123232323232,3.14769202199631,-0.678821171934571,-0.0415026666087588,-2.24104111764729,\ +-2,-0.270763,-3.07370151515151,3.14768784471561,-0.678830566864677,-0.0415272051502391,-2.2410650893181,\ +-2,-0.270763,-3.04617070707071,3.1476840684616,-0.678839059864061,-0.041549387946205,-2.24108675966403,\ +-2,-0.270763,-3.0186398989899,3.14768063813036,-0.678846774864419,-0.0415695386928503,-2.2411064449035,\ +-2,-0.270763,-2.99110909090909,3.14767750827141,-0.678853814086406,-0.0415879243794652,-2.241124405858,\ +-2,-0.270763,-2.96357828282828,3.1476746410624,-0.67886026259447,-0.041604767185192,-2.24114085957407,\ +-2,-0.270763,-2.93604747474747,3.14767200477328,-0.678866191751178,-0.0416202535013482,-2.24115598813716,\ +-2,-0.270763,-2.90851666666667,3.14766957258716,-0.678871661869247,-0.0416345408582106,-2.2411699454384,\ +-2,-0.270763,-2.88098585858586,3.14766732168471,-0.678876724270533,-0.0416477633029289,-2.24118286242828,\ +-2,-0.270763,-2.85345505050505,3.14766523252608,-0.678881422901195,-0.0416600356181133,-2.2411948512378,\ +-2,-0.270763,-2.82592424242424,3.14766328828224,-0.678885795610729,-0.0416714566625527,-2.24120600844198,\ +-2,-0.270763,-2.79839343434343,3.14766147438051,-0.678889875173765,-0.0416821120400475,-2.24121641766707,\ +-2,-0.270763,-2.77086262626263,3.14765977813879,-0.678893690113043,-0.0416920762488942,-2.24122615169036,\ +-2,-0.270763,-2.74333181818182,3.14765818846861,-0.678897265367238,-0.0417014144262301,-2.24123527414424,\ +-2,-0.270763,-2.71580101010101,3.1476566956323,-0.678900622836782,-0.0417101837736047,-2.24124384090884,\ +-2,-0.270763,-2.6882702020202,3.14765529104353,-0.678903781832855,-0.0417184347297431,-2.24125190125768,\ +-2,-0.270763,-2.66073939393939,3.14765396710193,-0.67890675944907,-0.0417262119412968,-2.24125949880603,\ +-2,-0.270763,-2.63320858585858,3.14765271705558,-0.678909570870884,-0.0417335550710487,-2.2412666723004,\ +-2,-0.270763,-2.60567777777778,3.14765153488579,-0.678912229634639,-0.0417404994744639,-2.2412734562795,\ +-2,-0.270763,-2.57814696969697,3.14765041521022,-0.678914747845509,-0.0417470767689459,-2.24127988163034,\ +-2,-0.270763,-2.55061616161616,3.14764935320094,-0.678917136361774,-0.0417533153151351,-2.2412859760584,\ +-2,-0.270763,-2.52308535353535,3.14764834451486,-0.678919404951325,-0.041759240625713,-2.24129176448696,\ +-2,-0.270763,-2.49555454545454,3.14764738523429,-0.678921562425186,-0.0417648757141354,-2.24129726939787,\ +-2,-0.270763,-2.46802373737374,3.14764647181617,-0.678923616751893,-0.0417702413933469,-2.24130251112325,\ +-2,-0.270763,-2.44049292929293,3.14764560104834,-0.678925575155834,-0.0417753565326524,-2.24130750809651,\ +-2,-0.270763,-2.41296212121212,3.14764477001172,-0.678927444202115,-0.0417802382794273,-2.2413122770689,\ +-2,-0.270763,-2.38543131313131,3.14764397604769,-0.678929229870121,-0.0417849022511558,-2.2413168332971,\ +-2,-0.270763,-2.3579005050505,3.14764321672967,-0.678930937617382,-0.04178936270233,-2.24132119070634,\ +-2,-0.270763,-2.3303696969697,3.14764248983833,-0.678932572435308,-0.0417936326699659,-2.24132536203244,\ +-2,-0.270763,-2.30283888888889,3.14764179333991,-0.678934138897901,-0.0417977241008665,-2.24132935894622,\ +-2,-0.270763,-2.27530808080808,3.14764112536726,-0.678935641204503,-0.0418016479632496,-2.24133319216253,\ +-2,-0.270763,-2.24777727272727,3.14764048420309,-0.678937083217376,-0.0418054143449332,-2.24133687153613,\ +-2,-0.270763,-2.22024646464646,3.14763986826525,-0.678938468494864,-0.0418090325399346,-2.24134040614635,\ +-2,-0.270763,-2.19271565656565,3.14763927609369,-0.678939800320717,-0.0418125111250407,-2.24134380437184,\ +-2,-0.270763,-2.16518484848485,3.14763870633889,-0.678941081730066,-0.0418158580276883,-2.2413470739569,\ +-2,-0.270763,-2.13765404040404,3.14763815775161,-0.678942315532517,-0.0418190805862735,-2.24135022207039,\ +-2,-0.270763,-2.11012323232323,3.14763762917374,-0.678943504332728,-0.0418221856038643,-2.24135325535823,\ +-2,-0.270763,-2.08259242424242,3.14763711953013,-0.678944650548742,-0.0418251793961425,-2.2413561799902,\ +-2,-0.270763,-2.05506161616161,3.14763662782133,-0.678945756428423,-0.0418280678342805,-2.24135900170185,\ +-2,-0.270763,-2.02753080808081,3.14763615311697,-0.678946824064159,-0.0418308563833722,-2.241361725832,\ +-2,-0.270763,-2,3.14763569455,-0.678947855406082,-0.0418335501369452,-2.24136435735653,\ +-2,-0.257969,-4.72555,3.1475698752136,-0.679095886651492,-0.0422201917420324,-2.2417420670621,\ +-2,-0.257969,-4.69801919191919,3.14756885979565,-0.679098170381326,-0.0422261565973983,-2.24174789412192,\ +-2,-0.257969,-4.67048838383838,3.14756779051276,-0.679100575256373,-0.0422324378709606,-2.24175403029029,\ +-2,-0.257969,-4.64295757575758,3.14756666296204,-0.679103111178876,-0.0422390614263086,-2.24176050083332,\ +-2,-0.257969,-4.61542676767677,3.14756547224738,-0.679105789160501,-0.0422460560247213,-2.24176733384785,\ +-2,-0.257969,-4.58789595959596,3.1475642129083,-0.679108621482186,-0.0422534537426744,-2.24177456066936,\ +-2,-0.257969,-4.56036515151515,3.1475628788362,-0.679111621882437,-0.0422612904636743,-2.24178221635241,\ +-2,-0.257969,-4.53283434343434,3.14756146317535,-0.679114805780201,-0.0422696064603307,-2.24179034023926,\ +-2,-0.257969,-4.50530353535354,3.14755995820499,-0.679118190539882,-0.0422784470865947,-2.24179897663611,\ +-2,-0.257969,-4.47777272727273,3.14755835519848,-0.679121795788176,-0.042287863605273,-2.24180817562156,\ +-2,-0.257969,-4.45024191919192,3.14755664425396,-0.679125643794898,-0.0422979141827067,-2.24181799401822,\ +-2,-0.257969,-4.42271111111111,3.14755481408963,-0.679129759933407,-0.0423086650913798,-2.2418284965676,\ +-2,-0.257969,-4.3951803030303,3.1475528517947,-0.679134173240783,-0.0423201921729973,-2.24183975735936,\ +-2,-0.257969,-4.36764949494949,3.14755074252433,-0.679138917103844,-0.0423325826303151,-2.24185186158178,\ +-2,-0.257969,-4.34011868686869,3.14754846912344,-0.679144030105321,-0.0423459372372604,-2.24186490768078,\ +-2,-0.257969,-4.31258787878788,3.14754601165906,-0.67914955707557,-0.0423603730858694,-2.24187901004342,\ +-2,-0.257969,-4.28505707070707,3.1475433468343,-0.679155550410496,-0.0423760270285848,-2.24189430236069,\ +-2,-0.257969,-4.25752626262626,3.14754044724757,-0.679162071737808,-0.0423930600303176,-2.24191094187901,\ +-2,-0.257969,-4.22999545454545,3.14753728044679,-0.679169194043931,-0.0424116627237118,-2.24192911482717,\ +-2,-0.257969,-4.20246464646465,3.14753380770971,-0.67917700441734,-0.04243206257445,-2.24194904341611,\ +-2,-0.257969,-4.17493383838384,3.14752998245261,-0.679185607627337,-0.0424545332286222,-2.24197099497036,\ +-2,-0.257969,-4.14740303030303,3.14752574812859,-0.679195130850951,-0.0424794068588764,-2.24199529398898,\ +-2,-0.257969,-4.11987222222222,3.14752103541348,-0.679205730001966,-0.0425070906951438,-2.24202233829437,\ +-2,-0.257969,-4.09234141414141,3.14751575838089,-0.679217598333512,-0.042538089493715,-2.24205262098233,\ +-2,-0.257969,-4.06481060606061,3.14750980921561,-0.679230978327813,-0.0425730365919337,-2.24208676075934,\ +-2,-0.257969,-4.0372797979798,3.14750305076966,-0.679246178438088,-0.0426127376362478,-2.2421255446604,\ +-2,-0.257969,-4.00974898989899,3.14749530585872,-0.679263597161416,-0.0426582334579414,-2.24216998947232,\ +-2,-0.257969,-3.98221818181818,3.14748634150277,-0.679283758482517,-0.042710892648435,-2.24222143217035,\ +-2,-0.257969,-3.95468737373737,3.14747584508647,-0.679307365490154,-0.0427725515995479,-2.24228166672339,\ +-2,-0.257969,-3.92715656565657,3.14746338715466,-0.679335384052209,-0.0428457330537434,-2.24235315759543,\ +-2,-0.257969,-3.89962575757576,3.14744836120021,-0.679369178235982,-0.0429339998072987,-2.24243938527776,\ +-2,-0.257969,-3.87209494949495,3.14742988193758,-0.679410739096536,-0.0430425522807222,-2.24254543005472,\ +-2,-0.257969,-3.84456414141414,3.14740660433314,-0.679463091687194,-0.0431792915861741,-2.24267901051301,\ +-2,-0.257969,-3.81703333333333,3.14737638063009,-0.679531066429074,-0.0433568342612562,-2.2428524517326,\ +-2,-0.257969,-3.78950252525252,3.14733555649598,-0.679622882113405,-0.043596646899889,-2.24308672440252,\ +-2,-0.257969,-3.76197171717172,3.14727736908482,-0.679753748746409,-0.043938456393531,-2.2434206376739,\ +-2,-0.257969,-3.73444090909091,3.14718774901345,-0.679955309131284,-0.044464910322333,-2.24393492986548,\ +-2,-0.257969,-3.7069101010101,3.14703180152163,-0.68030604347006,-0.0453809904872144,-2.24482984744497,\ +-2,-0.257969,-3.67937929292929,3.14669264004562,-0.681068835962848,-0.0473733219909109,-2.24677615362554,\ +-2,-0.257969,-3.65184848484848,3.14538769301338,-0.684003732376706,-0.0550389540477067,-2.25426470009606,\ +-2,-0.257969,-3.62431767676768,3.1528511838719,-0.667217938000078,-0.011196274331748,-2.21143484053423,\ +-2,-0.257969,-3.59678686868687,3.14881155524003,-0.676303281153554,-0.0349262081704507,-2.23461658353689,\ +-2,-0.257969,-3.56925606060606,3.14828824540576,-0.677480233258097,-0.038000279793317,-2.23761964030128,\ +-2,-0.257969,-3.54172525252525,3.1480823194078,-0.67794337195877,-0.0392099479962082,-2.2388013636718,\ +-2,-0.257969,-3.51419444444444,3.14797222539706,-0.678190979340005,-0.0398566717000281,-2.23943314725778,\ +-2,-0.257969,-3.48666363636364,3.14790369475323,-0.67834510846239,-0.040259240300355,-2.23982641602528,\ +-2,-0.257969,-3.45913282828283,3.14785692800001,-0.678450289418321,-0.0405339615831031,-2.24009479090644,\ +-2,-0.257969,-3.43160202020202,3.14782297818821,-0.67852664438022,-0.0407333924866542,-2.24028961470934,\ +-2,-0.257969,-3.40407121212121,3.14779721137435,-0.67858459533739,-0.0408847541200331,-2.24043747970169,\ +-2,-0.257969,-3.3765404040404,3.14777698721349,-0.678630080568373,-0.0410035566246402,-2.24055353772143,\ +-2,-0.257969,-3.3490095959596,3.1477606909717,-0.678666731697042,-0.0410992854093174,-2.24064705505272,\ +-2,-0.257969,-3.32147878787879,3.14774727962136,-0.678696894548891,-0.041178067516572,-2.24072401719581,\ +-2,-0.257969,-3.29394797979798,3.14773604939576,-0.678722151933331,-0.0412440370734206,-2.24078846277426,\ +-2,-0.257969,-3.26641717171717,3.14772650822478,-0.678743610542607,-0.0413000846403456,-2.24084321557303,\ +-2,-0.257969,-3.23888636363636,3.14771830170297,-0.67876206745375,-0.0413482920963437,-2.24089030937714,\ +-2,-0.257969,-3.21135555555555,3.14771116809416,-0.678778111325577,-0.0413901969545819,-2.24093124618131,\ +-2,-0.257969,-3.18382474747475,3.14770490990117,-0.678792186339881,-0.0414269593698953,-2.24096715933933,\ +-2,-0.257969,-3.15629393939394,3.14769937529715,-0.678804633963503,-0.041459471216728,-2.24099892012227,\ +-2,-0.257969,-3.12876313131313,3.14769444564569,-0.678815721016117,-0.0414884293992146,-2.24102720933491,\ +-2,-0.257969,-3.10123232323232,3.14769002690123,-0.678825659011238,-0.0415143863677839,-2.24105256666539,\ +-2,-0.257969,-3.07370151515151,3.14768604355154,-0.678834617780007,-0.0415377857030156,-2.24107542544702,\ +-2,-0.257969,-3.04617070707071,3.14768243426664,-0.678842735256868,-0.0415589876747659,-2.24109613762698,\ +-2,-0.257969,-3.0186398989899,3.14767914871857,-0.678850124632055,-0.0415782879236742,-2.24111499201626,\ +-2,-0.257969,-2.99110909090909,3.1476761452203,-0.678856879662033,-0.0415959313314949,-2.24113222783953,\ +-2,-0.257969,-2.96357828282828,3.14767338894747,-0.67886307866861,-0.0416121224663239,-2.24114804493911,\ +-2,-0.257969,-2.93604747474747,3.1476708505821,-0.678868787589551,-0.0416270335504666,-2.24116261155875,\ +-2,-0.257969,-2.90851666666667,3.14766850526558,-0.678874062333162,-0.0416408106103766,-2.24117607035153,\ +-2,-0.257969,-2.88098585858586,3.14766633178194,-0.678878950615356,-0.0416535782748463,-2.24118854306715,\ +-2,-0.257969,-2.85345505050505,3.14766431191417,-0.678883493407173,-0.0416654435558257,-2.24120013424546,\ +-2,-0.257969,-2.82592424242424,3.14766242993239,-0.678887726085902,-0.0416764988549508,-2.24121093415349,\ +-2,-0.257969,-2.79839343434343,3.14766067218349,-0.678891679358194,-0.0416868243746752,-2.24122102114094,\ +-2,-0.257969,-2.77086262626263,3.14765902675926,-0.678895380006233,-0.0416964900671656,-2.24123046354397,\ +-2,-0.257969,-2.74333181818182,3.14765748322631,-0.678898851495276,-0.0417055572211517,-2.24123932123548,\ +-2,-0.257969,-2.71580101010101,3.14765603240459,-0.678902114471747,-0.0417140797628325,-2.2412476468959,\ +-2,-0.257969,-2.6882702020202,3.14765466618469,-0.678905187174141,-0.041722105329206,-2.24125548706176,\ +-2,-0.257969,-2.66073939393939,3.14765337737619,-0.678908085774138,-0.0417296761589505,-2.24126288299597,\ +-2,-0.257969,-2.63320858585858,3.14765215958103,-0.678910824661302,-0.0417368298360422,-2.24126987141426,\ +-2,-0.257969,-2.60567777777778,3.1476510070873,-0.678913416681979,-0.0417435999137499,-2.2412764850948,\ +-2,-0.257969,-2.57814696969697,3.14764991477971,-0.678915873340777,-0.0417500164408695,-2.2412827533922,\ +-2,-0.257969,-2.55061616161616,3.14764887806364,-0.678918204971283,-0.0417561064076119,-2.24128870267318,\ +-2,-0.257969,-2.52308535353535,3.14764789280048,-0.678920420881356,-0.0417618941251022,-2.24129435668723,\ +-2,-0.257969,-2.49555454545454,3.14764695525256,-0.678922529477324,-0.0417674015497434,-2.24129973688355,\ +-2,-0.257969,-2.46802373737374,3.14764606203561,-0.678924538370533,-0.0417726485615665,-2.24130486268291,\ +-2,-0.257969,-2.44049292929293,3.14764521007803,-0.678926454469173,-0.0417776532040114,-2.24130975171192,\ +-2,-0.257969,-2.41296212121212,3.1476443965856,-0.678928284057636,-0.0417824318912262,-2.24131442000554,\ +-2,-0.257969,-2.38543131313131,3.14764361901081,-0.67893003286537,-0.0417869995879109,-2.24131888218278,\ +-2,-0.257969,-2.3579005050505,3.14764287502627,-0.678931706126809,-0.041791369965853,-2.24132315159959,\ +-2,-0.257969,-2.3303696969697,3.14764216250142,-0.678933308633719,-0.0417955555406062,-2.24132724048239,\ +-2,-0.257969,-2.30283888888889,3.14764147948213,-0.678934844781002,-0.041799567791189,-2.24133116004501,\ +-2,-0.257969,-2.27530808080808,3.14764082417288,-0.678936318606962,-0.0418034172652143,-2.24133492059143,\ +-2,-0.257969,-2.24777727272727,3.14764019492086,-0.678937733828746,-0.0418071136714802,-2.24133853160613,\ +-2,-0.257969,-2.22024646464646,3.14763959020222,-0.678939093873664,-0.041810665961728,-2.24134200183408,\ +-2,-0.257969,-2.19271565656565,3.14763900860961,-0.678940401906873,-0.041814082403023,-2.24134533935135,\ +-2,-0.257969,-2.16518484848485,3.14763844884133,-0.678941660855992,-0.0418173706419855,-2.24134855162793,\ +-2,-0.257969,-2.13765404040404,3.14763790969155,-0.678942873432971,-0.0418205377619245,-2.24135164558347,\ +-2,-0.257969,-2.11012323232323,3.1476373900417,-0.678944042153582,-0.0418235903337713,-2.24135462763714,\ +-2,-0.257969,-2.08259242424242,3.14763688885266,-0.678945169354848,-0.0418265344615875,-2.24135750375195,\ +-2,-0.257969,-2.05506161616161,3.14763640515783,-0.67894625721065,-0.0418293758233044,-2.2413602794747,\ +-2,-0.257969,-2.02753080808081,3.14763593805699,-0.678947307745707,-0.0418321197072705,-2.24136295997155,\ +-2,-0.257969,-2,3.14763548671058,-0.678948322848159,-0.0418347710451026,-2.2413655500602,\ +-2,-0.254961,-4.72555,3.14756976676556,-0.679096130556957,-0.0422208287967322,-2.24174268940005,\ +-2,-0.254961,-4.69801919191919,3.14756874566288,-0.679098427072095,-0.0422268270459302,-2.24174854908227,\ +-2,-0.254961,-4.67048838383838,3.14756767023625,-0.679100845764732,-0.0422331444095466,-2.24175472050697,\ +-2,-0.254961,-4.64295757575758,3.14756653603204,-0.679103396651312,-0.0422398070494379,-2.24176122923163,\ +-2,-0.254961,-4.61542676767677,3.14756533809613,-0.679106090873929,-0.0422468440675644,-2.24176810368593,\ +-2,-0.254961,-4.58789595959596,3.14756407090154,-0.679108940863048,-0.0422542879309469,-2.24177537558685,\ +-2,-0.254961,-4.56036515151515,3.14756272826321,-0.679111960529249,-0.042262174972522,-2.24178308042801,\ +-2,-0.254961,-4.53283434343434,3.14756130323696,-0.679115165490296,-0.0422705459842002,-2.24179125805895,\ +-2,-0.254961,-4.50530353535354,3.14755978799948,-0.679118573341321,-0.0422794469225539,-2.24179995337463,\ +-2,-0.254961,-4.47777272727273,3.14755817370449,-0.679122203977984,-0.0422889297529061,-2.24180921713986,\ +-2,-0.254961,-4.45024191919192,3.14755645031008,-0.679126079985183,-0.0422990534645592,-2.24181910698124,\ +-2,-0.254961,-4.42271111111111,3.14755460636946,-0.679130227107297,-0.0423098852990616,-2.24182968858696,\ +-2,-0.254961,-4.3951803030303,3.14755262877652,-0.679134674820721,-0.0423215022455512,-2.24184103716762,\ +-2,-0.254961,-4.36764949494949,3.14755050245377,-0.679139457035529,-0.0423339928734873,-2.2418532392466,\ +-2,-0.254961,-4.34011868686869,3.14754820996723,-0.679144612961681,-0.0423474595950405,-2.24186639487021,\ +-2,-0.254961,-4.31258787878788,3.14754573104732,-0.679150188186527,-0.0423620214794439,-2.24188062035707,\ +-2,-0.254961,-4.28505707070707,3.14754304198798,-0.679156236026354,-0.042377817783063,-2.24189605174652,\ +-2,-0.254961,-4.25752626262626,3.14754011488604,-0.679162819236834,-0.0423950124169416,-2.24191284916308,\ +-2,-0.254961,-4.22999545454545,3.14753691666947,-0.67917001219879,-0.042413799655728,-2.24193120239341,\ +-2,-0.254961,-4.20246464646465,3.14753340784231,-0.679177903740754,-0.0424344115099536,-2.24195133808829,\ +-2,-0.254961,-4.17493383838384,3.14752954084535,-0.679186600825925,-0.042457127355927,-2.24197352917012,\ +-2,-0.254961,-4.14740303030303,3.14752525788784,-0.679196233428883,-0.042482286673198,-2.24199810727603,\ +-2,-0.254961,-4.11987222222222,3.14752048803956,-0.679206961075484,-0.0425103061260449,-2.24202547944484,\ +-2,-0.254961,-4.09234141414141,3.1475151432716,-0.679218981747544,-0.0425417028215632,-2.24205615083784,\ +-2,-0.254961,-4.06481060606061,3.14750911297351,-0.679232544213929,-0.0425771265171327,-2.24209075620221,\ +-2,-0.254961,-4.0372797979798,3.14750225621626,-0.679247965431614,-0.0426174050700956,-2.24213010427076,\ +-2,-0.254961,-4.00974898989899,3.14749439060008,-0.679265655627576,-0.0426636099489481,-2.24217524175973,\ +-2,-0.254961,-3.98221818181818,3.14748527578874,-0.679286155330985,-0.0427171529574477,-2.24222754785847,\ +-2,-0.254961,-3.95468737373737,3.14747458852206,-0.679310191571429,-0.0427799330182295,-2.24228887762217,\ +-2,-0.254961,-3.92715656565657,3.14746188347542,-0.679338765908114,-0.0428545660956564,-2.24236178658316,\ +-2,-0.254961,-3.89962575757576,3.14744652963862,-0.679373297517013,-0.0429447589238943,-2.24244989584545,\ +-2,-0.254961,-3.87209494949495,3.14742760227255,-0.679415866186417,-0.0430559436850526,-2.24255851210104,\ +-2,-0.254961,-3.84456414141414,3.14740368949061,-0.679469647325581,-0.0431964142047203,-2.24269573757788,\ +-2,-0.254961,-3.81703333333333,3.14737252282111,-0.679539742849992,-0.0433794961344369,-2.24287459008847,\ +-2,-0.254961,-3.78950252525252,3.14733021145476,-0.679634903400035,-0.0436280452005985,-2.24311739736364,\ +-2,-0.254961,-3.76197171717172,3.14726947618298,-0.679771500309289,-0.0439848215561435,-2.24346593174388,\ +-2,-0.254961,-3.73444090909091,3.14717493424271,-0.679984130243364,-0.0445401879504004,-2.24400846848719,\ +-2,-0.254961,-3.7069101010101,3.14700747405582,-0.68036075725569,-0.0455238969786011,-2.24496945261956,\ +-2,-0.254961,-3.67937929292929,3.14662978124156,-0.68121020881097,-0.0477425725823085,-2.24713687407135,\ +-2,-0.254961,-3.65184848484848,3.14497845320756,-0.684924134821258,-0.0574429457016584,-2.256613156568,\ +-2,-0.254961,-3.62431767676768,3.15144363729053,-0.670383586345917,-0.0194646054816372,-2.21951216300299,\ +-2,-0.254961,-3.59678686868687,3.1487181790959,-0.676513289149097,-0.0354747263447934,-2.23515243026265,\ +-2,-0.254961,-3.56925606060606,3.14825741955719,-0.677549562257843,-0.0381813596434981,-2.23779653698285,\ +-2,-0.254961,-3.54172525252525,3.14806714565102,-0.677977498557975,-0.0392990829829252,-2.23888843953002,\ +-2,-0.254961,-3.51419444444444,3.1479632243531,-0.678211223174439,-0.0399095464064232,-2.23948480049303,\ +-2,-0.254961,-3.48666363636364,3.14789774326525,-0.678358493680554,-0.0402942010427399,-2.23986056913126,\ +-2,-0.254961,-3.45913282828283,3.14785270296103,-0.678459791759382,-0.0405587806703836,-2.2401190366421,\ +-2,-0.254961,-3.43160202020202,3.14781982436246,-0.678533737504805,-0.0407519189610227,-2.24030771319922,\ +-2,-0.254961,-3.40407121212121,3.14779476757116,-0.678590091582863,-0.0408991097188511,-2.24045150366842,\ +-2,-0.254961,-3.3765404040404,3.14777503809828,-0.678634464233852,-0.0410150062848274,-2.24056472288029,\ +-2,-0.254961,-3.3490095959596,3.14775910023708,-0.678670309345198,-0.0411086298394183,-2.24065618361492,\ +-2,-0.254961,-3.32147878787879,3.14774595679909,-0.678699869647696,-0.0411858381529231,-2.24073160832084,\ +-2,-0.254961,-3.29394797979798,3.14773493209049,-0.678724664813274,-0.0412506004440936,-2.24079487452295,\ +-2,-0.254961,-3.26641717171717,3.14772555201321,-0.678745761114118,-0.041305701700569,-2.24084870287221,\ +-2,-0.254961,-3.23888636363636,3.14771747409996,-0.678763928777669,-0.0413531536731328,-2.2408950586455,\ +-2,-0.254961,-3.21135555555555,3.14771044479612,-0.678779738061962,-0.0413944458141123,-2.24093539688692,\ +-2,-0.254961,-3.18382474747475,3.14770427236364,-0.678793620196255,-0.0414307044476872,-2.24097081790119,\ +-2,-0.254961,-3.15629393939394,3.1476988091247,-0.678805907315968,-0.0414627970756623,-2.24100216914975,\ +-2,-0.254961,-3.12876313131313,3.14769393949328,-0.678816859380258,-0.0414914026832462,-2.2410301139324,\ +-2,-0.254961,-3.10123232323232,3.14768957170706,-0.678826682767529,-0.0415170603085147,-2.24105517883478,\ +-2,-0.254961,-3.07370151515151,3.14768563199029,-0.678835543403533,-0.0415402033315714,-2.24107778722536,\ +-2,-0.254961,-3.04617070707071,3.14768206035255,-0.678843576209853,-0.041561184153024,-2.24109828336388,\ +-2,-0.254961,-3.0186398989899,3.14767880751276,-0.678850892022369,-0.0415802922641954,-2.24111695005404,\ +-2,-0.254961,-2.99110909090909,3.14767583261144,-0.678857582736248,-0.0415977676853127,-2.24113402177131,\ +-2,-0.254961,-2.96357828282828,3.1476731014855,-0.678863725186126,-0.0416138111001577,-2.24114969456341,\ +-2,-0.254961,-2.93604747474747,3.14767058535039,-0.678869384109996,-0.0416285915973566,-2.24116413361283,\ +-2,-0.254961,-2.90851666666667,3.14766825978173,-0.678874614439625,-0.0416422526527479,-2.24117747908094,\ +-2,-0.254961,-2.88098585858586,3.14766610391983,-0.678879463089566,-0.0416549168020689,-2.24118985067274,\ +-2,-0.254961,-2.85345505050505,3.14766409984229,-0.678883970368295,-0.0416666893266988,-2.24120135123748,\ +-2,-0.254961,-2.82592424242424,3.14766223206453,-0.678888171101433,-0.0416776611873823,-2.24121206963461,\ +-2,-0.254961,-2.79839343434343,3.14766048713899,-0.678892095533309,-0.0416879113790646,-2.24122208303417,\ +-2,-0.254961,-2.77086262626263,3.14765885333075,-0.678895770056334,-0.0416975088358519,-2.24123145877784,\ +-2,-0.254961,-2.74333181818182,3.14765732035339,-0.678899217805289,-0.0417065139832818,-2.24124025589522,\ +-2,-0.254961,-2.71580101010101,3.14765587915209,-0.678902459144885,-0.0417149800117954,-2.241248526348,\ +-2,-0.254961,-2.6882702020202,3.14765452172477,-0.67890551207233,-0.0417229539281408,-2.24125631605701,\ +-2,-0.254961,-2.66073939393939,3.14765324097329,-0.67890839255164,-0.041730477428605,-2.2412636657553,\ +-2,-0.254961,-2.63320858585858,3.14765203057941,-0.678911114792876,-0.0417375876283345,-2.24127061170062,\ +-2,-0.254961,-2.60567777777778,3.14765088490055,-0.678913691486589,-0.041744317673674,-2.24127718627358,\ +-2,-0.254961,-2.57814696969697,3.14764979888173,-0.678916134001637,-0.0417506972588454,-2.24128341848244,\ +-2,-0.254961,-2.55061616161616,3.14764876798109,-0.678918452552875,-0.0417567530639565,-2.24128933439096,\ +-2,-0.254961,-2.52308535353535,3.14764778810643,-0.678920656343967,-0.0417625091279719,-2.24129495748277,\ +-2,-0.254961,-2.49555454545454,3.14764685556081,-0.678922753689475,-0.0417679871676387,-2.24130030897294,\ +-2,-0.254961,-2.46802373737374,3.14764596699602,-0.678924752119703,-0.041773206851287,-2.24130540807544,\ +-2,-0.254961,-2.44049292929293,3.14764511937242,-0.678926658471025,-0.0417781860347871,-2.24131027223365,\ +-2,-0.254961,-2.41296212121212,3.1476443099241,-0.678928478964019,-0.0417829409656214,-2.24131491731969,\ +-2,-0.254961,-2.38543131313131,3.1476435361289,-0.678930219271279,-0.0417874864599947,-2.24131935780751,\ +-2,-0.254961,-2.3579005050505,3.14764279568195,-0.678931884576461,-0.0417918360570419,-2.24132360692349,\ +-2,-0.254961,-2.3303696969697,3.14764208647296,-0.678933479625837,-0.0417960021535228,-2.24132767677799,\ +-2,-0.254961,-2.30283888888889,3.14764140656594,-0.678935008773482,-0.0417999961218157,-2.24133157848068,\ +-2,-0.254961,-2.27530808080808,3.14764075418166,-0.678936476020971,-0.041803828413589,-2.24133532224176,\ +-2,-0.254961,-2.24777727272727,3.14764012768211,-0.678937885052329,-0.0418075086511265,-2.24133891746126,\ +-2,-0.254961,-2.22024646464646,3.1476395255567,-0.678939239264931,-0.0418110457079969,-2.24134237280774,\ +-2,-0.254961,-2.19271565656565,3.14763894641014,-0.678940541796838,-0.0418144477804862,-2.24134569628814,\ +-2,-0.254961,-2.16518484848485,3.14763838895167,-0.678941795551088,-0.0418177224510061,-2.24134889530972,\ +-2,-0.254961,-2.13765404040404,3.14763785198538,-0.678943003217282,-0.0418208767445089,-2.24135197673514,\ +-2,-0.254961,-2.11012323232323,3.14763733440175,-0.678944167290853,-0.0418239171787932,-2.24135494693164,\ +-2,-0.254961,-2.08259242424242,3.14763683516989,-0.678945290090274,-0.0418268498094585,-2.2413578118149,\ +-2,-0.254961,-2.05506161616161,3.14763635333079,-0.678946373772467,-0.0418296802701628,-2.24136057688846,\ +-2,-0.254961,-2.02753080808081,3.14763588799108,-0.678947420346646,-0.0418324138087426,-2.24136324727892,\ +-2,-0.254961,-2,3.14763543831755,-0.678948431686732,-0.0418350553196854,-2.24136582776768,\ +-2,-0.253782,-4.72555,3.14756972409539,-0.679096226524487,-0.0422210794535394,-2.24174293426637,\ +-2,-0.253782,-4.69801919191919,3.14756870075152,-0.67909852808019,-0.0422270908681535,-2.24174880680987,\ +-2,-0.253782,-4.67048838383838,3.14756762290236,-0.679100952221206,-0.0422334224623402,-2.24175499213639,\ +-2,-0.253782,-4.64295757575758,3.14756648607421,-0.679103509009177,-0.0422401005160357,-2.24176151591879,\ +-2,-0.253782,-4.61542676767677,3.14756528528996,-0.679106209637858,-0.0422471542661068,-2.2417684067185,\ +-2,-0.253782,-4.58789595959596,3.14756401499631,-0.679109066596937,-0.0422546163342717,-2.24177569640365,\ +-2,-0.253782,-4.56036515151515,3.14756266897787,-0.679112093865173,-0.0422625232315418,-2.24178342064182,\ +-2,-0.253782,-4.53283434343434,3.14756124025543,-0.679115307139137,-0.0422709159556522,-2.24179161948361,\ +-2,-0.253782,-4.50530353535354,3.14755972096502,-0.679118724105429,-0.0422798407021042,-2.24180033805738,\ +-2,-0.253782,-4.47777272727273,3.14755810221292,-0.679122364766398,-0.042289349714857,-2.24180962740017,\ +-2,-0.253782,-4.45024191919192,3.1475563739016,-0.679126251831954,-0.0422995023097455,-2.24181954545756,\ +-2,-0.253782,-4.42271111111111,3.14755452451885,-0.679130411193752,-0.0423103661129758,-2.24183015829348,\ +-2,-0.253782,-4.3951803030303,3.14755254088094,-0.679134872502639,-0.0423220185693453,-2.2418415415637,\ +-2,-0.253782,-4.36764949494949,3.14755040781796,-0.679139669876579,-0.0423345487912986,-2.24185378232202,\ +-2,-0.253782,-4.34011868686869,3.14754810778508,-0.679144842774855,-0.0423480598422008,-2.24186698125092,\ +-2,-0.253782,-4.31258787878788,3.14754562037887,-0.679150437085878,-0.0423626715776347,-2.24188125543719,\ +-2,-0.253782,-4.28505707070707,3.14754292173039,-0.679156506492194,-0.0423785242105865,-2.2418967418547,\ +-2,-0.253782,-4.25752626262626,3.14753998373677,-0.679163114198622,-0.0423957828252278,-2.24191360177399,\ +-2,-0.253782,-4.22999545454545,3.14753677307897,-0.6791703351416,-0.0424146431474212,-2.24193202639939,\ +-2,-0.253782,-4.20246464646465,3.14753324995246,-0.679178258843535,-0.0424353390000209,-2.24195224415219,\ +-2,-0.253782,-4.17493383838384,3.14752936640879,-0.679186993143193,-0.0424581520462153,-2.2419745301888,\ +-2,-0.253782,-4.14740303030303,3.14752506416027,-0.679196669132644,-0.0424834246843086,-2.24199921899767,\ +-2,-0.253782,-4.11987222222222,3.14752027163457,-0.679207447782028,-0.0425115773509055,-2.24202672130284,\ +-2,-0.253782,-4.09234141414141,3.14751489996109,-0.679219528966023,-0.0425431320970549,-2.2420575470953,\ +-2,-0.253782,-4.06481060606061,3.14750883740912,-0.679233163973128,-0.0425787452611381,-2.24209233755122,\ +-2,-0.253782,-4.0372797979798,3.1475019415321,-0.679248673173307,-0.0426192536148631,-2.24213191011185,\ +-2,-0.253782,-4.00974898989899,3.14749402783369,-0.679266471508811,-0.0426657409425053,-2.2421773235247,\ +-2,-0.253782,-3.98221818181818,3.14748485301519,-0.679287106171552,-0.0427196364501754,-2.24222997397945,\ +-2,-0.253782,-3.95468737373737,3.14747408952059,-0.679311313852716,-0.0427828642955942,-2.2422917411834,\ +-2,-0.253782,-3.92715656565657,3.14746128560519,-0.679340110550561,-0.0428580781563236,-2.24236521751087,\ +-2,-0.253782,-3.89962575757576,3.14744580031719,-0.679374937800336,-0.0429490431665543,-2.2424540811168,\ +-2,-0.253782,-3.87209494949495,3.14742669285372,-0.679417911518495,-0.0430612858712603,-2.24256373087614,\ +-2,-0.253782,-3.84456414141414,3.14740252399116,-0.679472268596838,-0.0432032606817812,-2.24270242589285,\ +-2,-0.253782,-3.81703333333333,3.14737097562679,-0.679543222573667,-0.0433885847963848,-2.24288346879108,\ +-2,-0.253782,-3.78950252525252,3.14732805903431,-0.679639744309982,-0.0436406891338868,-2.24312974920641,\ +-2,-0.253782,-3.76197171717172,3.14726627912255,-0.679778690671009,-0.0440036020033985,-2.24348427833956,\ +-2,-0.253782,-3.73444090909091,3.14716969626803,-0.679995910731564,-0.0445709573116541,-2.24403852703813,\ +-2,-0.253782,-3.7069101010101,3.1469973701578,-0.680383481468489,-0.0455832501650604,-2.24502743467397,\ +-2,-0.253782,-3.67937929292929,3.14660272641983,-0.681271056567479,-0.0479015003423112,-2.24729213040343,\ +-2,-0.253782,-3.65184848484848,3.14477371718191,-0.685384597209893,-0.0586456236669169,-2.25778805118403,\ +-2,-0.253782,-3.62431767676768,3.15107850773965,-0.671204782442752,-0.0216094808834024,-2.22160748912882,\ +-2,-0.253782,-3.59678686868687,3.14868541931563,-0.67658696766575,-0.0356671666627792,-2.23534042497115,\ +-2,-0.253782,-3.56925606060606,3.14824608731399,-0.677575049085344,-0.0382479284808198,-2.23786156799765,\ +-2,-0.253782,-3.54172525252525,3.14806146042153,-0.677990284946414,-0.0393324796468187,-2.23892106468965,\ +-2,-0.253782,-3.51419444444444,3.14795981693189,-0.678218886648907,-0.039929562573015,-2.2395043542614,\ +-2,-0.253782,-3.48666363636364,3.14789547564947,-0.678363593671007,-0.0403075216662978,-2.23987358203193,\ +-2,-0.253782,-3.45913282828283,3.1478510859857,-0.678463428424297,-0.0405682792458843,-2.24012831578876,\ +-2,-0.253782,-3.43160202020202,3.14781861344116,-0.678536460932259,-0.0407590322590269,-2.24031466217124,\ +-2,-0.253782,-3.40407121212121,3.14779382695104,-0.678592207088354,-0.0409046351904232,-2.24045690149475,\ +-2,-0.253782,-3.3765404040404,3.1477742864285,-0.678636154779797,-0.0410194218080193,-2.24056903639944,\ +-2,-0.253782,-3.3490095959596,3.14775848581531,-0.678671691212954,-0.0411122391285606,-2.24065970952502,\ +-2,-0.253782,-3.32147878787879,3.1477454451995,-0.678701020262817,-0.0411888434351941,-2.24073454417738,\ +-2,-0.253782,-3.29394797979798,3.14773449950707,-0.678725637716764,-0.0412531415628052,-2.24079735693868,\ +-2,-0.253782,-3.26641717171717,3.1477251814595,-0.678746594509437,-0.0413078784390225,-2.24085082932532,\ +-2,-0.253782,-3.23888636363636,3.14771715313114,-0.678764650653885,-0.0413550391357498,-2.24089690055159,\ +-2,-0.253782,-3.21135555555555,3.14771016408672,-0.678780369392595,-0.0413960947814548,-2.24093700776108,\ +-2,-0.253782,-3.18382474747475,3.14770402478805,-0.678794177007152,-0.0414321587775382,-2.24097223863422,\ +-2,-0.253782,-3.15629393939394,3.1476985891448,-0.678806402062652,-0.0414640893005087,-2.2410034315226,\ +-2,-0.253782,-3.12876313131313,3.14769374273976,-0.678817301889537,-0.0414925584696305,-2.24103124301869,\ +-2,-0.253782,-3.10123232323232,3.14768939468663,-0.678827080896071,-0.0415181001772114,-2.24105619468121,\ +-2,-0.253782,-3.07370151515151,3.14768547187656,-0.678835903507951,-0.0415411438853704,-2.2410787060512,\ +-2,-0.253782,-3.04617070707071,3.14768191483427,-0.67884390348834,-0.0415620389690442,-2.24109911843259,\ +-2,-0.253782,-3.0186398989899,3.14767867468151,-0.678851190767049,-0.0415810725529908,-2.24111771231719,\ +-2,-0.253782,-2.99110909090909,3.14767571087757,-0.678857856522309,-0.0415984827849005,-2.2411347203512,\ +-2,-0.253782,-2.96357828282828,3.14767298951425,-0.678863977015505,-0.0416144688512675,-2.24115033711965,\ +-2,-0.253782,-2.93604747474747,3.14767048201279,-0.678869616521827,-0.0416291986319288,-2.24116472662416,\ +-2,-0.253782,-2.90851666666667,3.1476681641164,-0.678874829596103,-0.0416428146182082,-2.2411780280643,\ +-2,-0.253782,-2.88098585858586,3.14766601510301,-0.678879662843392,-0.0416554385374623,-2.2411903603554,\ +-2,-0.253782,-2.85345505050505,3.14766401716404,-0.678884156316125,-0.041667175002319,-2.2412018256934,\ +-2,-0.253782,-2.82592424242424,3.14766215490979,-0.678888344626626,-0.04167811441643,-2.2412125123935,\ +-2,-0.253782,-2.79839343434343,3.14766041497215,-0.678892257840405,-0.0416883353076574,-2.2412224971695,\ +-2,-0.253782,-2.77086262626263,3.14765878568333,-0.678895922199036,-0.0416979062161319,-2.24123184697814,\ +-2,-0.253782,-2.74333181818182,3.14765725681377,-0.678899360709338,-0.0417068872332078,-2.24124062052261,\ +-2,-0.253782,-2.71580101010101,3.14765581935716,-0.678902593626936,-0.0417153312643697,-2.2412488694862,\ +-2,-0.253782,-2.6882702020202,3.14765446535297,-0.678905638855543,-0.041723285072182,-2.24125663955121,\ +-2,-0.253782,-2.66073939393939,3.14765318773888,-0.678908512278689,-0.0417307901427155,-2.24126397124533,\ +-2,-0.253782,-2.63320858585858,3.14765198022759,-0.67891122803685,-0.0417378834093528,-2.24127090064873,\ +-2,-0.253782,-2.60567777777778,3.14765083720336,-0.678913798760154,-0.0417445978606275,-2.24127745998787,\ +-2,-0.253782,-2.57814696969697,3.14764975363463,-0.678916235764795,-0.0417509630532117,-2.24128367813663,\ +-2,-0.253782,-2.55061616161616,3.14764872500005,-0.678918549219558,-0.041757005546883,-2.24128958104123,\ +-2,-0.253782,-2.52308535353535,3.14764774722537,-0.678920748287664,-0.0417627492749712,-2.24129519208208,\ +-2,-0.253782,-2.49555454545454,3.14764681662952,-0.678922841248054,-0.0417682158611813,-2.24130053238338,\ +-2,-0.253782,-2.46802373737374,3.14764592987825,-0.678924835599556,-0.0417734248916362,-2.24130562107878,\ +-2,-0.253782,-2.44049292929293,3.14764508394435,-0.678926738150651,-0.0417783941493522,-2.24131047554051,\ +-2,-0.253782,-2.41296212121212,3.14764427607293,-0.678928555097126,-0.0417831398170642,-2.24131511157742,\ +-2,-0.253782,-2.38543131313131,3.14764350375163,-0.678930292089487,-0.0417876766532757,-2.2413195436071,\ +-2,-0.253782,-2.3579005050505,3.1476427646844,-0.678931954291646,-0.0417920181455681,-2.24132378480555,\ +-2,-0.253782,-2.3303696969697,3.14764205676875,-0.678933546432201,-0.0417961766445227,-2.24132784723803,\ +-2,-0.253782,-2.30283888888889,3.14764137807579,-0.678935072849352,-0.041800163481059,-2.24133174197371,\ +-2,-0.253782,-2.27530808080808,3.14764072683264,-0.678936537530389,-0.041803989069536,-2.24133547918636,\ +-2,-0.253782,-2.24777727272727,3.14764010140701,-0.678937944146455,-0.0418076629985919,-2.24133906824311,\ +-2,-0.253782,-2.22024646464646,3.14763950029348,-0.678939296083282,-0.0418111941113876,-2.24134251778283,\ +-2,-0.253782,-2.19271565656565,3.14763892210146,-0.678940596468394,-0.0418145905766737,-2.24134583578556,\ +-2,-0.253782,-2.16518484848485,3.14763836554442,-0.678941848195255,-0.0418178599518792,-2.24134902963415,\ +-2,-0.253782,-2.13765404040404,3.14763782943035,-0.67894305394478,-0.0418210092392469,-2.24135210616909,\ +-2,-0.253782,-2.11012323232323,3.14763731265322,-0.678944216204479,-0.0418240449358958,-2.24135507173739,\ +-2,-0.253782,-2.08259242424242,3.14763681418537,-0.678945337285604,-0.0418269730785632,-2.24135793223634,\ +-2,-0.253782,-2.05506161616161,3.14763633307071,-0.678946419338483,-0.041829799283671,-2.24136069315261,\ +-2,-0.253782,-2.02753080808081,3.14763586841856,-0.678947464366285,-0.0418325287832823,-2.24136335959741,\ +-2,-0.253782,-2,3.14763541939818,-0.678948474237399,-0.0418351664574275,-2.24136593633801,\ +-2,-0.251804,-4.72555,3.14756965230001,-0.679096387996195,-0.0422215012001844,-2.24174334627015,\ +-2,-0.251804,-4.69801919191919,3.14756862517949,-0.67909869804578,-0.0422275347998931,-2.24174924048623,\ +-2,-0.251804,-4.67048838383838,3.14756754324766,-0.679101131368941,-0.0422338903768509,-2.24175544924149,\ +-2,-0.251804,-4.64295757575758,3.14756640199683,-0.679103698103744,-0.0422405944105944,-2.24176199840377,\ +-2,-0.251804,-4.61542676767677,3.14756519641108,-0.679106409531272,-0.0422476763660858,-2.24176891675732,\ +-2,-0.251804,-4.58789595959596,3.14756392089255,-0.679109278241374,-0.0422551691266514,-2.24177623642585,\ +-2,-0.251804,-4.56036515151515,3.14756256917458,-0.679112318328133,-0.0422631095045167,-2.24178399337116,\ +-2,-0.251804,-4.53283434343434,3.14756113421872,-0.679115545621445,-0.0422715388456517,-2.24179222798408,\ +-2,-0.251804,-4.50530353535354,3.1475596080921,-0.679118977962726,-0.0422805037499077,-2.24180098578796,\ +-2,-0.251804,-4.47777272727273,3.14755798182075,-0.679122635534905,-0.0422900569329183,-2.24181031828062,\ +-2,-0.251804,-4.45024191919192,3.14755624521301,-0.67912654125959,-0.0423002582634315,-2.24182028394777,\ +-2,-0.251804,-4.42271111111111,3.14755438664571,-0.679130721277884,-0.0423111760191937,-2.24183094948987,\ +-2,-0.251804,-4.3951803030303,3.14755239280375,-0.679135205536225,-0.0423228884170578,-2.24184239131685,\ +-2,-0.251804,-4.36764949494949,3.14755024836053,-0.679140028504948,-0.0423354854898155,-2.24185469738164,\ +-2,-0.251804,-4.34011868686869,3.14754793558325,-0.679145230066082,-0.0423490714050093,-2.24186796944538,\ +-2,-0.251804,-4.31258787878788,3.14754543384139,-0.679150856618749,-0.0423637673521191,-2.24188232589792,\ +-2,-0.251804,-4.28505707070707,3.14754271898966,-0.67915696246704,-0.0423797151675796,-2.24189790529911,\ +-2,-0.251804,-4.25752626262626,3.14753976258613,-0.679163611578387,-0.0423970819273954,-2.24191487086529,\ +-2,-0.251804,-4.22999545454545,3.14753653089203,-0.679170879833095,-0.0424160658227065,-2.24193341620912,\ +-2,-0.251804,-4.20246464646465,3.1475329835785,-0.679178857932971,-0.042436903756841,-2.24195377276119,\ +-2,-0.251804,-4.17493383838384,3.14752907203491,-0.679187655205943,-0.0424598812825144,-2.2419762194776,\ +-2,-0.251804,-4.14740303030303,3.14752473712795,-0.679197404646007,-0.0424853457656649,-2.24200109569967,\ +-2,-0.251804,-4.11987222222222,3.14751990619146,-0.67920826968331,-0.0425137240681771,-2.24202881842828,\ +-2,-0.251804,-4.09234141414141,3.14751448892016,-0.679220453419323,-0.0425455466691072,-2.24205990588775,\ +-2,-0.251804,-4.06481060606061,3.14750837167165,-0.67923421144185,-0.0425814811361709,-2.24209501022416,\ +-2,-0.251804,-4.0372797979798,3.14750140940728,-0.679249869950758,-0.0426223794681471,-2.24213496375405,\ +-2,-0.251804,-4.00974898989899,3.14749341404512,-0.679267851952457,-0.0426693465120299,-2.24218084580111,\ +-2,-0.251804,-3.98221818181818,3.14748413721296,-0.679288716049467,-0.042723841277202,-2.24223408166976,\ +-2,-0.251804,-3.95468737373737,3.14747324398583,-0.679313215506085,-0.0427878312085449,-2.24229659335451,\ +-2,-0.251804,-3.92715656565657,3.14746027158564,-0.67934239113534,-0.0428640347971423,-2.24237103654592,\ +-2,-0.251804,-3.89962575757576,3.14744456193671,-0.679377722984962,-0.0429563177676146,-2.24246118766558,\ +-2,-0.251804,-3.87209494949495,3.14742514649259,-0.679421389368292,-0.0430703696388348,-2.24257260479743,\ +-2,-0.251804,-3.84456414141414,3.14740053865829,-0.679476733717796,-0.0432149230948717,-2.24271381888977,\ +-2,-0.251804,-3.81703333333333,3.14736833396417,-0.679549163815665,-0.0434041026780002,-2.24289862819043,\ +-2,-0.251804,-3.78950252525252,3.14732437234796,-0.679648035866858,-0.0436623457838144,-2.24315090556093,\ +-2,-0.251804,-3.76197171717172,3.14726077809777,-0.679791062773077,-0.0440359165960948,-2.24351584642518,\ +-2,-0.251804,-3.73444090909091,3.14716061885434,-0.680016326325631,-0.0446242806356364,-2.24409061852734,\ +-2,-0.251804,-3.7069101010101,3.14697963462018,-0.680423369651292,-0.0456874337850852,-2.24512921152345,\ +-2,-0.251804,-3.67937929292929,3.1465538161562,-0.68138105839421,-0.048188813218262,-2.24757280599641,\ +-2,-0.251804,-3.65184848484848,3.14434790440806,-0.6863422731554,-0.0611469696746458,-2.26023161300371,\ +-2,-0.251804,-3.62431767676768,3.15060061036885,-0.672279599462226,-0.0244167867088376,-2.22434994271581,\ +-2,-0.251804,-3.59678686868687,3.14863460051013,-0.676701261906311,-0.0359656908594841,-2.2356320528895,\ +-2,-0.251804,-3.56925606060606,3.14822793988232,-0.677615863640122,-0.0383545316842587,-2.23796570853518,\ +-2,-0.251804,-3.54172525252525,3.14805223293589,-0.678011038060407,-0.0393866845363563,-2.23897401737918,\ +-2,-0.251804,-3.51419444444444,3.14795424530395,-0.678231417541318,-0.0399622919089212,-2.23953632750915,\ +-2,-0.251804,-3.48666363636364,3.14789175029505,-0.678371972194456,-0.040329405463504,-2.23989496028633,\ +-2,-0.251804,-3.45913282828283,3.14784842089762,-0.678469422351437,-0.040583934735389,-2.24014360961707,\ +-2,-0.251804,-3.43160202020202,3.14781661285944,-0.678540960348686,-0.0407707842481775,-2.2403261426749,\ +-2,-0.251804,-3.40407121212121,3.14779227011479,-0.678595708497246,-0.0409137804918144,-2.24046583552836,\ +-2,-0.251804,-3.3765404040404,3.14777304054492,-0.678638956839316,-0.041026740484476,-2.24057618600542,\ +-2,-0.251804,-3.3490095959596,3.14775746623876,-0.678673984295754,-0.0411182284128657,-2.24066556044945,\ +-2,-0.251804,-3.32147878787879,3.14774459543501,-0.678702931429102,-0.0411938351948586,-2.24073942062122,\ +-2,-0.251804,-3.29394797979798,3.1477337804112,-0.678727255002251,-0.0412573657376018,-2.2408014835298,\ +-2,-0.251804,-3.26641717171717,3.14772456505636,-0.678747980833436,-0.0413114993673886,-2.24085436660575,\ +-2,-0.251804,-3.23888636363636,3.14771661889625,-0.678765852177029,-0.0413581773842703,-2.24089996630269,\ +-2,-0.251804,-3.21135555555555,3.1477096966218,-0.678781420746469,-0.0413988408040788,-2.24093969034718,\ +-2,-0.251804,-3.18382474747475,3.14770361231508,-0.678795104681154,-0.0414345817617126,-2.24097460564447,\ +-2,-0.251804,-3.15629393939394,3.1476982225014,-0.678807226663464,-0.041466243068651,-2.24100553553604,\ +-2,-0.251804,-3.12876313131313,3.14769341469145,-0.678818039687896,-0.0414944855191578,-2.24103312555099,\ +-2,-0.251804,-3.10123232323232,3.14768909944521,-0.678827744909997,-0.0415198345097783,-2.24105788894855,\ +-2,-0.251804,-3.07370151515151,3.14768520475591,-0.678836504276727,-0.0415427130284485,-2.24108023894514,\ +-2,-0.251804,-3.04617070707071,3.14768167200007,-0.678844449635583,-0.0415634654465744,-2.24110051195672,\ +-2,-0.251804,-3.0186398989899,3.14767845296611,-0.678851689416959,-0.0415823749726336,-2.24111898464933,\ +-2,-0.251804,-2.99110909090909,3.14767550764117,-0.678858313611955,-0.0415996766536259,-2.24113588664008,\ +-2,-0.251804,-2.96357828282828,3.14767280253936,-0.678864397532162,-0.0416155671952989,-2.24115141009058,\ +-2,-0.251804,-2.93604747474747,3.14767030942302,-0.678870004685581,-0.0416302124736838,-2.24116571704491,\ +-2,-0.251804,-2.90851666666667,3.14766800431331,-0.678875189001903,-0.04164375334729,-2.24117894510758,\ +-2,-0.251804,-2.88098585858586,3.14766586671652,-0.678879996572645,-0.0416563102021805,-2.24119121188359,\ +-2,-0.251804,-2.85345505050505,3.14766387901303,-0.678884467025232,-0.0416679865409106,-2.24120261848444,\ +-2,-0.251804,-2.82592424242424,3.1476620259706,-0.678888634617812,-0.0416788718420491,-2.24121325232165,\ +-2,-0.251804,-2.79839343434343,3.14766029435325,-0.678892529118831,-0.0416890438575661,-2.24122318935103,\ +-2,-0.251804,-2.77086262626263,3.1476586726046,-0.678896176519209,-0.0416985704729243,-2.24123249588978,\ +-2,-0.251804,-2.74333181818182,3.14765715058966,-0.678899599613099,-0.0417075112239958,-2.24124123009844,\ +-2,-0.251804,-2.71580101010101,3.14765571938278,-0.678902818474721,-0.0417159185424682,-2.24124944319745,\ +-2,-0.251804,-2.6882702020202,3.14765437109257,-0.678905850852301,-0.0417238387847919,-2.24125718047237,\ +-2,-0.251804,-2.66073939393939,3.14765309871621,-0.678908712495482,-0.0417313130873284,-2.24126448210928,\ +-2,-0.251804,-2.63320858585858,3.14765189601793,-0.678911417428941,-0.0417383780810085,-2.24127138389286,\ +-2,-0.251804,-2.60567777777778,3.14765075742668,-0.678913978182239,-0.0417450664917098,-2.24127791779299,\ +-2,-0.251804,-2.57814696969697,3.14764967794987,-0.678916405983906,-0.0417514076471241,-2.24128411245987,\ +-2,-0.251804,-2.55061616161616,3.14764865310029,-0.67891871092602,-0.0417574279066717,-2.24128999364398,\ +-2,-0.251804,-2.52308535353535,3.1476476788336,-0.678920902104443,-0.0417631510277592,-2.24129558455388,\ +-2,-0.251804,-2.49555454545454,3.14764675149514,-0.67892298773878,-0.041768598479113,-2.24130090616237,\ +-2,-0.251804,-2.46802373737374,3.14764586777398,-0.678924975275425,-0.0417737897098986,-2.2413059774693,\ +-2,-0.251804,-2.44049292929293,3.14764502466355,-0.678926871476379,-0.0417787423817392,-2.24131081572829,\ +-2,-0.251804,-2.41296212121212,3.14764421942734,-0.678928682496123,-0.0417834725694664,-2.24131543664283,\ +-2,-0.251804,-2.38543131313131,3.14764344956936,-0.678930413948336,-0.0417879949354087,-2.24131985453652,\ +-2,-0.251804,-2.3579005050505,3.1476427128082,-0.678932070964026,-0.0417923228812044,-2.24132408250141,\ +-2,-0.251804,-2.3303696969697,3.14764200705447,-0.678933658242311,-0.0417964686804455,-2.24132813252756,\ +-2,-0.251804,-2.30283888888889,3.14764133039104,-0.678935180094934,-0.0418004435949187,-2.24133201561659,\ +-2,-0.251804,-2.27530808080808,3.14764068105563,-0.678936640485352,-0.0418042579767642,-2.2413357418815,\ +-2,-0.251804,-2.24777727272727,3.14764005742551,-0.678938043063225,-0.0418079213585007,-2.24133932063459,\ +-2,-0.251804,-2.22024646464646,3.14763945800388,-0.678939391194869,-0.041811442532567,-2.24134276046517,\ +-2,-0.251804,-2.19271565656565,3.14763888140798,-0.678940687990214,-0.0418148296217775,-2.24134606930843,\ +-2,-0.251804,-2.16518484848485,3.14763832635838,-0.678941936326776,-0.0418180901418777,-2.24134925450648,\ +-2,-0.251804,-2.13765404040404,3.14763779166951,-0.678943138870949,-0.0418212310572176,-2.24135232286279,\ +-2,-0.251804,-2.11012323232323,3.14763727624121,-0.678944298097039,-0.0418242588304065,-2.24135528069067,\ +-2,-0.251804,-2.08259242424242,3.14763677905121,-0.67894541630424,-0.0418271794666991,-2.24135813385666,\ +-2,-0.251804,-2.05506161616161,3.14763629914828,-0.678946495631873,-0.0418299985537494,-2.2413608878193,\ +-2,-0.251804,-2.02753080808081,3.14763583564624,-0.678947538073017,-0.0418327212972913,-2.2413635476641,\ +-2,-0.251804,-2,3.14763538771845,-0.678948545486823,-0.0418353525532191,-2.24136611813476,\ +-2,-0.247083,-4.72555,3.14756947988128,-0.679096775775248,-0.0422225140371375,-2.24174433570931,\ +-2,-0.247083,-4.69801919191919,3.14756844366188,-0.679099106288689,-0.0422286010862275,-2.24175028214004,\ +-2,-0.247083,-4.67048838383838,3.14756735189145,-0.679101561739386,-0.0422350144579142,-2.2417565473549,\ +-2,-0.247083,-4.64295757575758,3.1475661999799,-0.679104152450753,-0.0422417811158501,-2.24176315769467,\ +-2,-0.247083,-4.61542676767677,3.14756498281705,-0.679106889915774,-0.0422489310784592,-2.24177014248429,\ +-2,-0.247083,-4.58789595959596,3.14756369469697,-0.679109786967447,-0.0422564978641476,-2.24177753446787,\ +-2,-0.247083,-4.56036515151515,3.14756232922846,-0.679112857979954,-0.0422645190167176,-2.24178537032188,\ +-2,-0.247083,-4.53283434343434,3.14756087922897,-0.679116119107172,-0.0422730367283592,-2.24179369126384,\ +-2,-0.247083,-4.50530353535354,3.14755933659831,-0.67911958856692,-0.0422820985820404,-2.24180254377749,\ +-2,-0.247083,-4.47777272727273,3.14755769216717,-0.679123286981461,-0.0422917584408698,-2.24181198048163,\ +-2,-0.247083,-4.45024191919192,3.14755593551475,-0.679127237787702,-0.0423020775195403,-2.24182206117681,\ +-2,-0.247083,-4.42271111111111,3.14755405474773,-0.679131467734393,-0.042313125682876,-2.24183285411391,\ +-2,-0.247083,-4.3951803030303,3.14755203623061,-0.679136007488508,-0.0423249830297026,-2.24184443754134,\ +-2,-0.247083,-4.36764949494949,3.1475498642546,-0.679140892379975,-0.0423377418379623,-2.24185690160535,\ +-2,-0.247083,-4.34011868686869,3.14754752062796,-0.679146163322939,-0.0423515089709929,-2.24187035070057,\ +-2,-0.247083,-4.31258787878788,3.14754498416535,-0.679151867964469,-0.0423664088777816,-2.24188490640108,\ +-2,-0.247083,-4.28505707070707,3.14754223004547,-0.679158062128955,-0.042382587365585,-2.24190071114579,\ +-2,-0.247083,-4.25752626262626,3.14753922899618,-0.679164811651004,-0.0424002163872883,-2.24191793291528,\ +-2,-0.247083,-4.22999545454545,3.14753594625006,-0.679172194724505,-0.0424195001768777,-2.24193677122547,\ +-2,-0.247083,-4.20246464646465,3.14753234019122,-0.679180304945746,-0.0424406831977318,-2.24195746489233,\ +-2,-0.247083,-4.17493383838384,3.1475283605819,-0.679189255302234,-0.0424640605609973,-2.24198030220957,\ +-2,-0.247083,-4.14740303030303,3.14752394620752,-0.679199183468831,-0.0424899918585287,-2.24200563446205,\ +-2,-0.247083,-4.11987222222222,3.14751902170553,-0.679210258939969,-0.0425189197914564,-2.24203389412392,\ +-2,-0.247083,-4.09234141414141,3.14751349322742,-0.679222692786104,-0.0425513956529766,-2.24206561975285,\ +-2,-0.247083,-4.06481060606061,3.14750724240017,-0.679236751234477,-0.0425881147998607,-2.242101490642,\ +-2,-0.247083,-4.0372797979798,3.14750011775554,-0.679252774945354,-0.0426299669998916,-2.24214237600443,\ +-2,-0.247083,-4.00974898989899,3.14749192229471,-0.679271206979778,-0.0426781094805846,-2.24218940633424,\ +-2,-0.247083,-3.98221818181818,3.1474823949903,-0.679292634402394,-0.0427340755913246,-2.24224407955858,\ +-2,-0.247083,-3.95468737373737,3.1474711824726,-0.679317851960766,-0.0427999411267958,-2.24230842351867,\ +-2,-0.247083,-3.92715656565657,3.14745779423341,-0.679347962834406,-0.0428785874725864,-2.24238525303654,\ +-2,-0.247083,-3.89962575757576,3.14744152895058,-0.679384544334716,-0.0429741343955186,-2.24247859270733,\ +-2,-0.247083,-3.87209494949495,3.14742134759783,-0.679429933287931,-0.043092685433007,-2.24259440506915,\ +-2,-0.247083,-3.84456414141414,3.14739564236036,-0.679487745756504,-0.0432436853491493,-2.24274191670038,\ +-2,-0.247083,-3.81703333333333,3.14736178571213,-0.679563891188464,-0.0434425689831499,-2.24293620587633,\ +-2,-0.247083,-3.78950252525252,3.14731516968268,-0.679668733158524,-0.0437164048714647,-2.24320371581677,\ +-2,-0.247083,-3.76197171717172,3.14724690672636,-0.679822260237207,-0.0441174009987482,-2.2435954484373,\ +-2,-0.247083,-3.73444090909091,3.14713735912951,-0.680068638704092,-0.0447609149111769,-2.24422409638204,\ +-2,-0.247083,-3.7069101010101,3.1469328394043,-0.680528614621303,-0.0459623222656917,-2.24539774974,\ +-2,-0.247083,-3.67937929292929,3.14641534523661,-0.68169248697735,-0.0490022309999102,-2.24836743282075,\ +-2,-0.247083,-3.65184848484848,3.14252591674865,-0.690440021888172,-0.0718498462389868,-2.27068723987525,\ +-2,-0.247083,-3.62431767676768,3.1498604510647,-0.673944257746257,-0.0287646941325645,-2.22859740809778,\ +-2,-0.247083,-3.59678686868687,3.14853074067376,-0.676934848292408,-0.0365757932402154,-2.23622806115028,\ +-2,-0.247083,-3.56925606060606,3.14818853994758,-0.677704476223117,-0.0385859781685787,-2.23819180831931,\ +-2,-0.247083,-3.54172525252525,3.14803166029034,-0.678057307052283,-0.0395075341396594,-2.2390920752071,\ +-2,-0.247083,-3.51419444444444,3.14794163668218,-0.678259775013251,-0.0400363585590616,-2.23960868312801,\ +-2,-0.247083,-3.48666363636364,3.14788323882189,-0.678391114957703,-0.0403794042910293,-2.23994380407908,\ +-2,-0.247083,-3.45913282828283,3.14784229123933,-0.678483208284284,-0.0406199421011918,-2.24017878516818,\ +-2,-0.247083,-3.43160202020202,3.14781198898991,-0.678551359681181,-0.0407979461800805,-2.24035267713257,\ +-2,-0.247083,-3.40407121212121,3.14778865833773,-0.678603831579092,-0.0409349971031704,-2.24048656200974,\ +-2,-0.247083,-3.3765404040404,3.14777014157445,-0.67864547678061,-0.0410437698660784,-2.24059282198723,\ +-2,-0.247083,-3.3490095959596,3.14775508813538,-0.678679332778781,-0.0411321980721489,-2.24067920739232,\ +-2,-0.247083,-3.32147878787879,3.14774260946146,-0.678707397990957,-0.0412055013714191,-2.24075081729466,\ +-2,-0.247083,-3.29394797979798,3.14773209700781,-0.678731041067472,-0.0412672545305433,-2.2408111438794,\ +-2,-0.247083,-3.26641717171717,3.14772311999696,-0.678751230850129,-0.0413199880595424,-2.24086265919862,\ +-2,-0.247083,-3.23888636363636,3.14771536492518,-0.67876867242575,-0.0413655435689524,-2.24090716231939,\ +-2,-0.247083,-3.21135555555555,3.14770859819766,-0.678783891161737,-0.0414052932616155,-2.24094599374497,\ +-2,-0.247083,-3.18382474747475,3.14770264219366,-0.67879728653666,-0.0414402805323531,-2.24098017276646,\ +-2,-0.247083,-3.15629393939394,3.14769735944853,-0.678809167716024,-0.0414713128880296,-2.24101048823631,\ +-2,-0.247083,-3.12876313131313,3.1476926419127,-0.678819777709109,-0.0414990250426227,-2.24103756020585,\ +-2,-0.247083,-3.10123232323232,3.14768840348335,-0.678829310165827,-0.0415239227887454,-2.24106188278322,\ +-2,-0.247083,-3.07370151515151,3.14768457470146,-0.678837921303262,-0.0415464141485188,-2.24108385456475,\ +-2,-0.247083,-3.04617070707071,3.14768109891562,-0.678845738533495,-0.0415668319085447,-2.24110380064926,\ +-2,-0.247083,-3.0186398989899,3.1476779294601,-0.678852866810284,-0.0415854501966751,-2.24112198883189,\ +-2,-0.247083,-2.99110909090909,3.14767502754754,-0.678859393368479,-0.0416024968609025,-2.24113864169708,\ +-2,-0.247083,-2.96357828282828,3.14767236067372,-0.678865391311852,-0.041618162840385,-2.24115394577306,\ +-2,-0.247083,-2.93604747474747,3.1476699013948,-0.678870922363088,-0.0416326093480945,-2.24116805854856,\ +-2,-0.247083,-2.90851666666667,3.14766762637943,-0.678876038995624,-0.0416459734389662,-2.24118111391239,\ +-2,-0.247083,-2.88098585858586,3.14766551566629,-0.678880786103597,-0.0416583723716463,-2.24119322641439,\ +-2,-0.247083,-2.85345505050505,3.14766355207673,-0.678885202322616,-0.0416699070581603,-2.24120449463537,\ +-2,-0.247083,-2.82592424242424,3.14766172074636,-0.678889321083621,-0.0416806648165099,-2.24121500387618,\ +-2,-0.247083,-2.79839343434343,3.14766000874788,-0.678893171460746,-0.0416907215851857,-2.24122482832106,\ +-2,-0.247083,-2.77086262626263,3.14765840478558,-0.678896778858659,-0.0417001437184355,-2.24123403279138,\ +-2,-0.247083,-2.74333181818182,3.14765689894579,-0.678900165573765,-0.0417089894520563,-2.24124267417761,\ +-2,-0.247083,-2.71580101010101,3.14765548249175,-0.678903351255465,-0.0417173101081592,-2.24125080261625,\ +-2,-0.247083,-2.6882702020202,3.14765414769404,-0.678906353287644,-0.0417251510915793,-2.24125846246325,\ +-2,-0.247083,-2.66073939393939,3.14765288768947,-0.678909187106042,-0.0417325527187847,-2.24126569310371,\ +-2,-0.247083,-2.63320858585858,3.14765169636298,-0.678911866463702,-0.0417395509112474,-2.24127252962926,\ +-2,-0.247083,-2.60567777777778,3.14765056824848,-0.678914403654192,-0.0417461777784397,-2.24127900340762,\ +-2,-0.247083,-2.57814696969697,3.14764949844494,-0.678916809700202,-0.0417524621104317,-2.24128514256377,\ +-2,-0.247083,-2.55061616161616,3.1476484825452,-0.678919094513627,-0.0417584297960218,-2.24129097238844,\ +-2,-0.247083,-2.52308535353535,3.14764751657534,-0.678921267032055,-0.0417641041792214,-2.24129651568637,\ +-2,-0.247083,-2.49555454545454,3.14764659694269,-0.678923335335607,-0.0417695063644354,-2.24130179307442,\ +-2,-0.247083,-2.46802373737374,3.14764572039116,-0.678925306747361,-0.0417746554787536,-2.24130682323782,\ +-2,-0.247083,-2.44049292929293,3.1476448839628,-0.678927187919988,-0.0417795688982243,-2.24131162315122,\ +-2,-0.247083,-2.41296212121212,3.14764408496432,-0.678928984910741,-0.0417842624437505,-2.24131620827005,\ +-2,-0.247083,-2.38543131313131,3.14764332093826,-0.678930703246627,-0.0417887505512637,-2.24132059269672,\ +-2,-0.247083,-2.3579005050505,3.14764258963768,-0.678932347981169,-0.041793046420028,-2.2413247893256,\ +-2,-0.247083,-2.3303696969697,3.14764188900406,-0.678933923744058,-0.0417971621422914,-2.24132880996958,\ +-2,-0.247083,-2.30283888888889,3.147641217148,-0.678935434784665,-0.0418011088169561,-2.24133266547118,\ +-2,-0.247083,-2.27530808080808,3.14764057233216,-0.678936885010316,-0.041804896649528,-2.24133636580014,\ +-2,-0.247083,-2.24777727272727,3.14763995295634,-0.678938278020018,-0.0418085350402344,-2.24133992013951,\ +-2,-0.247083,-2.22024646464646,3.14763935754412,-0.678939617134294,-0.0418120326619149,-2.2413433369618,\ +-2,-0.247083,-2.19271565656565,3.14763878473117,-0.678940905421601,-0.0418153975290425,-2.24134662409633,\ +-2,-0.247083,-2.16518484848485,3.14763823325478,-0.678942145721798,-0.0418186370590313,-2.24134978878917,\ +-2,-0.247083,-2.13765404040404,3.14763770194463,-0.678943340667053,-0.0418217581268202,-2.24135283775643,\ +-2,-0.247083,-2.11012323232323,3.14763718971441,-0.678944492700488,-0.041824767113574,-2.24135577723187,\ +-2,-0.247083,-2.08259242424242,3.14763669555449,-0.678945604092848,-0.0418276699502325,-2.2413586130094,\ +-2,-0.247083,-2.05506161616161,3.14763621852524,-0.678946676957439,-0.041830472156529,-2.24136135048128,\ +-2,-0.247083,-2.02753080808081,3.14763575775103,-0.678947713263549,-0.0418331788760203,-2.24136399467219,\ +-2,-0.247083,-2,3.14763531241494,-0.678948714848499,-0.0418357949075961,-2.24136655027021,\ +-2,-0.245821,-4.72555,3.14756943353583,-0.679096880008674,-0.0422227862835678,-2.24174460166651,\ +-2,-0.245821,-4.69801919191919,3.14756839486366,-0.679099216038502,-0.0422288877408696,-2.2417505621726,\ +-2,-0.245821,-4.67048838383838,3.14756730044049,-0.679101677455382,-0.0422353166955824,-2.2417568426105,\ +-2,-0.245821,-4.64295757575758,3.14756614565384,-0.679104274632991,-0.0422421002426425,-2.24176346944923,\ +-2,-0.245821,-4.61542676767677,3.147564925368,-0.679107019121797,-0.0422492685506195,-2.24177047216043,\ +-2,-0.245821,-4.58789595959596,3.14756363384769,-0.679109923820791,-0.0422568553102783,-2.24177788365655,\ +-2,-0.245821,-4.56036515151515,3.14756226466788,-0.6791130031802,-0.0422648982640559,-2.24178574080814,\ +-2,-0.245821,-4.53283434343434,3.14756081060691,-0.679116273441912,-0.0422734398340096,-2.24179408505726,\ +-2,-0.245821,-4.50530353535354,3.14755926351909,-0.679119752926043,-0.0422825278702925,-2.24180296314866,\ +-2,-0.245821,-4.47777272727273,3.147557614182,-0.679123462374311,-0.0422922165480286,-2.24181242800595,\ +-2,-0.245821,-4.45024191919192,3.14755585211252,-0.679127425363827,-0.0423025674480956,-2.24182253978741,\ +-2,-0.245821,-4.42271111111111,3.14755396534376,-0.679131668808752,-0.042313650867361,-2.24183336716598,\ +-2,-0.245821,-4.3951803030303,3.14755194015295,-0.679136223572338,-0.0423255474172973,-2.24184498889089,\ +-2,-0.245821,-4.36764949494949,3.14754976072714,-0.679141125218815,-0.0423383499878359,-2.24185749570621,\ +-2,-0.245821,-4.34011868686869,3.1475474087494,-0.679146414943879,-0.0423521661776776,-2.24187099272497,\ +-2,-0.245821,-4.31258787878788,3.14754486288289,-0.679152140735281,-0.0423671213256405,-2.24188560239051,\ +-2,-0.245821,-4.28505707070707,3.14754209812163,-0.67915835883279,-0.0423833623239179,-2.24190146820163,\ +-2,-0.245821,-4.25752626262626,3.14753908496646,-0.679165135581654,-0.0424010624591186,-2.2419187594418,\ +-2,-0.245821,-4.22999545454545,3.14753578836829,-0.679172549809111,-0.0424204276194728,-2.24193767724299,\ +-2,-0.245821,-4.20246464646465,3.1475321663586,-0.679180695904687,-0.0424417043402062,-2.24195846244514,\ +-2,-0.245821,-4.17493383838384,3.14752816825314,-0.679189687860003,-0.0424651903551136,-2.24198140590404,\ +-2,-0.245821,-4.14740303030303,3.14752373226551,-0.679199664635961,-0.0424912486150379,-2.24200686218591,\ +-2,-0.245821,-4.11987222222222,3.1475187822913,-0.679210797395548,-0.0425203261792011,-2.24203526802237,\ +-2,-0.245821,-4.09234141414141,3.14751322350544,-0.679223299405422,-0.0425529800770386,-2.24206716757476,\ +-2,-0.245821,-4.06481060606061,3.14750693622884,-0.679237439830333,-0.0425899133377739,-2.24210324763147,\ +-2,-0.245821,-4.0372797979798,3.14749976721445,-0.679253563331226,-0.0426320261785346,-2.24214438761349,\ +-2,-0.245821,-4.00974898989899,3.14749151699064,-0.679272118530532,-0.0426804903525829,-2.24219173220515,\ +-2,-0.245821,-3.98221818181818,3.14748192101121,-0.679293700406983,-0.0427368598800338,-2.24224679952677,\ +-2,-0.245821,-3.95468737373737,3.1474706207618,-0.679319115278742,-0.0428032407767305,-2.24231164694261,\ +-2,-0.245821,-3.92715656565657,3.1474571179714,-0.679349483784251,-0.0428825600291093,-2.24238913382211,\ +-2,-0.245821,-3.89962575757576,3.14744069915874,-0.679386410581418,-0.0429790088300862,-2.24248335453642,\ +-2,-0.245821,-3.87209494949495,3.1474203053772,-0.679432277298483,-0.0430988077350899,-2.24260038593848,\ +-2,-0.245821,-3.84456414141414,3.14739429432703,-0.679490777556331,-0.0432516040824427,-2.24274965250113,\ +-2,-0.245821,-3.81703333333333,3.14735997450046,-0.679567964701408,-0.0434532085584561,-2.24294659966428,\ +-2,-0.245821,-3.78950252525252,3.14731260804469,-0.679674494420812,-0.0437314526655441,-2.24321841598818,\ +-2,-0.245821,-3.76197171717172,3.1472430095698,-0.679831025152988,-0.0441402940109388,-2.24361781259258,\ +-2,-0.245821,-3.73444090909091,3.14713072707889,-0.6800835545444,-0.044799873473079,-2.24426215495295,\ +-2,-0.245821,-3.7069101010101,3.14691912800009,-0.680559452310515,-0.0460428669751534,-2.245476433767,\ +-2,-0.245821,-3.67937929292929,3.14637195098923,-0.681790082985363,-0.0492571412189248,-2.24861645429827,\ +-2,-0.245821,-3.65184848484848,3.14163349214444,-0.69244713306268,-0.0770922035801909,-2.27580849227476,\ +-2,-0.245821,-3.62431767676768,3.14972078687306,-0.674258370062731,-0.0295851215354726,-2.22939888261245,\ +-2,-0.245821,-3.59678686868687,3.14850644700898,-0.676989486057691,-0.0367185011746776,-2.23636747235486,\ +-2,-0.245821,-3.56925606060606,3.14817884339473,-0.677726284294603,-0.038642938493006,-2.23824745278976,\ +-2,-0.245821,-3.54172525252525,3.14802648053595,-0.678068956599915,-0.0395379614983033,-2.2391217996561,\ +-2,-0.245821,-3.51419444444444,3.14793842075934,-0.678267007797537,-0.04005524980947,-2.23962713796716,\ +-2,-0.245821,-3.48666363636364,3.14788104972603,-0.678396038352623,-0.0403922636661497,-2.23995636638672,\ +-2,-0.245821,-3.45913282828283,3.14784070552329,-0.678486774645355,-0.0406292570506471,-2.24018788493077,\ +-2,-0.245821,-3.43160202020202,3.14781078766425,-0.678554061527536,-0.0408050031105868,-2.24035957103925,\ +-2,-0.245821,-3.40407121212121,3.1477877168609,-0.678605949011361,-0.0409405276072799,-2.24049196475236,\ +-2,-0.245821,-3.3765404040404,3.14776938392511,-0.678647180774934,-0.0410482205149828,-2.24059716982063,\ +-2,-0.245821,-3.3490095959596,3.14775446529432,-0.678680733581997,-0.0411358568186703,-2.24068278161726,\ +-2,-0.245821,-3.32147878787879,3.14774208840662,-0.678708569871481,-0.0412085621966159,-2.24075380741101,\ +-2,-0.245821,-3.29394797979798,3.14773165468356,-0.67873203587862,-0.0412698528696783,-2.24081368219368,\ +-2,-0.245821,-3.26641717171717,3.14772273981935,-0.678752085890103,-0.0413222213314921,-2.24086484087923,\ +-2,-0.245821,-3.23888636363636,3.14771503466085,-0.678769415208071,-0.0413674836360516,-2.24090905756854,\ +-2,-0.245821,-3.21135555555555,3.14770830862539,-0.678784542425425,-0.0414069942919384,-2.24094765547939,\ +-2,-0.245821,-3.18382474747475,3.1477023862313,-0.678797862209842,-0.0414417841284512,-2.24098164162762,\ +-2,-0.245821,-3.15629393939394,3.14769713156689,-0.678809680234143,-0.0414726515299371,-2.24101179595394,\ +-2,-0.245821,-3.12876313131313,3.1476924377321,-0.678820236922308,-0.0415002244578364,-2.24103873191308,\ +-2,-0.245821,-3.10123232323232,3.14768821948971,-0.678829723977466,-0.0415250036199896,-2.24106293864593,\ +-2,-0.245821,-3.07370151515151,3.14768440804255,-0.67883829612814,-0.0415473931505711,-2.24108481095065,\ +-2,-0.245821,-3.04617070707071,3.1476809472523,-0.678846079632504,-0.0415677228222709,-2.24110467098177,\ +-2,-0.245821,-3.0186398989899,3.14767779085589,-0.678853178538649,-0.0415862643974574,-2.24112278422363,\ +-2,-0.245821,-2.99110909090909,3.14767490038559,-0.678859679362586,-0.0416032438465882,-2.24113937142647,\ +-2,-0.245821,-2.96357828282828,3.14767224359347,-0.678865654631662,-0.0416188506032529,-2.24115461764775,\ +-2,-0.245821,-2.93604747474747,3.14766979324316,-0.678871165601978,-0.0416332446617713,-2.2411686791857,\ +-2,-0.245821,-2.90851666666667,3.14766752617267,-0.678876264366048,-0.0416465620821448,-2.24118168895719,\ +-2,-0.245821,-2.88098585858586,3.14766542256005,-0.678880995504542,-0.0416589193042728,-2.24119376071219,\ +-2,-0.245821,-2.85345505050505,3.14766346534222,-0.678885397393211,-0.0416704165614623,-2.24120499236851,\ +-2,-0.245821,-2.82592424242424,3.1476616397512,-0.678889503246114,-0.0416811406052412,-2.24121546867361,\ +-2,-0.245821,-2.79839343434343,3.14765993294069,-0.67889334195522,-0.041691166898311,-2.2412252633469,\ +-2,-0.245821,-2.77086262626263,3.14765833368341,-0.67889693877129,-0.0417005613929347,-2.24123444081708,\ +-2,-0.245821,-2.74333181818182,3.14765683212382,-0.678900315859984,-0.0417093819834055,-2.24124305764099,\ +-2,-0.245821,-2.71580101010101,3.14765541957482,-0.678903492759047,-0.0417176797002139,-2.24125116367027,\ +-2,-0.245821,-2.6882702020202,3.14765408834957,-0.678906486756563,-0.0417254996979577,-2.24125880301638,\ +-2,-0.245821,-2.66073939393939,3.14765283162161,-0.678909313205681,-0.0417328820774043,-2.24126601485374,\ +-2,-0.245821,-2.63320858585858,3.14765164330768,-0.678911985787955,-0.0417398625732921,-2.24127283409153,\ +-2,-0.245821,-2.60567777777778,3.14765051796929,-0.678914516734807,-0.0417464731327828,-2.24127929193892,\ +-2,-0.245821,-2.57814696969697,3.14764945072954,-0.67891691701471,-0.0417527424043222,-2.24128541638253,\ +-2,-0.245821,-2.55061616161616,3.14764843720238,-0.678919196492069,-0.0417586961526877,-2.24129123259194,\ +-2,-0.245821,-2.52308535353535,3.14764747343244,-0.67892136406275,-0.0417643576129096,-2.24129676326543,\ +-2,-0.245821,-2.49555454545454,3.14764655584342,-0.678923427770093,-0.0417697477933152,-2.241302028926,\ +-2,-0.245821,-2.46802373737374,3.14764568119367,-0.67892539490464,-0.0417748857360305,-2.24130704817587,\ +-2,-0.245821,-2.44049292929293,3.14764484653807,-0.678927272090211,-0.0417797887417444,-2.24131183791609,\ +-2,-0.245821,-2.41296212121212,3.14764404919477,-0.678929065358401,-0.041784472564332,-2.24131641353658,\ +-2,-0.245821,-2.38543131313131,3.14764328671646,-0.678930780213323,-0.0417889515799461,-2.24132078908139,\ +-2,-0.245821,-2.3579005050505,3.1476425568653,-0.678932421688037,-0.041793238934402,-2.24132497739264,\ +-2,-0.245821,-2.3303696969697,3.14764185759092,-0.678933994393898,-0.0417973466720395,-2.24132899023647,\ +-2,-0.245821,-2.30283888888889,3.14764118701126,-0.678935502563795,-0.0418012858487184,-2.24133283841329,\ +-2,-0.245821,-2.27530808080808,3.14764054339561,-0.678936950090213,-0.0418050666311873,-2.241336531855,\ +-2,-0.245821,-2.24777727272727,3.14763992514965,-0.678938340558773,-0.0418086983847006,-2.24134007971052,\ +-2,-0.245821,-2.22024646464646,3.14763933080239,-0.678939677277887,-0.0418121897504711,-2.24134349042142,\ +-2,-0.245821,-2.19271565656565,3.14763875899438,-0.678940963305036,-0.0418155487143171,-2.24134677178904,\ +-2,-0.245821,-2.16518484848485,3.14763820846732,-0.678942201470127,-0.0418187826676398,-2.24134993103404,\ +-2,-0.245821,-2.13765404040404,3.14763767805493,-0.678943394396267,-0.0418218984617204,-2.24135297484942,\ +-2,-0.245821,-2.11012323232323,3.14763716667458,-0.678944544518331,-0.0418249024561704,-2.24135590944788,\ +-2,-0.245821,-2.08259242424242,3.14763667331997,-0.678945654099525,-0.0418278005622587,-2.24135874060413,\ +-2,-0.245821,-2.05506161616161,3.1476361970545,-0.678946725246271,-0.0418305982817373,-2.24136147369283,\ +-2,-0.245821,-2.02753080808081,3.14763573700541,-0.67894775992156,-0.0418333007416996,-2.24136411372262,\ +-2,-0.245821,-2,3.14763529235831,-0.678948759956929,-0.0418359127259394,-2.2413666653668,\ +-2,-0.243882,-4.72555,3.1475693621171,-0.679097040633249,-0.0422232058175969,-2.24174501150879,\ +-2,-0.243882,-4.69801919191919,3.14756831965939,-0.679099385176982,-0.0422293295122869,-2.24175099373855,\ +-2,-0.243882,-4.67048838383838,3.14756722114151,-0.679101855803068,-0.0422357825204481,-2.24175729767425,\ +-2,-0.243882,-4.64295757575758,3.1475660619164,-0.679104462963011,-0.0422425921402861,-2.24176394998343,\ +-2,-0.243882,-4.61542676767677,3.14756483680876,-0.679107218296308,-0.0422497887728975,-2.24177098036493,\ +-2,-0.243882,-4.58789595959596,3.14756354003786,-0.679110134804163,-0.0422574063760328,-2.241778421992,\ +-2,-0.243882,-4.56036515151515,3.14756216512628,-0.679113227054641,-0.0422654829998877,-2.24178631203585,\ +-2,-0.243882,-4.53283434343434,3.14756070479171,-0.679116511426018,-0.0422740614227594,-2.24179469228654,\ +-2,-0.243882,-4.50530353535354,3.14755915081796,-0.679120006396986,-0.0422831899089836,-2.24180360989344,\ +-2,-0.243882,-4.47777272727273,3.14755749390024,-0.679123732894494,-0.0422929231174965,-2.24181311825279,\ +-2,-0.243882,-4.45024191919192,3.14755572345875,-0.679127714713119,-0.042303323197154,-2.24182327807773,\ +-2,-0.243882,-4.42271111111111,3.14755382741247,-0.679131979023667,-0.0423144611151683,-2.24183415869606,\ +-2,-0.243882,-4.3951803030303,3.14755179190321,-0.679136556994025,-0.0423264182786871,-2.24184583963431,\ +-2,-0.243882,-4.36764949494949,3.14754960095623,-0.679141484552229,-0.0423392885278567,-2.24185841256479,\ +-2,-0.243882,-4.34011868686869,3.14754723606017,-0.679146803331292,-0.0423531806035997,-2.2418719837164,\ +-2,-0.243882,-4.31258787878788,3.1475446756428,-0.679152561848364,-0.0423682212274762,-2.24188667688325,\ +-2,-0.243882,-4.28505707070707,3.14754189441101,-0.679158816988995,-0.0423845589783781,-2.24190263721189,\ +-2,-0.243882,-4.25752626262626,3.14753886251248,-0.67916563589268,-0.0424023692174227,-2.24192003601237,\ +-2,-0.243882,-4.22999545454545,3.14753554445987,-0.679173098372336,-0.0424218604072942,-2.24193907693164,\ +-2,-0.243882,-4.20246464646465,3.14753189773545,-0.6791813000527,-0.0424432823094869,-2.24196000396138,\ +-2,-0.243882,-4.17493383838384,3.14752787095925,-0.679190356490027,-0.0424669367444316,-2.24198311194961,\ +-2,-0.243882,-4.14740303030303,3.14752340145328,-0.679200408650566,-0.042493191900733,-2.24200876057931,\ +-2,-0.243882,-4.11987222222222,3.1475184119553,-0.679211630301209,-0.0425225016387144,-2.24203739322608,\ +-2,-0.243882,-4.09234141414141,3.14751280611505,-0.679224238138965,-0.042555431947538,-2.24206956280402,\ +-2,-0.243882,-4.06481060606061,3.14750646221131,-0.679238505921396,-0.0425926978523407,-2.2421059678203,\ +-2,-0.243882,-4.0372797979798,3.14749922421269,-0.679254784571545,-0.0426352159261842,-2.24214750367402,\ +-2,-0.243882,-4.00974898989899,3.1474908887721,-0.679273531427988,-0.0426841806879524,-2.24219533728921,\ +-2,-0.243882,-3.98221818181818,3.14748118582029,-0.679295353891097,-0.0427411786017328,-2.24225101848065,\ +-2,-0.243882,-3.95468737373737,3.14746974875429,-0.679321076470757,-0.0428083631982016,-2.2423166510298,\ +-2,-0.243882,-3.92715656565657,3.14745606707366,-0.679351847310039,-0.0428887333028766,-2.2423951644856,\ +-2,-0.243882,-3.89962575757576,3.14743940809602,-0.679389314251269,-0.0429865929017364,-2.24249076340663,\ +-2,-0.243882,-3.87209494949495,3.14741868132587,-0.679435929877722,-0.0431083478770793,-2.24260970569138,\ +-2,-0.243882,-3.84456414141414,3.14739218965102,-0.679495511086437,-0.0432639675512003,-2.24276173035847,\ +-2,-0.243882,-3.81703333333333,3.14735713939849,-0.679574340999021,-0.0434698627582999,-2.24296286913149,\ +-2,-0.243882,-3.78950252525252,3.14730858405425,-0.679683544592847,-0.0437550907362221,-2.24324150799017,\ +-2,-0.243882,-3.76197171717172,3.14723685565279,-0.679844865644966,-0.0441764438792929,-2.24365312735424,\ +-2,-0.243882,-3.73444090909091,3.14712016594211,-0.680107307111905,-0.0448619126108272,-2.24432276090986,\ +-2,-0.243882,-3.7069101010101,3.14689694298875,-0.680609347600242,-0.0461731880763083,-2.24560374428945,\ +-2,-0.243882,-3.67937929292929,3.14629876723333,-0.681954677208296,-0.0496870435302,-2.24903642533418,\ +-2,-0.243882,-3.65184848484848,3.13942620525295,-0.697411440595571,-0.0900584380218081,-2.28847519065584,\ +-2,-0.243882,-3.62431767676768,3.14953702784842,-0.674671654042174,-0.0306645745977381,-2.23045339897322,\ +-2,-0.243882,-3.59678686868687,3.14847151962312,-0.677068039636472,-0.0369236746277576,-2.23656790604728,\ +-2,-0.243882,-3.56925606060606,3.14816456172054,-0.677758404551855,-0.0387268331315007,-2.23832940935829,\ +-2,-0.243882,-3.54172525252525,3.14801876501223,-0.678086309229814,-0.0395832846911039,-2.23916607582706,\ +-2,-0.243882,-3.51419444444444,3.14793359911003,-0.678277851947483,-0.0400835735564582,-2.23965480740054,\ +-2,-0.243882,-3.48666363636364,3.14787775360641,-0.678403451503804,-0.0404116260153836,-2.23997528144173,\ +-2,-0.243882,-3.45913282828283,3.14783831075102,-0.678492160617649,-0.0406433246278531,-2.24020162752953,\ +-2,-0.243882,-3.43160202020202,3.14780896936833,-0.678558150973367,-0.0408156843008646,-2.24037000548081,\ +-2,-0.243882,-3.40407121212121,3.14778628942078,-0.678609159401337,-0.0409489127987311,-2.24050015623552,\ +-2,-0.243882,-3.3765404040404,3.14776823363266,-0.67864976784484,-0.0410549776618135,-2.24060377086901,\ +-2,-0.243882,-3.3490095959596,3.14775351862364,-0.678682862695537,-0.0411414178329994,-2.24068821416528,\ +-2,-0.243882,-3.32147878787879,3.14774129571397,-0.67871035268007,-0.041213218699863,-2.24075835634327,\ +-2,-0.243882,-3.29394797979798,3.14773098124322,-0.678733550482355,-0.0412738088508455,-2.24081754678679,\ +-2,-0.243882,-3.26641717171717,3.14772216061357,-0.67875338855522,-0.0413256237519099,-2.24086816469952,\ +-2,-0.243882,-3.23888636363636,3.14771453121013,-0.678770547495958,-0.0413704410495673,-2.24091194666214,\ +-2,-0.243882,-3.21135555555555,3.14770786698415,-0.6787855357004,-0.0414095886187651,-2.24095018987405,\ +-2,-0.243882,-3.18382474747475,3.14770199567818,-0.678798740584928,-0.0414440783491911,-2.24098388284902,\ +-2,-0.243882,-3.15629393939394,3.14769678372398,-0.678810462551658,-0.0414746948586889,-2.24101379207927,\ +-2,-0.243882,-3.12876313131313,3.14769212595802,-0.678820938119058,-0.0415020559079228,-2.2410405210544,\ +-2,-0.243882,-3.10123232323232,3.14768793845194,-0.678830356046588,-0.0415266545161873,-2.24106455140438,\ +-2,-0.243882,-3.07370151515151,3.1476841534102,-0.678838868810083,-0.0415488889338746,-2.24108627217951,\ +-2,-0.243882,-3.04617070707071,3.14768071547146,-0.678846600920124,-0.0415690843691619,-2.24110600107524,\ +-2,-0.243882,-3.0186398989899,3.14767757898298,-0.678853655052267,-0.0415875089994934,-2.24112400007381,\ +-2,-0.243882,-2.99110909090909,3.14767470596169,-0.67886011663243,-0.0416043859481306,-2.24114048714406,\ +-2,-0.243882,-2.96357828282828,3.14767206454857,-0.678866057313338,-0.0416199023642439,-2.24115564511176,\ +-2,-0.243882,-2.93604747474747,3.14766962782214,-0.678871537642781,-0.0416342163921131,-2.24116962846787,\ +-2,-0.243882,-2.90851666666667,3.1476673728777,-0.678876609134711,-0.0416474625806087,-2.24118256865302,\ +-2,-0.243882,-2.88098585858586,3.14766528010508,-0.678881315893484,-0.041659756125543,-2.24119457820185,\ +-2,-0.243882,-2.85345505050505,3.14766333261683,-0.678885695899837,-0.0416711962284911,-2.24120575402427,\ +-2,-0.243882,-2.82592424242424,3.14766151579158,-0.678889782038018,-0.0416818687795473,-2.24121618002619,\ +-2,-0.243882,-2.79839343434343,3.14765981690628,-0.678893602922882,-0.0416918485176247,-2.24122592921996,\ +-2,-0.243882,-2.77086262626263,3.14765822483779,-0.67889718357099,-0.0417012007832723,-2.2412350654367,\ +-2,-0.243882,-2.74333181818182,3.14765672981904,-0.678900545948966,-0.0417099829509449,-2.24124364472544,\ +-2,-0.243882,-2.71580101010101,3.14765532323853,-0.678903709424557,-0.0417182456070943,-2.241251716504,\ +-2,-0.243882,-2.6882702020202,3.14765399747432,-0.678906691139924,-0.0417260335251956,-2.24125932451156,\ +-2,-0.243882,-2.66073939393939,3.14765274575586,-0.678909506322404,-0.0417333864774043,-2.24126650760147,\ +-2,-0.243882,-2.63320858585858,3.14765156204834,-0.678912168544607,-0.0417403399139104,-2.241273300405,\ +-2,-0.243882,-2.60567777777778,3.14765044095539,-0.678914689943245,-0.0417469255344874,-2.24127973388958,\ +-2,-0.243882,-2.57814696969697,3.14764937763685,-0.678917081404115,-0.0417531717716755,-2.24128583583096,\ +-2,-0.243882,-2.55061616161616,3.14764836773888,-0.678919352719233,-0.0417591042011437,-2.24129163121397,\ +-2,-0.243882,-2.52308535353535,3.1476474073344,-0.678921512720821,-0.0417647458917143,-2.24129714257451,\ +-2,-0.243882,-2.49555454545454,3.14764649287204,-0.678923569396111,-0.0417701177051609,-2.24130239029241,\ +-2,-0.243882,-2.46802373737374,3.14764562113225,-0.678925529986017,-0.0417752385539819,-2.24130739284329,\ +-2,-0.243882,-2.44049292929293,3.14764478918946,-0.678927401070335,-0.0417801256238757,-2.24131216701582,\ +-2,-0.243882,-2.41296212121212,3.14764399437924,-0.678929188641486,-0.0417847945664222,-2.24131672810003,\ +-2,-0.243882,-2.38543131313131,3.14764323426981,-0.678930898168658,-0.0417892596665294,-2.24132109005079,\ +-2,-0.243882,-2.3579005050505,3.14764250663722,-0.678932534653673,-0.0417935339884172,-2.24132526563055,\ +-2,-0.243882,-2.3303696969697,3.14764180944358,-0.678934102679868,-0.0417976295032772,-2.24132926653396,\ +-2,-0.243882,-2.30283888888889,3.14764114081799,-0.678935606454977,-0.0418015572012446,-2.24133310349723,\ +-2,-0.243882,-2.27530808080808,3.1476404990398,-0.678937049848821,-0.0418053271898772,-2.24133678639447,\ +-2,-0.243882,-2.24777727272727,3.14763988252382,-0.678938436426566,-0.0418089487810089,-2.24134032432236,\ +-2,-0.243882,-2.22024646464646,3.14763928980728,-0.678939769478131,-0.041812430567542,-2.24134372567531,\ +-2,-0.243882,-2.19271565656565,3.14763871953814,-0.678941052044237,-0.0418157804915164,-2.2413469982119,\ +-2,-0.243882,-2.16518484848485,3.14763817046493,-0.678942286939571,-0.0418190059045888,-2.24135014911394,\ +-2,-0.243882,-2.13765404040404,3.14763764142747,-0.678943476773404,-0.0418221136218887,-2.24135318503913,\ +-2,-0.243882,-2.11012323232323,3.14763713134876,-0.67894462396799,-0.041825109970089,-2.24135611216798,\ +-2,-0.243882,-2.08259242424242,3.14763663922763,-0.678945730775032,-0.041828000830394,-2.24135893624583,\ +-2,-0.243882,-2.05506161616161,3.14763616413216,-0.678946799290432,-0.0418307916770709,-2.24136166262049,\ +-2,-0.243882,-2.02753080808081,3.14763570519382,-0.678947831467535,-0.0418334876120462,-2.24136429627603,\ +-2,-0.243882,-2,3.14763526160222,-0.678948829129048,-0.0418360933960343,-2.24136684186319,\ +-2,-0.235902,-4.72555,3.1475690654694,-0.679097707809951,-0.0422249484109914,-2.24174671384611,\ +-2,-0.235902,-4.69801919191919,3.14756800721226,-0.679100087887464,-0.0422311649160792,-2.24175278674224,\ +-2,-0.235902,-4.67048838383838,3.14756689159828,-0.67910259696362,-0.042237718351669,-2.24175918878536,\ +-2,-0.235902,-4.64295757575758,3.14756571383451,-0.679105245818005,-0.0422446368728736,-2.24176594748016,\ +-2,-0.235902,-4.61542676767677,3.14756446857869,-0.679108046465655,-0.0422519518616773,-2.24177309348367,\ +-2,-0.235902,-4.58789595959596,3.14756314985821,-0.679111012339281,-0.0422596984028649,-2.24178066107018,\ +-2,-0.235902,-4.56036515151515,3.14756175097434,-0.679114158504708,-0.0422679158467424,-2.24178868868093,\ +-2,-0.235902,-4.53283434343434,3.1475602643884,-0.679117501916848,-0.0422766484776979,-2.2417972195773,\ +-2,-0.235902,-4.50530353535354,3.14755868158585,-0.679121061725359,-0.0422859463125746,-2.24180630262069,\ +-2,-0.235902,-4.47777272727273,3.14755699291309,-0.679124859641661,-0.0422958660592499,-2.24181599320895,\ +-2,-0.235902,-4.45024191919192,3.14755518738047,-0.679128920382125,-0.0423064722742212,-2.24182635440722,\ +-2,-0.235902,-4.42271111111111,3.14755325242277,-0.679133272206592,-0.042317838769127,-2.24183745832203,\ +-2,-0.235902,-4.3951803030303,3.1475511736064,-0.679137947576976,-0.0423300503309818,-2.2418493877817,\ +-2,-0.235902,-4.36764949494949,3.14754893426872,-0.679142983968459,-0.0423432048409075,-2.24186223840617,\ +-2,-0.235902,-4.34011868686869,3.14754651507045,-0.679148424876137,-0.0423574159033857,-2.24187612117551,\ +-2,-0.235902,-4.31258787878788,3.14754389343572,-0.679154321074367,-0.0423728161355531,-2.24189116564326,\ +-2,-0.235902,-4.28505707070707,3.1475410428454,-0.679160732206076,-0.0423895613182859,-2.24190752399156,\ +-2,-0.235902,-4.25752626262626,3.14753793193689,-0.679167728807472,-0.0424078356845304,-2.24192537619732,\ +-2,-0.235902,-4.22999545454545,3.1475345233454,-0.679175394913991,-0.0424278587257505,-2.24194493668152,\ +-2,-0.235902,-4.20246464646465,3.14753077219593,-0.679183831451913,-0.0424498940504912,-2.24196646296299,\ +-2,-0.235902,-4.17493383838384,3.14752662411654,-0.679193160706671,-0.0424742610550589,-2.2419902670596,\ +-2,-0.235902,-4.14740303030303,3.14752201258571,-0.679203532288791,-0.0425013505059864,-2.24201673071069,\ +-2,-0.235902,-4.11987222222222,3.14751685533791,-0.679215131217877,-0.0425316456544657,-2.24204632600375,\ +-2,-0.235902,-4.09234141414141,3.14751104941295,-0.679228189056957,-0.0425657513180822,-2.24207964378433,\ +-2,-0.235902,-4.06481060606061,3.14750446421184,-0.679242999530226,-0.0426044346726767,-2.24211743350557,\ +-2,-0.235902,-4.0372797979798,3.14749693155533,-0.679259940881877,-0.042648683651169,-2.2421606602779,\ +-2,-0.235902,-4.00974898989899,3.1474882311189,-0.679279508633704,-0.0426997925029112,-2.24221058845192,\ +-2,-0.235902,-3.98221818181818,3.1474780685244,-0.679302364858048,-0.0427594904892549,-2.24226890734091,\ +-2,-0.235902,-3.95468737373737,3.14746604137312,-0.679329414571405,-0.0428301414154168,-2.24233792614325,\ +-2,-0.235902,-3.92715656565657,3.14745158469436,-0.679361928423389,-0.0429150640807936,-2.24242088698997,\ +-2,-0.235902,-3.89962575757576,3.14743387962128,-0.679401748089799,-0.0430190687434077,-2.24252248901618,\ +-2,-0.235902,-3.87209494949495,3.14741169271368,-0.679451647644297,-0.0431494009836666,-2.24264981042041,\ +-2,-0.235902,-3.84456414141414,3.14738307557805,-0.679516009129202,-0.0433175062222679,-2.24281403221998,\ +-2,-0.235902,-3.81703333333333,3.14734475905862,-0.679602185052585,-0.0435425884151885,-2.24303391473571,\ +-2,-0.235902,-3.78950252525252,3.1472908057449,-0.679723528971558,-0.0438595256095543,-2.2433435302887,\ +-2,-0.235902,-3.76197171717172,3.14720918984725,-0.679907087537076,-0.044338960732885,-2.24381188986741,\ +-2,-0.235902,-3.73444090909091,3.14707130294132,-0.68021720264195,-0.0451489478513374,-2.24460316528112,\ +-2,-0.235902,-3.7069101010101,3.14678833417043,-0.680853614703445,-0.0468111873351181,-2.2462270049759,\ +-2,-0.235902,-3.67937929292929,3.14587711495302,-0.682902995978953,-0.0521639496090993,-2.25145611181762,\ +-2,-0.235902,-3.65184848484848,3.1633400634211,-0.643627880922011,0.0504184037555199,-2.15124353775525,\ +-2,-0.235902,-3.62431767676768,3.14902864925376,-0.675815024981748,-0.0336509358491283,-2.23337077158426,\ +-2,-0.235902,-3.59678686868687,3.14835244629848,-0.677335841980041,-0.0376231453893382,-2.23725121816872,\ +-2,-0.235902,-3.56925606060606,3.14811261806461,-0.677875228641812,-0.0390319650212484,-2.2386274923238,\ +-2,-0.235902,-3.54172525252525,3.14798980247821,-0.678151447534365,-0.0397534188986174,-2.23933227972385,\ +-2,-0.235902,-3.51419444444444,3.14791515756649,-0.678319327975758,-0.0401919044571475,-2.23976063572338,\ +-2,-0.235902,-3.48666363636364,3.14786498966733,-0.678432158292762,-0.0404866050438218,-2.24004852836182,\ +-2,-0.235902,-3.45913282828283,3.14782895519348,-0.67851320177228,-0.0406982818483787,-2.24025531517026,\ +-2,-0.235902,-3.43160202020202,3.1478018190161,-0.678574232502031,-0.0408576875146975,-2.24041103836843,\ +-2,-0.235902,-3.40407121212121,3.14778064736807,-0.678621848682898,-0.0409820558299684,-2.24053253362172,\ +-2,-0.235902,-3.3765404040404,3.14776366846398,-0.678660035155977,-0.0410817947682072,-2.24062996846706,\ +-2,-0.235902,-3.3490095959596,3.14774974904658,-0.678691340678117,-0.0411635614066967,-2.24070984619503,\ +-2,-0.235902,-3.32147878787879,3.14773813051434,-0.678717471385158,-0.0412318119877438,-2.24077652010319,\ +-2,-0.235902,-3.29394797979798,3.1477282859142,-0.678739612423009,-0.0412896419843026,-2.24083301415527,\ +-2,-0.235902,-3.26641717171717,3.14771983779199,-0.678758612706531,-0.0413392686702001,-2.24088149440331,\ +-2,-0.235902,-3.23888636363636,3.14771250868676,-0.678775096260345,-0.0413823219302465,-2.24092355307977,\ +-2,-0.235902,-3.21135555555555,3.14770609007549,-0.678789532064038,-0.0414200266884229,-2.24096038681138,\ +-2,-0.235902,-3.18382474747475,3.14770042221479,-0.678802279389145,-0.0414533213231248,-2.24099291229882,\ +-2,-0.235902,-3.15629393939394,3.14769538066523,-0.678813618106603,-0.0414829368269662,-2.24102184364788,\ +-2,-0.235902,-3.12876313131313,3.14769086704917,-0.678823769473127,-0.041509451098569,-2.241047745407,\ +-2,-0.235902,-3.10123232323232,3.14768680256734,-0.678832910712461,-0.0415333270271898,-2.24107106977212,\ +-2,-0.235902,-3.07370151515151,3.14768312335934,-0.678841185450136,-0.0415549397471763,-2.24109218321153,\ +-2,-0.235902,-3.04617070707071,3.14767977712362,-0.678848711315151,-0.0415745964927534,-2.24111138586196,\ +-2,-0.235902,-3.0186398989899,3.1476767206155,-0.678855585567122,-0.0415925512955361,-2.24112892588658,\ +-2,-0.235902,-2.99110909090909,3.1476739177681,-0.678861889322457,-0.0416090160227898,-2.24114501025826,\ +-2,-0.235902,-2.96357828282828,3.14767133826239,-0.678867690770217,-0.0416241687769752,-2.24115981296507,\ +-2,-0.235902,-2.93604747474747,3.14766895642613,-0.678873047648708,-0.041638160364305,-2.24117348132943,\ +-2,-0.235902,-2.90851666666667,3.14766675037643,-0.67887800917372,-0.0416511193311022,-2.24118614092805,\ +-2,-0.235902,-2.88098585858586,3.1476647013455,-0.678882617555032,-0.0416631559247498,-2.24119789946149,\ +-2,-0.235902,-2.85345505050505,3.14766279314539,-0.678886909200237,-0.0416743652379272,-2.24120884982566,\ +-2,-0.235902,-2.82592424242424,3.14766101173941,-0.678890915678565,-0.0416848297260708,-2.24121907257119,\ +-2,-0.235902,-2.79839343434343,3.14765934489632,-0.678894664498805,-0.0416946212391375,-2.24122863788818,\ +-2,-0.235902,-2.77086262626263,3.14765778190901,-0.678898179741756,-0.0417038026735916,-2.24123760722014,\ +-2,-0.235902,-2.74333181818182,3.14765631336434,-0.678901482578089,-0.0417124293249296,-2.24124603458515,\ +-2,-0.235902,-2.71580101010101,3.14765493095339,-0.678904591695052,-0.0417205500022165,-2.24125396766475,\ +-2,-0.235902,-2.6882702020202,3.14765362731411,-0.678907523650236,-0.0417282079521018,-2.24126144870651,\ +-2,-0.235902,-2.66073939393939,3.14765239590025,-0.678910293166562,-0.0417354416292552,-2.24126851527677,\ +-2,-0.235902,-2.63320858585858,3.14765123087136,-0.678912913379537,-0.0417422853421984,-2.24127520089148,\ +-2,-0.235902,-2.60567777777778,3.14765012700014,-0.678915396045582,-0.0417487697974318,-2.24128153554778,\ +-2,-0.235902,-2.57814696969697,3.1476490795941,-0.678917751718386,-0.04175492256006,-2.24128754617397,\ +-2,-0.235902,-2.55061616161616,3.14764808442882,-0.678919989898889,-0.0417607684454957,-2.24129325701222,\ +-2,-0.235902,-2.52308535353535,3.14764713769103,-0.678922119163336,-0.0417663298539782,-2.24129868994529,\ +-2,-0.235902,-2.49555454545454,3.1476462359298,-0.678924147273121,-0.0417716270574172,-2.24130386477677,\ +-2,-0.235902,-2.46802373737374,3.14764537601441,-0.678926081269301,-0.0417766784463025,-2.24130879947232,\ +-2,-0.235902,-2.44049292929293,3.14764455509818,-0.678927927554283,-0.0417815007430218,-2.24131351036801,\ +-2,-0.235902,-2.41296212121212,3.14764377058687,-0.678929691962619,-0.0417861091867971,-2.24131801235104,\ +-2,-0.235902,-2.38543131313131,3.14764302011136,-0.678931379822606,-0.041790517694552,-2.24132231901681,\ +-2,-0.235902,-2.3579005050505,3.14764230150372,-0.67893299601001,-0.0417947390012858,-2.24132644280613,\ +-2,-0.235902,-2.3303696969697,3.14764161277633,-0.678934544995139,-0.041798784782935,-2.24133039512522,\ +-2,-0.235902,-2.30283888888889,3.14764095210348,-0.678936030884102,-0.041802665764225,-2.24133418645104,\ +-2,-0.235902,-2.27530808080808,3.14764031780522,-0.678937457455176,-0.0418063918136012,-2.24133782642406,\ +-2,-0.235902,-2.24777727272727,3.14763970833312,-0.678938828190873,-0.0418099720270158,-2.24134132393012,\ +-2,-0.235902,-2.22024646464646,3.14763912225763,-0.678940146306336,-0.0418134148020647,-2.2413446871728,\ +-2,-0.235902,-2.19271565656565,3.14763855825689,-0.678941414774504,-0.0418167279037462,-2.24134792373774,\ +-2,-0.235902,-2.16518484848485,3.14763801510676,-0.678942636348502,-0.0418199185229283,-2.24135104064967,\ +-2,-0.235902,-2.13765404040404,3.14763749167199,-0.67894381358159,-0.0418229933284483,-2.24135404442337,\ +-2,-0.235902,-2.11012323232323,3.14763698689827,-0.678944948844973,-0.0418259585136408,-2.24135694110912,\ +-2,-0.235902,-2.08259242424242,3.14763649980514,-0.678946044343747,-0.041828819837974,-2.24135973633332,\ +-2,-0.235902,-2.05506161616161,3.14763602947965,-0.678947102131192,-0.0418315826643903,-2.24136243533503,\ +-2,-0.235902,-2.02753080808081,3.14763557507064,-0.678948124121614,-0.0418342519928534,-2.2413650429987,\ +-2,-0.235902,-2,3.14763513578361,-0.67894911210191,-0.0418368324905452,-2.2413675638837,\ +-2,-0.232369,-4.72555,3.1475689327175,-0.679098006376177,-0.0422257282336907,-2.24174747565395,\ +-2,-0.232369,-4.69801919191919,3.1475678673505,-0.679100402444144,-0.0422319865041083,-2.24175358935057,\ +-2,-0.232369,-4.67048838383838,3.14756674403979,-0.679102928830626,-0.0422385851524041,-2.24176003556193,\ +-2,-0.232369,-4.64295757575758,3.14756555792603,-0.679105596464576,-0.0422455527238021,-2.2417668421738,\ +-2,-0.232369,-4.61542676767677,3.14756430359089,-0.679108417532129,-0.0422529210471829,-2.2417740402798,\ +-2,-0.232369,-4.58789595959596,3.14756297497425,-0.67911140566275,-0.0422607257212266,-2.24178166465622,\ +-2,-0.232369,-4.56036515151515,3.14756156527641,-0.679114576149419,-0.0422690066895614,-2.24178975432393,\ +-2,-0.232369,-4.53283434343434,3.14756006684154,-0.679117946210444,-0.0422778089245214,-2.24179835321637,\ +-2,-0.232369,-4.50530353535354,3.1475584710187,-0.67912153530226,-0.0422871832442263,-2.24180751097769,\ +-2,-0.232369,-4.47777272727273,3.14755676799468,-0.679125365495327,-0.0422971872943225,-2.24181728392186,\ +-2,-0.232369,-4.45024191919192,3.14755494659202,-0.679129461928373,-0.0423078867344534,-2.24182773619167,\ +-2,-0.232369,-4.42271111111111,3.14755299402338,-0.679133853360793,-0.0423193566810521,-2.24183894116832,\ +-2,-0.232369,-4.3951803030303,3.14755089559091,-0.679138572848843,-0.0423316834734816,-2.24185098319658,\ +-2,-0.232369,-4.36764949494949,3.14754863431559,-0.679143658579253,-0.0423449668513426,-2.24186395971198,\ +-2,-0.232369,-4.34011868686869,3.14754619047684,-0.679149154904734,-0.0423593226591357,-2.24187798388285,\ +-2,-0.232369,-4.31258787878788,3.14754354103578,-0.679155113640873,-0.0423748862335598,-2.24189318791944,\ +-2,-0.232369,-4.28505707070707,3.14754065890682,-0.679161595704687,-0.0423918166832799,-2.24190972725482,\ +-2,-0.232369,-4.25752626262626,3.14753751202824,-0.679168673204755,-0.0424103023481044,-2.24192778587792,\ +-2,-0.232369,-4.22999545454545,3.14753406216437,-0.679176432135057,-0.0424305678350097,-2.241947583207,\ +-2,-0.232369,-4.20246464646465,3.14753026334451,-0.679184975886266,-0.0424528831892584,-2.24196938304895,\ +-2,-0.232369,-4.17493383838384,3.14752605980257,-0.679194429879317,-0.0424775759967634,-2.24199350542205,\ +-2,-0.232369,-4.14740303030303,3.14752138322136,-0.679204947763252,-0.0425050475722128,-2.2420203423701,\ +-2,-0.232369,-4.11987222222222,3.14751614899101,-0.679216719830236,-0.0425357949381541,-2.24205037943385,\ +-2,-0.232369,-4.09234141414141,3.14751025104407,-0.679229984631695,-0.0425704411651258,-2.2420842252901,\ +-2,-0.232369,-4.06481060606061,3.14750355459285,-0.6792450453125,-0.0426097780347485,-2.24212265342936,\ +-2,-0.232369,-4.0372797979798,3.14749588570262,-0.679262293061143,-0.0426548272890469,-2.24216666199014,\ +-2,-0.232369,-4.00974898989899,3.14748701596707,-0.67928224157584,-0.0427069306522337,-2.24221756170116,\ +-2,-0.232369,-3.98221818181818,3.14747663937301,-0.679305579096792,-0.0427678857332649,-2.24227710864439,\ +-2,-0.232369,-3.95468737373737,3.14746433627955,-0.679333249419003,-0.0428401576226482,-2.2423477109637,\ +-2,-0.232369,-3.92715656565657,3.14744951528161,-0.679366582644511,-0.0429272204030559,-2.24243276248615,\ +-2,-0.232369,-3.89962575757576,3.14743131531048,-0.679407515363401,-0.0430341322383818,-2.24253720452578,\ +-2,-0.232369,-3.87209494949495,3.14740843216058,-0.679458980804438,-0.0431685544049601,-2.24266852137397,\ +-2,-0.232369,-3.84456414141414,3.14737879132995,-0.679525644634765,-0.0433426731208253,-2.24283861773203,\ +-2,-0.232369,-3.81703333333333,3.14733888080632,-0.67961540555974,-0.0435771189502194,-2.24306764757266,\ +-2,-0.232369,-3.78950252525252,3.14728224502809,-0.679742782486428,-0.0439098137083389,-2.24339265667017,\ +-2,-0.232369,-3.76197171717172,3.14719558354537,-0.679937688845511,-0.0444188880413243,-2.24388997075612,\ +-2,-0.232369,-3.73444090909091,3.14704640670586,-0.680273195621256,-0.0452951954582645,-2.24474603438735,\ +-2,-0.232369,-3.7069101010101,3.14672890490274,-0.680987274338884,-0.0471602918490929,-2.24656804474361,\ +-2,-0.232369,-3.67937929292929,3.14558937729885,-0.683550133516729,-0.0538542028770894,-2.25310731814354,\ +-2,-0.232369,-3.65184848484848,3.15446706816836,-0.663583726871413,-0.00170410786292516,-2.20216195485682,\ +-2,-0.232369,-3.62431767676768,3.14888025193842,-0.676148778565506,-0.0345226641181889,-2.23422236185159,\ +-2,-0.232369,-3.59678686868687,3.1483096257659,-0.677432147672469,-0.037874685443569,-2.23749694733643,\ +-2,-0.232369,-3.56925606060606,3.14809260066961,-0.677920248845209,-0.0391495529240993,-2.23874236380058,\ +-2,-0.232369,-3.54172525252525,3.14797824825886,-0.678177433598275,-0.0398212916874481,-2.23939858456727,\ +-2,-0.232369,-3.51419444444444,3.14790764605733,-0.678336221765869,-0.0402360292100421,-2.23980374113987,\ +-2,-0.232369,-3.48666363636364,3.14785971813773,-0.678444014247773,-0.0405175715162273,-2.2400787794704,\ +-2,-0.232369,-3.45913282828283,3.14782505284788,-0.678521978358476,-0.0407212053424344,-2.24027770910324,\ +-2,-0.232369,-3.43160202020202,3.14779881423242,-0.678580990422954,-0.040875338473357,-2.24042828156811,\ +-2,-0.232369,-3.40407121212121,3.14777826265599,-0.678627212029264,-0.0409960643106898,-2.2405462184892,\ +-2,-0.232369,-3.3765404040404,3.14776172995977,-0.67866439495671,-0.041093182096258,-2.24064109273375,\ +-2,-0.232369,-3.3490095959596,3.14774814229601,-0.678694954346979,-0.0411729999189849,-2.240719066666,\ +-2,-0.232369,-3.32147878787879,3.14773677710593,-0.678720515273811,-0.0412397622957427,-2.24078428674924,\ +-2,-0.232369,-3.29394797979798,3.14772713033253,-0.678742211388665,-0.0412964302015536,-2.24083964555631,\ +-2,-0.232369,-3.26641717171717,3.14771883963208,-0.678760857622117,-0.0413451321469444,-2.24088722242649,\ +-2,-0.232369,-3.23888636363636,3.14771163784222,-0.678777054836808,-0.0413874375201695,-2.24092855049324,\ +-2,-0.232369,-3.21135555555555,3.14770532365473,-0.678791255785785,-0.0414245288632224,-2.24096478498037,\ +-2,-0.232369,-3.18382474747475,3.14769974250249,-0.678803808098846,-0.0414573141475443,-2.24099681288406,\ +-2,-0.232369,-3.15629393939394,3.14769477373792,-0.678814983118961,-0.0414865020916342,-2.24102532655051,\ +-2,-0.232369,-3.12876313131313,3.14769032181235,-0.678824995740208,-0.0415126539755837,-2.24105087429359,\ +-2,-0.232369,-3.10123232323232,3.14768631007193,-0.678834018361269,-0.0415362200860921,-2.24107389599778,\ +-2,-0.232369,-3.07370151515151,3.14768267630704,-0.678842190894921,-0.0415575658602244,-2.24109474865812,\ +-2,-0.232369,-3.04617070707071,3.14767936950313,-0.678849628075645,-0.0415769909720325,-2.24111372502581,\ +-2,-0.232369,-3.0186398989899,3.14767634743086,-0.678856424879551,-0.0415947434888317,-2.2411310674375,\ +-2,-0.232369,-2.99110909090909,3.14767357483299,-0.678862660602035,-0.0416110305216393,-2.24114697821969,\ +-2,-0.232369,-2.96357828282828,3.14767102204258,-0.67886840196566,-0.041626026342562,-2.2411616276186,\ +-2,-0.232369,-2.93604747474747,3.14766866391724,-0.678873705517016,-0.0416398786451894,-2.24117515991589,\ +-2,-0.232369,-2.90851666666667,3.14766647900825,-0.678878619495431,-0.0416527134254131,-2.24118769819681,\ +-2,-0.232369,-2.88098585858586,3.14766444890631,-0.678883185304435,-0.0416646388247881,-2.24119934810471,\ +-2,-0.232369,-2.85345505050505,3.14766255772155,-0.678887438681183,-0.0416757481849015,-2.24121020082485,\ +-2,-0.232369,-2.82592424242424,3.14766079166682,-0.678891410633744,-0.0416861224954708,-2.24122033547601,\ +-2,-0.232369,-2.79839343434343,3.14765913872097,-0.678895128198294,-0.0416958323720641,-2.24122982104244,\ +-2,-0.232369,-2.77086262626263,3.14765758835492,-0.678898615055346,-0.0417049396656187,-2.24123871794624,\ +-2,-0.232369,-2.74333181818182,3.14765613130709,-0.678901892034701,-0.0417134987813216,-2.24124707933578,\ +-2,-0.232369,-2.71580101010101,3.14765475939823,-0.678904977531883,-0.0417215577662961,-2.24125495214823,\ +-2,-0.232369,-2.6882702020202,3.14765346537784,-0.678907887853646,-0.0417291592120285,-2.24126237799116,\ +-2,-0.232369,-2.66073939393939,3.14765224279602,-0.678910637506271,-0.0417363410073383,-2.24126939387811,\ +-2,-0.232369,-2.63320858585858,3.14765108589582,-0.678913239437366,-0.0417431369699895,-2.24127603284562,\ +-2,-0.232369,-2.60567777777778,3.14764998952271,-0.678915705239751,-0.0417495773791673,-2.24128232447337,\ +-2,-0.232369,-2.57814696969697,3.14764894904777,-0.67891804532413,-0.0417556894265111,-2.24128829532485,\ +-2,-0.232369,-2.55061616161616,3.14764796030234,-0.678920269066027,-0.0417614975998761,-2.24129396932223,\ +-2,-0.232369,-2.52308535353535,3.14764701952226,-0.67892238493133,-0.0417670240112411,-2.24129936806665,\ +-2,-0.232369,-2.49555454545454,3.14764612329983,-0.678924400583996,-0.0417722886780288,-2.24130451111313,\ +-2,-0.232369,-2.46802373737374,3.14764526854278,-0.678926322978801,-0.0417773097653773,-2.24130941620714,\ +-2,-0.232369,-2.44049292929293,3.14764445243846,-0.678928158441532,-0.0417821037955426,-2.24131409948928,\ +-2,-0.232369,-2.41296212121212,3.14764367242298,-0.678929912738501,-0.041786685829524,-2.24131857567261,\ +-2,-0.232369,-2.38543131313131,3.14764292615431,-0.67893159113708,-0.041791069625114,-2.24132285819709,\ +-2,-0.232369,-2.3579005050505,3.14764221148877,-0.678933198458507,-0.0417952677748701,-2.24132695936439,\ +-2,-0.232369,-2.3303696969697,3.14764152646049,-0.67893473912415,-0.0417992918269203,-2.24133089045586,\ +-2,-0.232369,-2.30283888888889,3.14764086926332,-0.678936217196111,-0.0418031523910452,-2.24133466183618,\ +-2,-0.232369,-2.27530808080808,3.14764023823496,-0.678937636413001,-0.0418068592320873,-2.24133828304461,\ +-2,-0.232369,-2.24777727272727,3.1476396318429,-0.678939000221505,-0.0418104213524209,-2.24134176287555,\ +-2,-0.232369,-2.22024646464646,3.14763904867204,-0.678940311804338,-0.0418138470649469,-2.24134510944988,\ +-2,-0.232369,-2.19271565656565,3.14763848741353,-0.678941574105033,-0.0418171440578583,-2.24134833027817,\ +-2,-0.232369,-2.16518484848485,3.14763794685517,-0.678942789850001,-0.0418203194522422,-2.24135143231702,\ +-2,-0.232369,-2.13765404040404,3.1476374258725,-0.678943961568183,-0.041823379853422,-2.24135442201914,\ +-2,-0.232369,-2.11012323232323,3.14763692342108,-0.67894509160861,-0.0418263313968211,-2.24135730537824,\ +-2,-0.232369,-2.08259242424242,3.14763643852943,-0.678946182156132,-0.0418291797890187,-2.24136008796906,\ +-2,-0.232369,-2.05506161616161,3.14763597029285,-0.678947235245501,-0.041831930344575,-2.24136277498337,\ +-2,-0.232369,-2.02753080808081,3.14763551786773,-0.678948252774057,-0.0418345880191242,-2.24136537126235,\ +-2,-0.232369,-2,3.14763508046648,-0.67894923651312,-0.041837157439174,-2.24136788132562,\ +-2,-0.230734,-4.72555,3.14756887098472,-0.679098145216488,-0.0422260908695651,-2.24174782991249,\ +-2,-0.230734,-4.69801919191919,3.14756780230317,-0.679100548739106,-0.0422323686107277,-2.24175396263006,\ +-2,-0.230734,-4.67048838383838,3.14756667540359,-0.679103083197152,-0.0422389883410696,-2.24176042943644,\ +-2,-0.230734,-4.64295757575758,3.14756548539555,-0.679105759589567,-0.0422459787886372,-2.24176725839601,\ +-2,-0.230734,-4.61542676767677,3.14756422682502,-0.679108590182706,-0.0422533719918175,-2.24177448080706,\ +-2,-0.230734,-4.58789595959596,3.14756289359091,-0.679111588698298,-0.0422612037902957,-2.2417821316813,\ +-2,-0.230734,-4.56036515151515,3.14756147884608,-0.679114770535913,-0.0422695144060618,-2.24179025031155,\ +-2,-0.230734,-4.53283434343434,3.14755997487975,-0.679118153037467,-0.0422783491343387,-2.24179888094668,\ +-2,-0.230734,-4.50530353535354,3.14755837297696,-0.679121755803451,-0.0422877591694906,-2.24180807359837,\ +-2,-0.230734,-4.47777272727273,3.14755666324947,-0.67912560107299,-0.0422978025977063,-2.24181788501096,\ +-2,-0.230734,-4.45024191919192,3.14755483443157,-0.679129714183327,-0.0423085455971169,-2.2418283798338,\ +-2,-0.230734,-4.42271111111111,3.14755287363144,-0.679134124128775,-0.0423200638977465,-2.24183963204743,\ +-2,-0.230734,-4.3951803030303,3.14755076602692,-0.679138864245247,-0.0423324445693776,-2.24185172671022,\ +-2,-0.230734,-4.36764949494949,3.14754849449005,-0.679143973054469,-0.0423457882266068,-2.24186476211247,\ +-2,-0.230734,-4.34011868686869,3.14754603912055,-0.679149495313207,-0.0423602117692572,-2.24187885245343,\ +-2,-0.230734,-4.31258787878788,3.14754337666132,-0.679155483327932,-0.0423758518161807,-2.2418941311959,\ +-2,-0.230734,-4.28505707070707,3.14754047975946,-0.679161998616803,-0.042392869046153,-2.24191075530681,\ +-2,-0.230734,-4.25752626262626,3.1475373160231,-0.679169114030887,-0.0424114537382912,-2.24192891066957,\ +-2,-0.230734,-4.22999545454545,3.14753384680504,-0.679176916489857,-0.0424318329173718,-2.24194881906439,\ +-2,-0.230734,-4.20246464646465,3.1475300256161,-0.679185510550318,-0.0424542796739446,-2.24197074727311,\ +-2,-0.230734,-4.17493383838384,3.14752579602991,-0.679195023118271,-0.0424791254727628,-2.24199501910323,\ +-2,-0.230734,-4.14740303030303,3.1475210888778,-0.679205609757838,-0.042506776630477,-2.24202203148499,\ +-2,-0.230734,-4.11987222222222,3.14751581843668,-0.67921746326479,-0.0425377367088191,-2.2420522763472,\ +-2,-0.230734,-4.09234141414141,3.14750987716146,-0.679230825513918,-0.0425726374585592,-2.24208637084644,\ +-2,-0.230734,-4.06481060606061,3.14750312826908,-0.679246004137669,-0.0426122823824007,-2.24212509992349,\ +-2,-0.230734,-4.0372797979798,3.14749539507802,-0.679263396502403,-0.0426577093582972,-2.24216947748002,\ +-2,-0.230734,-4.00974898989899,3.1474864453163,-0.679283525000288,-0.042710282818103,-2.24222083642785,\ +-2,-0.230734,-3.98221818181818,3.14747596739156,-0.679307090419393,-0.0427718331444667,-2.24228096486552,\ +-2,-0.230734,-3.95468737373737,3.14746353337075,-0.679335055204329,-0.0428448741386392,-2.24235231852233,\ +-2,-0.230734,-3.92715656565657,3.14744853909149,-0.67936877814888,-0.0429329548230512,-2.24243836443394,\ +-2,-0.230734,-3.89962575757576,3.14743010303323,-0.679410241840463,-0.043041253501635,-2.24254416127904,\ +-2,-0.230734,-3.87209494949495,3.14740688652027,-0.679462457033056,-0.0431776339381945,-2.24267739115875,\ +-2,-0.230734,-3.84456414141414,3.14737675322695,-0.67953022843858,-0.0433546455207011,-2.24285031355466,\ +-2,-0.230734,-3.81703333333333,3.14733607108878,-0.679621724766389,-0.0435936240346367,-2.2430837713692,\ +-2,-0.230734,-3.78950252525252,3.14727812551311,-0.679752047498293,-0.0439340129174203,-2.24341629684759,\ +-2,-0.230734,-3.76197171717172,3.14718896849493,-0.679952566451536,-0.0444577467394174,-2.2439279317702,\ +-2,-0.230734,-3.73444090909091,3.14703408807766,-0.680300900881954,-0.0453675586031963,-2.24481672585409,\ +-2,-0.230734,-3.7069101010101,3.1466983885849,-0.681055907187255,-0.0473395534271616,-2.2467431651574,\ +-2,-0.230734,-3.67937929292929,3.14542116522307,-0.683928451567795,-0.0548423287156132,-2.25407261705245,\ +-2,-0.230734,-3.65184848484848,3.15304749984095,-0.666776412773909,-0.0100430581870051,-2.21030826510947,\ +-2,-0.230734,-3.62431767676768,3.14882159417778,-0.67628070303991,-0.0348672365791847,-2.23455897426235,\ +-2,-0.230734,-3.59678686868687,3.14829143590634,-0.677473057649855,-0.0379815378805542,-2.2376013313499,\ +-2,-0.230734,-3.56925606060606,3.14808386608158,-0.677939893405849,-0.0392008623921458,-2.23879248795643,\ +-2,-0.230734,-3.54172525252525,3.14797313534243,-0.678188932823677,-0.0398513264206845,-2.239427925461,\ +-2,-0.230734,-3.51419444444444,3.14790429330997,-0.678343762275927,-0.0402557242068947,-2.23982298115793,\ +-2,-0.230734,-3.48666363636364,3.14785735142315,-0.678449337116794,-0.0405314742744974,-2.24009236105775,\ +-2,-0.230734,-3.45913282828283,3.14782329344452,-0.678525935351714,-0.040731540580869,-2.24028780558487,\ +-2,-0.230734,-3.43160202020202,3.14779745517925,-0.678584047007003,-0.0408833219403605,-2.24043608060715,\ +-2,-0.230734,-3.40407121212121,3.14777718136718,-0.678629643906222,-0.0410024161103196,-2.2405524235544,\ +-2,-0.230734,-3.3765404040404,3.14776084923017,-0.678666375765185,-0.0410983557537971,-2.2406461468734,\ +-2,-0.230734,-3.3490095959596,3.14774741109141,-0.678696598865653,-0.04117729522393,-2.24072326274408,\ +-2,-0.230734,-3.32147878787879,3.14773616034521,-0.678721902402022,-0.0412433853246317,-2.24078782608168,\ +-2,-0.230734,-3.29394797979798,3.14772660310835,-0.678743397144323,-0.0412995272671031,-2.2408426710758,\ +-2,-0.230734,-3.26641717171717,3.14771838377344,-0.678761882872825,-0.0413478099909284,-2.24088983840896,\ +-2,-0.230734,-3.23888636363636,3.14771123978199,-0.678777950095768,-0.04138977583976,-2.24093083479476,\ +-2,-0.230734,-3.21135555555555,3.14770497305885,-0.678792044294845,-0.0414265883636223,-2.24096679690376,\ +-2,-0.230734,-3.18382474747475,3.14769943136132,-0.678804507872168,-0.0414591418797912,-2.24099859839343,\ +-2,-0.230734,-3.15629393939394,3.14769449574758,-0.678815608334243,-0.0414881350863415,-2.24102692182103,\ +-2,-0.230734,-3.12876313131313,3.14769007194376,-0.678825557708165,-0.0415141217751145,-2.24105230818513,\ +-2,-0.230734,-3.10123232323232,3.14768608426408,-0.678834526215317,-0.0415375465459523,-2.24107519181478,\ +-2,-0.230734,-3.07370151515151,3.1476824712448,-0.678842652090954,-0.0415587704543943,-2.24109592542467,\ +-2,-0.230734,-3.04617070707071,3.14767918245358,-0.678850048760199,-0.041578089754592,-2.24111479842513,\ +-2,-0.230734,-3.0186398989899,3.14767617612082,-0.678856810165094,-0.041595749813009,-2.24113205051434,\ +-2,-0.230734,-2.99110909090909,3.1476734173563,-0.678863014775635,-0.0416119555847847,-2.24114788191274,\ +-2,-0.230734,-2.96357828282828,3.14767087678888,-0.678868728649069,-0.0416268796042991,-2.24116246116894,\ +-2,-0.230734,-2.93604747474747,3.14766852951678,-0.678874007790902,-0.0416406681518864,-2.24117593118401,\ +-2,-0.230734,-2.90851666666667,3.14766635428856,-0.678878899996769,-0.0416534460645771,-2.2411884139111,\ +-2,-0.230734,-2.88098585858586,3.14766433285788,-0.678883446303613,-0.0416653205264206,-2.24120001405819,\ +-2,-0.230734,-2.85345505050505,3.14766244947055,-0.678887682143555,-0.0416763840822882,-2.24121082203223,\ +-2,-0.230734,-2.82592424242424,3.14766069045296,-0.678891638269183,-0.0416867170546217,-2.24122091630011,\ +-2,-0.230734,-2.79839343434343,3.14765904387972,-0.678895341501404,-0.041696389496718,-2.24123036529683,\ +-2,-0.230734,-2.77086262626263,3.14765749930284,-0.678898815338296,-0.0417054627830228,-2.24123922897899,\ +-2,-0.230734,-2.74333181818182,3.14765604752984,-0.678902080454237,-0.0417139909127757,-2.24124756009839,\ +-2,-0.230734,-2.71580101010101,3.14765468044068,-0.678905155111679,-0.0417220215855227,-2.24125540525266,\ +-2,-0.230734,-2.6882702020202,3.14765339083573,-0.678908055502903,-0.0417295970937558,-2.24126280575728,\ +-2,-0.230734,-2.66073939393939,3.14765217230905,-0.678910796035277,-0.0417367550679558,-2.24126979837341,\ +-2,-0.230734,-2.63320858585858,3.14765101914188,-0.678913389570594,-0.0417435291017443,-2.24127641591864,\ +-2,-0.230734,-2.60567777777778,3.14764992621291,-0.678915847626926,-0.0417499492790719,-2.24128268778193,\ +-2,-0.230734,-2.57814696969697,3.14764888892226,-0.678918180549626,-0.0417560426208875,-2.24128864036001,\ +-2,-0.230734,-2.55061616161616,3.14764790312682,-0.678920397656884,-0.0417618334652889,-2.24129429742873,\ +-2,-0.230734,-2.52308535353535,3.14764696508479,-0.678922507364111,-0.0417673437924241,-2.2412996804605,\ +-2,-0.230734,-2.49555454545454,3.14764607140837,-0.678924517290691,-0.0417725935032977,-2.24130480889655,\ +-2,-0.230734,-2.46802373737374,3.14764521902279,-0.678926434351923,-0.041777600659927,-2.24130970038166,\ +-2,-0.230734,-2.44049292929293,3.14764440513102,-0.678928264838517,-0.0417823816929656,-2.24131437096692,\ +-2,-0.230734,-2.41296212121212,3.14764362718305,-0.678930014485552,-0.0417869515818166,-2.24131883528569,\ +-2,-0.230734,-2.38543131313131,3.14764288284925,-0.678931688532494,-0.0417913240114006,-2.24132310670674,\ +-2,-0.230734,-2.3579005050505,3.14764216999706,-0.678933291775603,-0.0417955115090302,-2.241327197468,\ +-2,-0.230734,-2.3303696969697,3.14764148667057,-0.678934828613827,-0.0417995255642783,-2.2413311187936,\ +-2,-0.230734,-2.30283888888889,3.1476408310726,-0.678936303089104,-0.0418033767342519,-2.24133488099678,\ +-2,-0.230734,-2.27530808080808,3.14764020154893,-0.678937718921864,-0.0418070747363098,-2.24133849357041,\ +-2,-0.230734,-2.24777727272727,3.14763959657436,-0.678939079542364,-0.0418106285299274,-2.241341965267,\ +-2,-0.230734,-2.22024646464646,3.14763901474038,-0.678940388118457,-0.0418140463891716,-2.24134530416947,\ +-2,-0.230734,-2.19271565656565,3.14763845474417,-0.678941647580188,-0.0418173359670135,-2.24134851775399,\ +-2,-0.230734,-2.16518484848485,3.14763791537896,-0.67894286064171,-0.0418205043525332,-2.24135161294588,\ +-2,-0.230734,-2.13765404040404,3.14763739552525,-0.678944029820813,-0.0418235581219172,-2.24135459616942,\ +-2,-0.230734,-2.11012323232323,3.1476368941431,-0.678945157456358,-0.0418265033840185,-2.24135747339232,\ +-2,-0.230734,-2.08259242424242,3.1476364102652,-0.678946245723897,-0.0418293458211455,-2.24136025016563,\ +-2,-0.230734,-2.05506161616161,3.14763594299063,-0.678947296649683,-0.0418320907256525,-2.24136293165944,\ +-2,-0.230734,-2.02753080808081,3.14763549147921,-0.67894831212326,-0.0418347430328258,-2.24136552269504,\ +-2,-0.230734,-2,3.14763505494656,-0.678949293908805,-0.041837307350499,-2.2413680277738,\ +-2,-0.230428,-4.72555,3.14756885941004,-0.679098171248618,-0.0422261588626682,-2.24174789633487,\ +-2,-0.230428,-4.69801919191919,3.1475677901064,-0.67910057617028,-0.0422324402579907,-2.24175403262218,\ +-2,-0.230428,-4.67048838383838,3.14756666253324,-0.679103112143265,-0.0422390639451865,-2.241760503294,\ +-2,-0.230428,-4.64295757575758,3.14756547179423,-0.679105790179671,-0.0422460586866805,-2.24176733644831,\ +-2,-0.230428,-4.61542676767677,3.14756421242864,-0.679108622560938,-0.0422534565602613,-2.24177456342185,\ +-2,-0.230428,-4.58789595959596,3.14756287832767,-0.679111623026157,-0.0422612934509469,-2.24178221927067,\ +-2,-0.230428,-4.56036515151515,3.14756146263525,-0.679114806994941,-0.0422696096330925,-2.24179034333873,\ +-2,-0.230428,-4.53283434343434,3.14755995763028,-0.679118191832465,-0.0422784504626741,-2.2417989799342,\ +-2,-0.230428,-4.50530353535354,3.14755835458571,-0.67912179716633,-0.042287867204858,-2.24180817913799,\ +-2,-0.230428,-4.47777272727273,3.14755664359923,-0.67912564526741,-0.0422979180287506,-2.24181799777541,\ +-2,-0.230428,-4.45024191919192,3.14755481338849,-0.679129761510315,-0.0423086692100889,-2.24182850059116,\ +-2,-0.230428,-4.42271111111111,3.14755285104202,-0.679134174933592,-0.04232019659443,-2.24183976167866,\ +-2,-0.230428,-4.3951803030303,3.14755074171423,-0.679138918925817,-0.0423325873891157,-2.24185186623065,\ +-2,-0.230428,-4.36764949494949,3.14754846824908,-0.67914403207183,-0.0423459423735681,-2.24186491269843,\ +-2,-0.230428,-4.34011868686869,3.14754601071247,-0.679149559204519,-0.0423603786464532,-2.24187901547556,\ +-2,-0.230428,-4.31258787878788,3.14754334580615,-0.679155552722875,-0.0423760330682713,-2.24189430826085,\ +-2,-0.230428,-4.28505707070707,3.14754044612683,-0.679162074258392,-0.0423930666138029,-2.24191094831041,\ +-2,-0.230428,-4.25752626262626,3.1475372792204,-0.679169196802153,-0.0424116699278877,-2.24192912186491,\ +-2,-0.230428,-4.22999545454545,3.14753380636198,-0.679177007448463,-0.042432070491418,-2.24194905115018,\ +-2,-0.230428,-4.20246464646465,3.14752998096459,-0.679185610973965,-0.0424545419696502,-2.24197100350947,\ +-2,-0.230428,-4.17493383838384,3.14752574647719,-0.679195134565034,-0.0424794165596558,-2.24199530346566,\ +-2,-0.230428,-4.14740303030303,3.14752103357023,-0.679205734147518,-0.0425071015228789,-2.24202234887197,\ +-2,-0.230428,-4.11987222222222,3.14751575631031,-0.679217602990334,-0.0425381016568308,-2.24205263286447,\ +-2,-0.230428,-4.09234141414141,3.14750980687291,-0.679230983596667,-0.0425730503536088,-2.2420867742031,\ +-2,-0.230428,-4.06481060606061,3.14750304809743,-0.679246184448062,-0.0426127533336494,-2.24212555999519,\ +-2,-0.230428,-4.0372797979798,3.14749530278223,-0.679263604080632,-0.0426582515301802,-2.24217000712706,\ +-2,-0.230428,-4.00974898989899,3.1474863379228,-0.67928376653407,-0.0427109136782197,-2.24222145271432,\ +-2,-0.230428,-3.98221818181818,3.14747584086851,-0.679307374976581,-0.0427725763770695,-2.24228169092852,\ +-2,-0.230428,-3.95468737373737,3.14746338211162,-0.679335395394265,-0.0428457626779679,-2.2423531865353,\ +-2,-0.230428,-3.92715656565657,3.14744835506403,-0.679369192036576,-0.0429340358529548,-2.24243942049072,\ +-2,-0.230428,-3.89962575757576,3.14742987431011,-0.679410756251128,-0.0430425970866614,-2.24254547382559,\ +-2,-0.230428,-3.87209494949495,3.14740659459649,-0.679463113585439,-0.0431793487820254,-2.24267906638756,\ +-2,-0.230428,-3.84456414141414,3.14737636777116,-0.679531095349501,-0.0433569097982814,-2.24285252552463,\ +-2,-0.230428,-3.81703333333333,3.14733553873138,-0.679622922066946,-0.0435967512542173,-2.24308682634614,\ +-2,-0.230428,-3.78950252525252,3.14727734296085,-0.679753807500617,-0.0439386098531749,-2.24342078758843,\ +-2,-0.230428,-3.76197171717172,3.14718770687068,-0.679955403912663,-0.0444651578810371,-2.24393517170528,\ +-2,-0.230428,-3.73444090909091,3.14703172241541,-0.680306221384221,-0.0453814551797654,-2.24483030140254,\ +-2,-0.230428,-3.7069101010101,3.14669244068912,-0.681069284326378,-0.0473744930679648,-2.24677729764926,\ +-2,-0.230428,-3.67937929292929,3.14538652148495,-0.684006367207467,-0.0550458359407329,-2.25427142300884,\ +-2,-0.230428,-3.65184848484848,3.15284467217236,-0.667232583164314,-0.0112345259170149,-2.21147220846055,\ +-2,-0.230428,-3.62431767676768,3.14881121231526,-0.676304052409896,-0.0349282226086082,-2.23461855143903,\ +-2,-0.230428,-3.59678686868687,3.14828813601036,-0.677480479294295,-0.0380009224132621,-2.23762026807591,\ +-2,-0.230428,-3.56925606060606,3.14808226629752,-0.677943491406649,-0.0392102599811506,-2.2388016684495,\ +-2,-0.230428,-3.54172525252525,3.14797219412643,-0.678191049669354,-0.039856855392682,-2.2394333267069,\ +-2,-0.230428,-3.51419444444444,3.14790367417352,-0.678345154747263,-0.0402593611914403,-2.23982653412364,\ +-2,-0.230428,-3.48666363636364,3.14785691343693,-0.678450322171487,-0.040534047130832,-2.24009487447792,\ +-2,-0.230428,-3.45913282828283,3.14782296734275,-0.678526668772238,-0.0407334561959633,-2.24028967694689,\ +-2,-0.230428,-3.43160202020202,3.14779720298544,-0.678584614204532,-0.0408848033989706,-2.24043752784222,\ +-2,-0.230428,-3.40407121212121,3.14777698053202,-0.678630095595362,-0.0410035958735154,-2.2405535760636,\ +-2,-0.230428,-3.3765404040404,3.14776068552487,-0.67866674394726,-0.0410993174055609,-2.24064708630981,\ +-2,-0.230428,-3.3490095959596,3.14774727509609,-0.678696904726488,-0.0411780940993504,-2.2407240431645,\ +-2,-0.230428,-3.32147878787879,3.1477360455765,-0.678722160523036,-0.0412440595088035,-2.24078848469136,\ +-2,-0.230428,-3.29394797979798,3.14772650495835,-0.678743617888993,-0.04130010382831,-2.24084323431773,\ +-2,-0.230428,-3.26641717171717,3.14771829887747,-0.678762073808451,-0.0413483086941314,-2.24089032559151,\ +-2,-0.230428,-3.23888636363636,3.14771116562599,-0.678778116876632,-0.0413902114533405,-2.24093126034513,\ +-2,-0.230428,-3.21135555555555,3.14770490772659,-0.678792191230633,-0.0414269721440131,-2.24096717181836,\ +-2,-0.230428,-3.18382474747475,3.14769937336674,-0.678804638305128,-0.0414594825565759,-2.24099893120016,\ +-2,-0.230428,-3.15629393939394,3.14769444392049,-0.678815724896156,-0.0414884395334575,-2.24102721923504,\ +-2,-0.230428,-3.12876313131313,3.14769002535021,-0.678825662499575,-0.0415143954789412,-2.24105257556606,\ +-2,-0.230428,-3.10123232323232,3.14768604214959,-0.678834620933092,-0.0415377939385403,-2.2410754334923,\ +-2,-0.230428,-3.07370151515151,3.14768243299323,-0.678842738120813,-0.0415589951550792,-2.2410961449345,\ +-2,-0.230428,-3.04617070707071,3.14767914755683,-0.678850127244877,-0.0415782947480872,-2.24111499868302,\ +-2,-0.230428,-3.0186398989899,3.14767614415613,-0.678856882055372,-0.0415959375826399,-2.24113223394626,\ +-2,-0.230428,-2.99110909090909,3.1476733879691,-0.678863080869003,-0.0416121282135138,-2.24114805055353,\ +-2,-0.230428,-2.96357828282828,3.14767084967955,-0.678868789619423,-0.0416270388522743,-2.24116261673808,\ +-2,-0.230428,-2.93604747474747,3.14766850443037,-0.678874064211596,-0.0416408155166382,-2.24117607514445,\ +-2,-0.230428,-2.90851666666667,3.14766633100681,-0.678878952358683,-0.0416535828282301,-2.24118854751534,\ +-2,-0.230428,-2.88098585858586,3.14766431119285,-0.678883495029465,-0.0416654477930771,-2.24120013838482,\ +-2,-0.230428,-2.85345505050505,3.14766242925949,-0.67888772759934,-0.0416765028078852,-2.24121093801511,\ +-2,-0.230428,-2.82592424242424,3.14766067155426,-0.678891680773377,-0.0416868280709772,-2.24122102475185,\ +-2,-0.230428,-2.79839343434343,3.1476590261696,-0.678895381332427,-0.0416964935310393,-2.24123046692783,\ +-2,-0.230428,-2.77086262626263,3.14765748267259,-0.678898852740622,-0.0417055604738502,-2.24123932441303,\ +-2,-0.230428,-2.74333181818182,3.14765603188364,-0.678902115643414,-0.0417140828230949,-2.24124764988546,\ +-2,-0.230428,-2.71580101010101,3.14765466569367,-0.678905188278479,-0.0417221082136178,-2.24125548987954,\ +-2,-0.230428,-2.6882702020202,3.14765337691259,-0.67890808681679,-0.0417296788822444,-2.24126288565635,\ +-2,-0.230428,-2.66073939393939,3.14765215914262,-0.678910825647297,-0.0417368324113504,-2.24126987393008,\ +-2,-0.230428,-2.63320858585858,3.1476510066721,-0.678913417615811,-0.0417436023528151,-2.24127648747752,\ +-2,-0.230428,-2.60567777777778,3.1476499143859,-0.678915874226477,-0.0417500187542241,-2.24128275565211,\ +-2,-0.230428,-2.57814696969697,3.14764887768961,-0.67891820581248,-0.0417561086047299,-2.24128870481954,\ +-2,-0.230428,-2.55061616161616,3.14764789244481,-0.678920421681325,-0.0417618962145292,-2.2412943587284,\ +-2,-0.230428,-2.52308535353535,3.14764695491389,-0.678922530239018,-0.0417674035392072,-2.24129973882705,\ +-2,-0.230428,-2.49555454545454,3.14764606171276,-0.678924539096638,-0.0417726504580731,-2.2413048645356,\ +-2,-0.230428,-2.46802373737374,3.14764520976992,-0.678926455162126,-0.0417776550139268,-2.24130975348002,\ +-2,-0.230428,-2.44049292929293,3.14764439629124,-0.678928284719653,-0.0417824336203482,-2.24131442169472,\ +-2,-0.230428,-2.41296212121212,3.14764361872931,-0.678930033498481,-0.0417870012415309,-2.24131888379821,\ +-2,-0.230428,-2.38543131313131,3.14764287475679,-0.678931706732872,-0.0417913715488105,-2.24132315314598,\ +-2,-0.230428,-2.3579005050505,3.14764216224322,-0.678933309214422,-0.0417955570573358,-2.24132724196408,\ +-2,-0.230428,-2.3303696969697,3.14764147923452,-0.678934845337906,-0.0417995692457613,-2.24133116146598,\ +-2,-0.230428,-2.30283888888889,3.1476408239352,-0.6789363191415,-0.0418034186613736,-2.24133492195533,\ +-2,-0.230428,-2.27530808080808,3.14764019469255,-0.678937734342243,-0.0418071150126755,-2.24133853291634,\ +-2,-0.230428,-2.24777727272727,3.14763958998272,-0.678939094367335,-0.0418106672511425,-2.24134200309371,\ +-2,-0.230428,-2.22024646464646,3.14763900839842,-0.678940402381845,-0.0418140836435986,-2.24134534056327,\ +-2,-0.230428,-2.19271565656565,3.14763844863799,-0.678941661313309,-0.0418173718364453,-2.24134855279479,\ +-2,-0.230428,-2.16518484848485,3.14763790949564,-0.678942873873598,-0.0418205389127925,-2.24135164670776,\ +-2,-0.230428,-2.13765404040404,3.14763738985281,-0.678944042578412,-0.0418235914433914,-2.24135462872113,\ +-2,-0.230428,-2.11012323232323,3.14763688867042,-0.678945169764723,-0.041826535532138,-2.24135750479778,\ +-2,-0.230428,-2.08259242424242,3.1476364049819,-0.678946257606345,-0.041829376856813,-2.24136028048434,\ +-2,-0.230428,-2.05506161616161,3.14763593788703,-0.678947308127943,-0.0418321207056273,-2.24136296094684,\ +-2,-0.230428,-2.02753080808081,3.14763548654631,-0.678948323217611,-0.0418347720100706,-2.24136555100288,\ +-2,-0.230428,-2,3.14763505017593,-0.67894930463819,-0.0418373353744927,-2.24136805515041,\ +-2,-0.229174,-4.72555,3.14756881190693,-0.679098278085674,-0.0422264379095081,-2.24174816893537,\ +-2,-0.229174,-4.69801919191919,3.14756774004839,-0.679100688753468,-0.0422327343131009,-2.24175431988425,\ +-2,-0.229174,-4.67048838383838,3.14756660970852,-0.679103230948937,-0.042239374252757,-2.24176080643309,\ +-2,-0.229174,-4.64295757575758,3.14756541596691,-0.679105915738331,-0.0422463866323257,-2.24176765681801,\ +-2,-0.229174,-4.61542676767677,3.14756415333527,-0.679108755465153,-0.0422538036916998,-2.24177490253413,\ +-2,-0.229174,-4.58789595959596,3.14756281567299,-0.679111763939904,-0.0422616615024192,-2.2417825788197,\ +-2,-0.229174,-4.56036515151515,3.14756139608737,-0.679114956664703,-0.0422700005543309,-2.24179072522919,\ +-2,-0.229174,-4.53283434343434,3.14755988681473,-0.679118351100453,-0.0422788664534426,-2.24179938631507,\ +-2,-0.229174,-4.50530353535354,3.14755827907841,-0.67912196698634,-0.0422883107563561,-2.2418086124429,\ +-2,-0.229174,-4.47777272727273,3.14755656291798,-0.679125826723917,-0.0422983919735245,-2.24181846077148,\ +-2,-0.229174,-4.45024191919192,3.14755472698268,-0.679129955841666,-0.0423091767825648,-2.24182899643807,\ +-2,-0.229174,-4.42271111111111,3.14755275828005,-0.679134383560289,-0.0423207415047981,-2.24184029400092,\ +-2,-0.229174,-4.3951803030303,3.14755064186805,-0.679139143485279,-0.0423331739141391,-2.24185243920622,\ +-2,-0.229174,-4.36764949494949,3.14754836047506,-0.679144274461435,-0.0423465754690077,-2.24186553116859,\ +-2,-0.229174,-4.34011868686869,3.14754589402749,-0.679149821635337,-0.0423610640873703,-2.24187968508193,\ +-2,-0.229174,-4.31258787878788,3.14754321905758,-0.679155837787258,-0.042376777625609,-2.241895035618,\ +-2,-0.229174,-4.28505707070707,3.14754030795431,-0.679162385015853,-0.0423938782786915,-2.24191174122483,\ +-2,-0.229174,-4.25752626262626,3.14753712800687,-0.67916953688956,-0.0424125581994182,-2.24192998961628,\ +-2,-0.229174,-4.22999545454545,3.14753364017013,-0.679177381222918,-0.0424330467498769,-2.24195000485586,\ +-2,-0.229174,-4.20246464646465,3.14752979745349,-0.67918602370036,-0.0424556199663566,-2.24197205660311,\ +-2,-0.229174,-4.17493383838384,3.1475255427914,-0.679195592665381,-0.0424806130682202,-2.24199647233339,\ +-2,-0.229174,-4.14740303030303,3.14752080619032,-0.679206245537244,-0.042508437217539,-2.24202365371043,\ +-2,-0.229174,-4.11987222222222,3.14751550084793,-0.679218177539033,-0.0425396023159016,-2.24205409885646,\ +-2,-0.229174,-4.09234141414141,3.14750951778517,-0.679231633770603,-0.04257474853762,-2.24208843315696,\ +-2,-0.229174,-4.06481060606061,3.14750271828062,-0.679246926223887,-0.0426146907718902,-2.2421274526762,\ +-2,-0.229174,-4.0372797979798,3.14749492298107,-0.679264458273954,-0.0426604825907669,-2.2421721866474,\ +-2,-0.229174,-4.00974898989899,3.14748589584967,-0.67928476078045,-0.0427135105422491,-2.24222398958758,\ +-2,-0.229174,-3.98221818181818,3.14747531985158,-0.679308546771823,-0.042775636979526,-2.24228468082727,\ +-2,-0.229174,-3.95468737373737,3.14746275894979,-0.679336796918925,-0.0428494233088165,-2.24235676260105,\ +-2,-0.229174,-3.92715656565657,3.14744759648695,-0.679370898117433,-0.0429384919516611,-2.24244377364803,\ +-2,-0.229174,-3.89962575757576,3.14742893085824,-0.679412878125363,-0.0430481391927033,-2.24255088790212,\ +-2,-0.229174,-3.87209494949495,3.14740538942765,-0.679465824075307,-0.043186428288444,-2.24268598234863,\ +-2,-0.229174,-3.84456414141414,3.14737477471152,-0.679534678226734,-0.0433662678861719,-2.24286166742911,\ +-2,-0.229174,-3.81703333333333,3.14733333525534,-0.679627877803693,-0.043609695102695,-2.2430994711757,\ +-2,-0.229174,-3.78950252525252,3.14727409700613,-0.679761107828247,-0.0439576775194915,-2.24343941476806,\ +-2,-0.229174,-3.76197171717172,3.14718245656264,-0.67996721213925,-0.0444959996919602,-2.2439653010322,\ +-2,-0.229174,-3.73444090909091,3.14702182104597,-0.680328490099318,-0.0454396186554904,-2.24488712123001,\ +-2,-0.229174,-3.7069101010101,3.14666723216175,-0.681125979667075,-0.0475225751668976,-2.24692195886846,\ +-2,-0.229174,-3.67937929292929,3.14523229503573,-0.684353230828418,-0.0559518062092374,-2.25515646424306,\ +-2,-0.229174,-3.65184848484848,3.15215056438713,-0.668793669092994,-0.0153119135487604,-2.21545540339247,\ +-2,-0.229174,-3.62431767676768,3.14877046134833,-0.676395703537295,-0.0351676054423378,-2.23485240423308,\ +-2,-0.229174,-3.59678686868687,3.14827493987494,-0.67751015811616,-0.038078440286541,-2.23769599519039,\ +-2,-0.229174,-3.56925606060606,3.14807582142467,-0.677957986274069,-0.0392481190073905,-2.23883865288539,\ +-2,-0.229174,-3.54172525252525,3.14796838730448,-0.678199611417716,-0.0398792177535438,-2.23945517246956,\ +-2,-0.229174,-3.51419444444444,3.14790116383334,-0.678350800638045,-0.040274107647623,-2.23984093991843,\ +-2,-0.229174,-3.48666363636364,3.14785513458499,-0.678454322905662,-0.0405444966158673,-2.24010508256693,\ +-2,-0.229174,-3.45913282828283,3.14782164127653,-0.678529651166854,-0.0407412458881918,-2.24029728668759,\ +-2,-0.229174,-3.43160202020202,3.14779617650409,-0.678586922816532,-0.0408908332438582,-2.24044341839023,\ +-2,-0.229174,-3.40407121212121,3.14777616249289,-0.678631935409604,-0.0410084012693577,-2.24055827044886,\ +-2,-0.229174,-3.3765404040404,3.14776001832926,-0.678668244506245,-0.0411032367033622,-2.24065091506698,\ +-2,-0.229174,-3.3490095959596,3.14774672056584,-0.678698151894999,-0.0411813515686333,-2.24072722538221,\ +-2,-0.229174,-3.32147878787879,3.14773557740893,-0.678723213457225,-0.0412468096590449,-2.24079117130973,\ +-2,-0.229174,-3.29394797979798,3.14772610444381,-0.678744518667813,-0.0413024565651814,-2.24084553270347,\ +-2,-0.229174,-3.26641717171717,3.14771795234485,-0.678762853179038,-0.041350344325823,-2.24089231419758,\ +-2,-0.229174,-3.23888636363636,3.14771086285406,-0.67877879782708,-0.041391990022274,-2.24093299782692,\ +-2,-0.229174,-3.21135555555555,3.14770464092067,-0.678792791291586,-0.0414285394383273,-2.24096870290623,\ +-2,-0.229174,-3.18382474747475,3.14769913647911,-0.67880517107816,-0.0414608741021283,-2.24100029059929,\ +-2,-0.229174,-3.15629393939394,3.14769423218716,-0.678816201095902,-0.0414896833156941,-2.24102843428437,\ +-2,-0.229174,-3.12876313131313,3.14768983496736,-0.678826090680901,-0.04151551384227,-2.24105366809382,\ +-2,-0.229174,-3.10123232323232,3.14768587004345,-0.678835008009103,-0.0415388049392197,-2.2410764211376,\ +-2,-0.229174,-3.07370151515151,3.14768227665295,-0.678843089738568,-0.0415599135426341,-2.24109704210617,\ +-2,-0.229174,-3.04617070707071,3.14767900491125,-0.678850448062502,-0.0415791326890292,-2.2411158172665,\ +-2,-0.229174,-3.0186398989899,3.14767601348163,-0.67885717594942,-0.0415967052021087,-2.24113298383277,\ +-2,-0.229174,-2.99110909090909,3.14767326781959,-0.67886335109176,-0.0416128340061295,-2.24114874004146,\ +-2,-0.229174,-2.96357828282828,3.14767073883283,-0.678869038919692,-0.041627689997612,-2.24116325284116,\ +-2,-0.229174,-2.93604747474747,3.14766840184641,-0.678874294928481,-0.041641418124194,-2.24117666383103,\ +-2,-0.229174,-2.90851666666667,3.147666235795,-0.678879166495178,-0.0416541421296025,-2.24118909389616,\ +-2,-0.229174,-2.88098585858586,3.14766422258615,-0.678883694310722,-0.0416659682941682,-2.24120064686169,\ +-2,-0.229174,-2.85345505050505,3.14766234659366,-0.678887913519218,-0.0416769884105026,-2.24121141239971,\ +-2,-0.229174,-2.82592424242424,3.14766059425128,-0.678891854631954,-0.0416872821707795,-2.24122146836138,\ +-2,-0.229174,-2.79839343434343,3.14765895372403,-0.678895544266425,-0.0416969190970246,-2.24123088266271,\ +-2,-0.229174,-2.77086262626263,3.14765741464059,-0.678899005748284,-0.0417059601133214,-2.24123971482034,\ +-2,-0.229174,-2.74333181818182,3.14765596787381,-0.678902259604966,-0.0417144588351073,-2.24124801721114,\ +-2,-0.229174,-2.71580101010101,3.1476546053596,-0.678905323973072,-0.0417224626332217,-2.24125583611161,\ +-2,-0.229174,-2.6882702020202,3.14765331994651,-0.678908214936596,-0.0417300135173199,-2.24126321256094,\ +-2,-0.229174,-2.66073939393939,3.14765210527018,-0.678910946809317,-0.0417371488734436,-2.24127018308151,\ +-2,-0.229174,-2.63320858585858,3.14765095564797,-0.678913532371812,-0.0417439020830846,-2.24127678028365,\ +-2,-0.229174,-2.60567777777778,3.14764986599005,-0.678915983071397,-0.0417503030453774,-2.24128303337579,\ +-2,-0.229174,-2.57814696969697,3.14764883172403,-0.678918309191541,-0.0417563786196587,-2.24128896859679,\ +-2,-0.229174,-2.55061616161616,3.14764784873095,-0.678920519996144,-0.0417621530022034,-2.24129460958396,\ +-2,-0.229174,-2.52308535353535,3.14764691329026,-0.678922623852804,-0.0417676480482924,-2.24129997768768,\ +-2,-0.229174,-2.49555454545454,3.14764602203295,-0.678924628338679,-0.0417728835486384,-2.24130509224149,\ +-2,-0.229174,-2.46802373737374,3.14764517190088,-0.678926540331664,-0.0417778774675516,-2.24130997079469,\ +-2,-0.229174,-2.44049292929293,3.14764436011178,-0.678928366089229,-0.0417826461488749,-2.24131462931358,\ +-2,-0.229174,-2.41296212121212,3.14764358412882,-0.678930111316842,-0.041787204494674,-2.24131908235595,\ +-2,-0.229174,-2.38543131313131,3.14764284163414,-0.678931781227522,-0.0417915661207883,-2.24132334322311,\ +-2,-0.229174,-2.3579005050505,3.14764213050569,-0.678933380593846,-0.0417957434926727,-2.24132742409252,\ +-2,-0.229174,-2.3303696969697,3.14764144879701,-0.678934913793502,-0.0417997480443757,-2.24133133613413,\ +-2,-0.229174,-2.30283888888889,3.14764079471945,-0.678936384849304,-0.0418035902830536,-2.24133508961234,\ +-2,-0.229174,-2.27530808080808,3.14764016662643,-0.678937797464438,-0.0418072798810261,-2.24133869397603,\ +-2,-0.229174,-2.24777727272727,3.1476395629997,-0.678939155053587,-0.0418108257570764,-2.24134215793796,\ +-2,-0.229174,-2.22024646464646,3.147638982437,-0.67894046077049,-0.04181423614843,-2.24134548954505,\ +-2,-0.229174,-2.19271565656565,3.14763842364122,-0.678941717532406,-0.0418175186746395,-2.24134869624084,\ +-2,-0.229174,-2.16518484848485,3.14763788541074,-0.678942928041853,-0.0418206803944139,-2.24135178492098,\ +-2,-0.229174,-2.13765404040404,3.14763736663077,-0.678944094806036,-0.0418237278562891,-2.24135476198271,\ +-2,-0.229174,-2.11012323232323,3.14763686626569,-0.678945220154162,-0.0418266671438999,-2.24135763336914,\ +-2,-0.229174,-2.08259242424242,3.14763638335209,-0.678946306252963,-0.0418295039165177,-2.2413604046088,\ +-2,-0.229174,-2.05506161616161,3.14763591699262,-0.678947355120619,-0.0418322434454178,-2.2413630808512,\ +-2,-0.229174,-2.02753080808081,3.14763546635041,-0.678948368639283,-0.0418348906465694,-2.24136566689873,\ +-2,-0.229174,-2,3.1476350306441,-0.678949348566341,-0.0418374501100763,-2.24136816723545,\ +-2,-0.227774,-4.72555,3.14756875874073,-0.679098397659336,-0.0422267502229837,-2.24174847403402,\ +-2,-0.227774,-4.69801919191919,3.14756768401897,-0.679100814766633,-0.0422330634458597,-2.24175464141363,\ +-2,-0.227774,-4.67048838383838,3.14756655057823,-0.679103363936154,-0.0422397216009829,-2.24176114575714,\ +-2,-0.227774,-4.64295757575758,3.14756535347101,-0.679106056294991,-0.0422467537511199,-2.24176801545591,\ +-2,-0.227774,-4.61542676767677,3.147564087178,-0.679108904256404,-0.0422541923183535,-2.24177528218303,\ +-2,-0.227774,-4.58789595959596,3.14756274552294,-0.679111921711168,-0.0422620735838967,-2.24178298138159,\ +-2,-0.227774,-4.56036515151515,3.14756132157183,-0.679115124254165,-0.0422704382798822,-2.24179115284275,\ +-2,-0.227774,-4.53283434343434,3.14755980751317,-0.679118529453955,-0.0422793322934996,-2.24179984139364,\ +-2,-0.227774,-4.50530353535354,3.14755819451446,-0.679122157175228,-0.0422888075091689,-2.2418090977201,\ +-2,-0.227774,-4.47777272727273,3.14755647254991,-0.679126029966586,-0.042298922821397,-2.2418189793561,\ +-2,-0.227774,-4.45024191919192,3.14755463019176,-0.679130173529665,-0.0423097453600763,-2.24182955188074,\ +-2,-0.227774,-4.42271111111111,3.1475526543564,-0.679134617290219,-0.0423213519821025,-2.24184089037544,\ +-2,-0.227774,-4.3951803030303,3.14755052999313,-0.679139395098006,-0.042333831099374,-2.24185308120966,\ +-2,-0.227774,-4.36764949494949,3.14754823970018,-0.679144546090649,-0.0423472849351367,-2.24186622424517,\ +-2,-0.227774,-4.34011868686869,3.14754576324679,-0.679150115768174,-0.0423618323305318,-2.24188043557773,\ +-2,-0.227774,-4.31258787878788,3.14754307697412,-0.679156157340646,-0.0423776122645028,-2.2418958509757,\ +-2,-0.227774,-4.28505707070707,3.14754015303688,-0.679162733433523,-0.0423947883079629,-2.2419126302313,\ +-2,-0.227774,-4.25752626262626,3.14753695843468,-0.679169918266564,-0.0424135543149075,-2.24193096272026,\ +-2,-0.227774,-4.22999545454545,3.14753345376095,-0.679177800467234,-0.0424341417706884,-2.24195107458034,\ +-2,-0.227774,-4.20246464646465,3.14752959156927,-0.679186486745086,-0.0424568293891136,-2.24197323808671,\ +-2,-0.227774,-4.17493383838384,3.14752531421277,-0.679196106751074,-0.0424819558044618,-2.24199778405076,\ +-2,-0.227774,-4.14740303030303,3.14752055094715,-0.679206819592942,-0.0425099365889446,-2.2420251184445,\ +-2,-0.227774,-4.11987222222222,3.14751521398701,-0.679218822704751,-0.0425412874189918,-2.24205574503158,\ +-2,-0.227774,-4.09234141414141,3.14750919304599,-0.679232364126584,-0.0425766561484617,-2.24209029669963,\ +-2,-0.227774,-4.06481060606061,3.14750234763375,-0.679247759828727,-0.0426168680575812,-2.24212957966389,\ +-2,-0.227774,-4.0372797979798,3.14749449595628,-0.679265418675773,-0.0426629910564643,-2.24217463716443,\ +-2,-0.227774,-4.00974898989899,3.14748539853272,-0.679285879273131,-0.0427164319241771,-2.24222684348197,\ +-2,-0.227774,-3.98221818181818,3.14747473334231,-0.679309865862867,-0.0427790823026848,-2.24228804655921,\ +-2,-0.227774,-3.95468737373737,3.14746205691101,-0.679338375842089,-0.0428535472853815,-2.24236079130865,\ +-2,-0.227774,-3.92715656565657,3.14744674109128,-0.679372821948527,-0.0429435167904286,-2.2424486824068,\ +-2,-0.227774,-3.89962575757576,3.14742786576352,-0.679415273580965,-0.0430543958636971,-2.24255700003627,\ +-2,-0.227774,-3.87209494949495,3.14740402689002,-0.679468888496058,-0.0431944322240635,-2.24269380138343,\ +-2,-0.227774,-3.84456414141414,3.1473729702203,-0.679538736625025,-0.0433768679836353,-2.2428720226512,\ +-2,-0.227774,-3.81703333333333,3.14733083292841,-0.679633505672208,-0.0436243944866666,-2.24311383098571,\ +-2,-0.227774,-3.78950252525252,3.14727039728065,-0.679769428710831,-0.0439794107649954,-2.2434606459487,\ +-2,-0.227774,-3.76197171717172,3.14717643825565,-0.679980747636988,-0.0445313529483379,-2.24399983758462,\ +-2,-0.227774,-3.73444090909091,3.14701035790469,-0.680354271323681,-0.0455069564255749,-2.24495290341428,\ +-2,-0.227774,-3.7069101010101,3.14663739890117,-0.681193076282751,-0.0476978242712988,-2.2470931595017,\ +-2,-0.227774,-3.67937929292929,3.14503270308414,-0.684802123916401,-0.0571242664122802,-2.25630183916457,\ +-2,-0.227774,-3.65184848484848,3.15156504472249,-0.670110534468801,-0.0187514235061161,-2.21881545641363,\ +-2,-0.227774,-3.62431767676768,3.14872811111775,-0.676490951495107,-0.0354163828081387,-2.23509543453388,\ +-2,-0.227774,-3.59678686868687,3.14826080049022,-0.677541958356693,-0.0381614990759665,-2.237777135219,\ +-2,-0.227774,-3.56925606060606,3.14806883053566,-0.67797370916136,-0.0392891854887467,-2.23887877068021,\ +-2,-0.227774,-3.54172525252525,3.14796423049787,-0.67820896030045,-0.0399036360242723,-2.23947902664802,\ +-2,-0.227774,-3.51419444444444,3.14789841130484,-0.678356991223391,-0.0402902767871058,-2.23985673553078,\ +-2,-0.227774,-3.48666363636364,3.14785317856583,-0.678458722098451,-0.0405559868317084,-2.24011630734456,\ +-2,-0.227774,-3.45913282828283,3.14782018012055,-0.678532937385638,-0.040749829136288,-2.24030567165203,\ +-2,-0.227774,-3.43160202020202,3.1477950436727,-0.678589470615584,-0.0408974878194646,-2.2404499192369,\ +-2,-0.227774,-3.40407121212121,3.14777525858322,-0.678633968351315,-0.0410137110932687,-2.24056345760927,\ +-2,-0.227774,-3.3765404040404,3.14775928036199,-0.678669904234525,-0.0411075717341468,-2.2406551499532,\ +-2,-0.227774,-3.3490095959596,3.14774610671082,-0.678699532488131,-0.0411849575286019,-2.24073074804004,\ +-2,-0.227774,-3.32147878787879,3.14773505879905,-0.678724379838864,-0.0412498561217541,-2.24079414739538,\ +-2,-0.227774,-3.29394797979798,3.14772566051657,-0.678745517084198,-0.0413050643208054,-2.24084808021672,\ +-2,-0.227774,-3.26641717171717,3.1477175680573,-0.678763717462508,-0.0413526017407834,-2.24089451946347,\ +-2,-0.227774,-3.23888636363636,3.14771052694789,-0.678779553298206,-0.0413939632311629,-2.24093492545223,\ +-2,-0.227774,-3.21135555555555,3.14770434480272,-0.678793457276857,-0.0414302789198399,-2.24097040220357,\ +-2,-0.227774,-3.18382474747475,3.147698873477,-0.678805762584154,-0.0414624190518188,-2.24100179985872,\ +-2,-0.227774,-3.15629393939394,3.14769399704107,-0.678816729952137,-0.0414910646309942,-2.24102978368958,\ +-2,-0.227774,-3.12876313131313,3.14768962347521,-0.678826566338192,-0.0415167562076715,-2.24105488175904,\ +-2,-0.227774,-3.10123232323232,3.14768567880766,-0.678835438108713,-0.0415399283128886,-2.24107751855995,\ +-2,-0.227774,-3.07370151515151,3.14768210289684,-0.678843480525461,-0.0415609342357363,-2.24109803921998,\ +-2,-0.227774,-3.04617070707071,3.14767884634335,-0.678850804690289,-0.041580064162242,-2.24111672722151,\ +-2,-0.227774,-3.0186398989899,3.14767586819418,-0.678857502708751,-0.0415975586621474,-2.24113381757683,\ +-2,-0.227774,-2.99110909090909,3.14767313421147,-0.67886365158367,-0.041613618858507,-2.24114950676277,\ +-2,-0.227774,-2.96357828282828,3.14767061555029,-0.678869316188782,-0.0416284141944909,-2.24116396030819,\ +-2,-0.227774,-2.93604747474747,3.14766828773715,-0.678874551566379,-0.0416420884346318,-2.24117731865647,\ +-2,-0.227774,-2.90851666666667,3.14766612987199,-0.678879404721756,-0.0416547643516626,-2.24118970174412,\ +-2,-0.227774,-2.88098585858586,3.14766412399905,-0.678883916038437,-0.0416665474229825,-2.24120121261192,\ +-2,-0.227774,-2.85345505050505,3.14766225460596,-0.678888120404544,-0.0416775287725985,-2.24121194027877,\ +-2,-0.227774,-2.82592424242424,3.14766050822184,-0.678892048116815,-0.0416877875323152,-2.24122196204844,\ +-2,-0.227774,-2.79839343434343,3.14765887309216,-0.678895725611849,-0.0416973927516599,-2.24123134537534,\ +-2,-0.227774,-2.77086262626263,3.14765733891381,-0.678899176061895,-0.0417064049540572,-2.24124014938471,\ +-2,-0.227774,-2.74333181818182,3.14765589661778,-0.678902419863631,-0.0417148774134067,-2.24124842611977,\ +-2,-0.227774,-2.71580101010101,3.14765453818978,-0.678905475041632,-0.0417228572079628,-2.24125622157118,\ +-2,-0.227774,-2.6882702020202,3.14765325652123,-0.678908357583484,-0.0417303860955637,-2.24126357653217,\ +-2,-0.227774,-2.66073939393939,3.14765204528483,-0.678911081719621,-0.0417375012445709,-2.24127052731243,\ +-2,-0.227774,-2.63320858585858,3.14765089883009,-0.678913660158281,-0.0417442358475263,-2.24127710633771,\ +-2,-0.227774,-2.60567777777778,3.14764981209523,-0.678916104283739,-0.0417506196389127,-2.24128334265562,\ +-2,-0.227774,-2.57814696969697,3.14764878053239,-0.678918424324331,-0.0417566793340564,-2.24128926236431,\ +-2,-0.227774,-2.55061616161616,3.14764780004407,-0.678920629495558,-0.0417624390028353,-2.24129488897761,\ +-2,-0.227774,-2.52308535353535,3.14764686692873,-0.678922728122409,-0.0417679203892228,-2.2413002437372,\ +-2,-0.227774,-2.49555454545454,3.14764597783405,-0.678924727744392,-0.0417731431856032,-2.24130534588051,\ +-2,-0.227774,-2.46802373737374,3.14764512971675,-0.678926635206041,-0.0417781252691614,-2.24131021287178,\ +-2,-0.227774,-2.44049292929293,3.14764431980774,-0.678928456735189,-0.0417828829063221,-2.24131486060164,\ +-2,-0.227774,-2.41296212121212,3.14764354558192,-0.678930198010895,-0.0417874309301691,-2.24131930356051,\ +-2,-0.227774,-2.38543131313131,3.14764280473193,-0.678931864222583,-0.0417917828949178,-2.24132355498948,\ +-2,-0.227774,-2.3579005050505,3.14764209514511,-0.678933460121702,-0.0417959512108336,-2.24132762701214,\ +-2,-0.227774,-2.3303696969697,3.14764141488344,-0.678934990066968,-0.0417999472624219,-2.24133153074999,\ +-2,-0.227774,-2.30283888888889,3.14764076216584,-0.678936458064129,-0.0418037815122609,-2.24133527642391,\ +-2,-0.227774,-2.27530808080808,3.1476401353526,-0.678937867800983,-0.0418074635924744,-2.24133887344352,\ +-2,-0.227774,-2.24777727272727,3.14763953293163,-0.678939222678306,-0.0418110023855225,-2.24134233048607,\ +-2,-0.227774,-2.22024646464646,3.14763895350628,-0.678940525837241,-0.0418144060957428,-2.24134565556637,\ +-2,-0.227774,-2.19271565656565,3.14763839578452,-0.678941780183627,-0.0418176823128521,-2.24134885609881,\ +-2,-0.227774,-2.16518484848485,3.14763785856934,-0.678942988409599,-0.0418208380684418,-2.24135193895254,\ +-2,-0.227774,-2.13765404040404,3.14763734075017,-0.678944153012912,-0.0418238798863556,-2.2413549105007,\ +-2,-0.227774,-2.11012323232323,3.14763684129521,-0.678945276314147,-0.0418268138277093,-2.24135777666437,\ +-2,-0.227774,-2.08259242424242,3.14763635924453,-0.678946360472158,-0.0418296455311978,-2.241360542952,\ +-2,-0.227774,-2.05506161616161,3.14763589370401,-0.678947407497922,-0.0418323802492692,-2.24136321449471,\ +-2,-0.227774,-2.02753080808081,3.14763544383976,-0.678948419266977,-0.0418350228806369,-2.24136579607802,\ +-2,-0.227774,-2,3.14763500887303,-0.678949397530656,-0.0418375779995665,-2.24136829217055,\ +-2,-0.216269,-4.72555,3.14756831646544,-0.679099392360344,-0.0422293482744564,-2.2417510120673,\ +-2,-0.216269,-4.69801919191919,3.14756721777349,-0.679101863377938,-0.0422358023051957,-2.24175731700194,\ +-2,-0.216269,-4.67048838383838,3.14756605835966,-0.679104470962292,-0.0422426130335473,-2.24176397039403,\ +-2,-0.216269,-4.64295757575758,3.147564833047,-0.679107226756694,-0.0422498108705137,-2.24177100195206,\ +-2,-0.216269,-4.61542676767677,3.14756353605284,-0.679110143766705,-0.0422574297852209,-2.24177844486041,\ +-2,-0.216269,-4.58789595959596,3.14756216089749,-0.679113236565406,-0.0422655078409792,-2.24178633630308,\ +-2,-0.216269,-4.56036515151515,3.1475607002961,-0.679116521536893,-0.0422740878312693,-2.24179471808498,\ +-2,-0.216269,-4.53283434343434,3.14755914602945,-0.679120017166611,-0.0422832180380816,-2.24180363737272,\ +-2,-0.216269,-4.50530353535354,3.14755748878923,-0.679123744389412,-0.0422929531409807,-2.24181314758269,\ +-2,-0.216269,-4.47777272727273,3.14755571799154,-0.679127727009144,-0.0423033553130419,-2.24182330945171,\ +-2,-0.216269,-4.45024191919192,3.1475538215505,-0.679131992207561,-0.0423144955500693,-2.24183419233548,\ +-2,-0.216269,-4.42271111111111,3.14755178560211,-0.679136571165541,-0.0423264552931545,-2.24184587579369,\ +-2,-0.216269,-4.3951803030303,3.14754959416474,-0.679141499826649,-0.0423393284229904,-2.2418584515383,\ +-2,-0.216269,-4.36764949494949,3.14754722871874,-0.679146819842562,-0.0423532237292511,-2.24187202584579,\ +-2,-0.216269,-4.34011868686869,3.14754466768182,-0.679152579753031,-0.0423682679925297,-2.24188672256797,\ +-2,-0.216269,-4.31258787878788,3.14754188574862,-0.679158836471183,-0.0423846098637491,-2.24190268692174,\ +-2,-0.216269,-4.28505707070707,3.14753885305171,-0.679165657170448,-0.0424024247926466,-2.24192009030374,\ +-2,-0.216269,-4.25752626262626,3.14753553408506,-0.679173121705854,-0.042421921351922,-2.24193913646837,\ +-2,-0.216269,-4.22999545454545,3.14753188630742,-0.679181325754954,-0.04244334944099,-2.24196006954206,\ +-2,-0.216269,-4.20246464646465,3.1475278583091,-0.679190384940907,-0.0424670110550539,-2.24198318454356,\ +-2,-0.216269,-4.17493383838384,3.14752338737393,-0.679200440315772,-0.0424932746068234,-2.24200884137479,\ +-2,-0.216269,-4.14740303030303,3.14751839619015,-0.679211665757902,-0.0425225942477616,-2.24203748369574,\ +-2,-0.216269,-4.11987222222222,3.14751278834212,-0.679224278111239,-0.0425555363507915,-2.24206966479542,\ +-2,-0.216269,-4.09234141414141,3.14750644202114,-0.67923855133018,-0.0425928164551787,-2.24210608368327,\ +-2,-0.216269,-4.06481060606061,3.14749920107637,-0.679254836606355,-0.0426353518354747,-2.24214763644364,\ +-2,-0.216269,-4.0372797979798,3.14749086199441,-0.679273591652456,-0.0426843379877463,-2.24219549095518,\ +-2,-0.216269,-4.00974898989899,3.14748115446869,-0.679295424402536,-0.0427413627699853,-2.24225119839439,\ +-2,-0.216269,-3.98221818181818,3.14746971154836,-0.679321160148903,-0.0428085817564652,-2.2423168645391,\ +-2,-0.216269,-3.95468737373737,3.14745602220634,-0.679351948219083,-0.04288899686639,-2.24239542196048,\ +-2,-0.216269,-3.92715656565657,3.14743935293209,-0.679389438317917,-0.0429869169504082,-2.24249107996938,\ +-2,-0.216269,-3.89962575757576,3.14741861186697,-0.679436086094525,-0.0431087558984751,-2.24261010428698,\ +-2,-0.216269,-3.87209494949495,3.14739209952504,-0.679495713784628,-0.0432644969769584,-2.24276224755383,\ +-2,-0.216269,-3.84456414141414,3.14735701779599,-0.679574614489607,-0.0434705770861299,-2.24296356695747,\ +-2,-0.216269,-3.81703333333333,3.14730841106812,-0.679683933647986,-0.0437561069061751,-2.24324250068534,\ +-2,-0.216269,-3.78950252525252,3.14723659022235,-0.679845462612378,-0.044178003093612,-2.24365465054878,\ +-2,-0.216269,-3.76197171717172,3.14711970795761,-0.680108337143795,-0.0448646029427373,-2.24432538909176,\ +-2,-0.216269,-3.73444090909091,3.14689597103397,-0.680611533579081,-0.0461788976166451,-2.24560932193235,\ +-2,-0.216269,-3.7069101010101,3.14629547330274,-0.681962085436231,-0.0497063930204516,-2.24905532782726,\ +-2,-0.216269,-3.67937929292929,3.13929604233312,-0.697704184038188,-0.0908230522369975,-2.2892221413365,\ +-2,-0.216269,-3.65184848484848,3.14952994250819,-0.674687589355351,-0.0307061959125238,-2.23049405878413,\ +-2,-0.216269,-3.62431767676768,3.14847009906784,-0.677071234542081,-0.0369320193757168,-2.23657605802124,\ +-2,-0.216269,-3.59678686868687,3.14816397214081,-0.677759730548517,-0.03873029649139,-2.23833279271028,\ +-2,-0.216269,-3.56925606060606,3.1480184442585,-0.678087030622288,-0.039585168890247,-2.23916791649887,\ +-2,-0.216269,-3.54172525252525,3.14793339784405,-0.678278304605544,-0.0400847558503733,-2.23965596238201,\ +-2,-0.216269,-3.51419444444444,3.14787761565259,-0.678403761769408,-0.0404124363955912,-2.23997607310115,\ +-2,-0.216269,-3.48666363636364,3.14783821033344,-0.678492386462234,-0.0406439145094775,-2.24020220378416,\ +-2,-0.216269,-3.45913282828283,3.14780889301722,-0.678558322691129,-0.0408161328090938,-2.24037044362795,\ +-2,-0.216269,-3.43160202020202,3.14778622941737,-0.678609294352247,-0.0409492652759225,-2.24050050057005,\ +-2,-0.216269,-3.40407121212121,3.14776818523793,-0.67864987668718,-0.0410552619462367,-2.24060404858612,\ +-2,-0.216269,-3.3765404040404,3.14775347876786,-0.678682952333343,-0.0411416519572543,-2.24068844288098,\ +-2,-0.216269,-3.3490095959596,3.14774126232151,-0.678710427781532,-0.0412134148567594,-2.2407585479687,\ +-2,-0.216269,-3.32147878787879,3.14773095286045,-0.678733614316731,-0.0412739755793391,-2.24081770966365,\ +-2,-0.216269,-3.29394797979798,3.14772213619222,-0.678753443480157,-0.0413257672099049,-2.24086830484346,\ +-2,-0.216269,-3.26641717171717,3.14771450997522,-0.678770595254415,-0.0413705657894926,-2.24091206852042,\ +-2,-0.216269,-3.23888636363636,3.14770784835043,-0.678785577608668,-0.0414096980786278,-2.24095029680525,\ +-2,-0.216269,-3.21135555555555,3.14770197919538,-0.678798777655621,-0.0414441751738316,-2.24098397743689,\ +-2,-0.216269,-3.18382474747475,3.1476967690401,-0.678810495576494,-0.0414747811159893,-2.24101387634391,\ +-2,-0.216269,-3.15629393939394,3.14769211279386,-0.678820967725965,-0.0415021332379627,-2.24104059659803,\ +-2,-0.216269,-3.12876313131313,3.14768792658322,-0.678830382739969,-0.0415267242364138,-2.24106461951398,\ +-2,-0.216269,-3.10123232323232,3.1476841426547,-0.678838892999762,-0.0415489521147016,-2.24108633390077,\ +-2,-0.216269,-3.07370151515151,3.14768070567961,-0.678846622942518,-0.0415691418892716,-2.24110605726657,\ +-2,-0.216269,-3.04617070707071,3.14767757003083,-0.678853675186112,-0.0415875615869174,-2.24112405144641,\ +-2,-0.216269,-3.0186398989899,3.14767469774571,-0.678860135110636,-0.041604434211206,-2.24114053429219,\ +-2,-0.216269,-2.99110909090909,3.14767205698152,-0.678866074332033,-0.0416199468152359,-2.24115568853588,\ +-2,-0.216269,-2.96357828282828,3.14766962083009,-0.678871553368297,-0.04163425746546,-2.24116966859237,\ +-2,-0.216269,-2.93604747474747,3.14766736639751,-0.678876623709031,-0.0416475006471571,-2.24118260584018,\ +-2,-0.216269,-2.90851666666667,3.14766527408252,-0.678881329438543,-0.0416597915037735,-2.24119461276281,\ +-2,-0.216269,-2.88098585858586,3.14766332700508,-0.678885708520939,-0.0416712291934442,-2.24120578622769,\ +-2,-0.216269,-2.85345505050505,3.14766151055001,-0.678889793826576,-0.0416818995699844,-2.24121621010533,\ +-2,-0.216269,-2.82592424242424,3.14765981199944,-0.678893613958634,-0.0416918773418194,-2.24122595737828,\ +-2,-0.216269,-2.79839343434343,3.14765822023459,-0.678897193923811,-0.0417012278237256,-2.24123509185249,\ +-2,-0.216269,-2.77086262626263,3.14765672549216,-0.678900555680344,-0.0417100083682518,-2.24124366955557,\ +-2,-0.216269,-2.74333181818182,3.14765531916381,-0.67890371858881,-0.0417182695431337,-2.24125173988709,\ +-2,-0.216269,-2.71580101010101,3.14765399363036,-0.678906699785223,-0.0417260561057807,-2.2412593465705,\ +-2,-0.216269,-2.6882702020202,3.14765274212357,-0.678909514491613,-0.0417334078144932,-2.24126652844565,\ +-2,-0.216269,-2.66073939393939,3.14765155861072,-0.678912176275998,-0.0417403601074623,-2.24127332013205,\ +-2,-0.216269,-2.63320858585858,3.1476504376972,-0.678914697271091,-0.0417469446740277,-2.24127975258698,\ +-2,-0.216269,-2.60567777777778,3.1476493745444,-0.678917088359208,-0.0417531899376234,-2.24128585357726,\ +-2,-0.216269,-2.57814696969697,3.14764836479984,-0.678919359329308,-0.0417591214659396,-2.24129164807993,\ +-2,-0.216269,-2.55061616161616,3.14764740453763,-0.678921519010926,-0.0417647623207874,-2.24129715862405,\ +-2,-0.216269,-2.52308535353535,3.14764649020745,-0.67892357538893,-0.0417701333577551,-2.24130240558342,\ +-2,-0.216269,-2.49555454545454,3.14764561859069,-0.678925535702139,-0.041775253483872,-2.24130740742828,\ +-2,-0.216269,-2.46802373737374,3.14764478676259,-0.678927406528486,-0.0417801398799824,-2.24131218094259,\ +-2,-0.216269,-2.44049292929293,3.14764399205947,-0.678929193858749,-0.0417848081933487,-2.24131674141215,\ +-2,-0.216269,-2.41296212121212,3.14764323205023,-0.678930903160634,-0.0417892727050277,-2.24132110278809,\ +-2,-0.216269,-2.38543131313131,3.14764250451146,-0.678932539434642,-0.0417935464757936,-2.24132527782946,\ +-2,-0.216269,-2.3579005050505,3.14764180740581,-0.678934107262935,-0.0417976414737505,-2.24132927822789,\ +-2,-0.216269,-2.3303696969697,3.14764113886285,-0.678935610852177,-0.0418015686862576,-2.24133311471693,\ +-2,-0.216269,-2.30283888888889,3.14764049716238,-0.678937054071238,-0.0418053382183741,-2.24133679716819,\ +-2,-0.216269,-2.27530808080808,3.14763988071958,-0.678938440484418,-0.0418089593796771,-2.24134033467618,\ +-2,-0.216269,-2.24777727272727,3.147639288072,-0.678939773380854,-0.041812440761029,-2.24134373563332,\ +-2,-0.216269,-2.22024646464646,3.14763871786796,-0.678941055800559,-0.0418157903026204,-2.24134700779636,\ +-2,-0.216269,-2.19271565656565,3.14763816885625,-0.678942290557577,-0.0418190153544291,-2.24135015834548,\ +-2,-0.216269,-2.16518484848485,3.14763763987696,-0.678943480260596,-0.0418221227300582,-2.24135319393688,\ +-2,-0.216269,-2.13765404040404,3.14763712985332,-0.678944627331336,-0.0418251187547881,-2.24135612074974,\ +-2,-0.216269,-2.11012323232323,3.14763663778436,-0.678945734021015,-0.0418280093085535,-2.24135894452813,\ +-2,-0.216269,-2.08259242424242,3.14763616273839,-0.678946802425089,-0.0418307998644601,-2.24136167061874,\ +-2,-0.216269,-2.05506161616161,3.14763570384705,-0.678947834496496,-0.0418334955233713,-2.2413643040046,\ +-2,-0.216269,-2.02753080808081,3.1476352603001,-0.678948832057573,-0.041836101045026,-2.24136684933548,\ +-2,-0.216269,-2,3.14763483134055,-0.678949796810784,-0.0418386208760855,-2.24136931095533,\ +-2,-0.206412,-4.72555,3.14756792977044,-0.679100262058319,-0.0422316198315185,-2.24175323114857,\ +-2,-0.206412,-4.69801919191919,3.14756680989812,-0.6791027807117,-0.0422381982817795,-2.24175965762849,\ +-2,-0.206412,-4.67048838383838,3.14756562751488,-0.679105439955527,-0.0422451439390868,-2.24176644283252,\ +-2,-0.206412,-4.64295757575758,3.14756437723642,-0.679108251899349,-0.042252488432271,-2.24177361765882,\ +-2,-0.206412,-4.61542676767677,3.14756305304184,-0.679111230084538,-0.0422602671299379,-2.24178121665894,\ +-2,-0.206412,-4.58789595959596,3.14756164817661,-0.679114389702375,-0.0422685197100432,-2.24178927859424,\ +-2,-0.206412,-4.56036515151515,3.14756015503739,-0.679117747853192,-0.0422772908368306,-2.24179784709715,\ +-2,-0.206412,-4.53283434343434,3.14755856503434,-0.679121323856023,-0.0422866309695161,-2.24180697146121,\ +-2,-0.206412,-4.50530353535354,3.14755686842573,-0.679125139620475,-0.0422965973336319,-2.24181670758998,\ +-2,-0.206412,-4.47777272727273,3.14755505411827,-0.679129220096028,-0.0423072550945269,-2.24182711914341,\ +-2,-0.206412,-4.45024191919192,3.14755310942417,-0.679133593818199,-0.0423186787838684,-2.24183827893139,\ +-2,-0.206412,-4.42271111111111,3.14755101976401,-0.67913829357682,-0.0423309540451588,-2.24185027061896,\ +-2,-0.206412,-4.3951803030303,3.14754876830067,-0.679143357239586,-0.0423441797847213,-2.24186319082758,\ +-2,-0.206412,-4.36764949494949,3.14754633548453,-0.679148828774588,-0.0423584708424599,-2.24187715174419,\ +-2,-0.206412,-4.34011868686869,3.14754369848445,-0.679154759530319,-0.0423739613350875,-2.24189228438727,\ +-2,-0.206412,-4.31258787878788,3.147540830469,-0.679161209852083,-0.042390808878004,-2.2419087427311,\ +-2,-0.206412,-4.28505707070707,3.14753769969027,-0.679168251142673,-0.0424091999675838,-2.24192670896374,\ +-2,-0.206412,-4.25752626262626,3.14753426830366,-0.679175968516639,-0.042429356913834,-2.2419464002596,\ +-2,-0.206412,-4.22999545454545,3.14753049083063,-0.67918446425768,-0.0424515468707179,-2.24196807760102,\ +-2,-0.206412,-4.20246464646465,3.14752631213159,-0.679193862377718,-0.0424760937439589,-2.24199205741112,\ +-2,-0.206412,-4.17493383838384,3.14752166469661,-0.679204314710175,-0.0425033941060324,-2.24201872710105,\ +-2,-0.206412,-4.14740303030303,3.14751646497036,-0.679216009175591,-0.0425339387850746,-2.2420485661602,\ +-2,-0.206412,-4.11987222222222,3.14751060828381,-0.679229181180215,-0.042568342636748,-2.24208217524033,\ +-2,-0.206412,-4.09234141414141,3.14750396173562,-0.679244129626392,-0.0426073863616534,-2.24212031700687,\ +-2,-0.206412,-4.06481060606061,3.14749635398487,-0.679261239869069,-0.0426520764652432,-2.24216397471377,\ +-2,-0.206412,-4.0372797979798,3.14748756027037,-0.679281017408292,-0.0427037332589821,-2.24221443817165,\ +-2,-0.206412,-4.00974898989899,3.14747727983171,-0.679304138670555,-0.0427641234957054,-2.24227343331918,\ +-2,-0.206412,-3.98221818181818,3.14746510082066,-0.679331529924723,-0.0428356664895332,-2.24234332358132,\ +-2,-0.206412,-3.95468737373737,3.14745044379482,-0.67936449436813,-0.0429217660509769,-2.24242743413635,\ +-2,-0.206412,-3.92715656565657,3.14743246681331,-0.679404925571276,-0.0430273679814096,-2.24253059653151,\ +-2,-0.206412,-3.89962575757576,3.14740989780588,-0.679455684488957,-0.043159944785384,-2.24266011064726,\ +-2,-0.206412,-3.87209494949495,3.14738071967433,-0.679521307684029,-0.0433313454744987,-2.24282755176836,\ +-2,-0.206412,-3.84456414141414,3.14734153129389,-0.679609444469949,-0.0435615492283166,-2.2430524375306,\ +-2,-0.206412,-3.81703333333333,3.1472861146701,-0.679734079452362,-0.043887082324499,-2.24337045040943,\ +-2,-0.206412,-3.78950252525252,3.14720175722869,-0.679923803898015,-0.0443826220599659,-2.24385454256381,\ +-2,-0.206412,-3.76197171717172,3.1470577758799,-0.680247625734265,-0.0452284096785455,-2.24468079144179,\ +-2,-0.206412,-3.73444090909091,3.14675640789922,-0.680925418613167,-0.0469987313825249,-2.24641021652373,\ +-2,-0.206412,-3.7069101010101,3.1457285470315,-0.683237133265233,-0.0530366800676543,-2.25230868112264,\ +-2,-0.206412,-3.67937929292929,3.15676843276406,-0.658407833496386,0.0118147659177055,-2.18895538378932,\ +-2,-0.206412,-3.65184848484848,3.14894233737218,-0.676009145068996,-0.0341579565251053,-2.23386607945521,\ +-2,-0.206412,-3.62431767676768,3.14832807513043,-0.677390654054364,-0.0377663086001549,-2.23739107413221,\ +-2,-0.206412,-3.59678686868687,3.14810131745137,-0.677900644331853,-0.0390983480552185,-2.23869234182754,\ +-2,-0.206412,-3.56925606060606,3.14798330736626,-0.678166055392254,-0.03979157304375,-2.23936955246102,\ +-2,-0.206412,-3.54172525252525,3.14791094607509,-0.678328799847577,-0.0402166439620563,-2.23978480371511,\ +-2,-0.206412,-3.51419444444444,3.14786203930741,-0.678438793811717,-0.0405039363017776,-2.24006545924627,\ +-2,-0.206412,-3.48666363636364,3.14782677393195,-0.67851810754737,-0.0407110952024155,-2.24026783251996,\ +-2,-0.206412,-3.45913282828283,3.14780014108318,-0.678578006263877,-0.0408675441725502,-2.24042066732529,\ +-2,-0.206412,-3.43160202020202,3.14777931670483,-0.678624841416455,-0.0409898725263834,-2.24054016974278,\ +-2,-0.206412,-3.40407121212121,3.14776258744247,-0.678662466431762,-0.0410881449976424,-2.24063617199834,\ +-2,-0.206412,-3.3765404040404,3.14774885347834,-0.678693354859481,-0.041168822230608,-2.24071498548739,\ +-2,-0.206412,-3.3490095959596,3.14773737646917,-0.678719167273497,-0.0412362414646915,-2.24078084725374,\ +-2,-0.206412,-3.32147878787879,3.14772764231582,-0.678741059910575,-0.0412934226652983,-2.24083670749786,\ +-2,-0.206412,-3.29394797979798,3.14771928203881,-0.678759862625457,-0.0413425333232686,-2.24088468363886,\ +-2,-0.206412,-3.26641717171717,3.14771202394836,-0.678776186463213,-0.0413851694222417,-2.24092633479118,\ +-2,-0.206412,-3.23888636363636,3.14770566356157,-0.67879049131692,-0.0414225321532169,-2.24096283439684,\ +-2,-0.206412,-3.21135555555555,3.14770004403181,-0.678803129943089,-0.0414555428780442,-2.24099508253307,\ +-2,-0.206412,-3.18382474747475,3.14769504304053,-0.678814377442806,-0.0414849201310151,-2.24102378113514,\ +-2,-0.206412,-3.15629393939394,3.1476905637916,-0.678824451515784,-0.0415112325202385,-2.24104948567562,\ +-2,-0.206412,-3.12876313131313,3.14768652868461,-0.678833526689513,-0.0415349358926361,-2.24107264147078,\ +-2,-0.206412,-3.10123232323232,3.14768287478127,-0.67884174451564,-0.0415563999658109,-2.24109360969731,\ +-2,-0.206412,-3.07370151515151,3.14767955049867,-0.678849221006899,-0.0415759277524867,-2.24111268636794,\ +-2,-0.206412,-3.04617070707071,3.1476765131589,-0.678856052148242,-0.0415937699549571,-2.24113011639347,\ +-2,-0.206412,-3.0186398989899,3.14767372714688,-0.678862318039862,-0.0416101357862848,-2.24114610415383,\ +-2,-0.206412,-2.99110909090909,3.1476711625074,-0.678868086052667,-0.0416252012119889,-2.24116082154956,\ +-2,-0.206412,-2.96357828282828,3.14766879386375,-0.678873413260276,-0.0416391153021849,-2.24117441420705,\ +-2,-0.206412,-2.93604747474747,3.14766659957515,-0.678878348333965,-0.0416520051809889,-2.24118700631371,\ +-2,-0.206412,-2.90851666666667,3.14766456107365,-0.67888293303402,-0.0416639799217471,-2.24119870442314,\ +-2,-0.206412,-2.88098585858586,3.14766266233747,-0.678887203394322,-0.0416751336410639,-2.24120960047773,\ +-2,-0.206412,-2.85345505050505,3.14766088946899,-0.678891190671364,-0.041685547977517,-2.24121977423013,\ +-2,-0.206412,-2.82592424242424,3.14765923035403,-0.678894922110583,-0.0416952940932425,-2.24122929519852,\ +-2,-0.206412,-2.79839343434343,3.14765767438468,-0.678898421569768,-0.0417044343022123,-2.24123822425736,\ +-2,-0.206412,-2.77086262626263,3.14765621223221,-0.678901710029713,-0.0417130234039793,-2.24124661494025,\ +-2,-0.206412,-2.74333181818182,3.14765483565992,-0.678904806015184,-0.0417211097832304,-2.24125451451413,\ +-2,-0.206412,-2.71580101010101,3.14765353736792,-0.678907725944084,-0.0417287363217569,-2.24126196487017,\ +-2,-0.206412,-2.6882702020202,3.14765231086356,-0.678910484418696,-0.0417359411591469,-2.24126900326691,\ +-2,-0.206412,-2.66073939393939,3.1476511503529,-0.678913094469918,-0.0417427583306852,-2.24127566295335,\ +-2,-0.206412,-2.63320858585858,3.14765005064915,-0.678915567763086,-0.0417492183049843,-2.24128197369424,\ +-2,-0.206412,-2.60567777777778,3.14764900709522,-0.678917914772304,-0.0417553484392615,-2.24128796221484,\ +-2,-0.206412,-2.57814696969697,3.1476480154977,-0.678920144928706,-0.0417611733666125,-2.24129365257916,\ +-2,-0.206412,-2.55061616161616,3.14764707207066,-0.678922266747116,-0.041766715326849,-2.24129906651325,\ +-2,-0.206412,-2.52308535353535,3.14764617338724,-0.678924287934704,-0.0417719944502611,-2.24130422368239,\ +-2,-0.206412,-2.49555454545454,3.14764531633811,-0.67892621548452,-0.0417770290019425,-2.24130914192969,\ +-2,-0.206412,-2.46802373737374,3.14764449809552,-0.678928055756341,-0.0417818355929283,-2.24131383748248,\ +-2,-0.206412,-2.44049292929293,3.14764371608212,-0.678929814546749,-0.0417864293632846,-2.24131832513105,\ +-2,-0.206412,-2.41296212121212,3.14764296794386,-0.678931497150148,-0.0417908241414088,-2.24132261838437,\ +-2,-0.206412,-2.38543131313131,3.14764225152628,-0.678933108411975,-0.0417950325830621,-2.24132672960581,\ +-2,-0.206412,-2.3579005050505,3.14764156485389,-0.678934652775311,-0.0417990662930892,-2.24133067013214,\ +-2,-0.206412,-2.3303696969697,3.14764090611185,-0.678936134321791,-0.0418029359322829,-2.24133445037788,\ +-2,-0.206412,-2.30283888888889,3.14764027363,-0.678937556807631,-0.041806651311468,-2.24133807992721,\ +-2,-0.206412,-2.27530808080808,3.14763966586881,-0.678938923695418,-0.0418102214745543,-2.24134156761512,\ +-2,-0.206412,-2.24777727272727,3.14763908140671,-0.678940238182259,-0.041813654772038,-2.24134492159917,\ +-2,-0.206412,-2.22024646464646,3.14763851892914,-0.678941503224744,-0.0418169589262086,-2.2413481494233,\ +-2,-0.206412,-2.19271565656565,3.14763797721854,-0.678942721561142,-0.0418201410891321,-2.24135125807432,\ +-2,-0.206412,-2.16518484848485,3.14763745514569,-0.678943895731194,-0.0418232078943316,-2.24135425403252,\ +-2,-0.206412,-2.13765404040404,3.14763695166176,-0.678945028093777,-0.0418261655029428,-2.24135714331671,\ +-2,-0.206412,-2.11012323232323,3.14763646579129,-0.678946120842723,-0.0418290196450302,-2.24135993152458,\ +-2,-0.206412,-2.08259242424242,3.14763599662591,-0.678947176021023,-0.0418317756566383,-2.24136262386891,\ +-2,-0.206412,-2.05506161616161,3.14763554331866,-0.678948195533542,-0.0418344385130873,-2.24136522521008,\ +-2,-0.206412,-2.02753080808081,3.14763510507887,-0.67894918115852,-0.0418370128589489,-2.24136774008537,\ +-2,-0.206412,-2,3.14763468116758,-0.67895013455792,-0.04183950303508,-2.24137017273535,\ +-2,-0.204855,-4.72555,3.14756786801813,-0.679100400942595,-0.042231982582226,-2.24175358551929,\ +-2,-0.204855,-4.69801919191919,3.14756674474424,-0.679102927246303,-0.042238581014318,-2.24176003151944,\ +-2,-0.204855,-4.67048838383838,3.14756555867041,-0.679105594790435,-0.0422455483511286,-2.24176683790214,\ +-2,-0.204855,-4.64295757575758,3.1475643043787,-0.679108415760314,-0.0422529164193932,-2.24177403575891,\ +-2,-0.204855,-4.61542676767677,3.14756297580941,-0.679111403784454,-0.0422607208153253,-2.24178165986365,\ +-2,-0.204855,-4.58789595959596,3.14756156616329,-0.679114574154752,-0.0422690014797038,-2.24178974923443,\ +-2,-0.204855,-4.56036515151515,3.14756006778513,-0.679117944088242,-0.0422778033815588,-2.24179834780146,\ +-2,-0.204855,-4.53283434343434,3.14755847202462,-0.679121533039888,-0.042287177335159,-2.24180750520513,\ +-2,-0.204855,-4.50530353535354,3.14755676906931,-0.679125363078426,-0.0422971809816449,-2.24181727775501,\ +-2,-0.204855,-4.47777272727273,3.14755494774264,-0.679129459340555,-0.0423078799753557,-2.24182772958872,\ +-2,-0.204855,-4.45024191919192,3.14755299525836,-0.679133850583264,-0.042319349426449,-2.2418389340813,\ +-2,-0.204855,-4.42271111111111,3.14755089691987,-0.679138569859953,-0.042331675666819,-2.24185097557027,\ +-2,-0.204855,-4.3951803030303,3.14754863574969,-0.679143655353919,-0.0423449584271209,-2.24186395148237,\ +-2,-0.204855,-4.36764949494949,3.14754619202903,-0.679149151413753,-0.0423593135410682,-2.24187797497542,\ +-2,-0.204855,-4.34011868686869,3.14754354272131,-0.67915510985002,-0.0423748763322568,-2.24189317824688,\ +-2,-0.204855,-4.31258787878788,3.14754066074364,-0.679161591573594,-0.0423918058933112,-2.24190971671412,\ +-2,-0.204855,-4.28505707070707,3.14753751403765,-0.679168668685474,-0.0424102905442326,-2.24192777434673,\ +-2,-0.204855,-4.25752626262626,3.14753406437191,-0.679176427170188,-0.0424305548673084,-2.24194757053887,\ +-2,-0.204855,-4.22999545454545,3.14753026578098,-0.679184970406503,-0.0424528688767175,-2.24196936906705,\ +-2,-0.204855,-4.20246464646465,3.14752606250554,-0.67919442380021,-0.0424775601187922,-2.24199348991087,\ +-2,-0.204855,-4.17493383838384,3.14752138623704,-0.679204940980809,-0.0425050298572018,-2.24202032506434,\ +-2,-0.204855,-4.14740303030303,3.147516152377,-0.679216712214939,-0.0425357750478228,-2.24205036000301,\ +-2,-0.204855,-4.11987222222222,3.14751025487304,-0.679229976020163,-0.0425704186727366,-2.24208420331731,\ +-2,-0.204855,-4.09234141414141,3.14750355895773,-0.679245035495644,-0.0426097523941841,-2.24212262838113,\ +-2,-0.204855,-4.06481060606061,3.14749589072435,-0.679262281766989,-0.0426547977899466,-2.24216663317251,\ +-2,-0.204855,-4.0372797979798,3.14748702180591,-0.679282228443991,-0.0427068963532644,-2.24221752819454,\ +-2,-0.204855,-4.00974898989899,3.1474766462459,-0.679305563639316,-0.0427678453600056,-2.2422770692038,\ +-2,-0.204855,-3.98221818181818,3.14746434448763,-0.679333230958606,-0.0428401094060896,-2.242347663861,\ +-2,-0.204855,-3.95468737373737,3.14744952525541,-0.67936656021291,-0.0429271618141415,-2.2424327052507,\ +-2,-0.204855,-3.92715656565657,3.14743132768766,-0.679407487526435,-0.0430340595312352,-2.24253713349826,\ +-2,-0.204855,-3.89962575757576,3.14740844792739,-0.67945894534405,-0.04316846178626,-2.24266843089488,\ +-2,-0.204855,-3.87209494949495,3.14737881209641,-0.6795255979299,-0.0433425511327704,-2.24283849856206,\ +-2,-0.204855,-3.84456414141414,3.14733890939052,-0.679615341272352,-0.0435769510385129,-2.24306748353992,\ +-2,-0.204855,-3.81703333333333,3.14728228684507,-0.67974268843777,-0.0439095680634144,-2.24339241669995,\ +-2,-0.204855,-3.78950252525252,3.14719565046785,-0.679937538333233,-0.0444184949195387,-2.24388958671593,\ +-2,-0.204855,-3.76197171717172,3.14704653060355,-0.68027291696865,-0.0452944676477964,-2.24474532339021,\ +-2,-0.204855,-3.73444090909091,3.14672920800023,-0.680986592656261,-0.0471585113677997,-2.24656630539363,\ +-2,-0.204855,-3.7069101010101,3.14559097234423,-0.68354654617345,-0.0538448331243742,-2.25309816484371,\ +-2,-0.204855,-3.67937929292929,3.15448552041276,-0.663542226776324,-0.00159571410232648,-2.20205606512623,\ +-2,-0.204855,-3.65184848484848,3.14888088443901,-0.676147356037489,-0.0345189486288435,-2.23421873219465,\ +-2,-0.204855,-3.62431767676768,3.1483098177989,-0.677431715779857,-0.0378735573867741,-2.23749584533914,\ +-2,-0.204855,-3.59678686868687,3.14809269213222,-0.677920043140862,-0.0391490156465853,-2.23874183893485,\ +-2,-0.204855,-3.56925606060606,3.1479783015666,-0.678177313706282,-0.0398209785425247,-2.23939827865638,\ +-2,-0.204855,-3.54172525252525,3.14790768091978,-0.678336143358322,-0.0402358244180046,-2.23980354107879,\ +-2,-0.204855,-3.51419444444444,3.14785974270239,-0.678443959000518,-0.0405174272163707,-2.24007863850405,\ +-2,-0.204855,-3.48666363636364,3.147825071085,-0.678521937342188,-0.0407210982123255,-2.24027760444796,\ +-2,-0.204855,-3.45913282828283,3.14779882830561,-0.678580958771583,-0.0408752558034009,-2.24042820080793,\ +-2,-0.204855,-3.43160202020202,3.1477782738441,-0.678627186866587,-0.0409959985884969,-2.24054615428528,\ +-2,-0.204855,-3.40407121212121,3.14776173906694,-0.678664374474193,-0.041093128598141,-2.2406410404715,\ +-2,-0.204855,-3.3765404040404,3.1477481498531,-0.678694937350696,-0.0411729555265326,-2.24071902329907,\ +-2,-0.204855,-3.3490095959596,3.14773678347745,-0.67872050094392,-0.0412397248676169,-2.24078425018575,\ +-2,-0.204855,-3.32147878787879,3.14772713577706,-0.6787421991436,-0.0412963982187658,-2.24083961431236,\ +-2,-0.204855,-3.29394797979798,3.14771884433814,-0.678760847037914,-0.0413451045021527,-2.24088719542032,\ +-2,-0.204855,-3.26641717171717,3.14771164195046,-0.678777045597129,-0.0413874133871242,-2.2409285269177,\ +-2,-0.204855,-3.23888636363636,3.14770532727223,-0.678791247649804,-0.0414245076129214,-2.24096476422098,\ +-2,-0.204855,-3.21135555555555,3.14769974571221,-0.678803800879999,-0.0414572952927025,-2.24099679446479,\ +-2,-0.204855,-3.18382474747475,3.14769477660512,-0.678814976670483,-0.0414864852489082,-2.24102531009688,\ +-2,-0.204855,-3.15629393939394,3.14769032438906,-0.678824989945055,-0.0415126388392656,-2.24105085950694,\ +-2,-0.204855,-3.12876313131313,3.14768631240016,-0.678834013124954,-0.0415362064094081,-2.24107388263705,\ +-2,-0.204855,-3.10123232323232,3.14768267842108,-0.678842186140344,-0.0415575534417872,-2.24109473652656,\ +-2,-0.204855,-3.07370151515151,3.14767937143123,-0.678849623739262,-0.0415769796458681,-2.24111371396129,\ +-2,-0.204855,-3.04617070707071,3.14767634919651,-0.678856420908516,-0.0415947331169234,-2.24113105730519,\ +-2,-0.204855,-3.0186398989899,3.14767357645588,-0.678862656952053,-0.0416110209882803,-2.24114696890656,\ +-2,-0.204855,-2.99110909090909,3.14767102353936,-0.67886839859931,-0.0416260175500226,-2.24116161902917,\ +-2,-0.204855,-2.96357828282828,3.14766866530206,-0.678873702402482,-0.0416398705103576,-2.24117515196898,\ +-2,-0.204855,-2.93604747474747,3.14766648029322,-0.678878616605474,-0.0416527058771598,-2.24118769082293,\ +-2,-0.204855,-2.90851666666667,3.14766445010184,-0.678883182615615,-0.0416646318018821,-2.24119934124404,\ +-2,-0.204855,-2.88098585858586,3.14766255883667,-0.678887436173212,-0.0416757416343475,-2.24121019442563,\ +-2,-0.204855,-2.85345505050505,3.14766079270938,-0.678891408288969,-0.0416861163711684,-2.24122032949319,\ +-2,-0.204855,-2.82592424242424,3.14765913969783,-0.67889512600129,-0.0416958266337226,-2.24122981543666,\ +-2,-0.204855,-2.79839343434343,3.1476575892721,-0.678898612992571,-0.04170493427787,-2.24123871268295,\ +-2,-0.204855,-2.77086262626263,3.14765613216988,-0.678901890094217,-0.0417134937129903,-2.24124707438453,\ +-2,-0.204855,-2.74333181818182,3.14765476021133,-0.678904975703131,-0.0417215529897963,-2.24125494748208,\ +-2,-0.204855,-2.71580101010101,3.14765346614546,-0.678907886127249,-0.0417291547028621,-2.24126237358616,\ +-2,-0.204855,-2.6882702020202,3.14765224352184,-0.678910635873866,-0.0417363367436745,-2.24126938971294,\ +-2,-0.204855,-2.66073939393939,3.14765108658316,-0.678913237891483,-0.0417431329323107,-2.24127602890121,\ +-2,-0.204855,-2.63320858585858,3.14764999017456,-0.678915703773688,-0.0417495735499716,-2.24128232073263,\ +-2,-0.204855,-2.60567777777778,3.14764894966681,-0.678918043931863,-0.0417556857900591,-2.2412882917724,\ +-2,-0.204855,-2.57814696969697,3.147647960891,-0.678920267742118,-0.041761494141972,-2.24129396594421,\ +-2,-0.204855,-2.55061616161616,3.14764702008268,-0.678922383670869,-0.0417670207190512,-2.24129936485052,\ +-2,-0.204855,-2.52308535353535,3.14764612383404,-0.678924399382523,-0.0417722855399202,-2.24130450804752,\ +-2,-0.204855,-2.49555454545454,3.14764526905256,-0.678926321832277,-0.0417773067707805,-2.24130941328172,\ +-2,-0.204855,-2.46802373737374,3.14764445292545,-0.678928157346267,-0.0417821009348338,-2.24131409669466,\ +-2,-0.204855,-2.44049292929293,3.14764367288867,-0.678929911691136,-0.0417866830939204,-2.2413185730002,\ +-2,-0.204855,-2.41296212121212,3.14764292660007,-0.67893159013454,-0.0417910670065853,-2.24132285563905,\ +-2,-0.204855,-2.38543131313131,3.14764221191585,-0.678933197497975,-0.0417952652660579,-2.24132695691354,\ +-2,-0.204855,-2.3579005050505,3.14764152687005,-0.678934738203038,-0.0417992894210707,-2.24133088810559,\ +-2,-0.204855,-2.3303696969697,3.14764086965641,-0.678936216312041,-0.0418031500819475,-2.24133465958042,\ +-2,-0.204855,-2.30283888888889,3.14764023861255,-0.678937635563783,-0.0418068570140204,-2.24133828087778,\ +-2,-0.204855,-2.27530808080808,3.14763963220589,-0.678938999405119,-0.0418104192201063,-2.2413417607925,\ +-2,-0.204855,-2.24777727272727,3.14763904902124,-0.678940311018915,-0.0418138450135055,-2.24134510744583,\ +-2,-0.204855,-2.22024646464646,3.14763848774975,-0.678941573348845,-0.0418171420827752,-2.24134832834872,\ +-2,-0.204855,-2.19271565656565,3.14763794717911,-0.678942789121442,-0.0418203175493324,-2.24135143045807,\ +-2,-0.204855,-2.16518484848485,3.14763742618482,-0.67894396086577,-0.0418233780188002,-2.2413544202269,\ +-2,-0.204855,-2.13765404040404,3.14763692372238,-0.67894509093096,-0.0418263296268766,-2.24135730364918,\ +-2,-0.204855,-2.11012323232323,3.14763643882029,-0.678946181501959,-0.0418291780803905,-2.2413600862999,\ +-2,-0.204855,-2.08259242424242,3.14763597057381,-0.678947234613606,-0.041831928694131,-2.24136277337105,\ +-2,-0.204855,-2.05506161616161,3.14763551813928,-0.678948252163319,-0.0418345864239425,-2.24136536970402,\ +-2,-0.204855,-2.02753080808081,3.14763508072909,-0.678949235922493,-0.0418371558965245,-2.2413678798186,\ +-2,-0.204855,-2,3.14763465760706,-0.678950187546802,-0.0418396414363107,-2.24137030793935,\ +-2,-0.178054,-4.72555,3.14756677530856,-0.679102858505486,-0.042238401470735,-2.24175985612354,\ +-2,-0.178054,-4.69801919191919,3.14756559096676,-0.679105522154208,-0.0422453586331549,-2.2417666525669,\ +-2,-0.178054,-4.67048838383838,3.14756433855856,-0.679108338887925,-0.0422527156370278,-2.24177383961487,\ +-2,-0.178054,-4.64295757575758,3.14756301204252,-0.679111322294224,-0.0422605079716547,-2.24178145193693,\ +-2,-0.178054,-4.61542676767677,3.14756160464037,-0.679114487617728,-0.0422687754543515,-2.24178952843054,\ +-2,-0.178054,-4.58789595959596,3.14756010872127,-0.679117852020649,-0.0422775629109637,-2.24179811288603,\ +-2,-0.178054,-4.56036515151515,3.14755851566332,-0.679121434894095,-0.04228692098895,-2.24180725478084,\ +-2,-0.178054,-4.53283434343434,3.1475568156873,-0.679125258232024,-0.0422969071341756,-2.24181701023375,\ +-2,-0.178054,-4.50530353535354,3.1475549976558,-0.679129347083172,-0.0423075867712074,-2.24182744315795,\ +-2,-0.178054,-4.47777272727273,3.1475530488288,-0.679133730100445,-0.0423190347383526,-2.24183862666288,\ +-2,-0.178054,-4.45024191919192,3.1475509545648,-0.679138440213374,-0.0423313370439798,-2.24185064477004,\ +-2,-0.178054,-4.42271111111111,3.14754869795228,-0.679143515456922,-0.0423445930312914,-2.24186359452763,\ +-2,-0.178054,-4.3951803030303,3.14754625935197,-0.679149000000812,-0.0423589180668424,-2.24187758863713,\ +-2,-0.178054,-4.36764949494949,3.14754361582389,-0.679154945438383,-0.0423744469068464,-2.24189275874172,\ +-2,-0.178054,-4.34011868686869,3.14754074040335,-0.679161412414588,-0.0423913379493667,-2.24190925958027,\ +-2,-0.178054,-4.31258787878788,3.14753760117801,-0.679168472702102,-0.0424097786568573,-2.24192727428458,\ +-2,-0.178054,-4.28505707070707,3.14753416009833,-0.679176211876289,-0.0424299925429277,-2.24194702120488,\ +-2,-0.178054,-4.25752626262626,3.14753037142793,-0.679184732800817,-0.0424522482763524,-2.24196876280332,\ +-2,-0.178054,-4.22999545454545,3.14752617969902,-0.679194160225699,-0.042476871690673,-2.2419928173863,\ +-2,-0.178054,-4.20246464646465,3.14752151697891,-0.679204646935278,-0.0425042618420763,-2.24201957479131,\ +-2,-0.178054,-4.17493383838384,3.14751629916004,-0.679216382091982,-0.042534912802356,-2.24204951767648,\ +-2,-0.178054,-4.14740303030303,3.14751042084127,-0.679229602748645,-0.0425694437278971,-2.24208325089491,\ +-2,-0.178054,-4.11987222222222,3.14750374813392,-0.679244610028154,-0.0426086411191076,-2.24212154277788,\ +-2,-0.178054,-4.09234141414141,3.14749610833989,-0.679261792337883,-0.0426535194540454,-2.24216538436774,\ +-2,-0.178054,-4.06481060606061,3.14748727479127,-0.679281659466251,-0.0427054102449325,-2.24221607641714,\ +-2,-0.178054,-4.0372797979798,3.14747694398094,-0.679304894017085,-0.0427660963791549,-2.24227536062658,\ +-2,-0.178054,-4.00974898989899,3.14746469998773,-0.679332431419685,-0.0428380210968811,-2.24234562379432,\ +-2,-0.178054,-3.98221818181818,3.14744995711978,-0.67936558892659,-0.0429246249193075,-2.24243022696128,\ +-2,-0.178054,-3.95468737373737,3.14743186344984,-0.679406282568344,-0.0430309123110088,-2.24253405898271,\ +-2,-0.178054,-3.92715656565657,3.14740913014269,-0.679457411004948,-0.0431644542584505,-2.24266451594592,\ +-2,-0.178054,-3.89962575757576,3.14737971018084,-0.679523578089443,-0.043337275527919,-2.2428333448302,\ +-2,-0.178054,-3.87209494949495,3.14734014471452,-0.679612562961893,-0.0435696943920393,-2.24306039453096,\ +-2,-0.178054,-3.84456414141414,3.14728409228228,-0.679738627911892,-0.0438989624089249,-2.24338205604921,\ +-2,-0.178054,-3.81703333333333,3.14719853550705,-0.679931049724112,-0.044401547374179,-2.24387303067984,\ +-2,-0.178054,-3.78950252525252,3.1470518581385,-0.680260935054552,-0.0452631721838835,-2.24471475089023,\ +-2,-0.178054,-3.76197171717172,3.14674217019137,-0.680957439987714,-0.0470823677500853,-2.24649192078771,\ +-2,-0.178054,-3.73444090909091,3.14565788042046,-0.683396066293313,-0.0534517959501702,-2.25271420731459,\ +-2,-0.178054,-3.7069101010101,3.15539514393964,-0.66149643429504,0.00374767462923025,-2.19683611528649,\ +-2,-0.178054,-3.67937929292929,3.14890896810898,-0.676084194345677,-0.0343539771200605,-2.23405757173186,\ +-2,-0.178054,-3.65184848484848,3.14831825865065,-0.677412731848008,-0.0378239734096862,-2.23744740681328,\ +-2,-0.178054,-3.62431767676768,3.1480966970971,-0.677911035758367,-0.0391254893375533,-2.23871885611267,\ +-2,-0.178054,-3.59678686868687,3.14798063113669,-0.678172074377212,-0.0398072939815698,-2.23938491022572,\ +-2,-0.178054,-3.56925606060606,3.14790920254403,-0.678332721143146,-0.0402268859620397,-2.23979480911222,\ +-2,-0.178054,-3.54172525252525,3.14786081396694,-0.678441549668656,-0.0405111343020885,-2.24007249096387,\ +-2,-0.178054,-3.51419444444444,3.14782586592486,-0.678520149704376,-0.0407164290956758,-2.24027304319368,\ +-2,-0.178054,-3.48666363636364,3.14779944138545,-0.678579579921885,-0.0408716543970955,-2.24042468259857,\ +-2,-0.178054,-3.45913282828283,3.14777876106483,-0.678626091080839,-0.0409931365146201,-2.24054335832885,\ +-2,-0.178054,-3.43160202020202,3.14776213555221,-0.678663482757395,-0.0410907995302924,-2.240638765208,\ +-2,-0.178054,-3.40407121212121,3.14774847877658,-0.678694197584018,-0.0411710233359708,-2.2407171357445,\ +-2,-0.178054,-3.3765404040404,3.14773706074423,-0.67871987735597,-0.0412380961233257,-2.24078265906747,\ +-2,-0.178054,-3.3490095959596,3.14772737266508,-0.678741666369658,-0.041295006670839,-2.24083825491091,\ +-2,-0.178054,-3.32147878787879,3.14771904906621,-0.67876038659343,-0.0413439018709483,-2.24088602057139,\ +-2,-0.178054,-3.29394797979798,3.1477118206493,-0.678776643693787,-0.0413863636590598,-2.24092750143966,\ +-2,-0.178054,-3.26641717171717,3.14770548460781,-0.678790893793588,-0.0414235833787556,-2.24096386133777,\ +-2,-0.178054,-3.23888636363636,3.14769988529843,-0.678803486943045,-0.0414564753233253,-2.24099599343772,\ +-2,-0.178054,-3.21135555555555,3.14769490128444,-0.678814696259917,-0.0414857528468332,-2.2410245946142,\ +-2,-0.178054,-3.18382474747475,3.14769043642791,-0.678824737963603,-0.0415119806909672,-2.24105021656268,\ +-2,-0.178054,-3.15629393939394,3.14768641362776,-0.67883378545862,-0.0415356117695615,-2.24107330173411,\ +-2,-0.178054,-3.12876313131313,3.14768277032998,-0.678841979432251,-0.0415570135426009,-2.24109420909972,\ +-2,-0.178054,-3.10123232323232,3.14767945525139,-0.678849435223177,-0.0415764872622391,-2.24111323295233,\ +-2,-0.178054,-3.07370151515151,3.14767642595059,-0.678856248284434,-0.0415942822414875,-2.24113061684554,\ +-2,-0.178054,-3.04617070707071,3.14767364700114,-0.678862498291956,-0.0416106065852663,-2.24114656407678,\ +-2,-0.178054,-3.0186398989899,3.14767108859979,-0.678868252274899,-0.0416256353664862,-2.24116124567456,\ +-2,-0.178054,-2.99110909090909,3.1476687254933,-0.678873567029118,-0.0416395169297716,-2.24117480655655,\ +-2,-0.178054,-2.96357828282828,3.14766653614213,-0.678878490998252,-0.0416523778046772,-2.24118737032933,\ +-2,-0.178054,-2.93604747474747,3.14766450206192,-0.678883065754603,-0.0416643265735542,-2.24119904306686,\ +-2,-0.178054,-2.90851666666667,3.14766260730038,-0.678887327175709,-0.0416754569446604,-2.24120991631262,\ +-2,-0.178054,-2.88098585858586,3.14766083801811,-0.678891306387184,-0.0416858502147255,-2.24122006948529,\ +-2,-0.178054,-2.85345505050505,3.14765918214993,-0.678895030524225,-0.0416955772579535,-2.24122957182178,\ +-2,-0.178054,-2.82592424242424,3.14765762912945,-0.67889852335124,-0.0417047001444071,-2.24123848395826,\ +-2,-0.178054,-2.79839343434343,3.1476561696633,-0.678901805769488,-0.0417132734659177,-2.24124685922544,\ +-2,-0.178054,-2.77086262626263,3.14765479554507,-0.67890489623567,-0.0417213454293801,-2.24125474471656,\ +-2,-0.178054,-2.74333181818182,3.14765349950086,-0.678907811109146,-0.0417289587636947,-2.24126218217343,\ +-2,-0.178054,-2.71580101010101,3.14765227506053,-0.678910564941648,-0.0417361514763878,-2.24126920872556,\ +-2,-0.178054,-2.6882702020202,3.14765111644963,-0.678913170720207,-0.0417429574881981,-2.24127585751008,\ +-2,-0.178054,-2.66073939393939,3.14765001849835,-0.678915640071976,-0.0417494071679909,-2.24128215819428,\ +-2,-0.178054,-2.63320858585858,3.14764897656443,-0.678917983437683,-0.0417555277857997,-2.24128813741824,\ +-2,-0.178054,-2.60567777777778,3.14764798646751,-0.678920210219169,-0.0417613438982481,-2.2412938191713,\ +-2,-0.178054,-2.57814696969697,3.14764704443309,-0.678922328905506,-0.0417668776778438,-2.24129922511374,\ +-2,-0.178054,-2.55061616161616,3.14764614704443,-0.678924347181106,-0.0417721491954554,-2.24130437485277,\ +-2,-0.178054,-2.52308535353535,3.14764529120115,-0.678926272018871,-0.0417771766635542,-2.24130928618013,\ +-2,-0.178054,-2.49555454545454,3.14764447408349,-0.678928109760685,-0.0417819766464391,-2.24131397527748,\ +-2,-0.178054,-2.46802373737374,3.14764369312116,-0.678929866187198,-0.0417865642425543,-2.24131845689444,\ +-2,-0.178054,-2.44049292929293,3.14764294596642,-0.678931546578581,-0.0417909532431307,-2.24132274450368,\ +-2,-0.178054,-2.41296212121212,3.14764223047052,-0.678933155767535,-0.0417951562706607,-2.24132685043607,\ +-2,-0.178054,-2.38543131313131,3.14764154466301,-0.678934698185707,-0.0417991849001356,-2.24133078599922,\ +-2,-0.178054,-2.3579005050505,3.14764088673363,-0.67893617790446,-0.0418030497654976,-2.24133456158141,\ +-2,-0.178054,-2.3303696969697,3.14764025501636,-0.678937598670736,-0.0418067606533698,-2.24133818674317,\ +-2,-0.178054,-2.30283888888889,3.14763964797535,-0.678938963938755,-0.0418103265858016,-2.24134167029816,\ +-2,-0.178054,-2.27530808080808,3.14763906419246,-0.678940276898054,-0.0418137558935021,-2.24134502038461,\ +-2,-0.178054,-2.24777727272727,3.14763850235612,-0.678941540498343,-0.0418170562808164,-2.24134824452889,\ +-2,-0.178054,-2.22024646464646,3.1476379612516,-0.678942757471653,-0.0418202348835074,-2.24135134970192,\ +-2,-0.178054,-2.19271565656565,3.14763743975218,-0.678943930352049,-0.0418232983202571,-2.2413543423695,\ +-2,-0.178054,-2.16518484848485,3.14763693681133,-0.678945061493216,-0.0418262527386708,-2.24135722853718,\ +-2,-0.178054,-2.13765404040404,3.14763645145569,-0.678946153084267,-0.0418291038564536,-2.24136001379062,\ +-2,-0.178054,-2.11012323232323,3.14763598277883,-0.678947207163853,-0.0418318569983445,-2.24136270333153,\ +-2,-0.178054,-2.08259242424242,3.14763552993554,-0.678948225632881,-0.0418345171293047,-2.24136530201017,\ +-2,-0.178054,-2.05506161616161,3.1476350921368,-0.678949210265948,-0.0418370888844001,-2.24136781435454,\ +-2,-0.178054,-2.02753080808081,3.1476346686451,-0.678950162721671,-0.0418395765957532,-2.24137024459669,\ +-2,-0.178054,-2,3.14763425877041,-0.678951084552002,-0.0418419843168949,-2.24137259669649,\ +-2,-0.146953,-4.72555,3.14756543251735,-0.679105878515491,-0.0422462894102883,-2.24176756184192,\ +-2,-0.146953,-4.69801919191919,3.14756417085442,-0.679108716063645,-0.0422537007792195,-2.24177480199906,\ +-2,-0.146953,-4.67048838383838,3.14756283424845,-0.679111722162701,-0.0422615523848777,-2.24178247222291,\ +-2,-0.146953,-4.64295757575758,3.14756141581763,-0.679114912290277,-0.0422698846531334,-2.24179061200545,\ +-2,-0.146953,-4.61542676767677,3.14755990781092,-0.679118303878861,-0.0422787431157572,-2.24179926582664,\ +-2,-0.146953,-4.58789595959596,3.14755830146641,-0.679121916634506,-0.0422881792428157,-2.24180848396748,\ +-2,-0.146953,-4.56036515151515,3.14755658684091,-0.679125772919955,-0.0422982514433965,-2.24181832348777,\ +-2,-0.146953,-4.53283434343434,3.14755475260397,-0.679129898217995,-0.042309026275767,-2.24182884940817,\ +-2,-0.146953,-4.50530353535354,3.1475527857872,-0.679134321695225,-0.0423205799199429,-2.24184013614887,\ +-2,-0.146953,-4.47777272727273,3.14755067147719,-0.679139076892706,-0.0423329999815459,-2.24185226929168,\ +-2,-0.146953,-4.45024191919192,3.14754839243668,-0.679144202578016,-0.0423463877172883,-2.24186534775417,\ +-2,-0.146953,-4.42271111111111,3.14754592863351,-0.679149743804531,-0.0423608608017212,-2.24187948649243,\ +-2,-0.146953,-4.3951803030303,3.14754325665028,-0.679155753239233,-0.0423765567953136,-2.24189481988916,\ +-2,-0.146953,-4.36764949494949,3.14754034893772,-0.67916229284195,-0.0423936375304213,-2.24191150603815,\ +-2,-0.146953,-4.34011868686869,3.1475371728613,-0.679169436009515,-0.0424122947116501,-2.2419297322154,\ +-2,-0.146953,-4.31258787878788,3.1475336894711,-0.679177270342371,-0.0424327571418724,-2.24194972193816,\ +-2,-0.146953,-4.28505707070707,3.14752985189652,-0.67918590125504,-0.0424553001524282,-2.24197174417728,\ +-2,-0.146953,-4.25752626262626,3.147525603225,-0.679195456746931,-0.0424802580639314,-2.24199612553014,\ +-2,-0.146953,-4.22999545454545,3.14752087366053,-0.679206093793109,-0.0425080408782678,-2.24202326652709,\ +-2,-0.146953,-4.20246464646465,3.14751557665926,-0.67921800703528,-0.0425391569785395,-2.24205366380694,\ +-2,-0.146953,-4.17493383838384,3.1475096035857,-0.679231440800582,-0.0425742445207934,-2.24208794078354,\ +-2,-0.146953,-4.14740303030303,3.14750281618306,-0.679246706036012,-0.0426141156649713,-2.24212689085496,\ +-2,-0.146953,-4.11987222222222,3.14749503573879,-0.679264204675752,-0.0426598202196929,-2.24217153957791,\ +-2,-0.146953,-4.09234141414141,3.1474860271193,-0.679284465547923,-0.0427127394268163,-2.24222323628586,\ +-2,-0.146953,-4.06481060606061,3.14747547459633,-0.679308198742507,-0.0427747279645866,-2.2422837928117,\ +-2,-0.146953,-4.0372797979798,3.14746294407963,-0.679336380551895,-0.0428483358031595,-2.24235570021812,\ +-2,-0.146953,-4.00974898989899,3.14744782191597,-0.679370391115387,-0.0429371677171431,-2.24244248000497,\ +-2,-0.146953,-3.98221818181818,3.14742921133401,-0.679412247320218,-0.0430464915978816,-2.24254927836878,\ +-2,-0.146953,-3.95468737373737,3.14740574788049,-0.679465017895489,-0.0431843226339391,-2.24268392533735,\ +-2,-0.146953,-3.92715656565657,3.14737524883024,-0.679533611908118,-0.0433634827772508,-2.24285894665965,\ +-2,-0.146953,-3.89962575757576,3.14733399159647,-0.679626401656983,-0.0436058395671198,-2.24309570470777,\ +-2,-0.146953,-3.87209494949495,3.14727506503051,-0.679758930689103,-0.0439519910674826,-2.24343385968013,\ +-2,-0.146953,-3.84456414141414,3.14718402524385,-0.679963684090408,-0.0444867848098975,-2.24395629902532,\ +-2,-0.146953,-3.81703333333333,3.14702478896114,-0.680321815097666,-0.0454221842729968,-2.24487008960332,\ +-2,-0.146953,-3.78950252525252,3.1466748420516,-0.681108864613473,-0.0474778724976944,-2.24687828888624,\ +-2,-0.146953,-3.76197171717172,3.14528016155037,-0.684245576449581,-0.0556706246133259,-2.25488177828996,\ +-2,-0.146953,-3.73444090909091,3.15233618589917,-0.668376196278736,-0.0142215197029337,-2.21439019899379,\ +-2,-0.146953,-3.7069101010101,3.14878224052557,-0.676369211530993,-0.0350984111866866,-2.23478480845035,\ +-2,-0.146953,-3.67937929292929,3.14827879468387,-0.677501488442518,-0.038055796036516,-2.23767387405057,\ +-2,-0.146953,-3.65184848484848,3.14807771196512,-0.677953734346435,-0.0392370134322116,-2.23882780386274,\ +-2,-0.146953,-3.62431767676768,3.14796950650527,-0.678197094274626,-0.0398726432479963,-2.23944874984323,\ +-2,-0.146953,-3.59678686868687,3.14790190290293,-0.678349138430574,-0.040269766141458,-2.23983669870643,\ +-2,-0.146953,-3.56925606060606,3.14785565879765,-0.678453143923063,-0.0405414172408078,-2.24010207432923,\ +-2,-0.146953,-3.54172525252525,3.14782203232842,-0.678528771670014,-0.0407389487375517,-2.24029504260397,\ +-2,-0.146953,-3.51419444444444,3.14779647936916,-0.67858624165662,-0.0408890541278323,-2.24044168037399,\ +-2,-0.146953,-3.48666363636364,3.14777640395667,-0.678631392344498,-0.0410069828420277,-2.24055688478895,\ +-2,-0.146953,-3.45913282828283,3.14776021533371,-0.678667801432596,-0.0411020794429049,-2.24064978454068,\ +-2,-0.146953,-3.43160202020202,3.1477468843483,-0.678697783539384,-0.0411803894635979,-2.24072628550299,\ +-2,-0.146953,-3.40407121212121,3.14773571571569,-0.678722902397835,-0.0412459972055536,-2.24079037762491,\ +-2,-0.146953,-3.3765404040404,3.14772622278756,-0.678744252506351,-0.0413017613802221,-2.24084485357815,\ +-2,-0.146953,-3.3490095959596,3.14771805475528,-0.678762622852448,-0.041349742737682,-2.24089172650687,\ +-2,-0.146953,-3.32147878787879,3.14771095234503,-0.678778596557059,-0.0413914643267508,-2.24093248427561,\ +-2,-0.146953,-3.29394797979798,3.1477047197912,-0.678792613907493,-0.0414280761302609,-2.24096825030116,\ +-2,-0.146953,-3.26641717171717,3.14769920651345,-0.678805013567183,-0.041460462700486,-2.24099988870153,\ +-2,-0.146953,-3.23888636363636,3.14769429479111,-0.678816060296223,-0.0414893155621637,-2.24102807502639,\ +-2,-0.146953,-3.21135555555555,3.14768989126364,-0.678825964067528,-0.0415151831418252,-2.24105334503296,\ +-2,-0.146953,-3.18382474747475,3.14768592093945,-0.678834893541234,-0.0415385059615217,-2.24107612906666,\ +-2,-0.146953,-3.15629393939394,3.14768232289004,-0.678842985748874,-0.0415596419327991,-2.24109677677085,\ +-2,-0.146953,-3.12876313131313,3.14767904710102,-0.678850353175443,-0.0415788848542877,-2.24111557515704,\ +-2,-0.146953,-3.10123232323232,3.14767605213314,-0.67885708902009,-0.0415964781521025,-2.2411327620279,\ +-2,-0.146953,-3.07370151515151,3.14767330335997,-0.678863271159512,-0.0416126252317466,-2.24114853609003,\ +-2,-0.146953,-3.04617070707071,3.14767077162314,-0.678868965172503,-0.0416274973779332,-2.24116306467123,\ +-2,-0.146953,-3.0186398989899,3.14766843219392,-0.678874226675283,-0.0416412398542235,-2.24117648967931,\ +-2,-0.146953,-2.99110909090909,3.14766626396285,-0.678879103144148,-0.0416539766635619,-2.2411889322526,\ +-2,-0.146953,-2.96357828282828,3.147664248801,-0.678883635352083,-0.0416658143005808,-2.24120049642554,\ +-2,-0.146953,-2.93604747474747,3.14766237105181,-0.678887858511506,-0.0416768447363034,-2.24121127204456,\ +-2,-0.146953,-2.90851666666667,3.14766061712357,-0.678891803190935,-0.0416871478124032,-2.24122133710685,\ +-2,-0.146953,-2.88098585858586,3.14765897515983,-0.678895496056126,-0.0416967931769393,-2.24123075965153,\ +-2,-0.146953,-2.85345505050505,3.14765743477111,-0.678898960473642,-0.0417058418608476,-2.24123959929965,\ +-2,-0.146953,-2.82592424242424,3.14765598681475,-0.678902217005776,-0.0417143475706351,-2.24124790851701,\ +-2,-0.146953,-2.79839343434343,3.14765462321336,-0.678905283819007,-0.0417223577551467,-2.24125573365635,\ +-2,-0.146953,-2.77086262626263,3.14765333680408,-0.678908177023021,-0.0417299144911638,-2.24126311582241,\ +-2,-0.146953,-2.74333181818182,3.14765212121266,-0.678910910953812,-0.0417370552227466,-2.24127009159426,\ +-2,-0.146953,-2.71580101010101,3.14765097074791,-0.67891349841124,-0.0417438133817411,-2.24127669363142,\ +-2,-0.146953,-2.6882702020202,3.1476498803125,-0.67891595085941,-0.0417502189111567,-2.24128295118517,\ +-2,-0.146953,-2.66073939393939,3.14764884532756,-0.678918278596492,-0.0417562987086982,-2.24128889053187,\ +-2,-0.146953,-2.63320858585858,3.14764786166833,-0.678920490899268,-0.0417620770043138,-2.24129453534171,\ +-2,-0.146953,-2.60567777777778,3.14764692560927,-0.678922596146693,-0.0417675756829337,-2.24129990699405,\ +-2,-0.146953,-2.57814696969697,3.14764603377687,-0.678924601925956,-0.041772814561461,-2.241305024848,\ +-2,-0.146953,-2.55061616161616,3.14764518310908,-0.678926515123827,-0.0417778116274085,-2.24130990647554,\ +-2,-0.146953,-2.52308535353535,3.14764437082008,-0.678928342005676,-0.0417825832452368,-2.24131456786309,\ +-2,-0.146953,-2.49555454545454,3.14764359436995,-0.678930088284,-0.0417871443353795,-2.24131902358641,\ +-2,-0.146953,-2.46802373737374,3.147642851438,-0.6789317591781,-0.0417915085300838,-2.24132328696281,\ +-2,-0.146953,-2.44049292929293,3.14764213989971,-0.67893335946618,-0.0417956883094976,-2.24132737018415,\ +-2,-0.146953,-2.41296212121212,3.14764145780638,-0.678934893530978,-0.0417996951208595,-2.24133128443322,\ +-2,-0.146953,-2.38543131313131,3.14764080336728,-0.678936365399853,-0.0418035394831913,-2.24133503998602,\ +-2,-0.146953,-2.3579005050505,3.14764017493408,-0.678937778780085,-0.0418072310795128,-2.24133864630189,\ +-2,-0.146953,-2.3303696969697,3.14763957098686,-0.678939137090055,-0.0418107788382743,-2.24134211210304,\ +-2,-0.146953,-2.30283888888889,3.14763899012185,-0.67894044348686,-0.0418141910054547,-2.24134544544493,\ +-2,-0.146953,-2.27530808080808,3.14763843104061,-0.67894170089079,-0.0418174752085465,-2.24134865377887,\ +-2,-0.146953,-2.24777727272727,3.14763789254027,-0.678942912007137,-0.0418206385134754,-2.24135174400754,\ +-2,-0.146953,-2.22024646464646,3.14763737350497,-0.678944079345617,-0.0418236874753472,-2.24135472253463,\ +-2,-0.146953,-2.19271565656565,3.147636872898,-0.678945205237728,-0.0418266281837891,-2.24135759530907,\ +-2,-0.146953,-2.16518484848485,3.14763638975507,-0.6789462918523,-0.0418294663035471,-2.24136036786474,\ +-2,-0.146953,-2.13765404040404,3.14763592317796,-0.678947341209434,-0.0418322071109052,-2.24136304535606,\ +-2,-0.146953,-2.11012323232323,3.14763547232904,-0.678948355193036,-0.0418348555264239,-2.2413656325899,\ +-2,-0.146953,-2.08259242424242,3.14763503642619,-0.678949335562107,-0.0418374161444202,-2.24136813405445,\ +-2,-0.146953,-2.05506161616161,3.14763461473832,-0.678950283960922,-0.0418398932595668,-2.24137055394517,\ +-2,-0.146953,-2.02753080808081,3.14763420658124,-0.678951201928238,-0.0418422908909274,-2.24137289618829,\ +-2,-0.146953,-2,3.14763381131401,-0.678952090905621,-0.0418446128037171,-2.24137516446202,\ +-2,-0.144435,-4.72555,3.14756532007088,-0.679106131413678,-0.0422469499530065,-2.24176820712528,\ +-2,-0.144435,-4.69801919191919,3.14756405181888,-0.679108983780989,-0.0422544000279714,-2.2417754850943,\ +-2,-0.144435,-4.67048838383838,3.14756270802727,-0.679112006040958,-0.0422622938441905,-2.2417831965536,\ +-2,-0.144435,-4.64295757575758,3.14756128173996,-0.679115213838217,-0.0422706722637417,-2.24179138142129,\ +-2,-0.144435,-4.61542676767677,3.14755976511974,-0.679118624799077,-0.0422795813246457,-2.24180008467186,\ +-2,-0.144435,-4.58789595959596,3.14755814930419,-0.679122258855561,-0.0422890730872032,-2.24180935716295,\ +-2,-0.144435,-4.56036515151515,3.14755642423245,-0.679126138635181,-0.0422992066520129,-2.24181925662988,\ +-2,-0.144435,-4.53283434343434,3.14755457843541,-0.67913028993251,-0.0423100493917209,-2.24182984888888,\ +-2,-0.144435,-4.50530353535354,3.1475525987805,-0.67913474228339,-0.0423216784507481,-2.24184120930226,\ +-2,-0.144435,-4.47777272727273,3.14755047015877,-0.679139529668741,-0.0423341825835814,-2.24185342457415,\ +-2,-0.144435,-4.45024191919192,3.14754817509844,-0.679144691383468,-0.0423476644242711,-2.24186659496764,\ +-2,-0.144435,-4.42271111111111,3.14754569328435,-0.679150273117499,-0.0423622433099541,-2.24188083706302,\ +-2,-0.144435,-4.3951803030303,3.14754300095494,-0.679156328311879,-0.0423780588228739,-2.24189628721802,\ +-2,-0.144435,-4.36764949494949,3.14754007013903,-0.679162919875273,-0.0423952752736603,-2.24191310594749,\ +-2,-0.144435,-4.34011868686869,3.14753686768046,-0.679170122377731,-0.0424140874312047,-2.24193148352091,\ +-2,-0.144435,-4.31258787878788,3.14753335397818,-0.679178024884063,-0.0424347279231785,-2.24195164719198,\ +-2,-0.144435,-4.28505707070707,3.1475294813405,-0.679186734655577,-0.0424574769045088,-2.24197387064369,\ +-2,-0.144435,-4.25752626262626,3.14752519180745,-0.679196382047262,-0.0424826748483327,-2.24199848648383,\ +-2,-0.144435,-4.22999545454545,3.1475204142303,-0.679207127076537,-0.0425107397028439,-2.24202590300548,\ +-2,-0.144435,-4.20246464646465,3.14751506029371,-0.679219168369322,-0.0425421902574687,-2.24205662701337,\ +-2,-0.144435,-4.17493383838384,3.14750901900612,-0.679232755551666,-0.0425776785084519,-2.24209129544185,\ +-2,-0.144435,-4.14740303030303,3.14750214892238,-0.679248206741347,-0.0426180353450213,-2.24213071998555,\ +-2,-0.144435,-4.11987222222222,3.14749426692987,-0.679265933768581,-0.0426643364231757,-2.2421759514515,\ +-2,-0.144435,-4.09234141414141,3.1474851316854,-0.67928647942718,-0.0427179994616519,-2.24222837480738,\ +-2,-0.144435,-4.06481060606061,3.14747441846927,-0.679310574029362,-0.0427809319569948,-2.24228985348422,\ +-2,-0.144435,-4.0372797979798,3.14746167977653,-0.679339224037914,-0.0428557626811484,-2.24236295552603,\ +-2,-0.144435,-4.00974898989899,3.14744628122264,-0.679373856217957,-0.0429462181903432,-2.24245132140104,\ +-2,-0.144435,-3.98221818181818,3.14742729261976,-0.679416562612259,-0.0430577626740399,-2.24256028906913,\ +-2,-0.144435,-3.95468737373737,3.14740329281627,-0.679470539467611,-0.043198744383231,-2.24269801392639,\ +-2,-0.144435,-3.92715656565657,3.14737199653695,-0.679540926491519,-0.043382587678106,-2.24287761021366,\ +-2,-0.144435,-3.89962575757576,3.14732947986553,-0.67963654878378,-0.0436323427650126,-2.24312159564899,\ +-2,-0.144435,-3.87209494949495,3.14726839073525,-0.679773941539904,-0.0439911977865175,-2.24347216067544,\ +-2,-0.144435,-3.84456414141414,3.14717315895477,-0.679988122961904,-0.0445506164994604,-2.24401865612387,\ +-2,-0.144435,-3.81703333333333,3.14700406012535,-0.680368435369858,-0.0455439513825047,-2.24498904374191,\ +-2,-0.144435,-3.78950252525252,3.14662070391723,-0.681230624204064,-0.0477958953813762,-2.24718896504777,\ +-2,-0.144435,-3.76197171717172,3.14491192071903,-0.685073769984386,-0.0578337765663786,-2.25699495875612,\ +-2,-0.144435,-3.73444090909091,3.15131055936753,-0.670682885788201,-0.0202463432589987,-2.22027584167034,\ +-2,-0.144435,-3.7069101010101,3.14870676579247,-0.67653895828548,-0.0355417713531896,-2.23521792644838,\ +-2,-0.144435,-3.67937929292929,3.1482535031831,-0.677558370394846,-0.0382043655448512,-2.23781901141941,\ +-2,-0.144435,-3.65184848484848,3.14806518746959,-0.677981902613868,-0.039310585900667,-2.23889967671613,\ +-2,-0.144435,-3.62431767676768,3.14796205289374,-0.678213857849837,-0.0399164278936523,-2.23949152300938,\ +-2,-0.144435,-3.59678686868687,3.14789696457812,-0.678360244990006,-0.0402987752736443,-2.23986503769176,\ +-2,-0.144435,-3.56925606060606,3.1478521481477,-0.678461039564535,-0.0405620398025097,-2.24012222048424,\ +-2,-0.144435,-3.54172525252525,3.14781940911831,-0.678534671411333,-0.0407543582238846,-2.2403100961121,\ +-2,-0.144435,-3.51419444444444,3.14779444516254,-0.678590816697277,-0.040901003639285,-2.24045335383694,\ +-2,-0.144435,-3.48666363636364,3.14777478054586,-0.678635043483154,-0.0410165192213643,-2.24056620086613,\ +-2,-0.144435,-3.45913282828283,3.14775888977164,-0.67867078269333,-0.0411098661735511,-2.24065739138821,\ +-2,-0.144435,-3.43160202020202,3.147745781596,-0.678700263688915,-0.0411868673459769,-2.24073261373827,\ +-2,-0.144435,-3.40407121212121,3.14773478397675,-0.678724997929074,-0.0412514705065436,-2.24079572448588,\ +-2,-0.144435,-3.3765404040404,3.14772542515945,-0.678746046415084,-0.0413064468758388,-2.24084943083301,\ +-2,-0.144435,-3.3490095959596,3.14771736423685,-0.678764175865743,-0.0413537990404621,-2.24089568910405,\ +-2,-0.144435,-3.32147878787879,3.1477103487254,-0.678779954130215,-0.0413950101610215,-2.24093594819672,\ +-2,-0.144435,-3.29394797979798,3.14770418764214,-0.678793810739499,-0.0414312021260366,-2.24097130408256,\ +-2,-0.144435,-3.26641717171717,3.14769873385396,-0.678806076603898,-0.041463239237429,-2.24100260109703,\ +-2,-0.144435,-3.23888636363636,3.14769387217585,-0.678817010780785,-0.0414917981250507,-2.24103050023901,\ +-2,-0.144435,-3.21135555555555,3.1476895111459,-0.678826818972874,-0.0415174160621412,-2.24105552637006,\ +-2,-0.144435,-3.18382474747475,3.14768557721703,-0.678835666591545,-0.0415405250853406,-2.24107810154622,\ +-2,-0.144435,-3.15629393939394,3.14768201057545,-0.678843688161247,-0.0415614765579605,-2.2410985690139,\ +-2,-0.144435,-3.12876313131313,3.14767876207815,-0.678850994207279,-0.0415805591601291,-2.24111721078435,\ +-2,-0.144435,-3.10123232323232,3.14767579097489,-0.678857676379099,-0.0415980122703164,-2.24113426070609,\ +-2,-0.144435,-3.07370151515151,3.14767306318994,-0.678863811314908,-0.0416140360592261,-2.24114991432565,\ +-2,-0.144435,-3.04617070707071,3.14767055000925,-0.678869463594128,-0.04162879920132,-2.24116433642088,\ +-2,-0.144435,-3.0186398989899,3.14766822706586,-0.678874688019397,-0.0416424448351545,-2.24117766682369,\ +-2,-0.144435,-2.99110909090909,3.14766607354721,-0.678879531399241,-0.0416550952195567,-2.24119002496856,\ +-2,-0.144435,-2.96357828282828,3.14766407156989,-0.678884033954447,-0.0416668554068486,-2.24120151348098,\ +-2,-0.144435,-2.93604747474747,3.14766220568182,-0.678888230437575,-0.041677816166981,-2.24121222103398,\ +-2,-0.144435,-2.90851666666667,3.14766046246264,-0.678892151031731,-0.0416880563349445,-2.2412222246414,\ +-2,-0.144435,-2.88098585858586,3.14765883020043,-0.678895822077665,-0.0416976447099395,-2.24123159151307,\ +-2,-0.144435,-2.85345505050505,3.14765729862823,-0.678899266666344,-0.0417066416030792,-2.24124038056684,\ +-2,-0.144435,-2.82592424242424,3.14765585870784,-0.678902505125137,-0.0417151001072431,-2.2412486436691,\ +-2,-0.144435,-2.79839343434343,3.14765450245138,-0.678905555419239,-0.041723067145583,-2.24125642665898,\ +-2,-0.144435,-2.77086262626263,3.14765322277297,-0.678908433485116,-0.0417305843424227,-2.24126377019928,\ +-2,-0.144435,-2.74333181818182,3.14765201336501,-0.678911153509009,-0.0417376887506895,-2.24127071048692,\ +-2,-0.144435,-2.71580101010101,3.14765086859405,-0.678913728160786,-0.041744413462711,-2.24127727984977,\ +-2,-0.144435,-2.6882702020202,3.14764978341315,-0.678916168791277,-0.04175078812563,-2.24128350725009,\ +-2,-0.144435,-2.66073939393939,3.14764875328749,-0.678918485599578,-0.0417568393783703,-2.24128941871141,\ +-2,-0.144435,-2.63320858585858,3.14764777413097,-0.678920687775502,-0.0417625912237447,-2.24129503768203,\ +-2,-0.144435,-2.60567777777778,3.14764684225212,-0.678922783621428,-0.0417680653466591,-2.24130038534594,\ +-2,-0.144435,-2.57814696969697,3.1476459543075,-0.678924780656884,-0.0417732813873119,-2.24130548088959,\ +-2,-0.144435,-2.55061616161616,3.14764510726169,-0.678926685708698,-0.0417782571766429,-2.24131034173203,\ +-2,-0.144435,-2.52308535353535,3.14764429835259,-0.678928504988971,-0.0417830089399796,-2.24131498372376,\ +-2,-0.144435,-2.49555454545454,3.14764352506137,-0.678930244162735,-0.0417875514737835,-2.24131942131941,\ +-2,-0.144435,-2.46802373737374,3.14764278508619,-0.678931908406892,-0.04179189829955,-2.24132366772812,\ +-2,-0.144435,-2.44049292929293,3.14764207631943,-0.678933502461666,-0.0417960617982385,-2.24132773504484,\ +-2,-0.144435,-2.41296212121212,3.14764139682752,-0.678935030675701,-0.0418000533280443,-2.24133163436537,\ +-2,-0.144435,-2.38543131313131,3.14764074483342,-0.678936497045687,-0.0418038833278708,-2.24133537588746,\ +-2,-0.144435,-2.3579005050505,3.14764011870105,-0.678937905251238,-0.041807561408491,-2.24133896899986,\ +-2,-0.144435,-2.3303696969697,3.1476395169216,-0.678939258685749,-0.0418110964330711,-2.241342422361,\ +-2,-0.144435,-2.30283888888889,3.14763893810139,-0.678940560483672,-0.041814496588478,-2.24134574396862,\ +-2,-0.144435,-2.27530808080808,3.14763838095111,-0.678941813544778,-0.0418177694485773,-2.2413489412216,\ +-2,-0.144435,-2.24777727272727,3.14763784427618,-0.678943020555689,-0.0418209220305523,-2.24135202097502,\ +-2,-0.144435,-2.22024646464646,3.14763732696829,-0.67894418400913,-0.0418239608451285,-2.24135498958923,\ +-2,-0.144435,-2.19271565656565,3.14763682799762,-0.678945306221108,-0.0418268919414529,-2.24135785297359,\ +-2,-0.144435,-2.16518484848485,3.14763634640618,-0.678946389346283,-0.0418297209472886,-2.24136061662589,\ +-2,-0.144435,-2.13765404040404,3.14763588130153,-0.678947435391806,-0.0418324531050758,-2.24136328566746,\ +-2,-0.144435,-2.11012323232323,3.14763543185128,-0.678948446229705,-0.0418350933043585,-2.24136586487487,\ +-2,-0.144435,-2.08259242424242,3.14763499727819,-0.678949423608081,-0.0418376461109835,-2.2413683587085,\ +-2,-0.144435,-2.05506161616161,3.14763457685561,-0.67895036916119,-0.0418401157934532,-2.24137077133825,\ +-2,-0.144435,-2.02753080808081,3.14763416990346,-0.678951284418566,-0.0418425063467428,-2.2413731066668,\ +-2,-0.144435,-2,3.14763377578456,-0.678952170813273,-0.0418448215138635,-2.24137536835069,\ +-2,-0.142745,-4.72555,3.14756524427567,-0.679106301881205,-0.0422473951957544,-2.24176864208238,\ +-2,-0.142745,-4.69801919191919,3.14756397157231,-0.67910916425986,-0.0422548714192642,-2.24177594559587,\ +-2,-0.142745,-4.67048838383838,3.14756262292537,-0.679112197439715,-0.0422627937570418,-2.24178368491784,\ +-2,-0.142745,-4.64295757575758,3.14756119132837,-0.679115417178756,-0.042271203367237,-2.24179190025564,\ +-2,-0.142745,-4.61542676767677,3.14755966888558,-0.679118841234894,-0.0422801466316001,-2.24180063691953,\ +-2,-0.142745,-4.58789595959596,3.14755804666635,-0.679122489693649,-0.042289676011328,-2.24180994615879,\ +-2,-0.142745,-4.56036515151515,3.14755631452978,-0.679126385362421,-0.0422998510768866,-2.24181988616774,\ +-2,-0.142745,-4.53283434343434,3.14755446091256,-0.679130554247731,-0.0423107397544997,-2.24183052330343,\ +-2,-0.142745,-4.50530353535354,3.14755247257049,-0.679135026136523,-0.0423224198444375,-2.24184193356884,\ +-2,-0.142745,-4.47777272727273,3.14755033426152,-0.679139835308984,-0.0423349808828445,-2.24185420443171,\ +-2,-0.142745,-4.45024191919192,3.14754802835429,-0.679145021418984,-0.0423485264413498,-2.24186743707105,\ +-2,-0.142745,-4.42271111111111,3.14754553434086,-0.679150630589994,-0.0423631769894561,-2.24188174917337,\ +-2,-0.142745,-4.3951803030303,3.14754282822512,-0.679156716790577,-0.0423790734872234,-2.24189727844237,\ +-2,-0.142745,-4.36764949494949,3.14753988174821,-0.679163343576433,-0.0423963819352691,-2.24191418704384,\ +-2,-0.142745,-4.34011868686869,3.14753666139797,-0.679170586318198,-0.0424152991935346,-2.24193266729004,\ +-2,-0.142745,-4.31258787878788,3.14753312712874,-0.679178535080722,-0.0424360605016814,-2.24195294898628,\ +-2,-0.142745,-4.28505707070707,3.14752923068757,-0.679187298387541,-0.0424589493114364,-2.2419753090362,\ +-2,-0.142745,-4.25752626262626,3.14752491339803,-0.679197008205086,-0.0424843103048587,-2.24200008415929,\ +-2,-0.142745,-4.22999545454545,3.14752010318503,-0.679207826634145,-0.0425125668716663,-2.24202768796443,\ +-2,-0.142745,-4.20246464646465,3.14751471051878,-0.679219955032023,-0.0425442449353784,-2.24205863422568,\ +-2,-0.142745,-4.17493383838384,3.14750862279049,-0.67923364666202,-0.0425800059923325,-2.24209356915797,\ +-2,-0.142745,-4.14740303030303,3.14750169636339,-0.67924922457097,-0.0426206938059312,-2.24213331703272,\ +-2,-0.142745,-4.11987222222222,3.14749374509546,-0.679267107402351,-0.0426674018276728,-2.24217894604137,\ +-2,-0.142745,-4.09234141414141,3.14748452336049,-0.679287847582771,-0.0427215729361131,-2.24223186573017,\ +-2,-0.142745,-4.06481060606061,3.14747370022377,-0.679312189402287,-0.0427851511363853,-2.24229397519533,\ +-2,-0.142745,-4.0372797979798,3.14746081888497,-0.679341160229574,-0.0428608198043894,-2.24236789582347,\ +-2,-0.142745,-4.00974898989899,3.14744523055187,-0.679376219233333,-0.0429523901309723,-2.2424573507622,\ +-2,-0.142745,-3.98221818181818,3.14742598173056,-0.679419510872961,-0.0430654632121751,-2.2425678117153,\ +-2,-0.142745,-3.95468737373737,3.14740161155235,-0.679474320721034,-0.0432086206082704,-2.2427076619984,\ +-2,-0.142745,-3.92715656565657,3.14736976250845,-0.679545950942368,-0.0433957110003863,-2.24289043037094,\ +-2,-0.142745,-3.89962575757576,3.14732636784568,-0.679643547884622,-0.0436506236595398,-2.24313945423224,\ +-2,-0.142745,-3.87209494949495,3.1472637595868,-0.679784357243104,-0.0440184024769355,-2.24349873690384,\ +-2,-0.142745,-3.84456414141414,3.14716554890649,-0.680005238371856,-0.0445953200994188,-2.24406232701534,\ +-2,-0.142745,-3.81703333333333,3.14698930277924,-0.680401625438954,-0.0456306402538494,-2.24507372999307,\ +-2,-0.142745,-3.78950252525252,3.14658070729751,-0.681320578763824,-0.0480308469638923,-2.24741848895799,\ +-2,-0.142745,-3.76197171717172,3.14459171220151,-0.685793936248997,-0.0597147729716142,-2.25883250181678,\ +-2,-0.142745,-3.73444090909091,3.15084006367958,-0.671741056022826,-0.02301016948257,-2.22297582008808,\ +-2,-0.142745,-3.7069101010101,3.14866133080834,-0.676641144020751,-0.0358086694434803,-2.23547865886252,\ +-2,-0.142745,-3.67937929292929,3.14823757330675,-0.677594197547835,-0.0382979421941495,-2.23791042633232,\ +-2,-0.142745,-3.65184848484848,3.1480571503304,-0.677999978574352,-0.0393577983547369,-2.23894579850409,\ +-2,-0.142745,-3.62431767676768,3.1479572208376,-0.678224725405296,-0.0399448127733068,-2.23951925216319,\ +-2,-0.142745,-3.59678686868687,3.14789374253102,-0.67836749154811,-0.0403177024997772,-2.23988352767555,\ +-2,-0.142745,-3.56925606060606,3.14784984746585,-0.67846621392238,-0.0405755546656528,-2.24013542313732,\ +-2,-0.142745,-3.54172525252525,3.14781768446719,-0.678538550244949,-0.0407644893178409,-2.24031999316525,\ +-2,-0.142745,-3.51419444444444,3.14779310446911,-0.678593831989284,-0.040908879255938,-2.2404610475171,\ +-2,-0.142745,-3.48666363636364,3.14777370852715,-0.678637454511202,-0.0410228165659069,-2.24057235273422,\ +-2,-0.142745,-3.45913282828283,3.1477580130693,-0.678672754444291,-0.0411150161738353,-2.24066242241711,\ +-2,-0.142745,-3.43160202020202,3.14774505131615,-0.678701906127792,-0.0411911572187122,-2.24073680450963,\ +-2,-0.142745,-3.40407121212121,3.14773416628089,-0.678726387160445,-0.041255099028652,-2.24079926918464,\ +-2,-0.142745,-3.3765404040404,3.14772489588613,-0.678747236779386,-0.0413095559786755,-2.24085246811173,\ +-2,-0.142745,-3.3490095959596,3.14771690567435,-0.67876520719758,-0.0413564927676955,-2.24089832060284,\ +-2,-0.142745,-3.32147878787879,3.14770994759489,-0.678780856294384,-0.0413973665162748,-2.24093825011725,\ +-2,-0.142745,-3.29394797979798,3.14770383379291,-0.678794606565548,-0.041433280737618,-2.24097333467564,\ +-2,-0.142745,-3.26641717171717,3.1476984193937,-0.678806783842026,-0.0414650864669413,-2.24100440565326,\ +-2,-0.142745,-3.23888636363636,3.14769359087583,-0.678817643439738,-0.0414934505618185,-2.24103211450245,\ +-2,-0.142745,-3.21135555555555,3.14768925802467,-0.678827388256195,-0.0415189029686145,-2.24105697892715,\ +-2,-0.142745,-3.18382474747475,3.14768534824316,-0.678836181566146,-0.0415418701433083,-2.24107941553168,\ +-2,-0.142745,-3.15629393939394,3.1476818024514,-0.67884415624349,-0.0415626991381553,-2.24109976335098,\ +-2,-0.142745,-3.12876313131313,3.14767857208054,-0.67885142152215,-0.0415816752603656,-2.24111830110128,\ +-2,-0.142745,-3.10123232323232,3.14767561683483,-0.678858068029532,-0.0415990352188999,-2.24113526002329,\ +-2,-0.142745,-3.07370151515151,3.14767290300194,-0.6788641715864,-0.0416149770494,-2.24115083357778,\ +-2,-0.142745,-3.04617070707071,3.14767040216133,-0.678869796112087,-0.0416296677022737,-2.24116518485839,\ +-2,-0.142745,-3.0186398989899,3.14766809018514,-0.678874995871521,-0.0416432489116154,-2.24117845232499,\ +-2,-0.142745,-2.99110909090909,3.14766594645715,-0.678879817231629,-0.041655841782841,-2.24119075428531,\ +-2,-0.142745,-2.96357828282828,3.14766395325644,-0.678884300047803,-0.0416675504139218,-2.24120219243253,\ +-2,-0.142745,-2.93604747474747,3.14766209526624,-0.678888478768185,-0.0416784647796748,-2.24121285466293,\ +-2,-0.142745,-2.90851666666667,3.14766035917972,-0.678892383320593,-0.0416886630483294,-2.24122281733896,\ +-2,-0.142745,-2.88098585858586,3.14765873338072,-0.678896039830427,-0.0416982134566056,-2.24123214712098,\ +-2,-0.142745,-2.85345505050505,3.1476572076835,-0.678899471205963,-0.0417071758384426,-2.24124090246071,\ +-2,-0.142745,-2.82592424242424,3.14765577311913,-0.678902697618765,-0.0417156028797842,-2.24124913482696,\ +-2,-0.142745,-2.79839343434343,3.14765442175911,-0.67890573690051,-0.0417235411550343,-2.24125688971824,\ +-2,-0.142745,-2.77086262626263,3.14765314656869,-0.678908604872696,-0.0417310319882498,-2.24126420750393,\ +-2,-0.142745,-2.74333181818182,3.14765194128442,-0.678911315622158,-0.0417381121727043,-2.24127112412737,\ +-2,-0.142745,-2.71580101010101,3.14765080031128,-0.678913881732441,-0.0417448145752675,-2.24127767169613,\ +-2,-0.142745,-2.6882702020202,3.14764971863576,-0.678916314479133,-0.0417511686465532,-2.24128387898052,\ +-2,-0.142745,-2.66073939393939,3.14764869175233,-0.678918623995496,-0.0417572008535459,-2.24128977183606,\ +-2,-0.142745,-2.63320858585858,3.14764771560057,-0.678920819413555,-0.0417629350481026,-2.24129537356362,\ +-2,-0.142745,-2.60567777777778,3.14764678651164,-0.678922908984771,-0.0417683927821605,-2.24130070521727,\ +-2,-0.142745,-2.57814696969697,3.14764590116213,-0.678924900183696,-0.041773593578424,-2.24130578586871,\ +-2,-0.142745,-2.55061616161616,3.14764505653433,-0.678926799797288,-0.0417785551637002,-2.24131063283522,\ +-2,-0.142745,-2.52308535353535,3.14764424988189,-0.678928614002206,-0.0417832936707644,-2.24131526187691,\ +-2,-0.142745,-2.49555454545454,3.14764347870002,-0.678930348431908,-0.0417878238135929,-2.24131968736783,\ +-2,-0.142745,-2.46802373737374,3.14764274069946,-0.678932008235078,-0.0417921590399791,-2.24132392244513,\ +-2,-0.142745,-2.44049292929293,3.14764203378378,-0.678933598126662,-0.041796311664863,-2.24132797913924,\ +-2,-0.142745,-2.41296212121212,3.14764135602952,-0.678935122432609,-0.0418002929871611,-2.24133186848807,\ +-2,-0.142745,-2.38543131313131,3.14764070566873,-0.67893658512918,-0.0418041133924322,-2.24133560063724,\ +-2,-0.142745,-2.3579005050505,3.14764008107352,-0.678937989877578,-0.0418077824433376,-2.24133918492853,\ +-2,-0.142745,-2.3303696969697,3.14763948074247,-0.678939340054542,-0.0418113089595607,-2.24134262997787,\ +-2,-0.142745,-2.30283888888889,3.14763890328863,-0.678940638779455,-0.0418147010885917,-2.24134594374452,\ +-2,-0.142745,-2.27530808080808,3.14763834742873,-0.678941888938401,-0.0418179663685669,-2.24134913359249,\ +-2,-0.142745,-2.24777727272727,3.14763781197376,-0.678943093205573,-0.041821111784192,-2.24135220634512,\ +-2,-0.142745,-2.22024646464646,3.14763729582041,-0.678944254062371,-0.0418241438166157,-2.24135516833384,\ +-2,-0.142745,-2.19271565656565,3.1476367979435,-0.678945373814466,-0.041827068488005,-2.2413580254417,\ +-2,-0.142745,-2.16518484848485,3.14763631738919,-0.678946454607093,-0.0418298914014699,-2.24136078314237,\ +-2,-0.142745,-2.13765404040404,3.14763585326887,-0.678947498438755,-0.0418326177768888,-2.24136344653515,\ +-2,-0.142745,-2.11012323232323,3.14763540475373,-0.678948507173563,-0.0418352524831242,-2.24136602037641,\ +-2,-0.142745,-2.08259242424242,3.14763497106972,-0.67894948255235,-0.0418378000670388,-2.24136850910798,\ +-2,-0.142745,-2.05506161616161,3.14763455149317,-0.67895042620269,-0.0418402647796827,-2.24137091688271,\ +-2,-0.142745,-2.02753080808081,3.14763414534673,-0.678951339647966,-0.0418426505999635,-2.24137324758759,\ +-2,-0.142745,-2,3.14763375199576,-0.678952224315571,-0.0418449612560827,-2.24137550486469,\ +-2,-0.118257,-4.72555,3.14756411584948,-0.679108839772712,-0.0422540238939213,-2.24177511764941,\ +-2,-0.118257,-4.69801919191919,3.14756277592558,-0.679111853333994,-0.0422618949901093,-2.24178280691354,\ +-2,-0.118257,-4.67048838383838,3.14756135386729,-0.679115051619931,-0.0422702485671171,-2.24179096751258,\ +-2,-0.118257,-4.64295757575758,3.14755984188388,-0.679118452152365,-0.0422791303901104,-2.24179964415447,\ +-2,-0.118257,-4.61542676767677,3.14755823116708,-0.679122074741521,-0.0422885922012375,-2.24180888738605,\ +-2,-0.118257,-4.58789595959596,3.14755651171945,-0.679125941872173,-0.0422986927283156,-2.24181875457845,\ +-2,-0.118257,-4.56036515151515,3.14755467214667,-0.679130079170798,-0.0423094989049215,-2.24182931111901,\ +-2,-0.118257,-4.53283434343434,3.1475526994047,-0.679134515974142,-0.0423210873554604,-2.241840631862,\ +-2,-0.118257,-4.50530353535354,3.14755057849001,-0.679139286025909,-0.0423335462148588,-2.24185280290633,\ +-2,-0.118257,-4.47777272727273,3.14754829205733,-0.679144428336601,-0.0423469773742946,-2.24186592378937,\ +-2,-0.118257,-4.45024191919192,3.14754581994416,-0.679149988252754,-0.0423614992740463,-2.24188011021525,\ +-2,-0.118257,-4.42271111111111,3.14754313857462,-0.679156018797798,-0.0423772504055655,-2.24189549747615,\ +-2,-0.118257,-4.3951803030303,3.14754022020519,-0.679162582368385,-0.0423943937421634,-2.24191224478046,\ +-2,-0.118257,-4.36764949494949,3.14753703196124,-0.679169752901359,-0.042413122398877,-2.24193054078203,\ +-2,-0.118257,-4.34011868686869,3.14753353459325,-0.679177618671017,-0.0424336669386309,-2.24195061071749,\ +-2,-0.118257,-4.31258787878788,3.14752968085286,-0.67918628594149,-0.0424563049118354,-2.2419727257255,\ +-2,-0.118257,-4.28505707070707,3.14752541334579,-0.679195883795542,-0.0424813734687164,-2.2419972151677,\ +-2,-0.118257,-4.25752626262626,3.14752066165411,-0.679206570606992,-0.0425092862645646,-2.24202448314341,\ +-2,-0.118257,-4.22999545454545,3.14751533841981,-0.679218542848676,-0.0425405564651807,-2.24205503096371,\ +-2,-0.118257,-4.20246464646465,3.147509333925,-0.6792320472821,-0.0425758285849314,-2.24208948825385,\ +-2,-0.118257,-4.17493383838384,3.14750250844876,-0.679247398147087,-0.0426159233842566,-2.24212865681369,\ +-2,-0.118257,-4.14740303030303,3.1474946812591,-0.67926500191974,-0.0426619025347737,-2.24217357378894,\ +-2,-0.118257,-4.11987222222222,3.14748561437413,-0.679285393834121,-0.0427151640099828,-2.24222560485815,\ +-2,-0.118257,-4.09234141414141,3.14747498794411,-0.679309293249642,-0.0427775866988625,-2.24228658550568,\ +-2,-0.118257,-4.06481060606061,3.14746236173474,-0.679337690277043,-0.0428517566636198,-2.24235904205248,\ +-2,-0.118257,-4.0372797979798,3.14744711260663,-0.679371986390452,-0.0429413344031025,-2.24244655043533,\ +-2,-0.118257,-4.00974898989899,3.14742832851541,-0.679414232826944,-0.0430516775267399,-2.24255434449627,\ +-2,-0.118257,-3.98221818181818,3.14740461913049,-0.679467556515254,-0.0431909532342479,-2.24269040276258,\ +-2,-0.118257,-3.95468737373737,3.14737375500591,-0.679536971599757,-0.0433722579284986,-2.24286751909404,\ +-2,-0.118257,-3.92715656565657,3.14733192204518,-0.679631056189702,-0.0436179967032438,-2.243107580999,\ +-2,-0.118257,-3.89962575757576,3.14727200932877,-0.679765803127463,-0.0439699411333036,-2.24345139507722,\ +-2,-0.118257,-3.87209494949495,3.14717906503438,-0.67997483986961,-0.0445159224988025,-2.24398476359755,\ +-2,-0.118257,-3.84456414141414,3.14701537617603,-0.680342984960185,-0.0454774776646174,-2.24492410564917,\ +-2,-0.118257,-3.81703333333333,3.14665054623493,-0.681163507218449,-0.0476205930729034,-2.24701771243955,\ +-2,-0.118257,-3.78950252525252,3.14512310149553,-0.684598813002738,-0.0565932402915919,-2.25578308040438,\ +-2,-0.118257,-3.76197171717172,3.15179895826207,-0.669584450274192,-0.0173773484799152,-2.21747312422087,\ +-2,-0.118257,-3.73444090909091,3.14874606447878,-0.676450573415668,-0.0353109196310787,-2.23499240768672,\ +-2,-0.118257,-3.7069101010101,3.14826684876072,-0.677528355469385,-0.0381259698053256,-2.23774242671848,\ +-2,-0.118257,-3.67937929292929,3.14807183187112,-0.677966958995664,-0.0392715547859034,-2.23886154726841,\ +-2,-0.118257,-3.65184848484848,3.14796601862179,-0.678204938713112,-0.0398931320730317,-2.23946876535104,\ +-2,-0.118257,-3.62431767676768,3.14789959681663,-0.678354324943306,-0.040283312751853,-2.23984993237336,\ +-2,-0.118257,-3.59678686868687,3.14785402173502,-0.67845682576538,-0.0405510338147944,-2.24011146874846,\ +-2,-0.118257,-3.56925606060606,3.14782081036041,-0.678531519942137,-0.0407461269271402,-2.24030205496849,\ +-2,-0.118257,-3.54172525252525,3.14779553252557,-0.678588371159045,-0.0408946161578838,-2.24044711391426,\ +-2,-0.118257,-3.51419444444444,3.14777564879288,-0.678633090748687,-0.0410114188901055,-2.24056121835883,\ +-2,-0.118257,-3.48666363636364,3.14775959903059,-0.678669187531621,-0.0411056997836632,-2.24065332124708,\ +-2,-0.118257,-3.45913282828283,3.1477463718503,-0.67869893617508,-0.0411834000233972,-2.24072922651513,\ +-2,-0.118257,-3.43160202020202,3.14773528284577,-0.678723875945675,-0.0412485400072315,-2.24079286168473,\ +-2,-0.118257,-3.40407121212121,3.14772585233285,-0.678745085679006,-0.0413039375370991,-2.24084697946311,\ +-2,-0.118257,-3.3765404040404,3.14771773412887,-0.678763343958589,-0.0413516261889417,-2.24089356644808,\ +-2,-0.118257,-3.3490095959596,3.1477106721302,-0.678779226775334,-0.0413931103887261,-2.24093409231151,\ +-2,-0.118257,-3.32147878787879,3.14770447280281,-0.67879316939771,-0.0414295270106404,-2.2409696676644,\ +-2,-0.118257,-3.29394797979798,3.14769898717398,-0.678805506873497,-0.0414617511632323,-2.24100114739919,\ +-2,-0.118257,-3.26641717171717,3.14769409870497,-0.678816501304561,-0.0414904674282464,-2.24102920028295,\ +-2,-0.118257,-3.23888636363636,3.14768971491989,-0.67882636067415,-0.0415162190354351,-2.24105435699614,\ +-2,-0.118257,-3.21135555555555,3.14768576149998,-0.678835252129231,-0.0415394425545959,-2.24107704402327,\ +-2,-0.118257,-3.18382474747475,3.14768217803574,-0.678843311533996,-0.0415604928483059,-2.24109760802915,\ +-2,-0.118257,-3.15629393939394,3.14767891491843,-0.678850650461239,-0.0415796613326435,-2.24111633369778,\ +-2,-0.118257,-3.12876313131313,3.1476759310294,-0.678857361388961,-0.0415971895501418,-2.24113345699176,\ +-2,-0.118257,-3.10123232323232,3.14767319199842,-0.678863521617664,-0.0416132794013524,-2.2411491751475,\ +-2,-0.118257,-3.07370151515151,3.14767066887382,-0.678869196261299,-0.0416281009568751,-2.24116365430675,\ +-2,-0.118257,-3.04617070707071,3.14766833709507,-0.678874440557739,-0.0416417984920664,-2.24117703541194,\ +-2,-0.118257,-3.0186398989899,3.14766617569079,-0.678879301672807,-0.0416544951989486,-2.24118943880917,\ +-2,-0.118257,-2.99110909090909,3.14766416664615,-0.678883820122786,-0.0416662969016731,-2.24120096787796,\ +-2,-0.118257,-2.96357828282828,3.14766229439966,-0.678888030906361,-0.0416772950130193,-2.24121171191933,\ +-2,-0.118257,-2.93604747474747,3.14766054543921,-0.678891964412938,-0.041687568906837,-2.24122174847348,\ +-2,-0.118257,-2.90851666666667,3.14765890797553,-0.678895647157261,-0.0416971878367619,-2.24123114519422,\ +-2,-0.118257,-2.88098585858586,3.14765737167605,-0.678899102377853,-0.0417062124993079,-2.2412399613759,\ +-2,-0.118257,-2.85345505050505,3.14765592744663,-0.678902350527884,-0.0417146963159328,-2.24124824920586,\ +-2,-0.118257,-2.82592424242424,3.14765456725147,-0.67890540968033,-0.0417226864913092,-2.24125605479829,\ +-2,-0.118257,-2.79839343434343,3.14765328396345,-0.678908295864433,-0.0417302248920859,-2.24126341905268,\ +-2,-0.118257,-2.77086262626263,3.14765207123928,-0.678911023346653,-0.0417373487806893,-2.24127037837065,\ +-2,-0.118257,-2.74333181818182,3.14765092341456,-0.678913604866479,-0.0417440914313169,-2.24127696525771,\ +-2,-0.118257,-2.71580101010101,3.1476498354154,-0.678916051835434,-0.0417504826496099,-2.24128320883095,\ +-2,-0.118257,-2.6882702020202,3.14764880268332,-0.678918374505685,-0.041756549213135,-2.24128913524934,\ +-2,-0.118257,-2.66073939393939,3.14764782111155,-0.678920582113646,-0.0417623152464026,-2.24129476808011,\ +-2,-0.118257,-2.63320858585858,3.14764688699034,-0.678922683002727,-0.0417678025414962,-2.2413001286119,\ +-2,-0.118257,-2.60567777777778,3.14764599696017,-0.678924684728711,-0.0417730308333042,-2.2413052361237,\ +-2,-0.118257,-2.57814696969697,3.14764514797131,-0.678926594150554,-0.0417780180366736,-2.24131010811649,\ +-2,-0.118257,-2.55061616161616,3.14764433724898,-0.678928417508901,-0.0417827804514967,-2.24131476051364,\ +-2,-0.118257,-2.52308535353535,3.14764356226301,-0.678930160494224,-0.0417873329406789,-2.24131920783469,\ +-2,-0.118257,-2.49555454545454,3.1476428207015,-0.678931828306151,-0.0417916890850772,-2.24132346334676,\ +-2,-0.118257,-2.46802373737374,3.14764211044773,-0.678933425705263,-0.0417958613188178,-2.24132753919674,\ +-2,-0.118257,-2.44049292929293,3.14764142956005,-0.678934957058481,-0.0417998610478264,-2.24133144652706,\ +-2,-0.118257,-2.41296212121212,3.14764077625407,-0.678936426378933,-0.0418036987539557,-2.24133519557743,\ +-2,-0.118257,-2.38543131313131,3.14764014888714,-0.678937837361068,-0.041807384086709,-2.24133879577444,\ +-2,-0.118257,-2.3579005050505,3.14763954594449,-0.678939193411676,-0.0418109259442529,-2.24134225581069,\ +-2,-0.118257,-2.3303696969697,3.14763896602706,-0.678940497677347,-0.0418143325451459,-2.24134558371489,\ +-2,-0.118257,-2.30283888888889,3.1476384078406,-0.678941753068854,-0.0418176114920061,-2.24134878691401,\ +-2,-0.118257,-2.27530808080808,3.14763787018612,-0.678942962282833,-0.0418207698281522,-2.24135187228869,\ +-2,-0.118257,-2.24777727272727,3.14763735195123,-0.678944127821113,-0.0418238140881053,-2.24135484622246,\ +-2,-0.118257,-2.22024646464646,3.14763685210247,-0.678945252008012,-0.0418267503427196,-2.24135771464597,\ +-2,-0.118257,-2.19271565656565,3.14763636967841,-0.678946337005792,-0.0418295842395888,-2.24136048307631,\ +-2,-0.118257,-2.16518484848485,3.14763590378354,-0.678947384828543,-0.0418323210393032,-2.24136315665257,\ +-2,-0.118257,-2.13765404040404,3.14763545358265,-0.678948397354666,-0.041834965648039,-2.24136574016757,\ +-2,-0.118257,-2.11012323232323,3.1476350182959,-0.678949376338103,-0.0418375226469118,-2.2413682380966,\ +-2,-0.118257,-2.08259242424242,3.14763459719424,-0.678950323418487,-0.0418399963184593,-2.24137065462328,\ +-2,-0.118257,-2.05506161616161,3.14763418959541,-0.678951240130298,-0.0418423906705755,-2.2413729936629,\ +-2,-0.118257,-2.02753080808081,3.14763379486019,-0.678952127911159,-0.041844709458181,-2.24137525888364,\ +-2,-0.118257,-2,3.14763341238907,-0.678952988109364,-0.0418469562028703,-2.24137745372574,\ +-2,-0.0759167,-4.72555,3.14756202164797,-0.679113549745104,-0.0422663258324826,-2.24178713539797,\ +-2,-0.0759167,-4.69801919191919,3.14756055224621,-0.679116854509111,-0.042274957518694,-2.24179556768155,\ +-2,-0.0759167,-4.67048838383838,3.14755898831777,-0.679120371868694,-0.0422841444815597,-2.2418045424142,\ +-2,-0.0759167,-4.64295757575758,3.14755732043818,-0.679124123020046,-0.0422939420832517,-2.24181411367917,\ +-2,-0.0759167,-4.61542676767677,3.14755553788701,-0.679128132073971,-0.0423044132985645,-2.24182434299646,\ +-2,-0.0759167,-4.58789595959596,3.14755362841727,-0.67913242657466,-0.0423156300699695,-2.24183530064656,\ +-2,-0.0759167,-4.56036515151515,3.14755157797354,-0.679137038133435,-0.0423276749627989,-2.24184706728746,\ +-2,-0.0759167,-4.53283434343434,3.14754937034551,-0.679142003208168,-0.0423406432010822,-2.24185973594339,\ +-2,-0.0759167,-4.50530353535354,3.14754698673853,-0.679147364069145,-0.0423546451902358,-2.24187341446927,\ +-2,-0.0759167,-4.47777272727273,3.14754440523706,-0.679153170005472,-0.0423698096680786,-2.2418882286289,\ +-2,-0.0759167,-4.45024191919192,3.14754160012907,-0.679159478844987,-0.0423862876746577,-2.24190432597314,\ +-2,-0.0759167,-4.42271111111111,3.14753854104653,-0.679166358886985,-0.0424042576003592,-2.24192188077133,\ +-2,-0.0759167,-4.3951803030303,3.14753519186163,-0.679173891384841,-0.042423931670204,-2.24194110034581,\ +-2,-0.0759167,-4.36764949494949,3.14753150925329,-0.67918217377006,-0.0424455643647467,-2.24196223329834,\ +-2,-0.0759167,-4.34011868686869,3.14752744082301,-0.679191323889682,-0.0424694634877165,-2.241985580322,\ +-2,-0.0759167,-4.31258787878788,3.14752292258591,-0.679201485649154,-0.0424960049045782,-2.24201150859928,\ +-2,-0.0759167,-4.28505707070707,3.14751787558084,-0.679212836636349,-0.042525652455648,-2.24204047125524,\ +-2,-0.0759167,-4.25752626262626,3.14751220121644,-0.679225598588651,-0.042558985295,-2.24207303406475,\ +-2,-0.0759167,-4.22999545454545,3.14750577476647,-0.679240052022009,-0.0425967360999499,-2.2421099127794,\ +-2,-0.0759167,-4.20246464646465,3.14749843609552,-0.679256557089655,-0.042639845551805,-2.24215202634957,\ +-2,-0.0759167,-4.17493383838384,3.14748997613329,-0.679275584002,-0.0426895417893011,-2.24220057454248,\ +-2,-0.0759167,-4.14740303030303,3.14748011663633,-0.679297758543619,-0.0427474592940827,-2.24225715408123,\ +-2,-0.0759167,-4.11987222222222,3.14746847899994,-0.679323932216942,-0.0428158220984114,-2.24232393762019,\ +-2,-0.0759167,-4.09234141414141,3.14745453452355,-0.679355294098069,-0.0428977359404841,-2.24240395915114,\ +-2,-0.0759167,-4.06481060606061,3.14743752184692,-0.679393556527449,-0.0429976732683691,-2.24250158780309,\ +-2,-0.0759167,-4.0372797979798,3.14741630314961,-0.679441278524673,-0.0431223179645177,-2.24262335305252,\ +-2,-0.0759167,-4.00974898989899,3.14738909865236,-0.679502462909497,-0.0432821249612723,-2.24277946830989,\ +-2,-0.0759167,-3.98221818181818,3.14735295952941,-0.679583741750512,-0.0434944165046062,-2.24298685565588,\ +-2,-0.0759167,-3.95468737373737,3.14730261946003,-0.679696959287663,-0.0437901284684319,-2.24327573630742,\ +-2,-0.0759167,-3.92715656565657,3.14722766128221,-0.67986554428141,-0.0442304542415211,-2.24370589001026,\ +-2,-0.0759167,-3.89962575757576,3.1471041814296,-0.68014325714459,-0.0449558102086123,-2.24441448935693,\ +-2,-0.0759167,-3.87209494949495,3.14686252083608,-0.68068676488225,-0.0463753936451021,-2.24580127865939,\ +-2,-0.0759167,-3.84456414141414,3.14617731531839,-0.682227829130005,-0.0504004868113806,-2.24973338719272,\ +-2,-0.0759167,-3.81703333333333,3.13021066264408,-0.718137694065136,-0.144193170771968,-2.34135934409099,\ +-2,-0.0759167,-3.78950252525252,3.14932314526692,-0.675152687529292,-0.0319209820476984,-2.23168078185636,\ +-2,-0.0759167,-3.76197171717172,3.14842592947168,-0.677170574351418,-0.0371914842152181,-2.23682952890188,\ +-2,-0.0759167,-3.73444090909091,3.1481452886285,-0.67780175077763,-0.0388400487858168,-2.23844000959089,\ +-2,-0.0759167,-3.7069101010101,3.14800818627134,-0.678110101389916,-0.0396454272404392,-2.2392267828066,\ +-2,-0.0759167,-3.67937929292929,3.14792692642704,-0.678292859172195,-0.0401227708045458,-2.2396930991437,\ +-2,-0.0759167,-3.65184848484848,3.14787316418628,-0.678413773357749,-0.0404385855816937,-2.24000161820869,\ +-2,-0.0759167,-3.62431767676768,3.1478349619271,-0.678499692303664,-0.0406629965772561,-2.24022084503256,\ +-2,-0.0759167,-3.59678686868687,3.14780641850599,-0.67856388800066,-0.0408306687957645,-2.24038464381534,\ +-2,-0.0759167,-3.56925606060606,3.1477842819064,-0.678613674409719,-0.0409607055123784,-2.24051167652288,\ +-2,-0.0759167,-3.54172525252525,3.14776661268936,-0.678653413433932,-0.0410644995462965,-2.24061307278619,\ +-2,-0.0759167,-3.51419444444444,3.14775218246329,-0.678685867792388,-0.0411492668210042,-2.24069588183195,\ +-2,-0.0759167,-3.48666363636364,3.14774017538349,-0.678712872363893,-0.0412197998415302,-2.24076478545242,\ +-2,-0.0759167,-3.45913282828283,3.14773002837812,-0.678735693527468,-0.0412794062529394,-2.24082301488197,\ +-2,-0.0759167,-3.43160202020202,3.14772134029016,-0.678755233506941,-0.0413304425662867,-2.24087287219332,\ +-2,-0.0759167,-3.40407121212121,3.14771381758117,-0.678772152486061,-0.041374633110151,-2.24091604188094,\ +-2,-0.0759167,-3.3765404040404,3.14770724051101,-0.678786944672369,-0.0414132687011836,-2.24095378494201,\ +-2,-0.0759167,-3.3490095959596,3.14770144131725,-0.67879998737261,-0.0414473348237883,-2.24098706409503,\ +-2,-0.0759167,-3.32147878787879,3.14769628970469,-0.678811573627755,-0.0414775968693046,-2.24101662704985,\ +-2,-0.0759167,-3.29394797979798,3.14769168293873,-0.678821934493382,-0.0415046583299059,-2.24104306335722,\ +-2,-0.0759167,-3.26641717171717,3.14768753892433,-0.678831254605806,-0.0415290014556934,-2.24106684412668,\ +-2,-0.0759167,-3.23888636363636,3.14768379127056,-0.6788396832817,-0.0415510162456574,-2.24108835034775,\ +-2,-0.0759167,-3.21135555555555,3.14768038570705,-0.678847342578123,-0.0415710214996539,-2.24110789345563,\ +-2,-0.0759167,-3.18382474747475,3.14767727743866,-0.678854333241742,-0.0415892803570633,-2.24112573051084,\ +-2,-0.0759167,-3.15629393939394,3.14767442916413,-0.678860739165126,-0.0416060119362133,-2.2411420755698,\ +-2,-0.0759167,-3.12876313131313,3.14767180957187,-0.678866630769714,-0.0416214001702864,-2.24115710831663,\ +-2,-0.0759167,-3.10123232323232,3.14766939218414,-0.678872067605379,-0.0416356005971122,-2.24117098069602,\ +-2,-0.0759167,-3.07370151515151,3.14766715445891,-0.678877100370391,-0.0416487456350892,-2.24118382206735,\ +-2,-0.0759167,-3.04617070707071,3.14766507708477,-0.678881772497143,-0.0416609487249211,-2.24119574325071,\ +-2,-0.0759167,-3.0186398989899,3.1476631434222,-0.67888612140876,-0.0416723076117813,-2.24120683973323,\ +-2,-0.0759167,-2.99110909090909,3.14766133905698,-0.678890179523667,-0.0416829069690788,-2.24121719423225,\ +-2,-0.0759167,-2.96357828282828,3.14765965144017,-0.678893975065125,-0.0416928205129233,-2.24122687876097,\ +-2,-0.0759167,-2.93604747474747,3.14765806959581,-0.678897532718575,-0.0417021127190157,-2.2412359563056,\ +-2,-0.0759167,-2.90851666666667,3.14765658388206,-0.678900874169131,-0.041710840226524,-2.24124448219689,\ +-2,-0.0759167,-2.88098585858586,3.14765518579434,-0.678904018543964,-0.0417190529935628,-2.24125250523885,\ +-2,-0.0759167,-2.85345505050505,3.14765386780259,-0.678906982778678,-0.0417267952540814,-2.24126006864357,\ +-2,-0.0759167,-2.82592424242424,3.14765262321545,-0.678909781922434,-0.041734106314872,-2.24126721080981,\ +-2,-0.0759167,-2.79839343434343,3.14765144606673,-0.678912429393503,-0.0417410212230195,-2.24127396597502,\ +-2,-0.0759167,-2.77086262626263,3.14765033101978,-0.67891493719438,-0.0417475713277155,-2.24128036476419,\ +-2,-0.0759167,-2.74333181818182,3.14764927328651,-0.678917316093682,-0.0417537847554383,-2.24128643465405,\ +-2,-0.0759167,-2.71580101010101,3.14764826855874,-0.678919575780748,-0.0417596868136995,-2.24129220036745,\ +-2,-0.0759167,-2.6882702020202,3.14764731294951,-0.678921724997551,-0.0417653003355726,-2.24129768421003,\ +-2,-0.0759167,-2.66073939393939,3.14764640294286,-0.678923771651704,-0.0417706459748993,-2.24130290635847,\ +-2,-0.0759167,-2.63320858585858,3.14764553535055,-0.678925722913699,-0.0417757424602188,-2.24130788510867,\ +-2,-0.0759167,-2.60567777777778,3.1476447072748,-0.678927585300824,-0.0417806068139988,-2.24131263708986,\ +-2,-0.0759167,-2.57814696969697,3.14764391607591,-0.678929364749908,-0.0417852545425764,-2.24131717745016,\ +-2,-0.0759167,-2.55061616161616,3.14764315934415,-0.678931066680514,-0.0417896998012788,-2.24132152001788,\ +-2,-0.0759167,-2.52308535353535,3.14764243487531,-0.678932696050095,-0.0417939555384205,-2.24132567744223,\ +-2,-0.0759167,-2.49555454545454,3.14764174064918,-0.678934257402197,-0.0417980336212713,-2.24132966131631,\ +-2,-0.0759167,-2.46802373737374,3.14764107481076,-0.678935754908797,-0.0418019449465667,-2.24133348228516,\ +-2,-0.0759167,-2.44049292929293,3.14764043565374,-0.678937192407503,-0.0418056995377381,-2.24133715014063,\ +-2,-0.0759167,-2.41296212121212,3.14763982160585,-0.678938573434409,-0.0418093066306801,-2.24134067390526,\ +-2,-0.0759167,-2.38543131313131,3.14763923121597,-0.678939901253137,-0.0418127747496065,-2.24134406190635,\ +-2,-0.0759167,-2.3579005050505,3.14763866314274,-0.678941178880573,-0.0418161117743038,-2.24134732184165,\ +-2,-0.0759167,-2.3303696969697,3.14763811614423,-0.678942409109755,-0.0418193249999002,-2.24135046083776,\ +-2,-0.0759167,-2.30283888888889,3.14763758906907,-0.678943594530276,-0.0418224211901018,-2.24135348550213,\ +-2,-0.0759167,-2.27530808080808,3.14763708084822,-0.678944737546438,-0.0418254066247186,-2.24135640196951,\ +-2,-0.0759167,-2.24777727272727,3.14763659048778,-0.678945840393575,-0.0418282871421773,-2.24135921594345,\ +-2,-0.0759167,-2.22024646464646,3.14763611706251,-0.678946905152607,-0.0418310681776314,-2.24136193273355,\ +-2,-0.0759167,-2.19271565656565,3.14763565970999,-0.67894793376317,-0.0418337547971882,-2.24136455728887,\ +-2,-0.0759167,-2.16518484848485,3.14763521762535,-0.678948928035391,-0.0418363517287086,-2.24136709422806,\ +-2,-0.0759167,-2.13765404040404,3.14763479005665,-0.678949889660528,-0.0418388633895744,-2.24136954786645,\ +-2,-0.0759167,-2.11012323232323,3.14763437630046,-0.678950820220565,-0.0418412939117612,-2.24137192224057,\ +-2,-0.0759167,-2.08259242424242,3.14763397569811,-0.678951721196903,-0.0418436471645233,-2.24137422113028,\ +-2,-0.0759167,-2.05506161616161,3.14763358763215,-0.678952593978221,-0.0418459267749476,-2.24137644807889,\ +-2,-0.0759167,-2.02753080808081,3.14763321152318,-0.678953439867628,-0.0418481361466068,-2.24137860641132,\ +-2,-0.0759167,-2,3.14763284682695,-0.678954260089147,-0.041850278476516,-2.24138069925075,\ +-2,-0.0751524,-4.72555,3.14756198205457,-0.679113638792801,-0.0422665584154358,-2.24178736260797,\ +-2,-0.0751524,-4.69801919191919,3.14756051014557,-0.679116949195687,-0.0422752048297937,-2.24179580927946,\ +-2,-0.0751524,-4.67048838383838,3.147558943464,-0.67912047274723,-0.0422844079653937,-2.24180479981123,\ +-2,-0.0751524,-4.64295757575758,3.14755727255211,-0.679124230718397,-0.0422942233796956,-2.24181438847732,\ +-2,-0.0751524,-4.61542676767677,3.14755548665043,-0.679128247307825,-0.0423047142769319,-2.24182463702185,\ +-2,-0.0751524,-4.58789595959596,3.1475535734658,-0.679132550163475,-0.0423159528705876,-2.24183561599009,\ +-2,-0.0751524,-4.56036515151515,3.14755151888802,-0.679137171019936,-0.0423280220479657,-2.24184740635453,\ +-2,-0.0751524,-4.53283434343434,3.14754930664129,-0.679142146482434,-0.0423410174179663,-2.2418601015154,\ +-2,-0.0751524,-4.50530353535354,3.14754691785205,-0.67914751899856,-0.0423550498491202,-2.24187380978003,\ +-2,-0.0751524,-4.47777272727273,3.14754433050927,-0.679153338072317,-0.0423702486404995,-2.24188865746053,\ +-2,-0.0751524,-4.45024191919192,3.14754151878421,-0.679159661793963,-0.0423867655175984,-2.24190479277733,\ +-2,-0.0751524,-4.42271111111111,3.14753845216516,-0.679166558785991,-0.0424047797149433,-2.24192239082442,\ +-2,-0.0751524,-4.3951803030303,3.14753509434572,-0.679174110703417,-0.0424245045066092,-2.24194165994898,\ +-2,-0.0751524,-4.36764949494949,3.14753140178065,-0.679182415481863,-0.0424461956898403,-2.24196285003904,\ +-2,-0.0751524,-4.34011868686869,3.14752732178706,-0.679191591607998,-0.0424701627390129,-2.24198626341972,\ +-2,-0.0751524,-4.31258787878788,3.14752279001486,-0.67920178380861,-0.0424967836648347,-2.24201226936921,\ +-2,-0.0751524,-4.28505707070707,3.14751772702777,-0.679213170740262,-0.0425265250989382,-2.24204132373939,\ +-2,-0.0751524,-4.25752626262626,3.14751203360694,-0.679225975551487,-0.0425599698811657,-2.24207399590576,\ +-2,-0.0751524,-4.22999545454545,3.14750558418391,-0.679240480652483,-0.0425978556363994,-2.24211100645317,\ +-2,-0.0751524,-4.20246464646465,3.14749821747155,-0.679257048786781,-0.0426411298115292,-2.2421532809413,\ +-2,-0.0751524,-4.17493383838384,3.14748972279113,-0.679276153782244,-0.0426910299936834,-2.2422020283675,\ +-2,-0.0751524,-4.14740303030303,3.14747981959813,-0.679298426598591,-0.0427492041814306,-2.24225885865952,\ +-2,-0.0751524,-4.11987222222222,3.14746812590292,-0.679324726351218,-0.0428178962912622,-2.24232596389662,\ +-2,-0.0751524,-4.09234141414141,3.14745410786021,-0.679356253687017,-0.0429002422830471,-2.24240640759409,\ +-2,-0.0751524,-4.06481060606061,3.14743699598127,-0.679394739227725,-0.0430007623535905,-2.24250460552662,\ +-2,-0.0751524,-4.0372797979798,3.14741563898791,-0.679442772260236,-0.0431262194402789,-2.24262716439936,\ +-2,-0.0751524,-4.00974898989899,3.14738823349668,-0.679504408691414,-0.0432872071332216,-2.24278443307739,\ +-2,-0.0751524,-3.98221818181818,3.14735178614834,-0.67958638074797,-0.0435013092805876,-2.24299358920021,\ +-2,-0.0751524,-3.95468737373737,3.14730093818767,-0.67970074056007,-0.0438000047430652,-2.24328538442788,\ +-2,-0.0751524,-3.92715656565657,3.14722505378862,-0.67987140867543,-0.0442457714045346,-2.24372085332786,\ +-2,-0.0751524,-3.89962575757576,3.14709960278652,-0.680153554760366,-0.0449827064674448,-2.2444407642789,\ +-2,-0.0751524,-3.87209494949495,3.14685246790038,-0.680709374478059,-0.0464344474643775,-2.24585896826237,\ +-2,-0.0751524,-3.84456414141414,3.14613988230527,-0.682312017999975,-0.0506203790356669,-2.24994819963452,\ +-2,-0.0751524,-3.81703333333333,3.12240965265914,-0.735682587201544,-0.190018534360442,-2.38612608507442,\ +-2,-0.0751524,-3.78950252525252,3.14927242204234,-0.675266766803196,-0.0322189447747403,-2.2319718612757,\ +-2,-0.0751524,-3.76197171717172,3.14841423005217,-0.677196886978306,-0.0372602099512335,-2.23689666698834,\ +-2,-0.0751524,-3.73444090909091,3.14814022294334,-0.677813143777375,-0.0388698060691263,-2.23846907944413,\ +-2,-0.0751524,-3.7069101010101,3.14800537342553,-0.678116427632195,-0.0396619507011572,-2.23924292455494,\ +-2,-0.0751524,-3.67937929292929,3.14792514004244,-0.678296876847715,-0.0401332645385363,-2.23970335045945,\ +-2,-0.0751524,-3.65184848484848,3.1478719299852,-0.6784165491427,-0.0404458356318188,-2.24000870077369,\ +-2,-0.0751524,-3.62431767676768,3.14783405847412,-0.67850172421827,-0.0406683037184772,-2.24022602957225,\ +-2,-0.0751524,-3.59678686868687,3.14780572868955,-0.67856543943512,-0.0408347209748001,-2.24038860238402,\ +-2,-0.0751524,-3.56925606060606,3.14778373802331,-0.678614897632191,-0.0409639004372038,-2.240514797641,\ +-2,-0.0751524,-3.54172525252525,3.14776617289166,-0.678654402562742,-0.0410670830437812,-2.24061559660168,\ +-2,-0.0751524,-3.51419444444444,3.14775181949845,-0.67868668411994,-0.0411513989802947,-2.24069796473573,\ +-2,-0.0751524,-3.48666363636364,3.14773987074467,-0.678713557513073,-0.0412215893770971,-2.2407665336475,\ +-2,-0.0751524,-3.45913282828283,3.14772976905792,-0.678736276752605,-0.0412809295739263,-2.24082450301236,\ +-2,-0.0751524,-3.43160202020202,3.14772111687989,-0.678755735968697,-0.0413317549420581,-2.24087415425159,\ +-2,-0.0751524,-3.40407121212121,3.14771362310721,-0.678772589868509,-0.0413757755058093,-2.24091715788584,\ +-2,-0.0751524,-3.3765404040404,3.14770706969511,-0.678787328846565,-0.0414142721226371,-2.24095476518318,\ +-2,-0.0751524,-3.3490095959596,3.14770129009099,-0.678800327488647,-0.041448223170097,-2.24098793191944,\ +-2,-0.0751524,-3.32147878787879,3.1476961548817,-0.678811876851928,-0.0414783888580566,-2.24101740074268,\ +-2,-0.0751524,-3.29394797979798,3.14769156198804,-0.678822206518057,-0.0415053688289497,-2.24104375744286,\ +-2,-0.0751524,-3.26641717171717,3.14768742981003,-0.678831500009764,-0.0415296424242931,-2.24106747028812,\ +-2,-0.0751524,-3.23888636363636,3.14768369233651,-0.678839905789687,-0.0415515974124626,-2.24108891808888,\ +-2,-0.0751524,-3.21135555555555,3.14768029559229,-0.678847545251083,-0.0415715508595097,-2.24110841058661,\ +-2,-0.0751524,-3.18382474747475,3.1476771950144,-0.678854518618352,-0.0415897645407199,-2.24112620350925,\ +-2,-0.0751524,-3.15629393939394,3.14767435348632,-0.678860909368614,-0.0416064564893164,-2.24114250985318,\ +-2,-0.0751524,-3.12876313131313,3.14767173984488,-0.678866787589492,-0.0416218097665932,-2.24115750845075,\ +-2,-0.0751524,-3.10123232323232,3.14766932773269,-0.678872212560166,-0.0416359792033403,-2.24117135055598,\ +-2,-0.0751524,-3.07370151515151,3.14766709470618,-0.678877234757519,-0.0416490966397305,-2.24118416496335,\ +-2,-0.0751524,-3.04617070707071,3.14766502153505,-0.678881897431475,-0.0416612750398855,-2.2411960620274,\ +-2,-0.0751524,-3.0186398989899,3.14766309164713,-0.678886237853684,-0.0416726117533306,-2.24120713684873,\ +-2,-0.0751524,-2.99110909090909,3.14766129068451,-0.678890288315972,-0.0416831911228109,-2.24121747182169,\ +-2,-0.0751524,-2.96357828282828,3.14765960614556,-0.678894076935129,-0.0416930865863555,-2.24122713868778,\ +-2,-0.0751524,-2.93604747474747,3.14765802709441,-0.678897628306541,-0.0417023623844444,-2.24123620020345,\ +-2,-0.0751524,-2.90851666666667,3.14765654392321,-0.678900964038728,-0.0417110749561953,-2.24124471150401,\ +-2,-0.0751524,-2.88098585858586,3.14765514815655,-0.678904103193393,-0.0417192740887152,-2.24125272122643,\ +-2,-0.0751524,-2.85345505050505,3.14765383228933,-0.6789070626499,-0.0417270038690731,-2.24126027243929,\ +-2,-0.0751524,-2.82592424242424,3.14765258965179,-0.678909857408888,-0.0417343034773355,-2.24126740341758,\ +-2,-0.0751524,-2.79839343434343,3.14765141429643,-0.678912500846602,-0.041741207850785,-2.24127414829145,\ +-2,-0.0751524,-2.77086262626263,3.14765030090286,-0.678915004928956,-0.0417477482430943,-2.2412805375926,\ +-2,-0.0751524,-2.74333181818182,3.14764924469718,-0.678917380392629,-0.041753952697334,-2.24128659871628,\ +-2,-0.0751524,-2.71580101010101,3.14764824138365,-0.678919636898983,-0.0417598464479198,-2.24129235631393,\ +-2,-0.0751524,-2.6882702020202,3.14764728708628,-0.67892178316538,-0.0417654522636503,-2.24129783262838,\ +-2,-0.0751524,-2.66073939393939,3.14764637829872,-0.67892382707772,-0.0417707907416646,-2.24130304778094,\ +-2,-0.0751524,-2.63320858585858,3.14764551184129,-0.678925775787292,-0.041775880560327,-2.2413080200185,\ +-2,-0.0751524,-2.60567777777778,3.14764468482381,-0.67892763579433,-0.0417807386975754,-2.24131276592676,\ +-2,-0.0751524,-2.57814696969697,3.14764389461329,-0.678929413020492,-0.0417853806201179,-2.24131730061515,\ +-2,-0.0751524,-2.55061616161616,3.14764313880606,-0.678931112871802,-0.0417898204479201,-2.24132163787744,\ +-2,-0.0751524,-2.52308535353535,3.14764241520327,-0.678932740293598,-0.0417940710976616,-2.24132579033191,\ +-2,-0.0751524,-2.49555454545454,3.14764172178953,-0.678934299818568,-0.0417981444082428,-2.24132976954398,\ +-2,-0.0751524,-2.46802373737374,3.14764105671421,-0.678935795608922,-0.0418020512509,-2.24133358613373,\ +-2,-0.0751524,-2.44049292929293,3.14764041827488,-0.678937231493482,-0.0418058016260929,-2.24133724987062,\ +-2,-0.0751524,-2.41296212121212,3.14763980490282,-0.678938611000396,-0.0418094047489774,-2.24134076975691,\ +-2,-0.0751524,-2.38543131313131,3.14763921515012,-0.678939937386103,-0.0418128691250062,-2.24134415410156,\ +-2,-0.0751524,-2.3579005050505,3.14763864767827,-0.678941213660977,-0.0418162026169608,-2.24134741058573,\ +-2,-0.0751524,-2.3303696969697,3.14763810124802,-0.678942442612149,-0.0418194125045256,-2.24135054632091,\ +-2,-0.0751524,-2.30283888888889,3.14763757471035,-0.678943626823823,-0.0418225055373565,-2.24135356790086,\ +-2,-0.0751524,-2.27530808080808,3.14763706699841,-0.678944768695409,-0.0418254879824577,-2.24135648144779,\ +-2,-0.0751524,-2.24777727272727,3.1476365771203,-0.678945870457754,-0.0418283656665652,-2.24135929265383,\ +-2,-0.0751524,-2.22024646464646,3.1476361041526,-0.678946934187697,-0.0418311440141421,-2.24136200681815,\ +-2,-0.0751524,-2.19271565656565,3.14763564723453,-0.678947961821117,-0.0418338280815045,-2.24136462888023,\ +-2,-0.0751524,-2.16518484848485,3.14763520556281,-0.678948955164701,-0.0418364225875329,-2.24136716344996,\ +-2,-0.0751524,-2.13765404040404,3.14763477838684,-0.678949915906554,-0.0418389319413584,-2.2413696148346,\ +-2,-0.0751524,-2.11012323232323,3.14763436500451,-0.678950845625754,-0.0418413602673674,-2.24137198706328,\ +-2,-0.0751524,-2.08259242424242,3.14763396475834,-0.678951745801019,-0.0418437114278236,-2.24137428390902,\ +-2,-0.0751524,-2.05506161616161,3.14763357703198,-0.678952617818571,-0.0418459890433649,-2.24137650890882,\ +-2,-0.0751524,-2.02753080808081,3.14763320124703,-0.678953462979229,-0.0418481965116085,-2.24137866538182,\ +-2,-0.0751524,-2,3.1476328368602,-0.67895428250491,-0.0418503370240618,-2.24138075644579,\ +-1.69897,-0.274457,-4.72555,3.14755604430286,-0.679126993117361,-0.0423014384670699,-2.24182143688725,\ +-1.69897,-0.274457,-4.69801919191919,3.14755417134952,-0.679131205490687,-0.0423124407306708,-2.24183218498494,\ +-1.69897,-0.274457,-4.67048838383838,3.14755216151914,-0.679135725707832,-0.042324247049047,-2.24184371856275,\ +-1.69897,-0.274457,-4.64295757575758,3.14754999923804,-0.679140588794905,-0.0423369489065861,-2.24185612699167,\ +-1.69897,-0.274457,-4.61542676767677,3.14754766647677,-0.679145835301106,-0.0423506522134373,-2.24186951373517,\ +-1.69897,-0.274457,-4.58789595959596,3.14754514224621,-0.679151512432078,-0.042365480265617,-2.241883999241,\ +-1.69897,-0.274457,-4.56036515151515,3.1475424019643,-0.679157675474207,-0.042381577465194,-2.24189972457535,\ +-1.69897,-0.274457,-4.53283434343434,3.14753941665285,-0.679164389601037,-0.0423991140384225,-2.24191685603203,\ +-1.69897,-0.274457,-4.50530353535354,3.14753615190878,-0.679171732186935,-0.0424182920787625,-2.24193559103591,\ +-1.69897,-0.274457,-4.47777272727273,3.14753256657237,-0.679179795802314,-0.0424393533701451,-2.24195616578541,\ +-1.69897,-0.274457,-4.45024191919192,3.14752861098289,-0.679188692136857,-0.0424625896339295,-2.24197886526274,\ +-1.69897,-0.274457,-4.42271111111111,3.14752422466438,-0.679198557204293,-0.0424883561232773,-2.2420040365143,\ +-1.69897,-0.274457,-4.3951803030303,3.14751933321188,-0.679209558345383,-0.0425170899141562,-2.24203210651905,\ +-1.69897,-0.274457,-4.36764949494949,3.14751384403624,-0.679221903798124,-0.0425493349016933,-2.24206360660748,\ +-1.69897,-0.274457,-4.34011868686869,3.14750764044745,-0.67923585600463,-0.0425857765563078,-2.24209920641477,\ +-1.69897,-0.274457,-4.31258787878788,3.14750057326708,-0.679251750475297,-0.0426272911948819,-2.24213976201383,\ +-1.69897,-0.274457,-4.28505707070707,3.14749244867568,-0.679270023120509,-0.0426750173681959,-2.24218638565348,\ +-1.69897,-0.274457,-4.25752626262626,3.14748301016435,-0.679291250842686,-0.0427304618829828,-2.24224054933136,\ +-1.69897,-0.274457,-4.22999545454545,3.14747191095935,-0.679316213554693,-0.0427956617873058,-2.24230424303722,\ +-1.69897,-0.274457,-4.20246464646465,3.14745867048725,-0.679345992092166,-0.0428734401069645,-2.24238022458144,\ +-1.69897,-0.274457,-4.17493383838384,3.14744260295373,-0.679382128843569,-0.0429678253938518,-2.24247242945141,\ +-1.69897,-0.274457,-4.14740303030303,3.14742269470582,-0.67942690356925,-0.0430847721354388,-2.24258667457855,\ +-1.69897,-0.274457,-4.11987222222222,3.14739738171194,-0.679483833860768,-0.0432334679005128,-2.24273193528745,\ +-1.69897,-0.274457,-4.09234141414141,3.14736411734667,-0.679558647216363,-0.0434288722950986,-2.24292282559872,\ +-1.69897,-0.274457,-4.06481060606061,3.14731845697903,-0.679661339851319,-0.0436970943525454,-2.24318485139472,\ +-1.69897,-0.274457,-4.0372797979798,3.147251884825,-0.679811064224282,-0.0440881582237093,-2.24356688120655,\ +-1.69897,-0.274457,-4.00974898989899,3.14714576819008,-0.680049726272301,-0.0447115176845081,-2.24417584029244,\ +-1.69897,-0.274457,-3.98221818181818,3.14694998627765,-0.680490050376266,-0.0458615966279403,-2.24529935098913,\ +-1.69897,-0.274457,-3.95468737373737,3.14646775373194,-0.681574617438431,-0.0486943685105304,-2.24806668233584,\ +-1.69897,-0.274457,-3.92715656565657,3.14335719612032,-0.688570429646832,-0.066966673480082,-2.26591687444971,\ +-1.69897,-0.274457,-3.89962575757576,3.15007385554002,-0.673464299545753,-0.0275110952149583,-2.22737276886643,\ +-1.69897,-0.274457,-3.87209494949495,3.14856460477843,-0.676858686090509,-0.0363768658049454,-2.23603372918492,\ +-1.69897,-0.274457,-3.84456414141414,3.14820174396396,-0.677674779676534,-0.0385084140002606,-2.23811603597926,\ +-1.69897,-0.274457,-3.81703333333333,3.1480386386499,-0.67804161234443,-0.0394665412599553,-2.23905202931363,\ +-1.69897,-0.274457,-3.78950252525252,3.14794594281998,-0.678250090276546,-0.0400110630740884,-2.23958397200004,\ +-1.69897,-0.274457,-3.76197171717172,3.14788615841016,-0.678384548645857,-0.0403622537945584,-2.2399270497803,\ +-1.69897,-0.274457,-3.73444090909091,3.14784440022176,-0.678478465068814,-0.0406075533353105,-2.24016668259812,\ +-1.69897,-0.274457,-3.7069101010101,3.14781358345018,-0.678547773653851,-0.040788579864481,-2.24034352719045,\ +-1.69897,-0.274457,-3.67937929292929,3.14778990593374,-0.678601025668214,-0.0409276683673889,-2.24047940257683,\ +-1.69897,-0.274457,-3.65184848484848,3.14777114430948,-0.678643221575342,-0.0410378795137905,-2.24058706770937,\ +-1.69897,-0.274457,-3.62431767676768,3.14775591161154,-0.678677480736389,-0.041127360737702,-2.24067448180628,\ +-1.69897,-0.274457,-3.59678686868687,3.14774329777943,-0.678705849926639,-0.0412014579948207,-2.24074686732507,\ +-1.69897,-0.274457,-3.56925606060606,3.14773268090492,-0.678729727851313,-0.0412638245519399,-2.24080779313755,\ +-1.69897,-0.274457,-3.54172525252525,3.14772362155053,-0.678750102829033,-0.041317041790422,-2.24085978099196,\ +-1.69897,-0.274457,-3.51419444444444,3.1477158004007,-0.67876769301775,-0.0413629854611714,-2.24090466330706,\ +-1.69897,-0.274457,-3.48666363636364,3.14770897984258,-0.678783032821644,-0.041403051370115,-2.24094380364393,\ +-1.69897,-0.274457,-3.45913282828283,3.14770297940565,-0.678796528128671,-0.0414382996527,-2.24097823764757,\ +-1.69897,-0.274457,-3.43160202020202,3.14769765955851,-0.678808492752421,-0.0414695499560919,-2.24100876603028,\ +-1.69897,-0.274457,-3.40407121212121,3.14769291072337,-0.678819173139391,-0.041497445971897,-2.24103601761361,\ +-1.69897,-0.274457,-3.3765404040404,3.14768864564751,-0.678828765525547,-0.0415225002472226,-2.24106049310417,\ +-1.69897,-0.274457,-3.3490095959596,3.14768479399341,-0.678837428103807,-0.0415451259648814,-2.24108259613975,\ +-1.69897,-0.274457,-3.32147878787879,3.14768129842911,-0.67884528981687,-0.041565659909245,-2.24110265572459,\ +-1.69897,-0.274457,-3.29394797979798,3.14767811175507,-0.678852456819036,-0.0415843793438738,-2.24112094271711,\ +-1.69897,-0.274457,-3.26641717171717,3.14767519476049,-0.678859017297518,-0.0416015146042216,-2.24113768213175,\ +-1.69897,-0.274457,-3.23888636363636,3.14767251460176,-0.678865045119377,-0.0416172586230733,-2.24115306244428,\ +-1.69897,-0.274457,-3.21135555555555,3.14767004356047,-0.678870602624829,-0.0416317742263341,-2.24116724271914,\ +-1.69897,-0.274457,-3.18382474747475,3.1476677580812,-0.678875742791258,-0.0416451997851943,-2.24118035813098,\ +-1.69897,-0.274457,-3.15629393939394,3.14766563801828,-0.678880510927344,-0.0416576536410331,-2.24119252428733,\ +-1.69897,-0.274457,-3.12876313131313,3.14766366604039,-0.678884946012207,-0.0416692376030927,-2.24120384064554,\ +-1.69897,-0.274457,-3.10123232323232,3.14766182715565,-0.678889081763394,-0.0416800397379536,-2.24121439323771,\ +-1.69897,-0.274457,-3.07370151515151,3.14766010832978,-0.678892947495677,-0.0416901366126442,-2.24122425686211,\ +-1.69897,-0.274457,-3.04617070707071,3.14765849817671,-0.678896568816984,-0.0416995951122912,-2.24123349685871,\ +-1.69897,-0.274457,-3.0186398989899,3.14765698670599,-0.678899968196342,-0.0417084739235686,-2.24124217055846,\ +-1.69897,-0.274457,-2.99110909090909,3.14765556511534,-0.67890316543052,-0.041716824753506,-2.2412503284739,\ +-1.69897,-0.274457,-2.96357828282828,3.14765422561916,-0.678906178029842,-0.0417246933371472,-2.24125801528351,\ +-1.69897,-0.274457,-2.93604747474747,3.14765296130578,-0.678909021538983,-0.0417321202755324,-2.24126527065043,\ +-1.69897,-0.274457,-2.90851666666667,3.14765176601823,-0.678911709805296,-0.0417391417364335,-2.24127212990689,\ +-1.69897,-0.274457,-2.88098585858586,3.14765063425396,-0.678914255204296,-0.0417457900433651,-2.24127862462971,\ +-1.69897,-0.274457,-2.85345505050505,3.14764956108018,-0.678916668830163,-0.0417520941731217,-2.24128478312628,\ +-1.69897,-0.274457,-2.82592424242424,3.14764854206189,-0.678918960657385,-0.0417580801779886,-2.24129063084702,\ +-1.69897,-0.274457,-2.79839343434343,3.14764757320071,-0.67892113967854,-0.0417637715456115,-2.24129619073701,\ +-1.69897,-0.274457,-2.77086262626263,3.14764665088242,-0.678923214022225,-0.0417691895070011,-2.24130148353678,\ +-1.69897,-0.274457,-2.74333181818182,3.1476457718319,-0.67892519105438,-0.0417743533011922,-2.24130652804094,\ +-1.69897,-0.274457,-2.71580101010101,3.14764493307424,-0.678927077465676,-0.0417792804035065,-2.24131134132109,\ +-1.69897,-0.274457,-2.6882702020202,3.14764413190119,-0.678928879347175,-0.0417839867231333,-2.24131593891891,\ +-1.69897,-0.274457,-2.66073939393939,3.14764336584186,-0.678930602256024,-0.0417884867747294,-2.24132033501374,\ +-1.69897,-0.274457,-2.63320858585858,3.14764263263731,-0.67893225127269,-0.041792793827942,-2.2413245425687,\ +-1.69897,-0.274457,-2.60567777777778,3.14764193021829,-0.678933831051017,-0.0417969200380947,-2.24132857345829,\ +-1.69897,-0.274457,-2.57814696969697,3.14764125668577,-0.678935345862072,-0.0418008765607533,-2.24133243858038,\ +-1.69897,-0.274457,-2.55061616161616,3.14764061029374,-0.678936799632705,-0.0418046736524402,-2.24133614795455,\ +-1.69897,-0.274457,-2.52308535353535,3.14763998943412,-0.678938195979555,-0.0418083207594148,-2.24133971080884,\ +-1.69897,-0.274457,-2.49555454545454,3.14763939262342,-0.678939538239078,-0.0418118265961366,-2.2413431356564,\ +-1.69897,-0.274457,-2.46802373737374,3.14763881849089,-0.678940829494162,-0.0418151992147855,-2.24134643036338,\ +-1.69897,-0.274457,-2.44049292929293,3.14763826576802,-0.678942072597779,-0.0418184460670019,-2.24134960220929,\ +-1.69897,-0.274457,-2.41296212121212,3.14763773327916,-0.678943270194009,-0.0418215740588492,-2.24135265794066,\ +-1.69897,-0.274457,-2.38543131313131,3.14763721993319,-0.678944424736829,-0.041824589599847,-2.24135560381894,\ +-1.69897,-0.274457,-2.3579005050505,3.14763672471608,-0.678945538506892,-0.0418274986468087,-2.2413584456633,\ +-1.69897,-0.274457,-2.3303696969697,3.14763624668413,-0.678946613626561,-0.0418303067431186,-2.24136118888912,\ +-1.69897,-0.274457,-2.30283888888889,3.14763578495809,-0.678947652073407,-0.0418330190539862,-2.24136383854225,\ +-1.69897,-0.274457,-2.27530808080808,3.14763533871762,-0.678948655692357,-0.0418356403981531,-2.24136639933012,\ +-1.69897,-0.274457,-2.24777727272727,3.14763490719652,-0.678949626206623,-0.0418381752764674,-2.24136887564961,\ +-1.69897,-0.274457,-2.22024646464646,3.14763448967834,-0.678950565227583,-0.0418406278976698,-2.24137127161223,\ +-1.69897,-0.274457,-2.19271565656565,3.14763408549235,-0.678951474263706,-0.0418430022017152,-2.24137359106691,\ +-1.69897,-0.274457,-2.16518484848485,3.14763369401002,-0.67895235472863,-0.0418453018808898,-2.24137583762065,\ +-1.69897,-0.274457,-2.13765404040404,3.1476333146417,-0.678953207948519,-0.0418475303989729,-2.24137801465721,\ +-1.69897,-0.274457,-2.11012323232323,3.14763294683363,-0.678954035168706,-0.0418496910086444,-2.24138012535412,\ +-1.69897,-0.274457,-2.08259242424242,3.14763259006539,-0.678954837559764,-0.0418517867673237,-2.24138217269819,\ +-1.69897,-0.274457,-2.05506161616161,3.14763224384728,-0.678955616223043,-0.0418538205516078,-2.24138415949953,\ +-1.69897,-0.274457,-2.02753080808081,3.1476319077181,-0.678956372195704,-0.0418557950704416,-2.24138608840454,\ +-1.69897,-0.274457,-2,3.14763158124324,-0.67895710645532,-0.0418577128771585,-2.24138796190755,\ +-1.69897,-0.271559,-4.72555,3.1475558531769,-0.679127422969976,-0.0423025611956139,-2.24182253367937,\ +-1.69897,-0.271559,-4.69801919191919,3.14755396648479,-0.679131666242498,-0.0423136441645763,-2.24183336061803,\ +-1.69897,-0.271559,-4.67048838383838,3.14755194137924,-0.679136220814356,-0.0423255402137515,-2.24184498185375,\ +-1.69897,-0.271559,-4.64295757575758,3.14754976204859,-0.679141122246794,-0.0423383422252414,-2.24185748812293,\ +-1.69897,-0.271559,-4.61542676767677,3.14754741017755,-0.6791464117319,-0.042352157788337,-2.24187098452943,\ +-1.69897,-0.271559,-4.58789595959596,3.14754486443119,-0.679152137253066,-0.0423671122304681,-2.24188559350544,\ +-1.69897,-0.271559,-4.56036515151515,3.14754209980592,-0.679158355044739,-0.0423833524299395,-2.24190145853621,\ +-1.69897,-0.271559,-4.53283434343434,3.14753908680546,-0.679165131445633,-0.0424010516562839,-2.24191874888853,\ +-1.69897,-0.271559,-4.50530353535354,3.14753579038436,-0.679172545274879,-0.0424204157765482,-2.24193766567365,\ +-1.69897,-0.271559,-4.47777272727273,3.14753216857859,-0.679180690911837,-0.0424416912994195,-2.24195844970561,\ +-1.69897,-0.271559,-4.45024191919192,3.14752817070961,-0.679189682335263,-0.0424651759250911,-2.24198139180737,\ +-1.69897,-0.271559,-4.42271111111111,3.14752373499839,-0.67919965848958,-0.0424912325613585,-2.2420068465031,\ +-1.69897,-0.271559,-4.3951803030303,3.14751878534999,-0.679210790516389,-0.042520308211575,-2.24203525046982,\ +-1.69897,-0.271559,-4.36764949494949,3.14751322695189,-0.679223291654174,-0.0425529598316141,-2.24206714779703,\ +-1.69897,-0.271559,-4.34011868686869,3.14750694014175,-0.679237431030005,-0.0425898903522706,-2.24210322517696,\ +-1.69897,-0.271559,-4.31258787878788,3.14749977169533,-0.679253553253486,-0.0426319998565597,-2.24214436189959,\ +-1.69897,-0.271559,-4.28505707070707,3.14749152217278,-0.679272106875625,-0.0426804599112218,-2.24219170246703,\ +-1.69897,-0.271559,-4.25752626262626,3.14748192707309,-0.679293686773478,-0.042736824270792,-2.24224676474014,\ +-1.69897,-0.271559,-4.22999545454545,3.14747062794806,-0.67931909911645,-0.0428031985625745,-2.24231160570365,\ +-1.69897,-0.271559,-4.20246464646465,3.14745712662654,-0.679349464318352,-0.0428825091862828,-2.24238908415381,\ +-1.69897,-0.271559,-4.17493383838384,3.14744070978388,-0.679386386684906,-0.0429789464149838,-2.24248329356319,\ +-1.69897,-0.271559,-4.14740303030303,3.14742031873025,-0.679432247266742,-0.0430987292954244,-2.24260030931087,\ +-1.69897,-0.271559,-4.11987222222222,3.14739431161115,-0.679490738683411,-0.0432515025505713,-2.24274955331477,\ +-1.69897,-0.271559,-4.09234141414141,3.14735999774631,-0.679567912420258,-0.0434530720057471,-2.2429464662661,\ +-1.69897,-0.271559,-4.06481060606061,3.14731264096665,-0.679674420377553,-0.0437312592725568,-2.24321822706281,\ +-1.69897,-0.271559,-4.0372797979798,3.14724305975594,-0.679830912281621,-0.0441399992031366,-2.2436175245952,\ +-1.69897,-0.271559,-4.00974898989899,3.14713081275915,-0.680083361844896,-0.0447993701628155,-2.24426166326978,\ +-1.69897,-0.271559,-3.98221818181818,3.14691930621118,-0.680559051504156,-0.0460418201122892,-2.24547541108796,\ +-1.69897,-0.271559,-3.95468737373737,3.14637252376616,-0.681788794779087,-0.0492537765634418,-2.24861316737049,\ +-1.69897,-0.271559,-3.92715656565657,3.14164683027506,-0.692417134885919,-0.0770138515864548,-2.27573195030904,\ +-1.69897,-0.271559,-3.89962575757576,3.14972245743425,-0.674254612880345,-0.0295753081813757,-2.22938929595897,\ +-1.69897,-0.271559,-3.87209494949495,3.14850674850758,-0.676988807971054,-0.0367167300857048,-2.23636574218023,\ +-1.69897,-0.271559,-3.84456414141414,3.14817896490932,-0.677726011001719,-0.038642224681548,-2.23824675546822,\ +-1.69897,-0.271559,-3.81703333333333,3.14802654573902,-0.678068809954667,-0.0395375784767772,-2.23912142548284,\ +-1.69897,-0.271559,-3.78950252525252,3.14793846134628,-0.678266916515324,-0.0400550113902004,-2.23962690505567,\ +-1.69897,-0.271559,-3.76197171717172,3.1478810774002,-0.678395976111916,-0.0403921011001498,-2.23995620757619,\ +-1.69897,-0.271559,-3.73444090909091,3.1478407255933,-0.678486729506846,-0.0406291391537445,-2.24018776975743,\ +-1.69897,-0.271559,-3.7069101010101,3.14781080288241,-0.67855402730109,-0.0408049137148015,-2.24035948370861,\ +-1.69897,-0.271559,-3.67937929292929,3.14778772879537,-0.678605922170093,-0.0409404575007949,-2.24049189626542,\ +-1.69897,-0.271559,-3.65184848484848,3.14776939353446,-0.678647159162996,-0.041048164066937,-2.24059711467662,\ +-1.69897,-0.271559,-3.62431767676768,3.14775447319731,-0.678680715807736,-0.0411358103942295,-2.24068273626528,\ +-1.69897,-0.271559,-3.59678686868687,3.14774209502046,-0.678708554996573,-0.0412085233449681,-2.24075376945688,\ +-1.69897,-0.271559,-3.56925606060606,3.14773166029977,-0.678732023247453,-0.0412698198784351,-2.24081364996458,\ +-1.69897,-0.271559,-3.54172525252525,3.14772274464775,-0.6787520750308,-0.0413221929681662,-2.24086481317113,\ +-1.69897,-0.271559,-3.51419444444444,3.14771503885627,-0.678769405772362,-0.0413674589910035,-2.24090903349282,\ +-1.69897,-0.271559,-3.48666363636364,3.1477083123046,-0.678784534150675,-0.0414069726791917,-2.24094763436592,\ +-1.69897,-0.271559,-3.45913282828283,3.14770238948404,-0.678797854894262,-0.0414417650209494,-2.24098162296153,\ +-1.69897,-0.271559,-3.43160202020202,3.14769713446322,-0.678809673720134,-0.0414726345160517,-2.24101177933309,\ +-1.69897,-0.271559,-3.40407121212121,3.14769244032755,-0.678820231084997,-0.0415002092114151,-2.24103871701887,\ +-1.69897,-0.271559,-3.3765404040404,3.14768822182884,-0.678829718716636,-0.0415249898792686,-2.24106292522264,\ +-1.69897,-0.271559,-3.3490095959596,3.14768441016154,-0.678838291362424,-0.0415473807030359,-2.24108479879066,\ +-1.69897,-0.271559,-3.32147878787879,3.14768094918082,-0.67884607529516,-0.0415677114935964,-2.24110465991481,\ +-1.69897,-0.271559,-3.29394797979798,3.14767779261851,-0.678853174574414,-0.0415862540432991,-2.24112277410866,\ +-1.69897,-0.271559,-3.26641717171717,3.14767490200284,-0.678859675725306,-0.0416032343464035,-2.24113936214575,\ +-1.69897,-0.271559,-3.23888636363636,3.14767224508262,-0.678865651282495,-0.0416188418555903,-2.24115460910216,\ +-1.69897,-0.271559,-3.21135555555555,3.14766979461883,-0.678871162507999,-0.041633236580635,-2.24116867129125,\ +-1.69897,-0.271559,-3.18382474747475,3.14766752744738,-0.678876261499166,-0.0416465545941603,-2.24118168164218,\ +-1.69897,-0.271559,-3.15629393939394,3.14766542374451,-0.67888099284064,-0.0416589123464526,-2.24119375391511,\ +-1.69897,-0.271559,-3.12876313131313,3.14766346644569,-0.678885394911472,-0.0416704100794315,-2.24120498603623,\ +-1.69897,-0.271559,-3.10123232323232,3.1476616407817,-0.678889500928473,-0.0416811345518148,-2.24121546276002,\ +-1.69897,-0.271559,-3.07370151515151,3.14765993390522,-0.678893339785923,-0.0416911612323426,-2.24122525781182,\ +-1.69897,-0.271559,-3.04617070707071,3.14765833458812,-0.678896936736538,-0.0417005560783813,-2.24123443562529,\ +-1.69897,-0.271559,-3.0186398989899,3.14765683297411,-0.678900313947634,-0.0417093769885598,-2.24124305276153,\ +-1.69897,-0.271559,-2.99110909090909,3.14765542037544,-0.678903490958381,-0.0417176749970706,-2.24125115907577,\ +-1.69897,-0.271559,-2.96357828282828,3.14765408910478,-0.678906485058074,-0.0417254952616905,-2.24125879868261,\ +-1.69897,-0.271559,-2.93604747474747,3.14765283233514,-0.678909311600913,-0.0417328778859258,-2.24126601075908,\ +-1.69897,-0.271559,-2.90851666666667,3.14765164398289,-0.678911984269359,-0.0417398586068864,-2.24127283021675,\ +-1.69897,-0.271559,-2.88098585858586,3.1476505186092,-0.678914515295627,-0.0417464693737964,-2.24127928826677,\ +-1.69897,-0.271559,-2.85345505050505,3.14764945133684,-0.678916915648872,-0.0417527388369001,-2.24128541289752,\ +-1.69897,-0.271559,-2.82592424242424,3.1476484377795,-0.67891919519411,-0.041758692762551,-2.24129122928012,\ +-1.69897,-0.271559,-2.79839343434343,3.14764747398158,-0.67892136282773,-0.0417643543871635,-2.2412967601142,\ +-1.69897,-0.271559,-2.77086262626263,3.14764655636655,-0.678923426593539,-0.0417697447202868,-2.24130202592396,\ +-1.69897,-0.271559,-2.74333181818182,3.14764568169261,-0.678925393782503,-0.0417748828051253,-2.24130704531268,\ +-1.69897,-0.271559,-2.71580101010101,3.14764484701445,-0.678927271018797,-0.0417797859433263,-2.24131183518232,\ +-1.69897,-0.271559,-2.6882702020202,3.14764404965009,-0.678929064334347,-0.0417844698896166,-2.24131641092365,\ +-1.69897,-0.271559,-2.66073939393939,3.14764328715209,-0.678930779233557,-0.0417889490209086,-2.24132078658147,\ +-1.69897,-0.271559,-2.63320858585858,3.14764255728248,-0.678932420749752,-0.0417932364836975,-2.24132497499856,\ +-1.69897,-0.271559,-2.60567777777778,3.14764185799083,-0.678933993494512,-0.0417973443229312,-2.24132898794162,\ +-1.69897,-0.271559,-2.57814696969697,3.14764118739493,-0.678935501700935,-0.0418012835950172,-2.24133283621166,\ +-1.69897,-0.271559,-2.55061616161616,3.14764054376399,-0.678936949261699,-0.0418050644671975,-2.24133652974101,\ +-1.69897,-0.271559,-2.52308535353535,3.14763992550366,-0.678938339762595,-0.0418086963051696,-2.24134007767902,\ +-1.69897,-0.271559,-2.49555454545454,3.14763933114285,-0.678939676512188,-0.0418121877505493,-2.2413434884677,\ +-1.69897,-0.271559,-2.46802373737374,3.14763875932204,-0.678940962568099,-0.0418155467895189,-2.24134676990871,\ +-1.69897,-0.271559,-2.44049292929293,3.1476382087829,-0.678942200760362,-0.0418187808138106,-2.24134992922304,\ +-1.69897,-0.271559,-2.41296212121212,3.1476376783591,-0.6789433937122,-0.0418218966750066,-2.24135297310398,\ +-1.69897,-0.271559,-2.38543131313131,3.14763716696792,-0.678944543858586,-0.0418249007329919,-2.24135590776451,\ +-1.69897,-0.271559,-2.3579005050505,3.14763667360306,-0.678945653462828,-0.0418277988992859,-2.24135873897958,\ +-1.69897,-0.271559,-2.3303696969697,3.14763619732788,-0.678946724631443,-0.041830596675869,-2.24136147212406,\ +-1.69897,-0.271559,-2.30283888888889,3.14763573726956,-0.678947759327486,-0.0418332991900445,-2.24136411220681,\ +-1.69897,-0.271559,-2.27530808080808,3.14763529261369,-0.678948759382579,-0.0418359112257977,-2.24136666390131,\ +-1.69897,-0.271559,-2.24777727272727,3.14763486259951,-0.67894972650771,-0.0418384372520583,-2.24136913157324,\ +-1.69897,-0.271559,-2.22024646464646,3.14763444651555,-0.678950662303021,-0.0418408814482166,-2.24137151930544,\ +-1.69897,-0.271559,-2.19271565656565,3.1476340436957,-0.678951568266631,-0.041843247727197,-2.24137383092045,\ +-1.69897,-0.271559,-2.16518484848485,3.14763365351566,-0.678952445802642,-0.0418455397563629,-2.24137607000091,\ +-1.69897,-0.271559,-2.13765404040404,3.14763327538968,-0.678953296228402,-0.0418477609764807,-2.24137823990808,\ +-1.69897,-0.271559,-2.11012323232323,3.14763290876768,-0.678954120781099,-0.0418499146189563,-2.24138034379876,\ +-1.69897,-0.271559,-2.08259242424242,3.14763255313253,-0.678954920623768,-0.0418520037215188,-2.24138238464047,\ +-1.69897,-0.271559,-2.05506161616161,3.14763220799765,-0.678955696850774,-0.0418540311425169,-2.24138436522554,\ +-1.69897,-0.271559,-2.02753080808081,3.14763187290477,-0.678956450492792,-0.0418559995739678,-2.24138628818378,\ +-1.69897,-0.271559,-2,3.14763154742189,-0.678957182521381,-0.0418579115534813,-2.2413881559942,\ +-1.69897,-0.271258,-4.72555,3.14755583324679,-0.67912746779386,-0.0423026782707507,-2.24182264804993,\ +-1.69897,-0.271258,-4.69801919191919,3.14755394511906,-0.679131714295196,-0.0423137696730285,-2.24183348322709,\ +-1.69897,-0.271258,-4.67048838383838,3.14755191841698,-0.679136272457739,-0.0423256751006751,-2.24184511362462,\ +-1.69897,-0.271258,-4.64295757575758,3.14754973730393,-0.679141177898888,-0.0423384875824916,-2.24185763012226,\ +-1.69897,-0.271258,-4.61542676767677,3.1475473834346,-0.679146471878239,-0.0423523148840744,-2.24187113799606,\ +-1.69897,-0.271258,-4.58789595959596,3.14754483543775,-0.679152202460882,-0.0423672825462373,-2.24188575988671,\ +-1.69897,-0.271258,-4.56036515151515,3.14754206826548,-0.679158425980898,-0.0423835377075129,-2.24190163953364,\ +-1.69897,-0.271258,-4.53283434343434,3.14753905236704,-0.679165208899501,-0.0424012539574099,-2.24191894651625,\ +-1.69897,-0.271258,-4.50530353535354,3.14753575262941,-0.679172630187815,-0.0424206375599502,-2.24193788233358,\ +-1.69897,-0.271258,-4.47777272727273,3.14753212700389,-0.679180784415603,-0.042441935521151,-2.24195868828552,\ +-1.69897,-0.271258,-4.45024191919192,3.14752812470473,-0.679189785802738,-0.0424654461709465,-2.24198165581021,\ +-1.69897,-0.271258,-4.42271111111111,3.14752368381556,-0.679199773602538,-0.0424915332239545,-2.24200714022001,\ +-1.69897,-0.271258,-4.3951803030303,3.14751872806317,-0.679210919357539,-0.0425206447307308,-2.24203557921496,\ +-1.69897,-0.271258,-4.36764949494949,3.1475131624003,-0.679223436834179,-0.0425533390260867,-2.24206751823164,\ +-1.69897,-0.271258,-4.34011868686869,3.14750686685049,-0.679237595866005,-0.0425903208860735,-2.2421036457649,\ +-1.69897,-0.271258,-4.31258787878788,3.14749968776145,-0.679253742025313,-0.0426324929081591,-2.24214484356109,\ +-1.69897,-0.271258,-4.28505707070707,3.14749142509795,-0.679272325202179,-0.042681030156573,-2.242192259539,\ +-1.69897,-0.271258,-4.25752626262626,3.14748181351111,-0.67929394218053,-0.0427374913663923,-2.24224741642501,\ +-1.69897,-0.271258,-4.22999545454545,3.14747049331214,-0.679319401919922,-0.0428039894524994,-2.24231237832304,\ +-1.69897,-0.271258,-4.20246464646465,3.14745696445619,-0.679349829048245,-0.0428834618213268,-2.2423900147818,\ +-1.69897,-0.271258,-4.17493383838384,3.14744051068041,-0.679386834479358,-0.042980116005671,-2.24248443613488,\ +-1.69897,-0.271258,-4.14740303030303,3.14742006847472,-0.679432810104947,-0.0431001993679589,-2.2426017454229,\ +-1.69897,-0.271258,-4.11987222222222,3.14739398762581,-0.67949146734396,-0.0432534057331386,-2.24275141253147,\ +-1.69897,-0.271258,-4.09234141414141,3.1473595619111,-0.679568892637199,-0.0434556322263918,-2.24294896734248,\ +-1.69897,-0.271258,-4.06481060606061,3.14731202352005,-0.679675809048335,-0.0437348863304707,-2.2432217703312,\ +-1.69897,-0.271258,-4.0372797979798,3.14724211808627,-0.67983303014762,-0.0441455308401086,-2.24362292844451,\ +-1.69897,-0.271258,-4.00974898989899,3.14712920389358,-0.680086980270483,-0.0448088210991559,-2.24427089587779,\ +-1.69897,-0.271258,-3.98221818181818,3.14691595512442,-0.680566588279411,-0.0460615053542394,-2.24549464157647,\ +-1.69897,-0.271258,-3.95468737373737,3.14636171383722,-0.681813106893608,-0.0493172771774843,-2.24867520104177,\ +-1.69897,-0.271258,-3.92715656565657,3.14138686352701,-0.693001814154673,-0.0785409706099247,-2.27722379099335,\ +-1.69897,-0.271258,-3.89962575757576,3.14969161984457,-0.674323968286429,-0.0297564570020523,-2.22956626001773,\ +-1.69897,-0.271258,-3.87209494949495,3.14850113845587,-0.677001425280586,-0.0367496851337796,-2.23639793592592,\ +-1.69897,-0.271258,-3.84456414141414,3.1481766989655,-0.677731107231858,-0.0386555354835705,-2.23825975877426,\ +-1.69897,-0.271258,-3.81703333333333,3.14802532863899,-0.678071547278441,-0.039544728070465,-2.23912840991207,\ +-1.69897,-0.271258,-3.78950252525252,3.14793770329692,-0.678268621409321,-0.0400594643889605,-2.23963125518465,\ +-1.69897,-0.271258,-3.76197171717172,3.14788056032848,-0.678397139034179,-0.0403951385273473,-2.23995917483507,\ +-1.69897,-0.271258,-3.73444090909091,3.14784035049983,-0.67848757311231,-0.0406313425599908,-2.24018992226227,\ +-1.69897,-0.271258,-3.7069101010101,3.14781051840997,-0.678554667094982,-0.0408065847872676,-2.24036111617724,\ +-1.69897,-0.271258,-3.67937929292929,3.14778750567063,-0.678606423989685,-0.0409417681993054,-2.24049317668518,\ +-1.69897,-0.271258,-3.65184848484848,3.14776921385799,-0.678647563265075,-0.0410492195378697,-2.24059814576486,\ +-1.69897,-0.271258,-3.62431767676768,3.14775432541179,-0.67868104818537,-0.0411366785286574,-2.24068358434473,\ +-1.69897,-0.271258,-3.59678686868687,3.1477419713317,-0.678708833179306,-0.0412092499281835,-2.24075447925513,\ +-1.69897,-0.271258,-3.56925606060606,3.14773155526102,-0.678732259485278,-0.041270436906091,-2.24081425273813,\ +-1.69897,-0.271258,-3.54172525252525,3.14772265433819,-0.678752278141857,-0.0413227234722856,-2.24086533141995,\ +-1.69897,-0.271258,-3.51419444444444,3.1477149603818,-0.678769582265681,-0.0413679199724617,-2.24090948382503,\ +-1.69897,-0.271258,-3.48666363636364,3.14770824348247,-0.678784688935337,-0.0414073769599848,-2.24094802930732,\ +-1.69897,-0.271258,-3.45913282828283,3.14770232863705,-0.678797991742408,-0.0414421224535075,-2.24098197213696,\ +-1.69897,-0.271258,-3.43160202020202,3.14769708028139,-0.67880979557802,-0.0414729527956744,-2.24101209026006,\ +-1.69897,-0.271258,-3.40407121212121,3.1476923917728,-0.678820340287243,-0.041500494435872,-2.24103899565429,\ +-1.69897,-0.271258,-3.3765404040404,3.14768817806803,-0.678829817137078,-0.0415252469428233,-2.2410631763477,\ +-1.69897,-0.271258,-3.3490095959596,3.1476843705182,-0.678838380522438,-0.041547613579349,-2.24108502628724,\ +-1.69897,-0.271258,-3.32147878787879,3.14768091310003,-0.678846156442789,-0.0415679234424243,-2.24110486696735,\ +-1.69897,-0.271258,-3.29394797979798,3.14767775964079,-0.678853248743106,-0.0415864477639037,-2.24112296335408,\ +-1.69897,-0.271258,-3.26641717171717,3.14767487174442,-0.678859743778136,-0.0416034120930377,-2.24113953578622,\ +-1.69897,-0.271258,-3.23888636363636,3.14767221722051,-0.678865713945876,-0.0416190055255639,-2.24115476899116,\ +-1.69897,-0.271258,-3.21135555555555,3.14766976887926,-0.6788712203977,-0.0416333877822645,-2.24116881899994,\ +-1.69897,-0.271258,-3.18382474747475,3.14766750359672,-0.678876315140593,-0.041646694699768,-2.24118181851118,\ +-1.69897,-0.271258,-3.15629393939394,3.1476654015822,-0.678881042684843,-0.0416590425341167,-2.24119388109528,\ +-1.69897,-0.271258,-3.12876313131313,3.14766344579863,-0.678885441347832,-0.0416705313661757,-2.24120510452109,\ +-1.69897,-0.271258,-3.10123232323232,3.14766162149962,-0.678889544294895,-0.0416812478202178,-2.24121557341179,\ +-1.69897,-0.271258,-3.07370151515151,3.14765991585713,-0.678893380377074,-0.0416912672520421,-2.24122536138234,\ +-1.69897,-0.271258,-3.04617070707071,3.14765831765923,-0.678896974810549,-0.0417006555235785,-2.24123453277318,\ +-1.69897,-0.271258,-3.0186398989899,3.14765681706344,-0.678900349731586,-0.0417094704523669,-2.24124314406621,\ +-1.69897,-0.271258,-2.99110909090909,3.14765540539384,-0.678903524652835,-0.0417177630033441,-2.241251245049,\ +-1.69897,-0.271258,-2.96357828282828,3.14765407497316,-0.678906516840846,-0.0417255782748531,-2.24125887977806,\ +-1.69897,-0.271258,-2.93604747474747,3.14765281898318,-0.678909341630196,-0.041732956319162,-2.24126608738042,\ +-1.69897,-0.271258,-2.90851666666667,3.14765163134781,-0.678912012686359,-0.041739932829019,-2.24127290272426,\ +-1.69897,-0.271258,-2.88098585858586,3.14765050663476,-0.67891454222679,-0.0417465397150828,-2.24127935698309,\ +-1.69897,-0.271258,-2.85345505050505,3.14764943997255,-0.678916941207758,-0.0417528055939462,-2.24128547811239,\ +-1.69897,-0.271258,-2.82592424242424,3.1476484269799,-0.678919219482991,-0.041758756202489,-2.24129129125452,\ +-1.69897,-0.271258,-2.79839343434343,3.14764746370559,-0.678921385938971,-0.0417644147512253,-2.24129681908378,\ +-1.69897,-0.271258,-2.77086262626263,3.147646546577,-0.678923448610751,-0.0417698022268672,-2.24130208210206,\ +-1.69897,-0.271258,-2.74333181818182,3.14764567235577,-0.678925414781571,-0.0417749376524234,-2.24130709889293,\ +-1.69897,-0.271258,-2.71580101010101,3.14764483809962,-0.678927291068743,-0.0417798383116259,-2.24131188634084,\ +-1.69897,-0.271258,-2.6882702020202,3.14764404112929,-0.678929083498098,-0.041784519943266,-2.241316459821,\ +-1.69897,-0.271258,-2.66073939393939,3.14764327899976,-0.678930797568595,-0.0417889969100437,-2.2413208333643,\ +-1.69897,-0.271258,-2.63320858585858,3.14764254947524,-0.678932438308689,-0.0417932823457441,-2.24132501980114,\ +-1.69897,-0.271258,-2.60567777777778,3.14764185050719,-0.678934010325602,-0.0417973882839237,-2.24132903088707,\ +-1.69897,-0.271258,-2.57814696969697,3.1476411802152,-0.678935517848517,-0.0418013257707541,-2.24133287741308,\ +-1.69897,-0.271258,-2.55061616161616,3.14764053687004,-0.678936964766578,-0.0418051049642598,-2.24133656930254,\ +-1.69897,-0.271258,-2.52308535353535,3.14763991887875,-0.678938354662389,-0.0418087352218202,-2.24134011569666,\ +-1.69897,-0.271258,-2.49555454545454,3.14763932477153,-0.67893969084164,-0.0418122251775292,-2.24134352503007,\ +-1.69897,-0.271258,-2.46802373737374,3.14763875319002,-0.678940976359342,-0.0418155828107528,-2.24134680509781,\ +-1.69897,-0.271258,-2.44049292929293,3.14763820287695,-0.678942214043157,-0.0418188155070357,-2.24134996311481,\ +-1.69897,-0.271258,-2.41296212121212,3.14763767266694,-0.678943406514155,-0.0418219301123313,-2.24135300576887,\ +-1.69897,-0.271258,-2.38543131313131,3.14763716147816,-0.678944556205348,-0.0418249329813981,-2.24135593926794,\ +-1.69897,-0.271258,-2.3579005050505,3.14763666830509,-0.67894566537825,-0.0418278300210754,-2.24135876938241,\ +-1.69897,-0.271258,-2.3303696969697,3.14763619221183,-0.678946736137737,-0.0418306267290654,-2.24136150148299,\ +-1.69897,-0.271258,-2.30283888888889,3.1476357323262,-0.678947770445369,-0.0418333282287537,-2.2413641405747,\ +-1.69897,-0.271258,-2.27530808080808,3.14763528783442,-0.678948770131392,-0.0418359393005343,-2.24136669132748,\ +-1.69897,-0.271258,-2.24777727272727,3.14763485797632,-0.67894973690553,-0.0418384644100379,-2.24136915810384,\ +-1.69897,-0.271258,-2.22024646464646,3.1476344420409,-0.678950672366763,-0.0418409077336208,-2.24137154498363,\ +-1.69897,-0.271258,-2.19271565656565,3.14763403936254,-0.678951578012142,-0.041843273181413,-2.24137385578664,\ +-1.69897,-0.271258,-2.16518484848485,3.14763364931738,-0.67895245524478,-0.0418455644182017,-2.24137609409303,\ +-1.69897,-0.271258,-2.13765404040404,3.14763327132009,-0.678953305381113,-0.0418477848823743,-2.24137826326173,\ +-1.69897,-0.271258,-2.11012323232323,3.14763290482096,-0.678954129657491,-0.0418499378031365,-2.24138036644735,\ +-1.69897,-0.271258,-2.08259242424242,3.14763254930319,-0.678954929236171,-0.0418520262161816,-2.24138240661547,\ +-1.69897,-0.271258,-2.05506161616161,3.14763220428053,-0.67895570521079,-0.0418540529779713,-2.24138438655656,\ +-1.69897,-0.271258,-2.02753080808081,3.147631869295,-0.678956458611352,-0.0418560207787721,-2.24138630889873,\ +-1.69897,-0.271258,-2,3.14763154391489,-0.6789571904088,-0.0418579321545678,-2.24138817611937,\ +-1.69897,-0.270763,-4.72555,3.14755580043896,-0.679127541580462,-0.0423028709933786,-2.24182283632043,\ +-1.69897,-0.270763,-4.69801919191919,3.14755390994673,-0.679131793399664,-0.0423139762853461,-2.24183368506641,\ +-1.69897,-0.270763,-4.67048838383838,3.14755188061502,-0.679136357476388,-0.0423258971601966,-2.2418453305543,\ +-1.69897,-0.270763,-4.64295757575758,3.14754969656602,-0.679141269520645,-0.0423387268886117,-2.24185786390011,\ +-1.69897,-0.270763,-4.61542676767677,3.14754733940494,-0.679146570903336,-0.0423525735269128,-2.24187139066393,\ +-1.69897,-0.270763,-4.58789595959596,3.14754478770062,-0.679152309824276,-0.0423675629678154,-2.2418860338302,\ +-1.69897,-0.270763,-4.56036515151515,3.14754201633209,-0.679158542781884,-0.0423838427790562,-2.24190193755766,\ +-1.69897,-0.270763,-4.53283434343434,3.14753899565878,-0.679165336439448,-0.0424015870779585,-2.2419192719413,\ +-1.69897,-0.270763,-4.50530353535354,3.14753569045615,-0.679172770018836,-0.0424210027834626,-2.24193823911998,\ +-1.69897,-0.270763,-4.47777272727273,3.1475320585358,-0.679180938403998,-0.0424423377221847,-2.24195908119521,\ +-1.69897,-0.270763,-4.45024191919192,3.14752804893512,-0.679189956212688,-0.0424658912633064,-2.24198209062039,\ +-1.69897,-0.270763,-4.42271111111111,3.14752359951097,-0.679199963208095,-0.0424920284531655,-2.24200762400882,\ +-1.69897,-0.270763,-4.3951803030303,3.14751863369589,-0.679211131594662,-0.0425211990711434,-2.24203612074943,\ +-1.69897,-0.270763,-4.36764949494949,3.14751305605496,-0.679223676010601,-0.0425539637290396,-2.24206812850318,\ +-1.69897,-0.270763,-4.34011868686869,3.1475067460929,-0.679237867456342,-0.0425910302506618,-2.24210433874228,\ +-1.69897,-0.270763,-4.31258787878788,3.14749954945026,-0.679254053094671,-0.0426333053876831,-2.24214563727133,\ +-1.69897,-0.270763,-4.28505707070707,3.14749126510779,-0.679272685028679,-0.042681969984481,-2.24219317765572,\ +-1.69897,-0.270763,-4.25752626262626,3.14748162631493,-0.679294363194846,-0.042738591010257,-2.24224849066574,\ +-1.69897,-0.270763,-4.22999545454545,3.14747027133099,-0.679319901167526,-0.0428052934332506,-2.24231365218022,\ +-1.69897,-0.270763,-4.20246464646465,3.14745669701052,-0.679350430547992,-0.04288503287362,-2.24239154954084,\ +-1.69897,-0.270763,-4.17493383838384,3.14744018222577,-0.679387573191625,-0.0429820454422276,-2.24248632099907,\ +-1.69897,-0.270763,-4.14740303030303,3.1474196554796,-0.679433738953315,-0.0431026254194497,-2.24260411542961,\ +-1.69897,-0.270763,-4.11987222222222,3.14739345269612,-0.679492670429748,-0.0432565480631176,-2.24275448226974,\ +-1.69897,-0.270763,-4.09234141414141,3.14735884184727,-0.679570512099661,-0.0434598620872206,-2.24295309948829,\ +-1.69897,-0.270763,-4.06481060606061,3.14731100250735,-0.67967810536109,-0.0437408840510693,-2.24322762949703,\ +-1.69897,-0.270763,-4.0372797979798,3.14724055891521,-0.679836536807607,-0.0441546898567838,-2.24363187587657,\ +-1.69897,-0.270763,-4.00974898989899,3.14712653442139,-0.680092984057762,-0.0448245023422831,-2.2442862148648,\ +-1.69897,-0.270763,-3.98221818181818,3.1469103728379,-0.680579143143544,-0.046094297301684,-2.24552667598935,\ +-1.69897,-0.270763,-3.95468737373737,3.1463435197727,-0.681854026328178,-0.0494241543156025,-2.24877960918574,\ +-1.69897,-0.270763,-3.92715656565657,3.14090624070277,-0.694082760866263,-0.0813642865283074,-2.27998188482033,\ +-1.69897,-0.270763,-3.89962575757576,3.14964281799231,-0.674433726290136,-0.0300431330386323,-2.22984631348313,\ +-1.69897,-0.270763,-3.87209494949495,3.14849206356442,-0.677021835202004,-0.0368029936414196,-2.23645001294107,\ +-1.69897,-0.270763,-3.84456414141414,3.14817301151422,-0.677739400509115,-0.0386771966269387,-2.2382809195184,\ +-1.69897,-0.270763,-3.81703333333333,3.14802334245737,-0.678076014308265,-0.0395563954693056,-2.23913980777955,\ +-1.69897,-0.270763,-3.78950252525252,3.14793646423163,-0.678271408134135,-0.0400667430128179,-2.23963836566329,\ +-1.69897,-0.270763,-3.76197171717172,3.14787971425758,-0.678399041893347,-0.0404001085897206,-2.23996403008285,\ +-1.69897,-0.270763,-3.73444090909091,3.14783973628728,-0.67848895450955,-0.0406349506201944,-2.24019344697182,\ +-1.69897,-0.270763,-3.7069101010101,3.14781005233128,-0.678555715331153,-0.0408093226667907,-2.24036379080836,\ +-1.69897,-0.270763,-3.67937929292929,3.14778713994803,-0.678607246519615,-0.0409439165585301,-2.24049527541465,\ +-1.69897,-0.270763,-3.65184848484848,3.14776891925145,-0.67864822585111,-0.0410509501409428,-2.24059983638885,\ +-1.69897,-0.270763,-3.62431767676768,3.14775408302842,-0.678681593318676,-0.0411381023579064,-2.24068497528177,\ +-1.69897,-0.270763,-3.59678686868687,3.14774176842304,-0.678709289531833,-0.0412104418716388,-2.24075564366321,\ +-1.69897,-0.270763,-3.56925606060606,3.14773138291407,-0.678732647102898,-0.0412714493213936,-2.24081524176539,\ +-1.69897,-0.270763,-3.54172525252525,3.1477225061344,-0.678752611460217,-0.0413235940637939,-2.24086618189971,\ +-1.69897,-0.270763,-3.51419444444444,3.14771483158178,-0.678769871943886,-0.0413686765806075,-2.24091022295461,\ +-1.69897,-0.270763,-3.48666363636364,3.14770813051079,-0.678784943014765,-0.0414080405879766,-2.24094867760469,\ +-1.69897,-0.270763,-3.45913282828283,3.14770222874564,-0.678798216403615,-0.0414427092442831,-2.24098254537214,\ +-1.69897,-0.270763,-3.43160202020202,3.14769699132336,-0.678809995649431,-0.0414734753605602,-2.24101260075305,\ +-1.69897,-0.270763,-3.40407121212121,3.14769231204665,-0.67882051959566,-0.0415009627700679,-2.24103945316939,\ +-1.69897,-0.270763,-3.3765404040404,3.14768810620782,-0.678829978754553,-0.0415256690701959,-2.24106358872341,\ +-1.69897,-0.270763,-3.3490095959596,3.14768430541477,-0.67883852694357,-0.0415479960155139,-2.24108539988867,\ +-1.69897,-0.270763,-3.32147878787879,3.14768085384334,-0.678846289714286,-0.0415682715331658,-2.24110520701677,\ +-1.69897,-0.270763,-3.29394797979798,3.14767770547718,-0.678853370559979,-0.0415867659364029,-2.2411232741764,\ +-1.69897,-0.270763,-3.26641717171717,3.14767482204442,-0.678859855556117,-0.0416037040450307,-2.24113982099376,\ +-1.69897,-0.270763,-3.23888636363636,3.14767217145426,-0.678865816876647,-0.0416192743696127,-2.24115503162458,\ +-1.69897,-0.270763,-3.21135555555555,3.14766972659756,-0.678871315491541,-0.0416336361570956,-2.241169061637,\ +-1.69897,-0.270763,-3.18382474747475,3.14766746441624,-0.678876403259616,-0.0416469248571231,-2.24118204335162,\ +-1.69897,-0.270763,-3.15629393939394,3.14766536517386,-0.678881124569189,-0.0416592564071788,-2.2411940900276,\ +-1.69897,-0.270763,-3.12876313131313,3.14766341187828,-0.678885517636518,-0.0416707306239731,-2.24120529917579,\ +-1.69897,-0.270763,-3.10123232323232,3.14766158982071,-0.678889615542495,-0.0416814339112489,-2.24121575520388,\ +-1.69897,-0.270763,-3.07370151515151,3.14765988620459,-0.678893447067235,-0.0416914414395308,-2.24122553154588,\ +-1.69897,-0.270763,-3.04617070707071,3.14765828984468,-0.678897037366967,-0.0417008189141767,-2.24123469238926,\ +-1.69897,-0.270763,-3.0186398989899,3.14765679092115,-0.678900408527019,-0.0417096240196812,-2.24124329408593,\ +-1.69897,-0.270763,-2.99110909090909,3.14765538077739,-0.678903580016538,-0.0417179076073462,-2.24125138631247,\ +-1.69897,-0.270763,-2.96357828282828,3.14765405175278,-0.67890656906473,-0.0417257146779865,-2.24125901303011,\ +-1.69897,-0.270763,-2.93604747474747,3.14765279704339,-0.678909390973978,-0.0417330851997856,-2.24126621328374,\ +-1.69897,-0.270763,-2.90851666666667,3.14765161058551,-0.678912059381885,-0.0417400547926864,-2.24127302187042,\ +-1.69897,-0.270763,-2.88098585858586,3.14765048695765,-0.678914586481675,-0.041746655304056,-2.24127946990181,\ +-1.69897,-0.270763,-2.85345505050505,3.14764942129772,-0.678916983208464,-0.0417529152952507,-2.24128558527946,\ +-1.69897,-0.270763,-2.82592424242424,3.14764840923267,-0.678919259397464,-0.0417588604547739,-2.24129139309844,\ +-1.69897,-0.270763,-2.79839343434343,3.14764744681854,-0.678921423918871,-0.0417645139506231,-2.24129691599155,\ +-1.69897,-0.270763,-2.77086262626263,3.14764653048906,-0.678923484793398,-0.0417698967320237,-2.24130217442403,\ +-1.69897,-0.270763,-2.74333181818182,3.14764565701153,-0.678925449291577,-0.0417750277888289,-2.24130718694708,\ +-1.69897,-0.270763,-2.71580101010101,3.14764482344869,-0.678927324019473,-0.0417799243753592,-2.2413119704164,\ +-1.69897,-0.270763,-2.6882702020202,3.14764402712572,-0.678929114992887,-0.0417846022042442,-2.24131654018165,\ +-1.69897,-0.270763,-2.66073939393939,3.14764326560156,-0.67893082770185,-0.0417890756148482,-2.24132091025093,\ +-1.69897,-0.270763,-2.63320858585858,3.147642536644,-0.678932467166832,-0.0417933577200896,-2.24132509343424,\ +-1.69897,-0.270763,-2.60567777777778,3.14764183820767,-0.678934037987886,-0.0417974605348196,-2.24132910146888,\ +-1.69897,-0.270763,-2.57814696969697,3.14764116841501,-0.678935544387767,-0.0418013950884027,-2.2413329451294,\ +-1.69897,-0.270763,-2.55061616161616,3.14764052553938,-0.678936990249818,-0.0418051715237274,-2.24133663432439,\ +-1.69897,-0.270763,-2.52308535353535,3.14763990799016,-0.678938379151419,-0.0418087991845147,-2.24134017818173,\ +-1.69897,-0.270763,-2.49555454545454,3.14763931429962,-0.678939714393525,-0.0418122866925051,-2.24134358512398,\ +-1.69897,-0.270763,-2.46802373737374,3.14763874311134,-0.678940999026865,-0.0418156420158717,-2.24134686293522,\ +-1.69897,-0.270763,-2.44049292929293,3.14763819316975,-0.67894223587521,-0.0418188725299973,-2.24135001882047,\ +-1.69897,-0.270763,-2.41296212121212,3.14763766331104,-0.678943427556092,-0.0418219850715932,-2.2413530594585,\ +-1.69897,-0.270763,-2.38543131313131,3.14763715245484,-0.678944576499296,-0.0418249859869961,-2.24135599104905,\ +-1.69897,-0.270763,-2.3579005050505,3.14763665959692,-0.678945684963395,-0.0418278811753595,-2.24135881935498,\ +-1.69897,-0.270763,-2.3303696969697,3.14763618380258,-0.678946755050578,-0.0418306761273591,-2.24136154974012,\ +-1.69897,-0.270763,-2.30283888888889,3.14763572420075,-0.67894778871994,-0.0418333759599469,-2.24136418720324,\ +-1.69897,-0.270763,-2.27530808080808,3.14763527997865,-0.678948787799459,-0.041835985447617,-2.24136673640851,\ +-1.69897,-0.270763,-2.24777727272727,3.14763485037699,-0.678949753996796,-0.0418385090505817,-2.24136920171313,\ +-1.69897,-0.270763,-2.22024646464646,3.14763443468568,-0.678950688909022,-0.0418409509402137,-2.24137158719209,\ +-1.69897,-0.270763,-2.19271565656565,3.14763403223987,-0.678951594031426,-0.0418433150220544,-2.24137389666072,\ +-1.69897,-0.270763,-2.16518484848485,3.14763364241639,-0.678952470765504,-0.0418456049566577,-2.241376133695,\ +-1.69897,-0.270763,-2.13765404040404,3.14763326463058,-0.678953320426196,-0.0418478241785029,-2.24137830165007,\ +-1.69897,-0.270763,-2.11012323232323,3.14763289833335,-0.678954144248465,-0.0418499759131828,-2.24138040367701,\ +-1.69897,-0.270763,-2.08259242424242,3.14763254300849,-0.678954943393289,-0.0418520631930459,-2.24138244273813,\ +-1.69897,-0.270763,-2.05506161616161,3.14763219817025,-0.678955718953119,-0.0418540888714544,-2.24138442162086,\ +-1.69897,-0.270763,-2.02753080808081,3.14763186336117,-0.67895647195686,-0.0418560556357983,-2.24138634295052,\ +-1.69897,-0.270763,-2,3.14763153814996,-0.678957203374428,-0.0418579660193903,-2.24138820920188,\ +-1.69897,-0.257969,-4.72555,3.14755493824438,-0.679129480702662,-0.0423079357708703,-2.24182778409529,\ +-1.69897,-0.257969,-4.69801919191919,3.14755298506372,-0.679133873511542,-0.0423194093126308,-2.24183899258404,\ +-1.69897,-0.257969,-4.67048838383838,3.14755088594937,-0.679138594533168,-0.0423317401105932,-2.2418510385253,\ +-1.69897,-0.257969,-4.64295757575758,3.14754862391128,-0.679143681979123,-0.0423450279692761,-2.24186401941801,\ +-1.69897,-0.257969,-4.61542676767677,3.14754617921549,-0.679149180232095,-0.0423593888114615,-2.24187804850697,\ +-1.69897,-0.257969,-4.58789595959596,3.147543528807,-0.679155141144071,-0.042374958068935,-2.24189325809534,\ +-1.69897,-0.257969,-4.56036515151515,3.14754064558036,-0.679161625676639,-0.0423918949667792,-2.24190980372988,\ +-1.69897,-0.257969,-4.53283434343434,3.14753749744936,-0.679168705993423,-0.0424103879885579,-2.24192786953997,\ +-1.69897,-0.257969,-4.50530353535354,3.14753404614788,-0.679176468156997,-0.0424306619204238,-2.24194767511893,\ +-1.69897,-0.257969,-4.47777272727273,3.14753024566679,-0.679185015644417,-0.0424529870332516,-2.24196948449402,\ +-1.69897,-0.257969,-4.45024191919192,3.14752604019108,-0.679194473986602,-0.0424776912002274,-2.24199361796416,\ +-1.69897,-0.257969,-4.42271111111111,3.14752136134055,-0.679204996974379,-0.0425051761063596,-2.24202046793495,\ +-1.69897,-0.257969,-4.3951803030303,3.14751612442292,-0.679216775085196,-0.0425359392581336,-2.24205052041986,\ +-1.69897,-0.257969,-4.36764949494949,3.14751022326145,-0.679230047116313,-0.0425706043681884,-2.24208438472297,\ +-1.69897,-0.257969,-4.34011868686869,3.14750352292091,-0.679245116544396,-0.0426099640847541,-2.24212283518138,\ +-1.69897,-0.257969,-4.31258787878788,3.14749584926361,-0.679262375014441,-0.0426550413422037,-2.2421668710984,\ +-1.69897,-0.257969,-4.28505707070707,3.14748697359778,-0.679282336866689,-0.0427071795416227,-2.2422178048409,\ +-1.69897,-0.257969,-4.25752626262626,3.1474765894985,-0.679305691267249,-0.0427681787103685,-2.24227739485336,\ +-1.69897,-0.257969,-4.22999545454545,3.14746427671358,-0.679333383386102,-0.0428405075302188,-2.24234805278797,\ +-1.69897,-0.257969,-4.20246464646465,3.14744944289833,-0.679366745438432,-0.0429276456031748,-2.24243317786362,\ +-1.69897,-0.257969,-4.17493383838384,3.14743122547963,-0.679407717397825,-0.0430346599304501,-2.24253772002751,\ +-1.69897,-0.257969,-4.14740303030303,3.14740831772023,-0.679459238186968,-0.0431692266602931,-2.24266917809937,\ +-1.69897,-0.257969,-4.11987222222222,3.14737864058618,-0.679525983665665,-0.0433435586328777,-2.24283948278767,\ +-1.69897,-0.257969,-4.09234141414141,3.14733867328675,-0.679615872282482,-0.0435783379795567,-2.24306883844091,\ +-1.69897,-0.257969,-4.06481060606061,3.1472819413836,-0.67974346539927,-0.0439115974028346,-2.24339439915912,\ +-1.69897,-0.257969,-4.0372797979798,3.14719509746692,-0.679938782062209,-0.0444217434051259,-2.24389276015748,\ +-1.69897,-0.257969,-4.00974898989899,3.14704550636485,-0.680275220536857,-0.0453004843188421,-2.24475120106871,\ +-1.69897,-0.257969,-3.98221818181818,3.14672670008721,-0.680992233088209,-0.0471732435660971,-2.24658069725992,\ +-1.69897,-0.257969,-3.95468737373737,3.14557773156249,-0.683576325407289,-0.0539226132628773,-2.25317414816476,\ +-1.69897,-0.257969,-3.92715656565657,3.15433613067302,-0.663878212376199,-0.00247327215611577,-2.20291335050305,\ +-1.69897,-0.257969,-3.89962575757576,3.1488756827943,-0.676159054817596,-0.0345495045773895,-2.23424858226297,\ +-1.69897,-0.257969,-3.87209494949495,3.14830823597895,-0.677435273378427,-0.0378828494495271,-2.23750492274375,\ +-1.69897,-0.257969,-3.84456414141414,3.1480919382703,-0.677921738617103,-0.0391534440471758,-2.23874616503391,\ +-1.69897,-0.257969,-3.81703333333333,3.14797786204591,-0.67817830221204,-0.0398235604126746,-2.23940080088213,\ +-1.69897,-0.257969,-3.78950252525252,3.14790739342237,-0.678336789955553,-0.040237513260053,-2.2398051909065,\ +-1.69897,-0.257969,-3.76197171717172,3.14785954009943,-0.678444414665556,-0.0405186173641707,-2.24007980115796,\ +-1.69897,-0.257969,-3.73444090909091,3.1478249206551,-0.678522275667162,-0.0407219818805655,-2.24027846770238,\ +-1.69897,-0.257969,-3.7069101010101,3.14779871221351,-0.678581219868982,-0.0408759377615625,-2.24042886701201,\ +-1.69897,-0.257969,-3.67937929292929,3.1477781815461,-0.678627394449785,-0.0409965407733622,-2.24054668394499,\ +-1.69897,-0.257969,-3.65184848484848,3.14776166393249,-0.678664543455637,-0.041093569959399,-2.24064147163677,\ +-1.69897,-0.257969,-3.62431767676768,3.14774808750452,-0.678695077576001,-0.0411733217798729,-2.24071938109151,\ +-1.69897,-0.257969,-3.59678686868687,3.14773673090849,-0.678720619174371,-0.0412400336727699,-2.24078455185713,\ +-1.69897,-0.257969,-3.56925606060606,3.14772709085501,-0.67874230017572,-0.0412966621037404,-2.24083987210127,\ +-1.69897,-0.257969,-3.54172525252525,3.14771880550819,-0.678760934368564,-0.041345332600367,-2.24088741824919,\ +-1.69897,-0.257969,-3.51419444444444,3.14771160805244,-0.678777121835632,-0.0413876125138549,-2.24092872144436,\ +-1.69897,-0.257969,-3.48666363636364,3.14770529742287,-0.678791314782657,-0.0414246829566755,-2.24096493551408,\ +-1.69897,-0.257969,-3.45913282828283,3.14769971922722,-0.678803860446186,-0.0414574508731411,-2.24099694645112,\ +-1.69897,-0.257969,-3.43160202020202,3.14769475294616,-0.678815029880748,-0.0414866242283653,-2.24102544586574,\ +-1.69897,-0.257969,-3.40407121212121,3.14769030312683,-0.678825037764962,-0.0415127637397,-2.24105098152202,\ +-1.69897,-0.257969,-3.3765404040404,3.14768629318807,-0.67883405633396,-0.0415363192666578,-2.24107399288715,\ +-1.69897,-0.257969,-3.3490095959596,3.14768266097632,-0.67884222537455,-0.0415576559172932,-2.24109483663476,\ +-1.69897,-0.257969,-3.32147878787879,3.14767935552068,-0.678849659522932,-0.0415770731089444,-2.24111380526525,\ +-1.69897,-0.257969,-3.29394797979798,3.14767633462634,-0.67885645367761,-0.0415948187062494,-2.2411311409173,\ +-1.69897,-0.257969,-3.26641717171717,3.14767356306358,-0.678862687072061,-0.0416110996584896,-2.2411470457594,\ +-1.69897,-0.257969,-3.23888636363636,3.14767101118766,-0.678868426378952,-0.0416260901074396,-2.24116168991043,\ +-1.69897,-0.257969,-3.21135555555555,3.14766865387423,-0.678873728104296,-0.0416399376407172,-2.24117521754855,\ +-1.69897,-0.257969,-3.18382474747475,3.14766646968934,-0.678878640454157,-0.0416527681673375,-2.24118775167413,\ +-1.69897,-0.257969,-3.15629393939394,3.14766444023593,-0.678883204804589,-0.0416646897570868,-2.2411993978604,\ +-1.69897,-0.257969,-3.12876313131313,3.14766254963428,-0.678887456869896,-0.0416757956918483,-2.24121024723433,\ +-1.69897,-0.257969,-3.10123232323232,3.14766078410575,-0.678891427638993,-0.0416861669113422,-2.24122037886582,\ +-1.69897,-0.257969,-3.07370151515151,3.14765913163638,-0.678895144131936,-0.0416958739890154,-2.24122986169799,\ +-1.69897,-0.257969,-3.04617070707071,3.14765758170313,-0.678898630015575,-0.0417049787401147,-2.24123875611807,\ +-1.69897,-0.257969,-3.0186398989899,3.14765612504962,-0.678901906108063,-0.0417135355394249,-2.24124711524473,\ +-1.69897,-0.257969,-2.99110909090909,3.14765475350104,-0.678904990794967,-0.0417215924080417,-2.2412549859897,\ +-1.69897,-0.257969,-2.96357828282828,3.1476534598107,-0.67890790037447,-0.0417291919150653,-2.24126240993872,\ +-1.69897,-0.257969,-2.93604747474747,3.14765223753196,-0.678910649345444,-0.0417363719299751,-2.2412694240864,\ +-1.69897,-0.257969,-2.90851666666667,3.14765108091074,-0.678913250649072,-0.0417431662537562,-2.24127606145289,\ +-1.69897,-0.257969,-2.88098585858586,3.14764998479501,-0.678915715872585,-0.0417496051509813,-2.24128235160362,\ +-1.69897,-0.257969,-2.85345505050505,3.14764894455803,-0.678918055421793,-0.0417557158005155,-2.24128832108959,\ +-1.69897,-0.257969,-2.82592424242424,3.14764795603304,-0.67892027866793,-0.0417615226790062,-2.241293993822,\ +-1.69897,-0.257969,-2.79839343434343,3.14764701545753,-0.678922394073107,-0.0417670478885688,-2.24129939139238,\ +-1.69897,-0.257969,-2.77086262626263,3.14764611942534,-0.678924409297941,-0.0417723114379156,-2.24130453334723,\ +-1.69897,-0.257969,-2.74333181818182,3.14764526484546,-0.678926331294263,-0.041777331484469,-2.2413094374245,\ +-1.69897,-0.257969,-2.71580101010101,3.14764444890645,-0.678928166385232,-0.0417821245436327,-2.24131411975806,\ +-1.69897,-0.257969,-2.6882702020202,3.14764366904542,-0.678929920334827,-0.0417867056703027,-2.24131859505504,\ +-1.69897,-0.257969,-2.66073939393939,3.14764292292128,-0.678931598408326,-0.0417910886168205,-2.24132287675007,\ +-1.69897,-0.257969,-2.63320858585858,3.1476422083912,-0.678933205425106,-0.0417952859708637,-2.24132697714004,\ +-1.69897,-0.257969,-2.60567777777778,3.14764152349004,-0.678934745804849,-0.0417993092761814,-2.24133090750202,\ +-1.69897,-0.257969,-2.57814696969697,3.14764086641233,-0.678936223608158,-0.0418031691386146,-2.24133467819686,\ +-1.69897,-0.257969,-2.55061616161616,3.14764023549635,-0.678937642572279,-0.0418068753194558,-2.24133829876033,\ +-1.69897,-0.257969,-2.52308535353535,3.14763962921017,-0.678939006142673,-0.0418104368178714,-2.24134177798373,\ +-1.69897,-0.257969,-2.49555454545454,3.14763904613914,-0.67894031750094,-0.0418138619438577,-2.24134512398507,\ +-1.69897,-0.257969,-2.46802373737374,3.14763848497493,-0.678941579589609,-0.0418171583829751,-2.24134834427236,\ +-1.69897,-0.257969,-2.44049292929293,3.14763794450567,-0.678942795134168,-0.0418203332539176,-2.24135144579986,\ +-1.69897,-0.257969,-2.41296212121212,3.14763742360731,-0.678943966662728,-0.0418233931598305,-2.24135443501816,\ +-1.69897,-0.257969,-2.38543131313131,3.14763692123572,-0.678945096523563,-0.0418263442341508,-2.241357317919,\ +-1.69897,-0.257969,-2.3579005050505,3.14763643641979,-0.678946186900825,-0.0418291921816436,-2.24136010007539,\ +-1.69897,-0.257969,-2.3303696969697,3.14763596825505,-0.67894723982863,-0.0418319423152087,-2.24136278667747,\ +-1.69897,-0.257969,-2.30283888888889,3.14763551589815,-0.678948257203734,-0.0418345995889599,-2.24136538256491,\ +-1.69897,-0.257969,-2.27530808080808,3.14763507856176,-0.678949240796923,-0.0418371686280085,-2.24136789225597,\ +-1.69897,-0.257969,-2.24777727272727,3.14763465550995,-0.678950192263314,-0.0418396537553293,-2.24137031997378,\ +-1.69897,-0.257969,-2.22024646464646,3.14763424605411,-0.678951113151631,-0.0418420590160336,-2.24137266966998,\ +-1.69897,-0.257969,-2.19271565656565,3.14763384954918,-0.678952004912638,-0.0418443881993435,-2.24137494504628,\ +-1.69897,-0.257969,-2.16518484848485,3.1476334653903,-0.678952868906739,-0.0418466448585096,-2.24137714957383,\ +-1.69897,-0.257969,-2.13765404040404,3.14763309300965,-0.678953706410935,-0.0418488323288985,-2.24137928651094,\ +-1.69897,-0.257969,-2.11012323232323,3.14763273187377,-0.678954518625089,-0.0418509537444407,-2.24138135891916,\ +-1.69897,-0.257969,-2.08259242424242,3.14763238148085,-0.678955306677689,-0.0418530120526125,-2.24138336967786,\ +-1.69897,-0.257969,-2.05506161616161,3.14763204135858,-0.678956071631063,-0.0418550100280983,-2.24138532149765,\ +-1.69897,-0.257969,-2.02753080808081,3.1476317110619,-0.678956814486155,-0.0418569502852703,-2.24138721693248,\ +-1.69897,-0.257969,-2,3.14763139017109,-0.678957536186911,-0.041858835289601,-2.24138905839088,\ +-1.69897,-0.254961,-4.72555,3.14755473147376,-0.679129945740947,-0.0423091504005842,-2.24182897066555,\ +-1.69897,-0.254961,-4.69801919191919,3.14755276310178,-0.679134372715955,-0.0423207131805737,-2.24184026633102,\ +-1.69897,-0.254961,-4.67048838383838,3.14755064705832,-0.679139131812084,-0.0423331434250185,-2.24185240942144,\ +-1.69897,-0.254961,-4.64295757575758,3.14754836607779,-0.679144261860589,-0.0423465425569595,-2.24186549901685,\ +-1.69897,-0.254961,-4.61542676767677,3.14754590009387,-0.679149807991699,-0.0423610284516663,-2.24187965026946,\ +-1.69897,-0.254961,-4.58789595959596,3.14754322564766,-0.679155822965819,-0.042376738913614,-2.2418949978003,\ +-1.69897,-0.254961,-4.56036515151515,3.14754031513894,-0.679162368857247,-0.0423938360741598,-2.24191169999528,\ +-1.69897,-0.254961,-4.53283434343434,3.14753713587028,-0.679169519204319,-0.0424125120074769,-2.24192994449143,\ +-1.69897,-0.254961,-4.50530353535354,3.14753364881328,-0.679177361784009,-0.0424329959775452,-2.24194995525643,\ +-1.69897,-0.254961,-4.47777272727273,3.14752980699837,-0.679186002233394,-0.0424555638969689,-2.24197200182899,\ +-1.69897,-0.254961,-4.45024191919192,3.14752555338686,-0.679195568835603,-0.0424805508274142,-2.24199641153043,\ +-1.69897,-0.254961,-4.42271111111111,3.14752081801988,-0.679206218931942,-0.0425083677273695,-2.24202358582557,\ +-1.69897,-0.254961,-4.3951803030303,3.14751551414043,-0.679218147643479,-0.0425395242319445,-2.24205402257634,\ +-1.69897,-0.254961,-4.36764949494949,3.14750953282979,-0.679231599934446,-0.0425746601612355,-2.24208834682218,\ +-1.69897,-0.254961,-4.34011868686869,3.14750273544807,-0.679246887613369,-0.0426145899253915,-2.24212735415938,\ +-1.69897,-0.254961,-4.31258787878788,3.14749494275453,-0.679264413802377,-0.0426603664358209,-2.24217207317577,\ +-1.69897,-0.254961,-4.28505707070707,3.14748591887089,-0.679284709004454,-0.0427133753089415,-2.24222385747833,\ +-1.69897,-0.254961,-4.25752626262626,3.14747534699177,-0.679308485732063,-0.0427754775502737,-2.24228452508103,\ +-1.69897,-0.254961,-4.22999545454545,3.14746279142202,-0.679336723887096,-0.0428492325575799,-2.2423565762564,\ +-1.69897,-0.254961,-4.20246464646465,3.14744763603204,-0.679370809178392,-0.0429382596525062,-2.24244354671527,\ +-1.69897,-0.254961,-4.17493383838384,3.14742898006625,-0.679412767453895,-0.0430478501308014,-2.24255060551791,\ +-1.69897,-0.254961,-4.14740303030303,3.14740545232686,-0.679465682611568,-0.043186058800457,-2.24268562139627,\ +-1.69897,-0.254961,-4.11987222222222,3.14737485792524,-0.679534491074591,-0.0433657790650042,-2.24286118990031,\ +-1.69897,-0.254961,-4.09234141414141,3.1473334504853,-0.679627618645252,-0.0436090182088725,-2.24309880991896,\ +-1.69897,-0.254961,-4.06481060606061,3.14727426702809,-0.679760725439653,-0.0439566787618351,-2.24343843908295,\ +-1.69897,-0.254961,-4.0372797979798,3.14718273226226,-0.679966592075889,-0.0444943801535126,-2.2439637189071,\ +-1.69897,-0.254961,-4.00974898989899,3.14702234325929,-0.680327315613346,-0.045436551025135,-2.2448841244657,\ +-1.69897,-0.254961,-3.98221818181818,3.14666857450814,-0.681122960657477,-0.0475146898402991,-2.24691425570267,\ +-1.69897,-0.254961,-3.95468737373737,3.14524082384881,-0.684334049066753,-0.0559017055220588,-2.25510752094375,\ +-1.69897,-0.254961,-3.92715656565657,3.15218202822221,-0.668722905227146,-0.0151270859834843,-2.21527484557267,\ +-1.69897,-0.254961,-3.89962575757576,3.14877250816756,-0.676391100130219,-0.0351555818408592,-2.23484065839168,\ +-1.69897,-0.254961,-3.87209494949495,3.1482756121028,-0.677508646239376,-0.0380744914278724,-2.23769213755525,\ +-1.69897,-0.254961,-3.84456414141414,3.14807615158121,-0.677957243734161,-0.0392461795734553,-2.23883675825478,\ +-1.69897,-0.254961,-3.81703333333333,3.14796858290773,-0.678199171495403,-0.0398780687240374,-2.23945404998405,\ +-1.69897,-0.254961,-3.78950252525252,3.14790129306302,-0.678350509993476,-0.0402733485154365,-2.23984019832314,\ +-1.69897,-0.254961,-3.76197171717172,3.14785522627614,-0.6784541166873,-0.0405439579958049,-2.24010455638965,\ +-1.69897,-0.254961,-3.73444090909091,3.14782170969262,-0.678529497295349,-0.0407408439924612,-2.24029689407614,\ +-1.69897,-0.254961,-3.7069101010101,3.1477962295012,-0.67858680362318,-0.0408905219237164,-2.24044311426197,\ +-1.69897,-0.254961,-3.67937929292929,3.14777620475167,-0.678631840367303,-0.0410081530291431,-2.2405580279433,\ +-1.69897,-0.254961,-3.65184848484848,3.14776005281116,-0.678668166954595,-0.0411030341468337,-2.24065071718976,\ +-1.69897,-0.254961,-3.62431767676768,3.14774674923558,-0.678698087415199,-0.0411811831543715,-2.24072706085852,\ +-1.69897,-0.254961,-3.59678686868687,3.14773560162113,-0.678723159002666,-0.0412466674296225,-2.24079103236598,\ +-1.69897,-0.254961,-3.56925606060606,3.14772612516266,-0.678744472070007,-0.0413023348567456,-2.24084541380666,\ +-1.69897,-0.254961,-3.54172525252525,3.14771797027525,-0.678762812852616,-0.0413502389975755,-2.24089221130255,\ +-1.69897,-0.254961,-3.51419444444444,3.14771087852325,-0.678778762586206,-0.0413918979769241,-2.24093290790793,\ +-1.69897,-0.254961,-3.48666363636364,3.14770465473092,-0.678792760231578,-0.0414284583129508,-2.24096862365495,\ +-1.69897,-0.254961,-3.45913282828283,3.14769914874263,-0.67880514349686,-0.0414608020627514,-2.2410002202241,\ +-1.69897,-0.254961,-3.43160202020202,3.14769424314994,-0.678816176440006,-0.0414896189171597,-2.24102837137352,\ +-1.69897,-0.254961,-3.40407121212121,3.14768984482589,-0.678826068508521,-0.0415154559304065,-2.24105361151979,\ +-1.69897,-0.254961,-3.3765404040404,3.14768587895654,-0.678834987963059,-0.0415387525811236,-2.24107636998904,\ +-1.69897,-0.254961,-3.3490095959596,3.14768228475037,-0.678843071527036,-0.0415598659760811,-2.24109699563845,\ +-1.69897,-0.254961,-3.32147878787879,3.14767901230004,-0.67885043144471,-0.0415790892851528,-2.2411157748653,\ +-1.69897,-0.254961,-3.29394797979798,3.1476760202509,-0.678857160724957,-0.0415966654374629,-2.24113294498674,\ +-1.69897,-0.254961,-3.26641717171717,3.14767327404412,-0.678863337092465,-0.041612797441488,-2.2411487043215,\ +-1.69897,-0.254961,-3.23888636363636,3.14767074457581,-0.678869026003413,-0.0416276562616882,-2.24116321988458,\ +-1.69897,-0.254961,-3.21135555555555,3.14766840716164,-0.678874282974236,-0.0416413869009958,-2.24117663332912,\ +-1.69897,-0.254961,-3.18382474747475,3.14766624072855,-0.678879155399355,-0.0416541131485082,-2.24118906558457,\ +-1.69897,-0.254961,-3.15629393939394,3.1476642271777,-0.678883683984068,-0.0416659413220668,-2.24120062051268,\ +-1.69897,-0.254961,-3.12876313131313,3.14766235087758,-0.678887903884444,-0.0416769632455136,-2.24121138781606,\ +-1.69897,-0.254961,-3.10123232323232,3.14766059825749,-0.678891845621785,-0.0416872586371919,-2.24122144537145,\ +-1.69897,-0.254961,-3.07370151515151,3.14765895747867,-0.678895535822034,-0.0416968970411909,-2.2412308611164,\ +-1.69897,-0.254961,-3.04617070707071,3.14765741816664,-0.67889899781801,-0.0417059394002989,-2.24123969458581,\ +-1.69897,-0.254961,-3.0186398989899,3.14765597119153,-0.678902252143245,-0.0417144393458974,-2.24124799817215,\ +-1.69897,-0.254961,-2.99110909090909,3.14765460848692,-0.678905316939573,-0.0417224442624815,-2.24125581816526,\ +-1.69897,-0.254961,-2.96357828282828,3.14765332289935,-0.678908208295486,-0.0417299961714594,-2.24126319561579,\ +-1.69897,-0.254961,-2.93604747474747,3.14765210806277,-0.678910940528652,-0.0417371324690302,-2.24127016705606,\ +-1.69897,-0.254961,-2.90851666666667,3.14765095829299,-0.678913526423027,-0.0417438865455019,-2.24127676510501,\ +-1.69897,-0.254961,-2.88098585858586,3.14764986849889,-0.678915977428862,-0.0417502883076912,-2.24128301897857,\ +-1.69897,-0.254961,-2.85345505050505,3.14764883410697,-0.678918303832206,-0.0417563646216523,-2.24128895492215,\ +-1.69897,-0.254961,-2.82592424242424,3.1476478509972,-0.678920514899206,-0.0417621396895565,-2.24129459657885,\ +-1.69897,-0.254961,-2.79839343434343,3.14764691544821,-0.678922618999457,-0.0417676353718758,-2.2412999653041,\ +-1.69897,-0.254961,-2.77086262626263,3.14764602409018,-0.678924623711868,-0.0417728714639093,-2.24130508043594,\ +-1.69897,-0.254961,-2.74333181818182,3.14764517386426,-0.678926535915891,-0.0417778659340296,-2.24130995952761,\ +-1.69897,-0.254961,-2.71580101010101,3.14764436198761,-0.678928361870377,-0.0417826351296902,-2.24131461854895,\ +-1.69897,-0.254961,-2.6882702020202,3.14764358592283,-0.678930107282026,-0.0417871939561731,-2.24131907206089,\ +-1.69897,-0.254961,-2.66073939393939,3.14764284335155,-0.678931777364959,-0.041791556032191,-2.24132333336757,\ +-1.69897,-0.254961,-2.63320858585858,3.14764213215132,-0.678933376892735,-0.0417957338257714,-2.24132741464894,\ +-1.69897,-0.254961,-2.60567777777778,3.14764145037527,-0.678934910243929,-0.0417997387732728,-2.2413313270772,\ +-1.69897,-0.254961,-2.57814696969697,3.14764079623438,-0.678936381442146,-0.0418035813839292,-2.2413350809188,\ +-1.69897,-0.254961,-2.55061616161616,3.14764016808178,-0.678937794191297,-0.0418072713319346,-2.24133868562444,\ +-1.69897,-0.254961,-2.52308535353535,3.14763956439891,-0.678939151906708,-0.0418108175377642,-2.24134214990852,\ +-1.69897,-0.254961,-2.49555454545454,3.14763898378325,-0.678940457742705,-0.0418142282401774,-2.24134548181949,\ +-1.69897,-0.254961,-2.46802373737374,3.14763842493747,-0.678941714617074,-0.0418175110601167,-2.24134868880223,\ +-1.69897,-0.254961,-2.44049292929293,3.14763788665971,-0.678942925232832,-0.0418206730575551,-2.24135177775362,\ +-1.69897,-0.254961,-2.41296212121212,3.14763736783503,-0.678944092097611,-0.0418237207821791,-2.24135475507202,\ +-1.69897,-0.254961,-2.38543131313131,3.14763686742756,-0.678945217541025,-0.0418266603186731,-2.24135762670159,\ +-1.69897,-0.254961,-2.3579005050505,3.1476363844738,-0.678946303730172,-0.0418294973272669,-2.24136039817177,\ +-1.69897,-0.254961,-2.3303696969697,3.1476359180762,-0.678947352683571,-0.0418322370801131,-2.24136307463294,\ +-1.69897,-0.254961,-2.30283888888889,3.14763546739779,-0.678948366283681,-0.0418348844939853,-2.24136566088827,\ +-1.69897,-0.254961,-2.27530808080808,3.14763503165705,-0.678949346288167,-0.041837444159725,-2.24136816142257,\ +-1.69897,-0.254961,-2.24777727272727,3.14763461012343,-0.678950294340083,-0.0418399203688102,-2.24137058042816,\ +-1.69897,-0.254961,-2.22024646464646,3.14763420211322,-0.67895121197706,-0.0418423171373641,-2.24137292182839,\ +-1.69897,-0.254961,-2.19271565656565,3.14763380698596,-0.678952100639628,-0.041844638227892,-2.24137518929886,\ +-1.69897,-0.254961,-2.16518484848485,3.14763342414095,-0.678952961678758,-0.0418468871689895,-2.24137738628664,\ +-1.69897,-0.254961,-2.13765404040404,3.14763305301427,-0.678953796362721,-0.0418490672732418,-2.24137951602778,\ +-1.69897,-0.254961,-2.11012323232323,3.14763269307601,-0.678954605883321,-0.0418511816535034,-2.24138158156324,\ +-1.69897,-0.254961,-2.08259242424242,3.14763234382774,-0.678955391361562,-0.0418532332377289,-2.24138358575333,\ +-1.69897,-0.254961,-2.05506161616161,3.14763200480019,-0.678956153852844,-0.0418552247825006,-2.24138553129096,\ +-1.69897,-0.254961,-2.02753080808081,3.14763167555117,-0.67895689435168,-0.0418571588853839,-2.24138742071367,\ +-1.69897,-0.254961,-2,3.14763135566364,-0.678957613796032,-0.041859037996233,-2.24138925641473,\ +-1.69897,-0.253782,-4.72555,3.14755464999832,-0.679130128983655,-0.0423096290107182,-2.24182943821921,\ +-1.69897,-0.253782,-4.69801919191919,3.14755267562361,-0.679134569459064,-0.0423212270523035,-2.24184076833168,\ +-1.69897,-0.253782,-4.67048838383838,3.14755055288879,-0.679139343604435,-0.0423336966037399,-2.24185294982104,\ +-1.69897,-0.253782,-4.64295757575758,3.14754826441872,-0.679144490497331,-0.0423471397314017,-2.24186608239582,\ +-1.69897,-0.253782,-4.61542676767677,3.1475457900149,-0.679150055565267,-0.0423616750870515,-2.24188028196676,\ +-1.69897,-0.253782,-4.58789595959596,3.14754310605768,-0.679156091930134,-0.0423774414193197,-2.24189568407725,\ +-1.69897,-0.253782,-4.56036515151515,3.14754018474989,-0.679162662109286,-0.0423946020167693,-2.24191244824366,\ +-1.69897,-0.253782,-4.53283434343434,3.1475369931505,-0.679169840188805,-0.0424133503842426,-2.24193076350065,\ +-1.69897,-0.253782,-4.50530353535354,3.14753349192721,-0.679177714629276,-0.0424339175712241,-2.24195085556016,\ +-1.69897,-0.253782,-4.47777272727273,3.14752963372715,-0.679186391929769,-0.0424565817417564,-2.24197299616031,\ +-1.69897,-0.253782,-4.45024191919192,3.14752536102282,-0.679196001472718,-0.0424816808287779,-2.24199751542736,\ +-1.69897,-0.253782,-4.42271111111111,3.14752060322421,-0.679206702019001,-0.0425096294985252,-2.24202481844825,\ +-1.69897,-0.253782,-4.3951803030303,3.14751527274791,-0.679218690548348,-0.0425409422407526,-2.24205540782739,\ +-1.69897,-0.253782,-4.36764949494949,3.14750925957625,-0.679232214496446,-0.0425762653307231,-2.24208991491027,\ +-1.69897,-0.253782,-4.34011868686869,3.14750242358267,-0.6792475890155,-0.0426164219119076,-2.24212914382473,\ +-1.69897,-0.253782,-4.31258787878788,3.14749458347529,-0.679265221840792,-0.0426624769447759,-2.24217413492935,\ +-1.69897,-0.253782,-4.28505707070707,3.14748550048209,-0.679285649983487,-0.0427158330444272,-2.24222625843708,\ +-1.69897,-0.253782,-4.25752626262626,3.14747485360908,-0.679309595376382,-0.0427783758212396,-2.24228735639835,\ +-1.69897,-0.253782,-4.22999545454545,3.14746220091479,-0.679338051969814,-0.0428527013660227,-2.24235996493108,\ +-1.69897,-0.253782,-4.20246464646465,3.14744691662126,-0.679372427172144,-0.0429424856772143,-2.24244767511358,\ +-1.69897,-0.253782,-4.17493383838384,3.1474280844307,-0.679414781786656,-0.0430531113501461,-2.24255574519657,\ +-1.69897,-0.253782,-4.14740303030303,3.14740430679481,-0.679468258975061,-0.0431927879832953,-2.24269219512666,\ +-1.69897,-0.253782,-4.11987222222222,3.14737334121128,-0.679537902246249,-0.0433746886764992,-2.24286989368876,\ +-1.69897,-0.253782,-4.09234141414141,3.14733134794644,-0.679632347368815,-0.0436213691234534,-2.24311087551213,\ +-1.69897,-0.253782,-4.06481060606061,3.14727115992202,-0.679767713489155,-0.0439749307914538,-2.24345626946809,\ +-1.69897,-0.253782,-4.0372797979798,3.14717768181799,-0.679977950798053,-0.0445240479074874,-2.24399270129924,\ +-1.69897,-0.253782,-4.00974898989899,3.14701273655213,-0.680348921617019,-0.0454929835702818,-2.24493925334923,\ +-1.69897,-0.253782,-3.98221818181818,3.14664364776982,-0.681179022239383,-0.0476611166298051,-2.24705729985214,\ +-1.69897,-0.253782,-3.95468737373737,3.14507616741141,-0.684704370294938,-0.056868944523978,-2.25605241552783,\ +-1.69897,-0.253782,-3.92715656565657,3.15167208586492,-0.669869793153415,-0.0181226332238095,-2.21820119196493,\ +-1.69897,-0.253782,-3.89962575757576,3.14873651211729,-0.676472057193019,-0.035367032934286,-2.23504722470318,\ +-1.69897,-0.253782,-3.87209494949495,3.14826364074467,-0.6775355704709,-0.0381448146090568,-2.23776083618393,\ +-1.69897,-0.253782,-3.84456414141414,3.14807024199768,-0.677970534706965,-0.0392808941571501,-2.23887067088862,\ +-1.69897,-0.253782,-3.81703333333333,3.14796507207462,-0.678207067548849,-0.0398986923617686,-2.23947419719024,\ +-1.69897,-0.253782,-3.78950252525252,3.14789896953909,-0.678355735724406,-0.0402869975595235,-2.23985353205741,\ +-1.69897,-0.253782,-3.76197171717172,3.14785357573229,-0.67845782884965,-0.0405536537624329,-2.24011402817206,\ +-1.69897,-0.253782,-3.73444090909091,3.14782047706212,-0.678532269547991,-0.0407480848165681,-2.24030396762826,\ +-1.69897,-0.253782,-3.7069101010101,3.14779527404221,-0.678588952502086,-0.0408961345630378,-2.24044859724238,\ +-1.69897,-0.253782,-3.67937929292929,3.14777544249482,-0.67863355472417,-0.0410126307438961,-2.2405624022173,\ +-1.69897,-0.253782,-3.65184848484848,3.14775943057319,-0.678669566401447,-0.041106689350679,-2.24065428795387,\ +-1.69897,-0.253782,-3.62431767676768,3.14774623170223,-0.678699251375676,-0.0411842232932667,-2.24073003076645,\ +-1.69897,-0.253782,-3.59678686868687,3.14773516442734,-0.678724142275141,-0.0412492356310006,-2.24079354123873,\ +-1.69897,-0.253782,-3.56925606060606,3.14772575095596,-0.678745313681129,-0.0413045330539912,-2.24084756122282,\ +-1.69897,-0.253782,-3.54172525252525,3.14771764636305,-0.678763541348642,-0.0413521417504144,-2.24089407009945,\ +-1.69897,-0.253782,-3.51419444444444,3.14771059540758,-0.678779399328658,-0.0413935610793515,-2.24093453259063,\ +-1.69897,-0.253782,-3.48666363636364,3.14770440516304,-0.678793321523217,-0.0414299243460116,-2.24097005582084,\ +-1.69897,-0.253782,-3.45913282828283,3.14769892709467,-0.678805641995112,-0.0414621040862766,-2.24100149216928,\ +-1.69897,-0.253782,-3.43160202020202,3.14769404498588,-0.678816622121682,-0.041490782989505,-2.24102950855435,\ +-1.69897,-0.253782,-3.40407121212121,3.14768966660203,-0.678826469343632,-0.041516502868367,-2.24105463427219,\ +-1.69897,-0.253782,-3.3765404040404,3.14768571780787,-0.678835350395133,-0.0415396992145033,-2.24107729475403,\ +-1.69897,-0.253782,-3.3490095959596,3.14768213833558,-0.678843400821817,-0.0415607260584424,-2.24109783585184,\ +-1.69897,-0.253782,-3.32147878787879,3.14767887868708,-0.67885073194747,-0.0415798741658615,-2.24111654161429,\ +-1.69897,-0.253782,-3.29394797979798,3.14767589783134,-0.678857436053159,-0.0415973845649504,-2.24113364750149,\ +-1.69897,-0.253782,-3.26641717171717,3.1476731614681,-0.678863590282009,-0.041613458745197,-2.24114935034829,\ +-1.69897,-0.253782,-3.23888636363636,3.14767064070212,-0.678869259620973,-0.0416282664454938,-2.24116381597237,\ +-1.69897,-0.253782,-3.21135555555555,3.14766831101887,-0.678874499204531,-0.0416419516711486,-2.24117718505239,\ +-1.69897,-0.253782,-3.18382474747475,3.14766615148468,-0.678879356113645,-0.0416546373925339,-2.24118957771791,\ +-1.69897,-0.253782,-3.15629393939394,3.14766414411595,-0.67888387079442,-0.0416664292505042,-2.24120109716937,\ +-1.69897,-0.253782,-3.12876313131313,3.14766227337715,-0.678888078187099,-0.0416774185051959,-2.24121183255868,\ +-1.69897,-0.253782,-3.10123232323232,3.14766052577798,-0.678892008632105,-0.041687684402519,-2.24122186130107,\ +-1.69897,-0.253782,-3.07370151515151,3.14765888954751,-0.678895688602876,-0.041697296088226,-2.24123125094494,\ +-1.69897,-0.253782,-3.04617070707071,3.14765735436875,-0.67889914130291,-0.0417063141673449,-2.24124006069528,\ +-1.69897,-0.253782,-3.0186398989899,3.14765591116084,-0.678902387155514,-0.0417147919833448,-2.24124834266324,\ +-1.69897,-0.253782,-2.99110909090909,3.14765455189934,-0.678905444208089,-0.0417227766740835,-2.24125614289774,\ +-1.69897,-0.253782,-2.96357828282828,3.14765326946695,-0.67890832846786,-0.0417303100487033,-2.24126350224208,\ +-1.69897,-0.253782,-2.93604747474747,3.1476520575288,-0.678911054182243,-0.0417374293199174,-2.24127045704932,\ +-1.69897,-0.253782,-2.90851666666667,3.14765091042789,-0.678913634074218,-0.0417441677187696,-2.24127703978282,\ +-1.69897,-0.253782,-2.88098585858586,3.14764982309668,-0.678916079540901,-0.0417505550132966,-2.24128327952294,\ +-1.69897,-0.253782,-2.85345505050505,3.14764879098232,-0.678918400821871,-0.0417566179481726,-2.24128920239652,\ +-1.69897,-0.253782,-2.82592424242424,3.14764780998295,-0.67892060714249,-0.0417623806190376,-2.24129483194256,\ +-1.69897,-0.253782,-2.79839343434343,3.14764687639314,-0.67892270683643,-0.0417678647925513,-2.24130018942487,\ +-1.69897,-0.253782,-2.77086262626263,3.14764598685719,-0.678924707450878,-0.041773090181142,-2.24130529410052,\ +-1.69897,-0.253782,-2.74333181818182,3.14764513832876,-0.678926615837162,-0.0417780746797542,-2.24131016345105,\ +-1.69897,-0.253782,-2.71580101010101,3.14764432803611,-0.678928438229168,-0.0417828345705956,-2.24131481338252,\ +-1.69897,-0.253782,-2.6882702020202,3.14764355345171,-0.678930180311328,-0.0417873847008134,-2.2413192583991,\ +-1.69897,-0.253782,-2.66073939393939,3.14764281226607,-0.678931847277883,-0.0417917386371873,-2.24132351175416,\ +-1.69897,-0.253782,-2.63320858585858,3.14764210236463,-0.678933443884583,-0.0417959088012353,-2.24132758558226,\ +-1.69897,-0.253782,-2.60567777777778,3.14764142180766,-0.67893497449402,-0.0417999065875646,-2.24133149101477,\ +-1.69897,-0.253782,-2.57814696969697,3.14764076881251,-0.678936443115418,-0.0418037424678437,-2.24133523828148,\ +-1.69897,-0.253782,-2.55061616161616,3.14764014173807,-0.678937853439714,-0.0418074260823927,-2.24133883679997,\ +-1.69897,-0.253782,-2.52308535353535,3.147639539071,-0.678939208870519,-0.0418109663210795,-2.24134229525476,\ +-1.69897,-0.253782,-2.49555454545454,3.14763895941351,-0.678940512551548,-0.0418143713949487,-2.2413456216672,\ +-1.69897,-0.253782,-2.46802373737374,3.14763840147254,-0.678941767390962,-0.0418176488998014,-2.24134882345765,\ +-1.69897,-0.253782,-2.44049292929293,3.14763786405013,-0.678942976083024,-0.0418208058727602,-2.24135190750062,\ +-1.69897,-0.253782,-2.41296212121212,3.14763734603484,-0.678944141127408,-0.0418238488427054,-2.24135488017419,\ +-1.69897,-0.253782,-2.38543131313131,3.1476368463941,-0.678945264846456,-0.041826783875345,-2.24135774740395,\ +-1.69897,-0.253782,-2.3579005050505,3.14763636416727,-0.678946349400633,-0.0418296166135719,-2.24136051470242,\ +-1.69897,-0.253782,-2.3303696969697,3.14763589845959,-0.678947396802381,-0.0418323523136734,-2.24136318720446,\ +-1.69897,-0.253782,-2.30283888888889,3.14763544843653,-0.678948408928592,-0.0418349958778841,-2.24136576969907,\ +-1.69897,-0.253782,-2.27530808080808,3.14763501331882,-0.678949387531823,-0.0418375518836998,-2.24136826665799,\ +-1.69897,-0.253782,-2.24777727272727,3.14763459237802,-0.678950334250434,-0.0418400246103316,-2.24137068226157,\ +-1.69897,-0.253782,-2.22024646464646,3.14763418493237,-0.678951250617729,-0.0418424180626113,-2.24137302042214,\ +-1.69897,-0.253782,-2.19271565656565,3.14763379034314,-0.678952138070254,-0.0418447359926368,-2.24137528480511,\ +-1.69897,-0.253782,-2.16518484848485,3.14763340801126,-0.678952997955302,-0.0418469819193982,-2.24137747884819,\ +-1.69897,-0.253782,-2.13765404040404,3.14763303737435,-0.678953831537748,-0.0418491591466047,-2.24137960577875,\ +-1.69897,-0.253782,-2.11012323232323,3.14763267790389,-0.678954640006249,-0.0418512707788985,-2.24138166862973,\ +-1.69897,-0.253782,-2.08259242424242,3.14763232910273,-0.678955424478897,-0.0418533197366267,-2.241383670254,\ +-1.69897,-0.253782,-2.05506161616161,3.14763199050283,-0.678956186008392,-0.0418553087693158,-2.24138561333757,\ +-1.69897,-0.253782,-2.02753080808081,3.14763166166308,-0.678956925586739,-0.0418572404679817,-2.24138750041161,\ +-1.69897,-0.253782,-2,3.14763134216751,-0.678957644149569,-0.04185911727639,-2.24138933386342,\ +-1.69897,-0.251804,-4.72555,3.14755451275837,-0.679130437643685,-0.0423104351973389,-2.24183022578192,\ +-1.69897,-0.251804,-4.69801919191919,3.14755252825113,-0.679134900907763,-0.0423220927604557,-2.2418416140409,\ +-1.69897,-0.251804,-4.67048838383838,3.14755039421873,-0.679139700461981,-0.0423346286770557,-2.2418538603623,\ +-1.69897,-0.251804,-4.64295757575758,3.14754809310038,-0.67914487580154,-0.0423481461043324,-2.24186706552029,\ +-1.69897,-0.251804,-4.61542676767677,3.14754560447335,-0.679150472858248,-0.0423627650111917,-2.24188134671231,\ +-1.69897,-0.251804,-4.58789595959596,3.14754290444523,-0.679156545367433,-0.0423786257485066,-2.24189684104696,\ +-1.69897,-0.251804,-4.56036515151515,3.14753996488439,-0.679163156598673,-0.0423958935695775,-2.24191370996,\ +-1.69897,-0.251804,-4.53283434343434,3.14753675243609,-0.679170381568525,-0.0424147644095335,-2.2419321448602,\ +-1.69897,-0.251804,-4.50530353535354,3.14753322725139,-0.67917830989948,-0.0424354723526319,-2.24195237442419,\ +-1.69897,-0.251804,-4.47777272727273,3.1475293413256,-0.679187049556627,-0.0424582993919988,-2.2419746741307,\ +-1.69897,-0.251804,-4.45024191919192,3.14752503629939,-0.6791967317933,-0.0424835883471627,-2.24199937887971,\ +-1.69897,-0.251804,-4.42271111111111,3.14752024050765,-0.679207517788145,-0.0425117601993142,-2.24202689992722,\ +-1.69897,-0.251804,-4.3951803030303,3.1475148649583,-0.6792196076892,-0.042543337713484,-2.24205774796173,\ +-1.69897,-0.251804,-4.36764949494949,3.14750879775874,-0.679233253148984,-0.0425789781788322,-2.24209256508823,\ +-1.69897,-0.251804,-4.34011868686869,3.14750189624308,-0.679248775030771,-0.0426195196555393,-2.24213217000666,\ +-1.69897,-0.251804,-4.31258787878788,3.14749397561178,-0.679266588958696,-0.0426660477089048,-2.24217762320441,\ +-1.69897,-0.251804,-4.28505707070707,3.1474847921375,-0.679287243088767,-0.0427199940631327,-2.2422303233311,\ +-1.69897,-0.251804,-4.25752626262626,3.14747401764218,-0.679311475511138,-0.0427832865299109,-2.24229215366358,\ +-1.69897,-0.251804,-4.22999545454545,3.14746119945079,-0.679340304316471,-0.0428585842519219,-2.24236571191503,\ +-1.69897,-0.251804,-4.20246464646465,3.14744569516948,-0.679375174283219,-0.0429496608342756,-2.24245468451563,\ +-1.69897,-0.251804,-4.17493383838384,3.1474265616627,-0.679418206574225,-0.0430620565249209,-2.24256448372674,\ +-1.69897,-0.251804,-4.14740303030303,3.14740235573142,-0.679472647022092,-0.0432042490876187,-2.24270339146529,\ +-1.69897,-0.251804,-4.11987222222222,3.14737075204275,-0.679543725426233,-0.043389898192904,-2.24288475184651,\ +-1.69897,-0.251804,-4.09234141414141,3.14732774757277,-0.679640444803816,-0.0436425187480363,-2.24313153655422,\ +-1.69897,-0.251804,-4.06481060606061,3.14726581560722,-0.679779733142014,-0.0440063248249298,-2.24348693826055,\ +-1.69897,-0.251804,-4.0372797979798,3.14716893457308,-0.679997623824698,-0.0445754317256636,-2.24404289808764,\ +-1.69897,-0.251804,-4.00974898989899,3.14699589300022,-0.680386803675728,-0.045591927411111,-2.24503591146489,\ +-1.69897,-0.251804,-3.98221818181818,3.14659872272008,-0.681280061104628,-0.0479250192196019,-2.24731510596555,\ +-1.69897,-0.251804,-3.95468737373737,3.14474170788463,-0.685456587849714,-0.0588336554331486,-2.25797173918378,\ +-1.69897,-0.251804,-3.92715656565657,3.15103176058558,-0.671309919319156,-0.0218840870351961,-2.2218757515387,\ +-1.69897,-0.251804,-3.89962575757576,3.14868087842756,-0.676597180368485,-0.0356938411379406,-2.23536648323292,\ +-1.69897,-0.251804,-3.87209494949495,3.14824449427141,-0.677578631924218,-0.0382572864685107,-2.23787070980425,\ +-1.69897,-0.251804,-3.84456414141414,3.14806065650923,-0.677992092988611,-0.0393372020575215,-2.23892567800683,\ +-1.69897,-0.251804,-3.81703333333333,3.14795933355587,-0.678219973787718,-0.0399324020620238,-2.2395071281547,\ +-1.69897,-0.251804,-3.78950252525252,3.14789515331085,-0.678364318627993,-0.0403094151755477,-2.23987543179877,\ +-1.69897,-0.251804,-3.76197171717172,3.14785085581233,-0.678463946096655,-0.0405696313500982,-2.24012963665768,\ +-1.69897,-0.251804,-3.73444090909091,3.14781844089211,-0.678536849004394,-0.0407600458614761,-2.24031565235822,\ +-1.69897,-0.251804,-3.7069101010101,3.14779369281351,-0.678592508770921,-0.0409054231526667,-2.24045767125409,\ +-1.69897,-0.251804,-3.67937929292929,3.14777417917029,-0.678636396009327,-0.0410200518734687,-2.2405696519096,\ +-1.69897,-0.251804,-3.65184848484848,3.14775839809782,-0.678671888494353,-0.0411127544062396,-2.24066021289914,\ +-1.69897,-0.251804,-3.62431767676768,3.14774537213134,-0.678701184597061,-0.041189272658471,-2.24073496348506,\ +-1.69897,-0.251804,-3.59678686868687,3.14773443770294,-0.678725776717599,-0.0412535046179533,-2.2407977116068,\ +-1.69897,-0.251804,-3.56925606060606,3.14772512850216,-0.678746713613361,-0.041308189525591,-2.2408511332254,\ +-1.69897,-0.251804,-3.54172525252525,3.14771710724859,-0.678764753846225,-0.0413553086629821,-2.24089716385241,\ +-1.69897,-0.251804,-3.51419444444444,3.14771012395043,-0.678780459661273,-0.0413963305534803,-2.24093723808648,\ +-1.69897,-0.251804,-3.48666363636364,3.14770398938245,-0.678794256636254,-0.0414323667601412,-2.24097244181217,\ +-1.69897,-0.251804,-3.45913282828283,3.14769855768025,-0.678806472828099,-0.0414642741321954,-2.24100361208446,\ +-1.69897,-0.251804,-3.43160202020202,3.14769371459309,-0.678817365192919,-0.0414927238112187,-2.24103140454068,\ +-1.69897,-0.251804,-3.40407121212121,3.14768936935942,-0.678827137858333,-0.0415182489564782,-2.2410563400235,\ +-1.69897,-0.251804,-3.3765404040404,3.14768544896545,-0.678835955036263,-0.0415412784717523,-2.24107883752847,\ +-1.69897,-0.251804,-3.3490095959596,3.14768189400933,-0.678843950324741,-0.0415621613006556,-2.24109923793819,\ +-1.69897,-0.251804,-3.32147878787879,3.14767865567026,-0.678851233524366,-0.0415811842304823,-2.24111782141479,\ +-1.69897,-0.251804,-3.29394797979798,3.147675693453,-0.678857895711118,-0.0415985851418345,-2.24113482034357,\ +-1.69897,-0.251804,-3.26641717171717,3.1476729734857,-0.678864013064594,-0.0416145630075882,-2.24115042910085,\ +-1.69897,-0.251804,-3.23888636363636,3.14767046721898,-0.678869649793937,-0.0416292855350838,-2.24116481151974,\ +-1.69897,-0.251804,-3.21135555555555,3.14766815041995,-0.678874860400181,-0.0416428950751237,-2.24117810666256,\ +-1.69897,-0.251804,-3.18382474747475,3.1476660023862,-0.678879691444193,-0.041655513239661,-2.24119043333188,\ +-1.69897,-0.251804,-3.15629393939394,3.14766400532541,-0.678884182941851,-0.0416672445458367,-2.24120189363037,\ +-1.69897,-0.251804,-3.12876313131313,3.14766214386141,-0.678888369475019,-0.0416781793177461,-2.24121257579552,\ +-1.69897,-0.251804,-3.10123232323232,3.14766040463747,-0.678892281083668,-0.0416883960165374,-2.24122255647593,\ +-1.69897,-0.251804,-3.07370151515151,3.14765877599536,-0.678895943987812,-0.0416979631260624,-2.24123190257339,\ +-1.69897,-0.251804,-3.04617070707071,3.14765724771364,-0.678899381176007,-0.0417069406899316,-2.24124067274441,\ +-1.69897,-0.251804,-3.0186398989899,3.14765581079297,-0.678902612888278,-0.0417153815729125,-2.24124891863256,\ +-1.69897,-0.251804,-2.99110909090909,3.14765445727872,-0.678905657014981,-0.0417233325026752,-2.241256685886,\ +-1.69897,-0.251804,-2.96357828282828,3.1476531801137,-0.67890852942815,-0.0417308349352468,-2.24126401500309,\ +-1.69897,-0.251804,-2.93604747474747,3.14765197301503,-0.678911244258303,-0.0417379257780301,-2.24127094203864,\ +-1.69897,-0.251804,-2.90851666666667,3.1476508303708,-0.678913814126936,-0.041744637996999,-2.24127749919705,\ +-1.69897,-0.251804,-2.88098585858586,3.14764974715283,-0.678916250342716,-0.0417510011291621,-2.24128371533298,\ +-1.69897,-0.251804,-2.85345505050505,3.14764871884268,-0.67891856306784,-0.0417570417170929,-2.24128961637585,\ +-1.69897,-0.251804,-2.82592424242424,3.14764774136866,-0.678920761459745,-0.0417627836790171,-2.24129522569136,\ +-1.69897,-0.251804,-2.79839343434343,3.14764681105196,-0.678922853792278,-0.0417682486253348,-2.24130056439064,\ +-1.69897,-0.251804,-2.77086262626263,3.14764592456038,-0.678924847559768,-0.0417734561304126,-2.24130565159592,\ +-1.69897,-0.251804,-2.74333181818182,3.14764507886841,-0.678926749566703,-0.0417784239668476,-2.24131050466919,\ +-1.69897,-0.251804,-2.71580101010101,3.14764427122281,-0.678928566005331,-0.0417831683081141,-2.24131513941029,\ +-1.69897,-0.251804,-2.6882702020202,3.14764349911257,-0.678930302522992,-0.0417877039044622,-2.24131957022876,\ +-1.69897,-0.251804,-2.66073939393939,3.14764276024292,-0.678931964280778,-0.0417920442360984,-2.24132381029336,\ +-1.69897,-0.251804,-2.63320858585858,3.1476420525125,-0.678933556004753,-0.0417962016469982,-2.24132787166292,\ +-1.69897,-0.251804,-2.60567777777778,3.14764137399341,-0.678935082030856,-0.04180018746215,-2.24133176540081,\ +-1.69897,-0.251804,-2.57814696969697,3.1476407229137,-0.678936546344322,-0.0418040120905754,-2.24133550167559,\ +-1.69897,-0.251804,-2.55061616161616,3.14764009764187,-0.678937952614457,-0.0418076851160979,-2.24133908984967,\ +-1.69897,-0.251804,-2.52308535353535,3.14763949667326,-0.678939304225327,-0.0418112153775277,-2.24134253855769,\ +-1.69897,-0.251804,-2.49555454545454,3.14763891861797,-0.678940604302945,-0.0418146110396757,-2.24134585577585,\ +-1.69897,-0.251804,-2.46802373737374,3.14763836219005,-0.678941855739411,-0.0418178796563956,-2.24134904888347,\ +-1.69897,-0.251804,-2.44049292929293,3.14763782619805,-0.678943061214387,-0.0418210282266803,-2.24135212471788,\ +-1.69897,-0.251804,-2.41296212121212,3.14763730953644,-0.678944223214262,-0.0418240632446901,-2.24135508962323,\ +-1.69897,-0.251804,-2.38543131313131,3.14763681117805,-0.678945344049244,-0.0418269907444617,-2.24135794949413,\ +-1.69897,-0.251804,-2.3579005050505,3.14763633016716,-0.678946425868725,-0.0418298163399506,-2.24136070981487,\ +-1.69897,-0.251804,-2.3303696969697,3.14763586561351,-0.678947470675,-0.0418325452609625,-2.24136337569443,\ +-1.69897,-0.251804,-2.30283888888889,3.1476354166867,-0.678948480335674,-0.041835182385458,-2.24136595189809,\ +-1.69897,-0.251804,-2.27530808080808,3.14763498261127,-0.678949456594772,-0.0418377322686532,-2.24136844287582,\ +-1.69897,-0.251804,-2.24777727272727,3.14763456266225,-0.678950401082812,-0.0418401991692768,-2.24137085278799,\ +-1.69897,-0.251804,-2.22024646464646,3.1476341561611,-0.678951315325881,-0.0418425870733066,-2.24137318552848,\ +-1.69897,-0.251804,-2.19271565656565,3.14763376247203,-0.678952200753868,-0.0418448997154605,-2.24137544474574,\ +-1.69897,-0.251804,-2.16518484848485,3.14763338099874,-0.678953058707928,-0.0418471405986875,-2.24137763386179,\ +-1.69897,-0.251804,-2.13765404040404,3.14763301118134,-0.678953890447257,-0.0418493130118711,-2.24137975608954,\ +-1.69897,-0.251804,-2.11012323232323,3.14763265249365,-0.67895469715526,-0.0418514200459371,-2.24138181444852,\ +-1.69897,-0.251804,-2.08259242424242,3.14763230444069,-0.678955479945166,-0.0418534646085242,-2.24138381177918,\ +-1.69897,-0.251804,-2.05506161616161,3.14763196655641,-0.678956239865161,-0.0418554494373739,-2.24138575075602,\ +-1.69897,-0.251804,-2.02753080808081,3.14763163840161,-0.678956977903062,-0.0418573771125587,-2.24138763389952,\ +-1.69897,-0.251804,-2,3.147631319562,-0.678957694990602,-0.0418592500676728,-2.24138946358706,\ +-1.69897,-0.247083,-4.72555,3.1475541823912,-0.679131180657335,-0.0423123758686411,-2.24183212162131,\ +-1.69897,-0.247083,-4.69801919191919,3.14755217338241,-0.679135699026676,-0.0423241773607524,-2.24184365048435,\ +-1.69897,-0.247083,-4.67048838383838,3.14755001201814,-0.679140560051762,-0.0423368738326106,-2.241856053652,\ +-1.69897,-0.247083,-4.64295757575758,3.14754768028423,-0.679145804247373,-0.0423505711044457,-2.2418694344999,\ +-1.69897,-0.247083,-4.61542676767677,3.14754515721008,-0.679151478777514,-0.0423653923635347,-2.24188391336957,\ +-1.69897,-0.247083,-4.58789595959596,3.1475424182362,-0.679157638877846,-0.0423814818794547,-2.24189963119776,\ +-1.69897,-0.247083,-4.56036515151515,3.14753943441206,-0.679164349659601,-0.0423990097157037,-2.2419167541193,\ +-1.69897,-0.247083,-4.53283434343434,3.14753617136896,-0.679171688419912,-0.0424181777640344,-2.24193547936199,\ +-1.69897,-0.247083,-4.50530353535354,3.14753258799015,-0.679179747632564,-0.0424392275559691,-2.24195604287769,\ +-1.69897,-0.247083,-4.47777272727273,3.14752863466923,-0.679188638865024,-0.0424624504936607,-2.24197872933678,\ +-1.69897,-0.247083,-4.45024191919192,3.14752425099973,-0.679198497974657,-0.0424882014218711,-2.24200388538669,\ +-1.69897,-0.247083,-4.42271111111111,3.14751936266683,-0.67920949209959,-0.0425169168873121,-2.24203193748934,\ +-1.69897,-0.247083,-4.3951803030303,3.14751387719979,-0.679221829211459,-0.0425491400893894,-2.24206341629557,\ +-1.69897,-0.247083,-4.36764949494949,3.14750767806683,-0.679235771396613,-0.0425855555693189,-2.24209899053286,\ +-1.69897,-0.247083,-4.34011868686869,3.14750061630453,-0.679251653681725,-0.0426270383805452,-2.24213951503981,\ +-1.69897,-0.247083,-4.31258787878788,3.14749249839192,-0.679269911306005,-0.0426747253208024,-2.24218610035274,\ +-1.69897,-0.247083,-4.28505707070707,3.14748306824385,-0.679291120218794,-0.0427301207075023,-2.24224021603746,\ +-1.69897,-0.247083,-4.25752626262626,3.14747197970457,-0.679316058943,-0.0427952579582796,-2.24230384853714,\ +-1.69897,-0.247083,-4.22999545454545,3.1474587531305,-0.679345806223041,-0.0428729546369175,-2.24237975032636,\ +-1.69897,-0.247083,-4.20246464646465,3.14744270417867,-0.679381901183226,-0.0429672307696508,-2.24247184856376,\ +-1.69897,-0.247083,-4.17493383838384,3.14742282156387,-0.679426618258653,-0.0430840269350198,-2.24258594659318,\ +-1.69897,-0.247083,-4.14740303030303,3.1473975453321,-0.679483465870195,-0.0432325067489308,-2.24273099633965,\ +-1.69897,-0.247083,-4.11987222222222,3.14736433637317,-0.679558154613923,-0.0434275856707989,-2.24292156869703,\ +-1.69897,-0.247083,-4.09234141414141,3.14731876517866,-0.679660646693689,-0.0436952838997774,-2.24318308276566,\ +-1.69897,-0.247083,-4.06481060606061,3.14725235022388,-0.679810017517032,-0.0440854243375651,-2.24356421047656,\ +-1.69897,-0.247083,-4.0372797979798,3.14714655079114,-0.680047966160216,-0.0447069204620759,-2.24417134927153,\ +-1.69897,-0.247083,-4.00974898989899,3.14695156871233,-0.680486491395133,-0.0458523009540813,-2.24529027005683,\ +-1.69897,-0.247083,-3.98221818181818,3.14647249000308,-0.681563965308614,-0.0486665462993581,-2.24803950285217,\ +-1.69897,-0.247083,-3.95468737373737,3.1434221857136,-0.688424264538577,-0.0665849060234381,-2.26554392629373,\ +-1.69897,-0.247083,-3.92715656565657,3.15009623232583,-0.673413972944915,-0.0273796475758272,-2.22724435783041,\ +-1.69897,-0.247083,-3.89962575757576,3.14856794878095,-0.676851165248064,-0.0363572221777746,-2.23601453934984,\ +-1.69897,-0.247083,-3.87209494949495,3.14820302857115,-0.677671890525509,-0.0385008678502119,-2.23810866415462,\ +-1.69897,-0.247083,-3.84456414141414,3.14803931300198,-0.678040095690143,-0.0394625799229687,-2.23904815948843,\ +-1.69897,-0.247083,-3.81703333333333,3.14794635734267,-0.678249157992646,-0.040008628049359,-2.2395815932274,\ +-1.69897,-0.247083,-3.78950252525252,3.1478864387599,-0.678383918124149,-0.0403606069400422,-2.23992544097015,\ +-1.69897,-0.247083,-3.76197171717172,3.14784460238143,-0.678478010400763,-0.0406063657915295,-2.24016552248807,\ +-1.69897,-0.247083,-3.73444090909091,3.14781373609287,-0.678547430352223,-0.0407876831977553,-2.24034265123783,\ +-1.69897,-0.247083,-3.7069101010101,3.14779002525178,-0.6786007573155,-0.040926967459117,-2.2404787178604,\ +-1.69897,-0.247083,-3.67937929292929,3.14777124013412,-0.678643006060538,-0.0410373166124266,-2.24058651781173,\ +-1.69897,-0.247083,-3.65184848484848,3.14775599025542,-0.678677303862038,-0.0411268987610249,-2.24067403050184,\ +-1.69897,-0.247083,-3.62431767676768,3.14774336348066,-0.678705702161028,-0.0412010720470275,-2.24074649029314,\ +-1.69897,-0.247083,-3.59678686868687,3.14773273661417,-0.678729602558174,-0.0412634972998122,-2.24080747344535,\ +-1.69897,-0.247083,-3.56925606060606,3.14772366938526,-0.678749995246123,-0.0413167607954927,-2.24085950648836,\ +-1.69897,-0.247083,-3.54172525252525,3.14771584191976,-0.67876759963918,-0.0413627415664404,-2.2409044250466,\ +-1.69897,-0.247083,-3.51419444444444,3.14770901621891,-0.67878295100933,-0.0414028376851931,-2.2409435948954,\ +-1.69897,-0.247083,-3.48666363636364,3.14770301153877,-0.678796455859544,-0.0414381108935521,-2.24097805324899,\ +-1.69897,-0.247083,-3.45913282828283,3.14769768814979,-0.678808428449118,-0.0414693820028166,-2.24100860195694,\ +-1.69897,-0.247083,-3.43160202020202,3.14769293632766,-0.678819115553946,-0.04149729556494,-2.24103587068124,\ +-1.69897,-0.247083,-3.40407121212121,3.14768866870958,-0.678828713657688,-0.041522364773984,-2.24106036076053,\ +-1.69897,-0.247083,-3.3765404040404,3.14768481487391,-0.678837381142423,-0.0415450033068223,-2.24108247631524,\ +-1.69897,-0.247083,-3.3490095959596,3.14768131742356,-0.678845247097318,-0.041565548330391,-2.24110254672334,\ +-1.69897,-0.247083,-3.32147878787879,3.14767812910793,-0.678852417791512,-0.0415842774082028,-2.24112084313628,\ +-1.69897,-0.247083,-3.29394797979798,3.14767521067573,-0.678858981503291,-0.0416014211135721,-2.24113759080084,\ +-1.69897,-0.247083,-3.26641717171717,3.1476725292509,-0.678865012172677,-0.041617172569859,-2.241152978379,\ +-1.69897,-0.247083,-3.23888636363636,3.14767005708878,-0.678870572198903,-0.0416316947571075,-2.24116716508575,\ +-1.69897,-0.247083,-3.21135555555555,3.14766777061257,-0.678875714607497,-0.0416451261722613,-2.2411802862186,\ +-1.69897,-0.247083,-3.18382474747475,3.147665649659,-0.678880484746735,-0.0416575852601158,-2.24119245748611,\ +-1.69897,-0.247083,-3.15629393939394,3.14766367688213,-0.678884921628542,-0.0416691739155904,-2.2412037784293,\ +-1.69897,-0.247083,-3.12876313131313,3.14766183727793,-0.678889058997817,-0.0416799802767333,-2.24121433515012,\ +-1.69897,-0.247083,-3.10123232323232,3.14766011780192,-0.678892926192316,-0.0416900809705691,-2.24122420250543,\ +-1.69897,-0.247083,-3.07370151515151,3.14765850705938,-0.678896548839357,-0.041699542932888,-2.24123344588471,\ +-1.69897,-0.247083,-3.04617070707071,3.14765699505257,-0.678899949424437,-0.0417084248933857,-2.24124212266094,\ +-1.69897,-0.247083,-3.0186398989899,3.14765557297293,-0.678903147758394,-0.0417167785958141,-2.2412502833825,\ +-1.69897,-0.247083,-2.99110909090909,3.1476542330295,-0.678906161363597,-0.041724649806714,-2.24125797275868,\ +-1.69897,-0.247083,-2.96357828282828,3.147652968306,-0.678909005795121,-0.0417320791542672,-2.24126523047912,\ +-1.69897,-0.247083,-2.93604747474747,3.14765177264145,-0.678911694909311,-0.041739102829732,-2.24127209189899,\ +-1.69897,-0.247083,-2.90851666666667,3.14765064052985,-0.678914241089496,-0.0417457531770325,-2.24127858861504,\ +-1.69897,-0.247083,-2.88098585858586,3.14764956703535,-0.678916655436668,-0.0417520591907639,-2.24128474895205,\ +-1.69897,-0.247083,-2.85345505050505,3.14764854772031,-0.678918947931285,-0.0417580469387962,-2.24129059837569,\ +-1.69897,-0.247083,-2.82592424242424,3.14764757858403,-0.678921127571168,-0.0417637399224654,-2.2412961598444,\ +-1.69897,-0.247083,-2.79839343434343,3.14764665601022,-0.678923202489528,-0.041769159384849,-2.24130145411049,\ +-1.69897,-0.247083,-2.77086262626263,3.14764577672194,-0.678925180056397,-0.0417743245756487,-2.24130649997899,\ +-1.69897,-0.247083,-2.74333181818182,3.14764493774269,-0.67892706696606,-0.0417792529796461,-2.24131131453076,\ +-1.69897,-0.247083,-2.71580101010101,3.14764413636279,-0.678928869312805,-0.0417839605144422,-2.24131591331567,\ +-1.69897,-0.247083,-2.6882702020202,3.14764337011004,-0.678930592656647,-0.0417884617021941,-2.24132031052042,\ +-1.69897,-0.247083,-2.66073939393939,3.1476426367244,-0.678932242080624,-0.0417927698192532,-2.24132451911464,\ +-1.69897,-0.247083,-2.63320858585858,3.14764193413555,-0.678933822240873,-0.0417968970269519,-2.24132855097873,\ +-1.69897,-0.247083,-2.60567777777778,3.14764126044359,-0.678935337410533,-0.0418008544862528,-2.24133241701583,\ +-1.69897,-0.247083,-2.57814696969697,3.14764061390164,-0.678936791518316,-0.0418046524585369,-2.24133612725025,\ +-1.69897,-0.247083,-2.55061616161616,3.14763999290091,-0.678938188182536,-0.0418083003944475,-2.24133969091433,\ +-1.69897,-0.247083,-2.52308535353535,3.14763939595723,-0.678939530741169,-0.0418118070124079,-2.24134311652508,\ +-1.69897,-0.247083,-2.49555454545454,3.14763882169921,-0.678940822278474,-0.0418151803681879,-2.24134641195216,\ +-1.69897,-0.247083,-2.46802373737374,3.1476382688578,-0.678942065648671,-0.0418184279166868,-2.24134958447827,\ +-1.69897,-0.247083,-2.44049292929293,3.14763773625686,-0.678943263496979,-0.0418215565669318,-2.24135264085283,\ +-1.69897,-0.247083,-2.41296212121212,3.14763722280481,-0.678944418278406,-0.0418245727311414,-2.24135558733992,\ +-1.69897,-0.247083,-2.38543131313131,3.14763672748718,-0.678945532274546,-0.0418274823685927,-2.24135842976113,\ +-1.69897,-0.247083,-2.3579005050505,3.1476362493599,-0.678946607608624,-0.041830291024921,-2.24136117353403,\ +-1.69897,-0.247083,-2.3303696969697,3.14763578754335,-0.678947646259005,-0.0418330038673966,-2.24136382370648,\ +-1.69897,-0.247083,-2.30283888888889,3.1476353412169,-0.678948650071335,-0.0418356257166516,-2.24136638498777,\ +-1.69897,-0.247083,-2.27530808080808,3.14763490961404,-0.678949620769491,-0.0418381610752687,-2.24136886177648,\ +-1.69897,-0.247083,-2.24777727272727,3.14763449201805,-0.678950559965464,-0.0418406141535845,-2.24137125818564,\ +-1.69897,-0.247083,-2.22024646464646,3.14763408775794,-0.678951469168281,-0.0418429888930222,-2.24137357806566,\ +-1.69897,-0.247083,-2.19271565656565,3.14763369620495,-0.678952349792107,-0.0418452889872234,-2.24137582502484,\ +-1.69897,-0.247083,-2.16518484848485,3.14763331676923,-0.678953203163575,-0.0418475179012179,-2.24137800244817,\ +-1.69897,-0.247083,-2.13765404040404,3.14763294889683,-0.678954030528467,-0.0418496788888414,-2.2413801135143,\ +-1.69897,-0.247083,-2.11012323232323,3.14763259206712,-0.678954833057765,-0.0418517750085842,-2.24138216121109,\ +-1.69897,-0.247083,-2.08259242424242,3.14763224579025,-0.678955611853197,-0.0418538091380335,-2.24138414834963,\ +-1.69897,-0.247083,-2.05506161616161,3.14763190960487,-0.678956367952272,-0.0418557839870552,-2.24138607757719,\ +-1.69897,-0.247083,-2.02753080808081,3.1476315830762,-0.678957102332898,-0.0418577021098359,-2.24138795138897,\ +-1.69897,-0.247083,-2,3.14763126579406,-0.678957815917597,-0.0418595659159059,-2.2413897721388,\ +-1.69897,-0.245821,-4.72555,3.14755409340116,-0.679131380800741,-0.0423128986215791,-2.241832632298,\ +-1.69897,-0.245821,-4.69801919191919,3.14755207776585,-0.679135914073525,-0.0423247390398663,-2.24184419918798,\ +-1.69897,-0.245821,-4.67048838383838,3.14754990900634,-0.679140791730864,-0.0423374789533678,-2.24185664479371,\ +-1.69897,-0.245821,-4.64295757575758,3.14754756898487,-0.679146054565645,-0.0423512249087035,-2.24187007320048,\ +-1.69897,-0.245821,-4.61542676767677,3.14754503658127,-0.679151750078243,-0.0423661009717053,-2.24188460560801,\ +-1.69897,-0.245821,-4.58789595959596,3.14754228705376,-0.679157933914229,-0.0423822524825842,-2.241900383999,\ +-1.69897,-0.245821,-4.56036515151515,3.14753929122793,-0.679164671688454,-0.0423998508202435,-2.24191757579329,\ +-1.69897,-0.245821,-4.53283434343434,3.14753601445748,-0.679172041322322,-0.0424190995069643,-2.24193637981152,\ +-1.69897,-0.245821,-4.50530353535354,3.14753241527825,-0.679180136070961,-0.0424402421150536,-2.2419570339992,\ +-1.69897,-0.245821,-4.47777272727273,3.14752844364439,-0.679189068490177,-0.0424635726281072,-2.24197982554853,\ +-1.69897,-0.245821,-4.45024191919192,3.14752403858711,-0.679198975702155,-0.0424894491944384,-2.24200510433416,\ +-1.69897,-0.245821,-4.42271111111111,3.1475191250625,-0.679210026484577,-0.0425183126431049,-2.24203330100145,\ +-1.69897,-0.245821,-4.3951803030303,3.14751360964132,-0.679222430964958,-0.0425507118044565,-2.24206495170208,\ +-1.69897,-0.245821,-4.36764949494949,3.14750737451102,-0.679236454110034,-0.0425873387429471,-2.24210073251297,\ +-1.69897,-0.245821,-4.34011868686869,3.1475002689662,-0.679252434864426,-0.0426290787452794,-2.2421415082696,\ +-1.69897,-0.245821,-4.31258787878788,3.14749209706767,-0.679270813905943,-0.0426770828142371,-2.24218840338516,\ +-1.69897,-0.245821,-4.28505707070707,3.14748259929476,-0.679292174910603,-0.0427328754484537,-2.24224290714048,\ +-1.69897,-0.245821,-4.25752626262626,3.14747142447852,-0.679317307676419,-0.0427985195149426,-2.24230703474781,\ +-1.69897,-0.245821,-4.22999545454545,3.14745808542761,-0.679347307922904,-0.0428768769145665,-2.24238358199454,\ +-1.69897,-0.245821,-4.20246464646465,3.14744188600846,-0.679383741292246,-0.042972036935427,-2.24247654370116,\ +-1.69897,-0.245821,-4.17493383838384,3.14742179568133,-0.679428925523939,-0.0430900532624382,-2.24259183370498,\ +-1.69897,-0.245821,-4.14740303030303,3.14739622129324,-0.679486443705178,-0.043240284531888,-2.24273859444621,\ +-1.69897,-0.245821,-4.11987222222222,3.1473625624513,-0.679562144260101,-0.0434380061951814,-2.2429317484944,\ +-1.69897,-0.245821,-4.09234141414141,3.14731626607839,-0.679666267305312,-0.043709964329524,-2.24319742405932,\ +-1.69897,-0.245821,-4.06481060606061,3.14724856991722,-0.679818519631062,-0.0441076309399993,-2.243585904079,\ +-1.69897,-0.245821,-4.0372797979798,3.1471401763735,-0.680062302570056,-0.0447443656142567,-2.24420792939435,\ +-1.69897,-0.245821,-4.00974898989899,3.14693861346877,-0.680515628438199,-0.0459284037597301,-2.24536461479349,\ +-1.69897,-0.245821,-3.98221818181818,3.14643321894407,-0.681652288043118,-0.0488972357307676,-2.24826486307226,\ +-1.69897,-0.245821,-3.95468737373737,3.14283489747341,-0.68974510753637,-0.0700348050992871,-2.26891412843188,\ +-1.69897,-0.245821,-3.92715656565657,3.14992688182268,-0.67379485138067,-0.028374460862281,-2.22821618969893,\ +-1.69897,-0.245821,-3.89962575757576,3.14854168176495,-0.676910241186905,-0.0365115221416332,-2.2361652747936,\ +-1.69897,-0.245821,-3.87209494949495,3.1481928452387,-0.677694793390648,-0.0385606876572627,-2.2381671020501,\ +-1.69897,-0.245821,-3.84456414141414,3.14803394509295,-0.678052168407722,-0.0394941125557537,-2.23907896367838,\ +-1.69897,-0.245821,-3.81703333333333,3.14794304989942,-0.678256596611255,-0.040028056916759,-2.23960057326392,\ +-1.69897,-0.245821,-3.78950252525252,3.1478841984554,-0.678388956690048,-0.0403737671293016,-2.23993829714276,\ +-1.69897,-0.245821,-3.76197171717172,3.14784298517675,-0.67848164758152,-0.0406158657143473,-2.24017480295091,\ +-1.69897,-0.245821,-3.73444090909091,3.1478125140433,-0.678550178807761,-0.0407948618664041,-2.24034966407035,\ +-1.69897,-0.245821,-3.7069101010101,3.14778906941834,-0.678602907036568,-0.0409325822980801,-2.24048420298964,\ +-1.69897,-0.245821,-3.67937929292929,3.14777047213264,-0.678644733337374,-0.041041828072735,-2.24059092505171,\ +-1.69897,-0.245821,-3.65184848484848,3.1477553597057,-0.678678722002451,-0.0411306027904296,-2.24067764896357,\ +-1.69897,-0.245821,-3.62431767676768,3.14774283653202,-0.678706887297008,-0.0412041674940478,-2.24074951423151,\ +-1.69897,-0.245821,-3.59678686868687,3.14773228968321,-0.678730607730076,-0.0412661227001222,-2.24081003819565,\ +-1.69897,-0.245821,-3.56925606060606,3.14772328553897,-0.678750858537223,-0.041319015618489,-2.24086170922216,\ +-1.69897,-0.245821,-3.54172525252525,3.14771550868641,-0.678768349098983,-0.0413646990743955,-2.2409063373337,\ +-1.69897,-0.245821,-3.51419444444444,3.14770872421013,-0.678783607752878,-0.0414045530283182,-2.24094527061198,\ +-1.69897,-0.245821,-3.48666363636364,3.1477027535523,-0.678797036085063,-0.0414396263798626,-2.2409795337257,\ +-1.69897,-0.245821,-3.45913282828283,3.14769745856838,-0.678808944790103,-0.041470730629636,-2.24100991942881,\ +-1.69897,-0.245821,-3.43160202020202,3.14769273070589,-0.678819578008428,-0.0414985034460366,-2.24103705065879,\ +-1.69897,-0.245821,-3.40407121212121,3.14768848348346,-0.678829130241258,-0.0415234528452232,-2.24106142369598,\ +-1.69897,-0.245821,-3.3765404040404,3.14768464715279,-0.678837758356305,-0.0415459885486881,-2.2410834387968,\ +-1.69897,-0.245821,-3.3490095959596,3.14768116483831,-0.678845590269802,-0.0415664446598121,-2.24110342234645,\ +-1.69897,-0.245821,-3.32147878787879,3.14767798969842,-0.678852731331037,-0.041585096339527,-2.24112164314928,\ +-1.69897,-0.245821,-3.29394797979798,3.14767508280624,-0.67885926908868,-0.041602172255514,-2.24113832459048,\ +-1.69897,-0.245821,-3.26641717171717,3.14767241154567,-0.678865276898093,-0.0416178640040172,-2.24115365384018,\ +-1.69897,-0.245821,-3.23888636363636,3.14766994838236,-0.678870816685523,-0.0416323333297168,-2.24116778890654,\ +-1.69897,-0.245821,-3.21135555555555,3.1476676699111,-0.67887594109056,-0.0416457177215279,-2.24118086410234,\ +-1.69897,-0.245821,-3.18382474747475,3.14766555610975,-0.678880695144046,-0.041658134795138,-2.24119299432619,\ +-1.69897,-0.245821,-3.15629393939394,3.14766358974934,-0.678885117594881,-0.0416696857584789,-2.24120427844798,\ +-1.69897,-0.245821,-3.12876313131313,3.14766175592341,-0.678889241968539,-0.0416804581764711,-2.24121480200979,\ +-1.69897,-0.245821,-3.10123232323232,3.14766004166937,-0.678893097418543,-0.0416905281949533,-2.24122463939839,\ +-1.69897,-0.245821,-3.07370151515151,3.14765843566169,-0.678896709416617,-0.041699962343325,-2.24123385560625,\ +-1.69897,-0.245821,-3.04617070707071,3.14765692796137,-0.678900100316125,-0.0417088190061558,-2.24124250766921,\ +-1.69897,-0.245821,-3.0186398989899,3.14765550981005,-0.678903289815103,-0.0417171496325792,-2.24125064584786,\ +-1.69897,-0.245821,-2.99110909090909,3.14765417345976,-0.678906295339162,-0.0417249997364078,-2.24125831460457,\ +-1.69897,-0.245821,-2.96357828282828,3.14765291203128,-0.678909132359997,-0.0417324097280352,-2.24126555341622,\ +-1.69897,-0.245821,-2.93604747474747,3.14765171939575,-0.67891181466178,-0.041739415610233,-2.24127239745388,\ +-1.69897,-0.245821,-2.90851666666667,3.14765059007502,-0.678914354565135,-0.0417460495631317,-2.24127887815425,\ +-1.69897,-0.245821,-2.88098585858586,3.14764951915758,-0.67891676311635,-0.0417523404384453,-2.24128502370256,\ +-1.69897,-0.245821,-2.85345505050505,3.14764850222709,-0.678919050247985,-0.0417583141789489,-2.24129085944226,\ +-1.69897,-0.245821,-2.82592424242424,3.14764753530155,-0.678921224915784,-0.0417639941760798,-2.24129640822443,\ +-1.69897,-0.245821,-2.79839343434343,3.14764661478117,-0.678923295215882,-0.0417694015760482,-2.24130169070677,\ +-1.69897,-0.245821,-2.77086262626263,3.14764573740359,-0.6789252684855,-0.0417745555429104,-2.24130672561062,\ +-1.69897,-0.245821,-2.74333181818182,3.14764490020523,-0.678927151389868,-0.0417794734854995,-2.24131152994265,\ +-1.69897,-0.245821,-2.71580101010101,3.14764410048788,-0.678928949997401,-0.0417841712538759,-2.24131611918677,\ +-1.69897,-0.245821,-2.6882702020202,3.14764333578965,-0.678930669845056,-0.0417886633099721,-2.2413205074708,\ +-1.69897,-0.245821,-2.66073939393939,3.14764260385962,-0.678932315995263,-0.0417929628762995,-2.24132470771183,\ +-1.69897,-0.245821,-2.63320858585858,3.14764190263573,-0.678933893085687,-0.0417970820659406,-2.2413287317431,\ +-1.69897,-0.245821,-2.60567777777778,3.14764123022541,-0.678935405372865,-0.041801031996515,-2.24133259042539,\ +-1.69897,-0.245821,-2.57814696969697,3.14764058488844,-0.678936856770576,-0.0418048228903811,-2.24133629374491,\ +-1.69897,-0.245821,-2.55061616161616,3.14763996502203,-0.67893825088365,-0.0418084641629738,-2.2413398508996,\ +-1.69897,-0.245821,-2.52308535353535,3.14763936914741,-0.678939591037873,-0.0418119645008822,-2.24134327037538,\ +-1.69897,-0.245821,-2.49555454545454,3.14763879589814,-0.678940880306469,-0.0418153319310369,-2.24134656001372,\ +-1.69897,-0.245821,-2.46802373737374,3.1476382440096,-0.678942121533632,-0.0418185738821601,-2.24134972707176,\ +-1.69897,-0.245821,-2.44049292929293,3.1476377123097,-0.678943317355467,-0.0418216972394747,-2.24135277827566,\ +-1.69897,-0.245821,-2.41296212121212,3.14763719971053,-0.678944470218679,-0.041824708393514,-2.24135571986832,\ +-1.69897,-0.245821,-2.38543131313131,3.14763670520104,-0.678945582397284,-0.0418276132837675,-2.24135855765201,\ +-1.69897,-0.245821,-2.3579005050505,3.1476362278402,-0.67894665600759,-0.0418304174377836,-2.2413612970266,\ +-1.69897,-0.245821,-2.3303696969697,3.14763576675123,-0.678947693021614,-0.0418331260062741,-2.2413639430238,\ +-1.69897,-0.245821,-2.30283888888889,3.14763532111607,-0.678948695279193,-0.0418357437946892,-2.24136650033807,\ +-1.69897,-0.245821,-2.27530808080808,3.14763489017059,-0.678949664498868,-0.041838275291671,-2.24136897335433,\ +-1.69897,-0.245821,-2.24777727272727,3.14763447320024,-0.678950602287718,-0.0418407246947363,-2.24137136617316,\ +-1.69897,-0.245821,-2.22024646464646,3.14763406953607,-0.678951510150255,-0.0418430959335045,-2.24137368263339,\ +-1.69897,-0.245821,-2.19271565656565,3.14763367855115,-0.678952389496473,-0.0418453926907319,-2.24137592633268,\ +-1.69897,-0.245821,-2.16518484848485,3.14763329965733,-0.678953241649159,-0.0418476184213992,-2.24137810064621,\ +-1.69897,-0.245821,-2.13765404040404,3.14763293230227,-0.678954067850536,-0.0418497763700524,-2.24138020874357,\ +-1.69897,-0.245821,-2.11012323232323,3.14763257596679,-0.678954869268298,-0.0418518695865829,-2.24138225360421,\ +-1.69897,-0.245821,-2.08259242424242,3.14763223016237,-0.678955647001121,-0.0418539009406119,-2.24138423803145,\ +-1.69897,-0.245821,-2.05506161616161,3.14763189442897,-0.678956402083683,-0.0418558731346122,-2.24138616466533,\ +-1.69897,-0.245821,-2.02753080808081,3.14763156833294,-0.678957135491265,-0.0418577887159068,-2.24138803599432,\ +-1.69897,-0.245821,-2,3.14763125146521,-0.678957848143946,-0.0418596500876434,-2.24138985436607,\ +-1.69897,-0.243882,-4.72555,3.14755395610979,-0.679131689576444,-0.0423137051103244,-2.24183342015586,\ +-1.69897,-0.243882,-4.69801919191919,3.14755193022906,-0.679136245891723,-0.0423256057131205,-2.24184504584001,\ +-1.69897,-0.243882,-4.67048838383838,3.14754975003299,-0.679141149270528,-0.0423384128083128,-2.24185755707546,\ +-1.69897,-0.243882,-4.64295757575758,3.14754739719172,-0.679146440937717,-0.0423522340707763,-2.24187105904966,\ +-1.69897,-0.243882,-4.61542676767677,3.1475448503527,-0.679152168916343,-0.0423671949315218,-2.241885674296,\ +-1.69897,-0.243882,-4.58789595959596,3.14754208449083,-0.679158389489212,-0.0423834423951721,-2.24190154642313,\ +-1.69897,-0.243882,-4.56036515151515,3.14753907008339,-0.679165169054502,-0.0424011498865755,-2.24191884484957,\ +-1.69897,-0.243882,-4.53283434343434,3.1475357720521,-0.679172586505114,-0.0424205234654656,-2.24193777087482,\ +-1.69897,-0.243882,-4.50530353535354,3.14753214839188,-0.679180736312835,-0.0424418098819199,-2.24195856554871,\ +-1.69897,-0.243882,-4.47777272727273,3.14752814837214,-0.679189732573443,-0.0424653071417805,-2.2419815199928,\ +-1.69897,-0.243882,-4.45024191919192,3.14752371014718,-0.679199714381278,-0.0424913785444271,-2.24200698911378,\ +-1.69897,-0.243882,-4.42271111111111,3.14751875753557,-0.679210853072527,-0.0425204716014431,-2.24203541008518,\ +-1.69897,-0.243882,-4.3951803030303,3.14751319561084,-0.679223362141888,-0.0425531439379019,-2.24206732765023,\ +-1.69897,-0.243882,-4.36764949494949,3.14750690455823,-0.679237511059272,-0.0425900993800605,-2.24210342937595,\ +-1.69897,-0.243882,-4.34011868686869,3.14749973094577,-0.679253644901427,-0.0426322392310755,-2.24214459574426,\ +-1.69897,-0.243882,-4.31258787878788,3.14749147504474,-0.679272212869109,-0.0426807367547447,-2.24219197291512,\ +-1.69897,-0.243882,-4.28505707070707,3.14748187194277,-0.679293810764563,-0.0427371481220984,-2.24224708111008,\ +-1.69897,-0.243882,-4.25752626262626,3.14747056258975,-0.679319246110827,-0.0428035824959883,-2.24231198076773,\ +-1.69897,-0.243882,-4.22999545454545,3.14745704790562,-0.679349641365959,-0.0428829716154906,-2.24238953590032,\ +-1.69897,-0.243882,-4.20246464646465,3.14744061314057,-0.679386604040927,-0.0429795141254058,-2.2424838481588,\ +-1.69897,-0.243882,-4.17493383838384,3.14742019726707,-0.679432520444011,-0.0430994428049153,-2.24260100633741,\ +-1.69897,-0.243882,-4.14740303030303,3.14739415437748,-0.679491092310443,-0.0432524261861432,-2.24275045561322,\ +-1.69897,-0.243882,-4.11987222222222,3.14735978625687,-0.679568388071424,-0.0434543143551568,-2.2429476799157,\ +-1.69897,-0.243882,-4.09234141414141,3.14731234140141,-0.679675094115994,-0.0437330190045119,-2.24321994614278,\ +-1.69897,-0.243882,-4.06481060606061,3.14724260300302,-0.679831939543627,-0.0441426823004117,-2.24362014570961,\ +-1.69897,-0.243882,-4.0372797979798,3.14713003270268,-0.680085116234047,-0.0448039524375611,-2.24426613968831,\ +-1.69897,-0.243882,-4.00974898989899,3.1469176826865,-0.680562702898904,-0.0460513571605143,-2.24548472781857,\ +-1.69897,-0.243882,-3.98221818181818,3.14636729701766,-0.681800550019009,-0.0492844799789161,-2.24864316149907,\ +-1.69897,-0.243882,-3.95468737373737,3.14152333699864,-0.692694877939961,-0.0777392864088124,-2.27644062668932,\ +-1.69897,-0.243882,-3.92715656565657,3.14970736674891,-0.674288552647382,-0.029663955182669,-2.22947589510484,\ +-1.69897,-0.243882,-3.89962575757576,3.14850401498882,-0.676994955802476,-0.0367327875565632,-2.23638142870365,\ +-1.69897,-0.243882,-3.87209494949495,3.1481778621133,-0.677728491249583,-0.0386487028207542,-2.23825308395441,\ +-1.69897,-0.243882,-3.84456414141414,3.14802595372093,-0.678070141435383,-0.0395410561604241,-2.23912482282769,\ +-1.69897,-0.243882,-3.81703333333333,3.14793809273479,-0.678267745542487,-0.0400571767195045,-2.23962902036319,\ +-1.69897,-0.243882,-3.78950252525252,3.14788082601909,-0.678396541481613,-0.0403935777846671,-2.23995765014747,\ +-1.69897,-0.243882,-3.76197171717172,3.14784054326321,-0.678487139577071,-0.0406302102128267,-2.24018881607372,\ +-1.69897,-0.243882,-3.73444090909091,3.14781066461739,-0.678554338266593,-0.0408057259230709,-2.24036027715387,\ +-1.69897,-0.243882,-3.7069101010101,3.1477876203568,-0.678606166054307,-0.0409410944999935,-2.24049251854915,\ +-1.69897,-0.243882,-3.67937929292929,3.1477693062175,-0.678647355543566,-0.0410486769917518,-2.24059761575223,\ +-1.69897,-0.243882,-3.65184848484848,3.14775440138217,-0.67868087732387,-0.0411362322568989,-2.24068314838241,\ +-1.69897,-0.243882,-3.62431767676768,3.14774203491762,-0.678708690171125,-0.0412088764062816,-2.24075411436205,\ +-1.69897,-0.243882,-3.59678686868687,3.14773160926126,-0.678732138035824,-0.0412701196932512,-2.2408139428533,\ +-1.69897,-0.243882,-3.56925606060606,3.14772270076759,-0.678752173719653,-0.0413224507327723,-2.24086506498106,\ +-1.69897,-0.243882,-3.54172525252525,3.14771500072767,-0.678769491525644,-0.041367682969298,-2.24090925229694,\ +-1.69897,-0.243882,-3.51419444444444,3.14770827886662,-0.678784609354494,-0.0414071691034259,-2.24094782625251,\ +-1.69897,-0.243882,-3.48666363636364,3.1477023599215,-0.67879792138201,-0.0414419386797543,-2.2409817926086,\ +-1.69897,-0.243882,-3.45913282828283,3.14769710813945,-0.678809732923735,-0.0414727891494556,-2.24101193039427,\ +-1.69897,-0.243882,-3.43160202020202,3.14769241673804,-0.678820284139068,-0.04150034778291,-2.24103885238919,\ +-1.69897,-0.243882,-3.40407121212121,3.14768820056871,-0.678829766531821,-0.0415251147673669,-2.24106304722566,\ +-1.69897,-0.243882,-3.3765404040404,3.14768439090205,-0.678838334678062,-0.0415474938387962,-2.24108490931285,\ +-1.69897,-0.243882,-3.3490095959596,3.1476809316523,-0.678846114717736,-0.0415678144611015,-2.24110476050363,\ +-1.69897,-0.243882,-3.32147878787879,3.14767777659768,-0.678853210606121,-0.0415863481542254,-2.24112286604552,\ +-1.69897,-0.243882,-3.29394797979798,3.14767488730321,-0.678859708785539,-0.041603320696156,-2.24113944650072,\ +-1.69897,-0.243882,-3.26641717171717,3.14767223154726,-0.678865681724226,-0.0416189213661057,-2.24115468677589,\ +-1.69897,-0.243882,-3.23888636363636,3.14766978211472,-0.678871190630442,-0.0416333100334078,-2.24116874304717,\ +-1.69897,-0.243882,-3.21135555555555,3.14766751586098,-0.678876287557611,-0.0416466226560016,-2.24118174813172,\ +-1.69897,-0.243882,-3.18382474747475,3.14766541297837,-0.678881017054253,-0.0416589755897814,-2.24119381569744,\ +-1.69897,-0.243882,-3.15629393939394,3.14766345641571,-0.67888541746944,-0.0416704689984038,-2.2412050435941,\ +-1.69897,-0.243882,-3.12876313131313,3.14766163141486,-0.678889521994981,-0.0416811895752557,-2.24121551651235,\ +-1.69897,-0.243882,-3.10123232323232,3.14765992513789,-0.678893359504141,-0.041691212734197,-2.24122530812393,\ +-1.69897,-0.243882,-3.07370151515151,3.14765832636451,-0.67889695523188,-0.0417006043862204,-2.24123448281716,\ +-1.69897,-0.243882,-3.04617070707071,3.14765682524517,-0.678900331330435,-0.0417094223905523,-2.24124309711468,\ +-1.69897,-0.243882,-3.0186398989899,3.14765541309785,-0.678903507326082,-0.0417177177477351,-2.24125120083885,\ +-1.69897,-0.243882,-2.99110909090909,3.14765408224012,-0.678906500497066,-0.0417255355866663,-2.24125883807602,\ +-1.69897,-0.243882,-2.96357828282828,3.14765282584925,-0.678909326188054,-0.0417329159859563,-2.24126604797896,\ +-1.69897,-0.243882,-2.93604747474747,3.14765163784525,-0.678911998073251,-0.0417398946611606,-2.24127286543813,\ +-1.69897,-0.243882,-2.90851666666667,3.1476505127925,-0.678914528377703,-0.0417465035427654,-2.24127932164639,\ +-1.69897,-0.243882,-2.88098585858586,3.14764944581655,-0.678916928064303,-0.0417527712646646,-2.24128544457616,\ +-1.69897,-0.243882,-2.85345505050505,3.14764843253353,-0.678919206992585,-0.0417587235788913,-2.24129125938456,\ +-1.69897,-0.243882,-2.82592424242424,3.14764746898997,-0.678921374054116,-0.0417643837092765,-2.24129678875893,\ +-1.69897,-0.243882,-2.79839343434343,3.14764655161125,-0.678923437288463,-0.0417697726542729,-2.24130205321263,\ +-1.69897,-0.243882,-2.77086262626263,3.14764567715722,-0.678925403982827,-0.0417749094472736,-2.24130707133935,\ +-1.69897,-0.243882,-2.74333181818182,3.14764484268407,-0.678927280758056,-0.0417798113812211,-2.24131186003256,\ +-1.69897,-0.243882,-2.71580101010101,3.14764404551112,-0.67892907364311,-0.0417844942031005,-2.24131643467547,\ +-1.69897,-0.243882,-2.6882702020202,3.14764328319212,-0.678930788139748,-0.0417889722829191,-2.24132080930609,\ +-1.69897,-0.243882,-2.66073939393939,3.14764255349015,-0.678932429278934,-0.0417932587609972,-2.24132499676123,\ +-1.69897,-0.243882,-2.63320858585858,3.14764185435569,-0.678934001670125,-0.0417973656767477,-2.24132900880214,\ +-1.69897,-0.243882,-2.60567777777778,3.14764118390742,-0.678935509544518,-0.0418013040816058,-2.24133285622497,\ +-1.69897,-0.243882,-2.57814696969697,3.14764054041531,-0.678936956793075,-0.0418050841383353,-2.24133654895772,\ +-1.69897,-0.243882,-2.55061616161616,3.14763992228566,-0.678938347000041,-0.0418087152085926,-2.24134009614575,\ +-1.69897,-0.243882,-2.52308535353535,3.14763932804804,-0.67893968347258,-0.0418122059303388,-2.24134350622751,\ +-1.69897,-0.243882,-2.49555454545454,3.14763875634347,-0.678940969267047,-0.0418155642864449,-2.24134678700143,\ +-1.69897,-0.243882,-2.46802373737374,3.14763820591416,-0.678942207212323,-0.0418187976656369,-2.24134994568557,\ +-1.69897,-0.243882,-2.44049292929293,3.1476376755942,-0.678943399930587,-0.0418219129167633,-2.24135298897053,\ +-1.69897,-0.243882,-2.41296212121212,3.14763716430134,-0.678944549855858,-0.0418249163972178,-2.24135592306687,\ +-1.69897,-0.243882,-2.38543131313131,3.14763667102965,-0.678945659250573,-0.041827814016246,-2.24135875374732,\ +-1.69897,-0.243882,-2.3579005050505,3.14763619484284,-0.67894673022045,-0.0418306112737505,-2.24136148638471,\ +-1.69897,-0.243882,-2.3303696969697,3.1476357348684,-0.678947764727821,-0.041833313295131,-2.24136412598606,\ +-1.69897,-0.243882,-2.30283888888889,3.14763529029224,-0.678948764603634,-0.041835924862628,-2.24136667722311,\ +-1.69897,-0.243882,-2.27530808080808,3.14763486035387,-0.678949731558266,-0.041838450443569,-2.24136914446001,\ +-1.69897,-0.243882,-2.24777727272727,3.14763444434207,-0.678950667191299,-0.0418408942158698,-2.24137153177815,\ +-1.69897,-0.243882,-2.22024646464646,3.14763404159095,-0.678951573000327,-0.041843260091098,-2.24137384299873,\ +-1.69897,-0.243882,-2.19271565656565,3.14763365147643,-0.678952450388975,-0.0418455517353648,-2.24137608170317,\ +-1.69897,-0.243882,-2.16518484848485,3.14763327341297,-0.678953300674145,-0.0418477725882813,-2.24137825125164,\ +-1.69897,-0.243882,-2.13765404040404,3.14763290685065,-0.67895412509262,-0.0418499258801844,-2.24138035479984,\ +-1.69897,-0.243882,-2.11012323232323,3.14763255127251,-0.678954924807055,-0.0418520146478143,-2.24138239531435,\ +-1.69897,-0.243882,-2.08259242424242,3.14763220619214,-0.678955700911466,-0.0418540417486032,-2.24138437558661,\ +-1.69897,-0.243882,-2.05506161616161,3.1476318711514,-0.678956454436197,-0.0418560098737173,-2.2413862982456,\ +-1.69897,-0.243882,-2.02753080808081,3.14763154571844,-0.67895718635251,-0.041857921559977,-2.24138816576954,\ +-1.69897,-0.243882,-2,3.14763122948584,-0.678957897576744,-0.0418597792007648,-2.24138998049651,\ +-1.69897,-0.235902,-4.72555,3.14755338380484,-0.679132976721227,-0.0423170669933064,-2.24183670437519,\ +-1.69897,-0.235902,-4.69801919191919,3.14755131492556,-0.67913762974254,-0.0423292201818012,-2.24184857680999,\ +-1.69897,-0.235902,-4.67048838383838,3.14754908669654,-0.679142641150067,-0.0423423094363373,-2.24186136368655,\ +-1.69897,-0.235902,-4.64295757575758,3.14754667997014,-0.67914805400783,-0.0423564472354741,-2.24187517488503,\ +-1.69897,-0.235902,-4.61542676767677,3.14754407240303,-0.679153918567209,-0.0423717648303859,-2.24189013862455,\ +-1.69897,-0.235902,-4.58789595959596,3.1475412377604,-0.679160293831698,-0.0423884163318142,-2.24190640545568,\ +-1.69897,-0.235902,-4.56036515151515,3.14753814503024,-0.679167249549044,-0.0424065839133422,-2.2419241533436,\ +-1.69897,-0.235902,-4.53283434343434,3.14753475728397,-0.679174868773502,-0.0424264845036947,-2.24194359420569,\ +-1.69897,-0.235902,-4.50530353535354,3.14753103019501,-0.67918325119803,-0.0424483784900916,-2.24196498241391,\ +-1.69897,-0.235902,-4.47777272727273,3.14752691008835,-0.67919251754062,-0.0424725811748839,-2.24198862598673,\ +-1.69897,-0.235902,-4.45024191919192,3.14752233133897,-0.679202815395476,-0.042499478058181,-2.24201490151874,\ +-1.69897,-0.235902,-4.42271111111111,3.14751721285021,-0.679214327153396,-0.0425295455249946,-2.24204427438987,\ +-1.69897,-0.235902,-4.3951803030303,3.1475114532087,-0.67922728089847,-0.0425633793063251,-2.24207732656898,\ +-1.69897,-0.235902,-4.36764949494949,3.14750492389706,-0.679241965673287,-0.0426017343501521,-2.24211479556383,\ +-1.69897,-0.235902,-4.34011868686869,3.1474974595906,-0.679258753302,-0.0426455818209542,-2.2421576301038,\ +-1.69897,-0.235902,-4.31258787878788,3.14748884396415,-0.679278130311602,-0.042696192474629,-2.24220707158875,\ +-1.69897,-0.235902,-4.28505707070707,3.1474787883824,-0.679300745858499,-0.0427552618375028,-2.24226477637625,\ +-1.69897,-0.235902,-4.25752626262626,3.14746689893132,-0.679327485876645,-0.0428251038732674,-2.24233300497456,\ +-1.69897,-0.235902,-4.22999545454545,3.14745262360196,-0.679359591864032,-0.0429089612404195,-2.24241492513276,\ +-1.69897,-0.235902,-4.20246464646465,3.14743516413195,-0.679398859155849,-0.0430115231603285,-2.24251511774541,\ +-1.69897,-0.235902,-4.17493383838384,3.14741332145035,-0.67944798452748,-0.0431398333186711,-2.24264046378031,\ +-1.69897,-0.235902,-4.14740303030303,3.14738520800984,-0.679511213174833,-0.0433049797080841,-2.24280179508378,\ +-1.69897,-0.235902,-4.11987222222222,3.14734767083707,-0.679595636305466,-0.0435254837958838,-2.24301720525428,\ +-1.69897,-0.235902,-4.09234141414141,3.1472950175759,-0.679714056335989,-0.0438347841098038,-2.24331936034821,\ +-1.69897,-0.235902,-4.06481060606061,3.14721581546599,-0.679892186162403,-0.04430003995365,-2.24377386820634,\ +-1.69897,-0.235902,-4.0372797979798,3.14708321602376,-0.680190409475593,-0.0450789669981903,-2.24453480107227,\ +-1.69897,-0.235902,-4.00974898989899,3.1468157595897,-0.680791933453036,-0.0466500825791924,-2.24606962193919,\ +-1.69897,-0.235902,-3.98221818181818,3.14599486067585,-0.682638179483631,-0.0514722775602565,-2.25078041824902,\ +-1.69897,-0.235902,-3.95468737373737,3.19421118268511,-0.574197064972096,0.231764186851058,-1.97408706665377,\ +-1.69897,-0.235902,-3.92715656565657,3.14911889325129,-0.675612061353198,-0.0331208167996057,-2.23285289894077,\ +-1.69897,-0.235902,-3.89962575757576,3.14837646229842,-0.677281828698012,-0.0374820685376094,-2.23711340036684,\ +-1.69897,-0.235902,-3.87209494949495,3.14812352248759,-0.677850704005099,-0.0389679093222213,-2.23856491639069,\ +-1.69897,-0.235902,-3.84456414141414,3.14799600279554,-0.678137502685551,-0.0397169964614989,-2.2392966986901,\ +-1.69897,-0.235902,-3.81703333333333,3.14791915169685,-0.678310344960634,-0.0401684417930566,-2.23973771507586,\ +-1.69897,-0.235902,-3.78950252525252,3.1478677754785,-0.678425892852848,-0.0404702403923034,-2.24003254175401,\ +-1.69897,-0.235902,-3.76197171717172,3.14783100830535,-0.678508584212702,-0.0406862212820993,-2.24024353321799,\ +-1.69897,-0.235902,-3.73444090909091,3.1478033946174,-0.678570688889524,-0.040848431982032,-2.24040199665003,\ +-1.69897,-0.235902,-3.7069101010101,3.14778189456142,-0.678619043677624,-0.0409747294595219,-2.2405253764995,\ +-1.69897,-0.235902,-3.67937929292929,3.14776468016796,-0.67865775977905,-0.0410758517297339,-2.24062416272013,\ +-1.69897,-0.235902,-3.65184848484848,3.14775058616667,-0.678689457949747,-0.0411586439237972,-2.24070504231206,\ +-1.69897,-0.235902,-3.62431767676768,3.14773883463002,-0.678715887790922,-0.041227675810847,-2.2407724794771,\ +-1.69897,-0.235902,-3.59678686868687,3.14772888637784,-0.67873826194783,-0.0412861146891794,-2.24082956834502,\ +-1.69897,-0.235902,-3.56925606060606,3.14772035591393,-0.678757447422262,-0.0413362250737038,-2.24087852111766,\ +-1.69897,-0.235902,-3.54172525252525,3.14771296031215,-0.678774080530431,-0.0413796689535504,-2.24092096139012,\ +-1.69897,-0.235902,-3.51419444444444,3.14770648723019,-0.678788638841672,-0.0414176936881965,-2.24095810770634,\ +-1.69897,-0.235902,-3.48666363636364,3.14770077419041,-0.678801487776945,-0.0414512537176613,-2.2409908924576,\ +-1.69897,-0.235902,-3.45913282828283,3.1476956947543,-0.678812911703312,-0.0414810917779594,-2.24102004122179,\ +-1.69897,-0.235902,-3.43160202020202,3.14769114905517,-0.678823135226391,-0.0415077945146818,-2.24104612709225,\ +-1.69897,-0.235902,-3.40407121212121,3.14768705716625,-0.678832338105752,-0.0415318314403859,-2.24106960873522,\ +-1.69897,-0.235902,-3.3765404040404,3.14768335436071,-0.67884066591555,-0.0415535827790196,-2.24109085759102,\ +-1.69897,-0.235902,-3.3490095959596,3.14767998766237,-0.678848237802131,-0.0415733597279523,-2.24111017766795,\ +-1.69897,-0.235902,-3.32147878787879,3.14767691329485,-0.678855152220853,-0.04159141944194,-2.24112782018021,\ +-1.69897,-0.235902,-3.29394797979798,3.14767409476772,-0.678861491240713,-0.0416079762763196,-2.24114399453123,\ +-1.69897,-0.235902,-3.26641717171717,3.1476715014212,-0.678867323817225,-0.0416232103354435,-2.24115887666473,\ +-1.69897,-0.235902,-3.23888636363636,3.14766910730631,-0.678872708311012,-0.0416372740509375,-2.24117261549099,\ +-1.69897,-0.235902,-3.21135555555555,3.14766689031364,-0.678877694447378,-0.0416502972999313,-2.24118533788682,\ +-1.69897,-0.235902,-3.18382474747475,3.14766483148846,-0.678882324856502,-0.0416623914278389,-2.2411971526254,\ +-1.69897,-0.235902,-3.15629393939394,3.14766291448748,-0.678886636295321,-0.0416736524397964,-2.24120815349405,\ +-1.69897,-0.235902,-3.12876313131313,3.1476611251441,-0.678890660625303,-0.0416841635545248,-2.24121842178902,\ +-1.69897,-0.235902,-3.10123232323232,3.14765945111769,-0.678894425601201,-0.0416939972644305,-2.24122802832806,\ +-1.69897,-0.235902,-3.07370151515151,3.14765788160857,-0.678897955512048,-0.0417032170098398,-2.24123703508594,\ +-1.69897,-0.235902,-3.04617070707071,3.1476564071248,-0.678901271705732,-0.0417118785491364,-2.24124549653296,\ +-1.69897,-0.235902,-3.0186398989899,3.14765501929006,-0.6789043930211,-0.0417200310873475,-2.24125346073745,\ +-1.69897,-0.235902,-2.99110909090909,3.14765371068436,-0.678907336146049,-0.0417277182114428,-2.24126097027947,\ +-1.69897,-0.235902,-2.96357828282828,3.14765247471143,-0.678910115915978,-0.041734978669895,-2.24126806301235,\ +-1.69897,-0.235902,-2.93604747474747,3.14765130548745,-0.678912745563915,-0.04174184702594,-2.24127477270086,\ +-1.69897,-0.235902,-2.90851666666667,3.14765019774741,-0.678915236931164,-0.0417483542077813,-2.24128112955876,\ +-1.69897,-0.235902,-2.88098585858586,3.14764914676581,-0.678917600645576,-0.0417545279742194,-2.24128716070355,\ +-1.69897,-0.235902,-2.85345505050505,3.14764814828934,-0.678919846273109,-0.0417603933104968,-2.2412928905433,\ +-1.69897,-0.235902,-2.82592424242424,3.14764719847932,-0.678921982447217,-0.0417659727662596,-2.24129834110674,\ +-1.69897,-0.235902,-2.79839343434343,3.1476462938623,-0.678924016979772,-0.0417712867452802,-2.24130353232626,\ +-1.69897,-0.235902,-2.77086262626263,3.14764543128776,-0.678925956956528,-0.0417763537547807,-2.24130848228157,\ +-1.69897,-0.235902,-2.74333181818182,3.14764460789136,-0.678927808819568,-0.0417811906207893,-2.24131320740999,\ +-1.69897,-0.235902,-2.71580101010101,3.14764382106313,-0.678929578438779,-0.0417858126747986,-2.24131772268884,\ +-1.69897,-0.235902,-2.6882702020202,3.14764306841995,-0.678931271173981,-0.0417902339160973,-2.24132204179399,\ +-1.69897,-0.235902,-2.66073939393939,3.14764234778133,-0.678932891929176,-0.0417944671533941,-2.24132617723827,\ +-1.69897,-0.235902,-2.63320858585858,3.1476416571484,-0.678934445199971,-0.0417985241287484,-2.24133014049247,\ +-1.69897,-0.235902,-2.60567777777778,3.14764099468532,-0.678935935115251,-0.0418024156263394,-2.24133394209165,\ +-1.69897,-0.235902,-2.57814696969697,3.14764035870303,-0.678937365473797,-0.041806151568189,-2.24133759172862,\ +-1.69897,-0.235902,-2.55061616161616,3.14763974764486,-0.678938739776654,-0.0418097410986315,-2.24134109833647,\ +-1.69897,-0.235902,-2.52308535353535,3.1476391600738,-0.678940061255719,-0.041813192659044,-2.24134447016156,\ +-1.69897,-0.235902,-2.49555454545454,3.14763859466125,-0.678941332899129,-0.0418165140541207,-2.2413477148283,\ +-1.69897,-0.235902,-2.46802373737374,3.14763805017692,-0.67894255747382,-0.0418197125107881,-2.24135083939666,\ +-1.69897,-0.235902,-2.44049292929293,3.14763752547996,-0.678943737545613,-0.0418227947306984,-2.24135385041348,\ +-1.69897,-0.235902,-2.41296212121212,3.147637019511,-0.678944875497166,-0.0418257669370997,-2.24135675395824,\ +-1.69897,-0.235902,-2.38543131313131,3.14763653128491,-0.678945973544035,-0.0418286349167778,-2.24135955568403,\ +-1.69897,-0.235902,-2.3579005050505,3.14763605988449,-0.678947033749062,-0.0418314040576595,-2.24136226085433,\ +-1.69897,-0.235902,-2.3303696969697,3.14763560445468,-0.678948058035319,-0.041834079382597,-2.24136487437595,\ +-1.69897,-0.235902,-2.30283888888889,3.1476351641974,-0.678949048197741,-0.0418366655797704,-2.24136740082877,\ +-1.69897,-0.235902,-2.27530808080808,3.14763473836687,-0.678950005913629,-0.0418391670301083,-2.24136984449251,\ +-1.69897,-0.235902,-2.24777727272727,3.14763432626539,-0.678950932752134,-0.0418415878320508,-2.24137220937094,\ +-1.69897,-0.235902,-2.22024646464646,3.14763392723955,-0.67895183018282,-0.0418439318239579,-2.24137449921373,\ +-1.69897,-0.235902,-2.19271565656565,3.14763354067674,-0.678952699583463,-0.0418462026044173,-2.24137671753635,\ +-1.69897,-0.235902,-2.16518484848485,3.14763316600205,-0.678953542247089,-0.0418484035506795,-2.24137886763803,\ +-1.69897,-0.235902,-2.13765404040404,3.14763280267539,-0.678954359388396,-0.0418505378354166,-2.24138095261815,\ +-1.69897,-0.235902,-2.11012323232323,3.14763245018888,-0.67895515214961,-0.0418526084419824,-2.24138297539114,\ +-1.69897,-0.235902,-2.08259242424242,3.14763210806452,-0.678955921605795,-0.041854618178325,-2.24138493870009,\ +-1.69897,-0.235902,-2.05506161616161,3.14763177585199,-0.678956668769719,-0.0418565696896929,-2.24138684512913,\ +-1.69897,-0.235902,-2.02753080808081,3.14763145312672,-0.678957394596304,-0.0418584654702485,-2.2413886971148,\ +-1.69897,-0.235902,-2,3.14763113948801,-0.678958099986709,-0.0418603078737057,-2.24139049695646,\ +-1.69897,-0.232369,-4.72555,3.14755312662097,-0.679133555141644,-0.0423185777648849,-2.24183818024607,\ +-1.69897,-0.232369,-4.69801919191919,3.14755103826643,-0.679138251963889,-0.0423308453566825,-2.24185016444132,\ +-1.69897,-0.232369,-4.67048838383838,3.14754878826322,-0.67914331234273,-0.0423440625189886,-2.24186307627082,\ +-1.69897,-0.232369,-4.64295757575758,3.14754635708714,-0.679148780189162,-0.0423583439425875,-2.24187702777586,\ +-1.69897,-0.232369,-4.61542676767677,3.14754372193784,-0.679154706782368,-0.0423738235631435,-2.24189214979803,\ +-1.69897,-0.232369,-4.58789595959596,3.14754085602164,-0.679161152382823,-0.0423906587745139,-2.24190859609518,\ +-1.69897,-0.232369,-4.56036515151515,3.14753772763716,-0.679168188288643,-0.0424090357996581,-2.24192654858831,\ +-1.69897,-0.232369,-4.53283434343434,3.14753429899775,-0.679175899483983,-0.0424291766080095,-2.24194622411906,\ +-1.69897,-0.232369,-4.50530353535354,3.14753052469785,-0.679184388088473,-0.0424513479249866,-2.24196788325118,\ +-1.69897,-0.232369,-4.47777272727273,3.14752634969069,-0.679193777905267,-0.0424758731110468,-2.2419918418751,\ +-1.69897,-0.232369,-4.45024191919192,3.1475217065859,-0.679204220498891,-0.0425031480363483,-2.24201848671587,\ +-1.69897,-0.232369,-4.42271111111111,3.14751651198425,-0.679215903438825,-0.0425336626120717,-2.24204829636713,\ +-1.69897,-0.232369,-4.3951803030303,3.1475106614236,-0.679229061665975,-0.042568030478476,-2.2420818702933,\ +-1.69897,-0.232369,-4.36764949494949,3.14750402228152,-0.679243993455374,-0.04260703069768,-2.24211996955917,\ +-1.69897,-0.232369,-4.34011868686869,3.14749642360039,-0.679261083299978,-0.0426516675237082,-2.24216357521929,\ +-1.69897,-0.232369,-4.31258787878788,3.14748764115724,-0.679280835489361,-0.0427032581064051,-2.24221397399568,\ +-1.69897,-0.232369,-4.28505707070707,3.14747737496651,-0.679303924707253,-0.0427635646466908,-2.24227288738027,\ +-1.69897,-0.232369,-4.25752626262626,3.14746521432839,-0.679331274639718,-0.0428349997126989,-2.24234267220785,\ +-1.69897,-0.232369,-4.22999545454545,3.14745058156123,-0.679364184524036,-0.0429209567717064,-2.24242664355243,\ +-1.69897,-0.232369,-4.20246464646465,3.14743263753542,-0.679404541608034,-0.0430263651109388,-2.24252961682859,\ +-1.69897,-0.232369,-4.17493383838384,3.14741011489519,-0.679455196243372,-0.0431586695407091,-2.24265886486231,\ +-1.69897,-0.232369,-4.14740303030303,3.14738100494488,-0.67952066609514,-0.0433296697137002,-2.2428259147197,\ +-1.69897,-0.232369,-4.11987222222222,3.14734192274346,-0.679608564078699,-0.0435592497415705,-2.24305019116484,\ +-1.69897,-0.232369,-4.09234141414141,3.14728668483165,-0.679732797128229,-0.0438837330325296,-2.24336717849025,\ +-1.69897,-0.232369,-4.06481060606061,3.14720266360991,-0.679921765397644,-0.0443772977174443,-2.24384934122019,\ +-1.69897,-0.232369,-4.0372797979798,3.14705943478749,-0.680243894761458,-0.0452186647810368,-2.24467127166347,\ +-1.69897,-0.232369,-4.00974898989899,3.14676036919975,-0.680916509434123,-0.0469754615702882,-2.24638748427296,\ +-1.69897,-0.232369,-3.98221818181818,3.14574770538847,-0.683194045084817,-0.0529241383999149,-2.25219873930669,\ +-1.69897,-0.232369,-3.95468737373737,3.15725177442316,-0.657320771978262,0.0146540530495118,-2.18618168770371,\ +-1.69897,-0.232369,-3.92715656565657,3.14895213557748,-0.675987108375613,-0.0341003990650147,-2.23380985164368,\ +-1.69897,-0.232369,-3.89962575757576,3.14833091468208,-0.677384267749219,-0.0377496282617242,-2.23737477913024,\ +-1.69897,-0.232369,-3.87209494949495,3.14810264654007,-0.677897655139517,-0.0390905406080799,-2.2386847147421,\ +-1.69897,-0.232369,-3.84456414141414,3.14798407497891,-0.678164328989899,-0.0397870638674844,-2.23936514745231,\ +-1.69897,-0.232369,-3.81703333333333,3.14791144527543,-0.678327677118998,-0.0402137115164201,-2.2397819390126,\ +-1.69897,-0.232369,-3.78950252525252,3.14786238971919,-0.678438005716655,-0.0405018778826974,-2.24006344837922,\ +-1.69897,-0.232369,-3.76197171717172,3.14782703336998,-0.67851752405721,-0.0407095711892062,-2.24026634371334,\ +-1.69897,-0.232369,-3.73444090909091,3.14780034087128,-0.678577556929617,-0.0408663705600538,-2.24041952082469,\ +-1.69897,-0.232369,-3.7069101010101,3.14777947527794,-0.678624484776931,-0.0409889410225147,-2.2405392597578,\ +-1.69897,-0.232369,-3.67937929292929,3.14776271635342,-0.678662176504078,-0.0410873877378867,-2.24063543223222,\ +-1.69897,-0.232369,-3.65184848484848,3.14774896033347,-0.678693114536533,-0.0411681945330598,-2.24071437229043,\ +-1.69897,-0.232369,-3.62431767676768,3.14773746648015,-0.678718964833948,-0.0412357127144845,-2.24078033071832,\ +-1.69897,-0.232369,-3.59678686868687,3.14772771917288,-0.678740887054876,-0.041292971184906,-2.24083626644722,\ +-1.69897,-0.232369,-3.56925606060606,3.14771934842801,-0.678759713312571,-0.0413421433341568,-2.24088430265897,\ +-1.69897,-0.232369,-3.54172525252525,3.14771208187124,-0.678776056191543,-0.0413848291667307,-2.24092600239599,\ +-1.69897,-0.232369,-3.51419444444444,3.14770571454011,-0.678790376663448,-0.0414222326907498,-2.24096254185233,\ +-1.69897,-0.232369,-3.48666363636364,3.1477000892439,-0.678803028258677,-0.0414552772893554,-2.24099482307981,\ +-1.69897,-0.232369,-3.45913282828283,3.14769508341198,-0.678814286645242,-0.0414846829775969,-2.24102354946027,\ +-1.69897,-0.232369,-3.43160202020202,3.14769060006015,-0.678824369945863,-0.0415110194684251,-2.24104927754556,\ +-1.69897,-0.232369,-3.40407121212121,3.14768656144536,-0.678833453008826,-0.0415347434466518,-2.24107245347054,\ +-1.69897,-0.232369,-3.3765404040404,3.14768290451955,-0.678841677632637,-0.0415562252746407,-2.24109343904172,\ +-1.69897,-0.232369,-3.3490095959596,3.14767957761426,-0.678849160022488,-0.0415757684678003,-2.24111253076294,\ +-1.69897,-0.232369,-3.32147878787879,3.14767653798403,-0.678855996315169,-0.0415936241250127,-2.24112997393237,\ +-1.69897,-0.232369,-3.29394797979798,3.14767374995998,-0.678862266731964,-0.0416100017756101,-2.24114597323898,\ +-1.69897,-0.232369,-3.26641717171717,3.14767118354352,-0.678868038741304,-0.0416250776398215,-2.24116070083206,\ +-1.69897,-0.232369,-3.23888636363636,3.1476688133227,-0.678873369496046,-0.0416390009947506,-2.24117430254026,\ +-1.69897,-0.232369,-3.21135555555555,3.14766661762787,-0.67887830773241,-0.0416518991341188,-2.24118690271665,\ +-1.69897,-0.232369,-3.18382474747475,3.14766457786725,-0.678882895264299,-0.0416638812713162,-2.24119860805166,\ +-1.69897,-0.232369,-3.15629393939394,3.14766267799924,-0.678887168170174,-0.0416750416394014,-2.24120951060143,\ +-1.69897,-0.232369,-3.12876313131313,3.14766090410959,-0.678891157743856,-0.0416854619744295,-2.24121969021383,\ +-1.69897,-0.232369,-3.10123232323232,3.14765924407019,-0.678894891262211,-0.0416952135206319,-2.24122921648724,\ +-1.69897,-0.232369,-3.07370151515151,3.14765768726126,-0.678898392609653,-0.0417043586615155,-2.24123815036405,\ +-1.69897,-0.232369,-3.04617070707071,3.14765622434399,-0.678901682789638,-0.0417129522558465,-2.24124654543572,\ +-1.69897,-0.232369,-3.0186398989899,3.1476548470731,-0.678904780346339,-0.0417210427389881,-2.24125444901869,\ +-1.69897,-0.232369,-2.99110909090909,3.14765354814123,-0.678907701714348,-0.0417286730363069,-2.2412619030467,\ +-1.69897,-0.232369,-2.96357828282828,3.14765232104934,-0.67891046151035,-0.0417358813250262,-2.24126894481503,\ +-1.69897,-0.232369,-2.93604747474747,3.14765115999792,-0.678913072777742,-0.0417427016730718,-2.24127560760459,\ +-1.69897,-0.232369,-2.90851666666667,3.14765005979537,-0.678915547192744,-0.0417491645774787,-2.24128192120791,\ +-1.69897,-0.232369,-2.88098585858586,3.14764901578034,-0.678917895238969,-0.0417552974203043,-2.24128791237448,\ +-1.69897,-0.232369,-2.85345505050505,3.14764802375576,-0.67892012635589,-0.0417611248564319,-2.24129360518962,\ +-1.69897,-0.232369,-2.82592424242424,3.14764707993238,-0.678922249065677,-0.0417666691448466,-2.24129902139812,\ +-1.69897,-0.232369,-2.79839343434343,3.14764618088048,-0.678924271081978,-0.0417719504327652,-2.24130418068175,\ +-1.69897,-0.232369,-2.77086262626263,3.14764532348819,-0.678926199403584,-0.0417769870002718,-2.24130910089831,\ +-1.69897,-0.232369,-2.74333181818182,3.14764450492549,-0.678928040395361,-0.0417817954717132,-2.24131379828811,\ +-1.69897,-0.232369,-2.71580101010101,3.147643722613,-0.678929799858439,-0.0417863909990105,-2.24131828765304,\ +-1.69897,-0.232369,-2.6882702020202,3.14764297419487,-0.678931483091272,-0.0417907874211456,-2.24132258251238,\ +-1.69897,-0.232369,-2.66073939393939,3.14764225751505,-0.678933094942924,-0.0417949974033551,-2.2413266952388,\ +-1.69897,-0.232369,-2.63320858585858,3.14764157059657,-0.678934639859729,-0.0417990325589855,-2.24133063717734,\ +-1.69897,-0.232369,-2.60567777777778,3.14764091162328,-0.678936121926253,-0.0418029035564751,-2.24133441875,\ +-1.69897,-0.232369,-2.57814696969697,3.14764027892392,-0.678937544901345,-0.0418066202135403,-2.24133804954768,\ +-1.69897,-0.232369,-2.55061616161616,3.14763967095781,-0.678938912249983,-0.041810191580316,-2.24134153841147,\ +-1.69897,-0.232369,-2.52308535353535,3.14763908630248,-0.678940227171425,-0.0418136260129323,-2.24134489350443,\ +-1.69897,-0.232369,-2.49555454545454,3.14763852364245,-0.67894149262422,-0.0418169312387877,-2.24134812237548,\ +-1.69897,-0.232369,-2.46802373737374,3.14763798175944,-0.678942711348415,-0.0418201144145904,-2.24135123201599,\ +-1.69897,-0.232369,-2.44049292929293,3.14763745952346,-0.678943885885364,-0.0418231821780879,-2.24135422891035,\ +-1.69897,-0.232369,-2.41296212121212,3.14763695588503,-0.678945018595422,-0.0418261406942688,-2.24135711908116,\ +-1.69897,-0.232369,-2.38543131313131,3.1476364698681,-0.678946111673772,-0.0418289956967157,-2.2413599081295,\ +-1.69897,-0.232369,-2.3579005050505,3.14763600056374,-0.678947167164626,-0.0418317525246914,-2.24136260127135,\ +-1.69897,-0.232369,-2.3303696969697,3.1476355471245,-0.67894818697399,-0.0418344161564652,-2.24136520336993,\ +-1.69897,-0.232369,-2.30283888888889,3.14763510875926,-0.678949172881135,-0.0418369912393143,-2.24136771896518,\ +-1.69897,-0.232369,-2.27530808080808,3.14763468472861,-0.678950126548977,-0.0418394821165828,-2.24137015230009,\ +-1.69897,-0.232369,-2.24777727272727,3.14763427434076,-0.678951049533414,-0.0418418928521281,-2.24137250734467,\ +-1.69897,-0.232369,-2.22024646464646,3.14763387694774,-0.678951943291827,-0.0418442272524461,-2.24137478781745,\ +-1.69897,-0.232369,-2.19271565656565,3.14763349194192,-0.678952809190722,-0.0418464888867267,-2.24137699720518,\ +-1.69897,-0.232369,-2.16518484848485,3.14763311875301,-0.678953648512735,-0.0418486811050627,-2.24137913878056,\ +-1.69897,-0.232369,-2.13765404040404,3.14763275684522,-0.678954462462951,-0.0418508070550078,-2.24138121561844,\ +-1.69897,-0.232369,-2.11012323232323,3.1476324057146,-0.678955252174684,-0.0418528696966544,-2.24138323061051,\ +-1.69897,-0.232369,-2.08259242424242,3.14763206488684,-0.678956018714736,-0.0418548718163851,-2.24138518647879,\ +-1.69897,-0.232369,-2.05506161616161,3.14763173391503,-0.678956763088222,-0.0418568160394316,-2.24138708578788,\ +-1.69897,-0.232369,-2.02753080808081,3.14763141237775,-0.678957486242942,-0.0418587048413577,-2.24138893095614,\ +-1.69897,-0.232369,-2,3.14763109987726,-0.678958189073425,-0.0418605405585763,-2.24139072426603,\ +-1.69897,-0.230734,-4.72555,3.14755300679727,-0.679133824631631,-0.042319281643589,-2.24183886786431,\ +-1.69897,-0.230734,-4.69801919191919,3.14755090933676,-0.679138541933693,-0.0423316027264499,-2.24185090431491,\ +-1.69897,-0.230734,-4.67048838383838,3.14754864914871,-0.679143625218781,-0.0423448797173997,-2.24186387459093,\ +-1.69897,-0.230734,-4.64295757575758,3.14754620653151,-0.679149118796911,-0.0423592283494034,-2.24187789175179,\ +-1.69897,-0.230734,-4.61542676767677,3.14754355846937,-0.679155074431792,-0.0423747838236842,-2.24189308787537,\ +-1.69897,-0.230734,-4.58789595959596,3.14754067790492,-0.679161552976949,-0.0423917050830507,-2.2419096182327,\ +-1.69897,-0.230734,-4.56036515151515,3.14753753281128,-0.679168626462549,-0.0424101802625157,-2.24192766661266,\ +-1.69897,-0.230734,-4.53283434343434,3.14753408499628,-0.679176380784845,-0.0424304337138104,-2.24194745218416,\ +-1.69897,-0.230734,-4.50530353535354,3.1475302885439,-0.67918491921147,-0.0424527351608235,-2.24196923844016,\ +-1.69897,-0.230734,-4.47777272727273,3.1475260877577,-0.679194367006698,-0.042477411780285,-2.24199334499917,\ +-1.69897,-0.230734,-4.45024191919192,3.14752141441029,-0.679204877617633,-0.0425048643594468,-2.24202016338978,\ +-1.69897,-0.230734,-4.42271111111111,3.14751618400914,-0.679216641072572,-0.0425355892316531,-2.24205017847942,\ +-1.69897,-0.230734,-4.3951803030303,3.14751029064243,-0.679229895572853,-0.0425702085530662,-2.24208399805167,\ +-1.69897,-0.230734,-4.36764949494949,3.14750359973252,-0.679244943790914,-0.0426095128713451,-2.24212239439156,\ +-1.69897,-0.230734,-4.34011868686869,3.14749593763372,-0.679262176265293,-0.0426545222309179,-2.24216636397924,\ +-1.69897,-0.230734,-4.31258787878788,3.14748707634605,-0.679282105780263,-0.042706575968866,-2.24221721521142,\ +-1.69897,-0.230734,-4.28505707070707,3.1474767104423,-0.679305419258106,-0.0427674682519009,-2.24227670080737,\ +-1.69897,-0.230734,-4.25752626262626,3.14746442115164,-0.679333058537095,-0.0428396590597419,-2.24234722391821,\ +-1.69897,-0.230734,-4.22999545454545,3.14744961840582,-0.679366350712607,-0.0429266146220055,-2.24243217069938,\ +-1.69897,-0.230734,-4.20246464646465,3.14743144327612,-0.679407227561762,-0.0430333805316272,-2.24253647018438,\ +-1.69897,-0.230734,-4.17493383838384,3.14740859515722,-0.679458614216198,-0.0431675969161195,-2.24266758600431,\ +-1.69897,-0.230734,-4.14740303030303,3.14737900598951,-0.679525161853814,-0.0433414121491922,-2.24283738589041,\ +-1.69897,-0.230734,-4.11987222222222,3.1473391762336,-0.679614741127832,-0.0435753835259278,-2.24306595223881,\ +-1.69897,-0.230734,-4.09234141414141,3.14728267713138,-0.679741810662755,-0.0439072754099999,-2.24339017700967,\ +-1.69897,-0.230734,-4.06481060606061,3.14719627485005,-0.679936134063933,-0.0444148271199814,-2.24388600364709,\ +-1.69897,-0.230734,-4.0372797979798,3.14704768586411,-0.680270318725211,-0.0452876813168979,-2.24473869383195,\ +-1.69897,-0.230734,-4.00974898989899,3.14673203055576,-0.680980244576294,-0.0471419308694029,-2.24655010792527,\ +-1.69897,-0.230734,-3.98221818181818,3.14560575803148,-0.68351329236357,-0.0537579777689972,-2.25301331595452,\ +-1.69897,-0.230734,-3.95468737373737,3.15466289093587,-0.663143310882163,-0.000553788925066754,-2.20103820970988,\ +-1.69897,-0.230734,-3.92715656565657,3.14888682607935,-0.67613399296718,-0.0344840457342603,-2.23418463560012,\ +-1.69897,-0.230734,-3.89962575757576,3.14831161755676,-0.677427668027146,-0.0378629850944126,-2.23748551727982,\ +-1.69897,-0.230734,-3.87209494949495,3.14809354857689,-0.677918116950492,-0.0391439846456336,-2.23873692415625,\ +-1.69897,-0.230734,-3.84456414141414,3.14797880050237,-0.678176191572776,-0.039818047651157,-2.23939541547223,\ +-1.69897,-0.230734,-3.81703333333333,3.14790800712285,-0.678335409709998,-0.0402339082079214,-2.23980166913553,\ +-1.69897,-0.230734,-3.78950252525252,3.14785997250584,-0.678443442160174,-0.040516077285283,-2.24007731975804,\ +-1.69897,-0.230734,-3.76197171717172,3.14782524167013,-0.678521553687022,-0.0407200961465191,-2.24027662553112,\ +-1.69897,-0.230734,-3.73444090909091,3.14779895992842,-0.678580662744776,-0.0408744826133871,-2.24042744547956,\ +-1.69897,-0.230734,-3.7069101010101,3.14777837847484,-0.678626951546377,-0.0409953839575578,-2.24054555385307,\ +-1.69897,-0.230734,-3.67937929292929,3.14776182423107,-0.678664182935471,-0.041092628319707,-2.24064055175012,\ +-1.69897,-0.230734,-3.65184848484848,3.14774822051795,-0.678694778421629,-0.0411725404209983,-2.24071861778298,\ +-1.69897,-0.230734,-3.62431767676768,3.1477368430536,-0.678720366953952,-0.0412393749003132,-2.24078390830313,\ +-1.69897,-0.230734,-3.59678686868687,3.14772718668362,-0.67874208465202,-0.0412960991791398,-2.24083932218092,\ +-1.69897,-0.230734,-3.56925606060606,3.14771888833849,-0.678760748078761,-0.0413448460315445,-2.24088694292071,\ +-1.69897,-0.230734,-3.54172525252525,3.14771168036028,-0.678776959211376,-0.0413871877568861,-2.2409283064998,\ +-1.69897,-0.230734,-3.51419444444444,3.14770536109305,-0.678791171584962,-0.0414243089397831,-2.24096457013743,\ +-1.69897,-0.230734,-3.48666363636364,3.14769977571987,-0.678803733391162,-0.0414571190191531,-2.24099662226337,\ +-1.69897,-0.230734,-3.45913282828283,3.14769480340993,-0.678814916385004,-0.0414863277897561,-2.24102515627523,\ +-1.69897,-0.230734,-3.43160202020202,3.14769034847773,-0.678824935768331,-0.0415124973355221,-2.2410507212721,\ +-1.69897,-0.230734,-3.40407121212121,3.14768633416554,-0.678833964173427,-0.041536078553311,-2.24107375773458,\ +-1.69897,-0.230734,-3.3765404040404,3.14768269818376,-0.678842141692983,-0.0415574373500836,-2.24109462311672,\ +-1.69897,-0.230734,-3.3490095959596,3.14767938945543,-0.678849583201843,-0.0415768737665114,-2.24111361052788,\ +-1.69897,-0.230734,-3.32147878787879,3.14767636570193,-0.678856383786926,-0.0415946361593385,-2.24113096258745,\ +-1.69897,-0.230734,-3.29394797979798,3.14767359162671,-0.678862622832056,-0.0416109318705335,-2.24114688184755,\ +-1.69897,-0.230734,-3.26641717171717,3.14767103753114,-0.67886836713104,-0.0416259353583029,-2.24116153873619,\ +-1.69897,-0.230734,-3.23888636363636,3.14766867824709,-0.678873673288409,-0.0416397944675441,-2.24117507768286,\ +-1.69897,-0.230734,-3.21135555555555,3.14766649230471,-0.678878589590966,-0.041652635318189,-2.24118762189396,\ +-1.69897,-0.230734,-3.18382474747475,3.14766446127727,-0.678883157481485,-0.0416645661542539,-2.24119927711295,\ +-1.69897,-0.230734,-3.15629393939394,3.14766256926037,-0.678887412729751,-0.0416756804025652,-2.24121013460837,\ +-1.69897,-0.230734,-3.12876313131313,3.14766080245473,-0.678891386371157,-0.0416860591242139,-2.24122027356871,\ +-1.69897,-0.230734,-3.10123232323232,3.14765914882895,-0.678895105464904,-0.0416957729948998,-2.24122976303696,\ +-1.69897,-0.230734,-3.07370151515151,3.14765759784528,-0.678898593711008,-0.0417048839165088,-2.24123866348501,\ +-1.69897,-0.230734,-3.04617070707071,3.14765614023476,-0.678901871955885,-0.0417134463376259,-2.2412470281036,\ +-1.69897,-0.230734,-3.0186398989899,3.1476547678118,-0.67890495860929,-0.041721508342527,-2.2412549038662,\ +-1.69897,-0.230734,-2.99110909090909,3.14765347332049,-0.678907869990207,-0.0417291125546529,-2.24126233241163,\ +-1.69897,-0.230734,-2.96357828282828,3.14765225030619,-0.678910620615485,-0.0417362968904286,-2.24126935078035,\ +-1.69897,-0.230734,-2.93604747474747,3.1476510930079,-0.678913223441902,-0.0417430951915665,-2.24127599203232,\ +-1.69897,-0.230734,-2.90851666666667,3.14764999626753,-0.678915690070264,-0.0417495377581086,-2.24128228576761,\ +-1.69897,-0.230734,-2.88098585858586,3.14764895545308,-0.678918030918255,-0.0417556517999279,-2.24128825856749,\ +-1.69897,-0.230734,-2.85345505050505,3.14764796639314,-0.678920255367527,-0.0417614618208732,-2.24129393436977,\ +-1.69897,-0.230734,-2.82592424242424,3.14764702532112,-0.678922371889354,-0.0417669899470037,-2.24129933478935,\ +-1.69897,-0.230734,-2.79839343434343,3.14764612882728,-0.678924388152447,-0.0417722562081731,-2.24130447939336,\ +-1.69897,-0.230734,-2.77086262626263,3.14764527381744,-0.67892631111581,-0.0417772787805296,-2.24130938593809,\ +-1.69897,-0.230734,-2.74333181818182,3.14764445747727,-0.678928147108965,-0.0417820741961096,-2.24131407057363,\ +-1.69897,-0.230734,-2.71580101010101,3.14764367724142,-0.678929901901566,-0.0417866575246227,-2.24131854802159,\ +-1.69897,-0.230734,-2.6882702020202,3.14764293076652,-0.678931580763959,-0.0417910425316404,-2.24132283172951,\ +-1.69897,-0.230734,-2.66073939393939,3.14764221590773,-0.678933188520047,-0.0417952418166842,-2.24132693400587,\ +-1.69897,-0.230734,-2.63320858585858,3.14764153069807,-0.678934729593591,-0.0417992669341315,-2.24133086613813,\ +-1.69897,-0.230734,-2.60567777777778,3.14764087333048,-0.67893620804885,-0.0418031284993844,-2.24133463849644,\ +-1.69897,-0.230734,-2.57814696969697,3.14764024214177,-0.678937627626368,-0.0418068362823524,-2.24133826062504,\ +-1.69897,-0.230734,-2.55061616161616,3.14763963559867,-0.678938991774587,-0.0418103992899877,-2.24134174132279,\ +-1.69897,-0.230734,-2.52308535353535,3.14763905228534,-0.67894030367781,-0.0418138258393339,-2.2413450887146,\ +-1.69897,-0.230734,-2.49555454545454,3.14763849089234,-0.678941566281006,-0.0418171236223429,-2.24134831031474,\ +-1.69897,-0.230734,-2.46802373737374,3.14763795020685,-0.67894278231189,-0.041820299763516,-2.24135141308312,\ +-1.69897,-0.230734,-2.44049292929293,3.1476374291039,-0.678943954300598,-0.0418233608712848,-2.24135440347552,\ +-1.69897,-0.230734,-2.41296212121212,3.14763692653855,-0.678945084597248,-0.0418263130839074,-2.24135728748837,\ +-1.69897,-0.230734,-2.38543131313131,3.14763644153889,-0.678946175387679,-0.0418291621105521,-2.24136007069898,\ +-1.69897,-0.230734,-2.3579005050505,3.14763597319983,-0.678947228707549,-0.0418319132681466,-2.24136275830143,\ +-1.69897,-0.230734,-2.3303696969697,3.14763552067737,-0.678948246455025,-0.0418345715144965,-2.241365355139,\ +-1.69897,-0.230734,-2.30283888888889,3.14763508318358,-0.678949230402194,-0.0418371414781003,-2.24136786573326,\ +-1.69897,-0.230734,-2.27530808080808,3.14763465998203,-0.67895018220536,-0.0418396274850455,-2.24137029431037,\ +-1.69897,-0.230734,-2.24777727272727,3.14763425038361,-0.678951103414351,-0.0418420335833085,-2.24137264482479,\ +-1.69897,-0.230734,-2.22024646464646,3.14763385374282,-0.678951995480932,-0.0418443635647512,-2.24137492098078,\ +-1.69897,-0.230734,-2.19271565656565,3.14763346945435,-0.678952859766451,-0.0418466209850608,-2.24137712625188,\ +-1.69897,-0.230734,-2.16518484848485,3.14763309695005,-0.678953697548757,-0.0418488091818539,-2.24137926389862,\ +-1.69897,-0.230734,-2.13765404040404,3.14763273569607,-0.678954510028525,-0.0418509312911447,-2.24138133698457,\ +-1.69897,-0.230734,-2.11012323232323,3.14763238519028,-0.678955298334972,-0.041852990262337,-2.24138334839097,\ +-1.69897,-0.230734,-2.08259242424242,3.14763204496007,-0.678956063531109,-0.0418549888719038,-2.24138530083019,\ +-1.69897,-0.230734,-2.05506161616161,3.14763171456009,-0.678956806618528,-0.0418569297358772,-2.2413871968578,\ +-1.69897,-0.230734,-2.02753080808081,3.14763139357038,-0.678957528541753,-0.0418588153212727,-2.24138903888384,\ +-1.69897,-0.230734,-2,3.14763108159453,-0.67895823019227,-0.0418606479565503,-2.24139082918297,\ +-1.69897,-0.230428,-4.72555,3.14755298431461,-0.679133875196349,-0.0423194137131647,-2.24183899688292,\ +-1.69897,-0.230428,-4.69801919191919,3.14755088514325,-0.67913859634621,-0.0423317448460606,-2.24185104315139,\ +-1.69897,-0.230428,-4.67048838383838,3.14754862304136,-0.679143683935616,-0.0423450330794235,-2.24186402441011,\ +-1.69897,-0.230428,-4.64295757575758,3.14754617827391,-0.679149182349763,-0.0423593943425824,-2.24187805391032,\ +-1.69897,-0.230428,-4.61542676767677,3.14754352778452,-0.679155143443682,-0.0423749640752753,-2.24189326396292,\ +-1.69897,-0.230428,-4.58789595959596,3.14754064446609,-0.679161628182693,-0.0423919015123218,-2.24190981012421,\ +-1.69897,-0.230428,-4.56036515151515,3.14753749623036,-0.679168708735017,-0.0424103951493089,-2.2419278765353,\ +-1.69897,-0.230428,-4.53283434343434,3.14753404480867,-0.679176471168971,-0.0424306697873763,-2.24194768280414,\ +-1.69897,-0.230428,-4.50530353535354,3.14753024418866,-0.679185018968835,-0.0424529957162694,-2.24196949297645,\ +-1.69897,-0.230428,-4.47777272727273,3.14752603855123,-0.679194477674726,-0.0424777008332029,-2.24199362737461,\ +-1.69897,-0.230428,-4.45024191919192,3.1475213595109,-0.679205001089332,-0.0425051868541626,-2.24202047843447,\ +-1.69897,-0.230428,-4.42271111111111,3.14751612236855,-0.679216779705591,-0.0425359513261149,-2.24205053220905,\ +-1.69897,-0.230428,-4.3951803030303,3.14751022093824,-0.679230052341345,-0.0425706180154133,-2.24208439805493,\ +-1.69897,-0.230428,-4.36764949494949,3.14750352027241,-0.67924512250101,-0.0426099796427869,-2.24212285038,\ +-1.69897,-0.230428,-4.34011868686869,3.14749584621641,-0.679262381867772,-0.0426550592423624,-2.24216688858505,\ +-1.69897,-0.230428,-4.31258787878788,3.14748697005456,-0.679282344835586,-0.0427072003555232,-2.24221782517397,\ +-1.69897,-0.230428,-4.28505707070707,3.14747658532752,-0.679305700648041,-0.0427682032119796,-2.24227741878896,\ +-1.69897,-0.230428,-4.25752626262626,3.1474642717319,-0.679333394590163,-0.0428405367940205,-2.24234808137575,\ +-1.69897,-0.230428,-4.22999545454545,3.14744943684442,-0.679366759053988,-0.0429276811655356,-2.24243321260444,\ +-1.69897,-0.230428,-4.20246464646465,3.14743121796605,-0.679407734296277,-0.0430347040673772,-2.24253776314482,\ +-1.69897,-0.230428,-4.17493383838384,3.14740830814762,-0.679459259716329,-0.04316928289266,-2.2426692330327,\ +-1.69897,-0.230428,-4.14740303030303,3.14737862797571,-0.679526012027284,-0.0433436327103583,-2.24283955515386,\ +-1.69897,-0.230428,-4.11987222222222,3.14733865592458,-0.679615911330954,-0.0435784399699423,-2.24306893807519,\ +-1.69897,-0.230428,-4.09234141414141,3.14728191597469,-0.679743522545302,-0.043911746662088,-2.2433945449703,\ +-1.69897,-0.230428,-4.06481060606061,3.14719505678111,-0.679938873566811,-0.0444219824052502,-2.24389299363641,\ +-1.69897,-0.230428,-4.0372797979798,3.14704543096973,-0.680275390104565,-0.0453009272113664,-2.24475163372986,\ +-1.69897,-0.230428,-4.00974898989899,3.14672651527378,-0.680992648743597,-0.0471743292130194,-2.24658175782705,\ +-1.69897,-0.230428,-3.98221818181818,3.14557675194374,-0.68357852862282,-0.0539283678235843,-2.253179769788,\ +-1.69897,-0.230428,-3.95468737373737,3.15432541096004,-0.663902321590121,-0.00253624281574027,-2.20297486646252,\ +-1.69897,-0.230428,-3.92715656565657,3.14887530232091,-0.676159910522829,-0.0345517395869218,-2.23425076564102,\ +-1.69897,-0.230428,-3.89962575757576,3.1483081200485,-0.677435534112288,-0.0378835304581769,-2.23750558802026,\ +-1.69897,-0.230428,-3.87209494949495,3.14809188297875,-0.677921862970725,-0.0391537688453916,-2.23874648232889,\ +-1.69897,-0.230428,-3.84456414141414,3.14797782979678,-0.678178374742081,-0.0398237498532947,-2.23940098594644,\ +-1.69897,-0.230428,-3.81703333333333,3.14790737232254,-0.678336837410199,-0.0402376372064621,-2.23980531198959,\ +-1.69897,-0.230428,-3.78950252525252,3.14785952522765,-0.678444448112983,-0.0405187047252364,-2.24007988650087,\ +-1.69897,-0.230428,-3.76197171717172,3.14782490961169,-0.678522300504393,-0.0407220467527363,-2.24027853107592,\ +-1.69897,-0.230428,-3.73444090909091,3.14779870369015,-0.6785812390385,-0.0408759878302723,-2.24042891592407,\ +-1.69897,-0.230428,-3.7069101010101,3.14777817476918,-0.678627409691428,-0.0409965805828864,-2.24054672283487,\ +-1.69897,-0.230428,-3.67937929292929,3.14776165841548,-0.678664555863686,-0.0410936023678808,-2.24064150329657,\ +-1.69897,-0.230428,-3.65184848484848,3.14774808292615,-0.678695087873019,-0.0411733486745616,-2.24071940736489,\ +-1.69897,-0.230428,-3.62431767676768,3.14773672704809,-0.678720627856604,-0.0412400563498205,-2.2407845740103,\ +-1.69897,-0.230428,-3.59678686868687,3.14772708755606,-0.678742307595246,-0.0412966814827341,-2.24083989103258,\ +-1.69897,-0.230428,-3.56925606060606,3.14771880265655,-0.678760940782076,-0.0413453493517597,-2.24088743461361,\ +-1.69897,-0.230428,-3.54172525252525,3.14771160556292,-0.678777127434681,-0.0413876271379645,-2.24092873573063,\ +-1.69897,-0.230428,-3.51419444444444,3.14770529523064,-0.678791319713084,-0.0414246958344162,-2.24096494809433,\ +-1.69897,-0.230428,-3.48666363636364,3.14769971728205,-0.678803864820981,-0.0414574622996289,-2.24099695761365,\ +-1.69897,-0.230428,-3.45913282828283,3.1476947512085,-0.678815033788801,-0.0414866344357824,-2.24102545583735,\ +-1.69897,-0.230428,-3.43160202020202,3.14769030156518,-0.678825041277178,-0.0415127729132179,-2.24105099048362,\ +-1.69897,-0.230428,-3.40407121212121,3.14768629177699,-0.678834059507561,-0.0415363275557594,-2.24107400098477,\ +-1.69897,-0.230428,-3.3765404040404,3.14768265969502,-0.678842228256248,-0.0415576634439748,-2.24109484398757,\ +-1.69897,-0.230428,-3.3490095959596,3.14767935435206,-0.678849662151223,-0.0415770799737543,-2.24111381197148,\ +-1.69897,-0.230428,-3.32147878787879,3.14767633355615,-0.678856456084505,-0.0415948249928026,-2.24113114705863,\ +-1.69897,-0.230428,-3.29394797979798,3.14767356207991,-0.678862689284405,-0.0416111054368878,-2.24114705140431,\ +-1.69897,-0.230428,-3.26641717171717,3.14767101028041,-0.678868428419408,-0.0416260954368947,-2.24116169511676,\ +-1.69897,-0.230428,-3.23888636363636,3.14766865303483,-0.678873729992149,-0.0416399425715871,-2.24117522236552,\ +-1.69897,-0.230428,-3.21135555555555,3.14766646891046,-0.678878642205906,-0.0416527727427202,-2.24118775614382,\ +-1.69897,-0.230428,-3.18382474747475,3.14766443951125,-0.678883206434442,-0.0416646940140838,-2.24119940201906,\ +-1.69897,-0.230428,-3.15629393939394,3.14766254895832,-0.678887458390142,-0.0416757996625723,-2.24121025111332,\ +-1.69897,-0.230428,-3.12876313131313,3.14766078347377,-0.678891429060333,-0.0416861706237283,-2.24122038249244,\ +-1.69897,-0.230428,-3.10123232323232,3.14765913104423,-0.678895145463719,-0.0416958774674787,-2.24122986509609,\ +-1.69897,-0.230428,-3.07370151515151,3.14765758114716,-0.678898631265999,-0.0417049820060877,-2.2412387593086,\ +-1.69897,-0.230428,-3.04617070707071,3.14765612452661,-0.678901907284366,-0.0417135386118001,-2.24124711824613,\ +-1.69897,-0.230428,-3.0186398989899,3.14765475300813,-0.678904991903549,-0.0417215953035365,-2.24125498881831,\ +-1.69897,-0.230428,-2.99110909090909,3.14765345934538,-0.678907901421015,-0.0417291946485263,-2.24126241260903,\ +-1.69897,-0.230428,-2.96357828282828,3.14765223709196,-0.678910650335018,-0.0417363745146321,-2.24126942661135,\ +-1.69897,-0.230428,-2.93604747474747,3.14765108049407,-0.678913251586204,-0.0417431687014374,-2.24127606384403,\ +-1.69897,-0.230428,-2.90851666666667,3.14764998439985,-0.678915716761333,-0.0417496074722938,-2.24128235387131,\ +-1.69897,-0.230428,-2.88098585858586,3.14764894418276,-0.678918056265811,-0.041755718004999,-2.24128832324314,\ +-1.69897,-0.230428,-2.85345505050505,3.14764795567619,-0.67892027947051,-0.0417615247752637,-2.24129399586983,\ +-1.69897,-0.230428,-2.82592424242424,3.14764701511777,-0.67892239483723,-0.0417670498843784,-2.24129939334209,\ +-1.69897,-0.230428,-2.79839343434343,3.14764611910148,-0.678924410026308,-0.0417723133403279,-2.2413045352057,\ +-1.69897,-0.230428,-2.77086262626263,3.14764526453642,-0.678926331989325,-0.04177733329989,-2.24130943919798,\ +-1.69897,-0.230428,-2.74333181818182,3.1476444486112,-0.67892816704922,-0.0417821262778957,-2.24131412145226,\ +-1.69897,-0.230428,-2.71580101010101,3.1476436687631,-0.678929920969782,-0.0417867073287303,-2.24131859667516,\ +-1.69897,-0.230428,-2.6882702020202,3.14764292265104,-0.67893159901611,-0.0417910902042803,-2.24132287830085,\ +-1.69897,-0.230428,-2.66073939393939,3.14764220813229,-0.678933206007423,-0.0417952874918158,-2.24132697862585,\ +-1.69897,-0.230428,-2.63320858585858,3.14764152324175,-0.678934746363271,-0.0417993107347191,-2.24133090892687,\ +-1.69897,-0.230428,-2.60567777777778,3.14764086617401,-0.678936224144125,-0.041803170538503,-2.24133467956441,\ +-1.69897,-0.230428,-2.57814696969697,3.14764023526744,-0.67893764308712,-0.041806876664162,-2.24133830007398,\ +-1.69897,-0.230428,-2.55061616161616,3.14763962899011,-0.67893900663761,-0.041810438110595,-2.24134177924659,\ +-1.69897,-0.230428,-2.52308535353535,3.14763904592742,-0.67894031797711,-0.0418138631875561,-2.24134512520004,\ +-1.69897,-0.230428,-2.49555454545454,3.14763848477108,-0.678941580048056,-0.0418171595803852,-2.24134834544211,\ +-1.69897,-0.230428,-2.46802373737374,3.14763794430928,-0.678942795575862,-0.0418203344075762,-2.24135144692686,\ +-1.69897,-0.230428,-2.44049292929293,3.14763742341796,-0.678943967088574,-0.0418233942720924,-2.24135443610472,\ +-1.69897,-0.230428,-2.41296212121212,3.14763692105306,-0.678945096934397,-0.0418263453072047,-2.24135731896727,\ +-1.69897,-0.230428,-2.38543131313131,3.14763643624345,-0.678946187297428,-0.0418291932175267,-2.24136010108735,\ +-1.69897,-0.230428,-2.3579005050505,3.14763596808471,-0.678947240211727,-0.0418319433158196,-2.24136278765496,\ +-1.69897,-0.230428,-2.3303696969697,3.14763551573352,-0.678948257574004,-0.0418346005560699,-2.24136538350968,\ +-1.69897,-0.230428,-2.30283888888889,3.14763507840255,-0.678949241155004,-0.0418371695632724,-2.24136789316963,\ +-1.69897,-0.230428,-2.27530808080808,3.1476346553559,-0.67895019260979,-0.0418396546602943,-2.24137032085783,\ +-1.69897,-0.230428,-2.24777727272727,3.14763424590497,-0.678951113487065,-0.0418420598921489,-2.24137267052586,\ +-1.69897,-0.230428,-2.22024646464646,3.14763384940473,-0.678952005237544,-0.0418443890479668,-2.24137494587529,\ +-1.69897,-0.230428,-2.19271565656565,3.1476334652503,-0.678952869221609,-0.0418466456809151,-2.24137715037724,\ +-1.69897,-0.230428,-2.16518484848485,3.14763309287392,-0.678953706716224,-0.0418488331262824,-2.2413792872899,\ +-1.69897,-0.230428,-2.13765404040404,3.14763273174209,-0.678954518921231,-0.0418509545179278,-2.24138135967477,\ +-1.69897,-0.230428,-2.11012323232323,3.14763238135306,-0.678955306965086,-0.0418530128032612,-2.24138337041117,\ +-1.69897,-0.230428,-2.08259242424242,3.14763204123452,-0.678956071910094,-0.0418550107569055,-2.24138532220962,\ +-1.69897,-0.230428,-2.05506161616161,3.14763171094139,-0.678956814757185,-0.0418569509931755,-2.24138721762402,\ +-1.69897,-0.230428,-2.02753080808081,3.147631390054,-0.67895753645028,-0.0418588359774909,-2.24138905906287,\ +-1.69897,-0.230428,-2,3.1476310781762,-0.67895823788029,-0.0418606680368276,-2.24139084879938,\ +-1.69897,-0.229174,-4.72555,3.14755289199146,-0.679134082836095,-0.0423199560457259,-2.24183952668692,\ +-1.69897,-0.229174,-4.69801919191919,3.14755078578704,-0.679138819803674,-0.0423323284927922,-2.24185161331515,\ +-1.69897,-0.229174,-4.67048838383838,3.14754851581674,-0.679143925089584,-0.0423456629475101,-2.24186463972747,\ +-1.69897,-0.229174,-4.64295757575758,3.14754606220778,-0.679149443388784,-0.0423600761482816,-2.24187871996546,\ +-1.69897,-0.229174,-4.61542676767677,3.14754340173643,-0.679155426932651,-0.0423757045178048,-2.24189398730031,\ +-1.69897,-0.229174,-4.58789595959596,3.1475405070907,-0.679161937147353,-0.042392708494599,-2.2419105984642,\ +-1.69897,-0.229174,-4.56036515151515,3.14753734592925,-0.679169046770319,-0.0424112780609621,-2.2419287390506,\ +-1.69897,-0.229174,-4.53283434343434,3.14753387966789,-0.679176842579506,-0.0424316398715269,-2.24194863047814,\ +-1.69897,-0.229174,-4.50530353535354,3.14753006189684,-0.679185428952976,-0.0424540665505107,-2.24197053907309,\ +-1.69897,-0.229174,-4.47777272727273,3.14752583629085,-0.679194932569251,-0.0424788889685157,-2.24199478806252,\ +-1.69897,-0.229174,-4.45024191919192,3.14752113381171,-0.67920550869901,-0.0425065126757536,-2.24202177362795,\ +-1.69897,-0.229174,-4.42271111111111,3.14751586890702,-0.679217349754269,-0.0425374402316107,-2.24205198671899,\ +-1.69897,-0.229174,-4.3951803030303,3.14750993425823,-0.679230697100186,-0.0425723020557842,-2.24208604319189,\ +-1.69897,-0.229174,-4.36764949494949,3.14750319338842,-0.679245857680759,-0.0426118998527877,-2.24212472623078,\ +-1.69897,-0.229174,-4.34011868686869,3.14749547003767,-0.679263227914069,-0.0426572690238016,-2.2421690473178,\ +-1.69897,-0.229174,-4.31258787878788,3.14748653252774,-0.679283328857032,-0.0427097705131289,-2.24222033595776,\ +-1.69897,-0.229174,-4.28505707070707,3.14747607012371,-0.679306859369235,-0.0427712296664418,-2.24228037532857,\ +-1.69897,-0.229174,-4.25752626262626,3.14746365616795,-0.679334779026759,-0.0428441527926951,-2.24235161384037,\ +-1.69897,-0.229174,-4.22999545454545,3.14744868846219,-0.679368442206096,-0.0429320773768276,-2.24243750725781,\ +-1.69897,-0.229174,-4.20246464646465,3.14743028863813,-0.679409824405029,-0.04304016320542,-2.24254309617001,\ +-1.69897,-0.229174,-4.17493383838384,3.14740712334037,-0.679461924411852,-0.043176242789207,-2.24267603214702,\ +-1.69897,-0.229174,-4.14740303030303,3.14737706580218,-0.679529525440008,-0.0433528093644563,-2.24284851981589,\ +-1.69897,-0.229174,-4.11987222222222,3.14733650256309,-0.679620754357328,-0.0435910894311092,-2.24308129531815,\ +-1.69897,-0.229174,-4.09234141414141,3.14727875929495,-0.679750622088668,-0.0439302899016281,-2.24341265983806,\ +-1.69897,-0.229174,-4.06481060606061,3.14718998909603,-0.679950271064476,-0.0444517514366365,-2.24392207496633,\ +-1.69897,-0.229174,-4.0372797979798,3.14703599797166,-0.680296605427108,-0.0453563393396469,-2.24480576576941,\ +-1.69897,-0.229174,-4.00974898989899,3.14670316976003,-0.681045154065939,-0.0473114674371138,-2.24671572798847,\ +-1.69897,-0.229174,-3.98221818181818,3.14544855667876,-0.683866846703309,-0.0546814234714474,-2.25391542891853,\ +-1.69897,-0.229174,-3.95468737373737,3.15322443881831,-0.666378467449454,-0.00900366803285717,-2.20929288615407,\ +-1.69897,-0.229174,-3.92715656565657,3.14883017158145,-0.676261411995386,-0.0348168504569975,-2.23450975212194,\ +-1.69897,-0.229174,-3.89962575757576,3.14829414366653,-0.677466967750822,-0.0379656317228318,-2.2375857926441,\ +-1.69897,-0.229174,-3.87209494949495,3.1480851752867,-0.677936948932764,-0.0391931717468593,-2.23878497497456,\ +-1.69897,-0.229174,-3.84456414141414,3.14797390449903,-0.678187202948928,-0.0398468081749057,-2.23942351159228,\ +-1.69897,-0.229174,-3.81703333333333,3.14790479881535,-0.678342625366994,-0.0402527547237025,-2.23982008027347,\ +-1.69897,-0.229174,-3.78950252525252,3.14785770880839,-0.678448533338073,-0.0405293748913997,-2.240090310173,\ +-1.69897,-0.229174,-3.76197171717172,3.14782355941799,-0.678525337163012,-0.0407299781766648,-2.24028627927414,\ +-1.69897,-0.229174,-3.73444090909091,3.14779766080366,-0.678583584546594,-0.0408821140437752,-2.24043490061446,\ +-1.69897,-0.229174,-3.7069101010101,3.14777734507382,-0.678629275721154,-0.0410014544507388,-2.24055148411035,\ +-1.69897,-0.229174,-3.67937929292929,3.14776098264302,-0.678666075712476,-0.0410975720485658,-2.24064538127272,\ +-1.69897,-0.229174,-3.65184848484848,3.14774752190258,-0.678696349645358,-0.0411766442874711,-2.24072262684506,\ +-1.69897,-0.229174,-3.62431767676768,3.14773625384699,-0.678721692111456,-0.041242836068413,-2.24078728951395,\ +-1.69897,-0.229174,-3.59678686868687,3.14772668306105,-0.67874321732637,-0.0412990576020565,-2.2408422122606,\ +-1.69897,-0.229174,-3.56925606060606,3.14771845292211,-0.678761727353745,-0.0413474037919047,-2.24088944159365,\ +-1.69897,-0.229174,-3.54172525252525,3.14771130017727,-0.678777814263527,-0.0413894210606375,-2.24093048821147,\ +-1.69897,-0.229174,-3.51419444444444,3.14770502626346,-0.678791924634823,-0.0414262758245835,-2.24096649158476,\ +-1.69897,-0.229174,-3.48666363636364,3.14769947858696,-0.678804401659148,-0.0414588644628712,-2.24099832738518,\ +-1.69897,-0.229174,-3.45913282828283,3.14769453794827,-0.678815513422622,-0.0414878871874504,-2.24102667964891,\ +-1.69897,-0.229174,-3.43160202020202,3.14769010988082,-0.678825472385665,-0.0415138989219661,-2.24105209048017,\ +-1.69897,-0.229174,-3.40407121212121,3.14768611855247,-0.678834449098868,-0.0415373451261251,-2.241074995048,\ +-1.69897,-0.229174,-3.3765404040404,3.14768250238668,-0.678842582051224,-0.0415585875181898,-2.24109574671452,\ +-1.69897,-0.229174,-3.3490095959596,3.14767921086297,-0.67884998486596,-0.0415779228697469,-2.24111463539553,\ +-1.69897,-0.229174,-3.32147878787879,3.14767620214219,-0.678856751641618,-0.0415955969560179,-2.24113190118854,\ +-1.69897,-0.229174,-3.29394797979798,3.14767344127856,-0.678862960973147,-0.041611815058504,-2.24114774463278,\ +-1.69897,-0.229174,-3.26641717171717,3.14767089885618,-0.678868679018534,-0.0416267499747092,-2.24116233453395,\ +-1.69897,-0.229174,-3.23888636363636,3.14766854993678,-0.678873961865234,-0.0416405481990074,-2.24117581400219,\ +-1.69897,-0.229174,-3.21135555555555,3.14766637323904,-0.678878857376092,-0.0416533347439741,-2.24118830516214,\ +-1.69897,-0.229174,-3.18382474747475,3.14766435049198,-0.67888340664359,-0.0416652169387299,-2.24119991286349,\ +-1.69897,-0.229174,-3.15629393939394,3.14766246592078,-0.678887645146076,-0.0416762874488758,-2.24121072763117,\ +-1.69897,-0.229174,-3.12876313131313,3.14766070583468,-0.67889160367486,-0.0416866266979866,-2.24122082803082,\ +-1.69897,-0.229174,-3.10123232323232,3.14765905829374,-0.678895309083472,-0.0416963048245877,-2.24123028258072,\ +-1.69897,-0.229174,-3.07370151515151,3.1476575128377,-0.678898784897657,-0.041705383275363,-2.24123915130805,\ +-1.69897,-0.229174,-3.04617070707071,3.1476560602636,-0.678902051815352,-0.0417139161111025,-2.24124748702473,\ +-1.69897,-0.229174,-3.0186398989899,3.14765469244238,-0.678905128119188,-0.041721951084059,-2.24125533637987,\ +-1.69897,-0.229174,-2.99110909090909,3.14765340216676,-0.678908030018813,-0.0417295305320693,-2.24126274073325,\ +-1.69897,-0.229174,-2.96357828282828,3.14765218302409,-0.67891077193659,-0.0417366921247974,-2.24126973688432,\ +-1.69897,-0.229174,-2.93604747474747,3.14765102928981,-0.678913366747337,-0.0417434694898657,-2.24127635768387,\ +-1.69897,-0.229174,-2.90851666666667,3.1476499358376,-0.678915825980459,-0.041749892740842,-2.2412826325498,\ +-1.69897,-0.229174,-2.88098585858586,3.14764889806318,-0.678918159991227,-0.0417559889245725,-2.24128858790414,\ +-1.69897,-0.229174,-2.85345505050505,3.14764791181952,-0.67892037810653,-0.0417617824018775,-2.24129424754496,\ +-1.69897,-0.229174,-2.82592424242424,3.14764697336146,-0.678922488749438,-0.0417672951729101,-2.24129963296416,\ +-1.69897,-0.229174,-2.79839343434343,3.14764607929817,-0.678924499546097,-0.0417725471563412,-2.24130476362027,\ +-1.69897,-0.229174,-2.77086262626263,3.14764522655224,-0.678926417417805,-0.0417775564298391,-2.24130965717334,\ +-1.69897,-0.229174,-2.74333181818182,3.14764441232424,-0.678928248660585,-0.0417823394379601,-2.24131432968807,\ +-1.69897,-0.229174,-2.71580101010101,3.14764363406207,-0.678929999014268,-0.0417869111724929,-2.24131879580987,\ +-1.69897,-0.229174,-2.6882702020202,3.14764288943422,-0.678931673722547,-0.0417912853294201,-2.24132306891836,\ +-1.69897,-0.229174,-2.66073939393939,3.14764217630643,-0.678933277585479,-0.0417954744459583,-2.24132716126112,\ +-1.69897,-0.229174,-2.63320858585858,3.1476414927213,-0.678934815005412,-0.0417994900205701,-2.24133108407099,\ +-1.69897,-0.229174,-2.60567777777778,3.14764083688026,-0.678936290027349,-0.0418033426183602,-2.24133484766901,\ +-1.69897,-0.229174,-2.57814696969697,3.1476402071279,-0.678937706374476,-0.0418070419638967,-2.24133846155508,\ +-1.69897,-0.229174,-2.55061616161616,3.14763960193787,-0.678939067479553,-0.0418105970231686,-2.24134193448808,\ +-1.69897,-0.229174,-2.52308535353535,3.14763901990066,-0.678940376512681,-0.04181401607614,-2.24134527455671,\ +-1.69897,-0.229174,-2.49555454545454,3.14763845971259,-0.678941636405958,-0.0418173067811302,-2.24134848924234,\ +-1.69897,-0.229174,-2.46802373737374,3.147637920166,-0.678942849875395,-0.0418204762320802,-2.24135158547505,\ +-1.69897,-0.229174,-2.44049292929293,3.14763740014067,-0.678944019440477,-0.0418235310096017,-2.24135456968343,\ +-1.69897,-0.229174,-2.41296212121212,3.14763689859597,-0.678945147441611,-0.0418264772265828,-2.24135744783915,\ +-1.69897,-0.229174,-2.38543131313131,3.14763641456396,-0.678946236055759,-0.0418293205690184,-2.24136022549686,\ +-1.69897,-0.229174,-2.3579005050505,3.14763594714313,-0.678947287310468,-0.0418320663326353,-2.24136290782994,\ +-1.69897,-0.229174,-2.3303696969697,3.14763549549281,-0.678948303096464,-0.0418347194558112,-2.24136549966268,\ +-1.69897,-0.229174,-2.30283888888889,3.14763505882809,-0.678949285179008,-0.0418372845492155,-2.24136800549926,\ +-1.69897,-0.229174,-2.27530808080808,3.14763463641533,-0.678950235208131,-0.0418397659225508,-2.2413704295498,\ +-1.69897,-0.229174,-2.24777727272727,3.147634227568,-0.678951154727886,-0.0418421676087137,-2.24137277575404,\ +-1.69897,-0.229174,-2.22024646464646,3.14763383164295,-0.678952045184719,-0.0418444933856687,-2.24137504780267,\ +-1.69897,-0.229174,-2.19271565656565,3.14763344803708,-0.678952907935066,-0.0418467467962788,-2.2413772491567,\ +-1.69897,-0.229174,-2.16518484848485,3.14763307618422,-0.678953744252246,-0.0418489311663118,-2.24137938306509,\ +-1.69897,-0.229174,-2.13765404040404,3.14763271555239,-0.678954555332727,-0.041851049620819,-2.24138145258067,\ +-1.69897,-0.229174,-2.11012323232323,3.14763236564124,-0.678955342301845,-0.0418531050990525,-2.24138346057482,\ +-1.69897,-0.229174,-2.08259242424242,3.14763202597969,-0.678956106219007,-0.0418551003680707,-2.24138540975065,\ +-1.69897,-0.229174,-2.05506161616161,3.14763169612393,-0.678956848082452,-0.0418570380351663,-2.24138730265524,\ +-1.69897,-0.229174,-2.02753080808081,3.14763137565534,-0.678957568833602,-0.0418589205592317,-2.24138914169067,\ +-1.69897,-0.229174,-2,3.14763106417886,-0.678958269361051,-0.0418607502611718,-2.24139092912423,\ +-1.69897,-0.227774,-4.72555,3.14755278856029,-0.679134315458398,-0.0423205636300255,-2.24184012023528,\ +-1.69897,-0.227774,-4.69801919191919,3.14755067446213,-0.67913907017942,-0.042332982447164,-2.24185225216237,\ +-1.69897,-0.227774,-4.67048838383838,3.14754839565871,-0.679144195331509,-0.0423463687901924,-2.24186532926431,\ +-1.69897,-0.227774,-4.64295757575758,3.14754593212203,-0.679149735958655,-0.0423608403091436,-2.24187946647326,\ +-1.69897,-0.227774,-4.61542676767677,3.14754326043978,-0.679155744716433,-0.0423765345346825,-2.24189479814277,\ +-1.69897,-0.227774,-4.58789595959596,3.14754035306891,-0.679162283550685,-0.042393613262646,-2.24191148233098,\ +-1.69897,-0.227774,-4.56036515151515,3.14753717738255,-0.679169425840967,-0.0424122681525036,-2.2419297062698,\ +-1.69897,-0.227774,-4.53283434343434,3.1475336944404,-0.679177259166159,-0.0424327279508164,-2.24194969342146,\ +-1.69897,-0.227774,-4.50530353535354,3.14752985738391,-0.679185888913607,-0.0424552679179424,-2.24197171268745,\ +-1.69897,-0.227774,-4.47777272727273,3.14752560931595,-0.679195443048079,-0.0424802222840086,-2.24199609057678,\ +-1.69897,-0.227774,-4.45024191919192,3.14752088046036,-0.679206078499917,-0.0425080009341037,-2.24202322750569,\ +-1.69897,-0.227774,-4.42271111111111,3.14751558429934,-0.679217989852311,-0.0425391120984773,-2.24205361996366,\ +-1.69897,-0.227774,-4.3951803030303,3.14750961223199,-0.679231421354618,-0.0425741937300417,-2.24208789116612,\ +-1.69897,-0.227774,-4.36764949494949,3.14750282604824,-0.679246683848689,-0.0426140577140805,-2.24212683424281,\ +-1.69897,-0.227774,-4.34011868686869,3.14749504710002,-0.679264179123719,-0.0426597534805397,-2.24217147438052,\ +-1.69897,-0.227774,-4.31258787878788,3.14748604034463,-0.679284435803452,-0.0427126617374728,-2.24222316039124,\ +-1.69897,-0.227774,-4.28505707070707,3.14747549018519,-0.679308163682321,-0.0427746363911719,-2.24228370335375,\ +-1.69897,-0.227774,-4.25752626262626,3.14746296272724,-0.679336338612431,-0.0428482262618178,-2.24235559320732,\ +-1.69897,-0.227774,-4.22999545454545,3.14744784461952,-0.67937034005388,-0.0429370343500008,-2.24244234971877,\ +-1.69897,-0.227774,-4.20246464646465,3.14742923957644,-0.679412183801441,-0.0430463256937048,-2.2425491162972,\ +-1.69897,-0.227774,-4.17493383838384,3.14740578396674,-0.679464936735553,-0.0431841106529706,-2.2426837182534,\ +-1.69897,-0.227774,-4.14740303030303,3.14737529654695,-0.67953350459064,-0.0433632024756067,-2.24285867283332,\ +-1.69897,-0.227774,-4.11987222222222,3.14733405762661,-0.679626253151639,-0.0436054516872166,-2.24309532578837,\ +-1.69897,-0.227774,-4.09234141414141,3.14727516236228,-0.679758711784664,-0.0439514193127604,-2.24343330113364,\ +-1.69897,-0.227774,-4.06481060606061,3.14718418283274,-0.679963329664468,-0.044485859087676,-2.24395539468843,\ +-1.69897,-0.227774,-4.0372797979798,3.14702508666297,-0.680321145550146,-0.0454204354872821,-2.24486838121672,\ +-1.69897,-0.227774,-4.00974898989899,3.14667560282112,-0.681107153601671,-0.047473403519889,-2.24687392314735,\ +-1.69897,-0.227774,-3.98221818181818,3.14528488290531,-0.684234957867113,-0.0556428900242064,-2.25485468440417,\ +-1.69897,-0.227774,-3.95468737373737,3.15235575504021,-0.668332184222727,-0.0141065649720456,-2.21427789985943,\ +-1.69897,-0.227774,-3.92715656565657,3.1487834419428,-0.676366509478674,-0.0350913537182281,-2.23477791401816,\ +-1.69897,-0.227774,-3.89962575757576,3.14827918598877,-0.677500608376633,-0.0380534973995947,-2.237671628515,\ +-1.69897,-0.227774,-3.87209494949495,3.1480779035101,-0.677953303551408,-0.0392358882421867,-2.23882670466599,\ +-1.69897,-0.227774,-3.84456414141414,3.14796961978363,-0.678196839505479,-0.0398719778185337,-2.23944809978601,\ +-1.69897,-0.227774,-3.81703333333333,3.14790197765882,-0.678348970300505,-0.0402693270038978,-2.23983626971349,\ +-1.69897,-0.227774,-3.78950252525252,3.14785571179776,-0.678453024722918,-0.0405411059029186,-2.24010177018364,\ +-1.69897,-0.227774,-3.76197171717172,3.14782207185279,-0.678528682777558,-0.0407387165600682,-2.24029481579007,\ +-1.69897,-0.227774,-3.73444090909091,3.1477965099729,-0.678586172827182,-0.0408888743527801,-2.24044150475196,\ +-1.69897,-0.227774,-3.7069101010101,3.1477764283513,-0.67863133747965,-0.0410068395409805,-2.24055674479834,\ +-1.69897,-0.227774,-3.67937929292929,3.14776023523364,-0.678667756676588,-0.041101962545049,-2.24064967034331,\ +-1.69897,-0.227774,-3.65184848484848,3.14774690089029,-0.678697746335551,-0.0411802922912109,-2.2407261905754,\ +-1.69897,-0.227774,-3.62431767676768,3.14773572968316,-0.678722870984244,-0.0412459151566523,-2.24079029747145,\ +-1.69897,-0.227774,-3.59678686868687,3.1477262347379,-0.678744225629386,-0.0413016911804956,-2.24084478500012,\ +-1.69897,-0.227774,-3.56925606060606,3.14771806509588,-0.678762599595893,-0.0413496819940743,-2.24089166716652,\ +-1.69897,-0.227774,-3.54172525252525,3.1477109613805,-0.67877857623578,-0.0413914112497643,-2.24093243242477,\ +-1.69897,-0.227774,-3.51419444444444,3.14770472775391,-0.678792595998922,-0.0414280293550134,-2.24096820460647,\ +-1.69897,-0.227774,-3.48666363636364,3.14769921358369,-0.678804997665822,-0.0414604211678518,-2.24099984812835,\ +-1.69897,-0.227774,-3.45913282828283,3.14769430111093,-0.678816046082601,-0.0414892784377148,-2.24102803875956,\ +-1.69897,-0.227774,-3.43160202020202,3.14768989694647,-0.678825951286535,-0.0415151497592565,-2.24105331242157,\ +-1.69897,-0.227774,-3.40407121212121,3.14768592607695,-0.678834881986705,-0.0415384757823467,-2.24107609958466,\ +-1.69897,-0.227774,-3.3765404040404,3.1476823275571,-0.678842975252386,-0.0415596145171082,-2.24109674998849,\ +-1.69897,-0.227774,-3.3490095959596,3.14767905135943,-0.678850343598053,-0.0415788598391813,-2.24111555071981,\ +-1.69897,-0.227774,-3.32147878787879,3.14767605603431,-0.67885708024616,-0.0415964552355483,-2.24113273964075,\ +-1.69897,-0.227774,-3.29394797979798,3.14767330694704,-0.678863263092024,-0.0416126041603344,-2.24114851550539,\ +-1.69897,-0.227774,-3.26641717171717,3.14767077493255,-0.678868957729446,-0.0416274779374692,-2.24116304567987,\ +-1.69897,-0.227774,-3.23888636363636,3.14766843525673,-0.678874219786868,-0.0416412218624283,-2.24117647210315,\ +-1.69897,-0.227774,-3.21135555555555,3.14766626680563,-0.678879096750614,-0.0416539599643403,-2.24118891593915,\ +-1.69897,-0.227774,-3.18382474747475,3.14766425144662,-0.678883629401954,-0.0416657987594842,-2.24120048124347,\ +-1.69897,-0.227774,-3.15629393939394,3.1476623735201,-0.678887852960203,-0.0416768302369026,-2.24121125788011,\ +-1.69897,-0.227774,-3.12876313131313,3.14766061943178,-0.678891797999664,-0.0416871342533688,-2.24122132386105,\ +-1.69897,-0.227774,-3.10123232323232,3.14765897732304,-0.67889549119097,-0.0416967804696698,-2.24123074723781,\ +-1.69897,-0.227774,-3.07370151515151,3.14765743680256,-0.678898955904801,-0.0417058299275325,-2.241239587642,\ +-1.69897,-0.227774,-3.04617070707071,3.14765598872613,-0.678902212706987,-0.0417143363426613,-2.24124789754842,\ +-1.69897,-0.227774,-3.0186398989899,3.147654625015,-0.678905279767012,-0.0417223471717774,-2.24125572331747,\ +-1.69897,-0.227774,-2.99110909090909,3.14765333850518,-0.678908173197167,-0.0417299044984407,-2.24126310606053,\ +-1.69897,-0.227774,-2.96357828282828,3.1476521228214,-0.678910907335679,-0.0417370457725701,-2.24127008236239,\ +-1.69897,-0.227774,-2.93604747474747,3.1476509722716,-0.678913494984358,-0.0417438044310961,-2.24127668488755,\ +-1.69897,-0.227774,-2.90851666666667,3.14764988175773,-0.678915947609007,-0.0417502104214571,-2.2412829428916,\ +-1.69897,-0.227774,-2.88098585858586,3.14764884670023,-0.67891827550928,-0.0417562906452329,-2.24128888265468,\ +-1.69897,-0.227774,-2.85345505050505,3.14764786297378,-0.678920487963258,-0.0417620693357713,-2.24129452785032,\ +-1.69897,-0.227774,-2.82592424242424,3.1476469268523,-0.678922593351044,-0.0417675683809955,-2.24129989986079,\ +-1.69897,-0.227774,-2.79839343434343,3.14764603496187,-0.678924599260836,-0.0417728076004531,-2.2413050180478,\ +-1.69897,-0.227774,-2.77086262626263,3.14764518424,-0.678926512580304,-0.0417778049839995,-2.2413098999856,\ +-1.69897,-0.227774,-2.74333181818182,3.14764437190056,-0.678928339575613,-0.0417825768981764,-2.24131456166266,\ +-1.69897,-0.227774,-2.71580101010101,3.14764359540329,-0.678930085959972,-0.0417871382652715,-2.24131901765652,\ +-1.69897,-0.227774,-2.6882702020202,3.14764285242722,-0.678931756953317,-0.0417915027191892,-2.24132328128615,\ +-1.69897,-0.227774,-2.66073939393939,3.14764214084756,-0.678933357334417,-0.0417956827415604,-2.24132736474484,\ +-1.69897,-0.227774,-2.63320858585858,3.1476414587154,-0.678934891486522,-0.0417996897809544,-2.24133127921666,\ +-1.69897,-0.227774,-2.60567777777778,3.14764080423983,-0.678936363437443,-0.0418035343575918,-2.24133503497883,\ +-1.69897,-0.227774,-2.57814696969697,3.1476401757723,-0.678937776894885,-0.0418072261555718,-2.2413386414917,\ +-1.69897,-0.227774,-2.55061616161616,3.14763957179272,-0.678939135277596,-0.0418107741043211,-2.24134210747845,\ +-1.69897,-0.227774,-2.52308535353535,3.14763899089722,-0.678940441743009,-0.0418141864507019,-2.2413454409954,\ +-1.69897,-0.227774,-2.49555454545454,3.14763843178718,-0.678941699211726,-0.0418174708230079,-2.24134864949464,\ +-1.69897,-0.227774,-2.46802373737374,3.14763789325961,-0.678942910389314,-0.0418206342878937,-2.24135173987958,\ +-1.69897,-0.227774,-2.44049292929293,3.14763737419853,-0.678944077785743,-0.0418236834011278,-2.24135471855452,\ +-1.69897,-0.227774,-2.41296212121212,3.14763687356717,-0.678945203732748,-0.0418266242529427,-2.24135759146902,\ +-1.69897,-0.227774,-2.38543131313131,3.14763639040109,-0.678946290399366,-0.0418294625086367,-2.24136036415749,\ +-1.69897,-0.227774,-2.3579005050505,3.14763592380203,-0.678947339805889,-0.0418322034449995,-2.24136304177484,\ +-1.69897,-0.227774,-2.3303696969697,3.14763547293223,-0.678948353836406,-0.0418348519830546,-2.24136562912838,\ +-1.69897,-0.227774,-2.30283888888889,3.14763503700956,-0.678949334250079,-0.0418374127175449,-2.24136813070674,\ +-1.69897,-0.227774,-2.27530808080808,3.14763461530282,-0.678950282691332,-0.0418398899435336,-2.24137055070575,\ +-1.69897,-0.227774,-2.24777727272727,3.14763420712778,-0.67895120069906,-0.041842287680444,-2.24137289305197,\ +-1.69897,-0.227774,-2.22024646464646,3.14763381184342,-0.678952089714951,-0.0418446096938233,-2.24137516142396,\ +-1.69897,-0.227774,-2.19271565656565,3.14763342884857,-0.678952951091062,-0.0418468595150739,-2.24137735927155,\ +-1.69897,-0.227774,-2.16518484848485,3.14763305757889,-0.678953786096652,-0.0418490404593752,-2.24137948983334,\ +-1.69897,-0.227774,-2.13765404040404,3.14763269750404,-0.678954595924439,-0.0418511556419818,-2.24138155615262,\ +-1.69897,-0.227774,-2.11012323232323,3.14763234812523,-0.678955381696286,-0.0418532079930711,-2.24138356109186,\ +-1.69897,-0.227774,-2.08259242424242,3.14763200897283,-0.678956144468375,-0.0418552002712868,-2.24138550734598,\ +-1.69897,-0.227774,-2.05506161616161,3.14763167960431,-0.678956885235961,-0.0418571350761091,-2.24138739745441,\ +-1.69897,-0.227774,-2.02753080808081,3.14763135960235,-0.678957604937678,-0.041859014859171,-2.24138923381217,\ +-1.69897,-0.227774,-2,3.14763104857298,-0.678958304459538,-0.041860841934621,-2.24139101867991,\ +-1.69897,-0.216269,-4.72555,3.1475519239583,-0.679136259994996,-0.0423256425493394,-2.24184508182526,\ +-1.69897,-0.216269,-4.69801919191919,3.14754974327546,-0.679141164468595,-0.0423384525040171,-2.24185759585414,\ +-1.69897,-0.216269,-4.67048838383838,3.14754738988844,-0.679146457363187,-0.0423522769723244,-2.24187110096012,\ +-1.69897,-0.216269,-4.64295757575758,3.1475448424348,-0.679152186724136,-0.0423672414435544,-2.24188571973355,\ +-1.69897,-0.216269,-4.61542676767677,3.14754207587732,-0.679158408861466,-0.042383492993407,-2.24190159585249,\ +-1.69897,-0.216269,-4.58789595959596,3.1475390606784,-0.679165190206814,-0.0424012051341293,-2.24191889882084,\ +-1.69897,-0.216269,-4.56036515151515,3.14753576174133,-0.679172609694597,-0.0424205840338856,-2.24193783004403,\ +-1.69897,-0.216269,-4.53283434343434,3.14753213703788,-0.679180761848608,-0.0424418765785977,-2.24195863070462,\ +-1.69897,-0.216269,-4.50530353535354,3.14752813580817,-0.679189760830484,-0.0424653809461224,-2.24198159209216,\ +-1.69897,-0.216269,-4.47777272727273,3.14752369616901,-0.679199745818951,-0.0424914606562267,-2.24200706932869,\ +-1.69897,-0.216269,-4.45024191919192,3.14751874189025,-0.679210888259704,-0.0425205635065487,-2.24203549986716,\ +-1.69897,-0.216269,-4.42271111111111,3.1475131779813,-0.679223401791669,-0.0425532474988407,-2.24206742881878,\ +-1.69897,-0.216269,-4.3951803030303,3.1475068845416,-0.679237556077742,-0.0425902169634322,-2.242103544243,\ +-1.69897,-0.216269,-4.36764949494949,3.14749970802226,-0.67925369645766,-0.0426323738903767,-2.24214472729277,\ +-1.69897,-0.216269,-4.34011868686869,3.14749144853189,-0.679272272497995,-0.0426808924989405,-2.24219212506143,\ +-1.69897,-0.216269,-4.31258787878788,3.14748184092645,-0.679293880521939,-0.04273733032082,-2.24224725909979,\ +-1.69897,-0.216269,-4.28505707070707,3.14747052581696,-0.679319328814824,-0.0428037985098853,-2.24231219179143,\ +-1.69897,-0.216269,-4.25752626262626,3.14745700361139,-0.679349740986076,-0.0428832318124627,-2.24238979008642,\ +-1.69897,-0.216269,-4.22999545454545,3.14744055875712,-0.679386726352231,-0.0429798335893043,-2.24248416024268,\ +-1.69897,-0.216269,-4.20246464646465,3.14742012890948,-0.679432674183916,-0.0430998443569243,-2.24260139861307,\ +-1.69897,-0.216269,-4.17493383838384,3.14739406587657,-0.679491291353769,-0.0432529460657902,-2.242750963483,\ +-1.69897,-0.216269,-4.14740303030303,3.1473596671957,-0.679568655846444,-0.0434550137545524,-2.24294836315811,\ +-1.69897,-0.216269,-4.11987222222222,3.14731217271409,-0.679675473502894,-0.0437340099220688,-2.24322091416892,\ +-1.69897,-0.216269,-4.09234141414141,3.14724234570688,-0.679832518216573,-0.0441441937315689,-2.24362162222484,\ +-1.69897,-0.216269,-4.06481060606061,3.14712959302162,-0.680086105100519,-0.04480653524985,-2.24426866283444,\ +-1.69897,-0.216269,-4.0372797979798,3.14691676654931,-0.680564763340956,-0.0460567388123406,-2.24548998514758,\ +-1.69897,-0.216269,-4.00974898989899,3.14636433898974,-0.681807202783669,-0.0493018562807892,-2.24866013638687,\ +-1.69897,-0.216269,-3.98221818181818,3.14145163366917,-0.692856142603851,-0.0781604922719272,-2.27685210217578,\ +-1.69897,-0.216269,-3.95468737373737,3.14969897674307,-0.67430742222403,-0.029713240476332,-2.22952404184724,\ +-1.69897,-0.216269,-3.92715656565657,3.14850248545107,-0.676998395815569,-0.0367417724987577,-2.23639020608256,\ +-1.69897,-0.216269,-3.89962575757576,3.14817724397271,-0.677729881481178,-0.0386523339553486,-2.2382566312053,\ +-1.69897,-0.216269,-3.87209494949495,3.14802562161388,-0.678070888362065,-0.0395430070521446,-2.2391267286514,\ +-1.69897,-0.216269,-3.84456414141414,3.14793788585649,-0.678268210822976,-0.0400583919818274,-2.23963020755145,\ +-1.69897,-0.216269,-3.81703333333333,3.1478806848918,-0.678396858884521,-0.0403944068067371,-2.23995846001811,\ +-1.69897,-0.216269,-3.78950252525252,3.14784044087977,-0.678487369842986,-0.0406308116424963,-2.24018940360962,\ +-1.69897,-0.216269,-3.76197171717172,3.14781058696536,-0.678554512910181,-0.0408061820732404,-2.2403607227664,\ +-1.69897,-0.216269,-3.73444090909091,3.14778755944836,-0.678606303040678,-0.0409414522935745,-2.24049286807727,\ +-1.69897,-0.216269,-3.7069101010101,3.14776925716799,-0.678647465858543,-0.0410489651225407,-2.24059789722684,\ +-1.69897,-0.216269,-3.67937929292929,3.14775436103748,-0.678680968061259,-0.0411364692531513,-2.24068337990375,\ +-1.69897,-0.216269,-3.65184848484848,3.1477420011505,-0.678708766115198,-0.0412090747639863,-2.24075430813744,\ +-1.69897,-0.216269,-3.62431767676768,3.1477315805851,-0.678732202530063,-0.0412702881452275,-2.24081410741383,\ +-1.69897,-0.216269,-3.59678686868687,3.1477226761122,-0.678752229170947,-0.0413225955655562,-2.24086520646802,\ +-1.69897,-0.216269,-3.56925606060606,3.14771497930309,-0.678769539710672,-0.0413678088233813,-2.24090937524364,\ +-1.69897,-0.216269,-3.54172525252525,3.14770826007705,-0.678784651613255,-0.0414072794787442,-2.24094793407802,\ +-1.69897,-0.216269,-3.51419444444444,3.14770234330911,-0.678797958744188,-0.0414420362657229,-2.24098188794021,\ +-1.69897,-0.216269,-3.48666363636364,3.14769709334662,-0.678809766193582,-0.0414728760467015,-2.24101201528408,\ +-1.69897,-0.216269,-3.45913282828283,3.14769240348144,-0.678820313953892,-0.041500425656005,-2.24103892846332,\ +-1.69897,-0.216269,-3.43160202020202,3.14768818862087,-0.67882979340315,-0.0415251849523693,-2.2410631157893,\ +-1.69897,-0.216269,-3.40407121212121,3.14768438007832,-0.678838359021211,-0.0415475574204711,-2.24108497142571,\ +-1.69897,-0.216269,-3.3765404040404,3.14768092180119,-0.678846136873415,-0.0415678723293373,-2.24110481703503,\ +-1.69897,-0.216269,-3.3490095959596,3.14767776759374,-0.678853230856457,-0.0415864010459087,-2.24112291771533,\ +-1.69897,-0.216269,-3.32147878787879,3.1476748790417,-0.678859727366145,-0.0416033692266946,-2.24113949391014,\ +-1.69897,-0.216269,-3.29394797979798,3.14767222393999,-0.678865698833421,-0.0416189660534671,-2.24115473043091,\ +-1.69897,-0.216269,-3.26641717171717,3.14766977508692,-0.678871206436326,-0.0416333513166687,-2.24116878337673,\ +-1.69897,-0.216269,-3.23888636363636,3.14766750934889,-0.678876302203629,-0.0416466609098148,-2.24118178550182,\ +-1.69897,-0.216269,-3.21135555555555,3.14766540692725,-0.678881030663539,-0.0416590111357712,-2.24119385042227,\ +-1.69897,-0.216269,-3.18382474747475,3.14766345077829,-0.678885430148307,-0.0416705021142282,-2.2412050759449,\ +-1.69897,-0.216269,-3.15629393939394,3.14766162615013,-0.678889533835675,-0.0416812205018695,-2.24121554672453,\ +-1.69897,-0.216269,-3.12876313131313,3.14765992021005,-0.678893370587114,-0.0416912416817217,-2.24122533640272,\ +-1.69897,-0.216269,-3.10123232323232,3.14765832174226,-0.678896965627604,-0.0417006315387231,-2.24123450934241,\ +-1.69897,-0.216269,-3.07370151515151,3.14765682090091,-0.678900341100905,-0.0417094479099628,-2.24124312204456,\ +-1.69897,-0.216269,-3.04617070707071,3.14765540900726,-0.678903516526057,-0.0417177417770755,-2.24125122431308,\ +-1.69897,-0.216269,-3.0186398989899,3.14765407838159,-0.678906509175093,-0.0417255582527336,-2.24125886021848,\ +-1.69897,-0.216269,-2.99110909090909,3.14765282220359,-0.678909334387323,-0.0417329374015582,-2.24126606889983,\ +-1.69897,-0.216269,-2.96357828282828,3.14765163439533,-0.678912005832315,-0.0417399149269935,-2.2412728852358,\ +-1.69897,-0.216269,-2.93604747474747,3.14765050952295,-0.678914535731084,-0.0417465227489977,-2.24127934040894,\ +-1.69897,-0.216269,-2.90851666666667,3.1476494427136,-0.678916935043004,-0.0417527894922764,-2.24128546238269,\ +-1.69897,-0.216269,-2.88098585858586,3.14764842958476,-0.678919213624528,-0.0417587409008167,-2.24129127630633,\ +-1.69897,-0.216269,-2.85345505050505,3.14764746618417,-0.678921380364523,-0.0417644001913781,-2.24129680486027,\ +-1.69897,-0.216269,-2.82592424242424,3.14764654893825,-0.678923443300163,-0.0417697883561784,-2.2413020685518,\ +-1.69897,-0.216269,-2.79839343434343,3.14764567460785,-0.678925409716534,-0.0417749244230968,-2.24130708596922,\ +-1.69897,-0.216269,-2.77086262626263,3.14764484024991,-0.678927286232617,-0.0417798256801848,-2.2413118740012,\ +-1.69897,-0.216269,-2.74333181818182,3.14764404318454,-0.678929078875706,-0.0417845078700765,-2.24131644802672,\ +-1.69897,-0.216269,-2.71580101010101,3.14764328096615,-0.678930793146075,-0.0417889853588988,-2.24132082208001,\ +-1.69897,-0.216269,-2.6882702020202,3.14764255135839,-0.678932434073352,-0.0417932712835021,-2.24132500899445,\ +-1.69897,-0.216269,-2.66073939393939,3.1476418523123,-0.678934006265812,-0.0417973776801896,-2.24132902052829,\ +-1.69897,-0.216269,-2.63320858585858,3.14764118194701,-0.67893551395358,-0.0418013155976015,-2.24133286747493,\ +-1.69897,-0.216269,-2.60567777777778,3.14764053853291,-0.678936961026655,-0.0418050951959846,-2.24133655975992,\ +-1.69897,-0.216269,-2.57814696969697,3.14763992047673,-0.678938351068406,-0.0418087258347245,-2.24134010652642,\ +-1.69897,-0.216269,-2.55061616161616,3.14763932630836,-0.678939687385218,-0.0418122161497289,-2.24134351621082,\ +-1.69897,-0.216269,-2.52308535353535,3.14763875466913,-0.678940973032732,-0.0418155741220074,-2.24134679660978,\ +-1.69897,-0.216269,-2.49555454545454,3.14763820430155,-0.678942210839181,-0.0418188071385973,-2.24134995493969,\ +-1.69897,-0.216269,-2.46802373737374,3.14763767403996,-0.678943403426156,-0.0418219220468091,-2.24135299788966,\ +-1.69897,-0.216269,-2.44049292929293,3.14763716280236,-0.678944553227137,-0.0418249252026372,-2.24135593166888,\ +-1.69897,-0.216269,-2.41296212121212,3.14763666958303,-0.678945662504079,-0.0418278225140504,-2.24135876204881,\ +-1.69897,-0.216269,-2.38543131313131,3.14763619344589,-0.678946733362246,-0.041830619479782,-2.24136149440117,\ +-1.69897,-0.216269,-2.3579005050505,3.14763573351861,-0.678947767763563,-0.0418333212241629,-2.24136413373192,\ +-1.69897,-0.216269,-2.3303696969697,3.14763528898726,-0.678948767538603,-0.0418359325284528,-2.24136668471185,\ +-1.69897,-0.216269,-2.30283888888889,3.1476348590915,-0.678949734397399,-0.0418384578590782,-2.24136915170422,\ +-1.69897,-0.216269,-2.27530808080808,3.14763444312026,-0.678950669939216,-0.0418409013931266,-2.2413715387896,\ +-1.69897,-0.216269,-2.24777727272727,3.14763404040778,-0.67895157566135,-0.0418432670414028,-2.24137384978848,\ +-1.69897,-0.216269,-2.22024646464646,3.14763365033009,-0.678952452967163,-0.0418455584693147,-2.24137608828157,\ +-1.69897,-0.216269,-2.19271565656565,3.14763327230176,-0.678953303173309,-0.0418477791158233,-2.24137825762839,\ +-1.69897,-0.216269,-2.16518484848485,3.14763290577298,-0.678954127516336,-0.0418499322106656,-2.24138036098408,\ +-1.69897,-0.216269,-2.13765404040404,3.14763255022691,-0.67895492715869,-0.041852020790025,-2.24138240131467,\ +-1.69897,-0.216269,-2.11012323232323,3.14763220517718,-0.678955703194185,-0.0418540477108194,-2.24138438141109,\ +-1.69897,-0.216269,-2.08259242424242,3.14763187016575,-0.67895645665299,-0.0418560156637367,-2.24138630390186,\ +-1.69897,-0.216269,-2.05506161616161,3.14763154476085,-0.678957188506189,-0.0418579271851528,-2.24138817126477,\ +-1.69897,-0.216269,-2.02753080808081,3.14763122855512,-0.678957899669967,-0.0418597846680379,-2.24138998583749,\ +-1.69897,-0.216269,-2,3.1476309211639,-0.678958591009428,-0.0418615903719495,-2.24139174982741,\ +-1.69897,-0.206412,-4.72555,3.14755116183293,-0.679137974056148,-0.0423301194917155,-2.24184945534473,\ +-1.69897,-0.206412,-4.69801919191919,3.14754892156848,-0.679143012531987,-0.0423432794457486,-2.24186231128754,\ +-1.69897,-0.206412,-4.67048838383838,3.14754650132955,-0.679148455780176,-0.0423574966213916,-2.24187620002884,\ +-1.69897,-0.206412,-4.64295757575758,3.14754387852079,-0.679154354618837,-0.0423729037500781,-2.24189125123379,\ +-1.69897,-0.206412,-4.61542676767677,3.14754102659931,-0.679160768744414,-0.0423896567524749,-2.24190761722109,\ +-1.69897,-0.206412,-4.58789595959596,3.14753791417314,-0.679167768759135,-0.0424079400339502,-2.24192547813614,\ +-1.69897,-0.206412,-4.56036515151515,3.14753450384092,-0.679175438780606,-0.0424279733006093,-2.24194504860956,\ +-1.69897,-0.206412,-4.53283434343434,3.14753075068176,-0.679183879838454,-0.0424500204308979,-2.24196658642385,\ +-1.69897,-0.206412,-4.50530353535354,3.14752660026527,-0.679193214349481,-0.0424744011642793,-2.24199040393212,\ +-1.69897,-0.206412,-4.47777272727273,3.14752198599475,-0.679203592093306,-0.042501506708918,-2.24201688330514,\ +-1.69897,-0.206412,-4.45024191919192,3.14751682550661,-0.679215198310093,-0.0425318208920797,-2.24204649719316,\ +-1.69897,-0.206412,-4.42271111111111,3.1475110157108,-0.67922826485491,-0.0425659492941449,-2.24207983718691,\ +-1.69897,-0.206412,-4.3951803030303,3.14750442583348,-0.679243085845217,-0.0426046601180964,-2.24211765374292,\ +-1.69897,-0.206412,-4.36764949494949,3.14749688745546,-0.679260040064864,-0.0426489427064114,-2.24216091334865,\ +-1.69897,-0.206412,-4.34011868686869,3.14748817991574,-0.679279623792379,-0.0427000932849118,-2.24221088228549,\ +-1.69897,-0.206412,-4.31258787878788,3.1474780083526,-0.679302500187706,-0.0427598439556895,-2.24226925264183,\ +-1.69897,-0.206412,-4.28505707070707,3.14746596965204,-0.679329575876003,-0.0428305627255777,-2.24233833772063,\ +-1.69897,-0.206412,-4.25752626262626,3.14745149774931,-0.679362123967516,-0.042915574820896,-2.24242138593134,\ +-1.69897,-0.206412,-4.22999545454545,3.14743377203568,-0.679401990055627,-0.0430197007319723,-2.24252310640503,\ +-1.69897,-0.206412,-4.20246464646465,3.14741155615993,-0.679451954761061,-0.04315020313945,-2.2426505940454,\ +-1.69897,-0.206412,-4.17493383838384,3.14738289656275,-0.679516411744302,-0.0433185578093717,-2.24281505951412,\ +-1.69897,-0.206412,-4.14740303030303,3.14734451419447,-0.679602735765303,-0.0435440268172457,-2.24303531990891,\ +-1.69897,-0.206412,-4.11987222222222,3.14729045069071,-0.67972432750765,-0.0438616112994768,-2.2433455677966,\ +-1.69897,-0.206412,-4.09234141414141,3.14720862925804,-0.679908348332528,-0.04434225379426,-2.24381510685499,\ +-1.69897,-0.206412,-4.06481060606061,3.14707028873749,-0.680219483641196,-0.0451549055747018,-2.2446089853737,\ +-1.69897,-0.206412,-4.0372797979798,3.14678596979404,-0.680858932313729,-0.0468250763581442,-2.24624057314531,\ +-1.69897,-0.206412,-4.00974898989899,3.14586655368849,-0.682926748833758,-0.0522259894972468,-2.25151671850759,\ +-1.69897,-0.206412,-3.98221818181818,3.16251935928988,-0.645473688875952,0.0455973529832997,-2.15595321628887,\ +-1.69897,-0.206412,-3.95468737373737,3.1490216338273,-0.675830803055076,-0.033692146470442,-2.23341103018923,\ +-1.69897,-0.206412,-3.92715656565657,3.14835051825039,-0.677340178264419,-0.0376344712952124,-2.23726228243215,\ +-1.69897,-0.206412,-3.89962575757576,3.14811173276981,-0.677877219717693,-0.0390371654961378,-2.23863257266129,\ +-1.69897,-0.206412,-3.87209494949495,3.14798929621752,-0.678152586142045,-0.0397563928187492,-2.23933518494274,\ +-1.69897,-0.206412,-3.84456414141414,3.14791483031546,-0.678320063980983,-0.0401938268232037,-2.2397625136804,\ +-1.69897,-0.206412,-3.81703333333333,3.14786476088889,-0.678432672827827,-0.0404879489537727,-2.24004984122579,\ +-1.69897,-0.206412,-3.78950252525252,3.14782878630639,-0.678513581608443,-0.040699273939367,-2.24025628434272,\ +-1.69897,-0.206412,-3.76197171717172,3.1478016892468,-0.67857452436021,-0.0408584498166954,-2.24041178306031,\ +-1.69897,-0.206412,-3.73444090909091,3.14778054454708,-0.678622079932858,-0.0409826598298542,-2.24053312366846,\ +-1.69897,-0.206412,-3.7069101010101,3.14776358499215,-0.678660222888612,-0.0410822851055574,-2.24063044747701,\ +-1.69897,-0.206412,-3.67937929292929,3.14774967993489,-0.678691496114041,-0.0411639673885213,-2.24071024279817,\ +-1.69897,-0.206412,-3.65184848484848,3.14773807235236,-0.678717602194568,-0.0412321536477803,-2.24077685387046,\ +-1.69897,-0.206412,-3.62431767676768,3.14772823629181,-0.67873972402646,-0.0412899334804496,-2.24083329891749,\ +-1.69897,-0.206412,-3.59678686868687,3.14771979495774,-0.678758709043061,-0.0413395202907942,-2.24088174021116,\ +-1.69897,-0.206412,-3.56925606060606,3.1477124713374,-0.678775180261087,-0.0413825413311047,-2.2409237674122,\ +-1.69897,-0.206412,-3.54172525252525,3.1477060572212,-0.678789605955134,-0.0414202196839761,-2.24096057534849,\ +-1.69897,-0.206412,-3.51419444444444,3.14770039309033,-0.678802344891616,-0.0414534924084942,-2.2409930794319,\ +-1.69897,-0.206412,-3.48666363636364,3.14769535466974,-0.678813676571895,-0.0414830895319861,-2.24102199282522,\ +-1.69897,-0.206412,-3.45913282828283,3.14769084370419,-0.678823821977241,-0.0415095882336407,-2.24104787937408,\ +-1.69897,-0.206412,-3.43160202020202,3.14768678148725,-0.678832958122717,-0.0415334508576501,-2.24107119074195,\ +-1.69897,-0.206412,-3.40407121212121,3.14768310422984,-0.678841228473408,-0.041555052119306,-2.24109229298773,\ +-1.69897,-0.206412,-3.3765404040404,3.14767975968599,-0.678848750533322,-0.0415746989263781,-2.24111148592925,\ +-1.69897,-0.206412,-3.3490095959596,3.14767670465482,-0.678855621463548,-0.041592645053115,-2.24112901747824,\ +-1.69897,-0.206412,-3.32147878787879,3.14767390310436,-0.678861922301959,-0.0416091021616746,-2.24114509440723,\ +-1.69897,-0.206412,-3.29394797979798,3.14767132474373,-0.678867721174408,-0.0416242481894329,-2.241159890543,\ +-1.69897,-0.206412,-3.26641717171717,3.14766894392347,-0.678873075767872,-0.0416382338085216,-2.24117355307699,\ +-1.69897,-0.206412,-3.23888636363636,3.14766673877939,-0.678878035256097,-0.0416511874554544,-2.24118620747865,\ +-1.69897,-0.206412,-3.21135555555555,3.14766469055913,-0.678882641814169,-0.0416632192869881,-2.24119796135998,\ +-1.69897,-0.206412,-3.18382474747475,3.14766278308757,-0.678886931820832,-0.0416744243204738,-2.24120890754333,\ +-1.69897,-0.206412,-3.15629393939394,3.14766100233875,-0.678890936821194,-0.04168488494832,-2.24121912651773,\ +-1.69897,-0.206412,-3.12876313131313,3.14765933609043,-0.678894684303717,-0.0416946729674226,-2.24122868842148,\ +-1.69897,-0.206412,-3.10123232323232,3.14765777364319,-0.678898198332007,-0.0417038512293187,-2.24123765465417,\ +-1.69897,-0.206412,-3.07370151515151,3.1476563055904,-0.678901500062093,-0.0417124749912585,-2.24124607919654,\ +-1.69897,-0.206412,-3.04617070707071,3.1476549236287,-0.678904608168692,-0.0417205930295868,-2.24125400969813,\ +-1.69897,-0.206412,-3.0186398989899,3.1476536204008,-0.678907539198629,-0.0417282485628247,-2.24126148837908,\ +-1.69897,-0.206412,-2.99110909090909,3.14765238936463,-0.678910307865524,-0.0417354800213546,-2.24126855278197,\ +-1.69897,-0.206412,-2.96357828282828,3.14765122468329,-0.67891292729682,-0.0417423216926394,-2.24127523640218,\ +-1.69897,-0.206412,-2.93604747474747,3.14765012113263,-0.678915409241921,-0.0417488042648479,-2.24128156921895,\ +-1.69897,-0.206412,-2.90851666666667,3.14764907402287,-0.678917764248386,-0.0417549552870664,-2.24128757814495,\ +-1.69897,-0.206412,-2.88098585858586,3.14764807913198,-0.678920001811772,-0.0417607995606609,-2.24129328740858,\ +-1.69897,-0.206412,-2.85345505050505,3.14764713264881,-0.678922130503597,-0.0417663594735124,-2.24129871888057,\ +-1.69897,-0.206412,-2.82592424242424,3.14764623112424,-0.678924158081072,-0.0417716552866213,-2.24130389235384,\ +-1.69897,-0.206412,-2.79839343434343,3.14764537142925,-0.678926091581565,-0.0417767053808201,-2.24130882578462,\ +-1.69897,-0.206412,-2.77086262626263,3.14764455071859,-0.678927937404194,-0.0417815264699204,-2.24131353550059,\ +-1.69897,-0.206412,-2.74333181818182,3.14764376639934,-0.678929701380587,-0.0417861337855093,-2.24131803638149,\ +-1.69897,-0.206412,-2.71580101010101,3.14764301610353,-0.678931388836432,-0.0417905412376932,-2.24132234201607,\ +-1.69897,-0.206412,-2.6882702020202,3.14764229766427,-0.678933004645166,-0.0417947615553702,-2.24132646483919,\ +-1.69897,-0.206412,-2.66073939393939,3.14764160909486,-0.678934553274988,-0.0417988064090048,-2.2413304162517,\ +-1.69897,-0.206412,-2.63320858585858,3.14764094857043,-0.678936038830135,-0.0418026865184,-2.24133420672577,\ +-1.69897,-0.206412,-2.60567777777778,3.14764031441179,-0.678937465087177,-0.0418064117475659,-2.24133784589753,\ +-1.69897,-0.206412,-2.57814696969697,3.1476397050712,-0.678938835527102,-0.0418099911884489,-2.2413413426489,\ +-1.69897,-0.206412,-2.55061616161616,3.14763911911973,-0.678940153363657,-0.0418134332350196,-2.24134470517994,\ +-1.69897,-0.206412,-2.52308535353535,3.14763855523605,-0.678941421568523,-0.04181674564899,-2.24134794107304,\ +-1.69897,-0.206412,-2.49555454545454,3.14763801219656,-0.678942642893686,-0.0418199356182415,-2.24135105735006,\ +-1.69897,-0.206412,-2.46802373737374,3.14763748886646,-0.678943819891363,-0.0418230098088941,-2.2413540605231,\ +-1.69897,-0.206412,-2.44049292929293,3.14763698419187,-0.678944954931812,-0.0418259744118042,-2.24135695664001,\ +-1.69897,-0.206412,-2.41296212121212,3.1476364971927,-0.67894605021926,-0.0418288351841785,-2.24135975132501,\ +-1.69897,-0.206412,-2.38543131313131,3.14763602695637,-0.678947107806198,-0.0418315974868896,-2.24136244981511,\ +-1.69897,-0.206412,-2.3579005050505,3.14763557263202,-0.678948129606203,-0.041834266318005,-2.24136505699292,\ +-1.69897,-0.206412,-2.3303696969697,3.14763513342546,-0.678949117405502,-0.0418368463429675,-2.24136757741612,\ +-1.69897,-0.206412,-2.30283888888889,3.14763470859444,-0.678950072873409,-0.041839341921813,-2.241370015344,\ +-1.69897,-0.206412,-2.27530808080808,3.14763429744457,-0.678950997571706,-0.0418417571337593,-2.24137237476157,\ +-1.69897,-0.206412,-2.24777727272727,3.14763389932543,-0.678951892963174,-0.0418440957994551,-2.24137465940119,\ +-1.69897,-0.206412,-2.22024646464646,3.1476335136272,-0.67895276041934,-0.0418463615011491,-2.24137687276237,\ +-1.69897,-0.206412,-2.19271565656565,3.14763313977754,-0.678953601227444,-0.0418485576009978,-2.24137901812959,\ +-1.69897,-0.206412,-2.16518484848485,3.14763277723871,-0.678954416596851,-0.0418506872577128,-2.2413810985886,\ +-1.69897,-0.206412,-2.13765404040404,3.14763242550508,-0.678955207664825,-0.041852753441721,-2.24138311704121,\ +-1.69897,-0.206412,-2.11012323232323,3.14763208410064,-0.678955975501847,-0.0418547589489859,-2.24138507621877,\ +-1.69897,-0.206412,-2.08259242424242,3.14763175257701,-0.678956721116425,-0.0418567064136317,-2.24138697869457,\ +-1.69897,-0.206412,-2.05506161616161,3.14763143051134,-0.678957445459527,-0.0418585983194865,-2.24138882689506,\ +-1.69897,-0.206412,-2.02753080808081,3.14763111750458,-0.678958149428626,-0.0418604370106498,-2.24139062311019,\ +-1.69897,-0.206412,-2,3.14763081317985,-0.67895883387141,-0.0418622247011823,-2.24139236950286,\ +-1.69897,-0.204855,-4.72555,3.14755103958888,-0.679138248989614,-0.0423308375881967,-2.24185015685229,\ +-1.69897,-0.204855,-4.69801919191919,3.14754878969002,-0.679143309133778,-0.0423440541375558,-2.24186306808301,\ +-1.69897,-0.204855,-4.67048838383838,3.14754635863114,-0.679148776716626,-0.0423583348726951,-2.24187701891549,\ +-1.69897,-0.204855,-4.64295757575758,3.1475437236141,-0.679154703012381,-0.0423738137163457,-2.2418921401787,\ +-1.69897,-0.204855,-4.61542676767677,3.14754085784789,-0.679161148275467,-0.0423906480465395,-2.24190858561504,\ +-1.69897,-0.204855,-4.58789595959596,3.14753772963449,-0.679168183796515,-0.0424090240667067,-2.2419265371264,\ +-1.69897,-0.204855,-4.56036515151515,3.1475343011914,-0.679175894550374,-0.0424291637219545,-2.24194621153069,\ +-1.69897,-0.204855,-4.53283434343434,3.14753052711822,-0.67918438264495,-0.0424513337070932,-2.24196786936175,\ +-1.69897,-0.204855,-4.50530353535354,3.14752635237482,-0.67919377186849,-0.0424758573436399,-2.24199182647193,\ +-1.69897,-0.204855,-4.47777272727273,3.14752170957943,-0.679204213766318,-0.042503130451596,-2.24201846953735,\ +-1.69897,-0.204855,-4.45024191919192,3.14751651534387,-0.67921589588284,-0.0425336428766625,-2.24204827708764,\ +-1.69897,-0.204855,-4.42271111111111,3.14751066522086,-0.679229053125743,-0.0425680081723138,-2.24208184850244,\ +-1.69897,-0.204855,-4.3951803030303,3.14750402660784,-0.679243983725263,-0.0426070052836833,-2.24211994473227,\ +-1.69897,-0.204855,-4.36764949494949,3.14749642857455,-0.67926107211282,-0.0426516383040621,-2.24216354667466,\ +-1.69897,-0.204855,-4.34011868686869,3.14748764693646,-0.67928082249158,-0.0427032241576044,-2.24221394083115,\ +-1.69897,-0.204855,-4.31258787878788,3.14747738176331,-0.679303909420877,-0.0427635247203347,-2.24227284837626,\ +-1.69897,-0.204855,-4.28505707070707,3.14746522243725,-0.67933125640246,-0.0428349520789568,-2.24234262567451,\ +-1.69897,-0.204855,-4.25752626262626,3.14745059140225,-0.679364162391044,-0.0429208989627247,-2.24242658707891,\ +-1.69897,-0.204855,-4.22999545454545,3.14743264972927,-0.679404514183401,-0.043026293480764,-2.24252954685316,\ +-1.69897,-0.204855,-4.20246464646465,3.14741013039878,-0.679455161374965,-0.0431585784682064,-2.2426587758937,\ +-1.69897,-0.204855,-4.17493383838384,3.1473810253142,-0.679520620283444,-0.0433295500585033,-2.24282579782869,\ +-1.69897,-0.204855,-4.14740303030303,3.14734195068792,-0.679608501230099,-0.0435590855878261,-2.24305003080325,\ +-1.69897,-0.204855,-4.11987222222222,3.14728672552064,-0.679732705616488,-0.0438834940137601,-2.24336694499311,\ +-1.69897,-0.204855,-4.09234141414141,3.14720272826095,-0.67992161999396,-0.0443769179387373,-2.24384897021483,\ +-1.69897,-0.204855,-4.06481060606061,3.14705955301571,-0.680243628859791,-0.0452179702746348,-2.24467059320102,\ +-1.69897,-0.204855,-4.0372797979798,3.14676065102016,-0.680915875604811,-0.0469738060766633,-2.24638586702329,\ +-1.69897,-0.204855,-4.00974898989899,3.14574906025357,-0.683190997919967,-0.0529161795348373,-2.25219096430124,\ +-1.69897,-0.204855,-3.98221818181818,3.15728829442124,-0.657238636528499,0.014868581962261,-2.18597211467432,\ +-1.69897,-0.204855,-3.95468737373737,3.14895284166084,-0.675985520355959,-0.0340962513294022,-2.23380579972589,\ +-1.69897,-0.204855,-3.92715656565657,3.14833111856713,-0.67738380920069,-0.0377484305825522,-2.23737360911893,\ +-1.69897,-0.204855,-3.89962575757576,3.14810274184384,-0.677897440796191,-0.0390899807664977,-2.23868416783354,\ +-1.69897,-0.204855,-3.87209494949495,3.14798412998325,-0.678164205282173,-0.0397867407562844,-2.23936483180537,\ +-1.69897,-0.204855,-3.84456414141414,3.14791148103111,-0.67832759670254,-0.0402135014773331,-2.23978173382567,\ +-1.69897,-0.204855,-3.81703333333333,3.14786241481056,-0.678437949284841,-0.0405017304889038,-2.24006330439041,\ +-1.69897,-0.204855,-3.78950252525252,3.14782705194328,-0.678517482284849,-0.0407094620843212,-2.24026623712892,\ +-1.69897,-0.204855,-3.76197171717172,3.14780035517198,-0.678577524766578,-0.0408662865536715,-2.24041943875896,\ +-1.69897,-0.204855,-3.73444090909091,3.14777948662712,-0.678624459252036,-0.0409888743542528,-2.24053919462966,\ +-1.69897,-0.204855,-3.7069101010101,3.14776272557875,-0.678662155755826,-0.0410873335456968,-2.24063537929194,\ +-1.69897,-0.204855,-3.67937929292929,3.14774896797978,-0.67869309733956,-0.0411681496164208,-2.24071432841142,\ +-1.69897,-0.204855,-3.65184848484848,3.1477374729207,-0.678718950348802,-0.0412356748808457,-2.24078029375868,\ +-1.69897,-0.204855,-3.62431767676768,3.14772772467191,-0.678740874687247,-0.0412929388819956,-2.24083623489055,\ +-1.69897,-0.204855,-3.59678686868687,3.14771935317785,-0.678759702629928,-0.0413421154322464,-2.24088427540164,\ +-1.69897,-0.204855,-3.56925606060606,3.14771208601517,-0.678776046871607,-0.0413848048240655,-2.24092597861567,\ +-1.69897,-0.204855,-3.54172525252525,3.14770571818708,-0.678790368461181,-0.0414222112673127,-2.24096252092379,\ +-1.69897,-0.204855,-3.51419444444444,3.14770009247824,-0.678803020984449,-0.0414552582898627,-2.24099480451923,\ +-1.69897,-0.204855,-3.48666363636364,3.14769508629997,-0.678814280150023,-0.041484666012784,-2.24102353288737,\ +-1.69897,-0.204855,-3.45913282828283,3.14769060265456,-0.678824364110899,-0.0415110042281251,-2.24104926265734,\ +-1.69897,-0.204855,-3.43160202020202,3.14768656378879,-0.678833447738329,-0.0415347296806812,-2.24107244002258,\ +-1.69897,-0.204855,-3.40407121212121,3.14768290664674,-0.678841672848489,-0.041556212778968,-2.24109342683472,\ +-1.69897,-0.204855,-3.3765404040404,3.1476795795538,-0.678849155660353,-0.0415757570743769,-2.24111251963272,\ +-1.69897,-0.204855,-3.3490095959596,3.14767653975971,-0.678855992321575,-0.0415936136941747,-2.2411299637425,\ +-1.69897,-0.204855,-3.32147878787879,3.14767375159172,-0.678862263062106,-0.0416099921903309,-2.24114596387513,\ +-1.69897,-0.204855,-3.29394797979798,3.14767118504813,-0.678868035357349,-0.0416250688013024,-2.24116069219772,\ +-1.69897,-0.204855,-3.26641717171717,3.1476688147145,-0.678873366365846,-0.0416389928190063,-2.24117429455339,\ +-1.69897,-0.204855,-3.23888636363636,3.14766661891907,-0.678878304828456,-0.0416518915493024,-2.24118689530706,\ +-1.69897,-0.204855,-3.21135555555555,3.14766457906837,-0.678882892562918,-0.0416638742156017,-2.24119860115893,\ +-1.69897,-0.204855,-3.18382474747475,3.14766267911939,-0.678887165650888,-0.0416750350592957,-2.24120950417333,\ +-1.69897,-0.204855,-3.15629393939394,3.1476609051567,-0.678891155388853,-0.0416854558234154,-2.24121968420491,\ +-1.69897,-0.204855,-3.12876313131313,3.14765924505117,-0.678894889055931,-0.0416952077580663,-2.2412292108578,\ +-1.69897,-0.204855,-3.10123232323232,3.14765768818219,-0.678898390538437,-0.0417043532517305,-2.24123814507924,\ +-1.69897,-0.204855,-3.07370151515151,3.14765622521022,-0.678901680841458,-0.041712947167411,-2.24124654046483,\ +-1.69897,-0.204855,-3.04617070707071,3.14765484788935,-0.678904778510548,-0.041721037944097,-2.24125444433457,\ +-1.69897,-0.204855,-3.0186398989899,3.14765354891171,-0.678907699981491,-0.0417286685102729,-2.24126189862522,\ +-1.69897,-0.204855,-2.99110909090909,3.14765232177778,-0.678910459872008,-0.0417358770458541,-2.24126894063471,\ +-1.69897,-0.204855,-2.96357828282828,3.1476511606877,-0.678913071226387,-0.0417426976211028,-2.24127560364623,\ +-1.69897,-0.204855,-2.93604747474747,3.14765006044947,-0.67891554572163,-0.041749160735086,-2.24128191745428,\ +-1.69897,-0.204855,-2.90851666666667,3.14764901640146,-0.678917893842026,-0.0417552937716392,-2.2412879088101,\ +-1.69897,-0.204855,-2.88098585858586,3.14764802434634,-0.678920125027648,-0.0417611213872045,-2.24129360180054,\ +-1.69897,-0.204855,-2.85345505050505,3.14764708049462,-0.678922247801188,-0.0417666658421382,-2.2412990181717,\ +-1.69897,-0.204855,-2.82592424242424,3.14764618141637,-0.678924269876761,-0.0417719472848683,-2.24130417760657,\ +-1.69897,-0.204855,-2.79839343434343,3.14764532399953,-0.678926198253564,-0.0417769839965511,-2.24130909796398,\ +-1.69897,-0.204855,-2.77086262626263,3.14764450541393,-0.678928039296836,-0.0417817926024856,-2.24131379548517,\ +-1.69897,-0.204855,-2.74333181818182,3.14764372308005,-0.678929798808026,-0.0417863882554413,-2.24131828497285,\ +-1.69897,-0.204855,-2.71580101010101,3.1476429746419,-0.678931482085875,-0.0417907847951572,-2.24132257994706,\ +-1.69897,-0.204855,-2.6882702020202,3.14764225794333,-0.678933093979711,-0.0417949948875474,-2.24132669278111,\ +-1.69897,-0.204855,-2.66073939393939,3.14764157100724,-0.678934638936101,-0.0417990301465669,-2.24133063482065,\ +-1.69897,-0.204855,-2.63320858585858,3.14764091201742,-0.678936121039818,-0.0418029012412009,-2.2413344164882,\ +-1.69897,-0.204855,-2.60567777777778,3.14764027930249,-0.6789375440499,-0.0418066179896588,-2.24133804737518,\ +-1.69897,-0.204855,-2.57814696969697,3.14763967132173,-0.678938911431498,-0.041810189442521,-2.24134153632306,\ +-1.69897,-0.204855,-2.55061616161616,3.14763908665258,-0.678940226384023,-0.0418136239563197,-2.24134489149534,\ +-1.69897,-0.204855,-2.52308535353535,3.14763852397951,-0.67894149186616,-0.0418169292588196,-2.24134812044126,\ +-1.69897,-0.204855,-2.49555454545454,3.14763798208417,-0.678942710618089,-0.0418201125070608,-2.24135123015252,\ +-1.69897,-0.204855,-2.46802373737374,3.14763745983652,-0.678943885181277,-0.041823180339093,-2.24135422711384,\ +-1.69897,-0.204855,-2.44049292929293,3.14763695618704,-0.678945017916185,-0.0418261389201806,-2.24135711734804,\ +-1.69897,-0.204855,-2.41296212121212,3.14763647015963,-0.678946111018094,-0.0418289939841571,-2.24135990645652,\ +-1.69897,-0.204855,-2.38543131313131,3.14763600084534,-0.678947166531302,-0.0418317508705164,-2.24136259965539,\ +-1.69897,-0.204855,-2.3579005050505,3.14763554739665,-0.678948186361896,-0.0418344145577383,-2.24136520180813,\ +-1.69897,-0.204855,-2.3303696969697,3.14763510902244,-0.678949172289221,-0.0418369896932938,-2.24136771745487,\ +-1.69897,-0.204855,-2.30283888888889,3.14763468498325,-0.678950125976258,-0.041839480620704,-2.24137015083878,\ +-1.69897,-0.204855,-2.27530808080808,3.14763427458728,-0.678951048978976,-0.0418418914039909,-2.24137250592999,\ +-1.69897,-0.204855,-2.24777727272727,3.1476338771865,-0.678951942754804,-0.0418442258498009,-2.24137478644721,\ +-1.69897,-0.204855,-2.22024646464646,3.14763349217331,-0.678952808670308,-0.0418464875274632,-2.24137699587732,\ +-1.69897,-0.204855,-2.19271565656565,3.14763311897736,-0.678953648008172,-0.0418486797871989,-2.24137913749314,\ +-1.69897,-0.204855,-2.16518484848485,3.14763275706283,-0.678954461973525,-0.0418508057766808,-2.24138121436963,\ +-1.69897,-0.204855,-2.13765404040404,3.14763240592578,-0.678955251699723,-0.0418528684561111,-2.24138322939863,\ +-1.69897,-0.204855,-2.11012323232323,3.14763206509186,-0.678956018253613,-0.041854870611975,-2.24138518530221,\ +-1.69897,-0.204855,-2.08259242424242,3.14763173411417,-0.678956762640336,-0.0418568148695986,-2.24138708464507,\ +-1.69897,-0.204855,-2.05506161616161,3.14763141257125,-0.678957485807731,-0.0418587037046338,-2.24138892984569,\ +-1.69897,-0.204855,-2.02753080808081,3.14763110006537,-0.678958188650362,-0.0418605394535758,-2.24139072318655,\ +-1.69897,-0.204855,-2,3.14763079622081,-0.678958872013196,-0.0418623243234035,-2.24139246682367,\ +-1.69897,-0.178054,-4.72555,3.14754885157683,-0.679143169946986,-0.0423436905967067,-2.2418627129404,\ +-1.69897,-0.178054,-4.69801919191919,3.14754642559857,-0.679148626103243,-0.0423579414868251,-2.24187663461733,\ +-1.69897,-0.178054,-4.67048838383838,3.14754379631447,-0.679154539505293,-0.0423733866535148,-2.24189172298155,\ +-1.69897,-0.178054,-4.64295757575758,3.14754093705019,-0.679160970145217,-0.04239018278959,-2.2419081311061,\ +-1.69897,-0.178054,-4.61542676767677,3.14753781625161,-0.679167988989926,-0.0424085152529629,-2.24192604006689,\ +-1.69897,-0.178054,-4.58789595959596,3.1475343963155,-0.679175680611108,-0.0424286049357249,-2.24194566565312,\ +-1.69897,-0.178054,-4.56036515151515,3.14753063206699,-0.679184146609462,-0.0424507172079232,-2.24196726710446,\ +-1.69897,-0.178054,-4.53283434343434,3.14752646875284,-0.679193510128024,-0.042475173705852,-2.24199115862703,\ +-1.69897,-0.178054,-4.50530353535354,3.14752183936068,-0.679203921881265,-0.0425023680794017,-2.2420177247769,\ +-1.69897,-0.178054,-4.47777272727273,3.14751666098454,-0.679215568329086,-0.0425327873416788,-2.24204744131657,\ +-1.69897,-0.178054,-4.45024191919192,3.14751082981611,-0.679228682942113,-0.0425670412927039,-2.24208090395894,\ +-1.69897,-0.178054,-4.42271111111111,3.14750421411394,-0.679243562013909,-0.0426059038192295,-2.24211886871301,\ +-1.69897,-0.178054,-4.3951803030303,3.14749664413057,-0.679260587315703,-0.0426503720664203,-2.24216230968867,\ +-1.69897,-0.178054,-4.36764949494949,3.14748789734173,-0.679280259316598,-0.0427017532054512,-2.2422125038598,\ +-1.69897,-0.178054,-4.34011868686869,3.1474776762064,-0.679303247202441,-0.0427617950773874,-2.2422711586902,\ +-1.69897,-0.178054,-4.31258787878788,3.1474655736456,-0.679330466515916,-0.0428328889807243,-2.2423406102364,\ +-1.69897,-0.178054,-4.28505707070707,3.14745101752554,-0.679363204016726,-0.0429183957926411,-2.24242414173515,\ +-1.69897,-0.178054,-4.25752626262626,3.14743317756758,-0.679403327046511,-0.0430231928075862,-2.24252651780937,\ +-1.69897,-0.178054,-4.22999545454545,3.14741080124457,-0.679453652606488,-0.0431546377281007,-2.24265492618957,\ +-1.69897,-0.178054,-4.20246464646465,3.14738190625774,-0.679518638993799,-0.0433243751442047,-2.24282074246132,\ +-1.69897,-0.178054,-4.17493383838384,3.14734315842821,-0.6796057849569,-0.0435519909759676,-2.24304310008571,\ +-1.69897,-0.178054,-4.14740303030303,3.14728848239185,-0.679728754318167,-0.0438731736498289,-2.24335686304236,\ +-1.69897,-0.178054,-4.11987222222222,3.14720551571865,-0.679915350850923,-0.0443605436150678,-2.24383297415831,\ +-1.69897,-0.178054,-4.09234141414141,3.14706463790691,-0.680232192664608,-0.0451881001695149,-2.24464141313229,\ +-1.69897,-0.178054,-4.06481060606061,3.14677270977631,-0.680888754810391,-0.0469029694944544,-2.24631666685378,\ +-1.69897,-0.178054,-4.0372797979798,3.14580604488043,-0.683062836413878,-0.0525814355401715,-2.25186395330708,\ +-1.69897,-0.178054,-4.00974898989899,3.15919326923065,-0.652954245209539,0.0260589487784131,-2.17504025917903,\ +-1.69897,-0.178054,-3.98221818181818,3.14898423258762,-0.675914920464831,-0.0339118520483688,-2.23362566029643,\ +-1.69897,-0.178054,-3.95468737373737,3.14834008373685,-0.67736364604938,-0.037695766611753,-2.23732216175103,\ +-1.69897,-0.178054,-3.92715656565657,3.1481069157404,-0.677888053477241,-0.0390654621045284,-2.23866021558301,\ +-1.69897,-0.178054,-3.89962575757576,3.14798653394021,-0.678158798653011,-0.0397726192255792,-2.2393510364995,\ +-1.69897,-0.178054,-3.87209494949495,3.14791304174503,-0.678324086572577,-0.0402043333974502,-2.23977277753978,\ +-1.69897,-0.178054,-3.84456414141414,3.14786350909514,-0.678435488179645,-0.0404953023482724,-2.24005702474778,\ +-1.69897,-0.178054,-3.81703333333333,3.14782786146275,-0.678515661631817,-0.0407047067354817,-2.24026159163452,\ +-1.69897,-0.178054,-3.78950252525252,3.14780097817933,-0.678576123589361,-0.0408626268303012,-2.24041586357973,\ +-1.69897,-0.178054,-3.76197171717172,3.1477799808718,-0.678623347668991,-0.040985971019543,-2.24053635836557,\ +-1.69897,-0.178054,-3.73444090909091,3.14776312721483,-0.678661252454557,-0.0410849742204628,-2.24063307447004,\ +-1.69897,-0.178054,-3.7069101010101,3.14774930079193,-0.678692348827042,-0.041166194582675,-2.24071241854138,\ +-1.69897,-0.178054,-3.67937929292929,3.14773775319486,-0.678718319997044,-0.0412340284702204,-2.24077868538218,\ +-1.69897,-0.178054,-3.65184848484848,3.14772796393345,-0.678740336575134,-0.0412915333913501,-2.24083486186848,\ +-1.69897,-0.178054,-3.62431767676768,3.14771955981187,-0.678759237898827,-0.0413409016048662,-2.24088308961516,\ +-1.69897,-0.178054,-3.59678686868687,3.14771226626758,-0.678775641474195,-0.0413837459698592,-2.24092494422232,\ +-1.69897,-0.178054,-3.56925606060606,3.14770587680563,-0.678790011719504,-0.0414212794966308,-2.24096161067817,\ +-1.69897,-0.178054,-3.54172525252525,3.1477002331362,-0.678802704637117,-0.041454432024844,-2.24099399734196,\ +-1.69897,-0.178054,-3.51419444444444,3.14769521188372,-0.678813997705341,-0.0414839282978199,-2.24102281221453,\ +-1.69897,-0.178054,-3.48666363636364,3.14769071546363,-0.678824110397184,-0.0415103415553409,-2.24104861529311,\ +-1.69897,-0.178054,-3.45913282828283,3.14768666567769,-0.678833218584692,-0.0415341311561663,-2.24107185532472,\ +-1.69897,-0.178054,-3.43160202020202,3.14768299912762,-0.678841464853964,-0.0415556695197627,-2.24109289612547,\ +-1.69897,-0.178054,-3.40407121212121,3.14767966387202,-0.678848966024104,-0.0415752617649997,-2.2411120357656,\ +-1.69897,-0.178054,-3.3765404040404,3.14767661695013,-0.678855818716133,-0.0415931602555353,-2.24112952077885,\ +-1.69897,-0.178054,-3.3490095959596,3.14767382252138,-0.678862103537437,-0.0416095755291492,-2.24114555683933,\ +-1.69897,-0.178054,-3.32147878787879,3.14767125044898,-0.678867888267336,-0.0416246846180908,-2.24116031688962,\ +-1.69897,-0.178054,-3.29394797979798,3.1476688752086,-0.6788732303113,-0.0416386374592432,-2.24117394740288,\ +-1.69897,-0.178054,-3.26641717171717,3.14766667503863,-0.678878178612502,-0.0416515618868788,-2.24118657326024,\ +-1.69897,-0.178054,-3.23888636363636,3.14766463127131,-0.678882775155703,-0.0416635675606556,-2.2411983015881,\ +-1.69897,-0.178054,-3.21135555555555,3.14766272780183,-0.678887056161437,-0.0416747490846892,-2.24120922480509,\ +-1.69897,-0.178054,-3.18382474747475,3.14766095066315,-0.678891053042414,-0.04168518850559,-2.24121942306245,\ +-1.69897,-0.178054,-3.15629393939394,3.14765928768256,-0.678894793175639,-0.0416949573291094,-2.24122896621406,\ +-1.69897,-0.178054,-3.12876313131313,3.14765772820262,-0.678898300530314,-0.0417041181602428,-2.24123791541866,\ +-1.69897,-0.178054,-3.10123232323232,3.14765626285243,-0.678901596182111,-0.0417127260463478,-2.24124632445194,\ +-1.69897,-0.178054,-3.07370151515151,3.14765488335918,-0.678904698736988,-0.0417208295841768,-2.24125424078802,\ +-1.69897,-0.178054,-3.04617070707071,3.14765358239194,-0.678907624682657,-0.0417284718378588,-2.24126170649619,\ +-1.69897,-0.178054,-3.0186398989899,3.14765235343124,-0.678910388681694,-0.0417356911044545,-2.24126875898879,\ +-1.69897,-0.178054,-2.99110909090909,3.1476511906599,-0.678913003817286,-0.0417425215558192,-2.24127543164827,\ +-1.69897,-0.178054,-2.96357828282828,3.1476500888709,-0.678915481800294,-0.0417489937794753,-2.24128175435556,\ +-1.69897,-0.178054,-2.93604747474747,3.14764904338944,-0.678917833144614,-0.0417551352365606,-2.24128775393738,\ +-1.69897,-0.178054,-2.90851666666667,3.14764805000662,-0.678920067316266,-0.0417609706513149,-2.24129345454684,\ +-1.69897,-0.178054,-2.88098585858586,3.14764710492284,-0.67892219286079,-0.0417665223437556,-2.24129887798831,\ +-1.69897,-0.178054,-2.85345505050505,3.14764620469918,-0.678924217512461,-0.0417718105149791,-2.24130404399623,\ +-1.69897,-0.178054,-2.82592424242424,3.14764534621564,-0.678926148288338,-0.0417768534927775,-2.24130897047501,\ +-1.69897,-0.178054,-2.79839343434343,3.14764452663499,-0.678927991569509,-0.0417816679438655,-2.24131367370632,\ +-1.69897,-0.178054,-2.77086262626263,3.14764374337146,-0.678929753171547,-0.0417862690578927,-2.24131816852891,\ +-1.69897,-0.178054,-2.74333181818182,3.14764299406343,-0.6789314384058,-0.0417906707075257,-2.24132246849499,\ +-1.69897,-0.178054,-2.71580101010101,3.14764227654974,-0.678933052132881,-0.041794885588152,-2.24132658600667,\ +-1.69897,-0.178054,-2.6882702020202,3.14764158884879,-0.67893459880948,-0.0417989253401722,-2.24133053243542,\ +-1.69897,-0.178054,-2.66073939393939,3.14764092914034,-0.678936082529475,-0.0418028006563527,-2.24133431822699,\ +-1.69897,-0.178054,-2.63320858585858,3.14764029574931,-0.678937507060116,-0.0418065213763383,-2.24133795299374,\ +-1.69897,-0.178054,-2.60567777777778,3.14763968713173,-0.678938875873955,-0.0418100965700691,-2.24134144559607,\ +-1.69897,-0.178054,-2.57814696969697,3.14763910186204,-0.678940192177125,-0.0418135346116002,-2.24134480421459,\ +-1.69897,-0.178054,-2.55061616161616,3.14763853862202,-0.678941458934387,-0.0418168432445841,-2.24134803641406,\ +-1.69897,-0.178054,-2.52308535353535,3.14763799619083,-0.678942678891446,-0.0418200296404976,-2.24135114920028,\ +-1.69897,-0.178054,-2.49555454545454,3.14763747343623,-0.678943854594803,-0.0418231004505285,-2.2413541490708,\ +-1.69897,-0.178054,-2.46802373737374,3.14763696930663,-0.678944988409506,-0.0418260618519208,-2.24135704206016,\ +-1.69897,-0.178054,-2.44049292929293,3.1476364828241,-0.678946082535022,-0.0418289195894485,-2.24135983378041,\ +-1.69897,-0.178054,-2.41296212121212,3.14763601307796,-0.678947139019481,-0.0418316790126133,-2.24136252945749,\ +-1.69897,-0.178054,-2.38543131313131,3.14763555921915,-0.67894815977248,-0.0418343451090637,-2.24136513396381,\ +-1.69897,-0.178054,-2.3579005050505,3.14763512045508,-0.678949146576589,-0.0418369225346844,-2.24136765184771,\ +-1.69897,-0.178054,-2.3303696969697,3.14763469604502,-0.678950101097746,-0.0418394156407278,-2.24137008735992,\ +-1.69897,-0.178054,-2.30283888888889,3.14763428529594,-0.678951024894646,-0.0418418284983293,-2.24137244447752,\ +-1.69897,-0.178054,-2.27530808080808,3.14763388755869,-0.678951919427225,-0.041844164920691,-2.24137472692563,\ +-1.69897,-0.178054,-2.24777727272727,3.14763350222461,-0.678952786064368,-0.0418464284831899,-2.24137693819704,\ +-1.69897,-0.178054,-2.22024646464646,3.14763312872247,-0.678953626090893,-0.0418486225416354,-2.24137908157002,\ +-1.69897,-0.178054,-2.19271565656565,3.14763276651551,-0.678954440713911,-0.0418507502488685,-2.24138116012458,\ +-1.69897,-0.178054,-2.16518484848485,3.14763241509901,-0.678955231068611,-0.0418528145698781,-2.24138317675722,\ +-1.69897,-0.178054,-2.13765404040404,3.14763207399787,-0.678955998223538,-0.0418548182955875,-2.24138513419439,\ +-1.69897,-0.178054,-2.11012323232323,3.14763174276444,-0.678956743185413,-0.0418567640554424,-2.24138703500479,\ +-1.69897,-0.178054,-2.08259242424242,3.14763142097665,-0.678957466903536,-0.0418586543289221,-2.24138888161061,\ +-1.69897,-0.178054,-2.05506161616161,3.14763110823615,-0.678958170273838,-0.0418604914560831,-2.24139067629786,\ +-1.69897,-0.178054,-2.02753080808081,3.14763080416666,-0.678958854142553,-0.0418622776472195,-2.24139242122577,\ +-1.69897,-0.178054,-2,3.1476305084125,-0.678959519309648,-0.0418640149917382,-2.24139411843548,\ +-1.69897,-0.146953,-4.72555,3.14754609663015,-0.67914936597102,-0.0423598739414497,-2.24187852242986,\ +-1.69897,-0.146953,-4.69801919191919,3.14754343912123,-0.679155342852197,-0.0423754849087537,-2.2418937727645,\ +-1.69897,-0.146953,-4.67048838383838,3.14754054783751,-0.679161845505587,-0.0423924691362171,-2.2419103646353,\ +-1.69897,-0.146953,-4.64295757575758,3.14753739051284,-0.679168946499437,-0.0424110161642629,-2.24192848320404,\ +-1.69897,-0.146953,-4.61542676767677,3.14753392865682,-0.679176732400756,-0.042431352096549,-2.24194834935113,\ +-1.69897,-0.146953,-4.58789595959596,3.14753011597784,-0.679185307321873,-0.0424537488632225,-2.24197022872478,\ +-1.69897,-0.146953,-4.56036515151515,3.14752589630117,-0.679194797602781,-0.0424785364506909,-2.2419944436883,\ +-1.69897,-0.146953,-4.53283434343434,3.14752120078275,-0.679205358077535,-0.0425061192687473,-2.24202138930913,\ +-1.69897,-0.146953,-4.50530353535354,3.147515944124,-0.679217180587224,-0.042536998385583,-2.24205155508015,\ +-1.69897,-0.146953,-4.47777272727273,3.14751001934343,-0.679230505738986,-0.0425718022410163,-2.24208555492346,\ +-1.69897,-0.146953,-4.45024191919192,3.14750329041934,-0.679245639452976,-0.0426113298654214,-2.24212416941082,\ +-1.69897,-0.146953,-4.42271111111111,3.14749558171869,-0.67926297673742,-0.042656612977555,-2.24216840642703,\ +-1.69897,-0.146953,-4.3951803030303,3.1474866624457,-0.679283036664513,-0.0427090073378659,-2.24221959041279,\ +-1.69897,-0.146953,-4.36764949494949,3.14747622313958,-0.679306515228256,-0.0427703308074219,-2.24227949723431,\ +-1.69897,-0.146953,-4.34011868686869,3.14746383903725,-0.679334367743816,-0.042843078566125,-2.24235056442976,\ +-1.69897,-0.146953,-4.31258787878788,3.14744891085661,-0.679367942029021,-0.0429307709683959,-2.24243623102903,\ +-1.69897,-0.146953,-4.28505707070707,3.14743056490736,-0.67940920306056,-0.0430385403208561,-2.24254151077609,\ +-1.69897,-0.146953,-4.25752626262626,3.14740747572461,-0.679461131880644,-0.0431741727833981,-2.24267400996091,\ +-1.69897,-0.146953,-4.22999545454545,3.14737753070702,-0.679528479843872,-0.0433500783804177,-2.24284585192097,\ +-1.69897,-0.146953,-4.20246464646465,3.14733714393549,-0.679619311876144,-0.0435873218262454,-2.24307761474962,\ +-1.69897,-0.146953,-4.17493383838384,3.14727970060626,-0.679748505028663,-0.0439247603698326,-2.24340725804529,\ +-1.69897,-0.146953,-4.14740303030303,3.14719150298274,-0.679946866251429,-0.0444428584331514,-2.24391338740224,\ +-1.69897,-0.146953,-4.11987222222222,3.14703882468774,-0.680290247989853,-0.0453397344010186,-2.24478954442541,\ +-1.69897,-0.146953,-4.09234141414141,3.14671021222265,-0.681029315186844,-0.0472700979977138,-2.24667531423431,\ +-1.69897,-0.146953,-4.06481060606061,3.14548818173369,-0.683777727812849,-0.0544486545667767,-2.2536880372636,\ +-1.69897,-0.146953,-4.0372797979798,3.15351099449974,-0.66573398823229,-0.00732035801083677,-2.20764846267655,\ +-1.69897,-0.146953,-4.00974898989899,3.14884320000125,-0.676232110375015,-0.0347403177932225,-2.2344349874574,\ +-1.69897,-0.146953,-3.98221818181818,3.14829822474571,-0.677457789183131,-0.0379416582965829,-2.23756237303367,\ +-1.69897,-0.146953,-3.95468737373737,3.14808714253761,-0.677932524479105,-0.0391816155523576,-2.23877368574246,\ +-1.69897,-0.146953,-3.92715656565657,3.14797505839893,-0.678184607765662,-0.0398400298368556,-2.23941688984224,\ +-1.69897,-0.146953,-3.89962575757576,3.14790555642473,-0.678340921462539,-0.0402483043095251,-2.23981573266938,\ +-1.69897,-0.146953,-3.87209494949495,3.14785824406324,-0.678447329520987,-0.040526230651348,-2.24008723856878,\ +-1.69897,-0.146953,-3.84456414141414,3.14782395756917,-0.678524441699503,-0.0407276393228122,-2.2402839944507,\ +-1.69897,-0.146953,-3.81703333333333,3.14779796849964,-0.678582892521682,-0.0408803065495427,-2.24043313487558,\ +-1.69897,-0.146953,-3.78950252525252,3.14777758997223,-0.678628724931389,-0.0410000158474378,-2.24055007874057,\ +-1.69897,-0.146953,-3.76197171717172,3.147761182176,-0.678665626952024,-0.0410963999347907,-2.24064423623622,\ +-1.69897,-0.146953,-3.73444090909091,3.14774768760012,-0.678695976982619,-0.0411756709326913,-2.24072167597599,\ +-1.69897,-0.146953,-3.7069101010101,3.14773639363882,-0.678721377712089,-0.0412420148912633,-2.24078648730701,\ +-1.69897,-0.146953,-3.67937929292929,3.14772680257952,-0.678742948522896,-0.0412983555164515,-2.24084152639404,\ +-1.69897,-0.146953,-3.65184848484848,3.1477185562777,-0.678761494901428,-0.0413467966515912,-2.24088884847902,\ +-1.69897,-0.146953,-3.62431767676768,3.14771139043996,-0.67877761125785,-0.0413888908317587,-2.24092997023154,\ +-1.69897,-0.146953,-3.59678686868687,3.14770510577225,-0.678791745815252,-0.0414258087672055,-2.24096603531699,\ +-1.69897,-0.146953,-3.56925606060606,3.14769954915515,-0.678804242947458,-0.0414584499250998,-2.24099792242375,\ +-1.69897,-0.146953,-3.54172525252525,3.14769460100328,-0.678815371608474,-0.0414875167842308,-2.24102631780246,\ +-1.69897,-0.146953,-3.51419444444444,3.14769016656164,-0.67882534490745,-0.0415135659626545,-2.24105176521263,\ +-1.69897,-0.146953,-3.48666363636364,3.14768616977895,-0.678834333887753,-0.0415370442071507,-2.24107470108063,\ +-1.69897,-0.146953,-3.45913282828283,3.14768254890984,-0.678842477418112,-0.0415583142278165,-2.2410954797375,\ +-1.69897,-0.146953,-3.43160202020202,3.14767925330204,-0.678849889418202,-0.0415776735705261,-2.24111439185543,\ +-1.69897,-0.146953,-3.40407121212121,3.14767624101227,-0.678856664220719,-0.0415953686220857,-2.2411316781294,\ +-1.69897,-0.146953,-3.3765404040404,3.14767347701164,-0.678862880607549,-0.0416116051522477,-2.24114753957563,\ +-1.69897,-0.146953,-3.3490095959596,3.14767093181722,-0.678868604887366,-0.0416265563521178,-2.24116214538428,\ +-1.69897,-0.146953,-3.32147878787879,3.14766858043627,-0.678873893270206,-0.041640369036214,-2.24117563897828,\ +-1.69897,-0.146953,-3.29394797979798,3.1476664015428,-0.678878793719432,-0.0416531684796597,-2.24118814273874,\ +-1.69897,-0.146953,-3.26641717171717,3.14766437682883,-0.678883347410586,-0.0416650622285255,-2.24119976172729,\ +-1.69897,-0.146953,-3.23888636363636,3.14766249048886,-0.678887589891136,-0.0416761431289486,-2.2412105866452,\ +-1.69897,-0.146953,-3.21135555555555,3.14766072880637,-0.678891552010292,-0.0416864917557211,-2.24122069620589,\ +-1.69897,-0.146953,-3.18382474747475,3.14765907981974,-0.678895260670373,-0.0416961783748017,-2.24123015905208,\ +-1.69897,-0.146953,-3.15629393939394,3.14765753305029,-0.678898739438465,-0.0417052645408735,-2.24123903531648,\ +-1.69897,-0.146953,-3.12876313131313,3.14765607927942,-0.678902009047746,-0.0417138044067435,-2.24124737790088,\ +-1.69897,-0.146953,-3.10123232323232,3.14765471036466,-0.678905087811011,-0.0417218458034562,-2.24125523353137,\ +-1.69897,-0.146953,-3.07370151515151,3.14765341908719,-0.678907991963853,-0.0417294311366313,-2.24126264363397,\ +-1.69897,-0.146953,-3.04617070707071,3.14765219902437,-0.678910735951066,-0.0417365981345015,-2.24126964506532,\ +-1.69897,-0.146953,-3.0186398989899,3.14765104444303,-0.678913332666924,-0.0417433804755086,-2.24127627072586,\ +-1.69897,-0.146953,-2.99110909090909,3.14764995020928,-0.678915793657776,-0.0417498083174887,-2.24128255007673,\ +-1.69897,-0.146953,-2.96357828282828,3.14764891171226,-0.678918129293717,-0.0417559087459918,-2.24128850957779,\ +-1.69897,-0.146953,-2.93604747474747,3.14764792479915,-0.678920348914631,-0.0417617061557975,-2.24129417306026,\ +-1.69897,-0.146953,-2.90851666666667,3.14764698571972,-0.678922460955043,-0.0417672225769548,-2.24129956204525,\ +-1.69897,-0.146953,-2.88098585858586,3.14764609107863,-0.678924473051201,-0.0417724779545363,-2.24130469601711,\ +-1.69897,-0.146953,-2.85345505050505,3.14764523779449,-0.678926392133356,-0.0417774903895971,-2.24130959265872,\ +-1.69897,-0.146953,-2.82592424242424,3.14764442306435,-0.678928224505494,-0.0417822763474691,-2.24131426805504,\ +-1.69897,-0.146953,-2.79839343434343,3.14764364433294,-0.67892997591452,-0.0417868508384477,-2.24131873686962,\ +-1.69897,-0.146953,-2.77086262626263,3.14764289926595,-0.678931651610462,-0.0417912275750437,-2.24132301249818,\ +-1.69897,-0.146953,-2.74333181818182,3.1476421857266,-0.678933256399041,-0.0417954191092737,-2.24132710720279,\ +-1.69897,-0.146953,-2.71580101010101,3.1476415017552,-0.678934794687692,-0.0417994369528822,-2.24133103222923,\ +-1.69897,-0.146953,-2.6882702020202,3.14764084555118,-0.678936270525992,-0.0418032916829222,-2.24133479791024,\ +-1.69897,-0.146953,-2.66073939393939,3.14764021545727,-0.67893768764125,-0.0418069930347331,-2.24133841375624,\ +-1.69897,-0.146953,-2.63320858585858,3.1476396099455,-0.678939049469951,-0.0418105499840363,-2.24134188853561,\ +-1.69897,-0.146953,-2.60567777777778,3.14763902760484,-0.678940359185573,-0.0418139708196048,-2.24134523034565,\ +-1.69897,-0.146953,-2.57814696969697,3.14763846713023,-0.678941619723267,-0.0418172632077496,-2.24134844667555,\ +-1.69897,-0.146953,-2.55061616161616,3.14763792731281,-0.678942833801831,-0.0418204342496727,-2.24135154446249,\ +-1.69897,-0.146953,-2.52308535353535,3.14763740703121,-0.678944003943278,-0.0418234905325963,-2.24135453014149,\ +-1.69897,-0.146953,-2.49555454545454,3.14763690524378,-0.678945132490324,-0.0418264381754366,-2.24135740969014,\ +-1.69897,-0.146953,-2.46802373737374,3.14763642098165,-0.678946221622037,-0.0418292828696955,-2.24136018866844,\ +-1.69897,-0.146953,-2.44049292929293,3.14763595334244,-0.678947273367893,-0.041832029916138,-2.2413628722547,\ +-1.69897,-0.146953,-2.41296212121212,3.14763550148469,-0.678948289620389,-0.0418346842577588,-2.24136546527774,\ +-1.69897,-0.146953,-2.38543131313131,3.1476350646228,-0.678949272146406,-0.0418372505094645,-2.24136797224586,\ +-1.69897,-0.146953,-2.3579005050505,3.14763464202244,-0.678950222597463,-0.0418397329848515,-2.241370397373,\ +-1.69897,-0.146953,-2.3303696969697,3.14763423299646,-0.678951142518991,-0.0418421357204007,-2.24137274460238,\ +-1.69897,-0.146953,-2.30283888888889,3.14763383690118,-0.678952033358698,-0.0418444624973797,-2.24137501762794,\ +-1.69897,-0.146953,-2.27530808080808,3.14763345313295,-0.678952896474186,-0.0418467168616994,-2.24137721991365,\ +-1.69897,-0.146953,-2.24777727272727,3.14763308112515,-0.678953733139853,-0.0418489021419441,-2.24137935471123,\ +-1.69897,-0.146953,-2.22024646464646,3.14763272034533,-0.678954544553165,-0.0418510214657709,-2.24138142507604,\ +-1.69897,-0.146953,-2.19271565656565,3.14763237029273,-0.678955331840381,-0.041853077774845,-2.24138343388183,\ +-1.69897,-0.146953,-2.16518484848485,3.14763203049592,-0.678956096061768,-0.0418550738384625,-2.24138538383391,\ +-1.69897,-0.146953,-2.13765404040404,3.1476317005107,-0.678956838216356,-0.0418570122659934,-2.24138727748137,\ +-1.69897,-0.146953,-2.11012323232323,3.14763137991816,-0.678957559246312,-0.0418588955182621,-2.24138911722818,\ +-1.69897,-0.146953,-2.08259242424242,3.14763106832289,-0.678958260040909,-0.0418607259179689,-2.24139090534339,\ +-1.69897,-0.146953,-2.05506161616161,3.14763076535139,-0.678958941440205,-0.0418625056592472,-2.24139264397044,\ +-1.69897,-0.146953,-2.02753080808081,3.14763047065052,-0.678959604238393,-0.0418642368164385,-2.24139433513575,\ +-1.69897,-0.146953,-2,3.14763018388618,-0.678960249186885,-0.0418659213521561,-2.24139598075662,\ +-1.69897,-0.144435,-4.72555,3.14754586253194,-0.679149892470536,-0.042361249101252,-2.24187986582177,\ +-1.69897,-0.144435,-4.69801919191919,3.14754318484228,-0.679155914739315,-0.0423769786160607,-2.24189523196532,\ +-1.69897,-0.144435,-4.67048838383838,3.14754027065114,-0.679162468912698,-0.042394097408176,-2.24191195529215,\ +-1.69897,-0.144435,-4.64295757575758,3.14753708717814,-0.679169628715568,-0.0424127980390212,-2.24193022391529,\ +-1.69897,-0.144435,-4.61542676767677,3.14753359529137,-0.679177482157693,-0.0424333103805902,-2.24195026239638,\ +-1.69897,-0.144435,-4.58789595959596,3.14752974789075,-0.679186135169631,-0.0424559111120467,-2.24197234102298,\ +-1.69897,-0.144435,-4.56036515151515,3.14752548777121,-0.679195716408739,-0.0424809362724923,-2.24199678807125,\ +-1.69897,-0.144435,-4.53283434343434,3.14752074475905,-0.679206383699483,-0.042508798082367,-2.24202400623884,\ +-1.69897,-0.144435,-4.50530353535354,3.14751543181608,-0.679218332795403,-0.0425400078287455,-2.24205449500145,\ +-1.69897,-0.144435,-4.47777272727273,3.14750943964969,-0.679231809501537,-0.0425752075278156,-2.24208888154392,\ +-1.69897,-0.144435,-4.45024191919192,3.14750262911435,-0.679247126763658,-0.0426152145600905,-2.24212796436424,\ +-1.69897,-0.144435,-4.42271111111111,3.14749482027189,-0.679264689272457,-0.0426610859338788,-2.24217277605253,\ +-1.69897,-0.144435,-4.3951803030303,3.14748577626044,-0.679285029743063,-0.0427142130435103,-2.24222467586019,\ +-1.69897,-0.144435,-4.36764949494949,3.14747517885146,-0.679308863888699,-0.0427764652545195,-2.24228548996809,\ +-1.69897,-0.144435,-4.34011868686869,3.14746259022844,-0.679337176382334,-0.0428504144262097,-2.24235773082241,\ +-1.69897,-0.144435,-4.31258787878788,3.14744739098684,-0.679371360298315,-0.042939699118147,-2.24244495292747,\ +-1.69897,-0.144435,-4.28505707070707,3.14742867509896,-0.679413453341808,-0.0430496415958583,-2.2425523555979,\ +-1.69897,-0.144435,-4.25752626262626,3.14740506243585,-0.679466559497516,-0.0431883491317329,-2.24268785881806,\ +-1.69897,-0.144435,-4.22999545454545,3.14737434198714,-0.679535651447274,-0.043368809832969,-2.24286415065379,\ +-1.69897,-0.144435,-4.20246464646465,3.14733273580813,-0.679629225992855,-0.0436132164269937,-2.24310291115305,\ +-1.69897,-0.144435,-4.17493383838384,3.14727321202869,-0.679763098190363,-0.0439628761301038,-2.24344449328434,\ +-1.69897,-0.144435,-4.14740303030303,3.14718102028824,-0.679970442398023,-0.0445044367785552,-2.24397354321166,\ +-1.69897,-0.144435,-4.11987222222222,3.14701909642919,-0.680334617909739,-0.0454556238336524,-2.24490275666875,\ +-1.69897,-0.144435,-4.09234141414141,3.14666020511132,-0.681141783883328,-0.0475638540707047,-2.24696228417851,\ +-1.69897,-0.144435,-4.06481060606061,3.14518703626475,-0.68445502025079,-0.0562176691730842,-2.25541618544345,\ +-1.69897,-0.144435,-4.0372797979798,3.15199401917181,-0.669145747744256,-0.0162315049124921,-2.21635375105776,\ +-1.69897,-0.144435,-4.00974898989899,3.14875995554833,-0.676419331649375,-0.0352293195159718,-2.23491269263525,\ +-1.69897,-0.144435,-3.98221818181818,3.14827147352532,-0.67751795412383,-0.0380988026155289,-2.23771588712439,\ +-1.69897,-0.144435,-3.95468737373737,3.1480741157991,-0.67796182231819,-0.0392581383398124,-2.23884844075883,\ +-1.69897,-0.144435,-3.92715656565657,3.14796737578038,-0.678201886390091,-0.0398851597353788,-2.23946097718426,\ +-1.69897,-0.144435,-3.89962575757576,3.14790049512669,-0.67835230459543,-0.0402780358216757,-2.23984477734681,\ +-1.69897,-0.144435,-3.87209494949495,3.14785465991926,-0.678455390454543,-0.040547284938095,-2.24010780647545,\ +-1.69897,-0.144435,-3.84456414141414,3.14782128698976,-0.678530447976948,-0.040743327069989,-2.24029931979151,\ +-1.69897,-0.144435,-3.81703333333333,3.14779590199779,-0.67858754019605,-0.0408924457723996,-2.24044499366737,\ +-1.69897,-0.144435,-3.78950252525252,3.14777594356622,-0.678632427787495,-0.0410096873071681,-2.2405595267776,\ +-1.69897,-0.144435,-3.76197171717172,3.1477598396647,-0.678668646332518,-0.0411042862301277,-2.24065194034839,\ +-1.69897,-0.144435,-3.73444090909091,3.14774657199788,-0.678698486032366,-0.0411822242993061,-2.24072807795172,\ +-1.69897,-0.144435,-3.7069101010101,3.14773545192704,-0.678723495672794,-0.0412475467755906,-2.24079189139797,\ +-1.69897,-0.144435,-3.67937929292929,3.14772599705703,-0.678744760186504,-0.0413030873858864,-2.24084614895144,\ +-1.69897,-0.144435,-3.65184848484848,3.14771785940367,-0.678763062208785,-0.0413508902889207,-2.24089284754826,\ +-1.69897,-0.144435,-3.62431767676768,3.14771078162824,-0.678778980508315,-0.0413924671659065,-2.24093346394793,\ +-1.69897,-0.144435,-3.59678686868687,3.14770456932705,-0.678792952309476,-0.0414289599996467,-2.24096911375206,\ +-1.69897,-0.144435,-3.56925606060606,3.14769907290068,-0.678805314069508,-0.0414612475800662,-2.24100065544942,\ +-1.69897,-0.144435,-3.54172525252525,3.14769417534953,-0.678816328926773,-0.0414900171961091,-2.24102876045173,\ +-1.69897,-0.144435,-3.51419444444444,3.14768978385272,-0.678826205640494,-0.0415158141042894,-2.24105396141941,\ +-1.69897,-0.144435,-3.48666363636364,3.147685823829,-0.678835111947891,-0.0415390764160956,-2.24107668634303,\ +-1.69897,-0.144435,-3.45913282828283,3.1476822346664,-0.678843184168597,-0.0415601601836527,-2.24109728304947,\ +-1.69897,-0.144435,-3.43160202020202,3.14767896659788,-0.678850534231346,-0.0415793577527306,-2.24111603713094,\ +-1.69897,-0.144435,-3.40407121212121,3.14767597837969,-0.678857254895586,-0.0415969114009582,-2.24113318526817,\ +-1.69897,-0.144435,-3.3765404040404,3.1476732355416,-0.678863423686711,-0.0416130236162931,-2.2411489252714,\ +-1.69897,-0.144435,-3.3490095959596,3.14767070905123,-0.67886910590013,-0.0416278649432789,-2.24116342374536,\ +-1.69897,-0.144435,-3.32147878787879,3.1476683742824,-0.67887435692143,-0.0416415800430716,-2.24117682200938,\ +-1.69897,-0.144435,-3.29394797979798,3.14766621020981,-0.678879224037649,-0.0416542924243135,-2.24118924071888,\ +-1.69897,-0.144435,-3.26641717171717,3.14766419877409,-0.678883747865313,-0.0416661081729666,-2.24120078350913,\ +-1.69897,-0.144435,-3.23888636363636,3.14766232437661,-0.678887963486567,-0.0416771189198121,-2.24121153989409,\ +-1.69897,-0.144435,-3.21135555555555,3.14766057347419,-0.678891901360775,-0.0416874042214072,-2.24122158759249,\ +-1.69897,-0.144435,-3.18382474747475,3.14765893425129,-0.678895588061658,-0.0416970334854394,-2.24123099440861,\ +-1.69897,-0.144435,-3.15629393939394,3.14765739635314,-0.678899046877754,-0.0417060675390486,-2.24123981976439,\ +-1.69897,-0.144435,-3.12876313131313,3.14765595066662,-0.678902298304862,-0.0417145599150418,-2.24124811595599,\ +-1.69897,-0.144435,-3.10123232323232,3.14765458913972,-0.678905360452475,-0.041722557913478,-2.24125592919077,\ +-1.69897,-0.144435,-3.07370151515151,3.14765330463133,-0.678908249381276,-0.0417301034830994,-2.2412633004484,\ +-1.69897,-0.144435,-3.04617070707071,3.14765209078606,-0.678910979384882,-0.0417372339572969,-2.24127026619982,\ +-1.69897,-0.144435,-3.0186398989899,3.14765094192907,-0.678913563226374,-0.0417439826718629,-2.24127685901073,\ +-1.69897,-0.144435,-2.99110909090909,3.14764985297727,-0.67891601233782,-0.0417503794861144,-2.24128310805065,\ +-1.69897,-0.144435,-2.96357828282828,3.14764881936426,-0.678918336989363,-0.0417564512245623,-2.24128903952443,\ +-1.69897,-0.144435,-2.93604747474747,3.1476478369762,-0.678920546433193,-0.0417622220529189,-2.24129467703951,\ +-1.69897,-0.144435,-2.90851666666667,3.1476469020972,-0.67892264902661,-0.0417677137995518,-2.24130004192,\ +-1.69897,-0.144435,-2.88098585858586,3.14764601136225,-0.678924652337669,-0.0417729462314006,-2.24130515347619,\ +-1.69897,-0.144435,-2.85345505050505,3.14764516171681,-0.678926563236196,-0.0417779372917112,-2.24131002923684,\ +-1.69897,-0.144435,-2.82592424242424,3.14764435038179,-0.678928387972499,-0.0417827033056117,-2.24131468514992,\ +-1.69897,-0.144435,-2.79839343434343,3.14764357482321,-0.678930132245664,-0.0417872591584918,-2.24131913575696,\ +-1.69897,-0.144435,-2.77086262626263,3.14764283272574,-0.678931801263002,-0.0417916184512952,-2.24132339434471,\ +-1.69897,-0.144435,-2.74333181818182,3.14764212196959,-0.678933399791985,-0.0417957936361368,-2.24132747307762,\ +-1.69897,-0.144435,-2.71580101010101,3.14764144061037,-0.678934932205717,-0.0417997961350901,-2.24133138311389,\ +-1.69897,-0.144435,-2.6882702020202,3.14764078686121,-0.678936402522887,-0.0418036364445375,-2.24133513470744,\ +-1.69897,-0.144435,-2.66073939393939,3.14764015907725,-0.678937814442958,-0.0418073242270841,-2.24133873729765,\ +-1.69897,-0.144435,-2.63320858585858,3.14763955574168,-0.678939171377258,-0.0418108683927345,-2.24134219958868,\ +-1.69897,-0.144435,-2.60567777777778,3.14763897545363,-0.678940476476477,-0.041814277170767,-2.24134552961972,\ +-1.69897,-0.144435,-2.57814696969697,3.14763841691718,-0.678941732655115,-0.0418175581735237,-2.24134873482725,\ +-1.69897,-0.144435,-2.55061616161616,3.14763787893186,-0.678942942613184,-0.0418207184531611,-2.24135182210052,\ +-1.69897,-0.144435,-2.52308535353535,3.14763736038389,-0.678944108855607,-0.0418237645522486,-2.24135479783095,\ +-1.69897,-0.144435,-2.49555454545454,3.14763686023856,-0.6789452337095,-0.0418267025489793,-2.24135766795632,\ +-1.69897,-0.144435,-2.46802373737374,3.14763637753331,-0.678946319339696,-0.0418295380976536,-2.24136043800031,\ +-1.69897,-0.144435,-2.44049292929293,3.14763591137157,-0.678947367762637,-0.0418322764649969,-2.24136311310799,\ +-1.69897,-0.144435,-2.41296212121212,3.14763546091721,-0.678948380858872,-0.0418349225628099,-2.24136569807766,\ +-1.69897,-0.144435,-2.38543131313131,3.14763502538944,-0.678949360384324,-0.04183748097737,-2.24136819738968,\ +-1.69897,-0.144435,-2.3579005050505,3.14763460405849,-0.678950307980445,-0.0418399559959592,-2.24137061523228,\ +-1.69897,-0.144435,-2.3303696969697,3.14763419624128,-0.678951225183378,-0.0418423516308397,-2.24137295552503,\ +-1.69897,-0.144435,-2.30283888888889,3.14763380129794,-0.678952113432295,-0.0418446716409564,-2.24137522194004,\ +-1.69897,-0.144435,-2.27530808080808,3.14763341862835,-0.67895297407691,-0.0418469195516201,-2.24137741792119,\ +-1.69897,-0.144435,-2.24777727272727,3.14763304766908,-0.67895380838433,-0.0418490986723805,-2.24137954670156,\ +-1.69897,-0.144435,-2.22024646464646,3.14763268789074,-0.678954617545281,-0.041851212113284,-2.24138161131936,\ +-1.69897,-0.144435,-2.19271565656565,3.14763233879531,-0.678955402679777,-0.0418532627996831,-2.24138361463237,\ +-1.69897,-0.144435,-2.16518484848485,3.14763199991394,-0.67895616484229,-0.0418552534857467,-2.24138555933112,\ +-1.69897,-0.144435,-2.13765404040404,3.14763167080483,-0.678956905026476,-0.0418571867668014,-2.241387447951,\ +-1.69897,-0.144435,-2.11012323232323,3.14763135105127,-0.678957624169503,-0.041859065090619,-2.24138928288321,\ +-1.69897,-0.144435,-2.08259242424242,3.14763104025994,-0.678958323155999,-0.0418608907677563,-2.24139106638494,\ +-1.69897,-0.144435,-2.05506161616161,3.14763073805925,-0.678959002821686,-0.0418626659810376,-2.2413928005886,\ +-1.69897,-0.144435,-2.02753080808081,3.14763044409787,-0.678959663956723,-0.0418643927942597,-2.2413944875103,\ +-1.69897,-0.144435,-2,3.14763015804338,-0.678960307308757,-0.0418660731601975,-2.2413961290577,\ +-1.69897,-0.142745,-4.72555,3.1475457044359,-0.679150248037075,-0.0423621778025992,-2.24188077306897,\ +-1.69897,-0.142745,-4.69801919191919,3.14754301307236,-0.679156301059143,-0.0423779876416771,-2.2418962176812,\ +-1.69897,-0.142745,-4.67048838383838,3.14754008335348,-0.679162890155274,-0.0423951976482348,-2.2419130301153,\ +-1.69897,-0.142745,-4.64295757575758,3.14753688214793,-0.679170089839593,-0.0424140024451091,-2.2419314004981,\ +-1.69897,-0.142745,-4.61542676767677,3.14753336988576,-0.679177989107091,-0.0424346344775911,-2.2419515559051,\ +-1.69897,-0.142745,-4.58789595959596,3.14752949891438,-0.679186695130965,-0.0424573736704933,-2.24197376979451,\ +-1.69897,-0.142745,-4.56036515151515,3.14752521132387,-0.679196338153774,-0.0424825602032881,-2.24199837448723,\ +-1.69897,-0.142745,-4.53283434343434,3.14752043603008,-0.679207078047641,-0.042510611644669,-2.24202577790561,\ +-1.69897,-0.142745,-4.50530353535354,3.14751508480234,-0.679219113248087,-0.0425420462867609,-2.24205648636857,\ +-1.69897,-0.142745,-4.47777272727273,3.14750904676174,-0.679232693127753,-0.0425775154639386,-2.24209113616386,\ +-1.69897,-0.142745,-4.45024191919192,3.14750218061576,-0.679248135461218,-0.0426178491690345,-2.24213053811046,\ +-1.69897,-0.142745,-4.42271111111111,3.14749430346253,-0.679265851604643,-0.0426641218198547,-2.24217574180579,\ +-1.69897,-0.142745,-4.3951803030303,3.14748517425665,-0.679286383682127,-0.0427177493859324,-2.24222813050872,\ +-1.69897,-0.142745,-4.36764949494949,3.1474744687101,-0.679310461034998,-0.0427806368279352,-2.242289565173,\ +-1.69897,-0.142745,-4.34011868686869,3.14746173996291,-0.67933908867548,-0.0428554091291151,-2.2423626101415,\ +-1.69897,-0.142745,-4.31258787878788,3.14744635462894,-0.67937369112326,-0.0429457869808475,-2.24245090015302,\ +-1.69897,-0.142745,-4.28505707070707,3.14742738413282,-0.679416356794435,-0.0430572251001409,-2.24255976391385,\ +-1.69897,-0.142745,-4.25752626262626,3.14740341006575,-0.67947027576719,-0.0431980556262438,-2.24269734108054,\ +-1.69897,-0.142745,-4.22999545454545,3.14737215212875,-0.679540576557148,-0.0433816736873715,-2.24287671733723,\ +-1.69897,-0.142745,-4.20246464646465,3.14732969621476,-0.679636062202656,-0.0436310718677379,-2.24312035411102,\ +-1.69897,-0.142745,-4.17493383838384,3.14726871185842,-0.679773219316536,-0.0439893114171823,-2.24347031788357,\ +-1.69897,-0.142745,-4.14740303030303,3.14717368449211,-0.679986941000034,-0.0445475293428688,-2.24401564028441,\ +-1.69897,-0.142745,-4.11987222222222,3.14700507187188,-0.680366159897221,-0.0455380080940433,-2.24498323775078,\ +-1.69897,-0.142745,-4.09234141414141,3.14662340081585,-0.681224558733275,-0.047780053027589,-2.24717348867196,\ +-1.69897,-0.142745,-4.06481060606061,3.14493190724505,-0.685028819207011,-0.0577163699968016,-2.25688026442358,\ +-1.69897,-0.142745,-4.0372797979798,3.15134887045144,-0.670596722089588,-0.0200212929958612,-2.22005599034677,\ +-1.69897,-0.142745,-4.00974898989899,3.14871011025746,-0.676531436402929,-0.0355221250093762,-2.23519873395942,\ +-1.69897,-0.142745,-3.98221818181818,3.14825465428629,-0.677555781501541,-0.0381976036354944,-2.23781240571853,\ +-1.69897,-0.142745,-3.95468737373737,3.14806576374108,-0.67798060654812,-0.0393072007170885,-2.23889636973448,\ +-1.69897,-0.142745,-3.92715656565657,3.14796239787771,-0.678213081962263,-0.0399144013592167,-2.23948954329041,\ +-1.69897,-0.142745,-3.89962575757576,3.14789719399333,-0.678359729022786,-0.0402974276230611,-2.23986372117358,\ +-1.69897,-0.142745,-3.87209494949495,3.14785231165426,-0.678460671829473,-0.0405610793182963,-2.2401212821884,\ +-1.69897,-0.142745,-3.84456414141414,3.1478195315196,-0.678534396124207,-0.0407536392036842,-2.24030939370216,\ +-1.69897,-0.142745,-3.81703333333333,3.14779454021447,-0.678590602920341,-0.0409004452770465,-2.24045280837356,\ +-1.69897,-0.142745,-3.78950252525252,3.14777485648689,-0.678634872687666,-0.0410160731220238,-2.24056576507225,\ +-1.69897,-0.142745,-3.76197171717172,3.1477589518353,-0.678670643108819,-0.0411095015938997,-2.2406570352308,\ +-1.69897,-0.142745,-3.73444090909091,3.14774583326572,-0.678700147480947,-0.0411865638233307,-2.24073231722737,\ +-1.69897,-0.142745,-3.7069101010101,3.14773482766064,-0.678724899681667,-0.041251213894938,-2.24079547380232,\ +-1.69897,-0.142745,-3.67937929292929,3.14772546257534,-0.678745962264716,-0.0413062270841822,-2.24084921611882,\ +-1.69897,-0.142745,-3.65184848484848,3.14771739664302,-0.678764102982493,-0.0413536086772992,-2.2408955031385,\ +-1.69897,-0.142745,-3.62431767676768,3.14771037706457,-0.678779890393884,-0.0413948436886187,-2.24093578557004,\ +-1.69897,-0.142745,-3.59678686868687,3.14770421263451,-0.678793754530305,-0.0414310553137006,-2.24097116066177,\ +-1.69897,-0.142745,-3.56925606060606,3.14769875605921,-0.678806026663102,-0.0414631087974683,-2.24100247367039,\ +-1.69897,-0.142745,-3.54172525252525,3.14769389203546,-0.678816966115427,-0.0414916814639634,-2.24103038627294,\ +-1.69897,-0.142745,-3.51419444444444,3.14768952901284,-0.678826778789158,-0.0415173111066164,-2.24105542383913,\ +-1.69897,-0.142745,-3.48666363636364,3.14768559337682,-0.678835630247295,-0.0415404301580872,-2.2410780088119,\ +-1.69897,-0.142745,-3.45913282828283,3.14768202526157,-0.678843655131368,-0.04156139028748,-2.24109848473637,\ +-1.69897,-0.142745,-3.43160202020202,3.14767877548336,-0.678850964058231,-0.041580480414074,-2.24111713385742,\ +-1.69897,-0.142745,-3.40407121212121,3.14767580325975,-0.678857648749789,-0.0415979401055503,-2.24113419020842,\ +-1.69897,-0.142745,-3.3765404040404,3.14767307448925,-0.678863785902164,-0.0416139696838914,-2.24114984948367,\ +-1.69897,-0.142745,-3.3490095959596,3.14767056043701,-0.678869440141535,-0.0416287379456806,-2.24116427658033,\ +-1.69897,-0.142745,-3.32147878787879,3.14766823671915,-0.678874666308611,-0.0416423881289295,-2.24117761142746,\ +-1.69897,-0.142745,-3.29394797979798,3.14766608250922,-0.678879511243187,-0.0416550425741223,-2.2411899735393,\ +-1.69897,-0.142745,-3.26641717171717,3.14766407991229,-0.678884015191909,-0.041666806401129,-2.24120146560735,\ +-1.69897,-0.142745,-3.23888636363636,3.14766221346673,-0.678888212928883,-0.0416777704361666,-2.24121217635961,\ +-1.69897,-0.142745,-3.21135555555555,3.14766046974413,-0.678892134655269,-0.0416880135613997,-2.24122218285597,\ +-1.69897,-0.142745,-3.18382474747475,3.14765883702579,-0.678895806727056,-0.0416976046158146,-2.24123155234516,\ +-1.69897,-0.142745,-3.15629393939394,3.14765730503902,-0.678899252248135,-0.0417066039442732,-2.24124034377799,\ +-1.69897,-0.142745,-3.12876313131313,3.14765586474072,-0.678902491556883,-0.0417150646684293,-2.24124860904896,\ +-1.69897,-0.142745,-3.10123232323232,3.14765450813878,-0.678905542627939,-0.0417230337360917,-2.24125639402129,\ +-1.69897,-0.142745,-3.07370151515151,3.14765322814379,-0.678908421405898,-0.0417305527928097,-2.2412637393785,\ +-1.69897,-0.142745,-3.04617070707071,3.14765201844492,-0.678911142084023,-0.0417376589098629,-2.24127068133545,\ +-1.69897,-0.142745,-3.0186398989899,3.14765087340607,-0.678913717338286,-0.0417443851955128,-2.24127725223558,\ +-1.69897,-0.142745,-2.99110909090909,3.14764978797793,-0.678916158524834,-0.0417507613107882,-2.24128348105471,\ +-1.69897,-0.142745,-2.96357828282828,3.14764875762361,-0.67891847584741,-0.0417568139067625,-2.24128939382822,\ +-1.69897,-0.142745,-2.93604747474747,3.1476477782552,-0.678920678499913,-0.041762566996912,-2.24129501401487,\ +-1.69897,-0.142745,-2.90851666666667,3.1476468461796,-0.678922774788318,-0.0417680422755356,-2.24130036280778,\ +-1.69897,-0.142745,-2.88098585858586,3.14764595805198,-0.678924772235331,-0.0417732593911302,-2.24130545940155,\ +-1.69897,-0.142745,-2.85345505050505,3.14764511083567,-0.678926677670597,-0.0417782361819904,-2.24131032122238,\ +-1.69897,-0.142745,-2.82592424242424,3.14764430176748,-0.678928497308712,-0.041782988879979,-2.24131496412716,\ +-1.69897,-0.142745,-2.79839343434343,3.14764352832754,-0.678930236816949,-0.0417875322873822,-2.24131940257624,\ +-1.69897,-0.142745,-2.77086262626263,3.14764278821316,-0.678931901374192,-0.0417918799308994,-2.24132364978381,\ +-1.69897,-0.142745,-2.74333181818182,3.14764207931589,-0.678933495722454,-0.0417960441961509,-2.24132771784939,\ +-1.69897,-0.142745,-2.71580101010101,3.14764139970149,-0.678935024211987,-0.0418000364455166,-2.24133161787285,\ +-1.69897,-0.142745,-2.6882702020202,3.14764074759225,-0.67893649084091,-0.0418038671216652,-2.24133536005564,\ +-1.69897,-0.142745,-2.66073939393939,3.14764012135153,-0.678937899290147,-0.0418075458387666,-2.24133895378982,\ +-1.69897,-0.142745,-2.63320858585858,3.14763951946999,-0.678939252954264,-0.0418110814630558,-2.24134240773681,\ +-1.69897,-0.142745,-2.60567777777778,3.14763894055349,-0.67894055496878,-0.0418144821841783,-2.24134572989707,\ +-1.69897,-0.142745,-2.57814696969697,3.14763838331225,-0.67894180823443,-0.0418177555785209,-2.24134892767195,\ +-1.69897,-0.142745,-2.55061616161616,3.14763784655137,-0.678943015438711,-0.0418209086655594,-2.24135200791878,\ +-1.69897,-0.142745,-2.52308535353535,3.14763732916208,-0.67894417907515,-0.0418239479581059,-2.24135497699991,\ +-1.69897,-0.142745,-2.49555454545454,3.14763683011434,-0.678945301460479,-0.0418268795072117,-2.2413578408266,\ +-1.69897,-0.142745,-2.46802373737374,3.14763634844982,-0.678946384750033,-0.0418297089423782,-2.24136060489831,\ +-1.69897,-0.142745,-2.44049292929293,3.1476358832758,-0.678947430951562,-0.0418324415076389,-2.24136327433794,\ +-1.69897,-0.142745,-2.41296212121212,3.14763543375966,-0.678948441937656,-0.0418350820939956,-2.24136585392348,\ +-1.69897,-0.142745,-2.38543131313131,3.14763499912391,-0.678949419456933,-0.0418376352686346,-2.24136834811662,\ +-1.69897,-0.142745,-2.3579005050505,3.14763457864172,-0.678950365144116,-0.0418401053012896,-2.24137076108847,\ +-1.69897,-0.142745,-2.3303696969697,3.1476341716328,-0.678951280529172,-0.0418424961880691,-2.24137309674281,\ +-1.69897,-0.142745,-2.30283888888889,3.1476337774598,-0.67895216704557,-0.0418448116730293,-2.2413753587372,\ +-1.69897,-0.142745,-2.27530808080808,3.14763339552493,-0.678953026037759,-0.0418470552677382,-2.24137755050209,\ +-1.69897,-0.142745,-2.24777727272727,3.14763302526693,-0.678953858767988,-0.0418492302690457,-2.24137967525818,\ +-1.69897,-0.142745,-2.22024646464646,3.1476326661584,-0.678954666422483,-0.0418513397752482,-2.24138173603218,\ +-1.69897,-0.142745,-2.19271565656565,3.14763231770319,-0.678955450117089,-0.0418533867008137,-2.24138373567123,\ +-1.69897,-0.142745,-2.16518484848485,3.14763197943416,-0.678956210902417,-0.0418553737898159,-2.24138567685602,\ +-1.69897,-0.142745,-2.13765404040404,3.14763165091111,-0.678956949768532,-0.0418573036282085,-2.24138756211275,\ +-1.69897,-0.142745,-2.11012323232323,3.14763133171881,-0.678957667649265,-0.0418591786550518,-2.24138939382415,\ +-1.69897,-0.142745,-2.08259242424242,3.14763102146531,-0.67895836542614,-0.0418610011727962,-2.24139117423948,\ +-1.69897,-0.142745,-2.05506161616161,3.14763071978032,-0.678959043931995,-0.0418627733567164,-2.24139290548377,\ +-1.69897,-0.142745,-2.02753080808081,3.1476304263137,-0.678959703954288,-0.0418644972635707,-2.24139458956624,\ +-1.69897,-0.142745,-2,3.14763014073414,-0.67896034623815,-0.0418661748395642,-2.24139622838815,\ +-1.69897,-0.118257,-4.72555,3.14754332169894,-0.679155606941266,-0.0423761746808434,-2.241894446602,\ +-1.69897,-0.118257,-4.69801919191919,3.14754041984864,-0.679162133359468,-0.0423932209794267,-2.24191109910999,\ +-1.69897,-0.118257,-4.67048838383838,3.14753725046417,-0.679169261476462,-0.0424118388501903,-2.2419292868849,\ +-1.69897,-0.118257,-4.64295757575758,3.14753377475993,-0.67917707852318,-0.0424322561308906,-2.24194923250115,\ +-1.69897,-0.118257,-4.61542676767677,3.14752994607238,-0.679185689448435,-0.0424547469364799,-2.24197120374131,\ +-1.69897,-0.118257,-4.58789595959596,3.14752570775291,-0.67919522165802,-0.04247964403712,-2.24199552568811,\ +-1.69897,-0.118257,-4.56036515151515,3.14752099034612,-0.6792058313609,-0.0425073554337188,-2.24202259691716,\ +-1.69897,-0.118257,-4.53283434343434,3.1475157077539,-0.679217712196351,-0.0425383868911358,-2.24205291150951,\ +-1.69897,-0.118257,-4.50530353535354,3.14750975193297,-0.679231107159544,-0.0425733730864793,-2.24208708948045,\ +-1.69897,-0.118257,-4.47777272727273,3.14750298542715,-0.679246325396904,-0.0426131214767838,-2.24212591963375,\ +-1.69897,-0.118257,-4.45024191919192,3.1474952306274,-0.67926376636071,-0.0426586753882004,-2.24217042119344,\ +-1.69897,-0.118257,-4.42271111111111,3.14748625395539,-0.679283955381321,-0.0427114069268219,-2.24222193456827,\ +-1.69897,-0.118257,-4.3951803030303,3.14747574193116,-0.679307597492028,-0.0427731575633582,-2.24228225868869,\ +-1.69897,-0.118257,-4.36764949494949,3.1474632638127,-0.679335661454942,-0.0428464575996824,-2.24235386540347,\ +-1.69897,-0.118257,-4.34011868686869,3.14744821110974,-0.679369515797558,-0.0429348814816228,-2.24244024658431,\ +-1.69897,-0.118257,-4.31258787878788,3.14742969535097,-0.679411158739869,-0.0430436483437258,-2.24254650079731,\ +-1.69897,-0.118257,-4.28505707070707,3.14740636612001,-0.67946362744136,-0.0431806909181189,-2.24268037751865,\ +-1.69897,-0.118257,-4.25752626262626,3.14737606597548,-0.679531774104304,-0.0433586826324267,-2.24285425740411,\ +-1.69897,-0.118257,-4.22999545454545,3.14733512170208,-0.679623859988382,-0.0435992010035822,-2.24308921950327,\ +-1.69897,-0.118257,-4.20246464646465,3.14727672948557,-0.679755187239698,-0.0439422135824423,-2.24342430806709,\ +-1.69897,-0.118257,-4.17493383838384,3.14718671670639,-0.679957630845674,-0.0444709743892506,-2.24394085384496,\ +-1.69897,-0.118257,-4.14740303030303,3.14702986209129,-0.68031040535373,-0.0453923832556747,-2.24484097702638,\ +-1.69897,-0.118257,-4.11987222222222,3.14668774319584,-0.68107984924271,-0.0474020874869464,-2.24680425460301,\ +-1.69897,-0.118257,-4.09234141414141,3.14535870482933,-0.68406892836956,-0.0552092389308251,-2.25443105118766,\ +-1.69897,-0.118257,-4.06481060606061,3.15269655268567,-0.667565711896426,-0.0121046221411546,-2.21232220438521,\ +-1.69897,-0.118257,-4.0372797979798,3.14880323047296,-0.67632200400471,-0.0349751102330027,-2.23466435590128,\ +-1.69897,-0.118257,-4.00974898989899,3.14828558205057,-0.677486223287893,-0.0380159251033936,-2.23763492418534,\ +-1.69897,-0.118257,-3.98221818181818,3.14808102490158,-0.677946283373235,-0.0392175522959495,-2.23880879230281,\ +-1.69897,-0.118257,-3.95468737373737,3.14797146274312,-0.678192694589951,-0.0398611517474025,-2.23943752381051,\ +-1.69897,-0.118257,-3.92715656565657,3.14790319264748,-0.678346237725355,-0.0402621898131025,-2.23982929740064,\ +-1.69897,-0.118257,-3.89962575757576,3.14785657259613,-0.678451088740856,-0.0405360493271345,-2.24009683042101,\ +-1.69897,-0.118257,-3.87209494949495,3.14782271346107,-0.678527239765853,-0.040734947569537,-2.24029113386789,\ +-1.69897,-0.118257,-3.84456414141414,3.14779700657949,-0.678585055932099,-0.0408859571436044,-2.24043865493393,\ +-1.69897,-0.118257,-3.81703333333333,3.14777682408354,-0.678630447456466,-0.0410045148966636,-2.24055447385618,\ +-1.69897,-0.118257,-3.78950252525252,3.14776055797379,-0.678667030816537,-0.0411000666770889,-2.24064781827224,\ +-1.69897,-0.118257,-3.76197171717172,3.14774716911722,-0.678697143078684,-0.0411787166495121,-2.24072465133298,\ +-1.69897,-0.118257,-3.73444090909091,3.14773595612644,-0.678722361701055,-0.0412445849640326,-2.24078899800792,\ +-1.69897,-0.118257,-3.7069101010101,3.14772642845154,-0.678743789956934,-0.0413005532511639,-2.24084367335836,\ +-1.69897,-0.118257,-3.67937929292929,3.14771823269515,-0.678762222656078,-0.0413486974680367,-2.24089070538425,\ +-1.69897,-0.118257,-3.65184848484848,3.14771110781098,-0.678778246905705,-0.0413905510752216,-2.24093159212131,\ +-1.69897,-0.118257,-3.62431767676768,3.14770485678689,-0.678792305796785,-0.0414272713784092,-2.24096746414007,\ +-1.69897,-0.118257,-3.59678686868687,3.14769932814505,-0.678804740011125,-0.0414597482016489,-2.2409991907085,\ +-1.69897,-0.118257,-3.56925606060606,3.14769440350545,-0.678815815791797,-0.0414886769430426,-2.24102745116017,\ +-1.69897,-0.118257,-3.54172525252525,3.14768998901426,-0.678825744221089,-0.0415146089267,-2.24105278408292,\ +-1.69897,-0.118257,-3.51419444444444,3.14768600930496,-0.678834694802424,-0.0415379868772455,-2.24107562197388,\ +-1.69897,-0.118257,-3.48666363636364,3.1476824031599,-0.678842805217606,-0.0415591704046475,-2.24109631613558,\ +-1.69897,-0.118257,-3.45913282828283,3.14767912033887,-0.678850188459554,-0.0415784546341993,-2.24111515487556,\ +-1.69897,-0.118257,-3.43160202020202,3.14767611922413,-0.678856938128833,-0.0415960840404583,-2.24113237702072,\ +-1.69897,-0.118257,-3.40407121212121,3.14767336504669,-0.678863132422757,-0.041612262866338,-2.24114818209571,\ +-1.69897,-0.118257,-3.3765404040404,3.14767082853321,-0.678868837178686,-0.0416271630719232,-2.2411627380881,\ +-1.69897,-0.118257,-3.3490095959596,3.1476684848614,-0.678874108223253,-0.0416409304703278,-2.24117618744257,\ +-1.69897,-0.118257,-3.32147878787879,3.14766631284509,-0.678878993205363,-0.041653689515344,-2.24118865173785,\ +-1.69897,-0.118257,-3.29394797979798,3.14766429429186,-0.678883533040689,-0.0416655470742815,-2.2412002353725,\ +-1.69897,-0.118257,-3.26641717171717,3.14766241349237,-0.67888776306042,-0.0416765954283878,-2.24121102849596,\ +-1.69897,-0.118257,-3.23888636363636,3.14766065681063,-0.678891713932591,-0.0416869146792584,-2.24122110935937,\ +-1.69897,-0.118257,-3.21135555555555,3.14765901235294,-0.678895412406842,-0.0416965746940517,-2.24123054621587,\ +-1.69897,-0.118257,-3.18382474747475,3.14765746969815,-0.678898881920844,-0.0417056366894395,-2.24123939886795,\ +-1.69897,-0.118257,-3.15629393939394,3.14765601967669,-0.678902143097506,-0.0417141545302165,-2.24124771993606,\ +-1.69897,-0.118257,-3.12876313131313,3.14765465418808,-0.678905214155193,-0.0417221758007948,-2.24125555590537,\ +-1.69897,-0.118257,-3.10123232323232,3.14765336604959,-0.678908111248262,-0.0417297426946073,-2.24126294799457,\ +-1.69897,-0.118257,-3.07370151515151,3.14765214886986,-0.678910848751309,-0.0417368927565296,-2.24126993288121,\ +-1.69897,-0.118257,-3.04617070707071,3.14765099694273,-0.678913439497682,-0.0417436595059003,-2.2412765433103,\ +-1.69897,-0.118257,-3.0186398989899,3.14764990515794,-0.678915894980679,-0.0417500729619547,-2.24128280860758,\ +-1.69897,-0.118257,-2.99110909090909,3.14764886892526,-0.678918225523989,-0.0417561600890559,-2.24128875511452,\ +-1.69897,-0.118257,-2.96357828282828,3.14764788410998,-0.678920440426786,-0.0417619451756479,-2.24129440655845,\ +-1.69897,-0.118257,-2.93604747474747,3.14764694697779,-0.678922548087749,-0.0417674501581636,-2.24129978436906,\ +-1.69897,-0.118257,-2.90851666666667,3.14764605414743,-0.678924556111477,-0.0417726948989979,-2.24130490794989,\ +-1.69897,-0.118257,-2.88098585858586,3.14764520254998,-0.678926471400176,-0.0417776974259652,-2.24130979491229,\ +-1.69897,-0.118257,-2.85345505050505,3.14764438939356,-0.678928300232924,-0.0417824741393328,-2.24131446127767,\ +-1.69897,-0.118257,-2.82592424242424,3.14764361213278,-0.678930048334434,-0.0417870399914342,-2.24131892165294,\ +-1.69897,-0.118257,-2.79839343434343,3.14764286844213,-0.678931720934912,-0.0417914086430114,-2.24132318938325,\ +-1.69897,-0.118257,-2.77086262626263,3.14764215619271,-0.678933322822331,-0.0417955925997277,-2.2413272766854,\ +-1.69897,-0.118257,-2.74333181818182,3.14764147343194,-0.678934858388202,-0.0417996033317243,-2.24133119476452,\ +-1.69897,-0.118257,-2.71580101010101,3.14764081836563,-0.678936331667767,-0.0418034513786278,-2.24133495391677,\ +-1.69897,-0.118257,-2.6882702020202,3.14764018934222,-0.678937746375421,-0.0418071464420358,-2.24133856361965,\ +-1.69897,-0.118257,-2.66073939393939,3.14763958483893,-0.678939105935975,-0.0418106974671844,-2.24134203261172,\ +-1.69897,-0.118257,-2.63320858585858,3.14763900344946,-0.678940413512339,-0.041814112715249,-2.24134536896333,\ +-1.69897,-0.118257,-2.60567777777778,3.14763844387298,-0.678941672030086,-0.0418173998275076,-2.24134858013923,\ +-1.69897,-0.118257,-2.57814696969697,3.14763790490451,-0.6789428841993,-0.0418205658824136,-2.24135167305435,\ +-1.69897,-0.118257,-2.55061616161616,3.14763738542622,-0.678944052534064,-0.0418236174464794,-2.24135465412351,\ +-1.69897,-0.118257,-2.52308535353535,3.14763688439966,-0.678945179369866,-0.0418265606197347,-2.24135752930582,\ +-1.69897,-0.118257,-2.49555454545454,3.1476364008589,-0.67894626687917,-0.0418294010764278,-2.24136030414444,\ +-1.69897,-0.118257,-2.46802373737374,3.14763593390426,-0.678947317085401,-0.0418321441015394,-2.24136298380229,\ +-1.69897,-0.118257,-2.44049292929293,3.14763548269674,-0.678948331875523,-0.0418347946235974,-2.241365573094,\ +-1.69897,-0.118257,-2.41296212121212,3.14763504645297,-0.678949313011329,-0.041837357244233,-2.24136807651493,\ +-1.69897,-0.118257,-2.38543131313131,3.14763462444073,-0.678950262139679,-0.0418398362648411,-2.24137049826709,\ +-1.69897,-0.118257,-2.3579005050505,3.14763421597477,-0.678951180801691,-0.0418422357106723,-2.24137284228275,\ +-1.69897,-0.118257,-2.3303696969697,3.14763382041317,-0.678952070441113,-0.0418445593526447,-2.24137511224573,\ +-1.69897,-0.118257,-2.30283888888889,3.14763343715391,-0.6789529324119,-0.0418468107271172,-2.24137731161066,\ +-1.69897,-0.118257,-2.27530808080808,3.14763306563187,-0.678953767985057,-0.0418489931538493,-2.24137944362064,\ +-1.69897,-0.118257,-2.24777727272727,3.147632705316,-0.678954578354934,-0.0418511097523331,-2.24138151132308,\ +-1.69897,-0.118257,-2.22024646464646,3.14763235570682,-0.67895536464489,-0.0418531634566714,-2.2413835175843,\ +-1.69897,-0.118257,-2.19271565656565,3.14763201633408,-0.678956127912506,-0.0418551570291477,-2.24138546510279,\ +-1.69897,-0.118257,-2.16518484848485,3.14763168675471,-0.678956869154325,-0.0418570930726213,-2.24138735642126,\ +-1.69897,-0.118257,-2.13765404040404,3.14763136655083,-0.678957589310191,-0.0418589740418655,-2.24138919393779,\ +-1.69897,-0.118257,-2.11012323232323,3.14763105532796,-0.678958289267226,-0.0418608022539519,-2.24139097991592,\ +-1.69897,-0.118257,-2.08259242424242,3.1476307527135,-0.678958969863482,-0.0418625798977712,-2.24139271649396,\ +-1.69897,-0.118257,-2.05506161616161,3.14763045835517,-0.678959631891277,-0.0418643090427772,-2.24139440569358,\ +-1.69897,-0.118257,-2.02753080808081,3.14763017191964,-0.678960276100278,-0.0418659916470229,-2.24139604942758,\ +-1.69897,-0.118257,-2,3.14762989309128,-0.678960903200333,-0.0418676295645569,-2.2413976495072,\ +-1.69897,-0.0759167,-4.72555,3.14753875051697,-0.679165887776629,-0.0424030271110516,-2.24192067870784,\ +-1.69897,-0.0759167,-4.69801919191919,3.14753542163546,-0.679173374611076,-0.0424225819130099,-2.24193978176968,\ +-1.69897,-0.0759167,-4.67048838383838,3.14753176243212,-0.679181604357202,-0.0424440771199382,-2.24196078041073,\ +-1.69897,-0.0759167,-4.64295757575758,3.14752772117392,-0.679190693365338,-0.0424678166263151,-2.24198397150513,\ +-1.69897,-0.0759167,-4.61542676767677,3.14752323473003,-0.679200783620158,-0.0424941712807552,-2.24200971733445,\ +-1.69897,-0.0759167,-4.58789595959596,3.14751822524983,-0.679212050211904,-0.0425235984000389,-2.24203846465086,\ +-1.69897,-0.0759167,-4.56036515151515,3.14751259560726,-0.679224711582375,-0.0425566685305252,-2.24207077082041,\ +-1.69897,-0.0759167,-4.53283434343434,3.14750622304147,-0.679239043827293,-0.0425941028043784,-2.24210734031621,\ +-1.69897,-0.0759167,-4.50530353535354,3.14749895010215,-0.679255401060961,-0.042636826129867,-2.24214907668001,\ +-1.69897,-0.0759167,-4.47777272727273,3.14749057146493,-0.67927424506899,-0.042686044641073,-2.24219715818271,\ +-1.69897,-0.0759167,-4.45024191919192,3.14748081423884,-0.679296189597863,-0.0427433613774342,-2.24225315083153,\ +-1.69897,-0.0759167,-4.42271111111111,3.14746930768211,-0.679322068465937,-0.042810954182336,-2.242319182159,\ +-1.69897,-0.0759167,-4.3951803030303,3.1474555350252,-0.679353043915788,-0.0428918587076937,-2.24239821768971,\ +-1.69897,-0.0759167,-4.36764949494949,3.14743875372126,-0.679390785975473,-0.042990436886218,-2.24249451859031,\ +-1.69897,-0.0759167,-4.34011868686869,3.14741785702371,-0.679437783777805,-0.0431131900636204,-2.24261443601742,\ +-1.69897,-0.0759167,-4.31258787878788,3.14739111949286,-0.679497917929979,-0.0432702539662639,-2.24276787154956,\ +-1.69897,-0.0759167,-4.28505707070707,3.14735569443304,-0.679577590804402,-0.0434783508985209,-2.24297116118517,\ +-1.69897,-0.0759167,-4.25752626262626,3.14730652643118,-0.679688172298344,-0.0437671778025471,-2.24325331583031,\ +-1.69897,-0.0759167,-4.22999545454545,3.14723369369825,-0.679851977051643,-0.0441950181045124,-2.24367127249187,\ +-1.69897,-0.0759167,-4.20246464646465,3.14711469683884,-0.680119607420774,-0.044894039687455,-2.24435414581125,\ +-1.69897,-0.0759167,-4.17493383838384,3.14688528164533,-0.68063557459195,-0.0462416901424921,-2.24567066387314,\ +-1.69897,-0.0759167,-4.14740303030303,3.14625874213899,-0.682044695809027,-0.0499221623808074,-2.24926611264839,\ +-1.69897,-0.0759167,-4.11987222222222,3.1375677106362,-0.7015912954488,-0.100975766893918,-2.29914031572147,\ +-1.69897,-0.0759167,-4.09234141414141,3.1494564778219,-0.674852815405934,-0.0311377484892938,-2.23091564196236,\ +-1.69897,-0.0759167,-4.06481060606061,3.14845502179842,-0.677105144135983,-0.0370205875680433,-2.23666258017872,\ +-1.69897,-0.0759167,-4.0372797979798,3.14815767164499,-0.677773900704197,-0.0387673074056829,-2.23836894862665,\ +-1.69897,-0.0759167,-4.00974898989899,3.14801500535026,-0.678094764912816,-0.0396053700207214,-2.23918765095824,\ +-1.69897,-0.0759167,-3.98221818181818,3.14793123587771,-0.678283166984686,-0.0400974558588683,-2.23966836900459,\ +-1.69897,-0.0759167,-3.95468737373737,3.14787613191464,-0.678407098776258,-0.0404211522966298,-2.23998458765409,\ +-1.69897,-0.0759167,-3.92715656565657,3.14783712935129,-0.678494817649503,-0.0406502645077249,-2.2402084070896,\ +-1.69897,-0.0759167,-3.89962575757576,3.1478080705646,-0.678560172431549,-0.04082096413104,-2.24037516334038,\ +-1.69897,-0.0759167,-3.87209494949495,3.14778558273157,-0.678610748783597,-0.0409530640933221,-2.24050421163006,\ +-1.69897,-0.0759167,-3.84456414141414,3.14776766345236,-0.678651050211133,-0.041058327063899,-2.24060704289576,\ +-1.69897,-0.0759167,-3.81703333333333,3.14775304890546,-0.678683919117117,-0.0411441770919219,-2.24069090968191,\ +-1.69897,-0.0759167,-3.78950252525252,3.14774090206958,-0.678711238007606,-0.0412155310796463,-2.24076061530422,\ +-1.69897,-0.0759167,-3.76197171717172,3.147730646584,-0.678734303149006,-0.0412757747347498,-2.24081946725635,\ +-1.69897,-0.0759167,-3.73444090909091,3.14772187261071,-0.678754036289217,-0.0413273155630587,-2.24086981742774,\ +-1.69897,-0.0759167,-3.7069101010101,3.14771428074577,-0.678771110803847,-0.0413719123488572,-2.2409133839726,\ +-1.69897,-0.0759167,-3.67937929292929,3.14770764717028,-0.678786030073725,-0.0414108798684236,-2.24095145129424,\ +-1.69897,-0.0759167,-3.65184848484848,3.14770180121437,-0.678799177944555,-0.0414452206852442,-2.2409849987957,\ +-1.69897,-0.0759167,-3.62431767676768,3.14769661046509,-0.678810852220265,-0.041475712630957,-2.24101478633973,\ +-1.69897,-0.0759167,-3.59678686868687,3.14769197061574,-0.678821287492261,-0.0415029684329454,-2.24104141249898,\ +-1.69897,-0.0759167,-3.56925606060606,3.1476877983843,-0.678830671066293,-0.0415274773135926,-2.24106535519415,\ +-1.69897,-0.0759167,-3.54172525252525,3.14768402647025,-0.678839154304888,-0.0415496346154334,-2.2410870006349,\ +-1.69897,-0.0759167,-3.51419444444444,3.14768059989655,-0.678846860854349,-0.0415697632892517,-2.24110666431144,\ +-1.69897,-0.0759167,-3.48666363636364,3.14767747331245,-0.678853892711021,-0.041588129738458,-2.24112460647294,\ +-1.69897,-0.0759167,-3.45913282828283,3.14767460897486,-0.678860334761072,-0.0416049556765593,-2.24114104371105,\ +-1.69897,-0.0759167,-3.43160202020202,3.1476719752174,-0.678866258223952,-0.0416204271210413,-2.24115615774602,\ +-1.69897,-0.0759167,-3.40407121212121,3.14766954527473,-0.678871723296388,-0.0416347012992574,-2.24117010217306,\ +-1.69897,-0.0759167,-3.3765404040404,3.14766729636965,-0.678876781205459,-0.0416479120107964,-2.24118300770082,\ +-1.69897,-0.0759167,-3.3490095959596,3.14766520899706,-0.678881475819252,-0.0416601738343555,-2.24119498626107,\ +-1.69897,-0.0759167,-3.32147878787879,3.14766326635668,-0.67888584492249,-0.0416715854595397,-2.2412061342636,\ +-1.69897,-0.0759167,-3.29394797979798,3.14766145389993,-0.678889921235696,-0.041682232348832,-2.24121653519657,\ +-1.69897,-0.0759167,-3.26641717171717,3.14765975896492,-0.678893733236133,-0.0416921888817461,-2.24122626172126,\ +-1.69897,-0.0759167,-3.23888636363636,3.14765817048025,-0.678897305824028,-0.041701520094991,-2.24123537737193,\ +-1.69897,-0.0759167,-3.21135555555555,3.14765667872282,-0.678900660867123,-0.0417102831047442,-2.24124393794531,\ +-1.69897,-0.0759167,-3.18382474747475,3.14765527511869,-0.678903817648675,-0.0417185282767824,-2.24125199264367,\ +-1.69897,-0.0759167,-3.15629393939394,3.14765395207818,-0.678906793238305,-0.0417263001951261,-2.24125958502109,\ +-1.69897,-0.0759167,-3.12876313131313,3.14765270285854,-0.678909602800801,-0.0417336384685417,-2.2412667537713,\ +-1.69897,-0.0759167,-3.10123232323232,3.14765152144906,-0.67891225985459,-0.041740578405708,-2.24127353338733,\ +-1.69897,-0.0759167,-3.07370151515151,3.14765040247432,-0.678914776489268,-0.0417471515833413,-2.24127995471643,\ +-1.69897,-0.0759167,-3.04617070707071,3.14764934111243,-0.678917163549512,-0.0417533863265651,-2.24128604542937,\ +-1.69897,-0.0759167,-3.0186398989899,3.14764833302559,-0.678919430791304,-0.0417593081169446,-2.24129183041907,\ +-1.69897,-0.0759167,-2.99110909090909,3.14764737430079,-0.678921587015195,-0.0417649399405815,-2.2412973321406,\ +-1.69897,-0.0759167,-2.96357828282828,3.14764646139909,-0.678923640180488,-0.0417703025862958,-2.24130257090257,\ +-1.69897,-0.0759167,-2.93604747474747,3.14764559111191,-0.678925597503388,-0.0417754149020508,-2.2413075651175,\ +-1.69897,-0.0759167,-2.90851666666667,3.14764476052344,-0.678927465541766,-0.0417802940162851,-2.24131233151816,\ +-1.69897,-0.0759167,-2.88098585858586,3.14764396697791,-0.678929250268545,-0.0417849555296355,-2.24131688534478,\ +-1.69897,-0.0759167,-2.85345505050505,3.14764320805131,-0.678930957135507,-0.0417894136815627,-2.24132124050788,\ +-1.69897,-0.0759167,-2.82592424242424,3.14764248152656,-0.678932591128912,-0.0417936814956396,-2.24132540973017,\ +-1.69897,-0.0759167,-2.79839343434343,3.14764178537201,-0.678934156818151,-0.0417977709066155,-2.24132940467069,\ +-1.69897,-0.0759167,-2.77086262626263,3.14764111772231,-0.67893565839841,-0.0418016928718762,-2.24133323603371,\ +-1.69897,-0.0759167,-2.74333181818182,3.14764047686186,-0.678937099728223,-0.0418054574694838,-2.24133691366445,\ +-1.69897,-0.0759167,-2.71580101010101,3.14763986120997,-0.678938484362563,-0.0418090739846481,-2.24134044663364,\ +-1.69897,-0.0759167,-2.6882702020202,3.14763926930799,-0.678939815582128,-0.041812550986192,-2.24134384331214,\ +-1.69897,-0.0759167,-2.66073939393939,3.1476386998076,-0.678941096419282,-0.0418158963943327,-2.24134711143722,\ +-1.69897,-0.0759167,-2.63320858585858,3.14763815146069,-0.678942329681129,-0.0418191175409118,-2.24135025817133,\ +-1.69897,-0.0759167,-2.60567777777778,3.14763762311016,-0.678943517970034,-0.0418222212230353,-2.24135329015456,\ +-1.69897,-0.0759167,-2.57814696969697,3.14763711368179,-0.67894466370197,-0.0418252137509512,-2.24135621355137,\ +-1.69897,-0.0759167,-2.55061616161616,3.14763662217696,-0.678945769122896,-0.0418281009908719,-2.24135903409248,\ +-1.69897,-0.0759167,-2.52308535353535,3.14763614766611,-0.678946836323465,-0.0418308884033571,-2.24136175711229,\ +-1.69897,-0.0759167,-2.49555454545454,3.14763568928283,-0.678947867252222,-0.0418335810777817,-2.24136438758259,\ +-1.69897,-0.0759167,-2.46802373737374,3.14763524621868,-0.678948863727462,-0.0418361837633473,-2.24136693014291,\ +-1.69897,-0.0759167,-2.44049292929293,3.14763481771831,-0.678949827447947,-0.0418387008970384,-2.24136938912769,\ +-1.69897,-0.0759167,-2.41296212121212,3.14763440307527,-0.678950760002566,-0.0418411366288614,-2.2413717685911,\ +-1.69897,-0.0759167,-2.38543131313131,3.14763400162803,-0.678951662879078,-0.0418434948446806,-2.24137407232921,\ +-1.69897,-0.0759167,-2.3579005050505,3.14763361275657,-0.678952537472036,-0.0418457791869016,-2.2413763039003,\ +-1.69897,-0.0759167,-2.3303696969697,3.14763323587905,-0.678953385089954,-0.041847993073245,-2.24137846664313,\ +-1.69897,-0.0759167,-2.30283888888889,3.14763287044901,-0.678954206961869,-0.0418501397138084,-2.24138056369364,\ +-1.69897,-0.0759167,-2.27530808080808,3.14763251595268,-0.678955004243263,-0.0418522221265961,-2.24138259800012,\ +-1.69897,-0.0759167,-2.24777727272727,3.1476321719066,-0.6789557780215,-0.0418542431516756,-2.24138457233702,\ +-1.69897,-0.0759167,-2.22024646464646,3.14763183785538,-0.678956529320761,-0.0418562054641019,-2.24138648931759,\ +-1.69897,-0.0759167,-2.19271565656565,3.1476315133697,-0.678957259106576,-0.0418581115857299,-2.24138835140546,\ +-1.69897,-0.0759167,-2.16518484848485,3.14763119804453,-0.678957968289954,-0.0418599638960255,-2.2413901609251,\ +-1.69897,-0.0759167,-2.13765404040404,3.14763089149732,-0.678958657731191,-0.0418617646419771,-2.24139192007158,\ +-1.69897,-0.0759167,-2.11012323232323,3.14763059336658,-0.678959328243333,-0.0418635159471875,-2.24139363091948,\ +-1.69897,-0.0759167,-2.08259242424242,3.14763030331039,-0.678959980595395,-0.0418652198202283,-2.24139529543094,\ +-1.69897,-0.0759167,-2.05506161616161,3.14763002100508,-0.678960615515287,-0.0418668781623253,-2.24139691546328,\ +-1.69897,-0.0759167,-2.02753080808081,3.14762974614408,-0.67896123369253,-0.0418684927744346,-2.24139849277586,\ +-1.69897,-0.0759167,-2,3.14762947843676,-0.678961835780754,-0.0418700653637674,-2.24140002903643,\ +-1.69897,-0.0751524,-4.72555,3.14753866216232,-0.679166086491006,-0.0424035461315168,-2.2419211857383,\ +-1.69897,-0.0751524,-4.69801919191919,3.14753532472472,-0.67917359256856,-0.0424231511943909,-2.24194033789995,\ +-1.69897,-0.0751524,-4.67048838383838,3.1475316556595,-0.679181844494587,-0.0424447043328202,-2.24196139313422,\ +-1.69897,-0.0751524,-4.64295757575758,3.14752760295375,-0.679190959248897,-0.0424685110854174,-2.24198464992137,\ +-1.69897,-0.0751524,-4.61542676767677,3.14752310311752,-0.679201079623798,-0.0424949444102572,-2.24201047260369,\ +-1.69897,-0.0751524,-4.58789595959596,3.1475180778334,-0.679212381759452,-0.0425244643663814,-2.2420393106123,\ +-1.69897,-0.0751524,-4.56036515151515,3.14751242935948,-0.679225085482594,-0.0425576451174596,-2.24207172484697,\ +-1.69897,-0.0751524,-4.53283434343434,3.14750603410932,-0.679239468745887,-0.0425952126457945,-2.24210842451891,\ +-1.69897,-0.0751524,-4.50530353535354,3.14749873350499,-0.679255888199654,-0.0426380984834615,-2.24215031964066,\ +-1.69897,-0.0751524,-4.47777272727273,3.14749032064971,-0.679274809165959,-0.042687518001352,-2.24219859750654,\ +-1.69897,-0.0751524,-4.45024191919192,3.14748052040681,-0.679296850441985,-0.0427450874308157,-2.24225483701094,\ +-1.69897,-0.0751524,-4.42271111111111,3.14746895873742,-0.679322853261408,-0.0428130039832348,-2.24232118460696,\ +-1.69897,-0.0751524,-4.3951803030303,3.14745511387243,-0.679353991111132,-0.0428943326795047,-2.2424006345097,\ +-1.69897,-0.0751524,-4.36764949494949,3.14743823538772,-0.679391951735589,-0.0429934817255695,-2.24249749309011,\ +-1.69897,-0.0751524,-4.34011868686869,3.14741720353873,-0.679439253500869,-0.0431170288213217,-2.24261818609507,\ +-1.69897,-0.0751524,-4.31258787878788,3.14739027018344,-0.679499828072794,-0.0432752430527296,-2.24277274538195,\ +-1.69897,-0.0751524,-4.28505707070707,3.14735454602437,-0.679580173637578,-0.0434850969794757,-2.24297775142331,\ +-1.69897,-0.0751524,-4.25752626262626,3.14730488785513,-0.679691857544447,-0.043776803266849,-2.24326271893448,\ +-1.69897,-0.0751524,-4.22999545454545,3.14723116828413,-0.679857656844517,-0.0442098531092945,-2.24368576478969,\ +-1.69897,-0.0751524,-4.20246464646465,3.14711030772029,-0.680129478785657,-0.0449198226250524,-2.24437933313109,\ +-1.69897,-0.0751524,-4.17493383838384,3.14687583614727,-0.680656818027658,-0.046297175699322,-2.24572486764495,\ +-1.69897,-0.0751524,-4.14740303030303,3.14622549497156,-0.682119470485746,-0.0501174657503502,-2.24945690426842,\ +-1.69897,-0.0751524,-4.11987222222222,3.13538336673378,-0.706504002959101,-0.113807227656494,-2.31167535386227,\ +-1.69897,-0.0751524,-4.09234141414141,3.14939769129802,-0.674985029475785,-0.0314830773422792,-2.23125299329151,\ +-1.69897,-0.0751524,-4.06481060606061,3.14844248048172,-0.67713335023518,-0.0370942588489783,-2.23673454956191,\ +-1.69897,-0.0751524,-4.0372797979798,3.14815237040275,-0.677785823484559,-0.0387984484186773,-2.23839937024371,\ +-1.69897,-0.0751524,-4.00974898989899,3.14801209589087,-0.678101308444249,-0.0396224610172149,-2.23920434713156,\ +-1.69897,-0.0751524,-3.98221818181818,3.14792940084947,-0.678287294062383,-0.0401082353395206,-2.2396788994659,\ +-1.69897,-0.0751524,-3.95468737373737,3.14787486987457,-0.678409937172611,-0.0404285658809558,-2.23999182997544,\ +-1.69897,-0.0751524,-3.92715656565657,3.14783620850522,-0.678496888682087,-0.0406556738208755,-2.24021369144092,\ +-1.69897,-0.0751524,-3.89962575757576,3.14780736916492,-0.678561749917336,-0.0408250843533327,-2.24037918838044,\ +-1.69897,-0.0751524,-3.87209494949495,3.1477850307505,-0.678611990218881,-0.0409563065880367,-2.24050737921914,\ +-1.69897,-0.0751524,-3.84456414141414,3.14776721777286,-0.678652052568445,-0.0410609451128016,-2.2406096004645,\ +-1.69897,-0.0751524,-3.81703333333333,3.14775268153476,-0.678684745353679,-0.0411463351324757,-2.24069301786905,\ +-1.69897,-0.0751524,-3.78950252525252,3.14774059404558,-0.678711930770215,-0.0412173405006729,-2.24076238292538,\ +-1.69897,-0.0751524,-3.76197171717172,3.1477303846069,-0.678734892349687,-0.0412773136632158,-2.24082097063366,\ +-1.69897,-0.0751524,-3.73444090909091,3.14772164707702,-0.678754543526689,-0.0413286404124837,-2.2408711116715,\ +-1.69897,-0.0751524,-3.7069101010101,3.14771408454808,-0.678771552063056,-0.0413730648701933,-2.24091450986927,\ +-1.69897,-0.0751524,-3.67937929292929,3.147707474936,-0.678786417437901,-0.0414118916217628,-2.24095243967483,\ +-1.69897,-0.0751524,-3.65184848484848,3.14770164880703,-0.678799520716893,-0.0414461159695182,-2.2409858733978,\ +-1.69897,-0.0751524,-3.62431767676768,3.14769647464821,-0.678811157679764,-0.0414765104581302,-2.24101556573611,\ +-1.69897,-0.0751524,-3.59678686868687,3.14769184882076,-0.678821561415744,-0.0415036838914611,-2.2410421114295,\ +-1.69897,-0.0751524,-3.56925606060606,3.14768768854677,-0.678830918096834,-0.0415281225306504,-2.24106598550589,\ +-1.69897,-0.0751524,-3.54172525252525,3.14768392691195,-0.678839378216883,-0.0415502194493522,-2.24108757195843,\ +-1.69897,-0.0751524,-3.51419444444444,3.14768050923923,-0.678847064747567,-0.0415702958362833,-2.24110718455598,\ +-1.69897,-0.0751524,-3.48666363636364,3.14767739041366,-0.678854079154849,-0.0415886167095784,-2.24112508219443,\ +-1.69897,-0.0751524,-3.45913282828283,3.14767453287965,-0.678860505903302,-0.0416054026815537,-2.24114148038968,\ +-1.69897,-0.0751524,-3.43160202020202,3.14767190512133,-0.678866415873816,-0.0416208388854404,-2.24115655999815,\ +-1.69897,-0.0751524,-3.40407121212121,3.14766948049533,-0.678871868988744,-0.0416350818319413,-2.24117047391497,\ +-1.69897,-0.0751524,-3.3765404040404,3.14766723632422,-0.678876916250892,-0.0416482647348702,-2.24118335227652,\ +-1.69897,-0.0751524,-3.3490095959596,3.14766515318501,-0.678881601343595,-0.0416605016903606,-2.2411953065432,\ +-1.69897,-0.0751524,-3.32147878787879,3.14766321434558,-0.678885961898255,-0.0416718909875869,-2.24120643273356,\ +-1.69897,-0.0751524,-3.29394797979798,3.14766140531433,-0.678890030507326,-0.0416825177545113,-2.24121681400903,\ +-1.69897,-0.0751524,-3.26641717171717,3.14765971347723,-0.678893835540404,-0.0416924560894362,-2.24122652275612,\ +-1.69897,-0.0751524,-3.23888636363636,3.14765812780336,-0.678897401806677,-0.0417017707912893,-2.24123562227683,\ +-1.69897,-0.0751524,-3.21135555555555,3.14765663860401,-0.678900751096487,-0.0417105187740896,-2.24124416817041,\ +-1.69897,-0.0751524,-3.18382474747475,3.14765523733468,-0.678903902626954,-0.0417187502308607,-2.24125220947034,\ +-1.69897,-0.0751524,-3.15629393939394,3.14765391643092,-0.678906873410906,-0.0417265095972887,-2.2412597895858,\ +-1.69897,-0.0751524,-3.12876313131313,3.14765266917177,-0.678909678564142,-0.0417338363541957,-2.24126694708556,\ +-1.69897,-0.0751524,-3.10123232323232,3.14765148956539,-0.678912331562659,-0.0417407656994339,-2.24127371635434,\ +-1.69897,-0.0751524,-3.07370151515151,3.14765037225278,-0.678914844459153,-0.0417473291133333,-2.24128012814526,\ +-1.69897,-0.0751524,-3.04617070707071,3.14764931242634,-0.678917228066083,-0.0417535548368725,-2.24128621004688,\ +-1.69897,-0.0751524,-3.0186398989899,3.14764830576084,-0.678919492111202,-0.0417594682778923,-2.24129198688009,\ +-1.69897,-0.0751524,-2.99110909090909,3.14764734835431,-0.678921645370255,-0.0417650923576804,-2.24129748103668,\ +-1.69897,-0.0751524,-2.96357828282828,3.14764643667751,-0.678923695780643,-0.041770447807891,-2.24130271276936,\ +-1.69897,-0.0751524,-2.93604747474747,3.14764556753051,-0.678925650539219,-0.0417755534259117,-2.24130770044129,\ +-1.69897,-0.0751524,-2.90851666666667,3.14764473800512,-0.678927516186671,-0.0417804262953058,-2.24131246074137,\ +-1.69897,-0.0751524,-2.88098585858586,3.14764394545238,-0.678929298680634,-0.0417850819767787,-2.24131700887085,\ +-1.69897,-0.0751524,-2.85345505050505,3.14764318745431,-0.678931003459248,-0.0417895346741669,-2.24132135870541,\ +-1.69897,-0.0751524,-2.82592424242424,3.14764246179931,-0.678932635496576,-0.0417937973791778,-2.24132552293666,\ +-1.69897,-0.0751524,-2.79839343434343,3.14764176646053,-0.678934199351065,-0.0417978819979912,-2.24132951319573,\ +-1.69897,-0.0751524,-2.77086262626263,3.14764109957705,-0.678935699208077,-0.0418017994623149,-2.24133334016178,\ +-1.69897,-0.0751524,-2.74333181818182,3.14764045943716,-0.678937138917288,-0.0418055598270825,-2.24133701365747,\ +-1.69897,-0.0751524,-2.71580101010101,3.14763984446378,-0.678938522025678,-0.0418091723566276,-2.2413405427331,\ +-1.69897,-0.0751524,-2.6882702020202,3.1476392532014,-0.67893985180671,-0.0418126456008887,-2.24134393574113,\ +-1.69897,-0.0751524,-2.66073939393939,3.14763868430467,-0.678941131286207,-0.0418159874629687,-2.24134720040206,\ +-1.69897,-0.0751524,-2.63320858585858,3.14763813652811,-0.678942363265315,-0.0418192052591683,-2.24135034386318,\ +-1.69897,-0.0751524,-2.60567777777778,3.14763760871702,-0.678943550340987,-0.0418223057724569,-2.24135337275078,\ +-1.69897,-0.0751524,-2.57814696969697,3.14763709979939,-0.678944694924261,-0.0418252953001985,-2.24135629321673,\ +-1.69897,-0.0751524,-2.55061616161616,3.14763660877858,-0.678945799256601,-0.041828179696846,-2.24135911098024,\ +-1.69897,-0.0751524,-2.52308535353535,3.14763613472685,-0.678946865424536,-0.0418309644122055,-2.24136183136523,\ +-1.69897,-0.0751524,-2.49555454545454,3.14763567677952,-0.678947895372844,-0.041833654525805,-2.24136445933388,\ +-1.69897,-0.0751524,-2.46802373737374,3.14763523412964,-0.678948890916361,-0.0418362547778144,-2.24136699951685,\ +-1.69897,-0.0751524,-2.44049292929293,3.14763480602329,-0.678949853750674,-0.041838769596922,-2.24136945624053,\ +-1.69897,-0.0751524,-2.41296212121212,3.14763439175531,-0.678950785461753,-0.0418412031255043,-2.24137183355158,\ +-1.69897,-0.0751524,-2.38543131313131,3.1476339906654,-0.678951687534663,-0.0418435592423963,-2.24137413523926,\ +-1.69897,-0.0751524,-2.3579005050505,3.14763360213458,-0.678952561361469,-0.0418458415835213,-2.24137636485548,\ +-1.69897,-0.0751524,-2.3303696969697,3.14763322558207,-0.678953408248404,-0.0418480535606128,-2.24137852573317,\ +-1.69897,-0.0751524,-2.30283888888889,3.14763286046235,-0.678954229422378,-0.0418501983782331,-2.24138062100285,\ +-1.69897,-0.0751524,-2.27530808080808,3.14763250626254,-0.678955026036916,-0.0418522790492613,-2.2413826536078,\ +-1.69897,-0.0751524,-2.24777727272727,3.14763216249995,-0.678955799177559,-0.0418542984090154,-2.24138462631784,\ +-1.69897,-0.0751524,-2.22024646464646,3.14763182871996,-0.678956549866803,-0.0418562591281424,-2.24138654174193,\ +-1.69897,-0.0751524,-2.19271565656565,3.14763150449396,-0.678957279068609,-0.0418581637244024,-2.24138840233966,\ +-1.69897,-0.0751524,-2.16518484848485,3.14763118941753,-0.678957987692532,-0.0418600145734544,-2.24139021043181,\ +-1.69897,-0.0751524,-2.13765404040404,3.14763088310876,-0.678958676597501,-0.0418618139187418,-2.24139196821,\ +-1.69897,-0.0751524,-2.11012323232323,3.14763058520672,-0.67895934659531,-0.0418635638805646,-2.24139367774554,\ +-1.69897,-0.0751524,-2.08259242424242,3.14763029536999,-0.678959998453786,-0.0418652664644137,-2.24139534099759,\ +-1.69897,-0.0751524,-2.05506161616161,3.14763001327541,-0.67896063289974,-0.0418669235686382,-2.24139695982066,\ +-1.69897,-0.0751524,-2.02753080808081,3.14762973861686,-0.678961250621666,-0.0418685369915062,-2.24139853597145,\ +-1.69897,-0.0751524,-2,3.14762947110414,-0.678961852272228,-0.0418701084377142,-2.24140007111531 +#define TABLE_MILLER_BERTOLAMI_LINES 10800 +/* 6 data items */ diff --git a/src/stellar_structure/miller_bertolami_postagb_coeffs_L.h b/src/stellar_structure/miller_bertolami_postagb_coeffs_L.h new file mode 100644 index 0000000000000000000000000000000000000000..e63382e17de0b513f3dce5adf08d37234cebba28 --- /dev/null +++ b/src/stellar_structure/miller_bertolami_postagb_coeffs_L.h @@ -0,0 +1,111 @@ +#define TABLE_MILLER_BERTOLAMI_COEFFS_L_DATA \ +0.0001,0.531549,25.1439,-3.60027,-11.6143,-12.8995,1.97879,5.39703,\ +0.0001,0.535107,15.364,-3.3326,-12.125,-12.726,2.293,6.3479,\ +0.0001,0.535479,18.1232,-3.40812,-11.9809,-12.7749,2.20435,6.07963,\ +0.0001,0.536089,29.6735,-3.72424,-11.3777,-12.9798,1.83326,4.95662,\ +0.0001,0.552117,104.951,-1.88961,-5.03107,-23.2946,0.74972,2.17129,\ +0.0001,0.555954,115.139,-1.60089,-3.74344,-21.9007,0.686603,2.00097,\ +0.0001,0.557465,113.225,-1.85136,-4.69201,-22.0476,0.959431,2.86707,\ +0.0001,0.56001,218.324,-1.63183,-3.72028,-28.3176,0.637735,1.86208,\ +0.0001,0.566131,565.467,-1.79026,-3.88156,-50.2835,0.484177,1.42397,\ +0.0001,0.567779,577.17,-1.7956,-3.887,-51.024,0.479,1.4092,\ +0.0001,0.570319,542.115,-2.28755,-5.84703,-48.4635,0.904832,2.78429,\ +0.0001,0.580895,305.259,-1.72393,-3.45506,-21.023,0.609614,1.94209,\ +0.0001,0.585641,314.038,-1.72219,-3.46106,-21.8973,0.594935,1.88916,\ +0.0001,0.587849,324.642,-1.72009,-3.4683,-22.9534,0.577204,1.82522,\ +0.0001,0.588264,327.628,-1.7195,-3.47034,-23.2508,0.572211,1.80722,\ +0.0001,0.589965,334.173,-1.71821,-3.47481,-23.9026,0.561267,1.76775,\ +0.0001,0.591869,254.927,-1.73389,-3.42069,-16.0104,0.693773,2.24555,\ +0.0001,0.607759,300.82,-1.4907,-3.8027,-46.239,0.3983,1.2707,\ +0.0001,0.62171,1690.46,-2.85119,-7.98844,-65.7846,7.12739,26.3845,\ +0.0001,0.623943,1776.18,-2.35302,-5.8634,-68.8406,1.49129,5.36003,\ +0.0001,0.663661,373.358,-9.97365,-41.4193,-28.2148,52.5319,204.882,\ +0.0001,0.712931,4117.18,-2.3941,-5.96309,-54.8369,1.36876,5.56681,\ +0.0001,0.717075,3549.08,-2.30472,-5.64767,-52.1522,1.59496,6.51785,\ +0.0001,0.719872,6441.5,-2.7598,-7.2536,-65.821,0.4433,1.6757,\ +0.0001,0.761628,7749.9,-4.1337,-12.421,-20.316,0.42255,1.682,\ +0.0001,0.839621,194.608,-2.94668,-12.3187,-36.4159,0.585941,2.57815,\ +0.0001,0.8411,193.63,-2.99848,-12.5908,-36.3076,1.06267,4.81,\ +0.001,0.531549,25.7697,-3.61739,-11.5816,-12.9106,1.95869,5.33618,\ +0.001,0.535107,27.3835,-3.66156,-11.4973,-12.9392,1.90684,5.17928,\ +0.001,0.535479,34.2737,-3.85014,-11.1375,-13.0614,1.68547,4.50936,\ +0.001,0.536089,41.693,-4.0532,-10.75,-13.193,1.4471,3.788,\ +0.001,0.552117,103.614,-1.92748,-5.19994,-23.4774,0.757997,2.19362,\ +0.001,0.555954,115.7,-1.585,-3.6726,-21.824,0.68313,1.9916,\ +0.001,0.557465,113.51,-1.82064,-4.57444,-22.0218,0.927565,2.7661,\ +0.001,0.56001,213.508,-1.62964,-3.71804,-28.0129,0.639865,1.86816,\ +0.001,0.566131,557.562,-2.07077,-4.98334,-49.5918,0.717188,2.17835,\ +0.001,0.567779,571.961,-1.8687,-4.17825,-50.6435,0.542276,1.61353,\ +0.001,0.570319,530.471,-2.45094,-6.49804,-47.613,1.04627,3.24101,\ +0.001,0.580895,305.344,-1.72391,-3.45512,-21.0315,0.609471,1.94157,\ +0.001,0.585641,314.587,-1.72208,-3.46143,-21.952,0.594017,1.88585,\ +0.001,0.587849,327.004,-1.71962,-3.46991,-23.1886,0.573254,1.81098,\ +0.001,0.588264,331.001,-1.71883,-3.47264,-23.5866,0.566571,1.78688,\ +0.001,0.589965,351.88,-1.7147,-3.4869,-25.666,0.53166,1.661,\ +0.001,0.591869,237.22,-1.7374,-3.4086,-14.247,0.72338,2.3523,\ +0.001,0.607759,300.617,-1.49149,-3.80144,-46.1367,0.39934,1.27416,\ +0.001,0.62171,1686.62,-2.8735,-8.08364,-65.6477,7.37987,27.3264,\ +0.001,0.623943,1790.1,-2.2721,-5.5182,-69.337,0.57573,1.9447,\ +0.001,0.663661,347.92,-10.1119,-42.0639,-27.4764,53.4648,208.526,\ +0.001,0.712931,4078.1,-2.38795,-5.9414,-54.6522,1.38432,5.63223,\ +0.001,0.717075,3249.6,-2.2576,-5.4814,-50.737,1.7142,7.0192,\ +0.001,0.719872,6142.02,-2.71268,-7.08733,-64.4058,0.562541,2.17705,\ +0.001,0.761628,7749.29,-4.13306,-12.4186,-20.3371,0.42256,1.682,\ +0.001,0.839621,194.97,-2.9275,-12.218,-36.456,0.40941,1.7517,\ +0.001,0.8411,193.896,-2.98441,-12.5169,-36.337,0.933159,4.20367,\ +0.01,0.531549,23.243,-3.77904,-13.2992,-21.2524,1.18138,3.23917,\ +0.01,0.535107,24.1346,-3.78286,-13.3296,-22.059,1.19033,3.26488,\ +0.01,0.535479,24.105,-3.7824,-13.334,-22.074,1.1899,3.264,\ +0.01,0.536089,24.1854,-3.78364,-13.3222,-22.0334,1.19108,3.2664,\ +0.01,0.552117,37.123,-3.8117,-13.603,-32.574,1.1699,3.3051,\ +0.01,0.555954,33.5739,-7.13524,-25.6578,-31.1695,5.47851,17.0653,\ +0.01,0.557465,30.9956,-9.54959,-34.4149,-30.1491,8.60846,27.0612,\ +0.01,0.56001,29.608,-10.849,-39.128,-29.6,10.293,32.441,\ +0.01,0.566131,15.9585,-10.1079,-36.7406,-15.9535,8.30469,26.4695,\ +0.01,0.567779,11.5039,-9.86607,-35.9615,-11.4999,7.65579,24.5206,\ +0.01,0.570319,9.5688,-9.761,-35.623,-9.5652,7.3739,23.674,\ +0.01,0.580895,8.14309,-12.1192,-45.1728,-8.14091,84.5492,296.987,\ +0.01,0.585641,7.67904,-12.2811,-45.7678,-7.67653,88.2966,310.728,\ +0.01,0.587849,4.2622,-13.473,-50.149,-4.2572,115.89,411.9,\ +0.01,0.588264,12.501,-10.599,-39.585,-12.502,49.356,167.95,\ +0.01,0.589965,9.26689,-11.7272,-43.7319,-9.26554,75.4737,263.712,\ +0.01,0.591869,8.82868,-11.88,-44.2937,-8.82701,79.0125,276.687,\ +0.01,0.607759,201.984,-5.22579,-19.1939,-32.6672,39.7549,148.088,\ +0.01,0.62171,5.7138,-12.643,-49.758,-5.7161,117.91,439.64,\ +0.01,0.623943,109.189,-12.0416,-47.1926,-9.40543,111.106,414.258,\ +0.01,0.663661,118.669,-11.3582,-47.8732,-20.8222,61.8721,241.364,\ +0.01,0.712931,2.1808,-5.6874,-23.961,-1.8323,145.53,594.26,\ +0.01,0.717075,570.231,-5.08745,-20.7285,-10.3869,120.373,491.538,\ +0.01,0.719872,1144.16,-4.48128,-17.4625,-19.0301,94.9559,387.752,\ +0.01,0.761628,7683.78,-4.06427,-12.1599,-22.6154,0.423599,1.68168,\ +0.01,0.839621,116.107,-7.10534,-34.1607,-27.7231,38.8603,181.763,\ +0.01,0.8411,113.977,-7.21817,-34.7533,-27.4873,39.8987,186.624,\ +0.02,0.531549,17.662,-3.7573,-13.074,-15.933,1.1262,3.0784,\ +0.02,0.535107,18.3851,-3.76012,-13.1032,-16.6222,1.13335,3.09923,\ +0.02,0.535479,18.524,-3.76066,-13.1088,-16.7546,1.13472,3.10323,\ +0.02,0.536089,18.7597,-3.76158,-13.1183,-16.9792,1.13705,3.11002,\ +0.02,0.552117,30.5204,-3.75665,-13.8783,-27.5803,1.14338,3.31288,\ +0.02,0.555954,30.4912,-3.8647,-14.4348,-28.0642,1.3046,3.8522,\ +0.02,0.557465,28.632,-3.7409,-13.957,-26.152,1.1358,3.3151,\ +0.02,0.56001,41.3371,-4.58694,-17.2222,-39.2196,2.28936,6.98549,\ +0.02,0.566131,114.83,-9.4809,-36.11,-114.81,8.9622,28.217,\ +0.02,0.567779,112.684,-9.338,-35.5585,-112.603,8.76736,27.5971,\ +0.02,0.570319,99.1228,-9.5227,-36.0373,-99.1053,8.72519,27.5391,\ +0.02,0.580895,56.398,-8.4388,-32.906,-56.241,11.082,36.655,\ +0.02,0.585641,76.785,-14.047,-54.623,-76.791,204.7,722,\ +0.02,0.587849,74.9179,-13.5334,-52.6341,-74.909,186.968,659.234,\ +0.02,0.588264,74.4924,-13.4163,-52.1809,-74.4801,182.927,644.931,\ +0.02,0.589965,73.0096,-13.0084,-50.6013,-72.9854,168.844,595.082,\ +0.02,0.591869,60.3574,-13.1659,-50.7801,-60.3621,165.002,580.414,\ +0.02,0.607759,131.607,-7.88538,-30.1533,-23.0034,67.779,252.63,\ +0.02,0.62171,388.641,-10.4174,-40.2642,-19.3691,92.7302,345.711,\ +0.02,0.623943,407.734,-10.3064,-39.7908,-20.0498,91.4747,341.028,\ +0.02,0.663661,17.891,-11.906,-50.427,-17.897,65.568,255.8,\ +0.02,0.712931,681.312,-4.97013,-20.0964,-12.0597,115.454,471.451,\ +0.02,0.717075,797.937,-4.84695,-19.4327,-13.816,110.289,450.361,\ +0.02,0.719872,932.923,-4.70439,-18.6646,-15.8489,104.311,425.951,\ +0.02,0.761628,7545.55,-3.91912,-11.614,-27.423,0.425791,1.68102,\ +0.02,0.839621,17.6892,-12.3191,-61.5441,-16.825,86.8453,406.408,\ +0.02,0.8411,16.615,-12.376,-61.843,-16.706,87.369,408.86 + +/* 7 data items */ diff --git a/src/stellar_structure/miller_bertolami_postagb_coeffs_R.h b/src/stellar_structure/miller_bertolami_postagb_coeffs_R.h new file mode 100644 index 0000000000000000000000000000000000000000..c271609333ef991585bb5e96f9f94d81969a0beb --- /dev/null +++ b/src/stellar_structure/miller_bertolami_postagb_coeffs_R.h @@ -0,0 +1,110 @@ +#define TABLE_MILLER_BERTOLAMI_COEFFS_R_DATA \ +0.0001,0.531549,18.9443,-2.15185,-3.58737,-4.50745,1.9896,4.3157,\ +0.0001,0.535107,16.638,-2.5964,-4.5485,-3.7072,2.8246,6.1702,\ +0.0001,0.535479,17.2887,-2.47098,-4.27734,-3.93298,2.58902,5.64699,\ +0.0001,0.536089,20.0125,-1.94595,-3.14222,-4.87809,1.60287,3.45678,\ +0.0001,0.552117,41.708,-1.80187,-3.41108,-5.82362,0.916528,2.12614,\ +0.0001,0.555954,46.9117,-1.62209,-2.30401,-5.6454,0.313554,0.656762,\ +0.0001,0.557465,46.1387,-1.61887,-2.41183,-5.76778,0.397403,0.866919,\ +0.0001,0.56001,55.5632,-1.67638,-2.33399,-5.52921,0.268038,0.556137,\ +0.0001,0.566131,83.8601,-1.89348,-2.64144,-5.16933,0.226287,0.489216,\ +0.0001,0.567779,84.814,-1.9008,-2.6518,-5.1572,0.22488,0.48696,\ +0.0001,0.570319,80.1351,-2.38395,-4.65823,-5.4692,0.726753,1.98669,\ +0.0001,0.580895,243.528,-2.06502,-2.59107,-5.23849,0.228555,0.471837,\ +0.0001,0.585641,216.842,-2.01428,-2.55617,-5.29684,0.229104,0.472798,\ +0.0001,0.587849,184.607,-1.953,-2.514,-5.36734,0.229767,0.473959,\ +0.0001,0.588264,175.529,-1.93575,-2.50213,-5.38719,0.229953,0.474286,\ +0.0001,0.589965,155.634,-1.89792,-2.4761,-5.4307,0.230363,0.475002,\ +0.0001,0.591869,396.526,-2.35588,-2.7912,-4.9039,0.225407,0.466328,\ +0.0001,0.607759,140.26,-1.9611,-2.8353,-5.3079,0.19337,0.42008,\ +0.0001,0.62171,963.856,-3.49814,-6.54247,-4.58714,0.600236,1.68959,\ +0.0001,0.623943,1012.67,-3.18687,-5.13865,-4.59115,0.267157,0.61747,\ +0.0001,0.663661,208.465,-1.16022,-4.15035,-4.43256,7.24472,25.1372,\ +0.0001,0.712931,979.432,-2.78376,-5.28971,-5.09222,1.85656,6.49346,\ +0.0001,0.717075,698.313,-2.60777,-4.9107,-5.22795,2.26905,7.98993,\ +0.0001,0.719872,2129.6,-3.5038,-6.8404,-4.5369,0.1689,0.37083,\ +0.0001,0.761628,2512.9,-4.6547,-11.89,-4.3773,0.17211,0.38297,\ +0.0001,0.839621,869.592,-2.72292,-6.14272,-5.28343,0.823584,2.90313,\ +0.0001,0.8411,864.843,-2.70892,-6.11846,-5.27755,0.860996,3.06093,\ +0.001,0.531549,19.0919,-2.1234,-3.52588,-4.55865,1.93618,4.19704,\ +0.001,0.535107,19.4725,-2.05005,-3.36728,-4.69071,1.79839,3.89102,\ +0.001,0.535479,21.0974,-1.73685,-2.69013,-5.25451,1.21011,2.58447,\ +0.001,0.536089,22.847,-1.3996,-1.961,-5.8616,0.57666,1.1776,\ +0.001,0.552117,41.0255,-1.82545,-3.55627,-5.84699,0.995605,2.31885,\ +0.001,0.555954,47.198,-1.6122,-2.2431,-5.6356,0.28038,0.57592,\ +0.001,0.557465,46.2608,-1.6181,-2.39237,-5.75254,0.383907,0.833358,\ +0.001,0.56001,55.1707,-1.67337,-2.32972,-5.5342,0.268617,0.557065,\ +0.001,0.566131,82.1969,-2.17105,-3.77409,-5.33172,0.505602,1.32583,\ +0.001,0.567779,84.1187,-1.97259,-2.94994,-5.20356,0.299456,0.709812,\ +0.001,0.570319,78.5811,-2.54442,-5.32464,-5.57283,0.893445,2.48481,\ +0.001,0.580895,243.268,-2.06452,-2.59073,-5.23905,0.22856,0.471846,\ +0.001,0.585641,215.173,-2.01111,-2.55398,-5.30049,0.229138,0.472858,\ +0.001,0.587849,177.427,-1.93935,-2.50461,-5.38304,0.229914,0.474217,\ +0.001,0.588264,165.278,-1.91626,-2.48872,-5.40961,0.230164,0.474655,\ +0.001,0.589965,101.81,-1.7956,-2.4057,-5.5484,0.23147,0.47694,\ +0.001,0.591869,450.35,-2.4582,-2.8616,-4.7862,0.2243,0.46439,\ +0.001,0.607759,141.252,-1.96269,-2.83538,-5.30623,0.193469,0.420222,\ +0.001,0.62171,961.669,-3.51209,-6.60536,-4.58696,0.615157,1.73761,\ +0.001,0.623943,1020.6,-3.1363,-4.9106,-4.5918,0.21305,0.44331,\ +0.001,0.663661,193.883,-1.12474,-4.1367,-4.4297,7.37098,25.5806,\ +0.001,0.712931,960.094,-2.77166,-5.26364,-5.10156,1.88494,6.5964,\ +0.001,0.717075,550.12,-2.515,-4.7109,-5.2995,2.4865,8.7788,\ +0.001,0.719872,1981.41,-3.41103,-6.6406,-4.60845,0.386346,1.1597,\ +0.001,0.761628,2512.72,-4.65417,-11.8877,-4.37737,0.172109,0.382964,\ +0.001,0.839621,871.35,-2.7281,-6.1517,-5.2856,0.80973,2.8447,\ +0.001,0.8411,866.133,-2.71272,-6.12505,-5.27915,0.850832,3.01806,\ +0.01,0.531549,23.9419,-2.51555,-4.46712,-4.40763,1.08038,2.41677,\ +0.01,0.535107,23.7405,-2.37166,-4.11906,-4.47524,0.549586,1.13627,\ +0.01,0.535479,23.742,-2.3733,-4.1227,-4.4729,0.54954,1.1362,\ +0.01,0.536089,23.7379,-2.36885,-4.11281,-4.47925,0.549664,1.13639,\ +0.01,0.552117,7.0662,-2.9987,-10.781,-7.01,4.9306,11.908,\ +0.01,0.555954,8.61895,-2.45341,-9.52031,-8.53214,4.65663,11.3361,\ +0.01,0.557465,9.74692,-2.05729,-8.60449,-9.63789,4.45761,10.9206,\ +0.01,0.56001,10.354,-1.8441,-8.1116,-10.233,4.3505,10.697,\ +0.01,0.566131,9.46934,-7.21119,-26.521,-10.2167,7.07539,20.2826,\ +0.01,0.567779,9.18062,-8.96278,-32.529,-10.2113,7.96468,23.411,\ +0.01,0.570319,9.0552,-9.7237,-35.139,-10.209,8.351,24.77,\ +0.01,0.580895,7.56572,-9.83483,-34.5368,-7.71979,7.49413,22.3086,\ +0.01,0.585641,7.36137,-9.82816,-34.516,-7.51296,7.4836,22.3262,\ +0.01,0.587849,5.8567,-9.7791,-34.363,-5.99,7.406,22.456,\ +0.01,0.588264,9.4848,-9.8974,-34.732,-9.6622,7.5931,22.143,\ +0.01,0.589965,8.0606,-9.85096,-34.5872,-8.22069,7.51965,22.2659,\ +0.01,0.591869,7.86763,-9.84467,-34.5675,-8.02537,7.5097,22.2825,\ +0.01,0.607759,94.7453,-4.52505,-13.3184,-5.0401,2.52232,7.90309,\ +0.01,0.62171,4.3612,-9.6166,-34.136,-4.5083,7.1472,22.763,\ +0.01,0.623943,63.2922,-9.24081,-32.4412,-4.51314,6.74509,21.4687,\ +0.01,0.663661,62.4675,-0.804977,-4.01368,-4.40393,8.50881,29.5764,\ +0.01,0.712931,3.4714,-22.202,-84.351,-3.6471,15.361,58.827,\ +0.01,0.717075,99.0932,-18.7583,-70.4201,-3.93614,13.1089,50.0724,\ +0.01,0.719872,195.705,-15.2789,-56.3449,-4.22818,10.8336,41.2271,\ +0.01,0.761628,2493.53,-4.59654,-11.6348,-4.38536,0.171948,0.382357,\ +0.01,0.839621,488.376,-1.59925,-4.19496,-4.81186,3.82722,15.5723,\ +0.01,0.8411,478.034,-1.56877,-4.14212,-4.79907,3.90871,15.916,\ +0.02,0.531549,25.236,-3.4366,-6.6971,-3.985,4.5174,10.708,\ +0.02,0.535107,25.0683,-3.31727,-6.40817,-4.03976,4.07208,9.63375,\ +0.02,0.535479,25.0361,-3.29435,-6.35268,-4.05027,3.98656,9.42743,\ +0.02,0.536089,24.9815,-3.25545,-6.25851,-4.06812,3.84141,9.07728,\ +0.02,0.552117,75.0725,-3.8476,-8.58615,-4.70932,5.19592,13.3364,\ +0.02,0.555954,93.038,-4.04449,-7.99437,-4.51584,5.29771,13.8223,\ +0.02,0.557465,94.523,-4.0904,-7.9584,-4.0513,5.2718,13.745,\ +0.02,0.56001,84.3748,-3.77669,-8.20422,-7.22582,5.44886,14.2733,\ +0.02,0.566131,25.672,-1.962,-9.6262,-25.589,6.4731,17.329,\ +0.02,0.567779,27.386,-2.01499,-9.58468,-25.0528,6.44319,17.2398,\ +0.02,0.570319,23.1924,-3.12021,-13.4332,-23.294,6.75332,18.4394,\ +0.02,0.580895,25.749,-1.4406,-8.0796,-25.612,4.6916,12.43,\ +0.02,0.585641,56.028,-8.4413,-32.577,-56.603,11.289,35.913,\ +0.02,0.587849,53.255,-7.80016,-30.3335,-53.7648,10.6848,33.7624,\ +0.02,0.588264,52.623,-7.65405,-29.8222,-53.118,10.5471,33.2723,\ +0.02,0.589965,50.4207,-7.14485,-28.0404,-50.8638,10.0672,31.5642,\ +0.02,0.591869,44.134,-8.8134,-33.1277,-44.6074,10.3445,32.3941,\ +0.02,0.607759,62.3363,-6.35073,-20.783,-4.84941,4.18066,13.2314,\ +0.02,0.62171,222.445,-8.22594,-27.8643,-4.52622,5.65914,17.9732,\ +0.02,0.623943,233.319,-8.15659,-27.5515,-4.52711,5.58494,17.7344,\ +0.02,0.663661,4.6971,-0.66441,-3.9596,-4.3926,9.009,31.333,\ +0.02,0.712931,117.792,-18.0849,-67.6959,-3.99267,12.6686,48.3604,\ +0.02,0.717075,137.424,-17.3778,-64.8358,-4.05201,12.2062,46.5631,\ +0.02,0.719872,160.146,-16.5595,-61.5254,-4.12069,11.671,44.4827,\ +0.02,0.761628,2453.04,-4.47495,-11.1013,-4.40223,0.171609,0.381074,\ +0.02,0.839621,10.4437,-0.190506,-1.75305,-4.22065,7.5929,31.4556,\ +0.02,0.8411,5.2271,-0.17513,-1.7264,-4.2142,7.634,31.629 +/* 7 data items */ diff --git a/src/stellar_structure/miller_bertolami_postagb_coeffs_n.h b/src/stellar_structure/miller_bertolami_postagb_coeffs_n.h new file mode 100644 index 0000000000000000000000000000000000000000..5e28b08b385f5d5f2500ae4b538d91c44013123b --- /dev/null +++ b/src/stellar_structure/miller_bertolami_postagb_coeffs_n.h @@ -0,0 +1,12 @@ +#pragma once +#ifndef MILLER_BERTOLAMI_POSTAGB_COEFFS_N_H +#define MILLER_BERTOLAMI_POSTAGB_COEFFS_N_H + +#define TABLE_MILLER_BERTOLAMI_COEFFS_R_N_DATA 6 +#define TABLE_MILLER_BERTOLAMI_COEFFS_R_N_PARAMS 2 +#define TABLE_MILLER_BERTOLAMI_COEFFS_R_LINES 108 +#define TABLE_MILLER_BERTOLAMI_COEFFS_L_N_DATA 6 +#define TABLE_MILLER_BERTOLAMI_COEFFS_L_N_PARAMS 2 +#define TABLE_MILLER_BERTOLAMI_COEFFS_L_LINES 108 + +#endif // MILLER_BERTOLAMI_POSTAGB_COEFFS_N_H diff --git a/src/stellar_structure/miller_bertolami_postagb_n.h b/src/stellar_structure/miller_bertolami_postagb_n.h new file mode 100644 index 0000000000000000000000000000000000000000..c25a827b945800320baf0afabfbb5f7e7e5f49a3 --- /dev/null +++ b/src/stellar_structure/miller_bertolami_postagb_n.h @@ -0,0 +1,10 @@ +#pragma once +#ifndef MILLER_BERTOLAMI_POSTAGB_N_H +#define MILLER_BERTOLAMI_POSTAGB_N_H + +#define TABLE_MILLER_BERTOLAMI_N_PARAMS 3 +#define TABLE_MILLER_BERTOLAMI_N_DATA 4 +#define TABLE_MILLER_BERTOLAMI_LINES 10800 +#define TABLE_MILLER_BERTOLAMI_N_ALL ((TABLE_MILLER_BERTOLAMI_N_PARAMS+TABLE_MILLER_BERTOLAMI_N_DATA)*TABLE_MILLER_BERTOLAMI_LINES) + +#endif// MILLER_BERTOLAMI_POSTAGB_N_H diff --git a/src/stellar_structure/stellar_structure.c b/src/stellar_structure/stellar_structure.c index 32c115e049e200b1545ec38c9ad15ec52a81991b..16f84c4c5666b0465e502f61fe3acca916b51c14 100644 --- a/src/stellar_structure/stellar_structure.c +++ b/src/stellar_structure/stellar_structure.c @@ -80,7 +80,7 @@ void stellar_structure(struct star_t *star, * We have a SN, but are not allowed to have one. * Set the stellar structure from the new supernova * struct and free the associated memory. - */ + */ if(newstar->new_supernova != NULL) { Dprint("Remove new supernova : SNe not allowed\n"); @@ -121,6 +121,7 @@ void stellar_structure(struct star_t *star, Safe_free(newstar); + Dprint("return \n"); return; #ifdef OLDCODE diff --git a/src/stellar_structure/stellar_structure_AGB.c b/src/stellar_structure/stellar_structure_AGB.c index 4809459c9a09c22cffba490b1f695f1f3a67fed8..407a6f6e3c5cd721f6ca5d204bb422238f10984a 100644 --- a/src/stellar_structure/stellar_structure_AGB.c +++ b/src/stellar_structure/stellar_structure_AGB.c @@ -3,7 +3,7 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, struct star_t * newstar, - double *mcx, + double *mc_CO, double *rg, double tbagb, struct stardata_t * stardata, @@ -25,7 +25,7 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, double mcbagb = mcagbf(newstar->phase_start_mass,giant_branch_parameters); Boolean ignite_carbon = mcbagb > stardata->preferences->minimum_mass_for_carbon_ignition; - + #ifdef CARBON_BURNING if(ignite_carbon==TRUE) { @@ -38,84 +38,143 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, Dprint("Set mcbagb %12.12e from newstar->phase_start_mass %12.12e\n",mcbagb,newstar->phase_start_mass); - // mcx is the CO core mass - *mcx = mcgbtf(tbagb, - newstar->GB[GB_A_HE], - newstar->GB, - newstar->timescales[T_EAGB_TINF_1], - newstar->timescales[T_EAGB_TINF_2], - newstar->timescales[T_EAGB_T] + /* + * mc_CO here is the CO core mass + * at the start of the AGB, i.e. at + * the end of core helium burning + */ + double mc_CO_start_AGB + = MIN(newstar->mass, + mcgbtf(tbagb, + newstar->GB[GB_A_HE], + newstar->GB, + newstar->timescales[T_EAGB_TINF_1], + newstar->timescales[T_EAGB_TINF_2], + newstar->timescales[T_EAGB_T])); + + Dprint("MCX(%g,%d) = %g (tbagb=%g mcbagb=%g) Mc = %g\n", + newstar->age, + newstar->stellar_type, + mc_CO_start_AGB, + tbagb, + mcbagb, + newstar->core_mass ); - *mcx = MIN(newstar->mass,*mcx); - + /* * NB change due to Rob: use stardata->preferencenewstar->max_tpagb_core_mass here instead * of stardata->preferencenewstar->chandrasekhar_mass. Of course these might be exactly the * same thing... */ - mcmax = MAX4( - stardata->preferences->max_tpagb_core_mass, - 0.7730 * mcbagb - 0.350, - 1.050* * mcx, - (newstar->stellar_type == TPAGB ? stardata->preferences->max_tpagb_core_mass : 0.0) - ); + + /* + * Equivalent to Hurley et al. 2000's Eq. (75) + */ + double mcSN = MAX(0.7730 * mcbagb - 0.350, + stardata->preferences->max_tpagb_core_mass); + - Dprint("Compare mcx=%g to mcxmax=%g (m=%g)\n",*mcx,mcmax,newstar->mass); + /* + * How much must the AGB core grow before + * it is allowed to explode? In Msun. + * + * This is a fudge in BSE: see below for implementation. + */ + const double min_AGB_core_growth = 0.05; /* - * NB real TPAGB evolution is now done separately by the nucsyn - * routine nucsyn_tpagb (if NUCSYN is defined), - * EAGB is still done as before + * CO core masses in excess of this value (in Msun) are not + * allowed to have thermal pulses. Such stars will, + * in any case, soon explode. + * + * The Hurley et al. 2000 (based on Pols) models estimate + * that core with mass > 2.25Msun are non-degenerate, so these + * should not have a TPAGB. */ + const double maximum_CO_core_mass_for_thermal_pulses = 2.25; + + /* + * The following is in BSE: it makes the core + * grow somewhat up the AGB before there is an explosion. + * + * This is not mentioned in the Hurley et al. (2000) paper. + * + * Presumably this is just a fudge of some sort to + * make sure there is no immediate explosion after core helium + * burning finishes, perhaps to simulate the time of subsequent + * burning (e.g. He-shell, C-core, C-shell, etc.) before there + * is an explosion. + */ + mcmax = MAX(mcSN, + (1.0 + min_AGB_core_growth) * mc_CO_start_AGB); + + Dprint("Compare mcx=%g to mcxmax=%g (m=%g)\n", + mc_CO_start_AGB,mcmax,newstar->mass); + Dprint("age %14.14g c.f. tscls 13 (first pulse) %14.14g\n", newstar->age, newstar->timescales[T_TPAGB_FIRST_PULSE]); - + /* - * Set core mass, luminosity, radius and age + * Set the CO core mass at this point in the evolution (in mc_CO), + * luminosity, radius and age. */ - if(0 &&newstar->starnum==0 && - stardata->model.time>19.9) - { - printf("type=%d age=%g t1p=%g M=%g Mc=%g\n", - newstar->stellar_type, - newstar->age, - newstar->timescales[T_TPAGB_FIRST_PULSE], - newstar->mass, - newstar->core_mass - ); - } - - if((newstar->age < newstar->timescales[T_TPAGB_FIRST_PULSE] - && - newstar->stellar_type!=TPAGB) - //||newstar->core_mass > stardata->preferences->chandrasekhar_mass - ) + if(newstar->age < newstar->timescales[T_TPAGB_FIRST_PULSE] + && + newstar->stellar_type!=TPAGB) { - /* EAGB star */ + /* EAGB star : updates mc_CO */ convert_to_helium_star= stellar_structure_EAGB(oldstar, newstar, tbagb, - mcx, + mc_CO, mcbagb, stardata, caller_id); } - else + /* + * RGI + * + * Only allow stars with CO core mass less than the + * maximum_CO_mass_for_thermal_pulses to have thermal pulses, or + * those that are already thermally pulsing. + * + * This is because more massive stars should explode + * soon after the AGB begins, and probably don't ever + * have thermal pulses. + */ + else if(newstar->stellar_type == TPAGB || + (IS_NOT_ZERO(newstar->CO_core_mass) && + newstar->CO_core_mass < maximum_CO_core_mass_for_thermal_pulses)) { /* TPAGB star */ stellar_structure_TPAGB(newstar, - mcx, + mc_CO, &mcmax, mcbagb, stardata, caller_id); - mcmax = stardata->preferences->max_tpagb_core_mass; } + else + { + /* + * The star wants to start thermal pulses, + * but we should prevent it from happening. The core + * should be set to mcmax so there is a supernova as + * soon as possible. + */ + newstar->stellar_type = EAGB; + *mc_CO = mcmax; + } - Dprint("mcx=%12.12e (core_mass %12.12e) kw=%d\n",*mcx,newstar->core_mass,newstar->stellar_type); - + Dprint("MC_CO now %g start %g mcmax %g core_mass %g stellar_type %d\n", + *mc_CO, + mc_CO_start_AGB, + mcmax, + newstar->core_mass, + newstar->stellar_type); + /* * Check that the core does not collapse or explode */ @@ -124,12 +183,12 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, *rg = newstar->radius; /* - * mcx represents the CO core mass and we now test whether it + * mc_CO represents the CO core mass and we now test whether it * exceeds either the total mass or the maximum allowed core mass. */ - Dprint("COMPARE st=%d mcx=%12.12e vs mcmax=%12.12e (Mch=%g) r=%12.12e\n",newstar->stellar_type,*mcx,mcmax,stardata->preferences->chandrasekhar_mass,newstar->radius); - Dprint("MCX=%g mcmax=%g mdot=%g dt=%g\n", - *mcx, + Dprint("COMPARE st=%d mc_CO=%12.12e vs mcmax=%12.12e (Mch=%g) r=%12.12e\n",newstar->stellar_type,*mc_CO,mcmax,stardata->preferences->chandrasekhar_mass,newstar->radius); + Dprint("MC_CO=%g mcmax=%g mdot=%g dt=%g\n", + *mc_CO, mcmax, newstar->derivative[DERIVATIVE_STELLAR_MASS_WIND_LOSS], stardata->model.dt); @@ -151,7 +210,7 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, * rich, not a COWD or ONeWD. */ if(LESS_OR_EQUAL(envelope_mass, 1e-10) && - *mcx < mcmax && + *mc_CO < mcmax && accretion_rate < REALLY_TINY) { /* @@ -171,10 +230,10 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, newstar->num_thermal_pulses=-1.0; /* resets */ newstar->num_thermal_pulses_since_mcmin=0.0; newstar->phase_start_mass = newstar->mass; - // RGI 18/03/2016 : age must be zero here newstar->age = 0.0; } - else if(MORE_OR_EQUAL(*mcx,mcmax) + else if(MORE_OR_EQUAL(*mc_CO,mcmax) + #ifdef CARBON_BURNING && newstar->age < @@ -185,21 +244,38 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, ) { /* - * Core mass exceeds the maximum allowed: + * Core mass exceeds the maximum for carbon ignition + * or the star has no envelope left: * either form a WD or collapse the core */ - newstar->core_mass = mcmax; + + + /* + * Always check the core cannot exceed the total mass + */ + newstar->core_mass = MIN(newstar->core_mass,newstar->mass); + + /* + * And check that the CO core mass does not exceed the total core mass + * or the CO core mass at carbon ignition + */ + *mc_CO = MIN3(*mc_CO, newstar->core_mass, mcmax); /* - * stardata->preferences->max_tpagb_core_mass is more appropriate - * than stardata->preferences->chandrasekhar_mass + * max_tpagb_core_mass is the maximum mass a WD can have: + * this is usually the same as the Chandrasekhar mass + * (in stardata->preferences->chandrasekhar_mass) but can be + * set to something different + * (in stardata->preferences->max_tpagb_core_mass) to take into + * account chemical changes, rotation, personal preference... */ - if(newstar->core_mass < stardata->preferences->max_tpagb_core_mass) + if(*mc_CO < stardata->preferences->max_tpagb_core_mass) { /* - * Form a new WD + * Form a new WD from the CO core. */ newstar->age = 0.0; + newstar->mass = *mc_CO; #ifdef WD_KICKS if(stardata->preferences->wd_kick_when==WD_KICK_END_AGB) { @@ -233,9 +309,10 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, else { /* - * Core mass is greater than stardata->preferences->chandrasekhar_mass (MCh) - * so there is a supernova here + * Core mass is greater than stardata->preferences->max_tpagb_core_mass + * so there is a supernova here. */ + Dprint("EXPLODE! mc_CO=%g mc=%g\n",*mc_CO,newstar->core_mass); if(mcbagb < stardata->preferences->minimum_mass_for_carbon_ignition) { /* @@ -253,6 +330,7 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, news->stellar_type = MASSLESS_REMNANT; news->age = 0.0; news->mass = 0.0; + news->core_mass = 0.0; news->luminosity = REMNANT_LUMINOSITY; news->radius = REMNANT_RADIUS; } @@ -275,14 +353,22 @@ Stellar_type stellar_structure_AGB(struct star_t * oldstar, { newstar->stellar_type = CHeB; } + + /* + * Use the CO core mass to calculate the remnant + * mass. + */ double remnant_mass = - bh_mass(newstar->mass, - newstar->core_mass, - stardata, - newstar); + ns_bh_mass(newstar->mass, + *mc_CO, + stardata, + newstar); newstar->stellar_type = stype; /* restore */ - - Dprint("STELLAR_STRUCTURE core collapse SN\n"); + + Dprint("STELLAR_STRUCTURE core collapse SN, McHe = %g, McCO = %g -> M_remnant = %g\n", + newstar->core_mass, + *mc_CO, + remnant_mass); newstar->SN_type = SN_II; struct star_t * news = new_supernova(stardata, diff --git a/src/stellar_structure/stellar_structure_BSE.c b/src/stellar_structure/stellar_structure_BSE.c index 1076cdcc368b5a08ed24882b0a418f90151fee09..b0606b5d02d60476b8fc389017615aaa6a596792 100644 --- a/src/stellar_structure/stellar_structure_BSE.c +++ b/src/stellar_structure/stellar_structure_BSE.c @@ -399,7 +399,8 @@ void stellar_structure_BSE(struct star_t *newstar, Dprint("Call stellar_structure_HeStar\n"); stellar_structure_HeStar(newstar, - &mtc,&rg, + &mtc, + &rg, &remnant_radius, stardata, caller_id); @@ -691,7 +692,8 @@ static Boolean helium_ignition_test(struct star_t * newstar, ignite_on_HG ); } - + + Dprint("return %d\n",helium_ignition); return helium_ignition; } #endif diff --git a/src/stellar_structure/stellar_structure_CHeB.c b/src/stellar_structure/stellar_structure_CHeB.c index b41c0a49fe7b22049bc7fc41fb010b6b2c11bf26..3c308768c3e936f490322d2a2280e0d195c7dc76 100644 --- a/src/stellar_structure/stellar_structure_CHeB.c +++ b/src/stellar_structure/stellar_structure_CHeB.c @@ -121,12 +121,6 @@ Stellar_type stellar_structure_CHeB(struct star_t *newstar, newstar->mass, mcx, mcbagb); - fflush(stdout); -// _exit(0); - - - - double dMc_dt; /* diff --git a/src/stellar_structure/stellar_structure_EAGB.c b/src/stellar_structure/stellar_structure_EAGB.c index 9b1b80581b1dc425054d7bf48773865fb24e4ac6..e6f4b0523eeb2129a5f984cde4f55cb03c41f773 100644 --- a/src/stellar_structure/stellar_structure_EAGB.c +++ b/src/stellar_structure/stellar_structure_EAGB.c @@ -13,7 +13,7 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, struct star_t * newstar, double tbagb, - double *mcx, + double *mc_CO, double mcbagb, struct stardata_t * stardata, const Caller_id caller_id) @@ -35,14 +35,14 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, #endif // NUCSYN_FIRST_DREDGE_UP_PHASE_IN #endif // NUCSYN - *mcx = mcgbtf(newstar->age, + *mc_CO = mcgbtf(newstar->age, newstar->GB[GB_A_HE], newstar->GB, newstar->timescales[T_EAGB_TINF_1], newstar->timescales[T_EAGB_TINF_2], newstar->timescales[T_EAGB_T]); Dprint("mcx = %g from age = %g tscls %g %g %g GB_A_HE =%g\n", - *mcx, + *mc_CO, newstar->age, newstar->timescales[T_EAGB_TINF_1], newstar->timescales[T_EAGB_TINF_2], @@ -102,7 +102,7 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, * but is this check required any more? * (RGI : It cannot hurt!) */ - *mcx = MIN(newstar->core_mass,*mcx); + *mc_CO = MIN(newstar->core_mass,*mc_CO); #ifdef NUCSYN if(mc1tp>mcbagb) @@ -124,7 +124,7 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, #endif /* core mass must be > the carbon/oxygen core mass */ - newstar->core_mass = MAX(*mcx,newstar->core_mass); + newstar->core_mass = MAX(*mc_CO,newstar->core_mass); newstar->core_mass = MIN(newstar->mass, newstar->core_mass); @@ -140,12 +140,12 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, Dprint("STELLAR_STRUCTURE type=%d mc=mcbagb=%12.12e mcx=%12.12e\n", newstar->stellar_type, newstar->core_mass, - *mcx); + *mc_CO); /* * Hence the luminosity */ - newstar->luminosity = lmcgbf(*mcx,newstar->GB); + newstar->luminosity = lmcgbf(*mc_CO,newstar->GB); #ifdef NEW_CORE_GROWTH @@ -154,7 +154,7 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, newstar->alt_luminosity = lmcgbf(newstar->CO_core_mass,newstar->GB); printf("NEW_CORE LEAGB %g NEW %g\n",newstar->luminosity,newstar->alt_luminosity); - printf("NEW_CORE MC CO %g NEW %g\n",*mcx,newstar->CO_core_mass); + printf("NEW_CORE MC CO %g NEW %g\n",*mc_CO,newstar->CO_core_mass); newstar->luminosity = lmcgbf(newstar->CO_core_mass,newstar->GB); printf("NEW L %g\n",newstar->luminosity); @@ -162,7 +162,7 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, #endif // NEW_CORE_GROWTH - newstar->mcx_EAGB = *mcx; + newstar->mcx_EAGB = *mc_CO; Dprint("Set newstar->mcx_EAGB = %g\n",newstar->mcx_EAGB); Dprint("mt=%12.12e core=%12.12e (if mt<core > TPAGB)\n", @@ -195,8 +195,8 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, * The core mass cannot shrink if we're post-AGB as * the CO core has already been built up! */ - newstar->core_mass = oldstar->stellar_type>TPAGB ? MAX(newstar->core_mass,*mcx) : *mcx; - //printf("set MC = MCO = %g %g\n",*mcx,newstar->core_mass); + newstar->core_mass = oldstar->stellar_type>TPAGB ? MAX(newstar->core_mass,*mc_CO) : *mc_CO; + //printf("set MC = MCO = %g %g\n",*mc_CO,newstar->core_mass); /* * Limit the core mass tot he total mass @@ -260,7 +260,7 @@ Boolean stellar_structure_EAGB(struct star_t * oldstar, Dprint("Star is EAGB\n"); Dprint("EAGB core mass %12.12e (CO core %12.12e)\n", - newstar->core_mass,*mcx); + newstar->core_mass,*mc_CO); newstar->max_EAGB_He_core_mass = MAX(newstar->max_EAGB_He_core_mass, newstar->core_mass); diff --git a/src/stellar_structure/stellar_structure_HeStar.c b/src/stellar_structure/stellar_structure_HeStar.c index a3557e578db867402ba6cf27e2b18890118f903a..2c3d8269e05f47572f58783431d12f939e23479d 100644 --- a/src/stellar_structure/stellar_structure_HeStar.c +++ b/src/stellar_structure/stellar_structure_HeStar.c @@ -11,11 +11,14 @@ void stellar_structure_HeStar(struct star_t * newstar, /* * Naked Helium Star */ - Dprint("Naked He Star (stellar type %d, M = %g)\n", - newstar->stellar_type,newstar->mass); + Dprint("Naked He Star (stellar type %d, M = %g, Menv = %g)\n", + newstar->stellar_type, + newstar->mass, + newstar->mass - newstar->core_mass); double tau; - const double * metallicity_parameters=stardata->common.metallicity_parameters; + const double * metallicity_parameters=stardata->common.metallicity_parameters; + Stellar_type stellar_type_in = newstar->stellar_type; newstar->core_radius = 0.0; #ifdef NUCSYN @@ -34,12 +37,15 @@ void stellar_structure_HeStar(struct star_t * newstar, } #endif - Dprint("Compare age=%g to tm=%g\n",newstar->age,newstar->tm); + Dprint("Compare age=%g to tm=%g (menv = %g)\n", + newstar->age, + newstar->tm, + newstar->mass - newstar->core_mass + ); /* core mass above which He burning continues */ double mc_Heburn = mc_heburn(newstar->mass); - if (newstar->age < newstar->tm) { /* @@ -90,60 +96,88 @@ void stellar_structure_HeStar(struct star_t * newstar, /* evaporation of star if too much mass is lost */ if(newstar->mass < metallicity_parameters[10] && newstar->mass < stardata->preferences->max_HeWD_mass) + { newstar->stellar_type = HeWD; + } } else { /* * Helium Shell Burning */ - Dprint("He Shell Burning\n"); + Dprint("He Shell Burning m = %g, menv = %g\n", + newstar->mass, + newstar->mass - newstar->core_mass + ); newstar->stellar_type = HeHG; - + Dprint("lgbtf : branch %d : tinf-t = %g A=GB8=%g\n", newstar->age < newstar->timescales[T_GIANT_TX] ? 0 : 1, (newstar->age < newstar->timescales[T_GIANT_TX] ? newstar->timescales[T_GIANT_TINF_1] : newstar->timescales[T_GIANT_TINF_2]) - newstar->age, newstar->GB[8]); - + +#ifdef CARBON_BURNING newstar->luminosity = lgbtf(newstar->age, - newstar->GB[8], - newstar->GB, - newstar->timescales[T_GIANT_TINF_1], - newstar->timescales[T_GIANT_TINF_2], - newstar->timescales[T_GIANT_TX]); + newstar->GB[8], + newstar->GB, + newstar->timescales[T_GIANT_TINF_1], + newstar->timescales[T_GIANT_TINF_2], + newstar->timescales[T_GIANT_TX]); +#else + newstar->luminosity = lgbtf(newstar->age, + newstar->GB[8], + newstar->GB, + newstar->timescales[T_GIANT_TINF_1], + newstar->timescales[T_GIANT_TINF_2], + newstar->timescales[T_GIANT_TX]); +#endif // CARBON_BURNING Dprint("Luminosity = %g from age = %g\n", newstar->luminosity, newstar->age); newstar->radius = rhehgf(newstar->mass, - newstar->luminosity, - *remnant_radius, - newstar->luminosities[L_END_MS]); + newstar->luminosity, + *remnant_radius, + newstar->luminosities[L_END_MS]); *rg = rhegbf(newstar->luminosity); - if(MORE_OR_EQUAL(newstar->radius,*rg)) + + /* + * Perhaps we're now a HeGB star? + */ + if(MORE_OR_EQUAL(newstar->radius,*rg) + || + stellar_type_in == HeGB + ) { newstar->stellar_type=HeGB; newstar->radius = *rg; } - Dprint("Radius %g (L=%g rg=%g stellar_type=%d mass=%g)\n", + Dprint("Radius %g (L=%g rg=%g stellar_type=%d mass=%g Teff=%g)\n", newstar->radius, newstar->luminosity, *rg, newstar->stellar_type, - newstar->mass + newstar->mass, + TEFFSTAR(newstar) ); /* CO core mass */ newstar->core_mass = mcgbf(newstar->luminosity, - newstar->GB, - newstar->luminosities[L_LMX]); + newstar->GB, + newstar->luminosities[L_LMX]); + + /* cannot exceed the total mass */ + newstar->core_mass = MIN(newstar->mass, newstar->core_mass); newstar->CO_core_mass = newstar->core_mass; *mtc = MIN(newstar->mass, mc_Heburn); - /* what is the maximum possible CO core mass? */ + /* + * what is the maximum possible CO core mass? + * this is when carbon ignites + */ double mcmax = MAX(stardata->preferences->chandrasekhar_mass, (0.7730*(newstar->phase_start_mass)-0.350)); @@ -154,9 +188,32 @@ void stellar_structure_HeStar(struct star_t * newstar, newstar->he_mcmax=mcmax; // save for use in nucsyn_WR #endif - Dprint("Helium star mc=%g m=%g mtc=%g mcmax=%g\n",newstar->core_mass,newstar->mass,*mtc,mcmax); + Dprint("Helium star mc=%g m=%g menv=%g mtc=%g mcmax=%g\n", + newstar->core_mass, + newstar->mass, + newstar->mass - newstar->core_mass, + *mtc, + mcmax); +#ifdef CARBON_BURNING if(MORE_OR_EQUAL(newstar->core_mass,mcmax)) + { + /* + * Carbon ignition + */ + if(IS_ZERO(newstar->t_start_carbon_burn)) + { + newstar->t_start_carbon_burn = newstar->age; + } + } +#endif // CARBON_BURNING + + if(MORE_OR_EQUAL(newstar->core_mass,mcmax) +#ifdef CARBON_BURNING + && + newstar->age - newstar->t_start_carbon_burn > stardata->preferences->carbon_burning_lifetime +#endif // CARBON_BURNING + ) { Dprint("core mass > mcmax, cf mc %g vs mcmax = %g and Mch = %g\n", newstar->core_mass, @@ -164,7 +221,7 @@ void stellar_structure_HeStar(struct star_t * newstar, stardata->preferences->chandrasekhar_mass ); - newstar->core_mass = mcmax; + newstar->core_mass = MIN(newstar->mass, mcmax); newstar->CO_core_mass = newstar->core_mass; if(newstar->core_mass < stardata->preferences->chandrasekhar_mass) @@ -202,6 +259,13 @@ void stellar_structure_HeStar(struct star_t * newstar, */ double mlim = MIN(mc_Heburn,newstar->mass); + /* + printf("Mc = %g : mcx = %g : stops He shell burning at %g\n", + newstar->core_mass, + newstar->mcx_EAGB, + mlim); + */ + if(MORE_OR_EQUAL(newstar->core_mass, mlim)) { newstar->stellar_type = COWD; @@ -234,8 +298,7 @@ void stellar_structure_HeStar(struct star_t * newstar, } } newstar->phase_start_mass = newstar->mass; - newstar->core_mass = newstar->mass; - newstar->CO_core_mass = newstar->mass; + newstar->core_mass = newstar->CO_core_mass = newstar->mass; } else { @@ -296,10 +359,10 @@ void stellar_structure_HeStar(struct star_t * newstar, newstar, Other_star_struct(newstar), newstar); - news->mass = bh_mass(newstar->mass, - newstar->core_mass, - stardata, - newstar); + news->mass = ns_bh_mass(newstar->mass, + newstar->core_mass, + stardata, + newstar); news->core_mass = newstar->mass; } else @@ -333,10 +396,10 @@ void stellar_structure_HeStar(struct star_t * newstar, /* * Calculate BH mass */ - double mbh=bh_mass(stardata->star[0].mass, - stardata->star[0].core_mass, - stardata, - &(stardata->star[0]))*M_SUN; + double mbh=ns_bh_mass(stardata->star[0].mass, + stardata->star[0].core_mass, + stardata, + &(stardata->star[0]))*M_SUN; /* * Calculate *innermost* last stable orbit radius (cm) @@ -368,10 +431,10 @@ void stellar_structure_HeStar(struct star_t * newstar, newstar, Other_star_struct(newstar), newstar); - news->mass = bh_mass(newstar->mass, - newstar->core_mass, - stardata, - newstar); + news->mass = ns_bh_mass(newstar->mass, + newstar->core_mass, + stardata, + newstar); news->core_mass = news->mass; } if(LESS_OR_EQUAL(news->mass, @@ -395,4 +458,10 @@ void stellar_structure_HeStar(struct star_t * newstar, } } } + + Dprint("Naked He Star out (stellar type %d, M = %g, Menv = %g)\n", + newstar->stellar_type, + newstar->mass, + newstar->mass - newstar->core_mass); + } diff --git a/src/stellar_structure/stellar_structure_NS.c b/src/stellar_structure/stellar_structure_NS.c index 1a9123845b4b12204662ce3719674b3533655350..07b047181eb566ae7cde671218e4e5a8e2c40cd4 100644 --- a/src/stellar_structure/stellar_structure_NS.c +++ b/src/stellar_structure/stellar_structure_NS.c @@ -8,7 +8,7 @@ void stellar_structure_NS(struct star_t * newstar, newstar->core_mass = newstar->mass; newstar->GB_core_mass = 0.0; newstar->CO_core_mass = newstar->mass; - newstar->luminosity=lns(newstar->mass,newstar->age); + newstar->luminosity = lns(newstar->mass,newstar->age); newstar->radius = rns(newstar->mass); if(newstar->core_mass > stardata->preferences->max_neutron_star_mass) @@ -21,13 +21,14 @@ void stellar_structure_NS(struct star_t * newstar, if(newstar->SN_type == SN_NONE) { newstar->SN_type = SN_AIC_BH; - struct star_t * newsSN = + struct star_t * news = new_supernova(stardata, newstar, Other_star_struct(newstar), newstar); - newsSN->stellar_type = BLACK_HOLE; - newsSN->age = 0.0; + news->stellar_type = BLACK_HOLE; + news->age = 0.0; + news->mass = newstar->mass; } } diff --git a/src/stellar_structure/stellar_structure_RG.c b/src/stellar_structure/stellar_structure_RG.c index 25053d38152c29334d6d97c88bca01f6d1d64395..ccfc8dc03df52447dfb49bd1b23dcf6a985ba0e9 100644 --- a/src/stellar_structure/stellar_structure_RG.c +++ b/src/stellar_structure/stellar_structure_RG.c @@ -217,8 +217,9 @@ Stellar_type stellar_structure_RG(struct star_t * newstar, if(MORE_OR_EQUAL(newstar->core_mass, newstar->mass)) { newstar->age=0.0; - - if(newstar->phase_start_mass > metallicity_parameters[ZPAR_MASS_HE_FLASH]) + + if(newstar->phase_start_mass > metallicity_parameters[ZPAR_MASS_HE_FLASH] || + newstar->core_mass > min_He_ignition_core_mass(stardata,newstar)) { /* * Zero-age helium star diff --git a/src/stellar_structure/stellar_structure_TPAGB.c b/src/stellar_structure/stellar_structure_TPAGB.c index 6d0bd42cff947756bf9bc7aca141cc81dc82600b..43c450953ca1ae58368ade5d8d76842a16291dab 100644 --- a/src/stellar_structure/stellar_structure_TPAGB.c +++ b/src/stellar_structure/stellar_structure_TPAGB.c @@ -84,7 +84,9 @@ void stellar_structure_TPAGB(struct star_t * newstar, newstar->phase_start_mass, newstar, stardata); - newstar->core_mass = MIN(mc1tp,newstar->core_mass); + + newstar->core_mass = MAX(newstar->CO_core_mass, + MIN(mc1tp,newstar->core_mass)); newstar->mc_1tp = newstar->core_mass; newstar->core_mass_no_3dup = newstar->core_mass; newstar->menv_1tp = newstar->mass - newstar->core_mass; @@ -291,21 +293,29 @@ void stellar_structure_TPAGB(struct star_t * newstar, */ dmc = MIN(newstar->mass - newstar->core_mass, dmc); + /* + * Hence the change in core mass + */ + double ddmc = dmc - newstar->dm_3dup; + /* * Note: dt, and hence dmc, could be negative. */ - Dprint("dmc = %g from dmc/dt = %g, qh6 = %g, L = %g, dt = %g, newstar->dm_3dup = %g\n", + Dprint("dmc = %g from dmc/dt = %g, qh6 = %g, L = %g, dt = %g, newstar->dm_3dup = %g ::: ddmc = %g\n", dmc, dmcdt, qh6, newstar->luminosity, stardata->model.dt, - newstar->dm_3dup); + newstar->dm_3dup, + ddmc + ); - newstar->core_mass += dmc - newstar->dm_3dup; + newstar->core_mass += ddmc; newstar->core_mass_no_3dup += dmc; newstar->dmc_prev_pulse += dmc; + Dprint("dmc prev pulse += %g to %g\n", dmc, newstar->dmc_prev_pulse); @@ -317,7 +327,7 @@ void stellar_structure_TPAGB(struct star_t * newstar, newstar->dntp, Next_pulse(newstar), 1e6*newstar->interpulse_period); - + } else if(core_algorithm == AGB_CORE_ALGORITHM_HURLEY) { @@ -541,7 +551,8 @@ void stellar_structure_TPAGB(struct star_t * newstar, stardata); #else - newstar->core_radius = 5.0*remnant_radius; + + newstar->core_radius = 5.0*rwd(newstar->core_mass,stardata); #endif // HALL_TOUT_2014_RADII Dprint("Pre-nucsyn_tpagb mc=%12.12e\n",newstar->core_mass); @@ -638,7 +649,7 @@ static double lambda_3dup(struct stardata_t * stardata, } - + Dprint("Calc lambda : Boolean %d : menv %g > %g ? -> above mcmin %d, lambda = %g\n", stardata->preferences->third_dup, MAX(0.0,newstar->mass - newstar->core_mass), @@ -741,10 +752,12 @@ static double lambda_3dup_Karakas( Karakas_lamaxf(newstar->phase_start_mass, stardata->common.metallicity)); + Dprint("lammax = %g\n",lammax); Clamp(lammax,stardata->preferences->lambda_min,1.0); lambda = (1.0-exp(-newstar->num_thermal_pulses_since_mcmin/rr[0])) *lammax; * above_mcmin = TRUE; + } Dprint("Lambda 3dup Karakas lambda = %g, above mcmin? %d (NTP since mcmin %g)\n", @@ -765,7 +778,8 @@ static double Karakas_lamaxf(double m, * formula by Amanda Karakas (for non-overshooting models!). */ double l=0.0; - + const double m3 = POW3(m); + /* * Maximum dredge-up parameter (asymptotic value) as a function * of total mass M and metallicity Z. @@ -792,13 +806,16 @@ static double Karakas_lamaxf(double m, //const double a4[ASIZE] = {-0.82367052137017,0.855045797056254,0.075969726978165,0.094591645793495}; /* better fit from Rob */ - //const double a4[ASIZE] = {-8.90480e-01,8.84020e-01,1.12030e-01,1.41860e-01}; + const double a4[ASIZE] = {-8.90480e-01,8.84020e-01,1.12030e-01,1.41860e-01}; /* new fit based on Amanda's new "radius tables": * This is a smoother transition from amanda's functions to the newer fit * and neglects her pulses which have lambda>1.1 (the 'degenerate' pulses - I guess!) + * + * Note: this breaks at 4Msun Z=0.0001 - oh dear! + * Best avoided then, use the "better fit" above. */ - const double a4[ASIZE]={-5.62410e-01,7.32720e-01,1.63250e-02,3.45080e-02}; + //const double a4[ASIZE]={-5.62410e-01,7.32720e-01,1.63250e-02,3.45080e-02}; double a[ASIZE]; double zz = z; //log10(z/0.02); @@ -834,7 +851,7 @@ static double Karakas_lamaxf(double m, } - double m3=POW3(m); + /* hence the fit */ l = (a[0] + a[1]*m + a[2]*m3)/(1.0 + a[3]*m3); diff --git a/src/stellar_structure/stellar_structure_WD.c b/src/stellar_structure/stellar_structure_WD.c index 5206fc4c678b8a5edca37bf98d59f9d31cdc7335..572c744fa1cc2ff87e6a759707b516a1c1e74a61 100644 --- a/src/stellar_structure/stellar_structure_WD.c +++ b/src/stellar_structure/stellar_structure_WD.c @@ -36,7 +36,7 @@ void stellar_structure_WD(struct star_t * newstar, * unless WD is ONe in which case we assume a NS * is the remnant. Jarrod's 2007 code sets the * mass to 1.3Msun, but in this version we let the - * mass be set by the bh_mass function. + * mass be set by the ns_bh_mass function. */ Dprint("above Chandrasekhar Mass, M = %g, Mch = %g\n", newstar->mass, @@ -53,7 +53,7 @@ void stellar_structure_WD(struct star_t * newstar, Other_star_struct(newstar), newstar); newstar->stellar_type = NEUTRON_STAR; - newstar->mass = bh_mass(newstar->mass, + newstar->mass = ns_bh_mass(newstar->mass, newstar->mass, stardata,newstar); } diff --git a/src/stellar_structure/stellar_structure_prototypes.h b/src/stellar_structure/stellar_structure_prototypes.h index b32e5678331e93525eb42a40e9971926fe834b0c..2bc4a8c32abc7a200522e31a189415c5cc479022 100644 --- a/src/stellar_structure/stellar_structure_prototypes.h +++ b/src/stellar_structure/stellar_structure_prototypes.h @@ -119,9 +119,9 @@ void stellar_structure_remnant_and_perturbations(struct star_t * newstar, struct stardata_t * stardata); void stellar_structure_small_envelope_perturbations(struct stardata_t * staradata, struct star_t * newstar, - double mtc, - double lx, - double rx); + const double mtc, + const double remnant_luminosity, + const double remnant_radius); void stellar_structure_nucsyn(Stellar_type stellar_type, Stellar_type stellar_typein, struct star_t * star, @@ -188,7 +188,14 @@ void stellar_structure_modified_BSE( Supernova_type * new_SN_type ); -void nucsyn_angelou_lithium(struct stardata_t * stardata, - struct star_t * star); + +void stellar_structure_small_envelope_miller_bertolami(struct stardata_t * stardata, + struct star_t * star, + const double remnant_radius, + const double remnant_luminosity + ); + + + #endif /*STELLAR_STRUCTURE_PROTOTYPES_H*/ diff --git a/src/stellar_structure/stellar_structure_remnant_and_perturbations.c b/src/stellar_structure/stellar_structure_remnant_and_perturbations.c index cc17ca3026fcdc15d721b793846d7f7711ced216..80c83282cedd21c4f0ecc620fbc2435a3934db10 100644 --- a/src/stellar_structure/stellar_structure_remnant_and_perturbations.c +++ b/src/stellar_structure/stellar_structure_remnant_and_perturbations.c @@ -19,7 +19,7 @@ void stellar_structure_remnant_and_perturbations(struct star_t * newstar, { const double * metallicity_parameters=stardata->common.metallicity_parameters; - Dprint("Calculating core radius, lum and rad of remn a nt star.\n"); + Dprint("Calculating core radius, lum and rad of remn a nt star, stellar type %d.\n",newstar->stellar_type); double tau = 0.0; @@ -52,9 +52,9 @@ void stellar_structure_remnant_and_perturbations(struct star_t * newstar, remnant_radius = rwd(newstar->core_mass,stardata); #ifdef HALL_TOUT_2014_RADII - newstar->core_radius = Hall_Tout_2014_low_mass_HG_RGB_radius(newstar->core_mass, - stardata); - + newstar->core_radius = + Hall_Tout_2014_low_mass_HG_RGB_radius(newstar->core_mass, + stardata); #else newstar->core_radius = 5.0*remnant_radius; #endif // HALL_TOUT_2014_RADII @@ -214,16 +214,24 @@ void stellar_structure_remnant_and_perturbations(struct star_t * newstar, #ifdef HALL_TOUT_2014_RADII if(newstar->stellar_type==HeHG) { - newstar->core_radius = Hall_Tout_2014_HeHG_radius(newstar->core_mass); + newstar->core_radius = + Hall_Tout_2014_HeHG_radius(newstar->core_mass); } else if(newstar->stellar_type==HeGB) { - newstar->core_radius = Hall_Tout_2014_HeGB_radius(newstar->core_mass, - stardata); + newstar->core_radius = + Hall_Tout_2014_HeGB_radius(newstar->core_mass, + stardata); } #else newstar->core_radius = 5.0*remnant_radius; #endif + newstar->core_radius = MAX(1.4e-5, newstar->core_radius); + + Dprint("Helium giant remn ant: L=%g R=%g -> Rc=%g\n", + remnant_luminosity, + remnant_radius, + newstar->core_radius); } else { @@ -238,7 +246,7 @@ void stellar_structure_remnant_and_perturbations(struct star_t * newstar, * * Note: only do this if we're not about to explode as a SN. */ - if(newstar->SN_type == SN_NONE) + //if(newstar->SN_type == SN_NONE) { stellar_structure_small_envelope_perturbations( stardata, diff --git a/src/stellar_structure/stellar_structure_small_envelope_miller_bertolami.c b/src/stellar_structure/stellar_structure_small_envelope_miller_bertolami.c new file mode 100644 index 0000000000000000000000000000000000000000..9317e08abd6ea0b4aea4713730206272a876d90a --- /dev/null +++ b/src/stellar_structure/stellar_structure_small_envelope_miller_bertolami.c @@ -0,0 +1,170 @@ +#include "../binary_c.h" + +/* + * Choose one or the other + */ +#define USE_DIRECT +//#define USE_FITS + + +#ifdef USE_DIRECT +#include "miller_bertolami_postagb.h" +#include "miller_bertolami_postagb_n.h" +#endif + +#ifdef USE_FITS +#include "miller_bertolami_postagb_coeffs_n.h" +#endif + +void stellar_structure_small_envelope_miller_bertolami(struct stardata_t * stardata, + struct star_t * star, + double remnant_radius, + double remnant_luminosity + ) +{ + + double menv = star->mass - star->core_mass; +#ifdef USE_DIRECT + + /* + * Use tracks for Miller Bertolami to calculate the + * decline in L and R. + * + * These are valid when menv/M < 0.01 and L > 1.0 Lsun + */ + if(menv/star->mass < 0.01 && star->luminosity > 1.0) + { + double param[TABLE_MILLER_BERTOLAMI_N_PARAMS] = + { + log10(stardata->common.metallicity), + log10(star->core_mass), // assume mass is ~ core_mass ~ constant + log10(menv/star->mass) + }; + double data[TABLE_MILLER_BERTOLAMI_N_DATA]; + + //test_table(stardata,stardata->store->miller_bertolami); + + Interpolate(stardata->store->miller_bertolami, + param, + data, + FALSE); + + /* + * Data give + * + * 0 : log10(L/Lsun) + * 1 : log10(L/Linit) = log10(fL) + * 2 : log10(R/Rsun) + * 3 : log10(R/Rinit) = log10(fR) + * + * as a function of M,Menv,Z + * + * When the multipliers fL, fR are > 1, cap them at 1. + */ + double fL = MIN(1.0,pow(10.0,data[1])); + double fR = MIN(1.0,pow(10.0,data[3])); + star->luminosity *= fL; + star->radius *= fR; + printf("FACS kw=%d t=%20.12e age=%20.12e m=%g mc=%g menv=%g (param: %g, %g, %g) -> (data: %g %g %g %g): fL=%g fR=%g -> L=%g R=%g (MB L=%g R=%g)\n", + star->stellar_type, + stardata->model.time, + star->age, + star->mass, + star->core_mass, + menv, + param[0], + param[1], + param[2], + data[0], + data[1], + data[2], + data[3], + fL, + fR, + star->luminosity, + star->radius, + pow(10.0,data[0]), + pow(10.0,data[2]) + ); + } + +#endif + +#ifdef USE_FITS + double x = log10(menv / star->mass); + + { + /* + * Interpolate to get coefficients for R + */ + double param[TABLE_MILLER_BERTOLAMI_COEFFS_R_N_PARAMS] = + { + stardata->common.metallicity, + star->core_mass + }; + double data[TABLE_MILLER_BERTOLAMI_COEFFS_R_N_DATA]; + + Interpolate(stardata->store->miller_bertolami_coeffs_R, + param, + data, + FALSE); + + double fR = MIN3(0, + data[0] / (1.0 + exp(data[1] * x + data[2])) - data[3], + data[4] + data[5] * x); + fR = pow(10.0,fR); + star->radius *= fR; + + printf("Interpolate R %g %g -> %g %g %g %g %g %g -> fR(%g) = %g\n", + param[0], + param[1], + data[0], + data[1], + data[2], + data[3], + data[4], + data[5], + x, + fR); + } + + { + /* + * Interpolate to get coefficients for L + */ + double param[TABLE_MILLER_BERTOLAMI_COEFFS_L_N_PARAMS] = + { + stardata->common.metallicity, + star->core_mass + }; + double data[TABLE_MILLER_BERTOLAMI_COEFFS_L_N_DATA]; + + Interpolate(stardata->store->miller_bertolami_coeffs_L, + param, + data, + FALSE); + + + double fL = MIN3(0, + data[0] / (1.0 + exp(data[1] * x + data[2])) - data[3], + data[4] + data[5] * x); + fL = pow(10.0,fL); + star->luminosity *= fL; + + printf("Interpolate L %g %g -> %g %g %g %g %g %g -> fL(%g) = %g\n", + param[0], + param[1], + data[0], + data[1], + data[2], + data[3], + data[4], + data[5], + x, + fL + ); + } + +#endif +} + diff --git a/src/stellar_structure/stellar_structure_small_envelope_perturbations.c b/src/stellar_structure/stellar_structure_small_envelope_perturbations.c index 54e263cccc261354219495a241ef0c932b0ae1ba..99eefa159c5d3f55452df6d9e47ebe1ad189bb81 100644 --- a/src/stellar_structure/stellar_structure_small_envelope_perturbations.c +++ b/src/stellar_structure/stellar_structure_small_envelope_perturbations.c @@ -11,181 +11,224 @@ void stellar_structure_small_envelope_perturbations(struct stardata_t * stardata, struct star_t * newstar, double mtc, // Mc,max in Jarrod's thesis - double remnant_luminosity, - double remnant_radius) + const double remnant_luminosity, + const double remnant_radius) { Dprint("Perturbing lum and rad due to small envelope mass, stellar type =%d was l=%12.12e r=%12.12e\n", newstar->stellar_type,newstar->luminosity,newstar->radius); double mu=0.0; + + /* + * Decide which algorithm to use. + * + * If stellar_type is GB or AGB, we can use the + * Miller Bertolami tables. + * + * Otherwise, use the Hurley et al. (2002) algorithm. + */ + int method = + stardata->preferences->small_envelope_method == + + /* if we want to use Hurley+ 2002, always use it */ + SMALL_ENVELOPE_METHOD_HURLEY ? SMALL_ENVELOPE_METHOD_HURLEY : + + /* if we're GB or AGB, we can use Miller Bertolami's tracks */ + ( + ON_GIANT_BRANCH(newstar->stellar_type)&& + stardata->preferences->small_envelope_method == SMALL_ENVELOPE_METHOD_MILLER_BERTOLAMI + ) + ? + SMALL_ENVELOPE_METHOD_MILLER_BERTOLAMI : + /* but fall back on Hurley+ 2002 with other stellar types */ + SMALL_ENVELOPE_METHOD_HURLEY; - if(newstar->stellar_type>MAIN_SEQUENCE && - newstar->stellar_type<HeWD && - newstar->stellar_type!=HeMS) - { - if(newstar->stellar_type>=HeHG) - { - mu = (1.0 - newstar->core_mass/mtc)*5.0; - Dprint("mu = %g from mc=%g mcmax=%g : 'menv'=%g\n",mu,newstar->core_mass,mtc,mtc-newstar->core_mass); - } - else - { - mu = (1.0 - newstar->core_mass/newstar->mass)*MIN(5.0,MAX(1.20, pow(newstar->luminosity/LUM0,KAP))); - Dprint("mu = %g from mc=%g newstar->mass=%g multiplier=%g : menv=%g\n",mu,newstar->core_mass,newstar->mass,MIN(5.0,MAX(1.20, pow(newstar->luminosity/LUM0,KAP))),newstar->mass-newstar->core_mass); - } + if(method == SMALL_ENVELOPE_METHOD_HURLEY) + { + if(newstar->stellar_type>MAIN_SEQUENCE && + newstar->stellar_type<HeWD && + newstar->stellar_type!=HeMS) + { + if(newstar->stellar_type>=HeHG) + { + mu = (1.0 - newstar->core_mass/mtc)*5.0; + Dprint("mu = %g from mc=%g mcmax=%g : 'menv'=%g\n",mu,newstar->core_mass,mtc,mtc-newstar->core_mass); + } + else + { + mu = (1.0 - newstar->core_mass/newstar->mass)*MIN(5.0,MAX(1.20, pow(newstar->luminosity/LUM0,KAP))); + Dprint("mu = %g from mc=%g newstar->mass=%g multiplier=%g : menv=%g\n",mu,newstar->core_mass,newstar->mass,MIN(5.0,MAX(1.20, pow(newstar->luminosity/LUM0,KAP))),newstar->mass-newstar->core_mass); + } - if(mu<1.0) - { - /* - * Perturbation coefficients - * - * If you look at the equations in Hurley's thesis, Eqs. 2.127 and 2.128, p.58, - * they look terribly complicated. - * - * However, if you just take logs and treat s,r (lpert and rpert here) - * as magical constants, it's just an interpolation formula. The - * effective temperature of the remnant is then: - * - * 4 log T' = [ s log L + (1-s) log Lc ] - * -2 [ r log R + (1-r) log Rc ] + log (4 pi sigma) - * - * As you can see, the "luminosity" and "radius" parts are simply - * replaced by interpolations between log L and Lc, or log R and Rc. - * - * The problem is that sometimes this implies the remnant - * of the star is >> the temperature of the remnant. To determine - * when, just set log T' > log Tc. Enable LIMIT_RPERT to prevent - * this from happening (by limiting rpert while keeping lpert fixed). - * - * This is, of course, probably not realistic. - * - * How are r and s calculated? sigh. Now *that* is complicated :( - */ - double lpert=lpertf(newstar->mass,mu); - double rpert=rpertf(newstar->mass,mu,newstar->radius,remnant_radius); + if(mu<1.0) + { + /* + * Perturbation coefficients + * + * If you look at the equations in Hurley's thesis, Eqs. 2.127 and 2.128, p.58, + * they look terribly complicated. + * + * However, if you just take logs and treat s,r (lpert and rpert here) + * as magical constants, it's just an interpolation formula. The + * effective temperature of the remnant is then: + * + * 4 log T' = [ s log L + (1-s) log Lc ] + * -2 [ r log R + (1-r) log Rc ] + log (4 pi sigma) + * + * As you can see, the "luminosity" and "radius" parts are simply + * replaced by interpolations between log L and Lc, or log R and Rc. + * + * The problem is that sometimes this implies the remnant + * of the star is >> the temperature of the remnant. To determine + * when, just set log T' > log Tc. Enable LIMIT_RPERT to prevent + * this from happening (by limiting rpert while keeping lpert fixed). + * + * This is, of course, probably not realistic. + * + * How are r and s calculated? sigh. Now *that* is complicated :( + */ + double lpert=lpertf(newstar->mass,mu); + double rpert=rpertf(newstar->mass,mu,newstar->radius,remnant_radius); #ifdef LIMIT_RPERT - double rlim = lpert*0.5*log10(newstar->luminosity/remnant_luminosity)/log10(newstar->radius/remnant_radius); - rpert = MAX(rlim,rpert); - Dprint("Limit rpert to rlim=%g\n",rlim); + double rlim = lpert*0.5*log10(newstar->luminosity/remnant_luminosity)/log10(newstar->radius/remnant_radius); + rpert = MAX(rlim,rpert); + Dprint("Limit rpert to rlim=%g\n",rlim); #endif - Dprint("exponents s=%g r=%g\n", - lpert, - rpert); - Dprint("L=%g Lc=%g : L/Lc=%g\n", - newstar->luminosity, - remnant_luminosity, - newstar->luminosity/remnant_luminosity); - Dprint("R=%g Rc=%g (%g km) : R/Rc=%g\n", - newstar->radius, - remnant_radius, - remnant_radius*R_SUN*1e-5, - newstar->radius/remnant_radius); - Dprint("Teff star=%g remn_ant=%g\n", - TEFF_FROM_LUMRAD(newstar->luminosity,newstar->radius), - TEFF_FROM_LUMRAD(remnant_luminosity,remnant_radius)); - Dprint("Pre-perturb:\n"); - Dprint("4 logT = log L - 2 log R - log(4 pi sigma)\n"); - Dprint("4 logT = [ log %g ] - 2 [ log %g ] - log(4 pi sigma)\n", - newstar->luminosity, - newstar->radius); - Dprint("4 logT = [ %g ] - 2 [ %g ] - log(4 pi sigma)\n", - log10(newstar->luminosity), - log10(newstar->radius)); - Dprint("4 logT = %g - %g - %g\n", - log10(newstar->luminosity), - 2.0*log10(newstar->radius), - log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)); - Dprint("4 logT = %g\n", - log10(newstar->luminosity)-2.0*log10(newstar->radius) - -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)); - Dprint(" logT = %g\n", - 0.25*(log10(newstar->luminosity)-2.0*log10(newstar->radius) - -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT))); - Dprint(" T = %g\n\n", - pow(10.0, + Dprint("exponents s=%g r=%g\n", + lpert, + rpert); + Dprint("L=%g Lc=%g : L/Lc=%g\n", + newstar->luminosity, + remnant_luminosity, + newstar->luminosity/remnant_luminosity); + Dprint("R=%g Rc=%g (%g km) : R/Rc=%g\n", + newstar->radius, + remnant_radius, + remnant_radius*R_SUN*1e-5, + newstar->radius/remnant_radius); + Dprint("Teff star=%g remn_ant=%g\n", + TEFF_FROM_LUMRAD(newstar->luminosity,newstar->radius), + TEFF_FROM_LUMRAD(remnant_luminosity,remnant_radius)); + Dprint("Pre-perturb:\n"); + Dprint("4 logT = log L - 2 log R - log(4 pi sigma)\n"); + Dprint("4 logT = [ log %g ] - 2 [ log %g ] - log(4 pi sigma)\n", + newstar->luminosity, + newstar->radius); + Dprint("4 logT = [ %g ] - 2 [ %g ] - log(4 pi sigma)\n", + log10(newstar->luminosity), + log10(newstar->radius)); + Dprint("4 logT = %g - %g - %g\n", + log10(newstar->luminosity), + 2.0*log10(newstar->radius), + log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)); + Dprint("4 logT = %g\n", + log10(newstar->luminosity)-2.0*log10(newstar->radius) + -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)); + Dprint(" logT = %g\n", 0.25*(log10(newstar->luminosity)-2.0*log10(newstar->radius) - -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)))); - Dprint("Perturbation\n\n"); - Dprint("4 logT = [ (1-s) log Lc + s log L ] - 2 [ (1-r) log Rc + r log R ] - log(4 pi sigma)\n"); - Dprint("4 logT = [ %g log Lc + %g log L ] - 2 [ %g log Rc + %g log R ] - log(4 pi sigma)\n", - 1.0-lpert,lpert, - 1.0-rpert,rpert); - Dprint("4 logT = [ %g log %g + %g log %g ] - 2 [ %g log %g + %g log %g ] - log(4 pi sigma)\n", - 1.0-lpert,remnant_luminosity,lpert,newstar->luminosity, - 1.0-rpert,remnant_radius,rpert,newstar->radius); - Dprint("4 logT = [ %g * %g + %g * %g ] - 2 [ %g * %g + %g * %g ] - log(4 pi sigma)\n", - 1.0-lpert,log10(remnant_luminosity), - lpert,log10(newstar->luminosity), - 1.0-rpert,log10(remnant_radius), - rpert,log10(newstar->radius)); - Dprint("4 logT = [ %g + %g ] - 2 [ %g + %g ] - log(4 pi sigma)\n", - (1.0-lpert)*log10(remnant_luminosity), - lpert*log10(newstar->luminosity), - (1.0-rpert)*log10(remnant_radius), - rpert*log10(newstar->radius)); - Dprint("4 logT = [ %g ] - 2 [ %g ] - log(4 pi sigma)\n", - (1.0-lpert)*log10(remnant_luminosity)+ - lpert*log10(newstar->luminosity), - (1.0-rpert)*log10(remnant_radius)+ - rpert*log10(newstar->radius)); - Dprint("4 logT = %g - %g - %g\n", - (1.0-lpert)*log10(remnant_luminosity)+ - lpert*log10(newstar->luminosity), - 2.0*((1.0-rpert)*log10(remnant_radius)+ - rpert*log10(newstar->radius)), - log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)); - Dprint("4 logT = %g\n", - (1.0-lpert)*log10(remnant_luminosity)+ - lpert*log10(newstar->luminosity) - -2.0*((1.0-rpert)*log10(remnant_radius)+ - rpert*log10(newstar->radius)) - -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)); - Dprint(" logT = %g\n", - 0.25*((1.0-lpert)*log10(remnant_luminosity)+ - lpert*log10(newstar->luminosity) - -2.0*((1.0-rpert)*log10(remnant_radius)+ - rpert*log10(newstar->radius)) - -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT))); - Dprint(" T = %g\n\n", - pow(10.0,0.25*((1.0-lpert)*log10(remnant_luminosity)+ - lpert*log10(newstar->luminosity) - -2.0*((1.0-rpert)*log10(remnant_radius)+ - rpert*log10(newstar->radius)) - -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)))); - Dprint("perturbed radius\n"); - Dprint("log R = %g log %g + %g log %g = %g * %g + %g * %g = %g + %g = %g > R=%g\n\n", - 1.0-rpert,remnant_radius,rpert,newstar->radius, - (1.0-rpert), - log10(remnant_radius), - rpert, - log10(newstar->radius), - (1.0-rpert)*log10(remnant_radius),rpert*log10(newstar->radius), - (1.0-rpert)*log10(remnant_radius)+rpert*log10(newstar->radius), - pow(10,(1.0-rpert)*log10(remnant_radius)+ - rpert*log10(newstar->radius))); - Dprint("Error condition : %g > %g\n", - lpert * log10(newstar->luminosity/remnant_luminosity), - 2.0*rpert *log10(newstar->radius/remnant_radius)); + -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT))); + Dprint(" T = %g\n\n", + pow(10.0, + 0.25*(log10(newstar->luminosity)-2.0*log10(newstar->radius) + -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)))); + Dprint("Perturbation\n\n"); + Dprint("4 logT = [ (1-s) log Lc + s log L ] - 2 [ (1-r) log Rc + r log R ] - log(4 pi sigma)\n"); + Dprint("4 logT = [ %g log Lc + %g log L ] - 2 [ %g log Rc + %g log R ] - log(4 pi sigma)\n", + 1.0-lpert,lpert, + 1.0-rpert,rpert); + Dprint("4 logT = [ %g log %g + %g log %g ] - 2 [ %g log %g + %g log %g ] - log(4 pi sigma)\n", + 1.0-lpert,remnant_luminosity,lpert,newstar->luminosity, + 1.0-rpert,remnant_radius,rpert,newstar->radius); + Dprint("4 logT = [ %g * %g + %g * %g ] - 2 [ %g * %g + %g * %g ] - log(4 pi sigma)\n", + 1.0-lpert,log10(remnant_luminosity), + lpert,log10(newstar->luminosity), + 1.0-rpert,log10(remnant_radius), + rpert,log10(newstar->radius)); + Dprint("4 logT = [ %g + %g ] - 2 [ %g + %g ] - log(4 pi sigma)\n", + (1.0-lpert)*log10(remnant_luminosity), + lpert*log10(newstar->luminosity), + (1.0-rpert)*log10(remnant_radius), + rpert*log10(newstar->radius)); + Dprint("4 logT = [ %g ] - 2 [ %g ] - log(4 pi sigma)\n", + (1.0-lpert)*log10(remnant_luminosity)+ + lpert*log10(newstar->luminosity), + (1.0-rpert)*log10(remnant_radius)+ + rpert*log10(newstar->radius)); + Dprint("4 logT = %g - %g - %g\n", + (1.0-lpert)*log10(remnant_luminosity)+ + lpert*log10(newstar->luminosity), + 2.0*((1.0-rpert)*log10(remnant_radius)+ + rpert*log10(newstar->radius)), + log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)); + Dprint("4 logT = %g\n", + (1.0-lpert)*log10(remnant_luminosity)+ + lpert*log10(newstar->luminosity) + -2.0*((1.0-rpert)*log10(remnant_radius)+ + rpert*log10(newstar->radius)) + -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)); + Dprint(" logT = %g\n", + 0.25*((1.0-lpert)*log10(remnant_luminosity)+ + lpert*log10(newstar->luminosity) + -2.0*((1.0-rpert)*log10(remnant_radius)+ + rpert*log10(newstar->radius)) + -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT))); + Dprint(" T = %g\n\n", + pow(10.0,0.25*((1.0-lpert)*log10(remnant_luminosity)+ + lpert*log10(newstar->luminosity) + -2.0*((1.0-rpert)*log10(remnant_radius)+ + rpert*log10(newstar->radius)) + -log10(4.0*PI*STEFAN_BOLTZMANN_CONSTANT*CGS_CONV_CONSTANT)))); + Dprint("perturbed radius\n"); + Dprint("log R = %g log %g + %g log %g = %g * %g + %g * %g = %g + %g = %g > R=%g\n\n", + 1.0-rpert,remnant_radius,rpert,newstar->radius, + (1.0-rpert), + log10(remnant_radius), + rpert, + log10(newstar->radius), + (1.0-rpert)*log10(remnant_radius),rpert*log10(newstar->radius), + (1.0-rpert)*log10(remnant_radius)+rpert*log10(newstar->radius), + pow(10,(1.0-rpert)*log10(remnant_radius)+ + rpert*log10(newstar->radius))); + Dprint("Error condition : %g > %g\n", + lpert * log10(newstar->luminosity/remnant_luminosity), + 2.0*rpert *log10(newstar->radius/remnant_radius)); - newstar->luminosity = remnant_luminosity* - pow(newstar->luminosity/remnant_luminosity,lpert); + newstar->luminosity = remnant_luminosity* + pow(newstar->luminosity/remnant_luminosity,lpert); - if (LESS_OR_EQUAL(newstar->radius,remnant_radius)) - { - newstar->radius = remnant_radius; - } - else - { - newstar->radius = remnant_radius* - pow(newstar->radius/remnant_radius,rpert); + if (LESS_OR_EQUAL(newstar->radius,remnant_radius)) + { + newstar->radius = remnant_radius; + } + else + { + newstar->radius = remnant_radius* + pow(newstar->radius/remnant_radius,rpert); + } + Dprint("real perturbed T=%g\n", + TEFF_FROM_LUMRAD(newstar->luminosity, + newstar->radius)); } - Dprint("real perturbed T=%g\n", - TEFF_FROM_LUMRAD(newstar->luminosity, - newstar->radius)); + newstar->core_radius = MIN(newstar->core_radius,newstar->radius); } - newstar->core_radius = MIN(newstar->core_radius,newstar->radius); + + } + else if(method == SMALL_ENVELOPE_METHOD_MILLER_BERTOLAMI) + { + stellar_structure_small_envelope_miller_bertolami(stardata, + newstar, + remnant_radius, + remnant_luminosity); + } + else + { + Exit_binary_c(ALGORITHM_OUT_OF_RANGE, + "Unknown method = %d for small envelope perturbations.", + method); } + + Dprint("Post-perturb: l=%12.12e r=%12.12e teff=%g\n", newstar->luminosity, newstar->radius, diff --git a/src/stellar_timescales/stellar_timescales.c b/src/stellar_timescales/stellar_timescales.c index f3ce7eefde98a1a4795c0894bd143d27efb56fd6..ec61b06cff1050137d679c58dbc3957ef21f1420 100644 --- a/src/stellar_timescales/stellar_timescales.c +++ b/src/stellar_timescales/stellar_timescales.c @@ -1,6 +1,5 @@ #include "../binary_c.h" - /* * Computes the characteristic luminosities and timescales * at different stages of stellar evolution. @@ -59,21 +58,40 @@ #undef Cprint #if (DEBUG==1) -#define Cprint(...) if((DEBUG)&&(Debug_expression))debug_fprintf(__FILE__,__LINE__,__VA_ARGS__); +#define Cprint(...) \ + if((DEBUG) && (Debug_expression)) \ + debug_fprintf(__FILE__,__LINE__,__VA_ARGS__); //#undef STELLAR_TIMESCALES_CACHE #else #define Cprint(...) /**/; #endif -#define OUTLOOP(A,B) {unsigned int i;for(i=1;i<=A;i++){Dprint("%d=%12.12e ",i,B[i]);}} -#define OUTLOOP_STRING(A,S,B) {unsigned int i;char *c;for(i=1;i<=A;i++){if((i>0)&&(B[i]<B[i-1])){c=BRIGHT_YELLOW;}else{c="";};Dprint("% 10d = % 20s = %s%12.12e%s \n",i,S[i],c,B[i],COLOUR_RESET);}} +#define OUTLOOP(A,B) { \ + unsigned int i; \ + for(i=1;i<=A;i++) \ + { \ + Dprint("%d=%12.12e ",i,B[i]); \ + } \ + } +#define OUTLOOP_STRING(A,S,B) { \ + unsigned int i; \ + for(i=1;i<=A;i++) \ + { \ + Dprint("% 10d = % 20s = %s%12.12e%s \n", \ + i, \ + S[i], \ + ((i>0 && B[i]<B[i-1]) ? BRIGHT_YELLOW : ""), \ + B[i], \ + COLOUR_RESET); \ + } \ + } #ifdef STELLAR_TIMESCALES_CACHE_DEBUG static void stellar_timescales_dump(double *GB, - double *lums, - double *tscls, - double tm,double tn); -#endif + double *lums, + double *tscls, + double tm,double tn); +#endif // STELLAR_TIMESCALES_CACHE_DEBUG void stellar_timescales(const Stellar_type stellar_type, double mass, @@ -87,11 +105,12 @@ void stellar_timescales(const Stellar_type stellar_type, struct star_t * RESTRICT star ) { - Dprint("stellar timescales star %d in st=%d m0=%g mt=%g\ntimescales = %p, luminosities = %p, GB = %p\n", + Dprint("stellar timescales star %d in st=%d m0=%g mt=%g age=%g\ntimescales = %p, luminosities = %p, GB = %p\n", star->starnum, stellar_type, mass, mt, + star->age, timescales, luminosities, GB); diff --git a/src/stellar_timescales/stellar_timescales_post_HG.c b/src/stellar_timescales/stellar_timescales_post_HG.c index 2db253d44701bb7330124d001b88db8e46d69f81..7c61a755010cb905112ab4eb23793db9c37035fd 100644 --- a/src/stellar_timescales/stellar_timescales_post_HG.c +++ b/src/stellar_timescales/stellar_timescales_post_HG.c @@ -103,14 +103,20 @@ int stellar_timescales_post_HG(double tbagb, timescales[T_TPAGB_FIRST_PULSE] = timescales[T_EAGB_TINF_2] - (iq/(GB[GB_A_HE]*GB[GB_B]))*pow(mc1,mq); } - - Dprint("First pulse at %g\n",timescales[T_TPAGB_FIRST_PULSE]); + + Dprint("First pulse at %g (mc = %g, mc1 = %g, L1TP = %g cf L = %g)\n", + timescales[T_TPAGB_FIRST_PULSE], + star->core_mass, + mc1, + luminosities[L_TPAGB_FIRST_PULSE], + star->luminosity + ); #ifdef NUCSYN // low WR mass loss rate leads to a wrong // estimate of this timescale at M~50, Z=1e-4 // so force it to be long - if(mass>20.0) timescales[T_TPAGB_FIRST_PULSE]*=10.0; + //if(mass>20.0) timescales[T_TPAGB_FIRST_PULSE]*=10.0; #endif /* diff --git a/src/supernovae/free_supernova.c b/src/supernovae/free_supernova.c index 37ecddfa21472882a5248dee59881f97cbae135a..0032f97239a170ca8b37a8cff6a6e41142c207e1 100644 --- a/src/supernovae/free_supernova.c +++ b/src/supernovae/free_supernova.c @@ -8,13 +8,35 @@ * a supernova). */ -void free_supernova(struct star_t * star) +void free_supernova(struct stardata_t * stardata, + struct star_t * star) { - if(star!=NULL && - star->new_supernova!=NULL) + + if(star!=NULL) { - Safe_free(star->new_supernova->new_stellar_structure); - Safe_free(star->new_supernova->new_companion_structure); - Safe_free(star->new_supernova); + Dprint("Free from star %p star->new_supernova = %p\n", + star, + star->new_supernova); + if(star->new_supernova!=NULL) + { + Dprint("Free star->new_supernova->new_stellar_structure = %p\n", + star->new_supernova->new_stellar_structure); + Safe_free(star->new_supernova->new_stellar_structure); + Dprint("post-free now %p\n", + star->new_supernova->new_stellar_structure); + + Dprint("Free star->new_supernova->new_companion_structure = %p\n", + star->new_supernova->new_companion_structure); + Safe_free(star->new_supernova->new_companion_structure); + Dprint("post-free now %p\n", + star->new_supernova->new_companion_structure); + + + Dprint("Free star->new_supernova = %p\n", + star->new_supernova); + Safe_free(star->new_supernova); + Dprint("post-free now %p\n", + star->new_supernova); + } } -} +} diff --git a/src/supernovae/new_supernova.c b/src/supernovae/new_supernova.c index 06195e768bef5d86a85850435033f7c3ae75a80d..7eb49c04c8a038219cc5b164272e1f2e556eefc9 100644 --- a/src/supernovae/new_supernova.c +++ b/src/supernovae/new_supernova.c @@ -46,7 +46,10 @@ struct star_t * new_supernova(struct stardata_t * stardata, * In theory, we should improve the evolution algorithm, * but if a supernova has been detected previously, */ - Dprint("Using previous stellar structure\n"); + Dprint("Using previous stellar structure in oldstar %p oldstar->new_supernova=%p\n",oldstar,oldstar->new_supernova); + Dprint("This has new_stellar_structure = %p\n", + oldstar->new_supernova->new_stellar_structure); + retstar = oldstar->new_supernova->new_stellar_structure; } else diff --git a/src/zfuncs/bh_mass.c b/src/supernovae/ns_bh_mass.c similarity index 85% rename from src/zfuncs/bh_mass.c rename to src/supernovae/ns_bh_mass.c index d48f16f6d39f061939ca6f71dec79a60519ae93e..6fc24d6baf567fa4ca1381b6777e8d7004a50c39 100644 --- a/src/zfuncs/bh_mass.c +++ b/src/supernovae/ns_bh_mass.c @@ -1,14 +1,14 @@ #include "../binary_c.h" -double bh_mass(const double m, - const double mc, +double ns_bh_mass(const double m, + const double mc_CO, struct stardata_t * RESTRICT stardata, const struct star_t * RESTRICT star) { /* * Function to evaluate the NS/BH remnant mass given - * total mass m and CO Core mass mc + * total mass m and CO Core mass mc_CO */ double mbh; @@ -24,7 +24,7 @@ double bh_mass(const double m, /* * Chris' NS/BH formula as in Hurley+ 2000, 2002 */ - mbh = 1.170 + 0.090*mc; + mbh = 1.170 + 0.090*mc_CO; } else if(stardata->preferences->BH_prescription==BH_BELCZYNSKI) { @@ -33,27 +33,28 @@ double bh_mass(const double m, */ // First set mcx double mcx; - if(mc<2.5) + if(mc_CO<2.5) { - mcx = 0.1617670*mc + 1.0670550; + mcx = 0.1617670*mc_CO + 1.0670550; } else { - mcx = 0.3141540*mc + 0.6860880; + mcx = 0.3141540*mc_CO + 0.6860880; } // Then set the remnant mass - if(mc<=5.0) + if(mc_CO<=5.0) { mbh = mcx; } - else if(mc<7.60) + else if(mc_CO<7.60) { - mbh = mcx + (mc - 5.0)*(m - mcx)/2.60; + mbh = mcx + (mc_CO - 5.0)*(m - mcx)/2.60; } else { mbh = m; } + //printf("Mc_CO=%g, Mcx=%g, Mbh=%g\n", mc_CO, mcx, mbh); } else if(stardata->preferences->BH_prescription==BH_SPERA2015) { @@ -69,12 +70,12 @@ double bh_mass(const double m, if(stardata->common.metallicity<=5e-4) { /* Z < 5e-4 */ - p = -2.333 + 0.1559 * mc + 0.2700 * mc * mc; // Eq. C2 - if(mc <= 5.0) + p = -2.333 + 0.1559 * mc_CO + 0.2700 * mc_CO * mc_CO; // Eq. C2 + if(mc_CO <= 5.0) { mbh = MAX(p,1.27); // Eq. C1 MCO < 5 } - else if(mc < 10.0) + else if(mc_CO < 10.0) { mbh = p; // Eq. C1 5 < MCO < 10 } @@ -82,7 +83,7 @@ double bh_mass(const double m, { double mZ = -6.476e2 * stardata->common.metallicity + 1.911; // Eq. C3 double qZ = 2.300e3 * stardata->common.metallicity + 11.67; // Eq. C3 - double f = mZ * mc + qZ; // Eq. C2 + double f = mZ * mc_CO + qZ; // Eq. C2 mbh = MIN(p,f); // Eq. C1 MCO > 10 } } @@ -112,13 +113,13 @@ double bh_mass(const double m, } /* Eq. C5 */ - double h = A1 + (A2 - A1) / (1.0 + pow(10.0, (L - mc) * eta)); + double h = A1 + (A2 - A1) / (1.0 + pow(10.0, (L - mc_CO) * eta)); - if(mc <= 5.0) + if(mc_CO <= 5.0) { mbh = MAX(h,1.27); // Eq. C4 MCO < 5 } - else if(mc < 10.0) + else if(mc_CO < 10.0) { mbh = h; // Eq. C4 5 < MCO < 10 } @@ -145,7 +146,7 @@ double bh_mass(const double m, qZ = 2.300e3 * stardata->common.metallicity + 11.67; } - double f = mZ * mc + qZ; // Eq. C5 + double f = mZ * mc_CO + qZ; // Eq. C5 mbh = MAX(h,f); // Eq. C4 MCO > 10 } } @@ -186,10 +187,10 @@ double bh_mass(const double m, double Mrem_grav MAYBE_UNUSED = 0.0; // Calculate Mproto - Mproto = COCoreToProtoMassRapid(mc); + Mproto = COCoreToProtoMassRapid(mc_CO); // Calculate fb, Mfb - fb = fallbackRapid(m, Mproto, mc); + fb = fallbackRapid(m, Mproto, mc_CO); Mfb = massFallbackGeneral(m, Mproto, fb); @@ -211,10 +212,10 @@ double bh_mass(const double m, double Mrem_bary MAYBE_UNUSED = 0.0; // Calculate Mproto - Mproto = COCoreToProtoMassDelayed(mc); + Mproto = COCoreToProtoMassDelayed(mc_CO); // Calculate fb, Mfb - fb = fallbackDelayed(m, Mproto, mc); + fb = fallbackDelayed(m, Mproto, mc_CO); Mfb = massFallbackGeneral(m, Mproto, fb); @@ -231,7 +232,7 @@ double bh_mass(const double m, mbh=0; } - Dprint("BH_MASS M = %g MCO = %g Z = %g -> MBH = %g\n",m,mc,stardata->common.metallicity,mbh); + Dprint("BH_MASS M = %g MCO = %g Z = %g -> MBH = %g\n",m,mc_CO,stardata->common.metallicity,mbh); return(mbh); } diff --git a/src/supernovae/set_kick_velocity.c b/src/supernovae/set_kick_velocity.c index be81bed9e726dc8df0afe50b4bf2b896efc7257c..123c4e1d0f97f79d656561ea9176cb292ef52b82 100644 --- a/src/supernovae/set_kick_velocity.c +++ b/src/supernovae/set_kick_velocity.c @@ -82,7 +82,7 @@ void set_kick_velocity(struct stardata_t * stardata, * and re-scaled assuming some spherical fallback. * * The fallback fraction is calculated according to Fryer et al. 2012 - * algorithms (src/zfunc/bh_mass.c) + * algorithms (src/zfunc/ns_bh_mass.c) */ } SNprint("SN vkick = %g\n",vk); diff --git a/src/supernovae/set_new_orbit.c b/src/supernovae/set_new_orbit.c index f2dfe2e6e8d9a0b45815e6f6ec61e59031237fe8..f93f71a5e0eda0441a8ddf0b41abcd1abd8f189a 100644 --- a/src/supernovae/set_new_orbit.c +++ b/src/supernovae/set_new_orbit.c @@ -97,10 +97,11 @@ void set_new_orbit(struct stardata_t * stardata, kick_dispersion, kick_companion); } - - Dprint("kick_speed = %g, orbital_speed = %g\n", + + Dprint("kick_speed = %g, orbital_speed = %g, new_orbital_speed_squared = %g\n", kick_system->kick_speed, - kick_system->orbital_speed + kick_system->orbital_speed, + kick_system->new_orbital_speed_squared ); /* @@ -115,17 +116,25 @@ void set_new_orbit(struct stardata_t * stardata, *separation = 1.0/(2.0/kick_system->separation - kick_system->new_orbital_speed_squared/ (GMRKM*new_system_mass)); - Dprint("new separation=%12.12g\n",*separation); + Dprint("new separation = 1/(2/%g - %g/%g) = %12.12g\n", + kick_system->separation, + kick_system->new_orbital_speed_squared, + new_system_mass, + *separation); } - SNprint("SN new separation %g from r=%g vn2=%g new_system_mass=%g\n", - *separation, - kick_system->separation, - kick_system->new_orbital_speed_squared, - new_system_mass + SNprint("SN new separation %g from r=%g vn2=%g new_system_mass=%g : old omega_orb=%g %g\n", + *separation, + kick_system->separation, + kick_system->new_orbital_speed_squared, + new_system_mass, + pre_explosion_stardata->common.orbital_angular_frequency, + stardata->common.orbital_angular_frequency ); + Dprint("Pre-sep calc : sgl = %d\n",stardata->model.sgl); + if(*separation < MINIMUM_SEPARATION_TO_BE_CALLED_BINARY || *separation > MAXIMUM_SEPARATION_TO_BE_CALLED_BINARY || stardata->model.sgl) @@ -199,5 +208,6 @@ void set_new_orbit(struct stardata_t * stardata, Dprint("New COM velocity (%g, %g, %g)\n",vsx,vsy,vsz); } + } diff --git a/src/supernovae/sn.h b/src/supernovae/sn.h index 2671f880e6470dd6c007b055e7b1be7e02863ac7..618924b2628e5e5085358e6b3e6abb1b455cb12d 100644 --- a/src/supernovae/sn.h +++ b/src/supernovae/sn.h @@ -1,3 +1,4 @@ +#pragma once #ifndef SN_H #define SN_H diff --git a/src/supernovae/supernova.c b/src/supernovae/supernova.c index 06a61d9d8a8b42a81f7cd2f5aeba2efccb448977..0523f3eda2e3666e1909eb126fe18d18f75be5b6 100644 --- a/src/supernovae/supernova.c +++ b/src/supernovae/supernova.c @@ -34,8 +34,6 @@ void supernova(struct stardata_t * stardata, struct star_t * pre_explosion_star = New_star_from(star); struct star_t * companion MAYBE_UNUSED = Other_star_struct(star); - - double mass_ejected MAYBE_UNUSED = star->mass - star->new_supernova->new_stellar_structure->mass; @@ -180,9 +178,43 @@ void supernova(struct stardata_t * stardata, if(POST_SN_OBJECT(star->stellar_type)) { - star->omega=2.0e8; - star->angular_momentum = K3*POW2(star->radius)* - star->mass*star->omega; + /* + * Spin rate of the post-SN object. + * + * Assume it has the same specific angular momentum + * as the pre-explosion stellar core. + */ + star->omega = pre_explosion_star->omega; + //star->omega=2.0e8; + + const double I = K3*POW2(star->radius)*star->mass; + + star->angular_momentum = I * star->omega; + + const double Jmax = GRAVITATIONAL_CONSTANT * POW2(star->mass * M_SUN) / + SPEED_OF_LIGHT / ANGULAR_MOMENTUM_CGS; + + /* + printf("SNomega %g from pre explosion M=%g Mc=%g R=%g kw=%d omega=%g : remNaNt J = %g, Jmax = %g\n", + star->omega, + pre_explosion_star->mass, + pre_explosion_star->core_mass, + pre_explosion_star->radius, + pre_explosion_star->stellar_type, + pre_explosion_star->omega, + star->angular_momentum, + Jmax + ); + fflush(NULL); + */ + + /* + * Object cannot rotate beyond GM^2/c + */ + star->angular_momentum = + MIN(Jmax, star->angular_momentum); + + star->omega = star->angular_momentum / I; } /* @@ -222,13 +254,12 @@ void supernova(struct stardata_t * stardata, 0.0, star->new_supernova->new_companion_structure->stellar_type ); +#endif // NUCSYN && NUCSYN_SUPERNOVAE - -#endif - /* * Logging */ + Dprint("Logging\n"); #ifdef LOG_SUPERNOVAE log_sn(stardata,star->starnum,star->SN_type,POST_SN); #endif @@ -239,14 +270,39 @@ void supernova(struct stardata_t * stardata, * Before we do anything, log the supernova * Note that this happens EVEN IF NUCSYN IS NOT DEFINED */ - log_supernova(exploder->SN_type, + log_supernova(star->SN_type, stardata->model.log_fp, - exploder->starnum, + star->starnum, mass_ejected, MAX(0.0,mass_ejected - pre_explosion_star->menv), stardata); -#endif +#endif +#if defined DISCS && defined DISC_LOG_POPSYN + Dprint("Logging (popsyn)\n"); + int i; + for(i=0; i<stardata->common.ndiscs; i++) + { + struct disc_t * disc = & stardata->common.discs[i]; + struct binary_system_t binary; + disc_init_binary_structure(stardata,&binary,disc); + if(disc->n_thermal_zones > 0 && + IS_NOT_ZERO(disc->M)) + { + PRINTF("DISC_SN %g %g %d %d %d %g %g\n", + disc->M/M_SUN, + disc->J, + pre_explosion_star->stellar_type, + star->stellar_type, + star->SN_type, + pre_explosion_star->mass, + pre_explosion_star->mass - star->core_mass + + ); + } + } +#endif // DISCS + /* * Turn off the supernovae flag */ @@ -255,7 +311,9 @@ void supernova(struct stardata_t * stardata, /* * Free the memory associated with the new_supernova */ - free_supernova(star); + Dprint("call free supernova\n"); + free_supernova(stardata,star); Safe_free(pre_explosion_star); Safe_free(pre_explosion_stardata); + Dprint("Done\n"); } diff --git a/src/supernovae/supernova_ejecta_velocity.c b/src/supernovae/supernova_ejecta_velocity.c new file mode 100644 index 0000000000000000000000000000000000000000..1fda72c818053dc5743cdc3d81684b4514fe6cb8 --- /dev/null +++ b/src/supernovae/supernova_ejecta_velocity.c @@ -0,0 +1,30 @@ +#include "../binary_c.h" + +double supernova_ejecta_velocity(struct star_t * RESTRICT star) +{ + /* + * Estimate the luminous energy in a supernova + * in erg + */ + double v; /* velocity in cm/s */ + switch(star->SN_type) + { + case SN_IA_He: + case SN_IA_ELD: + case SN_IA_CHAND: + case SN_IA_He_Coal: + case SN_IA_CHAND_Coel: + v = 1e4; + break; + case SN_IBC: + case SN_II: + case SN_GRB_COLLAPSAR: + v = 1e4; + break; + default: + v = 0.0; + break; + }; + + return v; +} diff --git a/src/supernovae/supernova_kick.c b/src/supernovae/supernova_kick.c index d3d71c5f39b30e369423b6a0985de6f5229651f8..018ef4869bdb80cca5107c6c3946d41547911628 100644 --- a/src/supernovae/supernova_kick.c +++ b/src/supernovae/supernova_kick.c @@ -26,4 +26,6 @@ void supernova_kick(struct stardata_t * stardata, stardata, pre_explosion_stardata); } + + } diff --git a/src/supernovae/supernova_kinetic_energy.c b/src/supernovae/supernova_kinetic_energy.c new file mode 100644 index 0000000000000000000000000000000000000000..484b1a2c86492e65047020fa7d5ab9e90538e3d3 --- /dev/null +++ b/src/supernovae/supernova_kinetic_energy.c @@ -0,0 +1,31 @@ +#include "../binary_c.h" + +double supernova_kinetic_energy(struct star_t * RESTRICT star) +{ + /* + * Estimate the kinetic energy of a supernova + * in erg + */ + double energy; + + switch(star->SN_type) + { + case SN_IA_He: + case SN_IA_ELD: + case SN_IA_CHAND: + case SN_IA_He_Coal: + case SN_IA_CHAND_Coel: + energy = 1.0 * FOE; + break; + case SN_IBC: + case SN_II: + case SN_GRB_COLLAPSAR: + energy = 1.0 * FOE; + break; + default: + energy = 0.0; + break; + }; + + return energy; +} diff --git a/src/supernovae/supernova_luminous_energy.c b/src/supernovae/supernova_luminous_energy.c new file mode 100644 index 0000000000000000000000000000000000000000..acbf0428b090e3c98170f136651c08ea0f02cc6b --- /dev/null +++ b/src/supernovae/supernova_luminous_energy.c @@ -0,0 +1,10 @@ +#include "../binary_c.h" + +double supernova_luminous_energy(struct star_t * RESTRICT star) +{ + /* + * Estimate the luminous energy in a supernova + * in erg + */ + return 1e-2 * supernova_kinetic_energy(star); +} diff --git a/src/supernovae/supernova_momentum.c b/src/supernovae/supernova_momentum.c new file mode 100644 index 0000000000000000000000000000000000000000..32adae7dfe012338f5fef9226ed6e01855d1dd0f --- /dev/null +++ b/src/supernovae/supernova_momentum.c @@ -0,0 +1,32 @@ +#include "../binary_c.h" + +double supernova_momentum(struct star_t * RESTRICT star) +{ + /* + * Estimate the luminous energy in a supernova + * in erg + */ + double v = supernova_ejecta_velocity(star); /* velocity in cm/s */ + double m = 0.0; + + switch(star->SN_type) + { + case SN_IA_He: + case SN_IA_ELD: + case SN_IA_CHAND: + case SN_IA_He_Coal: + case SN_IA_CHAND_Coel: + v = 1e4; + break; + case SN_IBC: + case SN_II: + case SN_GRB_COLLAPSAR: + v = 1e4; + break; + default: + v = 0.0; + break; + }; + + return m * v; +} diff --git a/src/supernovae/supernovae.h b/src/supernovae/supernovae.h index 0b5a7a50d657e46581bd3956828eefd5a714d02f..67eb208a1ed1b4e5ad74b7095a0ff13ec638fce9 100644 --- a/src/supernovae/supernovae.h +++ b/src/supernovae/supernovae.h @@ -1,3 +1,4 @@ +#pragma once #ifndef SUPERNOVAE_H #define SUPERNOVAE_H @@ -6,7 +7,7 @@ FEQUAL((kick_companion),-(A))) #if defined DEBUG && DEBUG==1 -#define SNprint(...) printf(__VA_ARGS__) +#define SNprint(...) printf(__VA_ARGS__);fflush(NULL); #else #define SNprint(...) #endif diff --git a/src/supernovae/supernovae_prototypes.h b/src/supernovae/supernovae_prototypes.h index 2a9d3c06648e7a888da531e15f79aceffe618957..57c15e51db28409b638e8dc5d91a817ccba15b8a 100644 --- a/src/supernovae/supernovae_prototypes.h +++ b/src/supernovae/supernovae_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef SUPERNOVA_PROTOTYPES_H #define SUPERNOVA_PROTOTYPES_H void supernova(struct stardata_t * stardata, @@ -67,7 +68,13 @@ struct star_t * new_supernova(struct stardata_t * stardata, struct star_t * star, struct star_t * companion, struct star_t * newstar); -void free_supernova(struct star_t * star); - +void free_supernova(struct stardata_t * stardata, + struct star_t * star); + +double supernova_kinetic_energy(struct star_t * RESTRICT star); +double supernova_luminous_energy(struct star_t * RESTRICT star); +double supernova_momentum(struct star_t * RESTRICT star); +double supernova_ejecta_velocity(struct star_t * RESTRICT star); + #endif // SUPERNOVA_PROTOTYPES_H diff --git a/src/supernovae/tauris_takens_orbit.c b/src/supernovae/tauris_takens_orbit.c index 5d772a113c4bf4e3448c0ae38ecaac792bd89e01..abebc2db3f5a1263b021791667877359565f9176 100644 --- a/src/supernovae/tauris_takens_orbit.c +++ b/src/supernovae/tauris_takens_orbit.c @@ -161,9 +161,9 @@ void tauris_takens_orbit(struct stardata_t * stardata, MAX(1e-50,orbital_velocity(pre_explosion_stardata)); Dprint("orbv = %g\n",orbv); SNprint("SN orbv2 from %g %g %g\n", - pre_explosion_stardata->star[0].mass, - pre_explosion_stardata->star[1].mass, - pre_explosion_stardata->common.separation); + pre_explosion_stardata->star[0].mass, + pre_explosion_stardata->star[1].mass, + pre_explosion_stardata->common.separation); SNprint("SN orbv = %g\n",orbv); @@ -184,10 +184,17 @@ void tauris_takens_orbit(struct stardata_t * stardata, * main-sequence companions with a core collapse supernovae. * * Interpolate the coefficients as a function of mass. + * + * NB Limit the mass (set in Mcomp) to the range fitted + * by Liu+2015, otherwise the expression can become negative, + * which is clearly incorrect. */ - Dprint("Kick companion with SN_IMPULSE_LIU (2015 for CCSNe)"); - const double A = 1.0664e3 - 2.6154e2 * companion->mass; - const double eta = -1.85690 + 7.69070e-3 * companion->mass; + const double Mcomp = LIMIT_RANGE(companion->mass,0.9,3.5); + Dprint("Kick companion with SN_IMPULSE_LIU (2015 for CCSNe): companion->mass = %g : use Mcomp = %g", + companion->mass, + Mcomp); + const double A = 1.0664e3 - 2.6154e2 * Mcomp; + const double eta = -1.85690 + 7.69070e-3 * Mcomp; v_im = A * pow(stardata->common.separation/r2,eta); } else @@ -213,7 +220,7 @@ void tauris_takens_orbit(struct stardata_t * stardata, if(!FEQUAL(xcrit,1.0)) { SNprint("MATHIEU_WARNING: xcrit=%e!=1 => you need to change the formula for the impact velocity!\n", - xcrit); + xcrit); } } else @@ -224,7 +231,7 @@ void tauris_takens_orbit(struct stardata_t * stardata, /* * The estimates of v_im are very uncertain in both cases. Let's force it to be * greater than the escape velocity from the non-exploding star, since if the ejecta - * where free-falling we would have this velocity (so it's a good lower boundary) + * were free-falling we would have this velocity (so it's a good lower boundary) */ if(0 && v_im > TINY) { @@ -239,6 +246,14 @@ void tauris_takens_orbit(struct stardata_t * stardata, /* * P -- Eq.44 in Tauris & Takens 98 + * + * NB if P<0 then the system remains bound, + * and v_cm is given by TT98's Eq.6 (see + * their Sec. 3.3 on p1058). At present, we + * then ignore the kick on the companion + * and simply return (to use the hn_squared of Hurley+2002). + * + * This is incorrect and requires a fix. */ P = 1.0 - @@ -251,7 +266,6 @@ void tauris_takens_orbit(struct stardata_t * stardata, 2.0 * kick_system->kick_speed / POW2(orbv)* (orbv*kick_system->cosomega - v_im*kick_system->sinomega*kick_system->cosphi); - Dprint("P = 1.0 - %g + %g + %g(impact) + %g * %g = %g\n", 2.0 * mtilde, POW2(kick_system->kick_speed) / POW2(orbv), @@ -260,205 +274,218 @@ void tauris_takens_orbit(struct stardata_t * stardata, (orbv*kick_system->cosomega - v_im*kick_system->sinomega*kick_system->cosphi), P); - /* - * Q -- Eq.45 in Tauris & Takens 98 - */ - Q = 1.0 + P / mtilde - - - POW2(kick_system->kick_speed * kick_system->sinomega * kick_system->cosphi - v_im) - / - (mtilde*POW2(orbv)); - Dprint("Q = 1 + %g / %g - (%g * %g * %g - %g)^2 / (%g * %g^2) = %g\n", - P, mtilde, - kick_system->kick_speed, - kick_system->sinomega, - kick_system->cosphi, - v_im, - mtilde, - orbv, - Q); + double v2x,v2y,v2z; + double vrem_x,vrem_y,vrem_z; + double vnx,vny,vnz; + + if(P<0.0) + { + Dprint("P<0 : system is bound\n"); + return; + } + else + { + /* + * Q -- Eq.45 in Tauris & Takens 98 + */ + Q = 1.0 + P / mtilde + - + POW2(kick_system->kick_speed * kick_system->sinomega * kick_system->cosphi - v_im) + / + (mtilde*POW2(orbv)); + Dprint("Q = 1 + %g / %g - (%g * %g * %g - %g)^2 / (%g * %g^2) = %g\n", + P, mtilde, + kick_system->kick_speed, + + kick_system->sinomega, + kick_system->cosphi, + v_im, + mtilde, + orbv, + Q); - /* - * R -- Eq.46 in Tauris & Takens 98 - */ - double Rsub = (kick_system->kick_speed * kick_system->sinomega * kick_system->cosphi - v_im); + /* + * R -- Eq.46 in Tauris & Takens 98 + */ + double Rsub = (kick_system->kick_speed * kick_system->sinomega * kick_system->cosphi - v_im); - R = ( - Eval_if_nonzero(Rsub, sqrt(P) / (mtilde*orbv) * Rsub) - - - P / mtilde - - - 1.0 - ) - * - ( - 1.0/m2f - + - 1.0 - ); + Dprint("Rsub = %g\n",Rsub); - Dprint("R = %g from P=%g mtilde=%g orbv=%g kick_speed=%g\n", - R, - P, - mtilde, - orbv, - kick_system->kick_speed); - Dprint(" sinomega=%g cosphi=%g v_im=%g m2f=%g", - kick_system->sinomega, - kick_system->cosphi, - v_im, - m2f); + R = ( + Eval_if_nonzero(Rsub, sqrt(P) / (mtilde*orbv) * Rsub) + - + P / mtilde + - + 1.0 + ) + * + ( + 1.0/m2f + + + 1.0 + ); + + Dprint("R = %g from P=%g m2f=%g mtilde=%g orbv=%g kick_speed=%g\n", + R, + P, + m2f, + mtilde, + orbv, + kick_system->kick_speed); + Dprint(" sinomega=%g cosphi=%g v_im=%g m2f=%g", + kick_system->sinomega, + kick_system->cosphi, + v_im, + m2f); - /* - * S -- Eq.47 in Tauris & Takens 98 - */ - S = ( - 1.0 - + - P * (Q + 1.0) / mtilde - ) - * - ( - 1.0 / m2f - + - 1.0 - ); - Dprint("S = %g from P=%g Q=%g mtilde=%g m2f=%g\n", - S,P,Q,mtilde,m2f); + /* + * S -- Eq.47 in Tauris & Takens 98 + */ + S = ( + 1.0 + + + P * (Q + 1.0) / mtilde + ) + * + ( + 1.0 / m2f + + + 1.0 + ); + Dprint("S = %g from P=%g Q=%g mtilde=%g m2f=%g\n", + S,P,Q,mtilde,m2f); - /* - * The following are at infinity and in the reference - * frame of the total center of mass - * (including ejecta masses), i.e. the original frame - */ + /* + * The following are at infinity and in the reference + * frame of the total center of mass + * (including ejecta masses), i.e. the original frame + */ - /* - * Remnant velocity components (Eqs. 51-53 in Tauris & Takens 1998) - */ - double vrem_x,vrem_y,vrem_z; + /* + * Remnant velocity components (Eqs. 51-53 in Tauris & Takens 1998) + */ - /* - * companion velocity (Eqs. 54-56 in Tauris & Takens 1998) - */ - double v2x,v2y,v2z; - - vrem_x = - kick_system->kick_speed* - kick_system->cosomega* - (1.0 + 1.0 / R) - + - orbv * - (1.0/R + m2i/(1.0+msh+m2i)); - SNprint("SN vrem_x = %g * %g * %g + %g * (%g + %g) = %g\n", - kick_system->kick_speed, - kick_system->cosomega, - (1.0 + 1.0 / R), - orbv, - 1.0/R, - m2i/(1.0+msh+m2i), - vrem_x - ); - Dprint("VREMX = %g * %g * %g + %g * (%g + %g) = %g\n", - kick_system->kick_speed, - kick_system->cosomega, - (1.0 + 1.0 / R), - +orbv, - Eval_if_nonzero(R,1.0/R), - + m2i/(1.0+msh+m2i), - vrem_x - ); + /* + * companion velocity (Eqs. 54-56 in Tauris & Takens 1998) + */ + vrem_x = + kick_system->kick_speed* + kick_system->cosomega* + (1.0 + 1.0 / R) + + + orbv * + (1.0/R + m2i/(1.0+msh+m2i)); + SNprint("SN vrem_x = %g * %g * %g + %g * (%g + %g) = %g\n", + kick_system->kick_speed, + kick_system->cosomega, + (1.0 + 1.0 / R), + orbv, + 1.0/R, + m2i/(1.0+msh+m2i), + vrem_x + ); + Dprint("VREMX = %g * %g * %g + %g * (%g + %g) = %g\n", + kick_system->kick_speed, + kick_system->cosomega, + (1.0 + 1.0 / R), + +orbv, + Eval_if_nonzero(R,1.0/R), + + m2i/(1.0+msh+m2i), + vrem_x + ); - vrem_y = - kick_system->kick_speed* - kick_system->sinomega* - kick_system->cosphi* - (1.0 - 1.0 / S) - + - v_im / S - + - Eval_if_nonzero(Q, orbv*Q*sqrt(P) / S); + vrem_y = + kick_system->kick_speed* + kick_system->sinomega* + kick_system->cosphi* + (1.0 - 1.0 / S) + + + v_im / S + + + Eval_if_nonzero(Q, orbv*Q*sqrt(P) / S); - vrem_z = - kick_system->kick_speed* - kick_system->sinomega* - kick_system->sinphi* - (1.0 + 1.0/R); + vrem_z = + kick_system->kick_speed* + kick_system->sinomega* + kick_system->sinphi* + (1.0 + 1.0/R); - if(m2f > TINY) - { - /* Eq. 54 */ - v2x = -kick_system->kick_speed*kick_system->cosomega/(m2f*R) - - - orbv*(1.0/(m2f * R) + (1.0 + msh)/(1.0 + msh + m2i)); + if(m2f > TINY) + { + /* Eq. 54 */ + v2x = -kick_system->kick_speed*kick_system->cosomega/(m2f*R) + - + orbv*(1.0/(m2f * R) + (1.0 + msh)/(1.0 + msh + m2i)); - SNprint("v2x = - %g * %g / (%g * %g) - %g * (1/(%g * %g) + (1+%g)/(1+%g+%g)) = %g - %g * %g = %g - %g = %g\n", - kick_system->kick_speed, - kick_system->cosomega, - m2f, - R, - orbv, - m2f, - R, - msh, - msh, - m2i, - -kick_system->kick_speed*kick_system->cosomega/(m2f*R), - orbv, - (1.0/(m2f * R) + (1.0 + msh)/(1.0 + msh + m2i)), - -kick_system->kick_speed*kick_system->cosomega/(m2f*R), - orbv*(1.0/(m2f * R) + (1.0 + msh)/(1.0 + msh + m2i)), - v2x); - - /* Eq. 55 */ - v2y = kick_system->kick_speed*kick_system->sinomega*kick_system->cosphi/(m2f*S) - + - v_im*(1.0 - 1.0/(m2f*S)) - - - Eval_if_nonzero(Q, Q*orbv*sqrt(P)/(m2f*S)); - - SNprint("v2y = %g * %g * %g / (%g * %g) + (1-1/(%g * %g))*%g - %g * %g * %g / (%g * %g) = %g\n", - kick_system->kick_speed, - kick_system->sinomega, - kick_system->cosphi, - m2f, - S, - v_im, - m2f, - S, - orbv, - Q, - Eval_if_nonzero(Q, sqrt(P)), - m2f, - S, - v2y); + SNprint("v2x = - %g * %g / (%g * %g) - %g * (1/(%g * %g) + (1+%g)/(1+%g+%g)) = %g - %g * %g = %g - %g = %g\n", + kick_system->kick_speed, + kick_system->cosomega, + m2f, + R, + orbv, + m2f, + R, + msh, + msh, + m2i, + -kick_system->kick_speed*kick_system->cosomega/(m2f*R), + orbv, + (1.0/(m2f * R) + (1.0 + msh)/(1.0 + msh + m2i)), + -kick_system->kick_speed*kick_system->cosomega/(m2f*R), + orbv*(1.0/(m2f * R) + (1.0 + msh)/(1.0 + msh + m2i)), + v2x); + + /* Eq. 55 */ + v2y = kick_system->kick_speed*kick_system->sinomega*kick_system->cosphi/(m2f*S) + + + v_im*(1.0 - 1.0/(m2f*S)) + - + Eval_if_nonzero(Q, Q*orbv*sqrt(P)/(m2f*S)); + + SNprint("v2y = %g * %g * %g / (%g * %g) + (1-1/(%g * %g))*%g - %g * %g * %g / (%g * %g) = %g\n", + kick_system->kick_speed, + kick_system->sinomega, + kick_system->cosphi, + m2f, + S, + v_im, + m2f, + S, + orbv, + Q, + Eval_if_nonzero(Q, sqrt(P)), + m2f, + S, + v2y); - v2z = -kick_system->kick_speed*kick_system->sinomega*kick_system->sinphi/(m2f*R); - } - else - { - v2x = v2y = v2z = 0.0; - } + v2z = -kick_system->kick_speed*kick_system->sinomega*kick_system->sinphi/(m2f*R); + } + else + { + v2x = v2y = v2z = 0.0; + } - /* - * Calculate the new relative velocity vector - */ - double vnx,vny,vnz; - vnx = vrem_x - v2x; - SNprint("SN vnx=%g from vrem_x=%g v2x=%g\n", - vnx,vrem_x,v2x); - vny = vrem_y - v2y; - vnz = vrem_z - v2z; - Dprint ("vnx = %g - %g = %g\n",vrem_x,v2x,vnx); - Dprint ("vny = %g - %g = %g\n",vrem_y,v2y,vny); - Dprint ("vnz = %g - %g = %g\n",vrem_z,v2z,vnz); - - - /* now update the quantities used to evaluate the new orbit */ - kick_system->new_orbital_speed_squared = PYTHAG3sq(vnx,vny,vnz); - kick_system->new_orbital_speed = sqrt(kick_system->new_orbital_speed_squared); - - SNprint("SN vnx=%g vny=%g vnz=%g : new orbital speed %g\n", - vnx,vny,vnz,kick_system->new_orbital_speed_squared); + /* + * Calculate the new relative velocity vector + */ + vnx = vrem_x - v2x; + SNprint("SN vnx=%g from vrem_x=%g v2x=%g\n", + vnx,vrem_x,v2x); + vny = vrem_y - v2y; + vnz = vrem_z - v2z; + Dprint ("vnx = %g - %g = %g\n",vrem_x,v2x,vnx); + Dprint ("vny = %g - %g = %g\n",vrem_y,v2y,vny); + Dprint ("vnz = %g - %g = %g\n",vrem_z,v2z,vnz); + + + /* now update the quantities used to evaluate the new orbit */ + kick_system->new_orbital_speed_squared = PYTHAG3sq(vnx,vny,vnz); + kick_system->new_orbital_speed = sqrt(kick_system->new_orbital_speed_squared); + + SNprint("SN vnx=%g vny=%g vnz=%g : new orbital speed %g\n", + vnx,vny,vnz,kick_system->new_orbital_speed_squared); + + } /* * Set the stripped/ablated secondary mass diff --git a/src/tables/table_miller_bertolami.c b/src/tables/table_miller_bertolami.c new file mode 100644 index 0000000000000000000000000000000000000000..75efc38b28cdba5518def28a2cfc47ba6220f41d --- /dev/null +++ b/src/tables/table_miller_bertolami.c @@ -0,0 +1,27 @@ +#include "../binary_c.h" + +#include "../stellar_structure/miller_bertolami_postagb_n.h" +#include "../stellar_structure/miller_bertolami_postagb_coeffs_n.h" + +void table_miller_bertolami(struct store_t * store) +{ + extern const unsigned char _binary_miller_bertolami_postagb_dat_start[]; + NewDataTable_from_Pointer((double*)&_binary_miller_bertolami_postagb_dat_start, + store->miller_bertolami, + TABLE_MILLER_BERTOLAMI_N_PARAMS, + TABLE_MILLER_BERTOLAMI_N_DATA, + TABLE_MILLER_BERTOLAMI_LINES); + extern const unsigned char _binary_miller_bertolami_postagb_coeffs_L_dat_start[]; + NewDataTable_from_Pointer((double*)&_binary_miller_bertolami_postagb_coeffs_L_dat_start, + store->miller_bertolami_coeffs_L, + TABLE_MILLER_BERTOLAMI_COEFFS_L_N_PARAMS, + TABLE_MILLER_BERTOLAMI_COEFFS_L_N_DATA, + TABLE_MILLER_BERTOLAMI_COEFFS_L_LINES); + extern const unsigned char _binary_miller_bertolami_postagb_coeffs_R_dat_start[]; + NewDataTable_from_Pointer((double*)&_binary_miller_bertolami_postagb_coeffs_R_dat_start, + store->miller_bertolami_coeffs_R, + TABLE_MILLER_BERTOLAMI_COEFFS_R_N_PARAMS, + TABLE_MILLER_BERTOLAMI_COEFFS_R_N_DATA, + TABLE_MILLER_BERTOLAMI_COEFFS_R_LINES); +} + diff --git a/src/tables/tables_prototypes.h b/src/tables/tables_prototypes.h index c67f61cd60d0be02cad8b7b2d98ab15240c5ae95..ca0cd611b3b9b38f9a9b30966500e107c4c5ed3a 100644 --- a/src/tables/tables_prototypes.h +++ b/src/tables/tables_prototypes.h @@ -56,5 +56,10 @@ void table_opacity_ferguson_opal(struct store_t * RESTRICT store); #endif #endif // OPACITY_ALGORITHMS +void table_miller_bertolami(struct store_t * store); + +void test_table(struct stardata_t * stardata, + struct data_table_t * table); + #endif // TABLES_PROTOTYPES_H diff --git a/src/tables/test_table.c b/src/tables/test_table.c new file mode 100644 index 0000000000000000000000000000000000000000..e25f5ba2800b215b6e42205094e789aece2adc3f --- /dev/null +++ b/src/tables/test_table.c @@ -0,0 +1,118 @@ +#include "../binary_c.h" + + +void test_table(struct stardata_t * stardata, + struct data_table_t * table) +{ + /* + * Methods to test whether a data table interpolates correctly + */ + + + /* + * Worst allowed tolerance + */ + const double tolerance = 10.0 * DBL_EPSILON; + + int ll = table->nparam + table->ndata; + printf("Test table at %p with nlines = %d, nparam = %d, ndata = %d, ll = %d, data at %p\n", + table, + table->nlines, + table->nparam, + table->ndata, + ll, + table->data); + + /* + * Loop over all the parameters in the table, make + * sure Interpolate() gives the same as the raw data + */ + int nl,np,nd; + double * param = MALLOC(sizeof(double)*table->nparam); + double * data = MALLOC(sizeof(double)*table->ndata); + double * min = MALLOC(sizeof(double)*table->nparam); + double * max = MALLOC(sizeof(double)*table->nparam); + + /* + * Find min and max + */ + + for(nl=0;nl<table->nlines;nl++) + { + if(nl==0) + { + for(np=0;np<table->nparam;np++) + { + min[np] = *(table->data + np); + max[np] = *(table->data + np); + } + } + else + { + for(np=0;np<table->nparam;np++) + { + double x = *(table->data + ll * nl + np); + min[np] = MIN(min[np],x); + max[np] = MAX(min[np],x); + } + } + } + for(np=0;np<table->nparam;np++) + { + printf("Parameter %d : %g to %g\n", + np, + min[np], + max[np]); + + } + + for(nl=0;nl<table->nlines;nl++) + { + printf("Line %d/%d\nParameters: ",nl,table->nlines); + + for(np=0;np<table->nparam;np++) + { + const double p = *(table->data + nl * ll + np); + printf("%d = %g ",np,p); + *(param+np) = p; + if(np<table->nparam-1) printf(": "); + } + printf("\n%12s: ","Data"); + double * table_data = table->data + nl * ll + table->nparam; + for(nd=0;nd<table->ndata;nd++) + { + printf("%d = %g : ",nd,*(table_data + nd)); + } + printf("\n%12s: ","Interpolated"); + Interpolate(table, + param, + data, + FALSE); + int error = FALSE; + for(nd=0;nd<table->ndata;nd++) + { + double err = ABSDIFF(*(table_data+nd),*(data+nd)); + printf("%d = %g (%g) ",nd,*(data+nd),err); + if(err>tolerance) + { + error = TRUE; + } + if(nd<table->ndata-1) printf(": "); + } + printf("\n"); + if(error > tolerance) + { + Exit_binary_c(BINARY_C_INTERPOLATION_ERROR, + "Error is greater than tolerance (%g)\n", + tolerance); + } + } + + Safe_free(param); + Safe_free(data); + Safe_free(max); + Safe_free(min); + Exit_binary_c(NORMAL_EXIT, + "Test table exit"); + +} diff --git a/src/timers/timers.c b/src/timers/timers.c index 40431dfdbd23bbac878aa955d7e6a82b78c47535..1f330debb5b48a9aceba58483f9d74792473b2e5 100644 --- a/src/timers/timers.c +++ b/src/timers/timers.c @@ -22,6 +22,7 @@ #endif //__INTEL_COMPILER #include <time.h> #include <stdint.h> +#include <x86intrin.h> #endif //TIMER @@ -41,15 +42,28 @@ ticks getticks(void) */ return _rdtsc(); #endif // __INTEL_COMPILER + -#if defined __GNUC__ && (defined __i386__ || defined __x86_64__ || defined __ia64__) +#if defined __GNUC__ && \ + (defined __i386__ || defined __x86_64__ || defined __ia64__) +#ifdef TIMER_USE_ASM /* * gcc (and clang) on x86_64 chips e.g. core7 - * assembly call to RDTSC + * assembly call to RDTSC. + * + * Note: it's better to use the __rdtsc function, + * as the compiler should automatically generate the + * appropriate assembly code. */ unsigned a, d; asm volatile("rdtsc" : "=a" (a), "=d" (d)); return ((ticks)a) | (((ticks)d) << 32); +#else + /* + * most modern compilers should use __rdtsc + */ + return __rdtsc(); +#endif // TIMER_USE_ASM #endif // x86_64 /* diff --git a/src/timestep/stellar_timestep.c b/src/timestep/stellar_timestep.c index 55f690b1e6a51e84d93b60db916a01c84c3fbaa0..cff29af623e4f857ee515daf6286b922bf7c86f7 100644 --- a/src/timestep/stellar_timestep.c +++ b/src/timestep/stellar_timestep.c @@ -8,7 +8,6 @@ void stellar_timestep(Timestep_prototype_args) * * This is set in *dt and has units of Myr. */ - const char * string[50] = { DT_LIMIT_STRINGS }; Dprint("stellar_timestep in star %d stellar_type=%d, age=%g, tm=%g, tn=%g\n", star->starnum,stellar_type,age,tm,tn); @@ -71,8 +70,11 @@ void stellar_timestep(Timestep_prototype_args) timestep_hard_limits(Timestep_call_args); star->stellar_timestep = *dt; - - if(0 && star->starnum==0) + +//#define ___LOGGING +#ifdef ___LOGGING + const char * string[50] = { DT_LIMIT_STRINGS }; + if(1) fprintf(stdout, "stellar_timestep at t=%20.12g out star %d stellar_type %d (m=%g mc=%g minit=%g menv=%g SN=%d), age=%g, tm=%20.12g, tn=%20.12g: dt=%20.12g Myr time_remaining=%g : set by %s (%d) : logtnow=%g logtnext=%g (FEQUAL? %d diff %g)\n", stardata->model.time, @@ -97,6 +99,7 @@ void stellar_timestep(Timestep_prototype_args) log10(stardata->model.time) - log10(stardata->model.time + *dt) ); +#endif //___LOGGING return; } diff --git a/src/timestep/timestep.h b/src/timestep/timestep.h index bdbe39a97e883eda25a7a73b8261538263818de2..3afb6d716fac84244e4c6df72aaff50f2eb84279 100644 --- a/src/timestep/timestep.h +++ b/src/timestep/timestep.h @@ -1,8 +1,6 @@ #ifndef TIMESTEP_H #define TIMESTEP_H -#include "../binary_c.h" - #ifdef HRDIAG #define HRDIAG_FRAC 0.01 #define HRDIAG_DT_NEGATIVE_CHECK if(stardata->model.hrdiag_dt_guess<0.0){Exit_binary_c(OUT_OF_RANGE,"hrdiag dt guess < 0 error\n");} @@ -49,13 +47,56 @@ * an issue, but if you want to track them you will have to introduce * a new logging variable. */ -#define Set_timestep(DT,TO,IN,WHY) {(DT)=(TO);if(WHY!=DT_LIMIT_MAXIMUM_TIMESTEP&&WHY!=DT_LIMIT_MINIMUM_TIMESTEP){(IN)->dtlimiter=(WHY);}} -#define Limit_timestep(DT,TO,IN,WHY) {if((DT)>(TO)){Set_timestep((DT),(TO),(IN),(WHY));}} +#define Set_timestep(DT,TO,IN,WHY) \ + { \ + (DT)=(TO); \ + Dprint("Set timestep to %g why %d\n", \ + (TO), \ + (WHY)); \ + if(WHY!=DT_LIMIT_MAXIMUM_TIMESTEP && \ + WHY!=DT_LIMIT_MINIMUM_TIMESTEP) \ + { \ + (IN)->dtlimiter=(WHY); \ + } \ + } + +#define Limit_timestep(DT,TO,IN,WHY) \ + { \ + if((DT)>(TO)) \ + { \ + Dprint("Limit timestep to %g why %d\n", \ + (TO), \ + (WHY)); \ + Set_timestep((DT),(TO),(IN),(WHY)); \ + } \ + } + +#define Floor_timestep(DT,TO,IN,WHY) \ + { \ + if((DT)<(TO)) \ + { \ + Dprint("Floor timestep to %g why %d\n", \ + (TO), \ + (WHY)); \ + Set_timestep((DT),(TO),(IN),(WHY)); \ + } \ + } + +#define Modulate_timestep(DT,BY,IN) \ + { \ + if(!FEQUAL(1.0,(BY))) \ + { \ + (DT)*=(BY); \ + Dprint("Modulate timestep by %g to %g\n", \ + (BY), \ + (DT)); \ + (IN)->dtlimiter=-abs((IN)->dtlimiter); \ + } \ + } +#else -#define Floor_timestep(DT,TO,IN,WHY) {if((DT)<(TO)){Set_timestep((DT),(TO),(IN),(WHY));}} -#define Modulate_timestep(DT,BY,IN) {if(!FEQUAL(1.0,(BY))){(DT)*=(BY);(IN)->dtlimiter=-abs((IN)->dtlimiter);}} #define DT_LIMIT_NONE 0 #define DT_LIMIT_MS 1 @@ -103,6 +144,8 @@ #define DT_LIMIT_MASS_LOSS 43 #define DT_LIMIT_TIDES 44 #define DT_LIMIT_NUCSYN_ANGELOU_LITHIUM 45 +#define DT_LIMIT_CARBON_BURNING 46 +#define DT_LIMIT_BURN_IN 47 #define DT_LIMIT_STRINGS \ "DT_LIMIT_NONE", \ @@ -150,6 +193,8 @@ "DT_LIMIT_MASS_GAIN", \ "DT_LIMIT_MASS_LOSS", \ "DT_LIMIT_TIDES", \ - "DT_LIMIT_NUCSYN_ANGELOU_LITHIUM" + "DT_LIMIT_NUCSYN_ANGELOU_LITHIUM", \ + "DT_LIMIT_CARBON_BURNING", \ + "DT_LIMIT_BURN_IN" #endif // TIMESTEP_H diff --git a/src/timestep/timestep_EAGB.c b/src/timestep/timestep_EAGB.c index a4c39671c553be312d93a593090a88b50a0a0664..0d9134be4a7d846a5f9ae7a81860934c19df4257 100644 --- a/src/timestep/timestep_EAGB.c +++ b/src/timestep/timestep_EAGB.c @@ -23,7 +23,8 @@ void timestep_EAGB(Timestep_prototype_args) /* * Slow down as we approach RLOF, we want to make this * as accurate as possible. - */ + */ + #if defined SLOW_DOWN_PREROCHE_EAGB && !defined RLOF_REDUCE_TIMESTEP double rr=star->radius / star->roche_radius; rr=1.0-rr; @@ -33,7 +34,6 @@ void timestep_EAGB(Timestep_prototype_args) Limit_timestep(*dt,newdt,star,DT_LIMIT_EAGB_PREROCHE); #endif // SLOW_DOWN_PREROCHE_EAGB - double accretion_rate = Mdot_net(star); if(accretion_rate > 0.0) { diff --git a/src/timestep/timestep_HeHG_HeGB.c b/src/timestep/timestep_HeHG_HeGB.c index 5e0eb595bd6e478d3e110fc7bc881faa1c4f7d8a..c500ab74c3bd60c1527bf6ccc644ab55ee875b73 100644 --- a/src/timestep/timestep_HeHG_HeGB.c +++ b/src/timestep/timestep_HeHG_HeGB.c @@ -12,8 +12,16 @@ void timestep_HeHG_HeGB(Timestep_prototype_args) { dtt=(tscls[5] - age); } + Set_timestep(*dt,PTS2*dtt,star,DT_LIMIT_HeHG_GB); +#ifdef CARBON_BURNING + if(IS_ZERO(star->t_start_carbon_burn)) + { + Set_timestep(*dt,stardata->preferences->carbon_burning_lifetime*0.1,star,DT_LIMIT_CARBON_BURNING); + } +#endif + #ifdef HRDIAG stardata->model.hrdiag_dt_guess = HRDIAG_FRAC* dtt; #ifdef HRDIAG_DTLOG diff --git a/src/timestep/timestep_disc.c b/src/timestep/timestep_disc.c index eceb881fc10df8e225acf5664e8aaaf346694a67..71786bc28f0294b5e41f8c79b465fe025b9ef86b 100644 --- a/src/timestep/timestep_disc.c +++ b/src/timestep/timestep_disc.c @@ -1,25 +1,20 @@ #include "../binary_c.h" - #ifdef DISCS -double timestep_disc(struct stardata_t * stardata, - struct disc_t * disc) +double timestep_disc(struct disc_t * disc) { /* - * Natural evolutionary timestep of a disc, in seconds. - * - * Note: returning zero should be considered an error. + * Timestep for the evolution code based on its disc. */ double dt = 0.0; -#ifdef DISCS_JERMYN - dt = (IS_NOT_ZERO(disc->M) && IS_NOT_ZERO(disc->J)) ? - disc->dt * DISC_TIMESTEP_FACTOR : LONG_TIMESTEP; -#else - dt = LONG_TIMESTEP; -#endif - + dt = Disc_is_disc(disc) ? + (1e-6 * disc->dt / YEAR_LENGTH_IN_SECONDS) : + LONG_TIMESTEP; + + if(IS_ZERO(dt)) dt = 1e-6; + return dt; } diff --git a/src/timestep/timestep_hard_limits.c b/src/timestep/timestep_hard_limits.c index 8a6deb9a65476febe5cf8c71c56632431149cc15..f48946465849e57dcf483718a4c6883b56f0983c 100644 --- a/src/timestep/timestep_hard_limits.c +++ b/src/timestep/timestep_hard_limits.c @@ -26,7 +26,10 @@ void timestep_hard_limits(Timestep_prototype_args) Star_number k; Nuclear_burning_STARLOOP(k) { - Limit_timestep(*dt,stardata->preferences->maximum_nuclear_burning_timestep,&stardata->star[k],DT_LIMIT_MAXIMUM_TIMESTEP); + Limit_timestep(*dt, + stardata->preferences->maximum_nuclear_burning_timestep, + &stardata->star[k], + DT_LIMIT_MAXIMUM_TIMESTEP); } /* @@ -44,6 +47,7 @@ void timestep_hard_limits(Timestep_prototype_args) DT_LIMIT_ARTIFICIAL_ACCRETION); } } + if(MORE_OR_EQUAL(stardata->preferences->accretion_end_time,0.0)) { double dtart = stardata->preferences->accretion_end_time - stardata->model.time; @@ -60,7 +64,8 @@ void timestep_hard_limits(Timestep_prototype_args) /* * If there has been an event, force a small timestep */ - if(star->SN_type != SN_NONE) + if(star->SN_type != SN_NONE || + stardata->previous_stardata->star[star->starnum].SN_type != SN_NONE) { Limit_timestep(*dt, stardata->preferences->minimum_timestep, @@ -68,4 +73,16 @@ void timestep_hard_limits(Timestep_prototype_args) DT_LIMIT_SN); } + + /* + * Burn in by running the first BURN_IN_TIMESTEPS + * + */ + if(stardata->common.model_number < BURN_IN_TIMESTEPS) + { + Limit_timestep(*dt, + stardata->preferences->minimum_timestep, + star, + DT_LIMIT_BURN_IN); + } } diff --git a/src/timestep/timestep_limits.c b/src/timestep/timestep_limits.c index f868b51a329a53365cc4120a3f933f19ae59bc47..0718a9804d43befed8f10c1d2ef008246994bfc9 100644 --- a/src/timestep/timestep_limits.c +++ b/src/timestep/timestep_limits.c @@ -1,5 +1,6 @@ -#include "../binary_c.h" #include "timestep.h" +#include "../binary_c.h" + #if defined NUCSYN && defined NUCSYN_ANGELOU_LITHIUM #include "../nucsyn/nucsyn_angelou.h" @@ -13,14 +14,17 @@ void timestep_limits(Timestep_prototype_args) /* * Limit timestep to prevent too much angular - * momentum change (<3%) by magnetic braking + * momentum change (<0.5%) by magnetic braking. + * + * The original BSE code took 3% changes as the maximum, + * but this causes oscillation with the tides. */ if(stellar_type<HeWD && - fabs(star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING])>1e-14 && + fabs(star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING])>1e-30 && star->angular_momentum > JMIN) { double dtmb = - 0.03 * star->angular_momentum * 1e-6 / + 0.005 * star->angular_momentum * 1e-6 / MAX(1e-50,fabs(star->derivative[DERIVATIVE_STELLAR_ANGMOM_MAGNETIC_BRAKING])); Limit_timestep(*dt,dtmb,star,DT_LIMIT_STELLAR_MAGNETIC_BRAKING); } @@ -55,20 +59,35 @@ void timestep_limits(Timestep_prototype_args) double dtj = 0.01*star->angular_momentum/MAX(1e-50,jdot) * 1e-6; Limit_timestep(*dt,dtj,star,DT_LIMIT_STELLAR_ANGMOM); } + } - /* - * Resolve stellar tidal changes - */ - if(fabs(star->omega) > 1e-10) + /* + * Resolve stellar tidal changes + */ + if(fabs(star->omega) > 1e-20) + { + double dt_tides = 0.01 * + MAX(1e-50, + fabs(star->omega) / + MAX(1e-50,fabs(star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY]))) + * 1e-6; + + Limit_timestep(*dt,dt_tides,star,DT_LIMIT_TIDES); +#ifdef __LOGGING + if(star->starnum==1) { - double dt_tides = 0.01 * MAX(1e-50, - fabs(star->omega) / - MAX(1e-50,fabs(star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY]))) - * 1e-6; - Limit_timestep(*dt,dt_tides,star,DT_LIMIT_TIDES); + printf("dt_tides %g omega = %g vs omegadot = %g vs omega_orb %g : dt_tides %g\n", + stardata->model.time, + fabs(star->omega), + MAX(1e-50,fabs(star->derivative[DERIVATIVE_STELLAR_ANGULAR_VELOCITY])), + stardata->common.orbital_angular_frequency, + dt_tides + ); } +#endif // __LOGGING } + #ifdef CIRCUMBINARY_DISK_DERMINE /* * Reduce timestep to resolve circumbinary disk physics @@ -103,13 +122,29 @@ void timestep_limits(Timestep_prototype_args) x = 1e50; } Limit_timestep(*dt,x,star,DT_LIMIT_RESOLVE_POSTAGB); + + /* + * Estimate nuclear burning lifetime + */ + double dmcdt = + MAX3(star->derivative[DERIVATIVE_STELLAR_CO_CORE_MASS], + star->derivative[DERIVATIVE_STELLAR_HE_CORE_MASS], + star->derivative[DERIVATIVE_STELLAR_GB_CORE_MASS]); + if(dmcdt > REALLY_TINY) + { + const double menv = star->mass - star->core_mass; + if(menv > REALLY_TINY) + { + const double dtnuc = 1e-6*(star->mass - star->core_mass) / dmcdt; + Limit_timestep(*dt,dtnuc*0.01,star,DT_LIMIT_RESOLVE_POSTAGB); + } + } } #endif #ifdef DISCS /* - * Updated disc treatment : limit to 0.1% of the disc's - * natural evolutionary timescale. + * limit to 10% of the disc's natural evolutionary timescale. */ { int i; @@ -118,11 +153,7 @@ void timestep_limits(Timestep_prototype_args) if(stardata->common.discs[i].M > M_SUN * stardata->preferences->cbdisc_minimum_mass) { - /* disc timescale in Myr */ - double dtdisc = stardata->common.discs[i].dt * 1e-6 / - YEAR_LENGTH_IN_SECONDS; - if(IS_ZERO(dtdisc)) dtdisc = 1e-6; - + double dtdisc = 0.1 * timestep_disc(&stardata->common.discs[i]); Limit_timestep(*dt, dtdisc, star, @@ -408,5 +439,7 @@ void timestep_limits(Timestep_prototype_args) */ ///if(IS_NOT_ZERO(star->stellar_timestep)) ///Limit_timestep(*dt,star->stellar_timestep*1.2,star,DT_LIMIT_NOVAE); - + + + } diff --git a/src/timestep/timestep_prototypes.h b/src/timestep/timestep_prototypes.h index 722107b3b8860825dfa694b2959c15936b5d403e..0b06c537f8934a65a48a0845f59ab2ca065aaaf3 100644 --- a/src/timestep/timestep_prototypes.h +++ b/src/timestep/timestep_prototypes.h @@ -1,3 +1,4 @@ +#pragma once #ifndef TIMESTEP_PROTOTYPES_H #define TIMESTEP_PROTOTYPES_H @@ -19,4 +20,9 @@ void timestep_logging(Timestep_prototype_args); void timestep_modulation(Timestep_prototype_args); void timestep_hard_limits(Timestep_prototype_args); void timestep_RLOF(Timestep_prototype_args); + +#ifdef DISCS +double timestep_disc(struct disc_t * disc); +#endif // DISCS + #endif // TIMESTEP_PROTOTYPES_H diff --git a/src/wind/wind_GB.c b/src/wind/wind_GB.c index c41d1ce24bcde1e15e0155439e43a6111f9ac258..05f2778559b18dcac38e675086540cba87fef111 100644 --- a/src/wind/wind_GB.c +++ b/src/wind/wind_GB.c @@ -42,5 +42,5 @@ double wind_GB(WIND_PROTOTYPE_ARGS) #endif } - return(mdot_GB); + return mdot_GB; } diff --git a/src/wind/wind_Hurley2002.c b/src/wind/wind_Hurley2002.c new file mode 100644 index 0000000000000000000000000000000000000000..59e7419497d319d308a885e1e92e774ab2f5137e --- /dev/null +++ b/src/wind/wind_Hurley2002.c @@ -0,0 +1,75 @@ +#include "wind.h" + +double wind_Hurley2002(WIND_PROTOTYPE_ARGS) +{ + double mdot_wind; + double mdot[MDOT_COUNT]; // different wind mass losses + if(stellar_type<HeWD) + { + /* calculate contributions from different types of mass loss */ + mdot[MDOT_MS] = 0.0; + mdot[MDOT_GB] = wind_GB(WIND_CALL_ARGS); + mdot[MDOT_AGB] = wind_AGB(WIND_CALL_ARGS); + mdot[MDOT_WR] = wind_WR(WIND_CALL_ARGS); + mdot[MDOT_OTHER] = wind_other(WIND_CALL_ARGS); + mdot[MDOT_LBV] = wind_LBV(WIND_CALL_ARGS); + + Dprint("mdot%d (premod): M=%g Mc=%g : MS=%d=%g GB=%d=%g AGB=%d=%g WR=%d=%g OTHER=%d=%g LBV=%d=%g : ", + star->starnum, + mass, + core_mass, + MDOT_MS,mdot[MDOT_MS], + MDOT_GB,mdot[MDOT_GB], + MDOT_AGB,mdot[MDOT_AGB], + MDOT_WR,mdot[MDOT_WR], + MDOT_OTHER,mdot[MDOT_OTHER], + MDOT_LBV,mdot[MDOT_LBV] + ); + + /* apply aritificial multiplicative factors */ + wind_multiplicative_factors(mdot,WIND_CALL_ARGS); + + /* enhancement factors (CRAP, rotation, etc) */ + double mult=wind_enhancement_factors(mdot,WIND_CALL_ARGS); + + /* choose the mass loss rate to use */ + mdot_wind = max_from_list(5, + mdot[MDOT_MS], + mdot[MDOT_GB], + mdot[MDOT_AGB], + mdot[MDOT_WR], + mdot[MDOT_OTHER]) + + mdot[MDOT_LBV]; + + /* use global multiplication factor (see above) */ + mdot_wind *= mult; + + /* limit to the dynamical rate of the envelope */ + double mdot_dyn = MAX(0.1*star->mass, star->mass - star->core_mass) / + MAX(1e-20,dynamical_timescale_envelope(star)); + + /* + * limit to 10% wind mass loss change in any one timestep + * + * Normally, this is never required. But if there is a merger + * between a massive helium star and a main sequence star, a + * massive CHeB star is formed. The LBV mass loss rate can then + * lead to very rapid mass loss which exceeds 100% per time step. + * Even 10% is still fast, but at least manageable by the + * evolution algorithm. + */ + double mdot_tenpc = star->mass * 0.1 / stardata->model.dt; + + mdot_wind = MIN3(mdot_wind, + mdot_dyn, + mdot_tenpc); + } + else + { + /* + * no mass loss for remnants + */ + mdot_wind = 0.0; + } + return mdot_wind; +} diff --git a/src/wind/wind_Schneider.c b/src/wind/wind_Schneider.c new file mode 100644 index 0000000000000000000000000000000000000000..6518347dee2e8607dc50ab588dfaa3190a8cc719 --- /dev/null +++ b/src/wind/wind_Schneider.c @@ -0,0 +1,348 @@ +#include "wind.h" +#include "wind_Schneider.h" +/* + * Wind mass-loss rate based on Fabian Schneider's routine + */ + + +double wind_Schneider(WIND_PROTOTYPE_ARGS) +{ + const Boolean debug = FALSE; + double mdot_Schneider = 0.0; + + if(star->stellar_type < HeWD) + { + if(debug) + { + PRINTF("wind Schneider M=%g %s L=%g %s R=%g %s\n", + star->mass,M_SOLAR, + star->luminosity,L_SOLAR, + star->radius,R_SOLAR); + } + + /* + * Zbase is the original metallicity. + * Use the "effective metallicity". + */ + const double Zbase = stardata->common.effective_metallicity; + + /* + * switch between hot, cool, WR and super-massive star winds + * we blend the hot and cool winds at Teff=10^4K via an interpolation + */ + const double T_high = 1.1e4; + const double T_low = 1.0e4; + const double Tsurf = TEFFSTAR(star); + + if(debug) + { + PRINTF("Tsurf = %g cf T_low = %g, T_high = %g\n", + Tsurf, + T_low, + T_high); + } + + if(Tsurf <= T_low) + { + mdot_Schneider = eval_lowT_Schneider(SCHNEIDER_CALL_ARGS); + } + else if(Tsurf >= T_high) + { + mdot_Schneider = eval_highT_Schneider(SCHNEIDER_CALL_ARGS); + } + else + { + const double w1 = eval_lowT_Schneider(SCHNEIDER_CALL_ARGS); + const double w2 = eval_highT_Schneider(SCHNEIDER_CALL_ARGS); + const double f = (Tsurf - T_low)/(T_high - T_low); + mdot_Schneider = (1.0-f)*w1 + f*w2; + } + + /* + * Apply LBV-type mass-loss if needed + */ + double mdot_lbv = eval_LBV(SCHNEIDER_CALL_ARGS); + mdot_Schneider = MAX(mdot_Schneider, mdot_lbv); + + /* + * Apply some global limitations as is done in + * binary_c's wind mass-loss routine + */ + + /* limit to the dynamical rate of the envelope */ + double mdot_dyn = MAX(0.1*star->mass, star->mass - star->core_mass) / + MAX(1e-20,dynamical_timescale_envelope(star)); + + /* + * limit to 10% wind mass loss change in any one timestep + * + * Normally, this is never required. But if there is a merger + * between a massive helium star and a main sequence star, a + * massive CHeB star is formed. The LBV mass loss rate can then + * lead to very rapid mass loss which exceeds 100% per time step. + * Even 10% is still fast, but at least manageable by the + * evolution algorithm. + */ + double mdot_tenpc = star->mass * 0.1 / stardata->model.dt; + + mdot_Schneider = MIN3(mdot_Schneider, + mdot_dyn, + mdot_tenpc); + } + return mdot_Schneider; +} + +/* + * hot star wind: WR and OB stars + */ +static double eval_highT_Schneider(SCHNEIDER_PROTOTYPE_ARGS) +{ + double mdot = 0.0; + + double Mdot_Vink = eval_Vink_wind(SCHNEIDER_CALL_ARGS); + double Mdot_WR = eval_Schneider_WR_wind(SCHNEIDER_CALL_ARGS); + + mdot = MAX(Mdot_Vink, Mdot_WR); + + //printf("debug %g %g %i %g %g %g %g %g\n", stardata->model.time, star->mass, star->stellar_type, Tsurf, star->luminosity, Mdot_Vink, Mdot_WR, mdot); + + if(debug==TRUE) + { + printf("Schneider_wind - high temp. = %g \n", log10(mdot)); + } + + return mdot; +} + + +static double eval_lowT_Schneider(SCHNEIDER_PROTOTYPE_ARGS) +{ + double mdot = 0.0; + + /* + * mass-loss rates for cool stars + */ + double mdot_GB = wind_GB(WIND_CALL_ARGS); + double mdot_AGB = wind_AGB(WIND_CALL_ARGS); + double mdot_NJ = 0.0; + + /* apply Hurley-like luminosity cut for wind mass-loss of massive stars across + * the "cool" part of HRD (i.e. where Vink and WR rates do not apply) + */ + if (star->luminosity>LARGE_LUMINOSITY) + { + /* + * cool star wind + */ + mdot_NJ = eval_Nieuwenhuijzen_wind(SCHNEIDER_CALL_ARGS); + + /* + * apply metallicity scaling of cool star winds as found by Mauron & Josselin (2011) + */ + mdot_NJ *= pow(Zbase/VINK_SOLAR_METALLICITY, 0.5); + } + + mdot = MAX3(mdot_GB, + mdot_AGB, + mdot_NJ); + + if(debug==TRUE) + { + printf("Schneider_wind - low temp. = %g \n", log10(mdot)); + } + + return mdot; +} + +static double eval_Schneider_WR_wind(SCHNEIDER_PROTOTYPE_ARGS) +{ + /* + * WR star wind + * + * We use the WNE rates given by Yoon 2017, MNRAS + */ + + double mdot = 0.0; + double Mdot_WNE; + const double Zsun = 0.02; + const double f_WR = 1.58; + + Mdot_WNE = f_WR * pow(10.0, -11.32) * pow(star->luminosity, 1.18) * pow(Zbase/Zsun, 0.60); + //Mdot_WNE = f_WR * 1e-13 * pow(star->luminosity, 1.5) * pow(Zbase/Zsun, 0.86); // Belczynski WR winds + + if(star->stellar_type>=HeMS) + { + mdot = Mdot_WNE; + Dprint("He-star WR %g\n",mdot); + } + else + { + double mu = WR_mu(star); + if(mu<1.0) + { + mdot = Mdot_WNE*(1.0 - mu); + Dprint("H-star WR %g (mu=%g)\n",mdot,mu); + } + else + { + mdot = 0.0; + } + } + + //double Mdot_WC; + //Mdot_WC = f_WR * pow(10.0, -9.20) * pow(star->luminosity, 0.85) * pow(Y, 0.44) * pow(Zbase/Zsun, 0.25); + // + //mdot = 0.0; + //if (Y >= 1.0-Zbase) + //{ + // mdot = Mdot_WNE; + //} + //else if (Y < 0.90) + //{ + // mdot = Mdot_WC; + //} + //else + //{ + // x = (1.0-Zbase-Y)/(1-Zbase-0.9); + // mdot = (1.0-x)*Mdot_WNE + x*Mdot_WC; + //} + + if(debug==TRUE) + { + printf("Schneider_wind = WNE Yoon 2017 %g\n", log10(mdot)); + } + + return mdot; +} + + +/* + * Vink et al. (2000, 2001) copied from winds.f90 + * Modification: take wind-enhancement because of continuum + * driving into account when approaching the Eddington limit + */ +static double eval_Vink_wind(SCHNEIDER_PROTOTYPE_ARGS) +{ + const double zz = Zbase/VINK_SOLAR_METALLICITY; + double alpha; + /* + * interpolating factor: alpha = 1 for hot side, = 0 for cool side + */ + if(Tsurf > 27500.0) + { + alpha = 1.0; + } + else if(Tsurf < 22500.0) + { + alpha = 0.0; + } + else + { + /* + * use Vink et al 2001, eqns 14 and 15 to set "jump" temperature + */ + const double Teff_jump = 1e3*(61.2 + 2.59*(-13.636 + 0.889*log10(zz))); + const double dT = 100.0; + alpha = + Tsurf > (Teff_jump + dT) ? 1.0 : + Tsurf < (Teff_jump - dT) ? 0.0 : + ((Tsurf - (Teff_jump - dT)) / (2.0*dT)); + } + + double w1,w2; + if(alpha > 0.0) + { + /* + * eval hot side wind (eqn 24) + */ + double vinf_div_vesc = 2.6; /* this is the hot side Galactic value */ + vinf_div_vesc *= pow(zz,0.13); /* corrected for Z */ + w1 = pow(10.0, + - 6.697 + + 2.194*log10(star->luminosity/1e5) + - 1.313*log10(star->mass/30.0) + - 1.226*log10(vinf_div_vesc/2.0) + + 0.933*log10(Tsurf/4.0e4) + - 10.92*POW2(log10(Tsurf/4.0e4)) + + 0.85*log10(zz)); + } + else + { + w1 = 0.0; + } + + if(alpha < 1.0) + { + /* + * eval cool side wind (eqn 25) + */ + double vinf_div_vesc = 1.3; /* this is the cool side Galactic value */ + vinf_div_vesc *= pow(zz,0.13); /* corrected for Z */ + w1 = pow(10.0, + - 6.688 + + 2.210*log10(star->luminosity/1e5) + - 1.339*log10(star->mass/30) + - 1.601*log10(vinf_div_vesc/2.0) + + 1.07*log10(Tsurf/2e4) + + 0.85*log10(zz)); + } + else + { + w2 = 0.0; + } + + + double mdot = alpha*w1 + (1.0 - alpha)*w2; + + if(debug) + { + printf("vink wind %g %g %g\n", mdot, Zbase, VINK_SOLAR_METALLICITY); + } + + return mdot; +} + + +/* + * Nieuwenhuijzen, H., de Jager, C. 1990, A&A, 231, 134 (Eq. 2) + */ +static double eval_Nieuwenhuijzen_wind(SCHNEIDER_PROTOTYPE_ARGS) +{ + double mdot = pow(10.0, + -14.02 + + 1.24*log10(star->luminosity) + + 0.16*log10(star->mass) + + 0.81*log10(star->radius)); + + if(debug) + { + PRINTF("Nieuwenhuijzen log10 wind %g\n",log10(mdot)); + } + + return mdot; +} + +/* + * LBV-like mass loss rate + */ +static double eval_LBV(SCHNEIDER_PROTOTYPE_ARGS) +{ + double mdot_LBV=0.0; + double x = 1.0E-5*star->radius*sqrt(star->luminosity) - 1.0; + + if(star->stellar_type>=HERTZSPRUNG_GAP && + star->luminosity>LBV_LUMINOSITY && + x>0.0) + { + mdot_LBV = 1.5*1e-4; // Belczynski+2010 model //0.10*POW3(x)*(star->luminosity/LBV_LUMINOSITY-1.0); // Hurley LBV model + } + else + { + mdot_LBV = 0.0; + } + + Dprint("mdotLBV check stellar_type=%d radius=%g lum=%g hence x=(10^-5*R*sqrt(L)-1.0)=%g -> mdot_LBV=%g\n", + stellar_type,radius,luminosity,x,mdot_LBV); + + return(mdot_LBV); +} diff --git a/src/wind/wind_Schneider.h b/src/wind/wind_Schneider.h new file mode 100644 index 0000000000000000000000000000000000000000..1323004fb108ff29d556dd77558804bf1c11364d --- /dev/null +++ b/src/wind/wind_Schneider.h @@ -0,0 +1,24 @@ +#pragma once +#ifndef WIND_SCHNEIDER_H +#define WIND_SCHNEIDER_H + +#define SCHNEIDER_CALL_ARGS \ + WIND_CALL_ARGS, \ + Zbase, \ + debug, \ + Tsurf + +#define SCHNEIDER_PROTOTYPE_ARGS \ + WIND_PROTOTYPE_ARGS, \ + const double Zbase, \ + const Boolean debug, \ + const double Tsurf + +static double eval_lowT_Schneider(SCHNEIDER_PROTOTYPE_ARGS); +static double eval_highT_Schneider(SCHNEIDER_PROTOTYPE_ARGS); +static double eval_Schneider_WR_wind(SCHNEIDER_PROTOTYPE_ARGS); +static double eval_Vink_wind(SCHNEIDER_PROTOTYPE_ARGS); +static double eval_Nieuwenhuijzen_wind(SCHNEIDER_PROTOTYPE_ARGS); +static double eval_LBV(SCHNEIDER_PROTOTYPE_ARGS); + +#endif // WIND_SCHNEIDER_H diff --git a/src/wind/wind_WR.c b/src/wind/wind_WR.c index c94249d4cc84ae8dafd5f2370813f088345f018a..8957df25e4494f6d9d8d93b7d21576c9d66df4a7 100644 --- a/src/wind/wind_WR.c +++ b/src/wind/wind_WR.c @@ -21,15 +21,15 @@ double wind_WR(WIND_PROTOTYPE_ARGS) if(stardata->preferences->wr_wind==WR_WIND_STANDARD) { /* Hurley et al 2002 mass loss */ - double mu = (menv/mass)*MIN(5.0,MAX(1.20, - pow((luminosity/LUM0),KAP))); - if(stellar_type>=HeMS) + if(stellar_type>=HeMS) { mdot = 1.0E-13*POW1p5(luminosity); // as below with mu=0 Dprint("he-star WR %g\n",mdot); } else { + double mu = (menv/mass)*MIN(5.0,MAX(1.20, + pow((luminosity/LUM0),KAP))); if(mu<1.0) { mdot = 1.0E-13*POW1p5(luminosity)*(1.0 - mu); diff --git a/src/wind/wind_macros.h b/src/wind/wind_macros.h index d8239eafdd6375af5cc65a70ede7f72ddfdc5ac4..12fd3841a66d986b6177e01105c5911806c31480 100644 --- a/src/wind/wind_macros.h +++ b/src/wind/wind_macros.h @@ -1,10 +1,21 @@ - +#pragma once #ifndef WIND_MACROS_H #define WIND_MACROS_H -#define LBV_LUMINOSITY 6E+05 + +/* + * Wind algorithms + */ +#define WIND_ALGORITHM_NONE 0 +#define WIND_ALGORITHM_HURLEY2002 1 +#define WIND_ALGORITHM_SCHNEIDER2018 2 + + +/* constants */ +#define LBV_LUMINOSITY 6e+05 #define LARGE_LUMINOSITY 4000.0 #define NIEUWENHUIJZEN_FUDGE_FACTOR +#define VINK_SOLAR_METALLICITY 0.019 #define WIND_PROTOTYPE_ARGS double mass, \ double core_mass, \ diff --git a/src/wind/wind_mass_loss_rate.c b/src/wind/wind_mass_loss_rate.c index 867fd7154d3003949054a57e49edb6f5beda90a9..496f4c4bbee8c5e41e89a55364c768f1cac5fb49 100644 --- a/src/wind/wind_mass_loss_rate.c +++ b/src/wind/wind_mass_loss_rate.c @@ -1,118 +1,51 @@ #include "wind.h" -static double max_from_list(int n,...); - double wind_mass_loss_rate(WIND_PROTOTYPE_ARGS) { /* * Calculate the wind mass loss rate from a star. * - * This is based on the Hurley 2002 prescription, but with additions. - * * mdot_wind contains the result, in Msun/year, which is * a positive number (and is returned). - * */ - double mdot_wind; // result : returned - double mdot[MDOT_COUNT]; // different wind mass losses - - if((stardata->preferences->wind_mass_loss == FALSE)|| - (stellar_type>=HeWD)) + double mdot_wind = 0.0; // result : returned + + switch(stardata->preferences->wind_mass_loss) { + + case WIND_ALGORITHM_NONE: /* - * no mass loss for white dwarfs or if mass loss is - * turned off + * No wind - do nothing */ mdot_wind = 0.0; - } - else if(stellar_type<HeWD) - { - /* calculate contributions from different types of mass loss */ - mdot[MDOT_MS] = 0.0; - mdot[MDOT_GB] = wind_GB(WIND_CALL_ARGS); - mdot[MDOT_AGB] = wind_AGB(WIND_CALL_ARGS); - mdot[MDOT_WR] = wind_WR(WIND_CALL_ARGS); - mdot[MDOT_OTHER] = wind_other(WIND_CALL_ARGS); - mdot[MDOT_LBV] = wind_LBV(WIND_CALL_ARGS); - - Dprint("mdot%d (premod): M=%g Mc=%g : MS=%d=%g GB=%d=%g AGB=%d=%g WR=%d=%g OTHER=%d=%g LBV=%d=%g : ", - star->starnum, - mass, - core_mass, - MDOT_MS,mdot[MDOT_MS], - MDOT_GB,mdot[MDOT_GB], - MDOT_AGB,mdot[MDOT_AGB], - MDOT_WR,mdot[MDOT_WR], - MDOT_OTHER,mdot[MDOT_OTHER], - MDOT_LBV,mdot[MDOT_LBV] - ); - - /* apply aritificial multiplicative factors */ - wind_multiplicative_factors(mdot,WIND_CALL_ARGS); - - /* enhancement factors (CRAP, rotation, etc) */ - double mult=wind_enhancement_factors(mdot,WIND_CALL_ARGS); - - /* choose the mass loss rate to use */ - mdot_wind = max_from_list(5, - mdot[MDOT_MS], - mdot[MDOT_GB], - mdot[MDOT_AGB], - mdot[MDOT_WR], - mdot[MDOT_OTHER]) - + mdot[MDOT_LBV]; + break; - /* use global multiplication factor (see above) */ - mdot_wind *= mult; - - /* limit to the dynamical rate of the envelope */ - double mdot_dyn = MAX(0.1*star->mass, star->mass - star->core_mass) / - MAX(1e-20,dynamical_timescale_envelope(star)); - - /* - * limit to 10% wind mass loss change in any one timestep - * - * Normally, this is never required. But if there is a merger - * between a massive helium star and a main sequence star, a - * massive CHeB star is formed. The LBV mass loss rate can then - * lead to very rapid mass loss which exceeds 100% per time step. - * Even 10% is still fast, but at least manageable by the - * evolution algorithm. + case WIND_ALGORITHM_HURLEY2002: + /* + * Hurley et al (2002) prescription */ - double mdot_tenpc = star->mass * 0.1 / stardata->model.dt; - - mdot_wind = MIN3(mdot_wind, - mdot_dyn, - mdot_tenpc); - } - else - { - /* remnant */ - mdot_wind = 0.0; + mdot_wind = wind_Hurley2002(WIND_CALL_ARGS); + break; + + case WIND_ALGORITHM_SCHNEIDER2018: + /* + * Fabian Schneider's 2018 routine + */ + mdot_wind = wind_Schneider(WIND_CALL_ARGS); + break; + + default: + Exit_binary_c(ALGORITHM_OUT_OF_RANGE, + "Wind mass loss prescription %d is unknown.\n", + stardata->preferences->wind_mass_loss); } - - Dprint("mdot_wind = %g\n",mdot_wind); + + Dprint("mdot_wind = %g from prescription %d\n", + mdot_wind, + stardata->preferences->wind_mass_loss); star->vwind = vwind(WIND_CALL_ARGS); return (mdot_wind); } - -static double max_from_list(int n,...) -{ - /* - * given a list of doubles return the maximum value - */ - va_list args; - va_start(args,n); - double val,maxval = va_arg(args,double); - int i; - for(i=1;i<n;i++) - { - val = va_arg(args,double); - maxval=MAX(val,maxval); - } - va_end(args); - return(maxval); -} diff --git a/src/wind/wind_momentum.c b/src/wind/wind_momentum.c new file mode 100644 index 0000000000000000000000000000000000000000..1df8300bfd29764bc41123e7fbeec4437ed8923a --- /dev/null +++ b/src/wind/wind_momentum.c @@ -0,0 +1,17 @@ +#include "../binary_c.h" + +double wind_momentum_rate(struct star_t * RESTRICT star) +{ + /* + * Wind momentum rate : + * consider loss only, ignore accretion + * + * return in CGS units + */ + double pdot = + star->vwind * + star->derivative[DERIVATIVE_STELLAR_MASS_WIND_LOSS] * + 1e5 * M_SUN / YEAR_LENGTH_IN_SECONDS; + + return pdot; +} diff --git a/src/wind/wind_prototypes.h b/src/wind/wind_prototypes.h index f8bb93f57a012324623fe53b53d610e042dd5757..f9e783e64f6084d1b64dc24f43bab1ba937237cf 100644 --- a/src/wind/wind_prototypes.h +++ b/src/wind/wind_prototypes.h @@ -1,4 +1,4 @@ - +#pragma once #ifndef WIND_PROTOTYPES_H #define WIND_PROTOTYPES_H #include "wind.h" @@ -15,4 +15,8 @@ double wind_enhancement_factors(double *mdot, WIND_PROTOTYPE_ARGS); double vwind(WIND_PROTOTYPE_ARGS); +double wind_Hurley2002(WIND_PROTOTYPE_ARGS); +double wind_Schneider(WIND_PROTOTYPE_ARGS); +double wind_momentum_rate(struct star_t * RESTRICT star); + #endif diff --git a/src/zfuncs/Karakas2002_interpulse_period.c b/src/zfuncs/Karakas2002_interpulse_period.c index 08ce1e8760d918524f3ab4e3a5f92d80da2cd081..621131db3734e2d409372624fcd8107dc8b1bf25 100644 --- a/src/zfuncs/Karakas2002_interpulse_period.c +++ b/src/zfuncs/Karakas2002_interpulse_period.c @@ -136,11 +136,11 @@ CONST_FUNC double Karakas2002_interpulse_period(struct stardata_t * RESTRICT sta x += 0.15*lambda*lambda; - Dprint("set interpulse time (zz=%g mc=%g mc_1tp=%g TPAGB_MIXING_LENGTH_PARAMETER=%g) %g\n",zz,mc,mc_1tp,TPAGB_MIXING_LENGTH_PARAMETER,pow(10,x)); - /* return period in megayears, minimum period 100 years */ x=MAX(MINIMUM_INTERPULSE_PERIOD, pow(10.0,x-6.0)); + + Dprint("set interpulse time (zz=%g mc=%g mc_1tp=%g TPAGB_MIXING_LENGTH_PARAMETER=%g) %g\n",zz,mc,mc_1tp,TPAGB_MIXING_LENGTH_PARAMETER,pow(10,x)); return (x); diff --git a/src/zfuncs/lwd.c b/src/zfuncs/lwd.c index e32a76e5461c0df34db96a46feb0ee85c6a8540e..a3b3bf1c7835047863b15f556e0fc5d7af56b8aa 100644 --- a/src/zfuncs/lwd.c +++ b/src/zfuncs/lwd.c @@ -4,7 +4,6 @@ double lwd(const double m, const Stellar_type st, struct stardata_t * RESTRICT stardata) { - double xx,l,q; /* calculates the luminosity of a WD */ @@ -23,6 +22,7 @@ double lwd(const double m, #ifdef NANCHECKS if(isnan(l)!=0) { + Backtrace; Exit_binary_c(EXIT_NAN, "WD nan L breakage : M=%g age=%g st=%d xx=%g q=%g l=%g\n", m,age,st,xx,q,l); diff --git a/src/zfuncs/mc1tp.c b/src/zfuncs/mc1tp.c index 9677923a4fadf198eeb677126e8f114468cb39a4..436fe239942960b6765d087c1406a22b262d52ab 100644 --- a/src/zfuncs/mc1tp.c +++ b/src/zfuncs/mc1tp.c @@ -55,6 +55,16 @@ double guess_mc1tp(const double mass, } } + { + /* + * Force massive stars to have a high mc1tp + * i.e. avoid thermal pulses + */ + double f = 1.0/(1.0 + pow(0.1,mass-20.0)); + mc1 += 1e3 * f; + } + + Dprint("Mc1TP(M=%g, M0=%g Z=%g, t=%g, alg=%d, st=%d, Mc=%g) = %g\n", mass, phase_start_mass, diff --git a/src/zfuncs/mcgbtf.c b/src/zfuncs/mcgbtf.c index 1ce415bf8f8bdae228a84655741477412117b81f..4030cd6f8a920a54cf4586e1222fdd2f6bc92586 100644 --- a/src/zfuncs/mcgbtf.c +++ b/src/zfuncs/mcgbtf.c @@ -11,7 +11,7 @@ double mcgbtf(const double t, * A function to evaluate Mc given t for GB, AGB and NHe stars * * Note that on the GB, for stars with M>MHef, this is not - * the true core mass, rather it is a "dummy" core mas. + * the true core mass, rather it is a "dummy" core mass. */ double result,y; @@ -19,11 +19,29 @@ double mcgbtf(const double t, { y=GB[GB_p]-1.0; result = pow(y*A*GB[GB_D]*(tinf1 - t),-1.0/y); + /*printf("mcx y1 %g : y=%g GB_D=%g tinf1=%g t=%g -> result %g\n", + result, + y, + GB[GB_D], + tinf1, + t, + result + ); + */ } else { y=GB[GB_q]-1.0; result = pow(y*A*GB[GB_B]*(tinf2 - t),-1.0/y); + /*printf("mcx y2 %g : y=%g GB_D=%g tinf2=%30.20g t=%30.20g -> result %g\n", + result, + y, + GB[GB_B], + tinf2, + t, + result + ); + */ } return result; diff --git a/src/zfuncs/min_He_ignition_core_mass.c b/src/zfuncs/min_He_ignition_core_mass.c new file mode 100644 index 0000000000000000000000000000000000000000..a9211796e6546449f99dbc0c004b12d3c639a096 --- /dev/null +++ b/src/zfuncs/min_He_ignition_core_mass.c @@ -0,0 +1,30 @@ +#include "../binary_c.h" + +double min_He_ignition_core_mass(struct stardata_t * stardata, + struct star_t * star) +{ + double mcmin; + if(IS_ZERO(stardata->preferences->minimum_helium_ignition_core_mass)) + { + /* + * BSE algorithm : use a very large mass which makes ignition + * by the core-mass check impossible + */ + mcmin = IMPOSSIBLY_LARGE_MASS; + } + else if(stardata->preferences->minimum_helium_ignition_core_mass > TINY) + { + /* + * Set on the command line + */ + mcmin = stardata->preferences->minimum_helium_ignition_core_mass; + } + else + { + mcmin = 0.0; + Exit_binary_c(ALGORITHM_OUT_OF_RANGE, + "minimum_helium_ignition_core_mass is out of the valid ranges. It must be >=0."); + } + + return mcmin; +} diff --git a/src/zfuncs/molecular_weight.c b/src/zfuncs/molecular_weight.c index baf510f0ab22291cd537108615e8c43c83efeaff..edc8465db9f19c9307a65c0f4dab78c4e0c08be0 100644 --- a/src/zfuncs/molecular_weight.c +++ b/src/zfuncs/molecular_weight.c @@ -10,7 +10,9 @@ double molecular_weight(const struct star_t * RESTRICT star, double mu; #ifdef NUCSYN /* warning: should not use Xenv ! */ - mu = nucsyn_molecular_weight(star->Xenv,star->stellar_type,stardata); + mu = nucsyn_effective_molecular_weight(star->Xenv, + star->stellar_type, + stardata); #else /* chemistry unknown! assume either H or He rich */ double Y,X = star->stellar_type<=TPAGB ? 0.75 : 0.0; diff --git a/src/zfuncs/rhehgf.c b/src/zfuncs/rhehgf.c index 2a716017b469e3c6dbb8bd9c04a4641c33cd872c..e7e9051ae4c1214c2361d13a0c0500ad5535a5ab 100644 --- a/src/zfuncs/rhehgf.c +++ b/src/zfuncs/rhehgf.c @@ -10,7 +10,7 @@ CONST_FUNC double pure_function rhehgf(const double m, * from its mass and luminosity. */ const double m25 = POW2p5(m); - double result = 2e-3 * m25 / (2.0 + POW2(m25)); + double result = 2e-3 * m25 / (2.0 + POW2(m25)); // lambda in Eq.87 result = rx*pow(lum/lx, 0.2) + 0.020*(exp(result*lum) - exp(result*lx)); return result; diff --git a/src/zfuncs/zfuncs_prototypes.h b/src/zfuncs/zfuncs_prototypes.h index 57c486c5bd653ad11b86986cf338d572d8498abc..ddffdce076c947e1ef7dd44fb27bb47d35dc7c91 100644 --- a/src/zfuncs/zfuncs_prototypes.h +++ b/src/zfuncs/zfuncs_prototypes.h @@ -172,7 +172,7 @@ CONST_FUNC double pure_function rhehgf(const double m, const double lx); CONST_FUNC double pure_function rhegbf(const double lum); -double bh_mass(const double m, +double ns_bh_mass(const double m, const double mc, struct stardata_t * RESTRICT stardata, const struct star_t * RESTRICT star); @@ -337,4 +337,7 @@ double pure_function dm_intershell(const double mc); double mcbgb(struct star_t * s, struct stardata_t * stardata); +double min_He_ignition_core_mass(struct stardata_t * stardata, + struct star_t * star); + #endif /* ZFUNCS_PROTOTYPES_H */ diff --git a/tbse b/tbse index 3d2158eb8130ab5328af75f8aeb20f9d8d207ee5..5af021485d0d53463931a0fbd4b598f83146a22a 100755 --- a/tbse +++ b/tbse @@ -66,25 +66,34 @@ STELLAR_TYPE1=1 STELLAR_TYPE2=1 # stellar masses (solar units) -M1=1.5 -M2=1.0 +M1=1.7 +M2=1.15 # orbit: # If the period (days) is given, use it. # If the period is zero, use the separation (in Rsun) to calculate the period. # (this requires that the masses are already set) ORBITAL_PERIOD=0 -ORBITAL_SEPARATION=40 +ORBITAL_SEPARATION=1100 +#ORBITAL_SEPARATION=100 # Orbital eccentricity should be in the range 0.0-1.0. -ECCENTRICITY=0.0 +ECCENTRICITY=1e-5 # max evolution time in Myr (WMAP suggests 13.7Gyr = 13700 Myr) MAX_EVOLUTION_TIME=15000 # metallicity for stellar evolution, must be in the range 1e-4<=Z<=0.03 # (mass fraction) -METALLICITY=0.02 +METALLICITY=0.004 + +# effective metallicity can be outside the +# range reqired by the stellar evolution +# algorithm, and may be used by other algorithms +# such as mass-loss. +# +# By default it's the same as the actual metallicity. +EFFECTIVE_METALLICITY=$METALLICITY # Stellar structure algorithm # 0 = modified BSE (default) @@ -98,14 +107,17 @@ if [ -f "example_systems" ]; then source "example_systems" fi +# Karsten's system +#M1=1.21; M2=0.8; ORBITAL_PERIOD=2.8; ORBITAL_SEPARATION=0 + ############################################################ # ZAMS rotation rates (km/s) # use 0.1 (i.e. very small) for 'zero' # 0 = H02 formula for vrot (assuming the star is spherical) # -1 to start at breakup (which assumes the star is equatorially deformed) # -2 to sync the angular velocity with the orbit -VROT1=0 -VROT2=0 +VROT1=-2 +VROT2=-2 # random number seed (ignored if commented out) # RANDOM_SEED=-30291 @@ -121,12 +133,23 @@ MAX_NEUTRON_STAR_MASS=1.8 MINIMUM_MASS_FOR_CARBON_IGNITION=1.6 MINIMUM_MASS_FOR_NEON_IGNITION=2.85 +# an exposed helium core mass should exceed this mass +# to ignite helium, or satisfy the condition +# on the phase start total mass (including the hydrogen +# envelope) set by the BSE algorithm +MINIMUM_HELIUM_IGNITION_CORE_MASS=0.40 + # Pre-main sequence: # set pre_main_sequence to 1 to activate Railton et al (2014) PMS radii PRE_MAIN_SEQUENCE=0 # and if set, fit stars into the Roche lobes at the birth of the binary? PRE_MAIN_SEQUENCE_FIT_LOBES=0 +# carbon burning and lifetime in Myr +# typically "thousands of years" +CARBON_BURNING=0 +CARBON_BURNING_LIFETIME=1e-3 + ############################################################ # # Binary star physics @@ -150,7 +173,7 @@ PRE_MAIN_SEQUENCE_FIT_LOBES=0 # # method for calculating q_crit for comenv on giant branches: # -1 = H02, -2 = Hjellming+Webbink, -3=No comenv, -4=Chen+Han(table), -# -5=Chen+Han(formula), -6=Ge+2015 +# -5=Chen+Han(formula), -6=Ge+2015, -7=Vos2018 # # See table 2 of Claeys et al 2014 (C14) although note that # they define Q = Ma/Md (hence instability if Q<Qcrit) @@ -168,7 +191,7 @@ QCRIT_MS=1.6 # HG : see H02 sect 2.6.1 QCRIT_HG=4.0 # GB : H02 prescription by default -QCRIT_GB=-1.0 +QCRIT_GB=-1 # CHeB doesn't matter (screened by GB mass transfer) QCRIT_CHeB=3.0 # EAGB and TPAGB : see GB @@ -229,7 +252,7 @@ WIND_ANGULAR_MOMENTUM_LOSS=0 WIND_DJORB_FAC=1.0 # multiplies Tout's Jorbdot LW=1.0 # multiplies lw Jorbdot -# "qAritificial" constant mass and angular momentum +# "Aritificial" constant mass and angular momentum # change rates. Useful for testing or # with the API and an external application. # @@ -255,11 +278,22 @@ ANGULAR_MOMENTUM_ACCRETION_RATE_ORBIT=0.0 # 2 = None # 3 = Landau and Lifshitz (1951) model for J (e is not changed) # 4 = Landau and Lifshitz (1951) model for J when R<RL only (e is not changed) -GRAVITATIONAL_RADIATION_MODEL=0 +GRAVITATIONAL_RADIATION_MODEL=2 + +# Magnetic braking algorithm +# 0 = Hurley et al. (2002) +# 1 = Andronov, Pinnsoneault and Sills 2003 +# 2 = Barnes and Kim 2010 +# 3 = Rappaport et al. 1983 (see magnetic_braking_gamma) +MAGNETIC_BRAKING_ALGORITHM=1 # Magnetic braking multipier MAGNETIC_BRAKING_FACTOR=1.0 +# magnetic braking gamma factor +# (only relevant to Rappaport et al. 1983) +MAGNETIC_BRAKING_GAMMA=3.0 + ############################################################ # Tidal interactions # @@ -291,7 +325,7 @@ RLOF_METHOD=3 RLOF_INTERPOLATION_METHOD=0 # RLOF mass loss rate modulator (1.0) -RLOF_MDOT_FACTOR=1.0 +RLOF_MDOT_FACTOR=1.0e-3 # use RL (0) or RL(1-e) (1) to test for RLOF RLPERI=0 @@ -307,8 +341,7 @@ JORB_RLOF_TRANSFER_MODEL=0 # -2 : an isotropic wind from the secondary (accretor) # i.e. gamma=Md/Ma (default in C14) # >=0 : the specific angular momentum of the orbit multiplied by gamma -NONCONSERVATIVE_ANGMOM_GAMMA=-2 -# 2.2 for Karsten's system +NONCONSERVATIVE_ANGMOM_GAMMA=-1 # ratio of radiation to gas pressure in the roche lobe (0=default # just gives Eggleton's expression) : very experimental! @@ -356,7 +389,7 @@ COMENV_PRESCRIPTION=0 MINIMUM_DONOR_MENV_FOR_COMENV=0.1 # Alpha (energy from orbit put into envelope, 1.0) -ALPHA_CE=1.0 +ALPHA_CE=0.2 # Lambda: structure parameter # if >0 (e.g. 0.5) then use the given value @@ -366,7 +399,7 @@ ALPHA_CE=1.0 LAMBDA_CE=-1 # fraction of recombination energy to use in unbinding the envelope -LAMBDA_IONISATION=0.0 +LAMBDA_IONISATION=0.1 # fraction of enthalpy to use in unbinding the envelope LAMBDA_ENTHALPY=0.0 @@ -399,7 +432,7 @@ COMENV_POST_ECCENTRICITY=1e-5 # Fraction of the ejected common envelope mass that # goes into the disc (1e-3) set to 0 to disable -COMENV_DISC_MASS_FRACTION=1e-3 +COMENV_DISC_MASS_FRACTION=1e-2 # Fraction of ejected common envelope's angular momentum # that goes into the disc. @@ -410,7 +443,7 @@ COMENV_DISC_MASS_FRACTION=1e-3 # -2 : use comenv specific angular momentum (minimum?) # -3 : use post-CE L2 specific angular momentum # -4 : use pre-CE comenv radius specific angular momentum -COMENV_DISC_ANGMOM_FRACTION=0.01 +COMENV_DISC_ANGMOM_FRACTION=0.1 ############################################################ @@ -428,33 +461,129 @@ WIND_DISC_MASS_FRACTION=0.0 # -1 : undefined # -2 : undefined # -3 : use the L2 specific angular momentum -WIND_DISC_ANGMOM_FRACTION=1e3 +WIND_DISC_ANGMOM_FRACTION=2.0 + ############################################################ +############################## +# general disc options +############################## + +# Disc timestep multiplier: the "natural timescale" +# of the disc is multiplied by this to resolve changes in the disc. +DISC_TIMESTEP_FACTOR=1.0 + +# soft disc log switch +# +# 0=off, 1=on, 2=on with sub-timestep logging +# +# Set negative to log the first disc in the system only +# +# so e.g. -2 is sub-timestep logging ONLY for the first disc +DISC_LOG=0 + +# soft 2D disc log switch +DISC_LOG2D=0 + +# disc log every DISC_LOG_DT Myr only. Ignored if zero. +# If set to -1, is automatically calculated (1Myr except on the GB/AGB) +DISC_LOG_DT=0 + +# If > 0 allows this many randomly chosen initial conditions +# when trying to solve the disc structure (0). +DISC_N_MONTE_CARLO_GUESSES=0 + +############################## # Circumbinary disc physical properties +############################## + CBDISC_GAMMA=1.6666666 # 1.6666666 -CBDISC_ALPHA=1e-4 # 1e-2 or 1e-3 -CBDISC_KAPPA=1e-2 # 1e-2 -CBDISC_TORQUEF=1e-4 # 1e-4 ? +CBDISC_ALPHA=1e-3 # 1e-2 or 1e-3 +CBDISC_KAPPA=1e3 # cgs (cm^2 g^-1) : 1e-2 for cool gas, 1e5 for dust in the visible cf https://ned.ipac.caltech.edu/level5/Sept05/Li2/Li4.html +CBDISC_TORQUEF=1e-3 # 1e-3 tends to keep discs outside L2 + +############################## +# Initial structure options +############################## + +# When a disc tries to form, +# we reduce its mass by a fraction CBDISC_INIT_DM and its +# angular momentum by CBDISC_INIT_DJDM * CBDISC_INIT_DM, +# where CBDISC_INIT_DJDM is usually < 1.0. +# +# Set CBDISC_INIT_DM to 0.0 to disable this mechanism. +# but this requires that the initial angular momentum is +# sufficient to support the disc (see COMENV_DISC_ANGMOM_FRACTION). +CBDISC_INIT_DM=0.0 # (0.0) +CBDISC_INIT_DJDM=0.1 # (0.1) + +############################## +# disc failure and stopping conditions +############################## -# Circumbinary disc mass loss rate (Msun/year) +# If the disc luminosity drops below this, it is evaporated instantly so +# that its evolution stops (Lsun). (1e-4) +# +# If negative, then the ratio L*/Lsun is compared to this +# number instead. +CBDISC_MINIMUM_LUMINOSITY=0.0 + +# if the disc mass drops below this, it is evaporated instantly so +# that its evolution stops (Msun) (1e-6) +CBDISC_MINIMUM_MASS=0.0 + +# if the fRing = 1 - Rout/Rin parameter is non-zero, or +# drops below this value, the disc is considered invalid +# (and is evaporated if it exists). # -# Constant mass loss rate: +# Set to 0 to try to solve the disc equations always. +# A typical setting is 0.2 (the default). +CBDISC_MINIMUM_FRING=0.2 + +# Fail immediately if the equivalent ring is inside the separation. +# NB This may prevent actual calculation of a disc structure, so is +# (in theory) faster, but bypasses all other phyics. (0) +CBDISC_FAIL_RING_INSIDE_SEPARATION=0 + +# maximum disc lifetime (years) ignored if 0 (0) +CBDISC_MAX_LIFETIME=0 + +############################## +# Circumbinary disc mass change algorithms +############################## + +# If the slow (non-edge stripping) mass loss +# timescale is less than this (in years), evaporate +# the disc immediately. +CBDISC_MINIMUM_EVAPORATION_TIMESCALE=1.0 + +# Constant mass loss rate (Msun/year) (0.0) # Mass is removed with the same specific angular # momentum as the disc. CBDISC_MASS_LOSS_CONSTANT_RATE=0.0 -# multiplier for inner edge viscous rate (1.0) -CBDISC_MASS_LOSS_INNER_VISCOUS_MULTIPLER=1.0 +# multiplier for inner edge viscous mass flow rate (1.0) +CBDISC_MASS_LOSS_INNER_VISCOUS_MULTIPLIER=1.0 + +# multiplier for inner edge viscous angular momentum flow rate (1.0) +CBDISC_MASS_LOSS_INNER_VISCOUS_ANGULAR_MOMENTUM_MULTIPLIER=1.0 -# algorithm for determining which star the material lands on +# algorithm for determining which star the material lands on (1) # 0 = Young and Clarke 2015 (MNRAS 452, 3085) # 1 = Gerosa et al 2015 (MNRAS 451, 3941) # 2 = 50:50 (no mass dependence) -CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD=2 +# 3 = no mass for either star +CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD=0 + +# multiplier for L2 crossing mass accretion rate (1.0) +# +# If you use the viscous coupling, the evaporation +# radius is scaled appropriately. +# +CBDISC_MASS_LOSS_INNER_L2_CROSS_MULTIPLIER=1.0 -# multiplier for L2 crossing mass accretion rate -CBDISC_MASS_LOSS_INNER_L2_CROSS_MULTIPLIER=0.0 +# couple L2 and viscous losses at the inner edge (1) +CBDISC_VISCOUS_L2_COUPLING=1 # ISM pressure in units of the Boltzmann constant/K (3000) e.g. # http://www.astronomy.ohio-state.edu/~pogge/Ast871/Notes/Intro.pdf page 15 @@ -462,42 +591,44 @@ CBDISC_MASS_LOSS_INNER_L2_CROSS_MULTIPLIER=0.0 CBDISC_MASS_LOSS_ISM_PRESSURE=3000 # multiplier for the ISM ram pressure stripping (1.0) -CBDISC_MASS_LOSS_ISM_RAM_PRESSURE_MULTIPLIER=0.0 +# Note: this is streated as (fast) mass stripping if +# CBDISC_OUTER_EDGE_STRIPPING is 1 +CBDISC_MASS_LOSS_ISM_RAM_PRESSURE_MULTIPLIER=1.0 -# multipliers for X-ray and FUV winds +# multipliers for X-ray (1.0) and FUV (0.0, not yet implemented) winds CBDISC_MASS_LOSS_FUV_MULTIPLIER=0.0 CBDISC_MASS_LOSS_XRAY_MULTIPLIER=1.0 -# couple photoevaporation and viscous losses at the inner edge -CBDISC_VISCOUS_PHOTOEVAPORATION_COUPLING=0 +# couple photoevaporation and viscous losses at the inner edge (1) +CBDISC_VISCOUS_PHOTOEVAPORATION_COUPLING=1 + +# edge stripping (0 or 1, both 1 by default) +CBDISC_INNER_EDGE_STRIPPING=1 +CBDISC_OUTER_EDGE_STRIPPING=1 + +# timescales for edge stripping: +# 0 = instant (default) +# 1 = very slow +# 2 = viscous at Revap +# 3 = orbital at Revap +CBDISC_INNER_EDGE_STRIPPING_TIMESCALE=0 +CBDISC_OUTER_EDGE_STRIPPING_TIMESCALE=0 + +############################## +# Eccentricity pumping +############################## # Eccentricity pumping by the circumbinary disc. # 0 = none -# 1 = Dermine et al. (2012) -CBDISC_ECCENTRICITY_PUMPING_METHOD=0 +# 1 = Dermine et al. (2012) (1) +CBDISC_ECCENTRICITY_PUMPING_METHOD=1 -# multiplier for ecc. pumping +# multiplier for ecc. pumping (1.0) CBDISC_RESONANCE_MULTIPLIER=1.0 -# apply damping when the resonance is outside the disc inner edge? +# apply damping when the resonance is outside the disc inner edge? (1) CBDISC_RESONANCE_DAMPING=1 -# If the disc luminosity drops below this, it is evaporated instantly so -# that its evolution stops (Lsun). -# -# If negative, then the ratio L*/Lsun is compared to this -# number instead. -CBDISC_MINIMUM_LUMINOSITY=1e-4 - -# if the disc mass drops below this, it is evaporated instantly so -# that its evolution stops (Msun) -CBDISC_MINIMUM_MASS=1e-20 - -# if the fRing parameter is non-zero, and drops below this value, -# the disc is evaporated. -# Set to 0 to try to solve the disc equations always. -# A typical setting is 0.1 - 0.2. -CBDISC_MINIMUM_FRING=0.2 ###### end circumbinary discs from comenv ###### ############################################################ @@ -550,10 +681,10 @@ OPACITY_ALGORITHM=1 # is ignored. # # Thermal limit for giant-like stars (1.0) -DONOR_LIMIT_THERMAL_MULTIPLIER=1e6 +DONOR_LIMIT_THERMAL_MULTIPLIER=1.0e6 # Dynamical limit -DONOR_LIMIT_DYNAMICAL_MULTIPLIER=1e6 +DONOR_LIMIT_DYNAMICAL_MULTIPLIER=1.0e6 ############################################################ # @@ -561,7 +692,7 @@ DONOR_LIMIT_DYNAMICAL_MULTIPLIER=1e6 # # 1.0 means the standard rate is enforced. # -# A large number, e.g. 1e6, effetively means the rate +# A large number, e.g. 1e6, effetively means the limit # is ignored. # # @@ -589,7 +720,6 @@ NOVA_RETENTION_METHOD=0 # -1.0 = more lost than accreted (erodes WD, WD mass drops) # (1e-3 is the Hurley et al. 2002 setting) NOVA_RETENTION_FRACTION=1.0 -#1e-3 # Explode individual novae? INDIVIDUAL_NOVAE=0 @@ -611,8 +741,11 @@ NOVA_IRRADIATION_MULTIPLIER=0.0 # Stellar winds ################ # -# mass loss by stellar winds: 0 (off) or 1 (on, default) -# see below for prescription details +# mass loss by stellar winds +# +# 0 : no wind +# 1 : default Hurley+ 2002 (options are below) +# 2 : Schneider 2018 WIND_MASS_LOSS=1 # multiplier for the wind velocity : 0.125 (=1/8) in Hurley et al @@ -654,6 +787,10 @@ MATTSON_ORICH_TPAGBWIND=3 # Wind during Wolf-Rayet phase: 0=hurley et al 2002, 1=mm, 2=nl, 3=jje # (See Lynnette Dray's thesis, or John Eldridge's thesis) +# For OB supergiants, use the 2001 paper +# For the WR stars, use the 2005 paper, scale with with [Fe/H] (not Z) +# For very massive stars, use the 2001 paper but awaiting +# updates. WRWIND=0 WRWINDFAC=1.0 @@ -670,7 +807,7 @@ WRWINDFAC=1.0 # 3 = 1 + 2 (not recommended!) # # I recommend using 2. -ROTATIONALLY_ENHANCED_MASS_LOSS=2 +ROTATIONALLY_ENHANCED_MASS_LOSS=0 ROTATIONALLY_ENHANCED_EXPONENT=1.0 ############################################################ @@ -708,7 +845,26 @@ MASS_ACCRETION_FOR_ELD=0.15 # 2: Spera+ 2015 # 3: Fryer 2012 (delayed) # 4: Fryer 2012 (rapid) -BH_PRESCRIPTION=2 +BH_PRESCRIPTION=1 + +# Type Ia supernovae +# +# Chandrasekhar mass exploder algorithm +# 0 = Iwamoto 1999's DD2 model +# 1 = Seitenzahl 2013 (you must set Seitenzahl2013_model) +# 2 = Seitenzahl 2013 automatic (uses N100 model with metallicity +# interpolation) +TYPE_IA_MCH_SUPERNOVA_ALGORITHM=2 + +# if using Seitenzahl 2013, which of their models to use? +# choose one of N1,N3,N5,N10,N20,N40,N100L,N100,N100H, +# N150,N200,N300C,N1600,N1600C, +# N100_Z0.5,N100_Z0.1,N100_Z0.01 +SEITENZAHL2013_MODEL="N100" + +# sub-Chandrasekahr mass model +# 0 = Livne and Arnett 1995 +TYPE_IA_SUB_MCH_SUPERNOVA_ALGORITHM=0 ############################################################ # Supernova kicks @@ -716,7 +872,7 @@ BH_PRESCRIPTION=2 # # method to calculate the post-SN orbit # 0 = original H02, 1 = Tauris and Takens 1998 -POST_SN_ORBIT_METHOD=0 +POST_SN_ORBIT_METHOD=1 ###### # Supernova kick distribution types. @@ -829,8 +985,12 @@ WD_KICK_DIRECTION=0 # Timestep control ################### +# set reverse_time to 1 to make time go backwards +REVERSE_TIME=1 +START_TIME=0.0 + # minimum timestep (Myr) -MINDT=1e-8 +MINDT=1e-6 # max timestep (Myr) MAXDT=1000.0 # max timestep when one star is nuclear burning @@ -841,9 +1001,9 @@ MAXIMUM_NUCLEAR_BURNING_DT=100.0 # agb timestep factor (1.0) DTFAC=1.0 # RLOF timestep modulator (1.0) -RLOF_TIMESTEP_MODULATOR=1.0 +RLOF_TIMESTEP_MODULATOR=0.1 # global timestep modulator (1.0) -TIMESTEP_MODULATOR=1.0 +TIMESTEP_MODULATOR=1 ############################################################ # Chemistry and nucleosynthesis @@ -875,6 +1035,13 @@ INIT_ABUND_MIX=0 # Usually the same as $Z (for 1e-4<=Z<=0.03) GCE_METALLICITY=$METALLICITY +############################################################ +# Red giant transition to white dwarf algorithm +############################################################ +# 0 = Hurley et al 2002 +# 1 = Miller Bertolami 2016,17+ for GB,AGB stars +SMALL_ENVELOPE_METHOD=0 + ############################################################ # AGB cores,radii and luminosities are calculated according to: # 0 : compatibility mode : Hurley (if no NUCSYN), Karakas (if NUCSYN) @@ -1204,6 +1371,7 @@ if [ "$1" == "debug" \ -o "$1" == "gdb" \ -o "$1" == "valgrind" \ -o "$1" == "valgrind_args" \ + -o "$1" == "valgrind_cmd" \ -o "$1" == "massif" \ -o "$1" == "callgrind" \ -o "$1" == "cachegrind" \ @@ -1372,6 +1540,7 @@ $NUCMULTS \ --yields_startlogtime $YIELDS_STARTLOGTIME \ $HE_IG_EXTRA \ --nucsyn_metallicity $NUCSYN_METALLICITY \ +--effective_metallicity $EFFECTIVE_METALLICITY \ --rotationally_enhanced_mass_loss $ROTATIONALLY_ENHANCED_MASS_LOSS \ --rotationally_enhanced_exponent $ROTATIONALLY_ENHANCED_EXPONENT \ --RLOF_timestep_modulator $RLOF_TIMESTEP_MODULATOR \ @@ -1468,12 +1637,17 @@ $WARMUP \ --comenv_disc_angmom_fraction $COMENV_DISC_ANGMOM_FRACTION \ --wind_disc_mass_fraction $WIND_DISC_MASS_FRACTION \ --wind_disc_angmom_fraction $WIND_DISC_ANGMOM_FRACTION \ +--disc_timestep_factor $DISC_TIMESTEP_FACTOR \ --cbdisc_gamma $CBDISC_GAMMA \ --cbdisc_alpha $CBDISC_ALPHA \ --cbdisc_kappa $CBDISC_KAPPA \ --cbdisc_torquef $CBDISC_TORQUEF \ +--cbdisc_init_dM $CBDISC_INIT_DM \ +--cbdisc_init_dJdM $CBDISC_INIT_DJDM \ +--cbdisc_minimum_evaporation_timescale $CBDISC_MINIMUM_EVAPORATION_TIMESCALE \ --cbdisc_mass_loss_constant_rate $CBDISC_MASS_LOSS_CONSTANT_RATE \ ---cbdisc_mass_loss_inner_viscous_multiplier $CBDISC_MASS_LOSS_INNER_VISCOUS_MULTIPLER \ +--cbdisc_mass_loss_inner_viscous_multiplier $CBDISC_MASS_LOSS_INNER_VISCOUS_MULTIPLIER \ +--cbdisc_mass_loss_inner_viscous_angular_momentum_multiplier $CBDISC_MASS_LOSS_INNER_VISCOUS_ANGULAR_MOMENTUM_MULTIPLIER \ --cbdisc_mass_loss_inner_L2_cross_multiplier $CBDISC_MASS_LOSS_INNER_L2_CROSS_MULTIPLIER \ --cbdisc_mass_loss_ISM_ram_pressure_multiplier $CBDISC_MASS_LOSS_ISM_RAM_PRESSURE_MULTIPLIER \ --cbdisc_mass_loss_ISM_pressure $CBDISC_MASS_LOSS_ISM_PRESSURE \ @@ -1488,11 +1662,19 @@ $WARMUP \ --comenv_post_eccentricity $COMENV_POST_ECCENTRICITY \ --cbdisc_mass_loss_inner_viscous_accretion_method $CBDISC_MASS_LOSS_INNER_VISCOUS_ACCRETION_METHOD \ --cbdisc_viscous_photoevaporation_coupling $CBDISC_VISCOUS_PHOTOEVAPORATION_COUPLING \ +--cbdisc_viscous_L2_coupling $CBDISC_VISCOUS_L2_COUPLING \ +--cbdisc_fail_ring_inside_separation $CBDISC_FAIL_RING_INSIDE_SEPARATION \ +--cbdisc_inner_edge_stripping $CBDISC_INNER_EDGE_STRIPPING \ +--cbdisc_outer_edge_stripping $CBDISC_OUTER_EDGE_STRIPPING \ +--cbdisc_inner_edge_stripping_timescale $CBDISC_INNER_EDGE_STRIPPING_TIMESCALE \ +--cbdisc_outer_edge_stripping_timescale $CBDISC_OUTER_EDGE_STRIPPING_TIMESCALE \ +--cbdisc_max_lifetime $CBDISC_MAX_LIFETIME \ +--magnetic_braking_algorithm $MAGNETIC_BRAKING_ALGORITHM \ --magnetic_braking_factor $MAGNETIC_BRAKING_FACTOR \ +--magnetic_braking_gamma $MAGNETIC_BRAKING_GAMMA \ --nonconservative_angmom_gamma $NONCONSERVATIVE_ANGMOM_GAMMA \ --nova_retention_fraction $NOVA_RETENTION_FRACTION \ --nova_retention_method $NOVA_RETENTION_METHOD \ -\ --sn_kick_distribution_IBC $SN_KICK_DISTRIBUTION_IBC \ --sn_kick_distribution_GRB_COLLAPSAR $SN_KICK_DISTRIBUTION_GRB_COLLAPSAR \ --sn_kick_distribution_II $SN_KICK_DISTRIBUTION_II \ @@ -1580,7 +1762,19 @@ $WARMUP \ --angelou_lithium_CHeB_massfrac $angelou_lithium_CHeB_massfrac \ --angelou_lithium_EAGB_massfrac $angelou_lithium_EAGB_massfrac \ --angelou_lithium_TPAGB_massfrac $angelou_lithium_TPAGB_massfrac \ - +--carbon_burning $CARBON_BURNING \ +--carbon_burning_lifetime $CARBON_BURNING_LIFETIME \ +--disc_log $DISC_LOG \ +--disc_log2d $DISC_LOG \ +--disc_log_dt $DISC_LOG_DT \ +--disc_n_monte_carlo_guesses $DISC_N_MONTE_CARLO_GUESSES \ +--type_Ia_MCh_supernova_algorithm $TYPE_IA_MCH_SUPERNOVA_ALGORITHM \ +--type_Ia_sub_MCh_supernova_algorithm $TYPE_IA_SUB_MCH_SUPERNOVA_ALGORITHM \ +--Seitenzahl2013_model $SEITENZAHL2013_MODEL \ +--small_envelope_method $SMALL_ENVELOPE_METHOD \ +--minimum_helium_ignition_core_mass $MINIMUM_HELIUM_IGNITION_CORE_MASS \ +--reverse_time $REVERSE_TIME \ +--start_time $START_TIME \ "; # valgrind options @@ -1601,9 +1795,10 @@ then # run through the GNU debugger (gdb) ARGS_PREFIX="gdb -ex=r $BIN_C --args $ARGS_PREFIX " -elif [ "$RUNMODE" == "valgrind" -o "$RUNMODE" == "valgrind_args" ]; +elif [ "$RUNMODE" == "valgrind" -o\ + "$RUNMODE" == "valgrind_args"\ + -o "$RUNMODE" == "valgrind_cmd" ]; then - # run through valgrind's memcheck # See: http://valgrind.org/docs/manual/manual.html # NB use envvar VALGRIND_ARGS to send further arguments to valgrind, @@ -1614,9 +1809,12 @@ then if [ "$RUNMODE" == "valgrind_args" ]; then ARGS_PREFIX="echo $ARGS_PREFIX" fi + if [ "$RUNMODE" == "valgrind_cmd" ]; then + echo $VALGRIND $VALGRIND_OPTS + exit + fi elif [ "$RUNMODE" == "massif" ]; then - # run through valgrind's massif # See: http://valgrind.org/docs/manual/ms-manual.html # To see the information gathered by Massif in an easy-to-read @@ -1790,7 +1988,7 @@ then # note that this is NOT for debugging: output is sent to /dev/null # options - REPEAT=16000 + REPEAT=500 SLEEP=0 NCORES=`cat /proc/cpuinfo |grep -i Processor | wc -l` REPEAT_PER_CORE=$(($REPEAT/$NCORES))